Skip to content

Commit dedd808

Browse files
committed
chore(test_version): Updates for mypy
1 parent ac1f16a commit dedd808

File tree

1 file changed

+43
-14
lines changed

1 file changed

+43
-14
lines changed

tests/test_version.py

Lines changed: 43 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,16 @@
11
import operator
2+
import typing as t
23
from contextlib import nullcontext as does_not_raise
34

45
import pytest
56

7+
from packaging.version import Version
8+
69
from libtmux._compat import LooseVersion
710

11+
if t.TYPE_CHECKING:
12+
from _pytest.python_api import RaisesContext
13+
814

915
@pytest.mark.parametrize(
1016
"version",
@@ -19,25 +25,48 @@
1925
"1.0.0-next.1",
2026
],
2127
)
22-
def test_version(version):
28+
def test_version(version: str) -> None:
2329
assert LooseVersion(version)
2430

2531

32+
VersionCompareOp: t.TypeAlias = t.Callable[
33+
[t.Any, t.Any],
34+
bool,
35+
]
36+
37+
38+
class VersionCompareFixture(t.NamedTuple):
39+
a: object
40+
op: VersionCompareOp
41+
b: object
42+
raises: t.Union[t.Type[Exception], bool]
43+
44+
2645
@pytest.mark.parametrize(
27-
"version,op,versionb,raises",
46+
VersionCompareFixture._fields,
2847
[
29-
["1", operator.eq, "1", False],
30-
["1", operator.eq, "1.0", False],
31-
["1", operator.eq, "1.0.0", False],
32-
["1", operator.gt, "1.0.0a", False],
33-
["1", operator.gt, "1.0.0b", False],
34-
["1", operator.lt, "1.0.0p1", False],
35-
["1", operator.lt, "1.0.0-openbsd", False],
36-
["1", operator.lt, "1", AssertionError],
37-
["1", operator.lt, "1", AssertionError],
48+
VersionCompareFixture(a="1", op=operator.eq, b="1", raises=False),
49+
VersionCompareFixture(a="1", op=operator.eq, b="1.0", raises=False),
50+
VersionCompareFixture(a="1", op=operator.eq, b="1.0.0", raises=False),
51+
VersionCompareFixture(a="1", op=operator.gt, b="1.0.0a", raises=False),
52+
VersionCompareFixture(a="1", op=operator.gt, b="1.0.0b", raises=False),
53+
VersionCompareFixture(a="1", op=operator.lt, b="1.0.0p1", raises=False),
54+
VersionCompareFixture(a="1", op=operator.lt, b="1.0.0-openbsd", raises=False),
55+
VersionCompareFixture(a="1", op=operator.lt, b="1", raises=AssertionError),
56+
VersionCompareFixture(a="1", op=operator.lt, b="1", raises=AssertionError),
57+
VersionCompareFixture(a="1.0.0c", op=operator.gt, b="1.0.0b", raises=False),
3858
],
3959
)
40-
def test_version_compare(version, op, versionb, raises):
41-
raises_ctx = pytest.raises(raises) if raises else does_not_raise()
60+
def test_version_compare(
61+
a: str,
62+
op: t.Callable[[object, object], bool],
63+
b: str,
64+
raises: t.Union[t.Type[Exception], bool],
65+
) -> None:
66+
raises_ctx: "RaisesContext[Exception]" = (
67+
pytest.raises(t.cast(t.Type[Exception], raises))
68+
if raises
69+
else t.cast("RaisesContext[Exception]", does_not_raise())
70+
)
4271
with raises_ctx:
43-
assert op(LooseVersion(version), LooseVersion(versionb))
72+
assert op(LooseVersion(a), LooseVersion(b))

0 commit comments

Comments
 (0)