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

ruby-changes:33872

From: shirosaki <ko1@a...>
Date: Thu, 15 May 2014 21:31:40 +0900 (JST)
Subject: [ruby-changes:33872] shirosaki:r45953 (trunk): parallel.rb: fix test-all parallel failure

shirosaki	2014-05-15 21:31:26 +0900 (Thu, 15 May 2014)

  New Revision: 45953

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=45953

  Log:
    parallel.rb: fix test-all parallel failure
    
    * lib/test/unit/parallel.rb: fix test-all parallel failure if a test
      is skipped after raise.
      DL::TestFunc#test_sinf is skipped after raise on mingw ruby.
      But it causes Mashal.load failure due to undefined class/module
      DL::DLError when doing test-all parallel and test-all doesn't
      complete. We create new MiniTest::Skip object to avoid Mashal.load
      failure.
      [ruby-core:62133] [Bug #9767]
    
    * test/testunit/test_parallel.rb (TestParallel): add a test.
    
    * test/testunit/tests_for_parallel/ptest_forth.rb: ditto.

  Modified files:
    trunk/ChangeLog
    trunk/lib/test/unit/parallel.rb
    trunk/test/testunit/test_parallel.rb
    trunk/test/testunit/tests_for_parallel/ptest_forth.rb
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 45952)
+++ ChangeLog	(revision 45953)
@@ -1,3 +1,18 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1
+Thu May 15 21:04:06 2014  Hiroshi Shirosaki  <h.shirosaki@g...>
+
+	* lib/test/unit/parallel.rb: fix test-all parallel failure if a test
+	  is skipped after raise.
+	  DL::TestFunc#test_sinf is skipped after raise on mingw ruby.
+	  But it causes Mashal.load failure due to undefined class/module
+	  DL::DLError when doing test-all parallel and test-all doesn't
+	  complete. We create new MiniTest::Skip object to avoid Mashal.load
+	  failure.
+	  [ruby-core:62133] [Bug #9767]
+
+	* test/testunit/test_parallel.rb (TestParallel): add a test.
+
+	* test/testunit/tests_for_parallel/ptest_forth.rb: ditto.
+
 Thu May 15 18:57:23 2014  Koichi Sasada  <ko1@a...>
 
 	* gc.c (garbage_collect_body): move gc_heap_prepare_minimum_pages()
Index: lib/test/unit/parallel.rb
===================================================================
--- lib/test/unit/parallel.rb	(revision 45952)
+++ lib/test/unit/parallel.rb	(revision 45953)
@@ -155,6 +155,11 @@ module Test https://github.com/ruby/ruby/blob/trunk/lib/test/unit/parallel.rb#L155
       end
 
       def puke(klass, meth, e) # :nodoc:
+        if e.is_a?(MiniTest::Skip)
+          new_e = MiniTest::Skip.new(e.message)
+          new_e.set_backtrace(e.backtrace)
+          e = new_e
+        end
         @partial_report << [klass.name, meth, e.is_a?(MiniTest::Assertion) ? e : ProxyError.new(e)]
         super
       end
Index: test/testunit/tests_for_parallel/ptest_forth.rb
===================================================================
--- test/testunit/tests_for_parallel/ptest_forth.rb	(revision 45952)
+++ test/testunit/tests_for_parallel/ptest_forth.rb	(revision 45953)
@@ -15,6 +15,14 @@ class TestE < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/testunit/tests_for_parallel/ptest_forth.rb#L15
     assert_equal(0,1)
   end
 
+  def test_skip_after_unknown_error
+    begin
+      raise UnknownError, "unknown error"
+    rescue
+      skip "after raise"
+    end
+  end
+
   def test_unknown_error
     raise UnknownError, "unknown error"
   end
Index: test/testunit/test_parallel.rb
===================================================================
--- test/testunit/test_parallel.rb	(revision 45952)
+++ test/testunit/test_parallel.rb	(revision 45953)
@@ -90,7 +90,7 @@ module TestParallel https://github.com/ruby/ruby/blob/trunk/test/testunit/test_parallel.rb#L90
     def test_done
       timeout(10) do
         @worker_in.puts "run #{TESTS}/ptest_forth.rb test"
-        6.times { @worker_out.gets }
+        7.times { @worker_out.gets }
         buf = @worker_out.gets
         assert_match(/^done (.+?)$/, buf)
 
@@ -98,7 +98,7 @@ module TestParallel https://github.com/ruby/ruby/blob/trunk/test/testunit/test_parallel.rb#L98
 
         result = Marshal.load($1.chomp.unpack("m")[0])
 
-        assert_equal(4, result[0])
+        assert_equal(5, result[0])
         assert_equal(2, result[1])
         assert_kind_of(Array,result[2])
         assert_kind_of(Array,result[3])
@@ -106,7 +106,8 @@ module TestParallel https://github.com/ruby/ruby/blob/trunk/test/testunit/test_parallel.rb#L106
         assert_kind_of(Array,result[2][1])
         assert_kind_of(MiniTest::Assertion,result[2][0][2])
         assert_kind_of(MiniTest::Skip,result[2][1][2])
-        assert_kind_of(Exception, result[2][2][2])
+        assert_kind_of(MiniTest::Skip,result[2][2][2])
+        assert_kind_of(Exception, result[2][3][2])
         assert_equal(result[5], "TestE")
       end
     end
@@ -156,7 +157,7 @@ module TestParallel https://github.com/ruby/ruby/blob/trunk/test/testunit/test_parallel.rb#L157
     def test_should_run_all_without_any_leaks
       spawn_runner
       buf = timeout(10){@test_out.read}
-      assert_match(/^[SFE\.]{8}$/,buf)
+      assert_match(/^[SFE\.]{9}$/,buf)
     end
 
     def test_should_retry_failed_on_workers

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

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