1
1
import operator
2
+ import typing as t
2
3
from contextlib import nullcontext as does_not_raise
3
4
4
5
import pytest
5
6
6
7
from libtmux ._compat import LooseVersion
7
8
9
+ if t .TYPE_CHECKING :
10
+ from _pytest .python_api import RaisesContext
11
+
8
12
9
13
@pytest .mark .parametrize (
10
14
"version" ,
19
23
"1.0.0-next.1" ,
20
24
],
21
25
)
22
- def test_version (version ) :
26
+ def test_version (version : str ) -> None :
23
27
assert LooseVersion (version )
24
28
25
29
30
+ class VersionCompareFixture (t .NamedTuple ):
31
+ version : object
32
+ op : t .Callable [[object , object ], bool ]
33
+ versionb : object
34
+ raises : t .Union [t .Type [Exception ], bool ]
35
+
36
+
26
37
@pytest .mark .parametrize (
27
38
"version,op,versionb,raises" ,
28
39
[
@@ -37,7 +48,16 @@ def test_version(version):
37
48
["1" , operator .lt , "1" , AssertionError ],
38
49
],
39
50
)
40
- def test_version_compare (version , op , versionb , raises ):
41
- raises_ctx = pytest .raises (raises ) if raises else does_not_raise ()
51
+ def test_version_compare (
52
+ version : str ,
53
+ op : t .Callable [[object , object ], bool ],
54
+ versionb : str ,
55
+ raises : t .Union [t .Type [Exception ], bool ],
56
+ ) -> None :
57
+ raises_ctx : "RaisesContext[Exception]" = (
58
+ pytest .raises (t .cast (t .Type [Exception ], raises ))
59
+ if raises
60
+ else t .cast ("RaisesContext[Exception]" , does_not_raise ())
61
+ )
42
62
with raises_ctx :
43
63
assert op (LooseVersion (version ), LooseVersion (versionb ))
0 commit comments