summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRonan Lamy <ronan.lamy@gmail.com>2019-10-10 09:34:46 +0200
committerVictor Stinner <vstinner@python.org>2019-10-10 09:34:46 +0200
commit7bb14316b8ceddb813f31040a299af94a57ab339 (patch)
treedfac97d7fff7de61f580a9a1c59037d0788d2f83
parenta5447735c334a041ee2ffdeb5c7e13d7d4502ea2 (diff)
downloadcpython-git-7bb14316b8ceddb813f31040a299af94a57ab339.tar.gz
bpo-38109: Add missing constants to Lib/stat.py (GH-16665)
Add missing stat.S_IFDOOR, stat.S_IFPORT, stat.S_IFWHT, stat.S_ISDOOR, stat.S_ISPORT, and stat.S_ISWHT values to the Python implementation of the stat module.
-rw-r--r--Lib/stat.py16
-rw-r--r--Lib/test/test_stat.py8
-rw-r--r--Misc/NEWS.d/next/Library/2019-10-10-00-25-28.bpo-38109.9w-IGF.rst3
3 files changed, 21 insertions, 6 deletions
diff --git a/Lib/stat.py b/Lib/stat.py
index a9c678ec03..fc024db3f4 100644
--- a/Lib/stat.py
+++ b/Lib/stat.py
@@ -40,6 +40,10 @@ S_IFREG = 0o100000 # regular file
S_IFIFO = 0o010000 # fifo (named pipe)
S_IFLNK = 0o120000 # symbolic link
S_IFSOCK = 0o140000 # socket file
+# Fallbacks for uncommon platform-specific constants
+S_IFDOOR = 0
+S_IFPORT = 0
+S_IFWHT = 0
# Functions to test for each file type
@@ -71,6 +75,18 @@ def S_ISSOCK(mode):
"""Return True if mode is from a socket."""
return S_IFMT(mode) == S_IFSOCK
+def S_ISDOOR(mode):
+ """Return True if mode is from a door."""
+ return False
+
+def S_ISPORT(mode):
+ """Return True if mode is from an event port."""
+ return False
+
+def S_ISWHT(mode):
+ """Return True if mode is from a whiteout."""
+ return False
+
# Names for permission bits
S_ISUID = 0o4000 # set UID bit
diff --git a/Lib/test/test_stat.py b/Lib/test/test_stat.py
index 17443bed07..be01db2ed5 100644
--- a/Lib/test/test_stat.py
+++ b/Lib/test/test_stat.py
@@ -16,10 +16,10 @@ class TestFilemode:
'UF_IMMUTABLE', 'UF_NODUMP', 'UF_NOUNLINK', 'UF_OPAQUE'}
formats = {'S_IFBLK', 'S_IFCHR', 'S_IFDIR', 'S_IFIFO', 'S_IFLNK',
- 'S_IFREG', 'S_IFSOCK'}
+ 'S_IFREG', 'S_IFSOCK', 'S_IFDOOR', 'S_IFPORT', 'S_IFWHT'}
format_funcs = {'S_ISBLK', 'S_ISCHR', 'S_ISDIR', 'S_ISFIFO', 'S_ISLNK',
- 'S_ISREG', 'S_ISSOCK'}
+ 'S_ISREG', 'S_ISSOCK', 'S_ISDOOR', 'S_ISPORT', 'S_ISWHT'}
stat_struct = {
'ST_MODE': 0,
@@ -231,10 +231,6 @@ class TestFilemode:
class TestFilemodeCStat(TestFilemode, unittest.TestCase):
statmod = c_stat
- formats = TestFilemode.formats | {'S_IFDOOR', 'S_IFPORT', 'S_IFWHT'}
- format_funcs = TestFilemode.format_funcs | {'S_ISDOOR', 'S_ISPORT',
- 'S_ISWHT'}
-
class TestFilemodePyStat(TestFilemode, unittest.TestCase):
statmod = py_stat
diff --git a/Misc/NEWS.d/next/Library/2019-10-10-00-25-28.bpo-38109.9w-IGF.rst b/Misc/NEWS.d/next/Library/2019-10-10-00-25-28.bpo-38109.9w-IGF.rst
new file mode 100644
index 0000000000..3f4484dc64
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2019-10-10-00-25-28.bpo-38109.9w-IGF.rst
@@ -0,0 +1,3 @@
+Add missing :data:`stat.S_IFDOOR`, :data:`stat.S_IFPORT`, :data:`stat.S_IFWHT`,
+:func:`stat.S_ISDOOR`, :func:`stat.S_ISPORT`, and :func:`stat.S_ISWHT` values to
+the Python implementation of :mod:`stat`. \ No newline at end of file