]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/commitdiff
bump Twisted dep to 11.1.0, thus simplify IntishPermissions
authorBrian Warner <warner@lothar.com>
Tue, 31 Mar 2015 16:41:55 +0000 (09:41 -0700)
committerBrian Warner <warner@lothar.com>
Tue, 31 Mar 2015 18:06:14 +0000 (11:06 -0700)
src/allmydata/_auto_deps.py
src/allmydata/frontends/ftpd.py
src/allmydata/test/test_ftp.py

index 3c00f61d370efc82f29fe6123f2e682dcfb7a946..a42bc17b85fca86fc9e47424b138cb3254571133 100644 (file)
@@ -110,10 +110,12 @@ if sys.platform == "win32":
         #   which includes the fix to <https://twistedmatrix.com/trac/ticket/411>.
         # * The SFTP frontend depends on Twisted 11.0.0 to fix the SSH server
         #   rekeying bug <https://twistedmatrix.com/trac/ticket/4395>
+        # * The FTP frontend depends on Twisted >=11.1.0 for
+        #   filepath.Permissions
         # * We don't want Twisted >= 12.2.0 to avoid a dependency of its endpoints
         #   code on pywin32. <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2028>
         #
-        "Twisted >= 11.0.0, <= 12.1.0",
+        "Twisted >= 11.1.0, <= 12.1.0",
 
         # * We need Nevow >= 0.9.33 to avoid a bug in Nevow's setup.py
         #   which imported twisted at setup time.
index dbcb8318a5a15658f4b52aa3fc9f59f730b6220d..b00bd9349ecfb4d3b15486f8637380ded7e3322b 100644 (file)
@@ -62,18 +62,16 @@ class WriteFile:
 class NoParentError(Exception):
     pass
 
-if hasattr(filepath, "Permissions"):
-    # filepath.Permissions was added in Twisted-11.1.0, but we're compatible
-    # back to 11.0.0 (on windows). Fortunately we don't really need to
-    # provide anything more than an int until Twisted-15.0.0 .
-    class IntishPermissions(filepath.Permissions):
-        def __init__(self, statModeInt):
-            self.statModeInt = statModeInt
-            filepath.Permissions.__init__(self, statModeInt)
-        def __and__(self, other):
-            return self.statModeInt & other
-else:
-    IntishPermissions = lambda statModeInt: statModeInt
+# filepath.Permissions was added in Twisted-11.1.0, which we require. Twisted
+# <15.0.0 expected an int, and only does '&' on it. Twisted >=15.0.0 expects
+# a filepath.Permissions. This satisfies both.
+
+class IntishPermissions(filepath.Permissions):
+    def __init__(self, statModeInt):
+        self._tahoe_statModeInt = statModeInt
+        filepath.Permissions.__init__(self, statModeInt)
+    def __and__(self, other):
+        return self._tahoe_statModeInt & other
 
 class Handler:
     implements(ftp.IFTPShell)
@@ -214,10 +212,11 @@ class Handler:
             elif key == "directory":
                 value = isdir
             elif key == "permissions":
-                # Twisted-14.0.2 expected an int, and used it in a rendering
-                # function that did (mode & NUMBER). Twisted-15.0.0 expects a
+                # Twisted-14.0.2 (and earlier) expected an int, and used it
+                # in a rendering function that did (mode & NUMBER).
+                # Twisted-15.0.0 expects a
                 # twisted.python.filepath.Permissions , and calls its
-                # .shorthand() method. Try to provide both.
+                # .shorthand() method. This provides both both.
                 value = IntishPermissions(0600)
             elif key == "hardlinks":
                 value = 1
index d3e3082baa9192c1b3f5532bca2654aed9f3dc5c..9457e540ac8cfcd51c019604b701d7e254c2ed15 100644 (file)
@@ -79,11 +79,6 @@ class Handler(GridTestMixin, ReallyEqualMixin, unittest.TestCase):
                                        actual_list, expected_list))
         for (a, b) in zip(actual_list, expected_list):
            (name, meta) = a
-           # convert meta.permissions to int for comparison. When we run
-           # against many (but not all) versions of Twisted, this is a
-           # filepath.Permissions object, not an int
-           meta = list(meta)
-           meta[2] = meta[2] & 0xffffffff
            (expected_name, expected_meta) = b
            self.failUnlessReallyEqual(name, expected_name)
            self.failUnlessReallyEqual(meta, expected_meta)
@@ -98,12 +93,12 @@ class Handler(GridTestMixin, ReallyEqualMixin, unittest.TestCase):
 
         expected_root = [
             ('loop',
-             [0, True, 0600, 1, self.FALL_OF_BERLIN_WALL, 'alice', 'alice', '??']),
+             [0, True, ftpd.IntishPermissions(0600), 1, self.FALL_OF_BERLIN_WALL, 'alice', 'alice', '??']),
             ('immutable',
-             [23, False, 0600, 1, self.TURN_OF_MILLENIUM, 'alice', 'alice', '??']),
+             [23, False, ftpd.IntishPermissions(0600), 1, self.TURN_OF_MILLENIUM, 'alice', 'alice', '??']),
             ('mutable',
              # timestamp should be 0 if no timestamp metadata is present
-             [0, False, 0600, 1, 0, 'alice', 'alice', '??'])]
+             [0, False, ftpd.IntishPermissions(0600), 1, 0, 'alice', 'alice', '??'])]
 
         d.addCallback(lambda root: self._compareDirLists(root, expected_root))