From 058d32451cb2a471783f059159498dad53986e32 Mon Sep 17 00:00:00 2001 From: Ranjan Sharma Date: Sun, 31 May 2026 22:22:17 -0400 Subject: [PATCH] Fix fresh checkout test failures Make .env optional in tests and prevent endpoint resolver stubs from leaking into model route tests. --- tests/test_agent_loop.py | 2 +- tests/test_app.py | 13 ++++++++----- tests/test_context_compactor.py | 2 +- tests/test_model_routes.py | 7 +++++++ 4 files changed, 17 insertions(+), 7 deletions(-) diff --git a/tests/test_agent_loop.py b/tests/test_agent_loop.py index 57d78db..e2ba350 100644 --- a/tests/test_agent_loop.py +++ b/tests/test_agent_loop.py @@ -8,7 +8,7 @@ from unittest.mock import MagicMock for mod in [ 'sqlalchemy', 'sqlalchemy.orm', 'sqlalchemy.ext', 'sqlalchemy.ext.declarative', 'sqlalchemy.ext.hybrid', 'sqlalchemy.sql', 'sqlalchemy.sql.expression', - 'src.database', 'src.endpoint_resolver', + 'src.database', 'src.agent_tools', 'core.models', 'core.database', ]: diff --git a/tests/test_app.py b/tests/test_app.py index 92e3a27..7ac5293 100644 --- a/tests/test_app.py +++ b/tests/test_app.py @@ -32,10 +32,13 @@ class TestAppStructure: src_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), "src") assert os.path.exists(src_path), "src directory should exist" - def test_env_file_exists(self): - """Test that .env file exists""" - env_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), ".env") - assert os.path.exists(env_path), ".env file should exist" + def test_env_file_is_optional_and_ignored(self): + """A fresh checkout should not require a private .env file.""" + root = os.path.dirname(os.path.dirname(__file__)) + gitignore_path = os.path.join(root, ".gitignore") + with open(gitignore_path, encoding="utf-8") as fh: + ignored = {line.strip() for line in fh} + assert ".env" in ignored, ".env should stay local and ignored" def test_env_example_exists(self): """Test that .env.example exists""" @@ -92,4 +95,4 @@ class TestRouteFiles: if __name__ == "__main__": - pytest.main([__file__, "-v"]) \ No newline at end of file + pytest.main([__file__, "-v"]) diff --git a/tests/test_context_compactor.py b/tests/test_context_compactor.py index 55c86ff..7f88fb5 100644 --- a/tests/test_context_compactor.py +++ b/tests/test_context_compactor.py @@ -8,7 +8,7 @@ from unittest.mock import MagicMock for mod in [ 'sqlalchemy', 'sqlalchemy.orm', 'sqlalchemy.ext', 'sqlalchemy.ext.declarative', 'sqlalchemy.ext.hybrid', 'sqlalchemy.sql', 'sqlalchemy.sql.expression', - 'src.database', 'src.endpoint_resolver', + 'src.database', 'core.models', 'core.database', ]: if mod not in sys.modules: diff --git a/tests/test_model_routes.py b/tests/test_model_routes.py index 1ba461e..e4c1405 100644 --- a/tests/test_model_routes.py +++ b/tests/test_model_routes.py @@ -6,6 +6,13 @@ from unittest.mock import MagicMock import httpx import pytest +_endpoint_resolver = sys.modules.get("src.endpoint_resolver") +if _endpoint_resolver is not None and not getattr(_endpoint_resolver, "__file__", None): + # Other tests stub this module during collection. These helper tests need + # the real URL normalization helpers so Anthropic /v1 handling is covered. + sys.modules.pop("src.endpoint_resolver", None) + sys.modules.pop("routes.model_routes", None) + if "core.database" not in sys.modules: _core_db = types.ModuleType("core.database") for _name in [