Skip to content

Commit 2179cb4

Browse files
committed
✅ Split ResponseReader test for limited io.gets
TruffleRuby handles `io.gets(CRLF, limit)` differently when the limit cuts in the middle of the terminator. It's helpful behavior, but it's different enough to break the tests.
1 parent f117dbd commit 2179cb4

File tree

1 file changed

+23
-3
lines changed

1 file changed

+23
-3
lines changed

test/net/imap/test_response_reader.rb

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,33 @@ def literal(str) = "{#{str.bytesize}}\r\n#{str}"
5555
client.config.max_response_size = 10
5656
under = "+ 3456\r\n"
5757
exact = "+ 345678\r\n"
58-
over = "+ 3456789\r\n"
59-
io = StringIO.new([under, exact, over].join)
58+
very_over = "+ 3456789 #{?a * (16<<10)}}\r\n"
59+
slightly_over = "+ 34567890\r\n" # CRLF after the limit
60+
io = StringIO.new([under, exact, very_over, slightly_over].join)
6061
rcvr = Net::IMAP::ResponseReader.new(client, io)
6162
assert_equal under, rcvr.read_response_buffer.to_str
6263
assert_equal exact, rcvr.read_response_buffer.to_str
6364
assert_raise Net::IMAP::ResponseTooLargeError do
64-
rcvr.read_response_buffer
65+
result = rcvr.read_response_buffer
66+
flunk "Got result: %p" % [result]
67+
end
68+
io = StringIO.new(slightly_over)
69+
rcvr = Net::IMAP::ResponseReader.new(client, io)
70+
assert_raise Net::IMAP::ResponseTooLargeError do
71+
result = rcvr.read_response_buffer
72+
flunk "Got result: %p" % [result]
73+
end
74+
end
75+
76+
test "#read_response_buffer max_response_size straddling CRLF" do
77+
barely_over = "+ 3456789\r\n" # CRLF straddles the boundary
78+
client = FakeClient.new
79+
client.config.max_response_size = 10
80+
io = StringIO.new(barely_over)
81+
rcvr = Net::IMAP::ResponseReader.new(client, io)
82+
assert_raise Net::IMAP::ResponseTooLargeError do
83+
result = rcvr.read_response_buffer
84+
flunk "Got result: %p" % [result]
6585
end
6686
end
6787

0 commit comments

Comments
 (0)