Files
periscope/tests/test_periscope_leftover_package_requirements.py
T
michele 7a32c552bb Stamp 2.60.0 incomplete PCB exam and owner project delete.
Partial layouts still use MODE=pcb. Missing copper is INSUFFICIENT or
skipped, never Euclidean stand-in tracks. Via≠Pad unchanged. DELETE
/api/projects/{id} is owner-only with a dashboard confirm dialog.
2026-09-20 21:17:26 +02:00

62 lines
2.5 KiB
Python

"""Native frontend package.json and backend requirements live under src."""
from __future__ import annotations
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
PKG = ROOT / "periscope" / "src" / "frontend" / "package.json"
REQ = ROOT / "periscope" / "src" / "backend" / "requirements.txt"
LOCK = ROOT / "periscope" / "src" / "frontend" / "package-lock.json"
COMPONENTS = ROOT / "periscope" / "src" / "frontend" / "components.json"
FE_DOCKER = ROOT / "periscope" / "src" / "frontend" / "dockerfile"
BE_DOCKER = ROOT / "periscope" / "src" / "backend" / "Dockerfile"
DOCKERIGNORE = ROOT / ".dockerignore"
def test_package_json_is_periscope_web():
text = PKG.read_text(encoding="utf-8")
assert '"name": "periscope-web"' in text
assert '"version": "2.60.0"' in text
assert "Native Periscope overlay" not in text[:400]
assert LOCK.is_file()
lock = LOCK.read_text(encoding="utf-8")
assert '"name": "periscope-web"' in lock
def test_components_json_is_src():
text = COMPONENTS.read_text(encoding="utf-8")
assert "base-nova" in text
assert '"css": "src/app/globals.css"' in text
def test_requirements_are_src_and_deepseek_first():
text = REQ.read_text(encoding="utf-8")
assert "fastapi>=" in text
assert "openai>=" in text
assert "PyJWT" in text
lines = [ln.strip() for ln in text.splitlines() if ln.strip() and not ln.startswith("#")]
assert lines[0].startswith("fastapi")
def test_docker_installs_from_src():
fe = FE_DOCKER.read_text(encoding="utf-8")
be = BE_DOCKER.read_text(encoding="utf-8")
assert "COPY periscope/src/frontend/package.json" in fe
assert "periscope/src/frontend/package-lock.json" in fe
assert "COPY periscope/src/backend/requirements*.txt" in be
assert "COPY periscope/dependency/backend/ /app/backend/" not in be
ignore = DOCKERIGNORE.read_text(encoding="utf-8")
assert "faradworks-logo-white.png" in ignore
assert "power-tree.gif" in ignore
assert "next.svg" in ignore
def test_eda_logos_and_examples_are_src():
logos = ROOT / "periscope" / "src" / "frontend" / "public" / "eda-logos"
examples = ROOT / "periscope" / "src" / "frontend" / "public" / "examples"
assert (logos / "kicad.svg").is_file()
assert (examples / "TI-MSP-KICAD9-TUTORIAL.asc").is_file()
assert not (ROOT / "periscope" / "src" / "frontend" / "public" / "faradworks-logo-white.png").exists()
assert not (ROOT / "periscope" / "src" / "frontend" / "public" / "power-tree.gif").exists()