diff options
author | eregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-05-27 21:55:02 +0000 |
---|---|---|
committer | eregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-05-27 21:55:02 +0000 |
commit | ead40959357817c0937553a45208ef748975e340 (patch) | |
tree | 307b315a455953e97bd86cf2bfdc5d53a04cf581 /spec/rubyspec/library | |
parent | 24db428785c938d401c9e582b5ea2622540222ad (diff) | |
download | ruby-ead40959357817c0937553a45208ef748975e340.tar.gz |
Update to ruby/spec@2795010
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58931 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'spec/rubyspec/library')
-rw-r--r-- | spec/rubyspec/library/cgi/cookie/to_s_spec.rb | 17 | ||||
-rw-r--r-- | spec/rubyspec/library/socket/basicsocket/recv_spec.rb | 10 | ||||
-rw-r--r-- | spec/rubyspec/library/socket/fixtures/classes.rb | 16 | ||||
-rw-r--r-- | spec/rubyspec/library/socket/ipsocket/recvfrom_spec.rb | 14 | ||||
-rw-r--r-- | spec/rubyspec/library/socket/tcpsocket/recv_nonblock_spec.rb | 4 | ||||
-rw-r--r-- | spec/rubyspec/library/socket/tcpsocket/setsockopt_spec.rb | 5 | ||||
-rw-r--r-- | spec/rubyspec/library/socket/tcpsocket/shared/new.rb | 10 | ||||
-rw-r--r-- | spec/rubyspec/library/socket/udpsocket/send_spec.rb | 36 | ||||
-rw-r--r-- | spec/rubyspec/library/socket/udpsocket/write_spec.rb | 21 | ||||
-rw-r--r-- | spec/rubyspec/library/yaml/dump_spec.rb | 6 | ||||
-rw-r--r-- | spec/rubyspec/library/zlib/crc_table_spec.rb | 68 |
11 files changed, 162 insertions, 45 deletions
diff --git a/spec/rubyspec/library/cgi/cookie/to_s_spec.rb b/spec/rubyspec/library/cgi/cookie/to_s_spec.rb index 88aa75c927..806071ba69 100644 --- a/spec/rubyspec/library/cgi/cookie/to_s_spec.rb +++ b/spec/rubyspec/library/cgi/cookie/to_s_spec.rb @@ -23,7 +23,20 @@ describe "CGI::Cookie#to_s" do end it "escapes the self's values" do - cookie = CGI::Cookie.new("test-cookie", " !\"\#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~") - cookie.to_s.should == "test-cookie=+%21%22%23%24%25%26%27%28%29%2A%2B%2C-.%2F0123456789%3A%3B%3C%3D%3E%3F%40ABCDEFGHIJKLMNOPQRSTUVWXYZ%5B%5C%5D%5E_%60abcdefghijklmnopqrstuvwxyz%7B%7C%7D~; path=" + cookie = CGI::Cookie.new("test-cookie", " !\"\#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}") + cookie.to_s.should == "test-cookie=+%21%22%23%24%25%26%27%28%29%2A%2B%2C-.%2F0123456789%3A%3B%3C%3D%3E%3F%40ABCDEFGHIJKLMNOPQRSTUVWXYZ%5B%5C%5D%5E_%60abcdefghijklmnopqrstuvwxyz%7B%7C%7D; path=" end + + ruby_version_is ""..."2.5" do + it "escapes tilde" do + cookie = CGI::Cookie.new("test-cookie", "~").to_s.should == "test-cookie=%7E; path=" + end + end + + ruby_version_is "2.5" do + it "does not escape tilde" do + cookie = CGI::Cookie.new("test-cookie", "~").to_s.should == "test-cookie=~; path=" + end + end + end diff --git a/spec/rubyspec/library/socket/basicsocket/recv_spec.rb b/spec/rubyspec/library/socket/basicsocket/recv_spec.rb index 9f3227dc65..5ac274f6d8 100644 --- a/spec/rubyspec/library/socket/basicsocket/recv_spec.rb +++ b/spec/rubyspec/library/socket/basicsocket/recv_spec.rb @@ -9,8 +9,7 @@ describe "BasicSocket#recv" do end after :each do - @server.closed?.should be_false - @server.close + @server.close unless @server.closed? ScratchPad.clear end @@ -83,8 +82,11 @@ describe "BasicSocket#recv" do client = @server.accept buf = "foo" - client.recv(4, 0, buf) - client.close + begin + client.recv(4, 0, buf) + ensure + client.close + end buf.should == "data" socket.close diff --git a/spec/rubyspec/library/socket/fixtures/classes.rb b/spec/rubyspec/library/socket/fixtures/classes.rb index b772df5a39..6828f9fad5 100644 --- a/spec/rubyspec/library/socket/fixtures/classes.rb +++ b/spec/rubyspec/library/socket/fixtures/classes.rb @@ -72,26 +72,20 @@ module SocketSpecs # TCPServer echo server accepting one connection class SpecTCPServer - attr_accessor :hostname, :port, :logger + attr_reader :hostname, :port - def initialize(host=nil, port=nil, logger=nil) - @hostname = host || SocketSpecs.hostname - @port = port || SocketSpecs.port - @logger = logger + def initialize + @hostname = SocketSpecs.hostname + @server = TCPServer.new @hostname, 0 + @port = @server.addr[1] - start - end - - def start log "SpecTCPServer starting on #{@hostname}:#{@port}" - @server = TCPServer.new @hostname, @port @thread = Thread.new do socket = @server.accept log "SpecTCPServer accepted connection: #{socket}" service socket end - self end def service(socket) diff --git a/spec/rubyspec/library/socket/ipsocket/recvfrom_spec.rb b/spec/rubyspec/library/socket/ipsocket/recvfrom_spec.rb index 565a1795e9..ccf7b1cc51 100644 --- a/spec/rubyspec/library/socket/ipsocket/recvfrom_spec.rb +++ b/spec/rubyspec/library/socket/ipsocket/recvfrom_spec.rb @@ -17,8 +17,11 @@ describe "Socket::IPSocket#recvfrom" do data = nil t = Thread.new do client = @server.accept - data = client.recvfrom(6) - client.close + begin + data = client.recvfrom(6) + ensure + client.close + end end @client.send('hello', 0) @@ -33,8 +36,11 @@ describe "Socket::IPSocket#recvfrom" do data = nil t = Thread.new do client = @server.accept - data = client.recvfrom(3) - client.close + begin + data = client.recvfrom(3) + ensure + client.close + end end @client.send('hello', 0) diff --git a/spec/rubyspec/library/socket/tcpsocket/recv_nonblock_spec.rb b/spec/rubyspec/library/socket/tcpsocket/recv_nonblock_spec.rb index 1d89aa866c..237ff781a3 100644 --- a/spec/rubyspec/library/socket/tcpsocket/recv_nonblock_spec.rb +++ b/spec/rubyspec/library/socket/tcpsocket/recv_nonblock_spec.rb @@ -16,7 +16,7 @@ describe "TCPSocket#recv_nonblock" do end it "returns a String read from the socket" do - @socket = TCPSocket.new @hostname, SocketSpecs.port + @socket = TCPSocket.new @hostname, @server.port @socket.write "TCPSocket#recv_nonblock" # Wait for the server to echo. This spec is testing the return @@ -29,7 +29,7 @@ describe "TCPSocket#recv_nonblock" do ruby_version_is '2.3' do it 'returns :wait_readable in exceptionless mode' do - @socket = TCPSocket.new @hostname, SocketSpecs.port + @socket = TCPSocket.new @hostname, @server.port @socket.recv_nonblock(50, exception: false).should == :wait_readable end end diff --git a/spec/rubyspec/library/socket/tcpsocket/setsockopt_spec.rb b/spec/rubyspec/library/socket/tcpsocket/setsockopt_spec.rb index 8eacc1275d..8a0cb443b5 100644 --- a/spec/rubyspec/library/socket/tcpsocket/setsockopt_spec.rb +++ b/spec/rubyspec/library/socket/tcpsocket/setsockopt_spec.rb @@ -5,10 +5,7 @@ describe "TCPSocket#setsockopt" do before :each do @server = SocketSpecs::SpecTCPServer.new @hostname = @server.hostname - end - - before :each do - @sock = TCPSocket.new @hostname, SocketSpecs.port + @sock = TCPSocket.new @hostname, @server.port end after :each do diff --git a/spec/rubyspec/library/socket/tcpsocket/shared/new.rb b/spec/rubyspec/library/socket/tcpsocket/shared/new.rb index d172456923..14b6e4373b 100644 --- a/spec/rubyspec/library/socket/tcpsocket/shared/new.rb +++ b/spec/rubyspec/library/socket/tcpsocket/shared/new.rb @@ -29,28 +29,28 @@ describe :tcpsocket_new, shared: true do end it "silently ignores 'nil' as the third parameter" do - @socket = TCPSocket.send(@method, @hostname, SocketSpecs.port, nil) + @socket = TCPSocket.send(@method, @hostname, @server.port, nil) @socket.should be_an_instance_of(TCPSocket) end it "connects to a listening server with host and port" do - @socket = TCPSocket.send(@method, @hostname, SocketSpecs.port) + @socket = TCPSocket.send(@method, @hostname, @server.port) @socket.should be_an_instance_of(TCPSocket) end it "connects to a server when passed local_host argument" do - @socket = TCPSocket.send(@method, @hostname, SocketSpecs.port, @hostname) + @socket = TCPSocket.send(@method, @hostname, @server.port, @hostname) @socket.should be_an_instance_of(TCPSocket) end it "connects to a server when passed local_host and local_port arguments" do - @socket = TCPSocket.send(@method, @hostname, SocketSpecs.port, + @socket = TCPSocket.send(@method, @hostname, @server.port, @hostname, SocketSpecs.local_port) @socket.should be_an_instance_of(TCPSocket) end it "has an address once it has connected to a listening server" do - @socket = TCPSocket.send(@method, @hostname, SocketSpecs.port) + @socket = TCPSocket.send(@method, @hostname, @server.port) @socket.should be_an_instance_of(TCPSocket) # TODO: Figure out how to abstract this. You can get AF_INET diff --git a/spec/rubyspec/library/socket/udpsocket/send_spec.rb b/spec/rubyspec/library/socket/udpsocket/send_spec.rb index ad0e6a7f2f..feff020dd7 100644 --- a/spec/rubyspec/library/socket/udpsocket/send_spec.rb +++ b/spec/rubyspec/library/socket/udpsocket/send_spec.rb @@ -6,22 +6,25 @@ describe "UDPSocket.send" do @ready = false @server_thread = Thread.new do @server = UDPSocket.open - @server.bind(nil, SocketSpecs.port) - @ready = true begin - @msg = @server.recvfrom_nonblock(64) - rescue IO::WaitReadable - IO.select([@server]) - retry + @server.bind(nil, SocketSpecs.port) + @ready = true + begin + @msg = @server.recvfrom_nonblock(64) + rescue IO::WaitReadable + IO.select([@server]) + retry + end + ensure + @server.close if !@server.closed? end - @server.close end Thread.pass while @server_thread.status and !@ready end it "sends data in ad hoc mode" do @socket = UDPSocket.open - @socket.send("ad hoc", 0, SocketSpecs.hostname,SocketSpecs.port) + @socket.send("ad hoc", 0, SocketSpecs.hostname, SocketSpecs.port) @socket.close @server_thread.join @@ -33,7 +36,7 @@ describe "UDPSocket.send" do it "sends data in ad hoc mode (with port given as a String)" do @socket = UDPSocket.open - @socket.send("ad hoc", 0, SocketSpecs.hostname,SocketSpecs.str_port) + @socket.send("ad hoc", 0, SocketSpecs.hostname, SocketSpecs.str_port) @socket.close @server_thread.join @@ -45,7 +48,7 @@ describe "UDPSocket.send" do it "sends data in connection mode" do @socket = UDPSocket.open - @socket.connect(SocketSpecs.hostname,SocketSpecs.port) + @socket.connect(SocketSpecs.hostname, SocketSpecs.port) @socket.send("connection-based", 0) @socket.close @server_thread.join @@ -55,4 +58,17 @@ describe "UDPSocket.send" do @msg[1][1].should be_kind_of(Fixnum) @msg[1][3].should == "127.0.0.1" end + + it "raises EMSGSIZE if data is too too big" do + @socket = UDPSocket.open + begin + lambda do + @socket.send('1' * 100_000, 0, SocketSpecs.hostname, SocketSpecs.str_port) + end.should raise_error(Errno::EMSGSIZE) + ensure + @socket.send("ad hoc", 0, SocketSpecs.hostname, SocketSpecs.port) + @socket.close + @server_thread.join + end + end end diff --git a/spec/rubyspec/library/socket/udpsocket/write_spec.rb b/spec/rubyspec/library/socket/udpsocket/write_spec.rb new file mode 100644 index 0000000000..97985ff7ae --- /dev/null +++ b/spec/rubyspec/library/socket/udpsocket/write_spec.rb @@ -0,0 +1,21 @@ +require File.expand_path('../../../../spec_helper', __FILE__) +require File.expand_path('../../fixtures/classes', __FILE__) + +describe "UDPSocket#write" do + it "raises EMSGSIZE if msg is too long" do + begin + host, port = SocketSpecs.hostname, SocketSpecs.port + s1 = UDPSocket.new + s1.bind(host, port) + s2 = UDPSocket.new + s2.connect(host, port) + + lambda do + s2.write('1' * 100_000) + end.should raise_error(Errno::EMSGSIZE) + ensure + s1.close if s1 && !s1.closed? + s2.close if s2 && !s2.closed? + end + end +end diff --git a/spec/rubyspec/library/yaml/dump_spec.rb b/spec/rubyspec/library/yaml/dump_spec.rb index 10b29ced2b..c3613521e0 100644 --- a/spec/rubyspec/library/yaml/dump_spec.rb +++ b/spec/rubyspec/library/yaml/dump_spec.rb @@ -42,6 +42,10 @@ describe "YAML.dump" do it "dumps a File without any state" do file = File.new(__FILE__) - YAML.dump(file).should match_yaml("--- !ruby/object:File {}\n") + begin + YAML.dump(file).should match_yaml("--- !ruby/object:File {}\n") + ensure + file.close + end end end diff --git a/spec/rubyspec/library/zlib/crc_table_spec.rb b/spec/rubyspec/library/zlib/crc_table_spec.rb index de40232d38..22aaa32233 100644 --- a/spec/rubyspec/library/zlib/crc_table_spec.rb +++ b/spec/rubyspec/library/zlib/crc_table_spec.rb @@ -4,8 +4,72 @@ require "zlib" describe "Zlib.crc_table" do it "returns the same value as zlib's get_crc_table()" do - Zlib.crc_table.should == - [0, 1996959894, 3993919788, 2567524794, 124634137, 1886057615, 3915621685, 2657392035, 249268274, 2044508324, 3772115230, 2547177864, 162941995, 2125561021, 3887607047, 2428444049, 498536548, 1789927666, 4089016648, 2227061214, 450548861, 1843258603, 4107580753, 2211677639, 325883990, 1684777152, 4251122042, 2321926636, 335633487, 1661365465, 4195302755, 2366115317, 997073096, 1281953886, 3579855332, 2724688242, 1006888145, 1258607687, 3524101629, 2768942443, 901097722, 1119000684, 3686517206, 2898065728, 853044451, 1172266101, 3705015759, 2882616665, 651767980, 1373503546, 3369554304, 3218104598, 565507253, 1454621731, 3485111705, 3099436303, 671266974, 1594198024, 3322730930, 2970347812, 795835527, 1483230225, 3244367275, 3060149565, 1994146192, 31158534, 2563907772, 4023717930, 1907459465, 112637215, 2680153253, 3904427059, 2013776290, 251722036, 2517215374, 3775830040, 2137656763, 141376813, 2439277719, 3865271297, 1802195444, 476864866, 2238001368, 4066508878, 1812370925, 453092731, 2181625025, 4111451223, 1706088902, 314042704, 2344532202, 4240017532, 1658658271, 366619977, 2362670323, 4224994405, 1303535960, 984961486, 2747007092, 3569037538, 1256170817, 1037604311, 2765210733, 3554079995, 1131014506, 879679996, 2909243462, 3663771856, 1141124467, 855842277, 2852801631, 3708648649, 1342533948, 654459306, 3188396048, 3373015174, 1466479909, 544179635, 3110523913, 3462522015, 1591671054, 702138776, 2966460450, 3352799412, 1504918807, 783551873, 3082640443, 3233442989, 3988292384, 2596254646, 62317068, 1957810842, 3939845945, 2647816111, 81470997, 1943803523, 3814918930, 2489596804, 225274430, 2053790376, 3826175755, 2466906013, 167816743, 2097651377, 4027552580, 2265490386, 503444072, 1762050814, 4150417245, 2154129355, 426522225, 1852507879, 4275313526, 2312317920, 282753626, 1742555852, 4189708143, 2394877945, 397917763, 1622183637, 3604390888, 2714866558, 953729732, 1340076626, 3518719985, 2797360999, 1068828381, 1219638859, 3624741850, 2936675148, 906185462, 1090812512, 3747672003, 2825379669, 829329135, 1181335161, 3412177804, 3160834842, 628085408, 1382605366, 3423369109, 3138078467, 570562233, 1426400815, 3317316542, 2998733608, 733239954, 1555261956, 3268935591, 3050360625, 752459403, 1541320221, 2607071920, 3965973030, 1969922972, 40735498, 2617837225, 3943577151, 1913087877, 83908371, 2512341634, 3803740692, 2075208622, 213261112, 2463272603, 3855990285, 2094854071, 198958881, 2262029012, 4057260610, 1759359992, 534414190, 2176718541, 4139329115, 1873836001, 414664567, 2282248934, 4279200368, 1711684554, 285281116, 2405801727, 4167216745, 1634467795, 376229701, 2685067896, 3608007406, 1308918612, 956543938, 2808555105, 3495958263, 1231636301, 1047427035, 2932959818, 3654703836, 1088359270, 936918000, 2847714899, 3736837829, 1202900863, 817233897, 3183342108, 3401237130, 1404277552, 615818150, 3134207493, 3453421203, 1423857449, 601450431, 3009837614, 3294710456, 1567103746, 711928724, 3020668471, 3272380065, 1510334235, 755167117] + Zlib.crc_table.should == [ + 0, 1996959894, 3993919788, 2567524794, + 124634137, 1886057615, 3915621685, 2657392035, + 249268274, 2044508324, 3772115230, 2547177864, + 162941995, 2125561021, 3887607047, 2428444049, + 498536548, 1789927666, 4089016648, 2227061214, + 450548861, 1843258603, 4107580753, 2211677639, + 325883990, 1684777152, 4251122042, 2321926636, + 335633487, 1661365465, 4195302755, 2366115317, + 997073096, 1281953886, 3579855332, 2724688242, + 1006888145, 1258607687, 3524101629, 2768942443, + 901097722, 1119000684, 3686517206, 2898065728, + 853044451, 1172266101, 3705015759, 2882616665, + 651767980, 1373503546, 3369554304, 3218104598, + 565507253, 1454621731, 3485111705, 3099436303, + 671266974, 1594198024, 3322730930, 2970347812, + 795835527, 1483230225, 3244367275, 3060149565, + 1994146192, 31158534, 2563907772, 4023717930, + 1907459465, 112637215, 2680153253, 3904427059, + 2013776290, 251722036, 2517215374, 3775830040, + 2137656763, 141376813, 2439277719, 3865271297, + 1802195444, 476864866, 2238001368, 4066508878, + 1812370925, 453092731, 2181625025, 4111451223, + 1706088902, 314042704, 2344532202, 4240017532, + 1658658271, 366619977, 2362670323, 4224994405, + 1303535960, 984961486, 2747007092, 3569037538, + 1256170817, 1037604311, 2765210733, 3554079995, + 1131014506, 879679996, 2909243462, 3663771856, + 1141124467, 855842277, 2852801631, 3708648649, + 1342533948, 654459306, 3188396048, 3373015174, + 1466479909, 544179635, 3110523913, 3462522015, + 1591671054, 702138776, 2966460450, 3352799412, + 1504918807, 783551873, 3082640443, 3233442989, + 3988292384, 2596254646, 62317068, 1957810842, + 3939845945, 2647816111, 81470997, 1943803523, + 3814918930, 2489596804, 225274430, 2053790376, + 3826175755, 2466906013, 167816743, 2097651377, + 4027552580, 2265490386, 503444072, 1762050814, + 4150417245, 2154129355, 426522225, 1852507879, + 4275313526, 2312317920, 282753626, 1742555852, + 4189708143, 2394877945, 397917763, 1622183637, + 3604390888, 2714866558, 953729732, 1340076626, + 3518719985, 2797360999, 1068828381, 1219638859, + 3624741850, 2936675148, 906185462, 1090812512, + 3747672003, 2825379669, 829329135, 1181335161, + 3412177804, 3160834842, 628085408, 1382605366, + 3423369109, 3138078467, 570562233, 1426400815, + 3317316542, 2998733608, 733239954, 1555261956, + 3268935591, 3050360625, 752459403, 1541320221, + 2607071920, 3965973030, 1969922972, 40735498, + 2617837225, 3943577151, 1913087877, 83908371, + 2512341634, 3803740692, 2075208622, 213261112, + 2463272603, 3855990285, 2094854071, 198958881, + 2262029012, 4057260610, 1759359992, 534414190, + 2176718541, 4139329115, 1873836001, 414664567, + 2282248934, 4279200368, 1711684554, 285281116, + 2405801727, 4167216745, 1634467795, 376229701, + 2685067896, 3608007406, 1308918612, 956543938, + 2808555105, 3495958263, 1231636301, 1047427035, + 2932959818, 3654703836, 1088359270, 936918000, + 2847714899, 3736837829, 1202900863, 817233897, + 3183342108, 3401237130, 1404277552, 615818150, + 3134207493, 3453421203, 1423857449, 601450431, + 3009837614, 3294710456, 1567103746, 711928724, + 3020668471, 3272380065, 1510334235, 755167117, + ] end end |