annotate src/testdir/test_channel_unix.py @ 36549:07e948b0d33b draft default tip

runtime(doc): mention option-backslash at :h CompilerSet Commit: https://github.com/vim/vim/commit/dbf231a4b7fba235fa9ccc8798b37c0b4a4943ae Author: Christian Brabandt <cb@256bit.org> Date: Wed Nov 13 20:28:43 2024 +0100 runtime(doc): mention option-backslash at :h CompilerSet Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Wed, 13 Nov 2024 20:45:02 +0100
parents cdd13ed3e5cb
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
28317
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1 #!/usr/bin/env python
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
2 #
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
3 # Server that will accept connections from a Vim channel.
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
4 # Used by test_channel.vim.
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
5 #
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
6 # This requires Python 2.6 or later.
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
7
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
8 from __future__ import print_function
28329
cdd13ed3e5cb patch 8.2.4690: channel tests fail on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 28317
diff changeset
9 from test_channel import ThreadedTCPServer, TestingRequestHandler, \
28317
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
10 writePortInFile
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
11 import socket
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
12 import threading
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
13 import os
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
14
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
15 try:
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
16 FileNotFoundError
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
17 except NameError:
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
18 # Python 2
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
19 FileNotFoundError = (IOError, OSError)
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
20
28329
cdd13ed3e5cb patch 8.2.4690: channel tests fail on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 28317
diff changeset
21 if not hasattr(socket, "AF_UNIX"):
cdd13ed3e5cb patch 8.2.4690: channel tests fail on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 28317
diff changeset
22 raise NotImplementedError("Unix sockets are not supported on this platform")
cdd13ed3e5cb patch 8.2.4690: channel tests fail on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 28317
diff changeset
23
28317
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
24 class ThreadedUnixServer(ThreadedTCPServer):
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
25 address_family = socket.AF_UNIX
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
26
28329
cdd13ed3e5cb patch 8.2.4690: channel tests fail on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 28317
diff changeset
27 class ThreadedUnixRequestHandler(TestingRequestHandler):
cdd13ed3e5cb patch 8.2.4690: channel tests fail on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 28317
diff changeset
28 pass
cdd13ed3e5cb patch 8.2.4690: channel tests fail on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 28317
diff changeset
29
28317
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
30 def main(path):
28329
cdd13ed3e5cb patch 8.2.4690: channel tests fail on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 28317
diff changeset
31 server = ThreadedUnixServer(path, ThreadedUnixRequestHandler)
28317
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
32
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
33 # Start a thread with the server. That thread will then start a new thread
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
34 # for each connection.
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
35 server_thread = threading.Thread(target=server.serve_forever)
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
36 server_thread.start()
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
37
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
38 # Signal the test harness we're ready, the port value has no meaning.
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
39 writePortInFile(1234)
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
40
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
41 print("Listening on {0}".format(server.server_address))
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
42
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
43 # Main thread terminates, but the server continues running
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
44 # until server.shutdown() is called.
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
45 try:
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
46 while server_thread.is_alive():
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
47 server_thread.join(1)
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
48 except (KeyboardInterrupt, SystemExit):
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
49 server.shutdown()
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
50
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
51 if __name__ == "__main__":
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
52 try:
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
53 os.remove("Xtestsocket")
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
54 except FileNotFoundError:
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
55 pass
d32dc906dd2c patch 8.2.4684: cannot open a channel on a Unix domain socket
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
56 main("Xtestsocket")