updated instances of octal literals to use the format 0o123 for python3 compatibility

This commit is contained in:
heartsucker 2019-03-28 14:02:56 +01:00
parent 7511b5956b
commit 129ef22185
No known key found for this signature in database
GPG Key ID: C49FAAAA25756E79
15 changed files with 101 additions and 77 deletions

1
newsfragments/3015.other Normal file
View File

@ -0,0 +1 @@
Updated instances of octal literals to use the format 0o123 for Python3 compatibility.

View File

@ -1,18 +1,20 @@
docs/
integration/
misc/build_helpers/check-build.py
misc/build_helpers/gen-package-table.py
misc/build_helpers/run-deprecations.py
misc/build_helpers/show-tool-versions.py
misc/build_helpers/test-osx-pkg.py
misc/coding_tools/check-debugging.py
misc/coding_tools/check-umids.py
misc/coding_tools/coverage2el.py
misc/coding_tools/find-trailing-spaces.py
misc/coding_tools/fixshebangs.py
misc/coding_tools/graph-deps.py
misc/incident-gatherer/classify_tahoe.py
misc/operations_helpers/provisioning/provisioning.py
misc/operations_helpers/provisioning/reliability.py
misc/operations_helpers/provisioning/run.py
misc/operations_helpers/provisioning/test_provisioning.py
misc/operations_helpers/provisioning/util.py
misc/operations_helpers/provisioning/web_reliability.py
misc/operations_helpers/spacetime/diskwatcher.py
misc/coding_tools/make-canary-files.py
misc/incident-gatherer/
misc/operations_helpers/
misc/simulators/
release-tools/
setup.py
src/allmydata/_auto_deps.py
@ -48,11 +50,14 @@ src/allmydata/mutable/publish.py
src/allmydata/mutable/repairer.py
src/allmydata/mutable/servermap.py
src/allmydata/nodemaker.py
src/allmydata/node.py
src/allmydata/scripts/admin.py
src/allmydata/scripts/cli.py
src/allmydata/scripts/common.py
src/allmydata/scripts/create_node.py
src/allmydata/scripts/default_nodedir.py
src/allmydata/scripts/__init__.py
src/allmydata/scripts/magic_folder_cli.py
src/allmydata/scripts/stats_gatherer.py
src/allmydata/scripts/tahoe_add_alias.py
src/allmydata/scripts/tahoe_backup.py
@ -61,8 +66,13 @@ src/allmydata/scripts/tahoe_restart.py
src/allmydata/scripts/tahoe_run.py
src/allmydata/scripts/tahoe_start.py
src/allmydata/scripts/tahoe_status.py
src/allmydata/storage_client.py
src/allmydata/stats.py
src/allmydata/storage/
src/allmydata/test/bench_dirnode.py
src/allmydata/test/check_grid.py
src/allmydata/test/check_load.py
src/allmydata/test/check_memory.py
src/allmydata/test/check_speed.py
src/allmydata/test/cli/common.py
src/allmydata/test/cli/__init__.py
src/allmydata/test/cli/test_alias.py
@ -71,6 +81,7 @@ src/allmydata/test/cli/test_daemonize.py
src/allmydata/test/cli/test_invite.py
src/allmydata/test/cli/test_start.py
src/allmydata/test/cli/test_status.py
src/allmydata/test/common_util.py
src/allmydata/test/common_web.py
src/allmydata/test/eliotutil.py
src/allmydata/test/__init__.py
@ -85,7 +96,10 @@ src/allmydata/test/mutable/test_interoperability.py
src/allmydata/test/mutable/test_multiple_encodings.py
src/allmydata/test/mutable/test_multiple_versions.py
src/allmydata/test/mutable/test_repair.py
src/allmydata/test/mutable/test_roundtrip.py
src/allmydata/test/mutable/test_servermap.py
src/allmydata/test/mutable/test_update.py
src/allmydata/test/mutable/test_version.py
src/allmydata/test/mutable/util.py
src/allmydata/test/plugins/tahoe_lafs_dropin.py
src/allmydata/test/status.py
@ -98,6 +112,7 @@ src/allmydata/test/test_connections.py
src/allmydata/test/test_eliotutil.py
src/allmydata/test/test_encode.py
src/allmydata/test/test_filenode.py
src/allmydata/test/test_ftp.py
src/allmydata/test/test_happiness.py
src/allmydata/test/test_helper.py
src/allmydata/test/test_hung_server.py
@ -108,9 +123,11 @@ src/allmydata/test/test_inotify.py
src/allmydata/test/test_introducer.py
src/allmydata/test/test_iputil.py
src/allmydata/test/test_json_metadata.py
src/allmydata/test/test_magic_folder.py
src/allmydata/test/test_magicpath.py
src/allmydata/test/test_multi_introducers.py
src/allmydata/test/test_netstring.py
src/allmydata/test/test_node.py
src/allmydata/test/test_no_network.py
src/allmydata/test/test_observer.py
src/allmydata/test/test_runner.py
@ -121,7 +138,11 @@ src/allmydata/test/test_uri.py
src/allmydata/test/test_version.py
src/allmydata/test/web/common.py
src/allmydata/test/web/__init__.py
src/allmydata/test/web/matchers.py
src/allmydata/test/web/test_grid.py
src/allmydata/test/web/test_introducer.py
src/allmydata/test/web/test_logs.py
src/allmydata/test/web/test_private.py
src/allmydata/test/web/test_root.py
src/allmydata/test/web/test_token.py
src/allmydata/test/web/test_util.py
@ -149,6 +170,7 @@ src/allmydata/util/nummedobj.py
src/allmydata/util/observer.py
src/allmydata/util/pipeline.py
src/allmydata/util/pkgresutil.py
src/allmydata/util/pollmixin.py
src/allmydata/util/progress.py
src/allmydata/util/repeatable_random.py
src/allmydata/util/rrefutil.py
@ -157,9 +179,10 @@ src/allmydata/util/statistics.py
src/allmydata/util/tor_provider.py
src/allmydata/util/verlib.py
src/allmydata/util/yamlutil.py
src/allmydata/_version.py
src/allmydata/watchdog/
src/allmydata/web/
src/allmydata/webish.py
src/allmydata/windows/__init__.py
src/allmydata/windows/tahoesvc.py
static/tahoe.py
ws_client.py

View File

@ -217,7 +217,7 @@ class Handler(object):
# Twisted-15.0.0 expects a
# twisted.python.filepath.Permissions , and calls its
# .shorthand() method. This provides both.
value = IntishPermissions(0600)
value = IntishPermissions(0o600)
elif key == "hardlinks":
value = 1
elif key == "modified":

View File

@ -283,10 +283,10 @@ def fix_magic_folder_config(yaml_fname, name, config):
# make sure directory for magic folder exists
dir_fp = to_filepath(config['directory'])
umask = config.setdefault('umask', 0077)
umask = config.setdefault('umask', 0o077)
try:
os.mkdir(dir_fp.path, 0777 & (~ umask))
os.mkdir(dir_fp.path, 0o777 & (~ umask))
except OSError as e:
if EEXIST != e.errno:
# Report some unknown problem.
@ -1645,9 +1645,9 @@ class WriteFileMixin(object):
replacement_path_u = abspath_u + u".tmp" # FIXME more unique
initial_path_u = os.path.dirname(abspath_u)
fileutil.make_dirs_with_absolute_mode(local_path_u, initial_path_u, (~ self._umask) & 0777)
fileutil.make_dirs_with_absolute_mode(local_path_u, initial_path_u, (~ self._umask) & 0o777)
fileutil.write(replacement_path_u, file_contents)
os.chmod(replacement_path_u, (~ self._umask) & 0666)
os.chmod(replacement_path_u, (~ self._umask) & 0o666)
# FUDGE_SECONDS is used to determine if another process has
# written to the same file concurrently. This is described in

View File

@ -214,7 +214,7 @@ def _populate_attrs(childnode, metadata, size=None):
if childnode and childnode.is_unknown():
perms = 0
elif childnode and IDirectoryNode.providedBy(childnode):
perms = S_IFDIR | 0777
perms = S_IFDIR | 0o777
else:
# For files, omit the size if we don't immediately know it.
if childnode and size is None:
@ -222,11 +222,11 @@ def _populate_attrs(childnode, metadata, size=None):
if size is not None:
_assert(isinstance(size, (int, long)) and not isinstance(size, bool), size=size)
attrs['size'] = size
perms = S_IFREG | 0666
perms = S_IFREG | 0o666
if metadata:
if metadata.get('no-write', False):
perms &= S_IFDIR | S_IFREG | 0555 # clear 'w' bits
perms &= S_IFDIR | S_IFREG | 0o555 # clear 'w' bits
# See webapi.txt for what these times mean.
# We would prefer to omit atime, but SFTP version 3 can only

View File

@ -784,7 +784,7 @@ class Node(service.MultiService):
# need to send a pid to the foolscap log here.
twlog.msg("My pid: %s" % os.getpid())
try:
os.chmod("twistd.pid", 0644)
os.chmod("twistd.pid", 0o644)
except EnvironmentError:
pass

View File

@ -426,7 +426,7 @@ def create_node(config):
else:
print(" {}: [sensitive data; see tahoe.cfg]".format(k), file=out)
fileutil.make_dirs(os.path.join(basedir, "private"), 0700)
fileutil.make_dirs(os.path.join(basedir, "private"), 0o700)
with open(os.path.join(basedir, "tahoe.cfg"), "w") as c:
yield write_node_config(c, config)
write_client_config(c, config)
@ -465,7 +465,7 @@ def create_introducer(config):
os.mkdir(basedir)
write_tac(basedir, "introducer")
fileutil.make_dirs(os.path.join(basedir, "private"), 0700)
fileutil.make_dirs(os.path.join(basedir, "private"), 0o700)
with open(os.path.join(basedir, "tahoe.cfg"), "w") as c:
yield write_node_config(c, config)

View File

@ -466,7 +466,7 @@ class Backup(GridTestMixin, CLITestMixin, StallMixin, unittest.TestCase):
# This is necessary for the temp files to be correctly removed
def _cleanup(self):
os.chmod(os.path.join(source, "foo.txt"), 0644)
os.chmod(os.path.join(source, "foo.txt"), 0o644)
d.addCallback(_cleanup)
d.addErrback(_cleanup)
@ -501,7 +501,7 @@ class Backup(GridTestMixin, CLITestMixin, StallMixin, unittest.TestCase):
# This is necessary for the temp files to be correctly removed
def _cleanup(self):
os.chmod(os.path.join(source, "test"), 0655)
os.chmod(os.path.join(source, "test"), 0o655)
d.addCallback(_cleanup)
d.addErrback(_cleanup)
return d

View File

@ -194,7 +194,7 @@ def create_no_network_client(basedir):
does no actual networking but has the same API.
"""
basedir = abspath_expanduser_unicode(unicode(basedir))
fileutil.make_dirs(os.path.join(basedir, "private"), 0700)
fileutil.make_dirs(os.path.join(basedir, "private"), 0o700)
from allmydata.client import read_config
config = read_config(basedir, u'client.port')

View File

@ -94,12 +94,12 @@ class Handler(GridTestMixin, ReallyEqualMixin, unittest.TestCase):
expected_root = [
('loop',
[0, True, ftpd.IntishPermissions(0600), 1, self.FALL_OF_BERLIN_WALL, 'alice', 'alice', '??']),
[0, True, ftpd.IntishPermissions(0o600), 1, self.FALL_OF_BERLIN_WALL, 'alice', 'alice', '??']),
('immutable',
[23, False, ftpd.IntishPermissions(0600), 1, self.TURN_OF_MILLENIUM, 'alice', 'alice', '??']),
[23, False, ftpd.IntishPermissions(0o600), 1, self.TURN_OF_MILLENIUM, 'alice', 'alice', '??']),
('mutable',
# timestamp should be 0 if no timestamp metadata is present
[0, False, ftpd.IntishPermissions(0600), 1, 0, 'alice', 'alice', '??'])]
[0, False, ftpd.IntishPermissions(0o600), 1, 0, 'alice', 'alice', '??'])]
d.addCallback(lambda root: self._compareDirLists(root, expected_root))

View File

@ -2281,23 +2281,23 @@ class MockTest(SingleMagicFolderTestMixin, AsyncTestCase):
readonly_dircap = n.get_readonly_uri()
self.shouldFail(ValueError, 'does not exist', 'does not exist',
MagicFolder, client, upload_dircap, '', doesnotexist, magicfolderdb, 0077, 'default')
MagicFolder, client, upload_dircap, '', doesnotexist, magicfolderdb, 0o077, 'default')
self.shouldFail(ValueError, 'is not a directory', 'is not a directory',
MagicFolder, client, upload_dircap, '', not_a_dir, magicfolderdb, 0077, 'default')
MagicFolder, client, upload_dircap, '', not_a_dir, magicfolderdb, 0o077, 'default')
self.shouldFail(AssertionError, 'bad upload.dircap', 'does not refer to a directory',
MagicFolder, client, 'bad', '', errors_dir, magicfolderdb, 0077, 'default')
MagicFolder, client, 'bad', '', errors_dir, magicfolderdb, 0o077, 'default')
self.shouldFail(AssertionError, 'non-directory upload.dircap', 'does not refer to a directory',
MagicFolder, client, 'URI:LIT:foo', '', errors_dir, magicfolderdb, 0077, 'default')
MagicFolder, client, 'URI:LIT:foo', '', errors_dir, magicfolderdb, 0o077, 'default')
self.shouldFail(AssertionError, 'readonly upload.dircap', 'is not a writecap to a directory',
MagicFolder, client, readonly_dircap, '', errors_dir, magicfolderdb, 0077, 'default')
MagicFolder, client, readonly_dircap, '', errors_dir, magicfolderdb, 0o077, 'default')
self.shouldFail(AssertionError, 'collective dircap', 'is not a readonly cap to a directory',
MagicFolder, client, upload_dircap, upload_dircap, errors_dir, magicfolderdb, 0077, 'default')
MagicFolder, client, upload_dircap, upload_dircap, errors_dir, magicfolderdb, 0o077, 'default')
def _not_implemented():
raise NotImplementedError("blah")
self.patch(magic_folder, 'get_inotify_module', _not_implemented)
self.shouldFail(NotImplementedError, 'unsupported', 'blah',
MagicFolder, client, upload_dircap, '', errors_dir, magicfolderdb, 0077, 'default')
MagicFolder, client, upload_dircap, '', errors_dir, magicfolderdb, 0o077, 'default')
d.addCallback(_check_errors)
return d.result
@ -2310,7 +2310,7 @@ class MockTest(SingleMagicFolderTestMixin, AsyncTestCase):
pass
writefile = TestWriteFileMixin()
writefile._umask = 0077
writefile._umask = 0o077
# create a file with name "foobar" with content "foo"
# write downloaded file content "bar" into "foobar" with is_conflict = False

View File

@ -299,7 +299,7 @@ class TestCase(testutil.SignalMixin, unittest.TestCase):
privdir = os.path.join(basedir, "private")
st = os.stat(privdir)
bits = stat.S_IMODE(st[stat.ST_MODE])
self.failUnless(bits & 0001 == 0, bits)
self.failUnless(bits & 0o001 == 0, bits)
@defer.inlineCallbacks
def test_logdir_is_str(self):

View File

@ -293,16 +293,16 @@ class Handler(GridTestMixin, ShouldFailMixin, ReallyEqualMixin, unittest.TestCas
gross = u"gro\u00DF".encode("utf-8")
expected_root = [
('empty_lit_dir', r'dr-xr-xr-x .* 0 .* empty_lit_dir$', {'permissions': S_IFDIR | 0555}),
(gross, r'-rw-rw-rw- .* 1010 .* '+gross+'$', {'permissions': S_IFREG | 0666, 'size': 1010}),
('empty_lit_dir', r'dr-xr-xr-x .* 0 .* empty_lit_dir$', {'permissions': S_IFDIR | 0o555}),
(gross, r'-rw-rw-rw- .* 1010 .* '+gross+'$', {'permissions': S_IFREG | 0o666, 'size': 1010}),
# The fall of the Berlin wall may have been on 9th or 10th November 1989 depending on the gateway's timezone.
#('loop', r'drwxrwxrwx .* 0 Nov (09|10) 1989 loop$', {'permissions': S_IFDIR | 0777}),
('loop', r'drwxrwxrwx .* 0 .* loop$', {'permissions': S_IFDIR | 0777}),
('mutable', r'-rw-rw-rw- .* 0 .* mutable$', {'permissions': S_IFREG | 0666}),
('readonly', r'-r--r--r-- .* 0 .* readonly$', {'permissions': S_IFREG | 0444}),
('small', r'-rw-rw-rw- .* 10 .* small$', {'permissions': S_IFREG | 0666, 'size': 10}),
('small2', r'-rw-rw-rw- .* 26 .* small2$', {'permissions': S_IFREG | 0666, 'size': 26}),
('tiny_lit_dir', r'dr-xr-xr-x .* 0 .* tiny_lit_dir$', {'permissions': S_IFDIR | 0555}),
('loop', r'drwxrwxrwx .* 0 .* loop$', {'permissions': S_IFDIR | 0o777}),
('mutable', r'-rw-rw-rw- .* 0 .* mutable$', {'permissions': S_IFREG | 0o666}),
('readonly', r'-r--r--r-- .* 0 .* readonly$', {'permissions': S_IFREG | 0o444}),
('small', r'-rw-rw-rw- .* 10 .* small$', {'permissions': S_IFREG | 0o666, 'size': 10}),
('small2', r'-rw-rw-rw- .* 26 .* small2$', {'permissions': S_IFREG | 0o666, 'size': 26}),
('tiny_lit_dir', r'dr-xr-xr-x .* 0 .* tiny_lit_dir$', {'permissions': S_IFDIR | 0o555}),
('unknown', r'\?--------- .* 0 .* unknown$', {'permissions': 0}),
]
@ -320,20 +320,20 @@ class Handler(GridTestMixin, ShouldFailMixin, ReallyEqualMixin, unittest.TestCas
# The UTC epoch may either be in Jan 1 1970 or Dec 31 1969 depending on the gateway's timezone.
expected_tiny_lit = [
('short', r'-r--r--r-- .* 8 (Jan 01 1970|Dec 31 1969) short$', {'permissions': S_IFREG | 0444, 'size': 8}),
('short', r'-r--r--r-- .* 8 (Jan 01 1970|Dec 31 1969) short$', {'permissions': S_IFREG | 0o444, 'size': 8}),
]
d.addCallback(lambda ign: self.handler.openDirectory("tiny_lit_dir"))
d.addCallback(lambda res: self._compareDirLists(res, expected_tiny_lit))
d.addCallback(lambda ign: self.handler.getAttrs("small", True))
d.addCallback(lambda attrs: self._compareAttributes(attrs, {'permissions': S_IFREG | 0666, 'size': 10}))
d.addCallback(lambda attrs: self._compareAttributes(attrs, {'permissions': S_IFREG | 0o666, 'size': 10}))
d.addCallback(lambda ign: self.handler.setAttrs("small", {}))
d.addCallback(lambda res: self.failUnlessReallyEqual(res, None))
d.addCallback(lambda ign: self.handler.getAttrs("small", True))
d.addCallback(lambda attrs: self._compareAttributes(attrs, {'permissions': S_IFREG | 0666, 'size': 10}))
d.addCallback(lambda attrs: self._compareAttributes(attrs, {'permissions': S_IFREG | 0o666, 'size': 10}))
d.addCallback(lambda ign:
self.shouldFailWithSFTPError(sftp.FX_OP_UNSUPPORTED, "setAttrs size",
@ -408,10 +408,10 @@ class Handler(GridTestMixin, ShouldFailMixin, ReallyEqualMixin, unittest.TestCas
rf.readChunk, 11, 1))
d2.addCallback(lambda ign: rf.getAttrs())
d2.addCallback(lambda attrs: self._compareAttributes(attrs, {'permissions': S_IFREG | 0666, 'size': 10}))
d2.addCallback(lambda attrs: self._compareAttributes(attrs, {'permissions': S_IFREG | 0o666, 'size': 10}))
d2.addCallback(lambda ign: self.handler.getAttrs("small", followLinks=0))
d2.addCallback(lambda attrs: self._compareAttributes(attrs, {'permissions': S_IFREG | 0666, 'size': 10}))
d2.addCallback(lambda attrs: self._compareAttributes(attrs, {'permissions': S_IFREG | 0o666, 'size': 10}))
d2.addCallback(lambda ign:
self.shouldFailWithSFTPError(sftp.FX_PERMISSION_DENIED, "writeChunk on read-only handle denied",
@ -460,10 +460,10 @@ class Handler(GridTestMixin, ShouldFailMixin, ReallyEqualMixin, unittest.TestCas
rf.readChunk, 1011, 1))
d2.addCallback(lambda ign: rf.getAttrs())
d2.addCallback(lambda attrs: self._compareAttributes(attrs, {'permissions': S_IFREG | 0666, 'size': 1010}))
d2.addCallback(lambda attrs: self._compareAttributes(attrs, {'permissions': S_IFREG | 0o666, 'size': 1010}))
d2.addCallback(lambda ign: self.handler.getAttrs(gross, followLinks=0))
d2.addCallback(lambda attrs: self._compareAttributes(attrs, {'permissions': S_IFREG | 0666, 'size': 1010}))
d2.addCallback(lambda attrs: self._compareAttributes(attrs, {'permissions': S_IFREG | 0o666, 'size': 1010}))
d2.addCallback(lambda ign:
self.shouldFailWithSFTPError(sftp.FX_PERMISSION_DENIED, "writeChunk on read-only handle denied",
@ -669,10 +669,10 @@ class Handler(GridTestMixin, ShouldFailMixin, ReallyEqualMixin, unittest.TestCas
d2.addCallback(lambda ign: wf.writeChunk(13, "abc"))
d2.addCallback(lambda ign: wf.getAttrs())
d2.addCallback(lambda attrs: self._compareAttributes(attrs, {'permissions': S_IFREG | 0666, 'size': 16}))
d2.addCallback(lambda attrs: self._compareAttributes(attrs, {'permissions': S_IFREG | 0o666, 'size': 16}))
d2.addCallback(lambda ign: self.handler.getAttrs("newfile", followLinks=0))
d2.addCallback(lambda attrs: self._compareAttributes(attrs, {'permissions': S_IFREG | 0666, 'size': 16}))
d2.addCallback(lambda attrs: self._compareAttributes(attrs, {'permissions': S_IFREG | 0o666, 'size': 16}))
d2.addCallback(lambda ign: wf.setAttrs({}))
@ -903,15 +903,15 @@ class Handler(GridTestMixin, ShouldFailMixin, ReallyEqualMixin, unittest.TestCas
def _write_mutable_setattr(wf):
d2 = wf.writeChunk(8, "read-only link from parent")
d2.addCallback(lambda ign: self.handler.setAttrs("mutable", {'permissions': 0444}))
d2.addCallback(lambda ign: self.handler.setAttrs("mutable", {'permissions': 0o444}))
d2.addCallback(lambda ign: self.root.get(u"mutable"))
d2.addCallback(lambda node: self.failUnless(node.is_readonly()))
d2.addCallback(lambda ign: wf.getAttrs())
d2.addCallback(lambda attrs: self.failUnlessReallyEqual(attrs['permissions'], S_IFREG | 0666))
d2.addCallback(lambda attrs: self.failUnlessReallyEqual(attrs['permissions'], S_IFREG | 0o666))
d2.addCallback(lambda ign: self.handler.getAttrs("mutable", followLinks=0))
d2.addCallback(lambda attrs: self.failUnlessReallyEqual(attrs['permissions'], S_IFREG | 0444))
d2.addCallback(lambda attrs: self.failUnlessReallyEqual(attrs['permissions'], S_IFREG | 0o444))
d2.addCallback(lambda ign: wf.close())
return d2
@ -932,16 +932,16 @@ class Handler(GridTestMixin, ShouldFailMixin, ReallyEqualMixin, unittest.TestCas
def _write_mutable2_setattr(wf):
d2 = wf.writeChunk(7, "2")
d2.addCallback(lambda ign: wf.setAttrs({'permissions': 0444, 'size': 8}))
d2.addCallback(lambda ign: wf.setAttrs({'permissions': 0o444, 'size': 8}))
# The link isn't made read-only until the file is closed.
d2.addCallback(lambda ign: self.root.get(u"mutable2"))
d2.addCallback(lambda node: self.failIf(node.is_readonly()))
d2.addCallback(lambda ign: wf.getAttrs())
d2.addCallback(lambda attrs: self.failUnlessReallyEqual(attrs['permissions'], S_IFREG | 0444))
d2.addCallback(lambda attrs: self.failUnlessReallyEqual(attrs['permissions'], S_IFREG | 0o444))
d2.addCallback(lambda ign: self.handler.getAttrs("mutable2", followLinks=0))
d2.addCallback(lambda attrs: self.failUnlessReallyEqual(attrs['permissions'], S_IFREG | 0666))
d2.addCallback(lambda attrs: self.failUnlessReallyEqual(attrs['permissions'], S_IFREG | 0o666))
d2.addCallback(lambda ign: wf.close())
return d2
@ -1387,7 +1387,7 @@ class Handler(GridTestMixin, ShouldFailMixin, ReallyEqualMixin, unittest.TestCas
d.addCallback(lambda ign:
self.shouldFailWithSFTPError(sftp.FX_PERMISSION_DENIED, "makeDirectory newdir2 permissions:0444 denied",
self.handler.makeDirectory, "newdir2",
{'permissions': 0444}))
{'permissions': 0o444}))
d.addCallback(lambda ign: self.failUnlessEqual(sftpd.all_heisenfiles, {}))
d.addCallback(lambda ign: self.failUnlessEqual(self.handler._heisenfiles, {}))

View File

@ -413,7 +413,7 @@ class Asserts(unittest.TestCase):
self.failUnlessEqual("postcondition: othermsg: 'message2' <type 'str'>", m)
class FileUtil(ReallyEqualMixin, unittest.TestCase):
def mkdir(self, basedir, path, mode=0777):
def mkdir(self, basedir, path, mode=0o777):
fn = os.path.join(basedir, path)
fileutil.make_dirs(fn, mode)
@ -433,16 +433,16 @@ class FileUtil(ReallyEqualMixin, unittest.TestCase):
d = os.path.join(basedir, "doomed")
self.mkdir(d, "a/b")
self.touch(d, "a/b/1.txt")
self.touch(d, "a/b/2.txt", 0444)
self.touch(d, "a/b/2.txt", 0o444)
self.touch(d, "a/b/3.txt", 0)
self.mkdir(d, "a/c")
self.touch(d, "a/c/1.txt")
self.touch(d, "a/c/2.txt", 0444)
self.touch(d, "a/c/2.txt", 0o444)
self.touch(d, "a/c/3.txt", 0)
os.chmod(os.path.join(d, "a/c"), 0444)
os.chmod(os.path.join(d, "a/c"), 0o444)
self.mkdir(d, "a/d")
self.touch(d, "a/d/1.txt")
self.touch(d, "a/d/2.txt", 0444)
self.touch(d, "a/d/2.txt", 0o444)
self.touch(d, "a/d/3.txt", 0)
os.chmod(os.path.join(d, "a/d"), 0)
@ -632,17 +632,17 @@ class FileUtil(ReallyEqualMixin, unittest.TestCase):
workdir = fileutil.abspath_expanduser_unicode(u"test_make_dirs_with_absolute_mode")
fileutil.make_dirs(workdir)
abspath = fileutil.abspath_expanduser_unicode(u"a/b/c/d", base=workdir)
fileutil.make_dirs_with_absolute_mode(workdir, abspath, 0766)
new_mode = os.stat(os.path.join(workdir, "a", "b", "c", "d")).st_mode & 0777
self.failUnlessEqual(new_mode, 0766)
new_mode = os.stat(os.path.join(workdir, "a", "b", "c")).st_mode & 0777
self.failUnlessEqual(new_mode, 0766)
new_mode = os.stat(os.path.join(workdir, "a", "b")).st_mode & 0777
self.failUnlessEqual(new_mode, 0766)
new_mode = os.stat(os.path.join(workdir, "a")).st_mode & 0777
self.failUnlessEqual(new_mode, 0766)
new_mode = os.stat(workdir).st_mode & 0777
self.failIfEqual(new_mode, 0766)
fileutil.make_dirs_with_absolute_mode(workdir, abspath, 0o766)
new_mode = os.stat(os.path.join(workdir, "a", "b", "c", "d")).st_mode & 0o777
self.failUnlessEqual(new_mode, 0o766)
new_mode = os.stat(os.path.join(workdir, "a", "b", "c")).st_mode & 0o777
self.failUnlessEqual(new_mode, 0o766)
new_mode = os.stat(os.path.join(workdir, "a", "b")).st_mode & 0o777
self.failUnlessEqual(new_mode, 0o766)
new_mode = os.stat(os.path.join(workdir, "a")).st_mode & 0o777
self.failUnlessEqual(new_mode, 0o766)
new_mode = os.stat(workdir).st_mode & 0o777
self.failIfEqual(new_mode, 0o766)
def test_create_long_path(self):
"""

View File

@ -172,7 +172,7 @@ def is_ancestor_path(parent, dirname):
return False
return True
def make_dirs(dirname, mode=0777):
def make_dirs(dirname, mode=0o777):
"""
An idempotent version of os.makedirs(). If the dir already exists, do
nothing and return without raising an exception. If this call creates the