@@ -140,15 +140,22 @@ def test_LooseVersion(self):
140140 self .assertLess (LooseVersion ('2.1.5' ), LooseVersion ('2.2' ))
141141 self .assertLess (LooseVersion ('2.1.3' ), LooseVersion ('3' ))
142142 self .assertLessEqual (LooseVersion ('2.1.0' ), LooseVersion ('2.2' ))
143- # Careful here: 1.0 > 1 !!!
144- self .assertGreater (LooseVersion ('1.0' ), LooseVersion ('1' ))
145- self .assertLess (LooseVersion ('1' ), LooseVersion ('1.0' ))
146- # checking prereleases
147- self .assertGreater (LooseVersion ('4.0.0-beta' ), LooseVersion ('4.0.0' ))
148- self .assertEqual (LooseVersion ('4.0.0-beta' ).is_prerelease ('4.0.0' , ['-beta' ]), True )
149- self .assertEqual (LooseVersion ('4.0.0-beta' ).is_prerelease ('4.0.0' , ['rc' ]), False )
143+ # Missing components are either empty strings or zeroes
144+ self .assertEqual (LooseVersion ('1.0' ), LooseVersion ('1' ))
145+ self .assertEqual (LooseVersion ('1' ), LooseVersion ('1.0' ))
146+ self .assertEqual (LooseVersion ('1.0' ), LooseVersion ('1.' ))
147+ self .assertGreater (LooseVersion ('2.1.a' ), LooseVersion ('2.1' ))
148+ self .assertGreater (LooseVersion ('2.a' ), LooseVersion ('2' ))
150149
151- # The following test is taken from Python distutils tests
150+ # checking prereleases
151+ version_4beta = LooseVersion ('4.0.0-beta' )
152+ self .assertGreater (version_4beta , LooseVersion ('4.0.0' ))
153+ self .assertTrue (version_4beta .is_prerelease ('4.0.0' , ['-beta' ]))
154+ self .assertTrue (version_4beta .is_prerelease (LooseVersion ('4.0.0' ), ['-beta' ]))
155+ self .assertFalse (version_4beta .is_prerelease ('4.0.0' , ['rc' ]))
156+ self .assertFalse (version_4beta .is_prerelease ('4.0.0' , ['rc, -beta' ]))
157+
158+ # The following test is based on the Python distutils tests
152159 # licensed under the Python Software Foundation License Version 2
153160 versions = (('1.5.1' , '1.5.2b2' , - 1 ),
154161 ('161' , '3.10a' , 1 ),
@@ -158,16 +165,21 @@ def test_LooseVersion(self):
158165 ('2g6' , '11g' , - 1 ),
159166 ('0.960923' , '2.2beta29' , - 1 ),
160167 ('1.13++' , '5.5.kw' , - 1 ),
161- # Added from https://bugs.python.org/issue14894
162168 ('a.12.b.c' , 'a.b.3' , - 1 ),
163- ('1.0' , '1' , 1 ),
164- ('1' , '1.0' , - 1 ))
169+ ('1.0' , '1' , 0 ),
170+ ('1.a' , '1' , 1 ),
171+ )
165172
166173 for v1 , v2 , wanted in versions :
167174 res = LooseVersion (v1 )._cmp (LooseVersion (v2 ))
168175 self .assertEqual (res , wanted ,
169176 'cmp(%s, %s) should be %s, got %s' %
170177 (v1 , v2 , wanted , res ))
178+ # Test the inverse
179+ res = LooseVersion (v2 )._cmp (LooseVersion (v1 ))
180+ self .assertEqual (res , - wanted ,
181+ 'cmp(%s, %s) should be %s, got %s' %
182+ (v2 , v1 , - wanted , res ))
171183 # vstring is the unparsed version
172184 self .assertEqual (LooseVersion (v1 ).vstring , v1 )
173185
0 commit comments