patch 8.2.4690: channel tests fail on MS-Windows
Problem: Channel tests fail on MS-Windows.
Solution: Check if the AF_UNIX attribute exists. (closes #10083)
diff --git a/src/testdir/test_channel.py b/src/testdir/test_channel.py
index b0c3140..3ef0fde 100644
--- a/src/testdir/test_channel.py
+++ b/src/testdir/test_channel.py
@@ -19,12 +19,7 @@
# Python 2
import SocketServer as socketserver
-class ThreadedTCPRequestHandler(socketserver.BaseRequestHandler):
-
- def setup(self):
- if self.server.address_family != socket.AF_UNIX:
- self.request.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
-
+class TestingRequestHandler(socketserver.BaseRequestHandler):
def handle(self):
print("=== socket opened ===")
while True:
@@ -240,6 +235,10 @@
elif decoded[0] < 0:
last_eval = decoded
+class ThreadedTCPRequestHandler(TestingRequestHandler):
+ def setup(self):
+ self.request.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
+
class ThreadedTCPServer(socketserver.ThreadingMixIn, socketserver.TCPServer):
pass
diff --git a/src/testdir/test_channel_unix.py b/src/testdir/test_channel_unix.py
index 4836e26..85e780a 100644
--- a/src/testdir/test_channel_unix.py
+++ b/src/testdir/test_channel_unix.py
@@ -6,7 +6,7 @@
# This requires Python 2.6 or later.
from __future__ import print_function
-from test_channel import ThreadedTCPServer, ThreadedTCPRequestHandler, \
+from test_channel import ThreadedTCPServer, TestingRequestHandler, \
writePortInFile
import socket
import threading
@@ -18,11 +18,17 @@
# Python 2
FileNotFoundError = (IOError, OSError)
+if not hasattr(socket, "AF_UNIX"):
+ raise NotImplementedError("Unix sockets are not supported on this platform")
+
class ThreadedUnixServer(ThreadedTCPServer):
address_family = socket.AF_UNIX
+class ThreadedUnixRequestHandler(TestingRequestHandler):
+ pass
+
def main(path):
- server = ThreadedUnixServer(path, ThreadedTCPRequestHandler)
+ server = ThreadedUnixServer(path, ThreadedUnixRequestHandler)
# Start a thread with the server. That thread will then start a new thread
# for each connection.