Skip to content

Commit 33f6533

Browse files
committed
test(common): Convert version comparison tests to use NamedTuple fixture
1 parent 79b7501 commit 33f6533

File tree

1 file changed

+146
-38
lines changed

1 file changed

+146
-38
lines changed

Diff for: tests/test_common.py

+146-38
Original file line numberDiff line numberDiff line change
@@ -150,44 +150,6 @@ def test_has_version() -> None:
150150
assert has_version(str(get_version()))
151151

152152

153-
def test_has_gt_version() -> None:
154-
"""Test has_gt_version()."""
155-
assert has_gt_version("1.6")
156-
assert has_gt_version("1.6b")
157-
158-
assert not has_gt_version("4.0")
159-
assert not has_gt_version("4.0b")
160-
161-
162-
def test_has_gte_version() -> None:
163-
"""Test has_gte_version()."""
164-
assert has_gte_version("1.6")
165-
assert has_gte_version("1.6b")
166-
assert has_gte_version(str(get_version()))
167-
168-
assert not has_gte_version("4.0")
169-
assert not has_gte_version("4.0b")
170-
171-
172-
def test_has_lt_version() -> None:
173-
"""Test has_lt_version()."""
174-
assert has_lt_version("4.0a")
175-
assert has_lt_version("4.0")
176-
177-
assert not has_lt_version("1.7")
178-
assert not has_lt_version(str(get_version()))
179-
180-
181-
def test_has_lte_version() -> None:
182-
"""Test has_lti_version()."""
183-
assert has_lte_version("4.0a")
184-
assert has_lte_version("4.0")
185-
assert has_lte_version(str(get_version()))
186-
187-
assert not has_lte_version("1.7")
188-
assert not has_lte_version("1.7b")
189-
190-
191153
def test_tmux_cmd_raises_on_not_found(monkeypatch: pytest.MonkeyPatch) -> None:
192154
"""Verify raises if tmux command not found."""
193155
monkeypatch.setenv("PATH", "")
@@ -277,3 +239,149 @@ def test_get_libtmux_version() -> None:
277239
version = get_libtmux_version()
278240
assert isinstance(version, LooseVersion)
279241
assert LooseVersion(__version__) == version
242+
243+
244+
class VersionComparisonFixture(t.NamedTuple):
245+
"""Test fixture for version comparison functions."""
246+
247+
test_id: str
248+
version: str
249+
comparison_type: t.Literal["gt", "gte", "lt", "lte"]
250+
expected: bool
251+
252+
253+
VERSION_COMPARISON_FIXTURES: list[VersionComparisonFixture] = [
254+
# Greater than tests
255+
VersionComparisonFixture(
256+
test_id="gt_older_version",
257+
version="1.6",
258+
comparison_type="gt",
259+
expected=True,
260+
),
261+
VersionComparisonFixture(
262+
test_id="gt_older_version_with_letter",
263+
version="1.6b",
264+
comparison_type="gt",
265+
expected=True,
266+
),
267+
VersionComparisonFixture(
268+
test_id="gt_newer_version",
269+
version="4.0",
270+
comparison_type="gt",
271+
expected=False,
272+
),
273+
VersionComparisonFixture(
274+
test_id="gt_newer_version_with_letter",
275+
version="4.0b",
276+
comparison_type="gt",
277+
expected=False,
278+
),
279+
# Greater than or equal tests
280+
VersionComparisonFixture(
281+
test_id="gte_older_version",
282+
version="1.6",
283+
comparison_type="gte",
284+
expected=True,
285+
),
286+
VersionComparisonFixture(
287+
test_id="gte_older_version_with_letter",
288+
version="1.6b",
289+
comparison_type="gte",
290+
expected=True,
291+
),
292+
VersionComparisonFixture(
293+
test_id="gte_current_version",
294+
version=str(get_version()),
295+
comparison_type="gte",
296+
expected=True,
297+
),
298+
VersionComparisonFixture(
299+
test_id="gte_newer_version",
300+
version="4.0",
301+
comparison_type="gte",
302+
expected=False,
303+
),
304+
VersionComparisonFixture(
305+
test_id="gte_newer_version_with_letter",
306+
version="4.0b",
307+
comparison_type="gte",
308+
expected=False,
309+
),
310+
# Less than tests
311+
VersionComparisonFixture(
312+
test_id="lt_newer_version_with_letter",
313+
version="4.0a",
314+
comparison_type="lt",
315+
expected=True,
316+
),
317+
VersionComparisonFixture(
318+
test_id="lt_newer_version",
319+
version="4.0",
320+
comparison_type="lt",
321+
expected=True,
322+
),
323+
VersionComparisonFixture(
324+
test_id="lt_older_version",
325+
version="1.7",
326+
comparison_type="lt",
327+
expected=False,
328+
),
329+
VersionComparisonFixture(
330+
test_id="lt_current_version",
331+
version=str(get_version()),
332+
comparison_type="lt",
333+
expected=False,
334+
),
335+
# Less than or equal tests
336+
VersionComparisonFixture(
337+
test_id="lte_newer_version_with_letter",
338+
version="4.0a",
339+
comparison_type="lte",
340+
expected=True,
341+
),
342+
VersionComparisonFixture(
343+
test_id="lte_newer_version",
344+
version="4.0",
345+
comparison_type="lte",
346+
expected=True,
347+
),
348+
VersionComparisonFixture(
349+
test_id="lte_current_version",
350+
version=str(get_version()),
351+
comparison_type="lte",
352+
expected=True,
353+
),
354+
VersionComparisonFixture(
355+
test_id="lte_older_version",
356+
version="1.7",
357+
comparison_type="lte",
358+
expected=False,
359+
),
360+
VersionComparisonFixture(
361+
test_id="lte_older_version_with_letter",
362+
version="1.7b",
363+
comparison_type="lte",
364+
expected=False,
365+
),
366+
]
367+
368+
369+
@pytest.mark.parametrize(
370+
list(VersionComparisonFixture._fields),
371+
VERSION_COMPARISON_FIXTURES,
372+
ids=[test.test_id for test in VERSION_COMPARISON_FIXTURES],
373+
)
374+
def test_version_comparison(
375+
test_id: str,
376+
version: str,
377+
comparison_type: t.Literal["gt", "gte", "lt", "lte"],
378+
expected: bool,
379+
) -> None:
380+
"""Test version comparison functions."""
381+
comparison_funcs = {
382+
"gt": has_gt_version,
383+
"gte": has_gte_version,
384+
"lt": has_lt_version,
385+
"lte": has_lte_version,
386+
}
387+
assert comparison_funcs[comparison_type](version) == expected

0 commit comments

Comments
 (0)