From bb315a0be77fe792863d9eae70694997ca994e13 Mon Sep 17 00:00:00 2001 From: Kazuki Yamaguchi Date: Tue, 6 Sep 2016 21:53:15 +0900 Subject: test/test_pair: extract IO-like methods tests from test_ssl.rb Move a test case of SSLSocket#gets to test_pair.rb, and remove test cases from test_ssl.rb which duplicate the tests in test_pair.rb --- test/test_pair.rb | 16 ++++++- test/test_ssl.rb | 126 +++++++++++++----------------------------------------- 2 files changed, 45 insertions(+), 97 deletions(-) diff --git a/test/test_pair.rb b/test/test_pair.rb index 73d3e8d4..7d962c38 100644 --- a/test/test_pair.rb +++ b/test/test_pair.rb @@ -113,11 +113,25 @@ module OpenSSL::TestPairM } end + def test_gets + ssl_pair {|s1, s2| + s1 << "abc\n\n$def123ghi" + s1.close + ret = s2.gets + assert_equal Encoding::BINARY, ret.encoding + assert_equal "abc\n", ret + assert_equal "\n$", s2.gets("$") + assert_equal "def123", s2.gets(/\d+/) + assert_equal "ghi", s2.gets + assert_equal nil, s2.gets + } + end + def test_gets_eof_limit ssl_pair {|s1, s2| s1.write("hello") s1.close # trigger EOF - assert_match "hello", s2.gets("\n", 6), "[ruby-core:70149] [Bug #11140]" + assert_match "hello", s2.gets("\n", 6), "[ruby-core:70149] [Bug #11400]" } end diff --git a/test/test_ssl.rb b/test/test_ssl.rb index 8e31b53f..cf704e24 100644 --- a/test/test_ssl.rb +++ b/test/test_ssl.rb @@ -52,110 +52,44 @@ class OpenSSL::TestSSL < OpenSSL::SSLTestCase } end - def test_ssl_gets + def test_sysread_and_syswrite start_server { |server, port| server_connect(port) { |ssl| - ssl.write "abc\n" - IO.select [ssl] - - line = ssl.gets - - assert_equal "abc\n", line - assert_equal Encoding::BINARY, line.encoding - } - } - end - - def test_ssl_read_nonblock - start_server { |server, port| - server_connect(port) { |ssl| - assert_raise(IO::WaitReadable) { ssl.read_nonblock(100) } - ssl.write("abc\n") - IO.select [ssl] - assert_equal('a', ssl.read_nonblock(1)) - assert_equal("bc\n", ssl.read_nonblock(100)) - assert_raise(IO::WaitReadable) { ssl.read_nonblock(100) } + str = "x" * 100 + "\n" + ssl.syswrite(str) + newstr = ssl.sysread(str.bytesize) + assert_equal(str, newstr) + + buf = "" + ssl.syswrite(str) + assert_same buf, ssl.sysread(str.size, buf) + assert_equal(str, newstr) } } end - def test_ssl_sysread_blocking_error + def test_sync_close start_server { |server, port| - server_connect(port) { |ssl| - ssl.write("abc\n") - assert_raise(TypeError) { ssl.sysread(4, exception: false) } - buf = '' - assert_raise(ArgumentError) { ssl.sysread(4, buf, exception: false) } - assert_equal '', buf - assert_equal buf.object_id, ssl.sysread(4, buf).object_id - assert_equal "abc\n", buf - } - } - end - - def test_connect_and_close - start_server { |server, port| - sock = TCPSocket.new("127.0.0.1", port) - ssl = OpenSSL::SSL::SSLSocket.new(sock) - assert(ssl.connect) - ssl.close - assert(!sock.closed?) - sock.close - - sock = TCPSocket.new("127.0.0.1", port) - ssl = OpenSSL::SSL::SSLSocket.new(sock) - ssl.sync_close = true # !! - assert(ssl.connect) - ssl.close - assert(sock.closed?) - } - end - - def test_read_and_write - start_server { |server, port| - server_connect(port) { |ssl| - # syswrite and sysread - ITERATIONS.times{|i| - str = "x" * 100 + "\n" - ssl.syswrite(str) - newstr = '' - newstr << ssl.sysread(str.size - newstr.size) until newstr.size == str.size - assert_equal(str, newstr) - - str = "x" * i * 100 + "\n" - buf = "" - ssl.syswrite(str) - assert_equal(buf.object_id, ssl.sysread(str.size, buf).object_id) - newstr = buf - newstr << ssl.sysread(str.size - newstr.size) until newstr.size == str.size - assert_equal(str, newstr) - } - - # puts and gets - ITERATIONS.times{ - str = "x" * 100 + "\n" - ssl.puts(str) - assert_equal(str, ssl.gets) - - str = "x" * 100 - ssl.puts(str) - assert_equal(str, ssl.gets("\n", 100)) - assert_equal("\n", ssl.gets) - } + begin + sock = TCPSocket.new("127.0.0.1", port) + ssl = OpenSSL::SSL::SSLSocket.new(sock) + ssl.connect + ssl.close + assert_not_predicate sock, :closed? + ensure + sock&.close + end - # read and write - ITERATIONS.times{|i| - str = "x" * 100 + "\n" - ssl.write(str) - assert_equal(str, ssl.read(str.size)) - - str = "x" * i * 100 + "\n" - buf = "" - ssl.write(str) - assert_equal(buf.object_id, ssl.read(str.size, buf).object_id) - assert_equal(str, buf) - } - } + begin + sock = TCPSocket.new("127.0.0.1", port) + ssl = OpenSSL::SSL::SSLSocket.new(sock) + ssl.sync_close = true # !! + ssl.connect + ssl.close + assert_predicate sock, :closed? + ensure + sock&.close + end } end -- cgit v1.2.3