Images copy periscope/src, vendor/, and skipped Clerk/shadcn/billing/GCS files. dependency/ stays in git. Audit written; FastAPI boots with PYTHONPATH=src.
56 lines
2.0 KiB
Python
56 lines
2.0 KiB
Python
"""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
|