ruby-changes:12062
From: ryan <ko1@a...>
Date: Thu, 18 Jun 2009 16:31:56 +0900 (JST)
Subject: [ruby-changes:12062] Ruby:r23731 (trunk): Imported minitest 1.4.0 r5083.
ryan 2009-06-18 16:31:39 +0900 (Thu, 18 Jun 2009) New Revision: 23731 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=23731 Log: Imported minitest 1.4.0 r5083. Modified files: trunk/ChangeLog trunk/lib/minitest/autorun.rb trunk/lib/minitest/spec.rb trunk/lib/minitest/unit.rb trunk/test/minitest/test_mini_test.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 23730) +++ ChangeLog (revision 23731) @@ -1,3 +1,8 @@ +Thu Jun 18 16:21:05 2009 Ryan Davis <ryand-ruby@z...> + + * lib/minitest/*.rb: Imported minitest 1.4.0 r5083. + * test/minitest/*.rb: ditto. + Thu Jun 18 01:35:51 2009 Yukihiro Matsumoto <matz@r...> * numeric.c (flo_cmp): Infinity is greater than any bignum Index: lib/minitest/autorun.rb =================================================================== --- lib/minitest/autorun.rb (revision 23730) +++ lib/minitest/autorun.rb (revision 23731) @@ -5,5 +5,7 @@ ############################################################ require 'minitest/unit' +require 'minitest/spec' +require 'minitest/mock' MiniTest::Unit.autorun Index: lib/minitest/unit.rb =================================================================== --- lib/minitest/unit.rb (revision 23730) +++ lib/minitest/unit.rb (revision 23731) @@ -343,7 +343,7 @@ def location e last_before_assertion = "" e.backtrace.reverse_each do |s| - break if s =~ /in .(assert|refute|flunk|pass|fail|raise)/ + break if s =~ /in .(assert|refute|flunk|pass|fail|raise|must|wont)/ last_before_assertion = s end last_before_assertion.sub(/:in .*$/, '') @@ -430,30 +430,30 @@ end class TestCase - attr_reader :name + attr_reader :__name__ def run runner result = '.' begin @passed = nil self.setup - self.__send__ self.name + self.__send__ self.__name__ @passed = true rescue Exception => e @passed = false - result = runner.puke(self.class, self.name, e) + result = runner.puke(self.class, self.__name__, e) ensure begin self.teardown rescue Exception => e - result = runner.puke(self.class, self.name, e) + result = runner.puke(self.class, self.__name__, e) end end result end def initialize name - @name = name + @__name__ = name @passed = nil end Index: lib/minitest/spec.rb =================================================================== --- lib/minitest/spec.rb (revision 23730) +++ lib/minitest/spec.rb (revision 23731) @@ -55,15 +55,25 @@ module Kernel def describe desc, &block - cls = Class.new(MiniTest::Spec) - Object.const_set desc.to_s.split(/\W+/).map { |s| s.capitalize }.join, cls + stack = MiniTest::Spec.describe_stack + name = desc.to_s.split(/\W+/).map { |s| s.capitalize }.join + "Spec" + cls = Object.class_eval "class #{name} < #{stack.last}; end; #{name}" + cls.nuke_test_methods! + + stack.push cls cls.class_eval(&block) + stack.pop end private :describe end class MiniTest::Spec < MiniTest::Unit::TestCase + @@describe_stack = [MiniTest::Spec] + def self.describe_stack + @@describe_stack + end + def self.current @@current_spec end @@ -73,14 +83,29 @@ @@current_spec = self end + def self.nuke_test_methods! + self.public_instance_methods.grep(/^test_/).each do |name| + send :remove_method, name rescue nil + end + end + + def self.define_inheritable_method name, &block + super_method = self.superclass.instance_method name + + define_method name do + super_method.bind(self).call if super_method # regular super() warns + instance_eval(&block) + end + end + def self.before(type = :each, &block) raise "unsupported before type: #{type}" unless type == :each - define_method :setup, &block + define_inheritable_method :setup, &block end def self.after(type = :each, &block) raise "unsupported after type: #{type}" unless type == :each - define_method :teardown, &block + define_inheritable_method :teardown, &block end def self.it desc, &block Index: test/minitest/test_mini_test.rb =================================================================== --- test/minitest/test_mini_test.rb (revision 23730) +++ test/minitest/test_mini_test.rb (revision 23731) @@ -325,7 +325,8 @@ output.sub!(/^(\s+)(?:#{Regexp.union(__FILE__, File.expand_path(__FILE__))}):\d+:/o, '\1FILE:LINE:') output.sub!(/\[(?:#{Regexp.union(__FILE__, File.expand_path(__FILE__))}):\d+\]/o, '[FILE:LINE]') assert_equal(expected, output) - end + end + def test_run_failing_filtered tc = Class.new(MiniTest::Unit::TestCase) do def test_something @@ -468,10 +469,9 @@ end def test_assert_in_delta_triggered - e = assert_raises(MiniTest::Assertion) do + util_assert_triggered 'Expected 0.0 - 0.001 (0.001) to be < 1.0e-06.' do @tc.assert_in_delta 0.0, 1.0 / 1000, 0.000001 end - assert_match /\AExpected 0\.0 - 0\.001 \(0\.001\) to be < (?:1\.0+\de-06|9\.9+\de-07).\z/, e.message end def test_assert_in_epsilon @@ -489,10 +489,9 @@ end def test_assert_in_epsilon_triggered - e = assert_raises(MiniTest::Assertion) do + util_assert_triggered 'Expected 10000 - 9990 (10) to be < 9.99.' do @tc.assert_in_epsilon 10000, 9990 - end - assert_match(/\AExpected 10000 - 9990 \(10\) to be < 9\.99*\d*\.\z/, e.message) + end end def test_assert_includes @@ -831,10 +830,9 @@ end def test_refute_in_delta_triggered - e = assert_raises(MiniTest::Assertion) do + util_assert_triggered 'Expected 0.0 - 0.001 (0.001) to not be < 0.1.' do @tc.refute_in_delta 0.0, 1.0 / 1000, 0.1 end - assert_match /\AExpected 0\.0 - 0\.001 \(0\.001\) to not be < 0\.10*\d*\.\z/, e.message end def test_refute_in_epsilon @@ -983,11 +981,6 @@ msg = e.message.sub(/(---Backtrace---).*/m, '\1') msg.gsub!(/\(0x[0-9a-f]+\)/, '(0xXXX)') - begin - assert_equal expected, msg - rescue MiniTest::Assertion => e - e.backtrace.shift(3) - raise - end + assert_equal expected, msg end end -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/