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/