1
+ from typing import Any , Tuple
2
+
1
3
import packaging
4
+ import pytest
2
5
from packaging .version import Version
3
6
4
- from graphql_server .version import version , version_info
5
-
6
- RELEASE_LEVEL = {"alpha" : "a" , "beta" : "b" , "rc" : "rc" , "final" : None }
7
+ from graphql_server .version import (
8
+ version as VERSION ,
9
+ version_info as VERSION_INFO ,
10
+ )
7
11
12
+ VersionInfoType = Tuple [int , int , int , str , int ]
8
13
9
- parsed_version = Version (version )
10
-
14
+ RELEASE_LEVEL = {"alpha" : "a" , "beta" : "b" , "rc" : "rc" , "final" : None }
11
15
12
- def test_valid_version () -> None :
16
+ VERSION_AND_VERSION_INFO = [
17
+ (
18
+ "1.2.3" ,
19
+ (1 , 2 , 3 , "final" , 0 ),
20
+ ),
21
+ (
22
+ "1.2.3a4" ,
23
+ (1 , 2 , 3 , "alpha" , 4 ),
24
+ ),
25
+ (
26
+ "1.2.3b4" ,
27
+ (1 , 2 , 3 , "beta" , 4 ),
28
+ ),
29
+ (
30
+ "12.34.56rc789" ,
31
+ (12 , 34 , 56 , "rc" , 789 ),
32
+ ),
33
+ (
34
+ VERSION ,
35
+ VERSION_INFO ,
36
+ ),
37
+ ]
38
+
39
+
40
+ @pytest .fixture (params = VERSION_AND_VERSION_INFO )
41
+ def version_and_version_info (
42
+ request : pytest .FixtureRequest ,
43
+ ) -> Tuple [str , VersionInfoType ]:
44
+ return request .param
45
+
46
+
47
+ @pytest .fixture
48
+ def version (version_and_version_info : Tuple [str , VersionInfoType ]) -> str :
49
+ return version_and_version_info [0 ]
50
+
51
+
52
+ @pytest .fixture
53
+ def version_info (
54
+ version_and_version_info : Tuple [str , VersionInfoType ]
55
+ ) -> VersionInfoType :
56
+ return version_and_version_info [1 ]
57
+
58
+
59
+ @pytest .fixture
60
+ def parsed_version (version : str ) -> Version :
61
+ return Version (version )
62
+
63
+
64
+ def test_valid_version (version : str ) -> None :
13
65
packaging .version .parse (version )
14
66
15
67
16
- def test_valid_version_info () -> None :
68
+ def test_valid_version_info (version_info : Any ) -> None :
17
69
"""version_info has to be a tuple[int, int, int, str, int]"""
18
70
assert isinstance (version_info , tuple )
19
71
assert len (version_info ) == 5
@@ -26,17 +78,19 @@ def test_valid_version_info() -> None:
26
78
assert isinstance (serial , int )
27
79
28
80
29
- def test_valid_version_release_level () -> None :
81
+ def test_valid_version_release_level (parsed_version : Version ) -> None :
30
82
if parsed_version .pre is not None :
31
83
valid_release_levels = {v for v in RELEASE_LEVEL .values () if v is not None }
32
84
assert parsed_version .pre [0 ] in valid_release_levels
33
85
34
86
35
- def test_valid_version_info_release_level () -> None :
87
+ def test_valid_version_info_release_level (version_info : VersionInfoType ) -> None :
36
88
assert version_info [3 ] in RELEASE_LEVEL .keys ()
37
89
38
90
39
- def test_version_same_as_version_info () -> None :
91
+ def test_version_same_as_version_info (
92
+ parsed_version : Version , version_info : VersionInfoType
93
+ ) -> None :
40
94
assert (
41
95
parsed_version .major ,
42
96
parsed_version .minor ,
0 commit comments