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

ruby-changes:18838

From: nobu <ko1@a...>
Date: Sun, 13 Feb 2011 19:42:06 +0900 (JST)
Subject: [ruby-changes:18838] Ruby:r30863 (trunk): * lib/test/unit.rb (Test::Unit::RequireFiles#non_options): skip

nobu	2011-02-13 19:41:59 +0900 (Sun, 13 Feb 2011)

  New Revision: 30863

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

  Log:
    * lib/test/unit.rb (Test::Unit::RequireFiles#non_options): skip
      test suites failed to load instead of mere messages.

  Modified files:
    trunk/ChangeLog
    trunk/lib/test/unit.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 30862)
+++ ChangeLog	(revision 30863)
@@ -1,3 +1,8 @@
+Sun Feb 13 19:41:47 2011  Nobuyoshi Nakada  <nobu@r...>
+
+	* lib/test/unit.rb (Test::Unit::RequireFiles#non_options): skip
+	  test suites failed to load instead of mere messages.
+
 Sun Feb 13 09:56:44 2011  Nobuyoshi Nakada  <nobu@r...>
 
 	* test/openssl/test_config.rb (OpenSSL#test_freeze): fix error
Index: lib/test/unit.rb
===================================================================
--- lib/test/unit.rb	(revision 30862)
+++ lib/test/unit.rb	(revision 30863)
@@ -166,6 +166,9 @@
     end
 
     module RequireFiles
+      path = File.expand_path('../../rubygems/custom_require.rb', __FILE__)
+      CUSTOM_REQUIRE = /\A#{Regexp.quote(path)}:\d+:in `require'\z/ #'
+
       def non_options(files, options)
         return false if !super
         result = false
@@ -177,8 +180,17 @@
           begin
             require path
             result = true
-          rescue LoadError
-            puts "#{f}: #{$!}"
+          rescue LoadError => e
+            Class.new(Test::Unit::TestCase) do
+              message = e.message
+              / -- (?<failed>.*)/ =~ message
+              define_singleton_method(:to_s) {failed}
+              backtrace = e.backtrace
+              backtrace.shift while CUSTOM_REQUIRE =~ backtrace.first
+              /(?<file>.*):(?<line>\d+):in\s`/ =~ backtrace.first
+              line = line.to_i
+              define_method(:test_require_failed) {eval "skip(message)", nil, file, line}
+            end
           end
         }
         result

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

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