diff --git a/tests/test_version.py b/tests/test_version.py index 0ac89e5..65254a6 100644 --- a/tests/test_version.py +++ b/tests/test_version.py @@ -1,19 +1,71 @@ +from typing import Any, Tuple + import packaging +import pytest from packaging.version import Version -from graphql_server.version import version, version_info - -RELEASE_LEVEL = {"alpha": "a", "beta": "b", "rc": "rc", "final": None} +from graphql_server.version import ( + version as VERSION, + version_info as VERSION_INFO, +) +VersionInfoType = Tuple[int, int, int, str, int] -parsed_version = Version(version) - +RELEASE_LEVEL = {"alpha": "a", "beta": "b", "rc": "rc", "final": None} -def test_valid_version() -> None: +VERSION_AND_VERSION_INFO = [ + ( + "1.2.3", + (1, 2, 3, "final", 0), + ), + ( + "1.2.3a4", + (1, 2, 3, "alpha", 4), + ), + ( + "1.2.3b4", + (1, 2, 3, "beta", 4), + ), + ( + "12.34.56rc789", + (12, 34, 56, "rc", 789), + ), + ( + VERSION, + VERSION_INFO, + ), +] + + +@pytest.fixture(params=VERSION_AND_VERSION_INFO) +def version_and_version_info( + request: pytest.FixtureRequest, +) -> Tuple[str, VersionInfoType]: + return request.param + + +@pytest.fixture +def version(version_and_version_info: Tuple[str, VersionInfoType]) -> str: + return version_and_version_info[0] + + +@pytest.fixture +def version_info( + version_and_version_info: Tuple[str, VersionInfoType] +) -> VersionInfoType: + return version_and_version_info[1] + + +@pytest.fixture +def parsed_version(version: str) -> Version: + return Version(version) + + +def test_valid_version(version: str) -> None: packaging.version.parse(version) -def test_valid_version_info() -> None: +def test_valid_version_info(version_info: Any) -> None: """version_info has to be a tuple[int, int, int, str, int]""" assert isinstance(version_info, tuple) assert len(version_info) == 5 @@ -26,17 +78,19 @@ def test_valid_version_info() -> None: assert isinstance(serial, int) -def test_valid_version_release_level() -> None: +def test_valid_version_release_level(parsed_version: Version) -> None: if parsed_version.pre is not None: valid_release_levels = {v for v in RELEASE_LEVEL.values() if v is not None} assert parsed_version.pre[0] in valid_release_levels -def test_valid_version_info_release_level() -> None: +def test_valid_version_info_release_level(version_info: VersionInfoType) -> None: assert version_info[3] in RELEASE_LEVEL.keys() -def test_version_same_as_version_info() -> None: +def test_version_same_as_version_info( + parsed_version: Version, version_info: VersionInfoType +) -> None: assert ( parsed_version.major, parsed_version.minor,