[pypy-commit] pypy py3.5: merge
cfbolz
pypy.commits at gmail.com
Fri Aug 4 08:51:44 EDT 2017
Author: Carl Friedrich Bolz <cfbolz at gmx.de>
Branch: py3.5
Changeset: r92074:28233e67ad80
Date: 2017-08-04 14:50 +0200
http://bitbucket.org/pypy/pypy/changeset/28233e67ad80/
Log: merge
diff --git a/lib-python/3/stat.py b/lib-python/3/stat.py
--- a/lib-python/3/stat.py
+++ b/lib-python/3/stat.py
@@ -139,13 +139,21 @@
def filemode(mode):
"""Convert a file's mode to a string of the form '-rwxrwxrwx'."""
perm = []
+
+ # The first group gets a question mark if none of the bits match the mode.
+ empty = "?"
+
for table in _filemode_table:
for bit, char in table:
if mode & bit == bit:
perm.append(char)
break
else:
- perm.append("-")
+ perm.append(empty)
+
+ # All the rest of the positions get a - if the bits don't match.
+ empty = "-"
+
return "".join(perm)
diff --git a/lib-python/3/test/test_stat.py b/lib-python/3/test/test_stat.py
--- a/lib-python/3/test/test_stat.py
+++ b/lib-python/3/test/test_stat.py
@@ -138,6 +138,10 @@
self.assertS_IS("REG", st_mode)
self.assertEqual(modestr, '-r--r--r--')
self.assertEqual(self.statmod.S_IMODE(st_mode), 0o444)
+
+ # If there are only permission bits, no type bytes, a question
+ # mark is rendered in the type field.
+ self.assertEqual(self.statmod.filemode(0o420), '?r---w----')
else:
os.chmod(TESTFN, 0o700)
st_mode, modestr = self.get_mode()
More information about the pypy-commit
mailing list