@@ -275,6 +275,42 @@ def test_libc_ver(self):
275275 self .assertEqual (platform .libc_ver (support .TESTFN ),
276276 ('glibc' , '1.23.4' ))
277277
278+ @support .cpython_only
279+ def test__comparable_version (self ):
280+ from platform import _comparable_version as V
281+ self .assertEqual (V ('1.2.3' ), V ('1.2.3' ))
282+ self .assertLess (V ('1.2.3' ), V ('1.2.10' ))
283+ self .assertEqual (V ('1.2.3.4' ), V ('1_2-3+4' ))
284+ self .assertLess (V ('1.2spam' ), V ('1.2dev' ))
285+ self .assertLess (V ('1.2dev' ), V ('1.2alpha' ))
286+ self .assertLess (V ('1.2dev' ), V ('1.2a' ))
287+ self .assertLess (V ('1.2alpha' ), V ('1.2beta' ))
288+ self .assertLess (V ('1.2a' ), V ('1.2b' ))
289+ self .assertLess (V ('1.2beta' ), V ('1.2c' ))
290+ self .assertLess (V ('1.2b' ), V ('1.2c' ))
291+ self .assertLess (V ('1.2c' ), V ('1.2RC' ))
292+ self .assertLess (V ('1.2c' ), V ('1.2rc' ))
293+ self .assertLess (V ('1.2RC' ), V ('1.2.0' ))
294+ self .assertLess (V ('1.2rc' ), V ('1.2.0' ))
295+ self .assertLess (V ('1.2.0' ), V ('1.2pl' ))
296+ self .assertLess (V ('1.2.0' ), V ('1.2p' ))
297+
298+ self .assertLess (V ('1.5.1' ), V ('1.5.2b2' ))
299+ self .assertLess (V ('3.10a' ), V ('161' ))
300+ self .assertEqual (V ('8.02' ), V ('8.02' ))
301+ self .assertLess (V ('3.4j' ), V ('1996.07.12' ))
302+ self .assertLess (V ('3.1.1.6' ), V ('3.2.pl0' ))
303+ self .assertLess (V ('2g6' ), V ('11g' ))
304+ self .assertLess (V ('0.9' ), V ('2.2' ))
305+ self .assertLess (V ('1.2' ), V ('1.2.1' ))
306+ self .assertLess (V ('1.1' ), V ('1.2.2' ))
307+ self .assertLess (V ('1.1' ), V ('1.2' ))
308+ self .assertLess (V ('1.2.1' ), V ('1.2.2' ))
309+ self .assertLess (V ('1.2' ), V ('1.2.2' ))
310+ self .assertLess (V ('0.4' ), V ('0.4.0' ))
311+ self .assertLess (V ('1.13++' ), V ('5.5.kw' ))
312+ self .assertLess (V ('0.960923' ), V ('2.2beta29' ))
313+
278314 def test_popen (self ):
279315 mswindows = (sys .platform == "win32" )
280316
0 commit comments