diff --git a/ChangeLog b/ChangeLog index c375c80a35..5e2f892624 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,21 @@ +Thu Oct 2 11:17:00 2003 Nathaniel Talbott + + * lib/test/unit/assertions.rb: should not capture an + AssertionFailedError unless explicitly requested. + + * test/testunit/test_assertions.rb: ditto. + + * test/testunit/collector/test_objectspace.rb: fixed a test failure + caused by methods being returned in different orders on different + platforms by moving test sorting from TestSuite into the locations + where suites are constructed. [ruby-talk:83156] + + * lib/test/unit/testcase.rb: ditto. + + * lib/test/unit/testsuite.rb: ditto. + + * lib/test/unit/collector/objectspace.rb: ditto. + Thu Oct 2 03:25:01 2003 NAKAMURA Usaku * eval.c (rb_thread_raise): prototype; avoid VC++ warning. @@ -1554,7 +1572,7 @@ For the changes before 1.8.0, see doc/ChangeLog-1.8.0 Local variables: add-log-time-format: (lambda () (let* ((time (current-time)) - (diff (+ (cadr time) 32400)) + (diff (+ (cadr time) 32400)) (lo (% diff 65536)) (hi (+ (car time) (/ diff 65536)))) (format-time-string "%a %b %e %H:%M:%S %Y" (list hi lo) t))) diff --git a/lib/test/unit/assertions.rb b/lib/test/unit/assertions.rb index b0df0ea2db..2833eba10d 100644 --- a/lib/test/unit/assertions.rb +++ b/lib/test/unit/assertions.rb @@ -182,15 +182,15 @@ module Test # :nodoc: end begin yield - rescue Exception => thrown_exception - if (args.empty? || args.include?(thrown_exception.class)) - full_message = build_message(message, thrown_exception) do |arg1| + rescue Exception => e + if ((args.empty? && !e.instance_of?(AssertionFailedError)) || args.include?(e.class)) + full_message = build_message(message, e) do |arg1| "Exception raised:\n" + arg1 end flunk(full_message) else - raise thrown_exception.class, thrown_exception.message, thrown_exception.backtrace + raise e.class, e.message, e.backtrace end end nil diff --git a/lib/test/unit/collector/objectspace.rb b/lib/test/unit/collector/objectspace.rb index 32b6332689..162f1ec4f5 100644 --- a/lib/test/unit/collector/objectspace.rb +++ b/lib/test/unit/collector/objectspace.rb @@ -18,7 +18,7 @@ module Test @source.each_object(Class) do |klass| tests.concat(klass.suite.tests) if(Test::Unit::TestCase > klass) end - tests.each{|test| suite << test if(include(test))} + tests.sort_by{|t| t.name}.each{|test| suite << test if(include(test))} suite end diff --git a/lib/test/unit/testcase.rb b/lib/test/unit/testcase.rb index 369c944349..c831b764a5 100644 --- a/lib/test/unit/testcase.rb +++ b/lib/test/unit/testcase.rb @@ -29,7 +29,7 @@ module Test # Creates a new instance of the fixture for running the # test represented by test_method_name. def initialize(test_method_name) - if ((!respond_to?(test_method_name)) || (method(test_method_name).arity != 0)) + unless(respond_to?(test_method_name) && method(test_method_name).arity == 0) throw :invalid_test end @method_name = test_method_name @@ -41,9 +41,9 @@ module Test # each method. def self.suite method_names = public_instance_methods(true) - tests = method_names.delete_if { |method_name| method_name !~ /^test.+/ } + tests = method_names.delete_if {|method_name| method_name !~ /^test./} suite = TestSuite.new(name) - tests.each do + tests.sort.each do |test| catch(:invalid_test) do suite << new(test) diff --git a/lib/test/unit/testsuite.rb b/lib/test/unit/testsuite.rb index 589ad7151e..4ece3257ca 100644 --- a/lib/test/unit/testsuite.rb +++ b/lib/test/unit/testsuite.rb @@ -30,7 +30,7 @@ module Test # TestSuite. def run(result, &progress_block) yield(STARTED, name) - @tests.sort { |test1, test2| test1.name <=> test2.name }.each do |test| + @tests.each do |test| test.run(result, &progress_block) end yield(FINISHED, name) diff --git a/test/testunit/collector/test_objectspace.rb b/test/testunit/collector/test_objectspace.rb index d596e1d311..9e102536a5 100644 --- a/test/testunit/collector/test_objectspace.rb +++ b/test/testunit/collector/test_objectspace.rb @@ -17,7 +17,7 @@ module Test end @tc2 = Class.new(TestCase) do - def test_3 + def test_0 end end @@ -34,9 +34,9 @@ module Test def test_basic_collection expected = TestSuite.new("name") + expected << @tc2.new('test_0') expected << @tc1.new('test_1') expected << @tc1.new('test_2') - expected << @tc2.new('test_3') assert_equal(expected, ObjectSpace.new(@object_space).collect("name")) end @@ -47,25 +47,25 @@ module Test assert_equal(expected, collector.collect) expected = TestSuite.new(ObjectSpace::NAME) + expected << @tc2.new('test_0') expected << @tc1.new('test_1') expected << @tc1.new('test_2') - expected << @tc2.new('test_3') collector = ObjectSpace.new(@object_space) collector.filter = proc{|test| true} assert_equal(expected, collector.collect) expected = TestSuite.new(ObjectSpace::NAME) + expected << @tc2.new('test_0') expected << @tc1.new('test_1') - expected << @tc2.new('test_3') collector = ObjectSpace.new(@object_space) - collector.filter = proc{|test| ['test_1', 'test_3'].include?(test.method_name)} + collector.filter = proc{|test| ['test_1', 'test_0'].include?(test.method_name)} assert_equal(expected, collector.collect) expected = TestSuite.new(ObjectSpace::NAME) + expected << @tc2.new('test_0') expected << @tc1.new('test_1') - expected << @tc2.new('test_3') collector = ObjectSpace.new(@object_space) - collector.filter = [proc{|test| test.method_name == 'test_1'}, proc{|test| test.method_name == 'test_3'}] + collector.filter = [proc{|test| test.method_name == 'test_1'}, proc{|test| test.method_name == 'test_0'}] assert_equal(expected, collector.collect) end end diff --git a/test/testunit/test_assertions.rb b/test/testunit/test_assertions.rb index ee52a503a6..ec4b2c0c13 100644 --- a/test/testunit/test_assertions.rb +++ b/test/testunit/test_assertions.rb @@ -283,6 +283,11 @@ module Test raise "Error" } } + check_fails("Failure") do + assert_nothing_raised do + flunk("Failure") + end + end end def test_flunk