@@ -150,44 +150,6 @@ def test_has_version() -> None:
150
150
assert has_version (str (get_version ()))
151
151
152
152
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
-
191
153
def test_tmux_cmd_raises_on_not_found (monkeypatch : pytest .MonkeyPatch ) -> None :
192
154
"""Verify raises if tmux command not found."""
193
155
monkeypatch .setenv ("PATH" , "" )
@@ -277,3 +239,149 @@ def test_get_libtmux_version() -> None:
277
239
version = get_libtmux_version ()
278
240
assert isinstance (version , LooseVersion )
279
241
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