Add umask to Downloader

This commit is contained in:
David Stainton 2015-12-08 02:47:27 +02:00 committed by Brian Warner
parent 7b9c89c6f4
commit 623ed3516e
2 changed files with 7 additions and 4 deletions

View 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):

View File

@ -1118,6 +1118,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