Ticket #5785: versions-5785-2.patch
| File versions-5785-2.patch, 6.0 KB (added by thijs, 10 months ago) |
|---|
-
twisted/python/versions.py
11 11 import sys, os 12 12 13 13 14 14 15 class _inf(object): 15 16 """ 16 17 An object that is bigger than all other objects. … … 30 31 _inf = _inf() 31 32 32 33 34 33 35 class IncomparableVersions(TypeError): 34 36 """ 35 37 Two versions could not be compared. 36 38 """ 37 39 40 41 38 42 class Version(object): 39 43 """ 40 44 An object that represents a three-part version number. 41 45 42 If running from an svncheckout, include the revision number in46 If running from an SVN checkout, include the revision number in 43 47 the version string. 44 48 """ 45 49 def __init__(self, package, major, minor, micro, prerelease=None): … … 65 69 def short(self): 66 70 """ 67 71 Return a string in canonical short version format, 68 <major>.<minor>.<micro>[+rSVNVer].72 C{<major>.<minor>.<micro>[+rSVNVer]}. 69 73 """ 70 74 s = self.base() 71 75 svnver = self._getSVNVersion() … … 76 80 77 81 def base(self): 78 82 """ 79 Like L{short}, but without the +rSVNVer.83 Like L{short}, but without the C{+rSVNVer}. 80 84 """ 81 85 if self.prerelease is None: 82 86 pre = "" … … 197 201 format version from the 'format' file and parsing the entries file 198 202 accordingly. 199 203 200 @return: None or string containing SVN Revision number.204 @return: None or string containing SVN revision number. 201 205 """ 202 206 mod = sys.modules.get(self.package) 203 207 if mod: … … 209 213 formatFile = os.path.join(svn, 'format') 210 214 if os.path.exists(formatFile): 211 215 # It looks like a less-than-version-10 working copy. 212 format = file(formatFile).read().strip()216 format = open(formatFile, 'r').read().strip() 213 217 parser = getattr(self, '_parseSVNEntries_' + format, None) 214 218 else: 215 219 # It looks like a version-10-or-greater working copy, which … … 220 224 return 'Unknown' 221 225 222 226 entriesFile = os.path.join(svn, 'entries') 223 entries = file(entriesFile)227 entries = open(entriesFile, 'r') 224 228 try: 225 229 try: 226 230 return parser(entries) … … 247 251 """ 248 252 result = '%s %s' % (version.package, version.short()) 249 253 return result 254 -
twisted/python/test/test_versions.py
92 92 vb = Version("whatever", 1, 0, 0) 93 93 self.assertTrue(va < vb) 94 94 self.assertFalse(va > vb) 95 self.assertNotEqual s(vb, va)95 self.assertNotEqual(vb, va) 96 96 97 97 98 98 def test_comparingPrereleases(self): … … 115 115 self.assertEqual(_inf, _inf) 116 116 117 117 118 def testDontAllowBuggyComparisons(self): 118 def test_incomparableVersions(self): 119 """ 120 Comparing versions raises L{IncomparableVersions} when the package 121 names differ. 122 """ 119 123 self.assertRaises(IncomparableVersions, 120 124 cmp, 121 125 Version("dummy", 1, 0, 0), 122 126 Version("dumym", 1, 0, 0)) 123 127 124 128 129 def test_dontAllowOtherObjects(self): 130 """ 131 Comparing versions when the other object is not a L{Version}. 132 """ 133 self.assertEqual(cmp(Version("dummy", 1, 0, 0), "foo"), 1) 134 135 125 136 def test_repr(self): 126 137 """ 127 138 Calling C{repr} on a version returns a human-readable string … … 139 150 self.assertEqual(repr(Version("dummy", 1, 2, 3, prerelease=4)), 140 151 "Version('dummy', 1, 2, 3, prerelease=4)") 141 152 142 143 153 def test_str(self): 144 154 """ 145 155 Calling C{str} on a version returns a human-readable string … … 157 167 "[dummy, version 1.0.0pre1]") 158 168 159 169 160 def testShort(self): 170 def test_shortVersion(self): 171 """ 172 Calling C{short()} on a version returns a short x.x.x representation of 173 the version. 174 """ 161 175 self.assertEqual(Version('dummy', 1, 2, 3).short(), '1.2.3') 162 176 163 177 … … 293 307 parsed. 294 308 """ 295 309 self.checkSVNFormat("8", VERSION_8_ENTRIES, '22715') 296 297 310 311 298 312 def test_detectVersion9(self): 299 313 """ 300 314 Verify that version 9 format files will be properly detected and 301 315 parsed. 302 316 """ 303 317 self.checkSVNFormat("9", VERSION_9_ENTRIES, '22715') 304 305 318 319 306 320 def test_detectVersion10(self): 307 321 """ 308 322 Verify that version 10 format files will be properly detected and … … 316 330 self.assertEqual(self.getVersion()._getSVNVersion(), '22715') 317 331 318 332 333 def test_reprRevisionNumber(self): 334 """ 335 Calling C{repr} on a version with an SVN version returns a human-readable 336 string representation of the version including the revision number. 337 """ 338 self.svnEntries.child("entries").setContent(VERSION_10_ENTRIES) 339 self.assertEqual(repr(self.getVersion()), 340 "Version('twisted_python_versions_package', 1, 0, 0) # (SVN r22715)") 341 342 319 343 def test_detectUnknownVersion(self): 320 344 """ 321 Verify that a new version of SVN will result in the revision 'Unknown'. 345 Verify that a new and unknown version of SVN will result in the 346 revision 'Unknown'. 347 """ 348 self.checkSVNFormat("some-random-new-version", "ooga booga!", 349 "Unknown") 350 351 352 def test_missingEntriesFile(self): 353 """ 354 Verify that a version 4 format file with invalid entries will result 355 in the revision 'Unknown'. 322 356 """ 323 self.checkSVNFormat("some-random-new-version", "ooga booga!", 'Unknown') 357 self.checkSVNFormat("4", "foo", "Unknown") 358
