]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/commitdiff
Add umask to Downloader
authorDavid Stainton <dstainton415@gmail.com>
Tue, 8 Dec 2015 00:47:27 +0000 (02:47 +0200)
committerDavid Stainton <dstainton415@gmail.com>
Tue, 8 Dec 2015 00:47:27 +0000 (02:47 +0200)
src/allmydata/frontends/magic_folder.py
src/allmydata/test/test_magic_folder.py

index 55eb47011740356fef7f8930380eedf930eb5a91..dddffb928cc22dbed833f739a9750095fa116526 100644 (file)
@@ -484,10 +484,12 @@ class WriteFileMixin(object):
 
         # ensure parent directory exists
         head, tail = os.path.split(abspath_u)
-        mode = 0777 # XXX
-        fileutil.make_dirs(head, mode)
 
+        old_mask = os.umask(self._umask)
+        fileutil.make_dirs(head, ~ self._umask)
         fileutil.write(replacement_path_u, file_contents)
+        os.umask(old_mask)
+
         os.utime(replacement_path_u, (now, now - self.FUDGE_SECONDS))
         if is_conflict:
             print "0x00 ------------ <><> is conflict; calling _rename_conflicted_file... %r %r" % (abspath_u, replacement_path_u)
@@ -525,7 +527,7 @@ class Downloader(QueueMixin, WriteFileMixin):
     REMOTE_SCAN_INTERVAL = 3  # facilitates tests
 
     def __init__(self, client, local_path_u, db, collective_dirnode,
-                 upload_readonly_dircap, clock, is_upload_pending):
+                 upload_readonly_dircap, clock, is_upload_pending, umask = 0123):
         QueueMixin.__init__(self, client, local_path_u, db, 'downloader', clock)
 
         if not IDirectoryNode.providedBy(collective_dirnode):
@@ -538,7 +540,7 @@ class Downloader(QueueMixin, WriteFileMixin):
         self._collective_dirnode = collective_dirnode
         self._upload_readonly_dircap = upload_readonly_dircap
         self._is_upload_pending = is_upload_pending
-
+        self._umask = umask
         self._turn_delay = self.REMOTE_SCAN_INTERVAL
 
     def start_scanning(self):
index ab6b1ef0ec6dc6c5bf656bcf3d112cce87853d6a..dbc91a8fad94588ad457b8a1dcce9fbb6dd28199 100644 (file)
@@ -1122,6 +1122,7 @@ class MockTest(MagicFolderTestMixin, unittest.TestCase):
                 pass
 
         writefile = TestWriteFileMixin()
+        writefile._umask = 0123
 
         # create a file with name "foobar" with content "foo"
         # write downloaded file content "bar" into "foobar" with is_conflict = False