diff --git a/spec/std/socket/socket_spec.cr b/spec/std/socket/socket_spec.cr index 081e06530bbb..0f832f64b22a 100644 --- a/spec/std/socket/socket_spec.cr +++ b/spec/std/socket/socket_spec.cr @@ -14,17 +14,32 @@ describe Socket do end it ".accept" do + client_done = Channel(Nil).new server = Socket.new(Socket::Family::INET, Socket::Type::STREAM, Socket::Protocol::TCP) - port = unused_local_port - server.bind("0.0.0.0", port) - server.listen - spawn { TCPSocket.new("127.0.0.1", port).close } + begin + port = unused_local_port + server.bind("0.0.0.0", port) + server.listen + + spawn do + TCPSocket.new("127.0.0.1", port).close + ensure + client_done.send nil + end - client = server.accept - client.family.should eq(Socket::Family::INET) - client.type.should eq(Socket::Type::STREAM) - client.protocol.should eq(Socket::Protocol::TCP) + client = server.accept + begin + client.family.should eq(Socket::Family::INET) + client.type.should eq(Socket::Type::STREAM) + client.protocol.should eq(Socket::Protocol::TCP) + ensure + client.close + end + ensure + server.close + client_done.receive + end end it "sends messages" do diff --git a/spec/std/socket/tcp_server_spec.cr b/spec/std/socket/tcp_server_spec.cr index 34915db72fc3..b4ec80929922 100644 --- a/spec/std/socket/tcp_server_spec.cr +++ b/spec/std/socket/tcp_server_spec.cr @@ -28,8 +28,12 @@ describe TCPServer do it "binds to port 0" do server = TCPServer.new(address, 0) - server.local_address.address.should eq(address) - server.local_address.port.should be > 0 + begin + server.local_address.address.should eq(address) + server.local_address.port.should be > 0 + ensure + server.close + end end it "raises when port is negative" do @@ -74,7 +78,8 @@ describe TCPServer do describe "address resolution" do it "binds to localhost" do - TCPServer.new("localhost", unused_local_port) + server = TCPServer.new("localhost", unused_local_port) + server.close end it "raises when host doesn't exist" do