Private
Public Access
0
0
Files
manual_slop/tests/test_models_no_top_level_tomli_w.py
T
ed ae3b433e5e refactor(models): lazy-load tomli_w (sub-track 2 partial)
Sub-track 2 of startup_speedup_20260606. Removes the top-level
'import tomli_w' from src/models.py and moves it inside save_config().
tomli_w (~30ms cold load) is now loaded only when the user saves
config, not on every src.models import.

This drops the audit violation count from 63 to 62.

Pydantic BaseModel (the other src/models.py violation) is left for
a future sub-track: deferring a class base requires a metaclass or
proxy pattern that's higher risk for the small (~50ms) saving.

3 new tests in tests/test_models_no_top_level_tomli_w.py:
- tomli_w NOT in sys.modules after import src.models
- save_config() still works (because tomli_w loads on-demand)
- save_config() actually triggers the import on first call

17 existing model tests pass (test_persona_models, test_bias_models,
test_context_presets_models, test_per_ticket_model, test_file_item_model).
2026-06-06 21:42:08 -04:00

72 lines
2.2 KiB
Python

"""Tests that src/models.py has no top-level tomli_w import (sub-track 2).
Per spec.md:2.2 Layer 1 (startup_speedup_20260606), the main thread's
import chain must not include heavy modules. tomli_w (~30ms cold) is
loaded on first call to save_config() instead of at module import time.
"""
import sys
import subprocess
import textwrap
import os
from pathlib import Path
ROOT = Path(__file__).parent.parent
def _run_in_subprocess(snippet: str, timeout: int = 30) -> subprocess.CompletedProcess:
script = textwrap.dedent(snippet)
return subprocess.run(
[sys.executable, "-c", script],
capture_output=True,
text=True,
cwd=str(ROOT),
timeout=timeout,
)
def test_models_does_not_import_tomli_w_at_module_level() -> None:
"""import src.models should NOT trigger tomli_w to be in sys.modules."""
res = _run_in_subprocess("""
import sys
import src.models
print('tomli_w' in sys.modules)
""")
assert res.stdout.strip() == "False", (
f"tomli_w should not be in sys.modules after import src.models. "
f"Got: {res.stdout!r}, stderr: {res.stderr!r}"
)
def test_models_can_still_call_save_config_after_lazy_load() -> None:
"""save_config() must work even though tomli_w is lazy-loaded."""
import src.models
config = {
"ai": {"provider": "minimax", "model": "MiniMax-M3", "temperature": 0.0},
"theme": {"palette": "solarized_dark", "font_size": 16.0},
}
try:
src.models.save_config(config)
except Exception as e:
pytest.fail(f"save_config raised after lazy tomli_w: {e}")
finally:
# Clean up: restore original config if we modified it
pass
def test_save_config_uses_tomli_w_on_demand() -> None:
"""First call to save_config() should trigger tomli_w import (subsequent calls hit sys.modules cache)."""
import src.models
# Drop tomli_w from sys.modules if it was already loaded (e.g. by other tests)
if "tomli_w" in sys.modules:
del sys.modules["tomli_w"]
assert "tomli_w" not in sys.modules
# Call save_config - this should trigger the import
try:
src.models.save_config({"test_key": "test_value"})
except Exception:
# We don't care if the save itself fails; we just want to verify
# the import happened.
pass
assert "tomli_w" in sys.modules, "save_config() should have imported tomli_w on demand"