From b92c526ed5da474694f89e29d82565f2a654c29b Mon Sep 17 00:00:00 2001 From: GPery Date: Fri, 10 Aug 2018 08:12:08 +0300 Subject: [PATCH] closes bpo-34353: Add sockets to stat.filemode fallback python implementation. (GH-8703) --- Lib/stat.py | 1 + Lib/test/test_stat.py | 9 +++++++++ .../2018-08-09-18-42-49.bpo-34353.GIOm_8.rst | 2 ++ 3 files changed, 12 insertions(+) create mode 100644 Misc/NEWS.d/next/Core and Builtins/2018-08-09-18-42-49.bpo-34353.GIOm_8.rst diff --git a/Lib/stat.py b/Lib/stat.py index 46837c06dac..a9c678ec03c 100644 --- a/Lib/stat.py +++ b/Lib/stat.py @@ -111,6 +111,7 @@ SF_SNAPSHOT = 0x00200000 # file is a snapshot file _filemode_table = ( ((S_IFLNK, "l"), + (S_IFSOCK, "s"), # Must appear before IFREG and IFDIR as IFSOCK == IFREG | IFDIR (S_IFREG, "-"), (S_IFBLK, "b"), (S_IFDIR, "d"), diff --git a/Lib/test/test_stat.py b/Lib/test/test_stat.py index 73cd901bdbf..38ff2bcf8a6 100644 --- a/Lib/test/test_stat.py +++ b/Lib/test/test_stat.py @@ -1,5 +1,6 @@ import unittest import os +import socket import sys from test.support import TESTFN, import_fresh_module @@ -191,6 +192,14 @@ class TestFilemode: self.assertS_IS("BLK", st_mode) break + @unittest.skipUnless(hasattr(socket, 'AF_UNIX'), 'requires unix socket') + def test_socket(self): + with socket.socket(socket.AF_UNIX) as s: + s.bind(TESTFN) + st_mode, modestr = self.get_mode() + self.assertEqual(modestr[0], 's') + self.assertS_IS("SOCK", st_mode) + def test_module_attributes(self): for key, value in self.stat_struct.items(): modvalue = getattr(self.statmod, key) diff --git a/Misc/NEWS.d/next/Core and Builtins/2018-08-09-18-42-49.bpo-34353.GIOm_8.rst b/Misc/NEWS.d/next/Core and Builtins/2018-08-09-18-42-49.bpo-34353.GIOm_8.rst new file mode 100644 index 00000000000..679914120a4 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2018-08-09-18-42-49.bpo-34353.GIOm_8.rst @@ -0,0 +1,2 @@ +Added the "socket" option in the `stat.filemode()` Python implementation to +match the C implementation.