1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* test/net/imap/test_imap.rb (test_idle_timeout): Because of the

timeout specified in "imap.idle(0.2)", there is no gurantee that
  the server thread has done all the work before the client thread
  performs the assertions. It depends on the thread scheduling.
  Add checks to avoid false positives (on AIX, particularly).

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54025 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
odaira 2016-03-07 23:22:49 +00:00
parent b8f987b36c
commit a5be0fb080
2 changed files with 30 additions and 10 deletions

View file

@ -1,3 +1,11 @@
Tue Mar 8 08:13:01 2016 Rei Odaira <Rei.Odaira@gmail.com>
* test/net/imap/test_imap.rb (test_idle_timeout): Because of the
timeout specified in "imap.idle(0.2)", there is no gurantee that
the server thread has done all the work before the client thread
performs the assertions. It depends on the thread scheduling.
Add checks to avoid false positives (on AIX, particularly).
Tue Mar 8 00:42:22 2016 NAKAMURA Usaku <usa@ruby-lang.org>
* ruby.c (warn_cr_in_shebang): meaningless check on DOSISH platforms.

View file

@ -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