[ruby/openssl] Add SSLSocket#readbyte
Companion to getbyte but raise EOFError Similar to https://github.com/ruby/openssl/pull/438 https://github.com/ruby/openssl/commit/c40f70711a
This commit is contained in:
parent
93b19d56de
commit
4d4ac00123
@ -107,6 +107,12 @@ module OpenSSL::Buffering
|
||||
read(1)&.ord
|
||||
end
|
||||
|
||||
# Get the next 8bit byte. Raises EOFError on EOF
|
||||
def readbyte
|
||||
raise EOFError if eof?
|
||||
getbyte
|
||||
end
|
||||
|
||||
##
|
||||
# Reads _size_ bytes from the stream. If _buf_ is provided it must
|
||||
# reference a string which will receive the data.
|
||||
|
@ -101,6 +101,27 @@ module OpenSSL::TestPairM
|
||||
}
|
||||
end
|
||||
|
||||
def test_getbyte
|
||||
ssl_pair {|s1, s2|
|
||||
s1 << "a"
|
||||
assert_equal(97, s2.getbyte)
|
||||
}
|
||||
end
|
||||
|
||||
def test_readbyte
|
||||
ssl_pair {|s1, s2|
|
||||
s1 << "b"
|
||||
assert_equal(98, s2.readbyte)
|
||||
}
|
||||
end
|
||||
|
||||
def test_readbyte_eof
|
||||
ssl_pair {|s1, s2|
|
||||
s2.close
|
||||
assert_raise(EOFError) { s1.readbyte }
|
||||
}
|
||||
end
|
||||
|
||||
def test_gets
|
||||
ssl_pair {|s1, s2|
|
||||
s1 << "abc\n\n$def123ghi"
|
||||
|
@ -248,6 +248,19 @@ class OpenSSL::TestSSL < OpenSSL::SSLTestCase
|
||||
}
|
||||
end
|
||||
|
||||
def test_readbyte
|
||||
start_server { |port|
|
||||
server_connect(port) { |ssl|
|
||||
str = +("x" * 100 + "\n")
|
||||
ssl.syswrite(str)
|
||||
newstr = str.bytesize.times.map { |i|
|
||||
ssl.readbyte
|
||||
}.pack("C*")
|
||||
assert_equal(str, newstr)
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
def test_sync_close
|
||||
start_server do |port|
|
||||
begin
|
||||
|
@ -8,6 +8,10 @@ module OpenSSL::TestEOF
|
||||
open_file("") {|f| assert_nil f.getbyte }
|
||||
end
|
||||
|
||||
def test_readbyte_eof
|
||||
open_file("") {|f| assert_raise(EOFError) { f.readbyte } }
|
||||
end
|
||||
|
||||
def test_eof_0
|
||||
open_file("") {|f|
|
||||
assert_equal("", f.read(0))
|
||||
|
Loading…
x
Reference in New Issue
Block a user