Skip to content

Commit ae6d1d3

Browse files
committed
test(version): Convert parametrize tests to use NamedTuple fixtures
1 parent b446ebd commit ae6d1d3

File tree

1 file changed

+95
-24
lines changed

1 file changed

+95
-24
lines changed

tests/test_version.py

+95-24
Original file line numberDiff line numberDiff line change
@@ -27,48 +27,119 @@
2727
]
2828

2929

30+
class VersionTestFixture(t.NamedTuple):
31+
"""Test fixture for version string validation."""
32+
33+
test_id: str
34+
version: str
35+
36+
37+
VERSION_TEST_FIXTURES: list[VersionTestFixture] = [
38+
VersionTestFixture(test_id="simple_version", version="1"),
39+
VersionTestFixture(test_id="minor_version", version="1.0"),
40+
VersionTestFixture(test_id="patch_version", version="1.0.0"),
41+
VersionTestFixture(test_id="beta_version", version="1.0.0b"),
42+
VersionTestFixture(test_id="beta_with_number", version="1.0.0b1"),
43+
VersionTestFixture(test_id="beta_with_os", version="1.0.0b-openbsd"),
44+
VersionTestFixture(test_id="next_version", version="1.0.0-next"),
45+
VersionTestFixture(test_id="next_with_number", version="1.0.0-next.1"),
46+
]
47+
48+
3049
@pytest.mark.parametrize(
31-
"version",
32-
[
33-
"1",
34-
"1.0",
35-
"1.0.0",
36-
"1.0.0b",
37-
"1.0.0b1",
38-
"1.0.0b-openbsd",
39-
"1.0.0-next",
40-
"1.0.0-next.1",
41-
],
50+
list(VersionTestFixture._fields),
51+
VERSION_TEST_FIXTURES,
52+
ids=[test.test_id for test in VERSION_TEST_FIXTURES],
4253
)
43-
def test_version(version: str) -> None:
54+
def test_version(test_id: str, version: str) -> None:
4455
"""Assert LooseVersion constructor against various version strings."""
4556
assert LooseVersion(version)
4657

4758

4859
class VersionCompareFixture(t.NamedTuple):
4960
"""Test fixture for version comparison."""
5061

62+
test_id: str
5163
a: object
5264
op: VersionCompareOp
5365
b: object
5466
raises: type[Exception] | bool
5567

5668

69+
VERSION_COMPARE_FIXTURES: list[VersionCompareFixture] = [
70+
VersionCompareFixture(
71+
test_id="equal_simple",
72+
a="1",
73+
op=operator.eq,
74+
b="1",
75+
raises=False,
76+
),
77+
VersionCompareFixture(
78+
test_id="equal_with_minor",
79+
a="1",
80+
op=operator.eq,
81+
b="1.0",
82+
raises=False,
83+
),
84+
VersionCompareFixture(
85+
test_id="equal_with_patch",
86+
a="1",
87+
op=operator.eq,
88+
b="1.0.0",
89+
raises=False,
90+
),
91+
VersionCompareFixture(
92+
test_id="greater_than_alpha",
93+
a="1",
94+
op=operator.gt,
95+
b="1.0.0a",
96+
raises=False,
97+
),
98+
VersionCompareFixture(
99+
test_id="greater_than_beta",
100+
a="1",
101+
op=operator.gt,
102+
b="1.0.0b",
103+
raises=False,
104+
),
105+
VersionCompareFixture(
106+
test_id="less_than_patch",
107+
a="1",
108+
op=operator.lt,
109+
b="1.0.0p1",
110+
raises=False,
111+
),
112+
VersionCompareFixture(
113+
test_id="less_than_openbsd",
114+
a="1",
115+
op=operator.lt,
116+
b="1.0.0-openbsd",
117+
raises=False,
118+
),
119+
VersionCompareFixture(
120+
test_id="less_than_equal_raises",
121+
a="1",
122+
op=operator.lt,
123+
b="1",
124+
raises=AssertionError,
125+
),
126+
VersionCompareFixture(
127+
test_id="beta_to_rc_compare",
128+
a="1.0.0c",
129+
op=operator.gt,
130+
b="1.0.0b",
131+
raises=False,
132+
),
133+
]
134+
135+
57136
@pytest.mark.parametrize(
58-
VersionCompareFixture._fields,
59-
[
60-
VersionCompareFixture(a="1", op=operator.eq, b="1", raises=False),
61-
VersionCompareFixture(a="1", op=operator.eq, b="1.0", raises=False),
62-
VersionCompareFixture(a="1", op=operator.eq, b="1.0.0", raises=False),
63-
VersionCompareFixture(a="1", op=operator.gt, b="1.0.0a", raises=False),
64-
VersionCompareFixture(a="1", op=operator.gt, b="1.0.0b", raises=False),
65-
VersionCompareFixture(a="1", op=operator.lt, b="1.0.0p1", raises=False),
66-
VersionCompareFixture(a="1", op=operator.lt, b="1.0.0-openbsd", raises=False),
67-
VersionCompareFixture(a="1", op=operator.lt, b="1", raises=AssertionError),
68-
VersionCompareFixture(a="1.0.0c", op=operator.gt, b="1.0.0b", raises=False),
69-
],
137+
list(VersionCompareFixture._fields),
138+
VERSION_COMPARE_FIXTURES,
139+
ids=[test.test_id for test in VERSION_COMPARE_FIXTURES],
70140
)
71141
def test_version_compare(
142+
test_id: str,
72143
a: str,
73144
op: VersionCompareOp,
74145
b: str,

0 commit comments

Comments
 (0)