[前][次][番号順一覧][スレッド一覧]

ruby-changes:41951

From: odaira <ko1@a...>
Date: Tue, 8 Mar 2016 08:22:54 +0900 (JST)
Subject: [ruby-changes:41951] odaira:r54025 (trunk): * test/net/imap/test_imap.rb (test_idle_timeout): Because of the

odaira	2016-03-08 08:22:49 +0900 (Tue, 08 Mar 2016)

  New Revision: 54025

  https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=54025

  Log:
    * 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).

  Modified files:
    trunk/ChangeLog
    trunk/test/net/imap/test_imap.rb
Index: test/net/imap/test_imap.rb
===================================================================
--- test/net/imap/test_imap.rb	(revision 54024)
+++ test/net/imap/test_imap.rb	(revision 54025)
@@ -310,19 +310,31 @@ class IMAPTest < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/net/imap/test_imap.rb#L310
     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
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 54024)
+++ ChangeLog	(revision 54025)
@@ -1,3 +1,11 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1
+Tue Mar  8 08:13:01 2016  Rei Odaira  <Rei.Odaira@g...>
+
+	* 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@r...>
 
 	* ruby.c (warn_cr_in_shebang): meaningless check on DOSISH platforms.

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]