Mercurial > vim
changeset 31665:8492bbc9f533 v9.0.1165
patch 9.0.1165: tests using IPv6 sometimes fail
Commit: https://github.com/vim/vim/commit/765d82a657c5e42d5d7c88ae410e53f398c34c43
Author: James McCoy <jamessan@jamessan.com>
Date: Mon Jan 9 16:25:59 2023 +0000
patch 9.0.1165: tests using IPv6 sometimes fail
Problem: Tests using IPv6 sometimes fail.
Solution: Use getaddrinfo() and use try/catch. (James McCoy,
closes #11783)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Mon, 09 Jan 2023 17:30:07 +0100 |
parents | 6a7cadad56e7 |
children | feb8dcde5ff2 |
files | src/testdir/test_channel.py src/testdir/test_channel_lsp.py src/testdir/test_netbeans.py src/testdir/test_netbeans.vim src/version.c |
diffstat | 5 files changed, 46 insertions(+), 25 deletions(-) [+] |
line wrap: on
line diff
--- a/src/testdir/test_channel.py +++ b/src/testdir/test_channel.py @@ -259,7 +259,12 @@ def main(host, port, server_class=Thread print("Wait for it...") time.sleep(0.5) - server = server_class((host, port), ThreadedTCPRequestHandler) + addrs = socket.getaddrinfo(host, port, 0, 0, socket.IPPROTO_TCP) + # Each addr is a (family, type, proto, canonname, sockaddr) tuple + sockaddr = addrs[0][4] + server_class.address_family = addrs[0][0] + + server = server_class(sockaddr[0:2], ThreadedTCPRequestHandler) ip, port = server.server_address[0:2] # Start a thread with the server. That thread will then start a new thread
--- a/src/testdir/test_channel_lsp.py +++ b/src/testdir/test_channel_lsp.py @@ -306,7 +306,12 @@ def main(host, port, server_class=Thread writePortInFile(port) time.sleep(0.5) - server = server_class((host, port), ThreadedTCPRequestHandler) + addrs = socket.getaddrinfo(host, port, 0, 0, socket.IPPROTO_TCP) + # Each addr is a (family, type, proto, canonname, sockaddr) tuple + sockaddr = addrs[0][4] + server_class.address_family = addrs[0][0] + + server = server_class(sockaddr[0:2], ThreadedTCPRequestHandler) ip, port = server.server_address[0:2] # Start a thread with the server. That thread will then start a new thread
--- a/src/testdir/test_netbeans.py +++ b/src/testdir/test_netbeans.py @@ -184,8 +184,13 @@ def writePortInFile(port): if __name__ == "__main__": HOST, PORT = "localhost", 0 - server = ThreadedTCPServer((HOST, PORT), ThreadedTCPRequestHandler) - ip, port = server.server_address + addrs = socket.getaddrinfo(HOST, PORT, 0, 0, socket.IPPROTO_TCP) + # Each addr is a (family, type, proto, canonname, sockaddr) tuple + sockaddr = addrs[0][4] + ThreadedTCPServer.address_family = addrs[0][0] + + server = ThreadedTCPServer(sockaddr[0:2], ThreadedTCPRequestHandler) + ip, port = server.server_address[0:2] # Start a thread with the server. That thread will then start a new thread # for each connection. @@ -199,7 +204,7 @@ if __name__ == "__main__": # Main thread terminates, but the server continues running # until server.shutdown() is called. try: - while server_thread.isAlive(): + while server_thread.is_alive(): server_thread.join(1) except (KeyboardInterrupt, SystemExit): server.shutdown()
--- a/src/testdir/test_netbeans.vim +++ b/src/testdir/test_netbeans.vim @@ -887,28 +887,32 @@ func Nb_quit_with_conn(port) return filter(l, 'v:val !~ "^0:geometry="') endfunc - " Establish the connection with the netbeans server - exe 'nbstart :localhost:' .. g:port .. ':star' - call assert_true(has("netbeans_enabled")) - call WaitFor('len(ReadXnetbeans()) >= 3') - let l = ReadXnetbeans() - call assert_equal(['AUTH star', - \ '0:version=0 "2.5"', - \ '0:startupDone=0'], l[-3:]) + try + " Establish the connection with the netbeans server + exe 'nbstart :localhost:' .. g:port .. ':star' + call assert_true(has("netbeans_enabled")) + call WaitFor('len(ReadXnetbeans()) >= 3') + let l = ReadXnetbeans() + call assert_equal(['AUTH star', + \ '0:version=0 "2.5"', + \ '0:startupDone=0'], l[-3:]) - " Open the command buffer to communicate with the server - split Xcmdbuf - call WaitFor('len(ReadXnetbeans()) >= 6') - let l = ReadXnetbeans() - call assert_equal('0:fileOpened=0 "Xcmdbuf" T F', - \ substitute(l[-3], '".*/', '"', '')) - call assert_equal('send: 1:putBufferNumber!15 "Xcmdbuf"', - \ substitute(l[-2], '".*/', '"', '')) - call assert_equal('1:startDocumentListen!16', l[-1]) - sleep 1m + " Open the command buffer to communicate with the server + split Xcmdbuf + call WaitFor('len(ReadXnetbeans()) >= 6') + let l = ReadXnetbeans() + call assert_equal('0:fileOpened=0 "Xcmdbuf" T F', + \ substitute(l[-3], '".*/', '"', '')) + call assert_equal('send: 1:putBufferNumber!15 "Xcmdbuf"', + \ substitute(l[-2], '".*/', '"', '')) + call assert_equal('1:startDocumentListen!16', l[-1]) + sleep 1m - quit! - quit! + quit! + quit! + finally + qall! + endtry END if RunVim(['let g:port = ' .. a:port], after, '') call WaitFor('len(ReadXnetbeans()) >= 9')