"""Docker copies leftover seams only; FastAPI boots without dependency product.""" from __future__ import annotations import os import subprocess import sys from pathlib import Path ROOT = Path(__file__).resolve().parents[1] BE_DOCKER = (ROOT / "periscope" / "src" / "backend" / "Dockerfile").read_text(encoding="utf-8") FE_DOCKER = (ROOT / "periscope" / "src" / "frontend" / "dockerfile").read_text(encoding="utf-8") AUDIT = ROOT / "periscope" / "src" / "docs" / "development" / "DEPENDENCY_AUDIT.md" def test_audit_is_written(): text = AUDIT.read_text(encoding="utf-8") assert "leftover seams" in text.lower() or "Leftover" in text assert "simple_project" in text assert "Git-delete of the directory is **not** done" in text def test_dockerfiles_do_not_copy_dependency_product_trees(): assert "COPY periscope/dependency/backend/ /app/backend/" not in BE_DOCKER assert "COPY periscope/dependency/taxonomy/" not in BE_DOCKER assert "COPY periscope/dependency/skills/" not in BE_DOCKER assert "COPY periscope/dependency/frontend/ ./" not in FE_DOCKER assert "COPY vendor/" in BE_DOCKER assert "COPY periscope/src/backend/" in BE_DOCKER assert "anthropic_provider.py" in BE_DOCKER assert "use-optional-auth.ts" in FE_DOCKER assert "report.png" in FE_DOCKER def test_boot_without_dependency_on_pythonpath(): src = ROOT / "periscope" / "src" env = os.environ.copy() env["PYTHONPATH"] = str(src) env.pop("AUTH_JWT_SECRET", None) proc = subprocess.run( [ sys.executable, "-c", "from backend.main import app; from backend.middleware.auth import verify_request_user; " "print(app.title); print(verify_request_user.__name__)", ], cwd=ROOT, env=env, capture_output=True, text=True, check=False, ) assert proc.returncode == 0, proc.stderr assert "PeriscopeX" in proc.stdout assert "verify_request_user" in proc.stdout