from pathlib import Path def test_readiness_gate_treats_deprecation_warnings_as_errors() -> None: script = Path(__file__).resolve().parents[2] / "scripts" / "run_readiness_check.sh" content = script.read_text(encoding="utf-8") assert "-W error::DeprecationWarning" in content def test_readiness_gate_runs_contract_smoke() -> None: script = Path(__file__).resolve().parents[2] / "scripts" / "run_readiness_check.sh" content = script.read_text(encoding="utf-8") assert "scripts/smoke_contracts.py" in content def test_readiness_gate_checks_demo_export_workflow_script_syntax() -> None: script = Path(__file__).resolve().parents[2] / "scripts" / "run_readiness_check.sh" content = script.read_text(encoding="utf-8") assert "bash -n scripts/verify_demo_export_workflow.sh" in content assert "bash -n scripts/verify_workbench_default_state.sh" in content def test_readiness_gate_runs_golden_qa_benchmark() -> None: script = Path(__file__).resolve().parents[2] / "scripts" / "run_readiness_check.sh" content = script.read_text(encoding="utf-8") assert "scripts/run_golden_qa_benchmark.py --json" in content assert "bash -n scripts/verify_golden_qa_benchmark.sh" in content def test_readiness_gate_compiles_demo_cleanup_script() -> None: script = Path(__file__).resolve().parents[2] / "scripts" / "run_readiness_check.sh" content = script.read_text(encoding="utf-8") assert "-m py_compile scripts/cleanup_demo_artifacts.py" in content assert "-m py_compile backend/scripts/cleanup_demo_artifacts.py" in content def test_readiness_gate_checks_demo_cleanup_dry_run_script_syntax() -> None: script = Path(__file__).resolve().parents[2] / "scripts" / "run_readiness_check.sh" content = script.read_text(encoding="utf-8") assert "bash -n scripts/verify_demo_cleanup_dry_run.sh" in content def test_demo_cleanup_dry_run_script_is_dry_run_only() -> None: script = Path(__file__).resolve().parents[2] / "scripts" / "verify_demo_cleanup_dry_run.sh" content = script.read_text(encoding="utf-8") assert "--apply" not in content assert "deleted_export_count=0" in content assert "dry_run=true" in content assert "candidate_exports" in content assert "CLEANUP_MODE" in content assert "project_report_html" in content def test_readiness_gate_compiles_yolo_preflight_script() -> None: script = Path(__file__).resolve().parents[2] / "scripts" / "run_readiness_check.sh" content = script.read_text(encoding="utf-8") assert "-m py_compile scripts/yolo_preflight.py" in content assert "-m py_compile backend/scripts/yolo_preflight.py" in content def test_demo_export_workflow_script_verifies_export_endpoints() -> None: script = Path(__file__).resolve().parents[2] / "scripts" / "verify_demo_export_workflow.sh" content = script.read_text(encoding="utf-8") assert "/api/v1/demo/workflow" in content assert "/areas" in content assert "/datasets" in content assert "/content" in content assert "/vector/summary" in content assert "GeoJSON Polygon/MultiPolygon geometry" in content assert "precision" in content assert "false_negative_count" in content assert "fixtures/golden/expected_qa_metrics.json" in content assert "QA/QC metric {key} drifted" in content assert "Seeded QA/QC match count does not match golden baseline" in content assert "/api/v1/exports/metadata" in content assert "/api/v1/exports/report" in content assert "/api/v1/exports/geojson" in content assert "/download" in content def test_workbench_default_state_script_verifies_populated_demo_start_state() -> None: script = Path(__file__).resolve().parents[2] / "scripts" / "verify_workbench_default_state.sh" content = script.read_text(encoding="utf-8") assert "/api/v1/demo/workflow" in content assert "GeoIntel Demo - Building QA" in content assert "/areas" in content assert "/datasets" in content assert "/quality-checks" in content assert "data.items" in content assert "Demo AOI - Geel buildings" in content assert "2/2 ready" in content def test_pass_end_check_excludes_vendor_and_build_outputs() -> None: script = Path(__file__).resolve().parents[2] / "scripts" / "codex_pass_end_check.sh" content = script.read_text(encoding="utf-8") assert "--exclude-dir=node_modules" in content assert "--exclude-dir=dist" in content assert "--exclude-dir=__pycache__" in content