File size: 1,962 Bytes
9882577
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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