Ticket #5785: versions-5785-2.patch

File versions-5785-2.patch, 6.0 KB (added by thijs, 2 years ago)
  • twisted/python/versions.py

     
    1111import sys, os 
    1212 
    1313 
     14 
    1415class _inf(object): 
    1516    """ 
    1617    An object that is bigger than all other objects. 
     
    3031_inf = _inf() 
    3132 
    3233 
     34 
    3335class IncomparableVersions(TypeError): 
    3436    """ 
    3537    Two versions could not be compared. 
    3638    """ 
    3739 
     40 
     41 
    3842class Version(object): 
    3943    """ 
    4044    An object that represents a three-part version number. 
    4145 
    42     If running from an svn checkout, include the revision number in 
     46    If running from an SVN checkout, include the revision number in 
    4347    the version string. 
    4448    """ 
    4549    def __init__(self, package, major, minor, micro, prerelease=None): 
     
    6569    def short(self): 
    6670        """ 
    6771        Return a string in canonical short version format, 
    68         <major>.<minor>.<micro>[+rSVNVer]. 
     72        C{<major>.<minor>.<micro>[+rSVNVer]}. 
    6973        """ 
    7074        s = self.base() 
    7175        svnver = self._getSVNVersion() 
     
    7680 
    7781    def base(self): 
    7882        """ 
    79         Like L{short}, but without the +rSVNVer. 
     83        Like L{short}, but without the C{+rSVNVer}. 
    8084        """ 
    8185        if self.prerelease is None: 
    8286            pre = "" 
     
    197201        format version from the 'format' file and parsing the entries file 
    198202        accordingly. 
    199203 
    200         @return: None or string containing SVN Revision number. 
     204        @return: None or string containing SVN revision number. 
    201205        """ 
    202206        mod = sys.modules.get(self.package) 
    203207        if mod: 
     
    209213            formatFile = os.path.join(svn, 'format') 
    210214            if os.path.exists(formatFile): 
    211215                # It looks like a less-than-version-10 working copy. 
    212                 format = file(formatFile).read().strip() 
     216                format = open(formatFile, 'r').read().strip() 
    213217                parser = getattr(self, '_parseSVNEntries_' + format, None) 
    214218            else: 
    215219                # It looks like a version-10-or-greater working copy, which 
     
    220224                return 'Unknown' 
    221225 
    222226            entriesFile = os.path.join(svn, 'entries') 
    223             entries = file(entriesFile) 
     227            entries = open(entriesFile, 'r') 
    224228            try: 
    225229                try: 
    226230                    return parser(entries) 
     
    247251    """ 
    248252    result = '%s %s' % (version.package, version.short()) 
    249253    return result 
     254 
  • twisted/python/test/test_versions.py

     
    9292        vb = Version("whatever", 1, 0, 0) 
    9393        self.assertTrue(va < vb) 
    9494        self.assertFalse(va > vb) 
    95         self.assertNotEquals(vb, va) 
     95        self.assertNotEqual(vb, va) 
    9696 
    9797 
    9898    def test_comparingPrereleases(self): 
     
    115115        self.assertEqual(_inf, _inf) 
    116116 
    117117 
    118     def testDontAllowBuggyComparisons(self): 
     118    def test_incomparableVersions(self): 
     119        """ 
     120        Comparing versions raises L{IncomparableVersions} when the package 
     121        names differ. 
     122        """ 
    119123        self.assertRaises(IncomparableVersions, 
    120124                          cmp, 
    121125                          Version("dummy", 1, 0, 0), 
    122126                          Version("dumym", 1, 0, 0)) 
    123127 
    124128 
     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 
    125136    def test_repr(self): 
    126137        """ 
    127138        Calling C{repr} on a version returns a human-readable string 
     
    139150        self.assertEqual(repr(Version("dummy", 1, 2, 3, prerelease=4)), 
    140151                          "Version('dummy', 1, 2, 3, prerelease=4)") 
    141152 
    142  
    143153    def test_str(self): 
    144154        """ 
    145155        Calling C{str} on a version returns a human-readable string 
     
    157167                          "[dummy, version 1.0.0pre1]") 
    158168 
    159169 
    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        """ 
    161175        self.assertEqual(Version('dummy', 1, 2, 3).short(), '1.2.3') 
    162176 
    163177 
     
    293307        parsed. 
    294308        """ 
    295309        self.checkSVNFormat("8", VERSION_8_ENTRIES, '22715') 
    296          
    297      
     310 
     311 
    298312    def test_detectVersion9(self): 
    299313        """ 
    300314        Verify that version 9 format files will be properly detected and 
    301315        parsed. 
    302316        """ 
    303317        self.checkSVNFormat("9", VERSION_9_ENTRIES, '22715') 
    304          
    305          
     318 
     319 
    306320    def test_detectVersion10(self): 
    307321        """ 
    308322        Verify that version 10 format files will be properly detected and 
     
    316330        self.assertEqual(self.getVersion()._getSVNVersion(), '22715') 
    317331 
    318332 
     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 
    319343    def test_detectUnknownVersion(self): 
    320344        """ 
    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'. 
    322356        """ 
    323         self.checkSVNFormat("some-random-new-version", "ooga booga!", 'Unknown') 
     357        self.checkSVNFormat("4", "foo", "Unknown") 
     358