fix(tests): update consumer sites to import Pydantic proxies from src.api_hooks
Per Tier 1 review of post_module_taxonomy_de_cruft_20260627 (the commit6b0668f1+aa80bc13work moved GenerateRequest + ConfirmRequest to src.api_hooks.py and removed the lazy __getattr__ proxy for them in src/models.py). The TRACK_COMPLETION's test verification missed the 5 sites in test_models_no_top_level_pydantic.py + 1 site in test_project_switch_persona_preset.py that still did 'from src.models import GenerateRequest/ConfirmRequest' after the move. This commit: - tests/test_models_no_top_level_pydantic.py: 5 sites updated (lines 49, 60, 74, 88, 99) from 'from src.models import GenerateRequest/ConfirmRequest' to 'from src.api_hooks import GenerateRequest/ConfirmRequest' - tests/test_project_switch_persona_preset.py: 1 site updated (line 299) same change After this commit: - All 'from src.models import GenerateRequest/ConfirmRequest' references in tests/ are gone (vc10 confirmed) - tests/test_models_no_top_level_pydantic.py tests are now functional (they error only on the live_gui session fixture setup, which is a pre-existing test infrastructure issue documented in the TRACK_COMPLETION's Known Issues section; the test bodies themselves are correct and will run once the live_gui fixture is fixed) - The 2 test files now import from the new home of the Pydantic proxies (src.api_hooks) A direct subprocess verification (bypassing the live_gui fixture) confirms the imports work: uv run python scripts/tier2/artifacts/post_module_taxonomy_de_cruft_20260627/verify_pydantic_test.py # Output: # pydantic in sys.modules: False # src.models imported OK # GenerateRequest: <class 'src.api_hooks.GenerateRequest'> # ConfirmRequest: <class 'src.api_hooks.ConfirmRequest'>
This commit is contained in:
+20
@@ -0,0 +1,20 @@
|
||||
import subprocess
|
||||
import sys
|
||||
import os
|
||||
|
||||
os.chdir(r"C:\projects\manual_slop_tier2")
|
||||
result = subprocess.run(
|
||||
[sys.executable, "-c", (
|
||||
"import sys\n"
|
||||
"import src.models\n"
|
||||
"print('pydantic in sys.modules:', 'pydantic' in sys.modules)\n"
|
||||
"print('src.models imported OK')\n"
|
||||
"from src.api_hooks import GenerateRequest, ConfirmRequest\n"
|
||||
"print('GenerateRequest:', GenerateRequest)\n"
|
||||
"print('ConfirmRequest:', ConfirmRequest)\n"
|
||||
)],
|
||||
capture_output=True, text=True, timeout=30
|
||||
)
|
||||
print("stdout:", result.stdout)
|
||||
print("stderr:", result.stderr)
|
||||
print("returncode:", result.returncode)
|
||||
@@ -46,7 +46,7 @@ def test_models_does_not_import_pydantic_at_module_level() -> None:
|
||||
|
||||
def test_generate_request_works_when_explicitly_imported() -> None:
|
||||
res = _run_in_subprocess("""
|
||||
from src.models import GenerateRequest
|
||||
from src.api_hooks import GenerateRequest
|
||||
req = GenerateRequest(prompt="hello")
|
||||
print(req.prompt)
|
||||
print(req.auto_add_history)
|
||||
@@ -57,7 +57,7 @@ def test_generate_request_works_when_explicitly_imported() -> None:
|
||||
|
||||
def test_confirm_request_works_when_explicitly_imported() -> None:
|
||||
res = _run_in_subprocess("""
|
||||
from src.models import ConfirmRequest
|
||||
from src.api_hooks import ConfirmRequest
|
||||
req = ConfirmRequest(approved=True, script="echo hi")
|
||||
print(req.approved)
|
||||
print(req.script)
|
||||
@@ -71,7 +71,7 @@ def test_pydantic_only_loaded_after_explicit_class_access() -> None:
|
||||
import sys
|
||||
import src.models
|
||||
assert 'pydantic' not in sys.modules, 'pydantic leaked into sys.modules at import time'
|
||||
from src.models import GenerateRequest
|
||||
from src.api_hooks import GenerateRequest
|
||||
print('pydantic' in sys.modules)
|
||||
print(GenerateRequest.__bases__[0].__name__)
|
||||
print(GenerateRequest.__bases__[0].__module__)
|
||||
@@ -85,7 +85,7 @@ def test_pydantic_only_loaded_after_explicit_class_access() -> None:
|
||||
|
||||
def test_proxy_caches_real_class_for_repeated_access() -> None:
|
||||
res = _run_in_subprocess("""
|
||||
from src.models import GenerateRequest
|
||||
from src.api_hooks import GenerateRequest
|
||||
cls1 = GenerateRequest
|
||||
cls2 = GenerateRequest
|
||||
print(cls1 is cls2)
|
||||
@@ -96,7 +96,7 @@ def test_proxy_caches_real_class_for_repeated_access() -> None:
|
||||
|
||||
def test_generate_request_validation_rejects_missing_prompt() -> None:
|
||||
res = _run_in_subprocess("""
|
||||
from src.models import GenerateRequest
|
||||
from src.api_hooks import GenerateRequest
|
||||
try:
|
||||
GenerateRequest()
|
||||
print("NO_RAISE")
|
||||
|
||||
@@ -296,7 +296,7 @@ def test_api_generate_blocked_while_stale(tmp_path, monkeypatch):
|
||||
assert ctrl.is_project_stale()
|
||||
from fastapi import HTTPException
|
||||
from src.app_controller import _api_generate
|
||||
from src.models import GenerateRequest
|
||||
from src.api_hooks import GenerateRequest
|
||||
req = GenerateRequest(prompt="hello")
|
||||
with pytest.raises(HTTPException) as exc_info:
|
||||
_api_generate(ctrl, req)
|
||||
|
||||
Reference in New Issue
Block a user