@@ -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-
191153def 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