import pytest from pydantic import ValidationError import cipy import cipy.common class Outputs(cipy.common.Outputs): a: int = cipy.required() def test_outputs_can_be_constructed_in_illegal_state() -> None: output = Outputs() def test_outputs_forbids_extras() -> None: output = cipy.common.Outputs() output.__dict__["A"] = 1 with pytest.raises(ValidationError): output.validated() def test_outputs_validated_throws_on_unset_attr() -> None: output = Outputs() with pytest.raises(ValidationError): output.validated() def test_outputs_subclass_can_be_constructed() -> None: output = Outputs(a=1).validated() def test_ref_cannot_be_empty_ctor() -> None: with pytest.raises(TypeError): cipy.common.Ref() # type: ignore[call-arg] def test_ref_cannot_be_empty_str() -> None: with pytest.raises(ValueError): cipy.common.Ref("") def test_ref_cannot_be_single_token() -> None: with pytest.raises(ValueError): cipy.common.Ref("A") def test_ref_cannot_be_two_tokens() -> None: cipy.common.Ref("A.B") def test_ref_path_is_pattern_validated() -> None: with pytest.raises(ValueError): cipy.common.Ref("A._B")