"""Dependency overrides go through `conftest.override_dep`, never `app.dependency_overrides` directly. The hand-rolled shape — assign, then `app.dependency_overrides.clear()` in a `finally` — wipes EVERY override, not the ones the test set, so it stops fixtures composing: one test's teardown silently clobbers an override another fixture installed. `override_dep` restores each key's prior value instead. 22 files had drifted to the hand-rolled shape (it was the house norm at ~20 files to 3), and the sweep that converted them is only as good as the check that keeps it converted — this one. """ from pathlib import Path TESTS = Path(__file__).parent def test_no_test_writes_dependency_overrides_directly(): offenders = [ f"{p.name}:{n}" for p in sorted(TESTS.rglob("*.py")) if p.name not in {"conftest.py", Path(__file__).name} for n, line in enumerate(p.read_text(encoding="utf-8").splitlines(), 1) if "dependency_overrides" in line ] assert offenders == [], "use the override_dep fixture: " + ", ".join(offenders)