from pathlib import Path ROOT = Path(__file__).resolve().parents[1] def test_general_pip_dependency_issue_extraction_is_present(): worker = (ROOT / "src" / "worker_payload.py").read_text(encoding="utf-8") assert "def extract_pip_dependency_issue" in worker assert "Could not find a version that satisfies the requirement" in worker assert "No matching distribution found for" in worker assert "metadata-generation-failed" in worker assert "recommended_patch_scope" in worker def test_dependency_error_brief_is_written_and_injected_into_repair_prompt(): worker = (ROOT / "src" / "worker_payload.py").read_text(encoding="utf-8") assert "DEPENDENCY_ERROR_BRIEF.md" in worker assert "write_dependency_error_brief" in worker assert "This brief does **not** replace the HF Spaces gist" in worker assert "applying the gist method" in worker assert "patch dependency pins minimally" in worker def test_dependency_errors_force_patch_not_wait_or_same_code_rebuild(): worker = (ROOT / "src" / "worker_payload.py").read_text(encoding="utf-8") normalize = worker.split("def normalize_repair_decision", 1)[1].split("def diagnose_failure_with_pi", 1)[0] assert "category == \"dependency_error\"" in normalize assert "gist_log_first_dependency_error_needs_minimal_requirements_patch" in normalize assert "action in {\"wait_for_logs\", \"inspect_more_logs\", \"factory_rebuild_same_code\"}" in normalize assert "action = \"patch_code\"" in normalize def test_classifier_carries_dependency_issue_evidence(): worker = (ROOT / "src" / "worker_payload.py").read_text(encoding="utf-8") classify = worker.split("def classify_repair_failure", 1)[1].split("def workspace_file_inventory", 1)[0] assert "dependency_issue = extract_pip_dependency_issue" in classify assert "\"dependency_issue\": dependency_issue" in classify assert "Patch requirements.txt or dependency pins" in classify