From 14945c6f30189dbef4237471be242d21b4ba85f1 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Fri, 25 Mar 2022 12:03:59 -0500 Subject: [PATCH] Try to close server during shutdown If the server never accepts a client, joining on this thread will hang the spec and never be terminated because it happens in an "after" section. Instead, we try to close the server if it has not already been closed, so it will terminate gracefully. See ruby/spec#925 --- spec/ruby/library/socket/fixtures/classes.rb | 4 ++-- spec/ruby/library/socket/udpsocket/send_spec.rb | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/spec/ruby/library/socket/fixtures/classes.rb b/spec/ruby/library/socket/fixtures/classes.rb index 4a590502ca1..dc4cadf02f8 100644 --- a/spec/ruby/library/socket/fixtures/classes.rb +++ b/spec/ruby/library/socket/fixtures/classes.rb @@ -118,14 +118,14 @@ def service(socket) socket.send data, 0 ensure - socket.close + socket.close unless socket.closed? end end def shutdown log "SpecTCPServer shutting down" + @server.close unless @server.closed? @thread.join - @server.close end def log(message) diff --git a/spec/ruby/library/socket/udpsocket/send_spec.rb b/spec/ruby/library/socket/udpsocket/send_spec.rb index 5d5de684afb..f1196378ade 100644 --- a/spec/ruby/library/socket/udpsocket/send_spec.rb +++ b/spec/ruby/library/socket/udpsocket/send_spec.rb @@ -16,13 +16,14 @@ retry end ensure - @server.close if !@server.closed? + @server.close unless @server.closed? end end Thread.pass while @server_thread.status and !@port end after :each do + @server.close unless @server.closed @server_thread.join end