]> granicus.if.org Git - python/commitdiff
bpo-36341: Fix tests calling bind() on AF_UNIX sockets (GH-12399)
authorxdegaye <xdegaye@gmail.com>
Fri, 3 May 2019 15:09:17 +0000 (17:09 +0200)
committerMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Fri, 3 May 2019 15:09:17 +0000 (08:09 -0700)
Those tests may fail with PermissionError.

https://bugs.python.org/issue36341

Lib/test/test_asyncio/test_server.py
Lib/test/test_socket.py
Lib/test/test_stat.py
Misc/NEWS.d/next/Tests/2019-03-18-10-47-45.bpo-36341.UXlY0P.rst [new file with mode: 0644]

index 6de058a1e9bff5cadf31554557609c4f61d6d523..ab7f3debbc152e347ef77063fde4d3cc55e52400 100644 (file)
@@ -73,7 +73,7 @@ class SelectorStartServerTests(BaseStartServer, unittest.TestCase):
     def new_loop(self):
         return asyncio.SelectorEventLoop()
 
-    @unittest.skipUnless(hasattr(socket, 'AF_UNIX'), 'no Unix sockets')
+    @support.skip_unless_bind_unix_socket
     def test_start_unix_server_1(self):
         HELLO_MSG = b'1' * 1024 * 5 + b'\n'
         started = threading.Event()
index 815f9adce6772a3b021b54569975086e0f8e2f41..0094cecb79cca6b58e65a2fad9d9a6214e245222 100644 (file)
@@ -1796,8 +1796,13 @@ class GeneralModuleTests(unittest.TestCase):
             self.addCleanup(shutil.rmtree, tmpdir)
             s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
             self.addCleanup(s.close)
-            s.bind(os.path.join(tmpdir, 'socket'))
-            self._test_socket_fileno(s, socket.AF_UNIX, socket.SOCK_STREAM)
+            try:
+                s.bind(os.path.join(tmpdir, 'socket'))
+            except PermissionError:
+                pass
+            else:
+                self._test_socket_fileno(s, socket.AF_UNIX,
+                                         socket.SOCK_STREAM)
 
     def test_socket_fileno_rejects_float(self):
         with self.assertRaisesRegex(TypeError, "integer argument expected"):
index 38ff2bcf8a6b646bbe05e26855c35ef6b2b6abf1..17443bed0738b59e7724860f94d47b5d6f90ca01 100644 (file)
@@ -2,7 +2,8 @@ import unittest
 import os
 import socket
 import sys
-from test.support import TESTFN, import_fresh_module
+from test.support import (TESTFN, import_fresh_module,
+                          skip_unless_bind_unix_socket)
 
 c_stat = import_fresh_module('stat', fresh=['_stat'])
 py_stat = import_fresh_module('stat', blocked=['_stat'])
@@ -192,7 +193,7 @@ class TestFilemode:
                 self.assertS_IS("BLK", st_mode)
                 break
 
-    @unittest.skipUnless(hasattr(socket, 'AF_UNIX'), 'requires unix socket')
+    @skip_unless_bind_unix_socket
     def test_socket(self):
         with socket.socket(socket.AF_UNIX) as s:
             s.bind(TESTFN)
diff --git a/Misc/NEWS.d/next/Tests/2019-03-18-10-47-45.bpo-36341.UXlY0P.rst b/Misc/NEWS.d/next/Tests/2019-03-18-10-47-45.bpo-36341.UXlY0P.rst
new file mode 100644 (file)
index 0000000..b76447d
--- /dev/null
@@ -0,0 +1,2 @@
+Fix tests that may fail with PermissionError upon calling bind() on AF_UNIX
+sockets.