From b8c7e12d22233d67daba8180d67a5e5ab06af9b9 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 9 Feb 2026 15:02:42 +0000 Subject: [PATCH 1/3] Initial plan From 546db7eff9c75973d2bb44e9b51a26cbdfa73d6e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 9 Feb 2026 15:11:26 +0000 Subject: [PATCH 2/3] refactor: remove duplicate utils.py, dead license_routes, and pytest.ini Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com> --- app/routes/license_routes.py | 19 ----------- app/utils.py | 7 ---- pytest.ini | 64 ------------------------------------ tests/test_reexports.py | 12 +++---- 4 files changed, 6 insertions(+), 96 deletions(-) delete mode 100644 app/routes/license_routes.py delete mode 100644 app/utils.py delete mode 100644 pytest.ini diff --git a/app/routes/license_routes.py b/app/routes/license_routes.py deleted file mode 100644 index a4d3f84e..00000000 --- a/app/routes/license_routes.py +++ /dev/null @@ -1,19 +0,0 @@ -from pathlib import Path - -from fastapi import APIRouter, HTTPException -from fastapi.responses import PlainTextResponse - -router = APIRouter() - - -@router.get("/licenses/lgpl.txt", response_class=PlainTextResponse) -async def get_lgpl_license(): - """ - Serve the LGPL license text file - """ - license_path = Path("frontend/static/licenses/lgpl.txt") - if not license_path.exists(): - raise HTTPException(status_code=404, detail="License file not found") - - with open(license_path, "r") as f: - return f.read() diff --git a/app/utils.py b/app/utils.py deleted file mode 100644 index 08742772..00000000 --- a/app/utils.py +++ /dev/null @@ -1,7 +0,0 @@ -# app/utils.py -# This file is deprecated. Functions have been moved to the utils package. -# To avoid breaking existing imports, we'll import and re-export the functions -from app.utils.file_operations import hash_file # noqa: F401 -from app.utils.logging import log_task_progress # noqa: F401 - -# These functions are now available directly from the app.utils package diff --git a/pytest.ini b/pytest.ini deleted file mode 100644 index d84bb550..00000000 --- a/pytest.ini +++ /dev/null @@ -1,64 +0,0 @@ -[tool:pytest] -# Pytest configuration -testpaths = tests -python_files = test_*.py -python_classes = Test* -python_functions = test_* - -# Output options -addopts = - --verbose - --strict-markers - --strict-config - --cov=app - --cov-report=term-missing - --cov-report=html - --cov-report=xml - --cov-branch - --cov-fail-under=0 - # Note: Coverage threshold set to 0 initially, should be increased gradually - # Target: 80% coverage for production code - -# Markers for organizing tests -markers = - unit: Unit tests for individual functions/methods - integration: Integration tests for API endpoints and workflows - slow: Tests that take significant time to run - security: Security-related tests - requires_external: Tests requiring external services (OpenAI, Azure, etc.) - requires_db: Tests requiring database - requires_redis: Tests requiring Redis - -# Ignore patterns -norecursedirs = - .git - .tox - dist - build - *.egg - __pycache__ - .venv - venv - env - -# Coverage options -[coverage:run] -source = app -omit = - */tests/* - */test_*.py - */__pycache__/* - */venv/* - */env/* - */.venv/* - -[coverage:report] -exclude_lines = - pragma: no cover - def __repr__ - raise AssertionError - raise NotImplementedError - if __name__ == .__main__.: - if TYPE_CHECKING: - @abstractmethod - @abc.abstractmethod diff --git a/tests/test_reexports.py b/tests/test_reexports.py index cd118b12..74d1895a 100644 --- a/tests/test_reexports.py +++ b/tests/test_reexports.py @@ -1,8 +1,8 @@ """ -Tests for simple re-export modules (app/utils.py, app/frontend.py, app/utils/config_validator.py) +Tests for simple re-export modules (app/frontend.py, app/utils/config_validator.py) These modules are simple re-exports of functions from other modules. -We test that imports work correctly. +We test that imports work correctly, including the app.utils package. """ import pytest @@ -26,12 +26,12 @@ class TestUtilsReexports: # Function should exist and be callable assert callable(log_task_progress) - def test_utils_module_is_backward_compatible(self): - """Test that utils module maintains backward compatibility""" - # The module comment says it's deprecated but maintains compatibility + def test_utils_package_exports(self): + """Test that utils package exports expected functions""" + # The utils package should export functions via __init__.py import app.utils - # Module should exist and have expected attributes + # Package should exist and have expected attributes assert hasattr(app.utils, "hash_file") assert hasattr(app.utils, "log_task_progress") From 2a7587f8bba3cb7e996f7eae424878970afb03ca Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 9 Feb 2026 15:14:40 +0000 Subject: [PATCH 3/3] docs: update references to deleted app/utils.py file Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com> --- TODO_TESTS.md | 5 +++-- tests/test_coverage_boost.py | 2 +- tests/test_reexports.py | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/TODO_TESTS.md b/TODO_TESTS.md index 0bca0f7c..3ad1a973 100644 --- a/TODO_TESTS.md +++ b/TODO_TESTS.md @@ -30,8 +30,9 @@ This document tracks test coverage improvements for DocuElevate. The goal is to - Test skipping when URL not configured - Test error handling for failed requests -- [x] `app/utils.py` (0% → Still 0%) ⚠️ - - Simple re-export module, coverage is from actual usage +- [x] `app/utils/` package (exports via __init__.py) ✅ + - Package exports tested in test_reexports.py + - Individual module coverage from actual usage - [x] `app/frontend.py` (0% → 100%) ✅ - Simple re-export module, test imports work diff --git a/tests/test_coverage_boost.py b/tests/test_coverage_boost.py index f2b27073..d49dc1c8 100644 --- a/tests/test_coverage_boost.py +++ b/tests/test_coverage_boost.py @@ -5,7 +5,7 @@ from unittest.mock import patch, MagicMock @pytest.mark.unit class TestUtilsCompat: - """Tests for app/utils.py backward compatibility module.""" + """Tests for app.utils package exports.""" def test_imports_hash_file(self): """Test that hash_file can be imported from utils.""" diff --git a/tests/test_reexports.py b/tests/test_reexports.py index 74d1895a..dd42fbcc 100644 --- a/tests/test_reexports.py +++ b/tests/test_reexports.py @@ -10,7 +10,7 @@ import pytest @pytest.mark.unit class TestUtilsReexports: - """Test that app/utils.py re-exports work correctly""" + """Test that app.utils package exports work correctly""" def test_hash_file_import(self): """Test that hash_file can be imported from app.utils"""