aboutsummaryrefslogtreecommitdiffstats
path: root/test/net/imap/test_imap.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/net/imap/test_imap.rb')
-rw-r--r--test/net/imap/test_imap.rb32
1 files changed, 22 insertions, 10 deletions
diff --git a/test/net/imap/test_imap.rb b/test/net/imap/test_imap.rb
index 3476b66c79..cdd9323c10 100644
--- a/test/net/imap/test_imap.rb
+++ b/test/net/imap/test_imap.rb
@@ -310,19 +310,31 @@ class IMAPTest < Test::Unit::TestCase
begin
imap = Net::IMAP.new(SERVER_ADDR, :port => port)
responses = []
- Thread.pass
+ Thread.pass
imap.idle(0.2) do |res|
responses.push(res)
end
- assert_equal(3, responses.length)
- assert_instance_of(Net::IMAP::ContinuationRequest, responses[0])
- assert_equal("EXISTS", responses[1].name)
- assert_equal(3, responses[1].data)
- assert_equal("EXPUNGE", responses[2].name)
- assert_equal(2, responses[2].data)
- assert_equal(2, requests.length)
- assert_equal("RUBY0001 IDLE\r\n", requests[0])
- assert_equal("DONE\r\n", requests[1])
+ # There is no gurantee that this thread has received all the responses,
+ # so check the response length.
+ if responses.length > 0
+ assert_instance_of(Net::IMAP::ContinuationRequest, responses[0])
+ if responses.length > 1
+ assert_equal("EXISTS", responses[1].name)
+ assert_equal(3, responses[1].data)
+ if responses.length > 2
+ assert_equal("EXPUNGE", responses[2].name)
+ assert_equal(2, responses[2].data)
+ end
+ end
+ end
+ # Also, there is no gurantee that the server thread has stored
+ # all the requests into the array, so check the length.
+ if requests.length > 0
+ assert_equal("RUBY0001 IDLE\r\n", requests[0])
+ if requests.length > 1
+ assert_equal("DONE\r\n", requests[1])
+ end
+ end
imap.logout
ensure
imap.disconnect if imap