11from typing import Any
22
3+ import pytest
4+ from pydantic import ValidationError
5+
36from gateframe .core .contract import ValidationContract , ValidationResult
47from gateframe .core .failure import FailureMode , FailureResult
58from gateframe .core .rule import Rule
@@ -11,7 +14,11 @@ def validate(self, output: Any, **context: Any) -> FailureResult | None:
1114
1215
1316class _FailingRule (Rule ):
14- def __init__ (self , name : str = "failing_rule" , mode : FailureMode = FailureMode .HARD_FAIL ) -> None :
17+ def __init__ (
18+ self ,
19+ name : str = "failing_rule" ,
20+ mode : FailureMode = FailureMode .HARD_FAIL ,
21+ ) -> None :
1522 super ().__init__ (name )
1623 self ._mode = mode
1724
@@ -24,7 +31,6 @@ def validate(self, output: Any, **context: Any) -> FailureResult | None:
2431
2532
2633class TestValidationContract :
27-
2834 def test_all_rules_pass (self ) -> None :
2935 contract = ValidationContract ("test" , [_PassingRule ("a" ), _PassingRule ("b" )])
3036 result = contract .validate ({"key" : "value" })
@@ -68,11 +74,8 @@ def test_result_has_timestamp(self) -> None:
6874 def test_result_is_frozen (self ) -> None :
6975 contract = ValidationContract ("test" , [_PassingRule ("a" )])
7076 result = contract .validate ({})
71- try :
77+ with pytest . raises ( ValidationError ) :
7278 result .passed = False # type: ignore[misc]
73- assert False , "Should have raised"
74- except Exception :
75- pass
7679
7780 def test_context_forwarded_to_rules (self ) -> None :
7881 class _ContextRule (Rule ):
@@ -91,7 +94,6 @@ def validate(self, output: Any, **context: Any) -> FailureResult | None:
9194
9295
9396class TestValidationResult :
94-
9597 def test_serialization_roundtrip (self ) -> None :
9698 result = ValidationResult (
9799 passed = False ,
0 commit comments