File size: 1,247 Bytes
9882577
 
 
 
 
 
 
 
 
b8f4efa
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
from pathlib import Path
import textwrap

ROOT = Path(__file__).resolve().parents[1]


def test_worker_pins_transformers_and_safetensors_to_stable_build_line():
    worker = (ROOT / "src" / "worker_payload.py").read_text(encoding="utf-8")
    assert "transformers>=4.51.0,<5.0.0" in worker
    assert "Avoid uncontrolled Transformers 5.x" in worker


def test_worker_detects_safetensors_080_pip_resolver_failure():
    worker = (ROOT / "src" / "worker_payload.py").read_text(encoding="utf-8")
    assert "def known_dependency_guardrail_needed" in worker
    assert "safetensors>=0.8.0" in worker
    assert "no matching distribution" in worker
    assert "def apply_dependency_guardrail_repair" in worker
    assert "dependency_guardrail_repair" in worker


def test_dependency_guardrail_runs_before_pi_diagnosis_loop():
    worker = (ROOT / "src" / "worker_payload.py").read_text(encoding="utf-8")
    recovery = worker.split("def recover_after_live_validation_failure", 1)[1].split("def upload_workspace", 1)[0]
    assert recovery.index("apply_dependency_guardrail_repair") < recovery.index("for iteration in range(1, 5)")
    assert "Dependency-guardrailed workspace uploaded" in recovery
    assert "falling back to Pi diagnosis" in recovery