diff --git a/tests/test_validators.py b/tests/test_validators.py index 8123b4d..a008c5f 100644 --- a/tests/test_validators.py +++ b/tests/test_validators.py @@ -1,17 +1,18 @@ import pydantic import tum_esm_utils +from tum_esm_utils.validators import StrictFilePath, StrictDirectoryPath, Version def test_strict_path_validators() -> None: class Config(pydantic.BaseModel): - f: tum_esm_utils.validators.StrictFilePath - d: tum_esm_utils.validators.StrictDirectoryPath + f: StrictFilePath + d: StrictDirectoryPath test_file = tum_esm_utils.files.rel_to_abs_path("../pyproject.toml") test_dir = tum_esm_utils.files.rel_to_abs_path("..") c = Config(f=test_file, d=test_dir) - assert isinstance(c.f, tum_esm_utils.validators.StrictFilePath) + assert isinstance(c.f, StrictFilePath) assert isinstance(c.f.root, str) assert set(c.model_dump().keys()) == {"f", "d"} @@ -34,3 +35,49 @@ class Config(pydantic.BaseModel): {"f": "someinvalidfile", "d": "someinvaliddir"}, context={"ignore-path-existence": True}, ) + + +def test_version_validator() -> None: + for valid_string in [ + "0.0.0", "1.2.3", "1.2.3-alpha.1", "1.2.3-alpha.30", "1.2.3-beta.2", + "1.2.3-rc.70" + ]: + v = Version(valid_string) + assert v.as_identifier() == valid_string + assert v.as_tag() == f"v{valid_string}" + + for invalid_string in [ + "0.0", + "1.2.3-alpha", + "1.2.3-alpha.1.2", + "1.2.3-beta.2.3", + "1.2.3-rc.70.1", + "1", + "-1.1.0", + "1.1.0-", + "1.1.0-alpha-", + "1.1.0-beta.", + "1.1.0-rc", + ]: + try: + v = Version(invalid_string) + except pydantic.ValidationError: + pass + else: + raise AssertionError( + f"ValidationError not raised for invalid version string '{invalid_string}'" + ) + + assert Version("1.2.3-alpha.1") > Version("1.2.3-alpha.0") + assert Version("1.2.3-alpha.1") < Version("1.2.3-alpha.2") + assert Version("1.2.3-alpha.1") == Version("1.2.3-alpha.1") + assert Version("1.2.3-alpha.1") != Version("1.2.3-alpha.2") + assert Version("1.2.3") > Version("1.2.2") + assert Version("1.2.3") < Version("1.2.4") + assert Version("10.2.3") > Version("1.2.3") + assert Version("10.6.9") < Version("10.7.8") + assert Version("10.6.9-alpha.1") > Version("10.6.8-beta.3") + assert Version("10.6.9-alpha.4") < Version("10.6.9-beta.3") + assert Version("10.6.9-alpha.4") < Version("10.6.9-rc.3") + assert Version("10.6.9-rc.4") > Version("10.6.9-beta.3") + assert Version("10.6.9-rc.4") < Version("10.6.9-rc.5")