11import operator
2+ import typing as t
23from contextlib import nullcontext as does_not_raise
34
45import pytest
56
67from libtmux ._compat import LooseVersion
78
9+ if t .TYPE_CHECKING :
10+ from _pytest .python_api import RaisesContext
11+
812
913@pytest .mark .parametrize (
1014 "version" ,
1923 "1.0.0-next.1" ,
2024 ],
2125)
22- def test_version (version ) :
26+ def test_version (version : str ) -> None :
2327 assert LooseVersion (version )
2428
2529
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+
2637@pytest .mark .parametrize (
2738 "version,op,versionb,raises" ,
2839 [
@@ -37,7 +48,16 @@ def test_version(version):
3748 ["1" , operator .lt , "1" , AssertionError ],
3849 ],
3950)
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+ )
4262 with raises_ctx :
4363 assert op (LooseVersion (version ), LooseVersion (versionb ))
0 commit comments