@@ -285,6 +285,42 @@ def test_libc_ver(self):
285285 self .assertEqual (platform .libc_ver (support .TESTFN ),
286286 ('glibc' , '1.23.4' ))
287287
288+ @support .cpython_only
289+ def test__comparable_version (self ):
290+ from platform import _comparable_version as V
291+ self .assertEqual (V ('1.2.3' ), V ('1.2.3' ))
292+ self .assertLess (V ('1.2.3' ), V ('1.2.10' ))
293+ self .assertEqual (V ('1.2.3.4' ), V ('1_2-3+4' ))
294+ self .assertLess (V ('1.2spam' ), V ('1.2dev' ))
295+ self .assertLess (V ('1.2dev' ), V ('1.2alpha' ))
296+ self .assertLess (V ('1.2dev' ), V ('1.2a' ))
297+ self .assertLess (V ('1.2alpha' ), V ('1.2beta' ))
298+ self .assertLess (V ('1.2a' ), V ('1.2b' ))
299+ self .assertLess (V ('1.2beta' ), V ('1.2c' ))
300+ self .assertLess (V ('1.2b' ), V ('1.2c' ))
301+ self .assertLess (V ('1.2c' ), V ('1.2RC' ))
302+ self .assertLess (V ('1.2c' ), V ('1.2rc' ))
303+ self .assertLess (V ('1.2RC' ), V ('1.2.0' ))
304+ self .assertLess (V ('1.2rc' ), V ('1.2.0' ))
305+ self .assertLess (V ('1.2.0' ), V ('1.2pl' ))
306+ self .assertLess (V ('1.2.0' ), V ('1.2p' ))
307+
308+ self .assertLess (V ('1.5.1' ), V ('1.5.2b2' ))
309+ self .assertLess (V ('3.10a' ), V ('161' ))
310+ self .assertEqual (V ('8.02' ), V ('8.02' ))
311+ self .assertLess (V ('3.4j' ), V ('1996.07.12' ))
312+ self .assertLess (V ('3.1.1.6' ), V ('3.2.pl0' ))
313+ self .assertLess (V ('2g6' ), V ('11g' ))
314+ self .assertLess (V ('0.9' ), V ('2.2' ))
315+ self .assertLess (V ('1.2' ), V ('1.2.1' ))
316+ self .assertLess (V ('1.1' ), V ('1.2.2' ))
317+ self .assertLess (V ('1.1' ), V ('1.2' ))
318+ self .assertLess (V ('1.2.1' ), V ('1.2.2' ))
319+ self .assertLess (V ('1.2' ), V ('1.2.2' ))
320+ self .assertLess (V ('0.4' ), V ('0.4.0' ))
321+ self .assertLess (V ('1.13++' ), V ('5.5.kw' ))
322+ self .assertLess (V ('0.960923' ), V ('2.2beta29' ))
323+
288324 def test_parse_release_file (self ):
289325
290326 for input , output in (
0 commit comments