fix(task): reject unknown validation status payloads
This commit is contained in:
@ -70,10 +70,12 @@ class ValidationResult:
|
||||
if not isinstance(payload, dict):
|
||||
return None
|
||||
raw_status = payload.get("status")
|
||||
status: ValidationStatus | None = raw_status if raw_status in VALIDATION_STATUSES else None
|
||||
if "status" in payload and raw_status not in VALIDATION_STATUSES:
|
||||
raise ValueError(f"unknown validation status: {raw_status}")
|
||||
status: ValidationStatus | None = raw_status if "status" in payload else None
|
||||
return cls(
|
||||
status=status,
|
||||
passed=bool(payload.get("passed")) if status is None else None,
|
||||
passed=bool(payload.get("passed")) if "status" not in payload else None,
|
||||
score=float(payload.get("score", 0.0) or 0.0),
|
||||
issues=[str(item) for item in payload.get("issues") or []],
|
||||
missing_requirements=[str(item) for item in payload.get("missing_requirements") or []],
|
||||
|
||||
@ -439,6 +439,11 @@ def test_validation_result_rejects_unknown_status() -> None:
|
||||
ValidationResult(status="pending", score=0.9, validator="test") # type: ignore[arg-type]
|
||||
|
||||
|
||||
def test_validation_result_from_dict_rejects_unknown_explicit_status() -> None:
|
||||
with pytest.raises(ValueError, match="unknown validation status"):
|
||||
ValidationResult.from_dict({"status": "pending", "passed": True, "score": 0.9})
|
||||
|
||||
|
||||
def test_validation_result_evidence_gaps_round_trip() -> None:
|
||||
validation = ValidationResult(
|
||||
status="insufficient_evidence",
|
||||
|
||||
Reference in New Issue
Block a user