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