From 2bdce358e6ac0e1a17565419f07dec6ed0e0f388 Mon Sep 17 00:00:00 2001 From: eregon Date: Thu, 15 Jun 2017 12:48:52 +0000 Subject: Update to ruby/spec@cd1b911 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59093 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- spec/rubyspec/library/socket/tcpserver/new_spec.rb | 35 +++++++++++----------- 1 file changed, 17 insertions(+), 18 deletions(-) (limited to 'spec/rubyspec/library/socket/tcpserver/new_spec.rb') diff --git a/spec/rubyspec/library/socket/tcpserver/new_spec.rb b/spec/rubyspec/library/socket/tcpserver/new_spec.rb index 4b7f53a397..ddbe96d89d 100644 --- a/spec/rubyspec/library/socket/tcpserver/new_spec.rb +++ b/spec/rubyspec/library/socket/tcpserver/new_spec.rb @@ -7,7 +7,7 @@ describe "TCPServer.new" do end it "binds to a host and a port" do - @server = TCPServer.new('127.0.0.1', SocketSpecs.port) + @server = TCPServer.new('127.0.0.1', 0) addr = @server.addr addr[0].should == 'AF_INET' addr[1].should be_kind_of(Fixnum) @@ -18,53 +18,52 @@ describe "TCPServer.new" do end it "binds to localhost and a port with either IPv4 or IPv6" do - @server = TCPServer.new(SocketSpecs.hostname, SocketSpecs.port) + @server = TCPServer.new(SocketSpecs.hostname, 0) addr = @server.addr + addr[1].should be_kind_of(Fixnum) if addr[0] == 'AF_INET' - addr[1].should == SocketSpecs.port addr[2].should =~ /^#{SocketSpecs.hostname}\b/ addr[3].should == '127.0.0.1' else - addr[1].should == SocketSpecs.port addr[2].should =~ /^#{SocketSpecs.hostnamev6}\b/ addr[3].should == '::1' end end it "binds to INADDR_ANY if the hostname is empty" do - @server = TCPServer.new('', SocketSpecs.port) + @server = TCPServer.new('', 0) addr = @server.addr addr[0].should == 'AF_INET' - addr[1].should == SocketSpecs.port + addr[1].should be_kind_of(Fixnum) addr[2].should == '0.0.0.0' addr[3].should == '0.0.0.0' end it "binds to INADDR_ANY if the hostname is empty and the port is a string" do - @server = TCPServer.new('', SocketSpecs.port.to_s) + @server = TCPServer.new('', 0) addr = @server.addr addr[0].should == 'AF_INET' - addr[1].should == SocketSpecs.port + addr[1].should be_kind_of(Fixnum) addr[2].should == '0.0.0.0' addr[3].should == '0.0.0.0' end it "coerces port to string, then determines port from that number or service name" do - t = Object.new - lambda { TCPServer.new(SocketSpecs.hostname, t) }.should raise_error(TypeError) + lambda { TCPServer.new(SocketSpecs.hostname, Object.new) }.should raise_error(TypeError) - def t.to_str; SocketSpecs.port.to_s; end + port = Object.new + port.should_receive(:to_str).and_return("0") - @server = TCPServer.new(SocketSpecs.hostname, t) + @server = TCPServer.new(SocketSpecs.hostname, port) addr = @server.addr - addr[1].should == SocketSpecs.port + addr[1].should be_kind_of(Fixnum) # TODO: This should also accept strings like 'https', but I don't know how to # pick such a service port that will be able to reliably bind... end it "raises Errno::EADDRNOTAVAIL when the adress is unknown" do - lambda { TCPServer.new("1.2.3.4", 4000) }.should raise_error(Errno::EADDRNOTAVAIL) + lambda { TCPServer.new("1.2.3.4", 0) }.should raise_error(Errno::EADDRNOTAVAIL) end # There is no way to make this fail-proof on all machines, because @@ -73,15 +72,15 @@ describe "TCPServer.new" do quarantine! do it "raises a SocketError when the host is unknown" do lambda { - TCPServer.new("--notavalidname", 4000) + TCPServer.new("--notavalidname", 0) }.should raise_error(SocketError) end end it "raises Errno::EADDRINUSE when address is already in use" do + @server = TCPServer.new('127.0.0.1', 0) lambda { - @server = TCPServer.new('127.0.0.1', SocketSpecs.port) - @server = TCPServer.new('127.0.0.1', SocketSpecs.port) + @server = TCPServer.new('127.0.0.1', @server.addr[1]) }.should raise_error(Errno::EADDRINUSE) end @@ -89,7 +88,7 @@ describe "TCPServer.new" do # A known bug in AIX. getsockopt(2) does not properly set # the fifth argument for SO_REUSEADDR. it "sets SO_REUSEADDR on the resulting server" do - @server = TCPServer.new('127.0.0.1', SocketSpecs.port) + @server = TCPServer.new('127.0.0.1', 0) @server.getsockopt(:SOCKET, :REUSEADDR).data.should_not == "\x00\x00\x00\x00" @server.getsockopt(:SOCKET, :REUSEADDR).int.should_not == 0 end -- cgit v1.2.3