From 9a2ca1e5cc27d9e6a1d016592f62931e12f3913c Mon Sep 17 00:00:00 2001 From: Eloy Duran Date: Sun, 11 Oct 2009 17:14:21 +0200 Subject: [PATCH] Hacked on James's MiniTest TestResult code to make the acceptance tests run on 1.9 HEAD. There are still 4 failures because for some reason the backtrace line numbers are off by one. And the minitest_test test case does not run when the whole suite is ran with MiniTest, still need to look into that. --- lib/mocha/mock.rb | 1 - lib/mocha/mockery.rb | 1 + test/acceptance/api_test.rb | 2 +- test/acceptance/bug_18914_test.rb | 2 +- test/acceptance/bug_21465_test.rb | 2 +- test/acceptance/bug_21563_test.rb | 2 +- .../expected_invocation_count_test.rb | 2 +- test/acceptance/failure_messages_test.rb | 2 +- test/acceptance/minitest_test.rb | 252 +++++++++--------- test/acceptance/mocha_test_result_test.rb | 2 +- test/acceptance/mock_test.rb | 2 +- .../mock_with_initializer_block_test.rb | 2 +- .../mocked_methods_dispatch_test.rb | 2 +- test/acceptance/optional_parameters_test.rb | 2 +- test/acceptance/parameter_matcher_test.rb | 2 +- test/acceptance/partial_mocks_test.rb | 2 +- test/acceptance/return_value_test.rb | 2 +- test/acceptance/sequence_test.rb | 2 +- test/acceptance/states_test.rb | 2 +- .../stub_any_instance_method_test.rb | 2 +- test/acceptance/stub_class_method_test.rb | 2 +- test/acceptance/stub_everything_test.rb | 2 +- test/acceptance/stub_instance_method_test.rb | 2 +- test/acceptance/stub_module_method_test.rb | 2 +- test/acceptance/stub_test.rb | 2 +- test/acceptance/stubba_test_result_test.rb | 2 +- .../stubbing_error_backtrace_test.rb | 2 +- .../stubbing_method_unnecessarily_test.rb | 2 +- ...g_non_existent_any_instance_method_test.rb | 10 +- ...stubbing_non_existent_class_method_test.rb | 10 +- ...bbing_non_existent_instance_method_test.rb | 10 +- ...ing_non_public_any_instance_method_test.rb | 18 +- .../stubbing_non_public_class_method_test.rb | 18 +- ...tubbing_non_public_instance_method_test.rb | 18 +- .../stubbing_on_non_mock_object_test.rb | 10 +- test/mini_test_result.rb | 74 +++++ test/test_runner.rb | 36 ++- 37 files changed, 300 insertions(+), 208 deletions(-) create mode 100644 test/mini_test_result.rb diff --git a/lib/mocha/mock.rb b/lib/mocha/mock.rb index 70253dada..c5aa49033 100644 --- a/lib/mocha/mock.rb +++ b/lib/mocha/mock.rb @@ -2,7 +2,6 @@ require 'mocha/expectation_list' require 'mocha/metaclass' require 'mocha/names' -require 'mocha/mockery' require 'mocha/method_matcher' require 'mocha/parameters_matcher' require 'mocha/unexpected_invocation' diff --git a/lib/mocha/mockery.rb b/lib/mocha/mockery.rb index 3b847db96..6fd5e5abc 100644 --- a/lib/mocha/mockery.rb +++ b/lib/mocha/mockery.rb @@ -1,4 +1,5 @@ require 'mocha/central' +require 'mocha/mock' require 'mocha/names' require 'mocha/state_machine' require 'mocha/logger' diff --git a/test/acceptance/api_test.rb b/test/acceptance/api_test.rb index 46750a2ea..5e56aff58 100644 --- a/test/acceptance/api_test.rb +++ b/test/acceptance/api_test.rb @@ -1,4 +1,4 @@ -require File.join(File.dirname(__FILE__), "acceptance_test_helper") +require File.expand_path('../acceptance_test_helper', __FILE__) require 'mocha_standalone' require 'simple_counter' diff --git a/test/acceptance/bug_18914_test.rb b/test/acceptance/bug_18914_test.rb index 852a5f81e..b28d365dd 100644 --- a/test/acceptance/bug_18914_test.rb +++ b/test/acceptance/bug_18914_test.rb @@ -1,4 +1,4 @@ -require File.join(File.dirname(__FILE__), "acceptance_test_helper") +require File.expand_path('../acceptance_test_helper', __FILE__) require 'mocha' class Bug18914Test < Test::Unit::TestCase diff --git a/test/acceptance/bug_21465_test.rb b/test/acceptance/bug_21465_test.rb index bb65f6b12..bc2514559 100644 --- a/test/acceptance/bug_21465_test.rb +++ b/test/acceptance/bug_21465_test.rb @@ -1,4 +1,4 @@ -require File.join(File.dirname(__FILE__), "acceptance_test_helper") +require File.expand_path('../acceptance_test_helper', __FILE__) require 'mocha' class Bug21465Test < Test::Unit::TestCase diff --git a/test/acceptance/bug_21563_test.rb b/test/acceptance/bug_21563_test.rb index 8a031a0c2..f59395e29 100644 --- a/test/acceptance/bug_21563_test.rb +++ b/test/acceptance/bug_21563_test.rb @@ -1,4 +1,4 @@ -require File.join(File.dirname(__FILE__), "acceptance_test_helper") +require File.expand_path('../acceptance_test_helper', __FILE__) require 'mocha' class Bug21563Test < Test::Unit::TestCase diff --git a/test/acceptance/expected_invocation_count_test.rb b/test/acceptance/expected_invocation_count_test.rb index 1f076c474..88374e731 100644 --- a/test/acceptance/expected_invocation_count_test.rb +++ b/test/acceptance/expected_invocation_count_test.rb @@ -1,4 +1,4 @@ -require File.join(File.dirname(__FILE__), "acceptance_test_helper") +require File.expand_path('../acceptance_test_helper', __FILE__) require 'mocha' class ExpectedInvocationCountTest < Test::Unit::TestCase diff --git a/test/acceptance/failure_messages_test.rb b/test/acceptance/failure_messages_test.rb index a2ae1201d..68091109e 100644 --- a/test/acceptance/failure_messages_test.rb +++ b/test/acceptance/failure_messages_test.rb @@ -1,4 +1,4 @@ -require File.join(File.dirname(__FILE__), "acceptance_test_helper") +require File.expand_path('../acceptance_test_helper', __FILE__) require 'mocha' class FailureMessagesTest < Test::Unit::TestCase diff --git a/test/acceptance/minitest_test.rb b/test/acceptance/minitest_test.rb index 595334ba0..2b8e540b2 100644 --- a/test/acceptance/minitest_test.rb +++ b/test/acceptance/minitest_test.rb @@ -1,153 +1,157 @@ -require File.join(File.dirname(__FILE__), "acceptance_test_helper") +require File.expand_path('../acceptance_test_helper', __FILE__) -begin - require 'rubygems' - gem 'minitest' -rescue Gem::LoadError - # MiniTest gem not available -end +if defined?(MiniTest) + warn "TODO: Running suite with MiniTest, running the MiniTestAdapterTest results in an error so skipping it for now." +else + begin + require 'rubygems' + gem 'minitest' + rescue Gem::LoadError + # MiniTest gem not available + end -begin - require 'minitest/unit' -rescue LoadError - # MiniTest not available -end + begin + require 'minitest/unit' + rescue LoadError + # MiniTest not available + end -if defined?(MiniTest) + if defined?(MiniTest) - # monkey-patch MiniTest now that it has hopefully been loaded - require 'mocha/integration/mini_test' + # monkey-patch MiniTest now that it has hopefully been loaded + require 'mocha/integration/mini_test' - class MiniTestSampleTest < MiniTest::Unit::TestCase - - def test_mocha_with_fulfilled_expectation - mockee = mock() - mockee.expects(:blah) - mockee.blah - end - - def test_mocha_with_unfulfilled_expectation - mockee = mock() - mockee.expects(:blah) - end + class MiniTestSampleTest < MiniTest::Unit::TestCase + + def test_mocha_with_fulfilled_expectation + mockee = mock() + mockee.expects(:blah) + mockee.blah + end + + def test_mocha_with_unfulfilled_expectation + mockee = mock() + mockee.expects(:blah) + end + + def test_mocha_with_unexpected_invocation + mockee = mock() + mockee.blah + end + + def test_stubba_with_fulfilled_expectation + stubbee = Class.new { define_method(:blah) {} }.new + stubbee.expects(:blah) + stubbee.blah + end + + def test_stubba_with_unfulfilled_expectation + stubbee = Class.new { define_method(:blah) {} }.new + stubbee.expects(:blah) + end + + def test_mocha_with_matching_parameter + mockee = mock() + mockee.expects(:blah).with(has_key(:wibble)) + mockee.blah(:wibble => 1) + end + + def test_mocha_with_non_matching_parameter + mockee = mock() + mockee.expects(:blah).with(has_key(:wibble)) + mockee.blah(:wobble => 2) + end - def test_mocha_with_unexpected_invocation - mockee = mock() - mockee.blah end - - def test_stubba_with_fulfilled_expectation - stubbee = Class.new { define_method(:blah) {} }.new - stubbee.expects(:blah) - stubbee.blah - end - - def test_stubba_with_unfulfilled_expectation - stubbee = Class.new { define_method(:blah) {} }.new - stubbee.expects(:blah) - end - - def test_mocha_with_matching_parameter - mockee = mock() - mockee.expects(:blah).with(has_key(:wibble)) - mockee.blah(:wibble => 1) - end - - def test_mocha_with_non_matching_parameter - mockee = mock() - mockee.expects(:blah).with(has_key(:wibble)) - mockee.blah(:wobble => 2) - end - - end - class MiniTestTest < Test::Unit::TestCase + class MiniTestTest < Test::Unit::TestCase - def setup - @output = StringIO.new - MiniTest::Unit.output = @output - @runner = MiniTest::Unit.new - end + def setup + @output = StringIO.new + MiniTest::Unit.output = @output + @runner = MiniTest::Unit.new + end - attr_reader :runner + attr_reader :runner - def test_should_pass_mocha_test - runner.run(%w(-n test_mocha_with_fulfilled_expectation)) + def test_should_pass_mocha_test + runner.run(%w(-n test_mocha_with_fulfilled_expectation)) - assert_equal 0, runner.failures - assert_equal 0, runner.errors - assert_equal 1, runner.assertion_count - end + assert_equal 0, runner.failures + assert_equal 0, runner.errors + assert_equal 1, runner.assertion_count + end - def test_should_fail_mocha_test_due_to_unfulfilled_expectation - runner.run(%w(-n test_mocha_with_unfulfilled_expectation)) + def test_should_fail_mocha_test_due_to_unfulfilled_expectation + runner.run(%w(-n test_mocha_with_unfulfilled_expectation)) - assert_equal 1, runner.failures - assert_equal 0, runner.errors - assert_equal 1, runner.assertion_count - assert_not_all_expectation_were_satisfied - end - - def test_should_fail_mocha_test_due_to_unexpected_invocation - runner.run(%w(-n test_mocha_with_unexpected_invocation)) + assert_equal 1, runner.failures + assert_equal 0, runner.errors + assert_equal 1, runner.assertion_count + assert_not_all_expectation_were_satisfied + end + + def test_should_fail_mocha_test_due_to_unexpected_invocation + runner.run(%w(-n test_mocha_with_unexpected_invocation)) - assert_equal 1, runner.failures - assert_equal 0, runner.errors - assert_equal 0, runner.assertion_count - assert_unexpected_invocation - end - - def test_should_pass_stubba_test - runner.run(%w(-n test_stubba_with_fulfilled_expectation)) + assert_equal 1, runner.failures + assert_equal 0, runner.errors + assert_equal 0, runner.assertion_count + assert_unexpected_invocation + end + + def test_should_pass_stubba_test + runner.run(%w(-n test_stubba_with_fulfilled_expectation)) - assert_equal 0, runner.failures - assert_equal 0, runner.errors - assert_equal 1, runner.assertion_count - end + assert_equal 0, runner.failures + assert_equal 0, runner.errors + assert_equal 1, runner.assertion_count + end - def test_should_fail_stubba_test_due_to_unfulfilled_expectation - runner.run(%w(-n test_stubba_with_unfulfilled_expectation)) + def test_should_fail_stubba_test_due_to_unfulfilled_expectation + runner.run(%w(-n test_stubba_with_unfulfilled_expectation)) - assert_equal 1, runner.failures - assert_equal 0, runner.errors - assert_equal 1, runner.assertion_count - assert_not_all_expectation_were_satisfied - end - - def test_should_pass_mocha_test_with_matching_parameter - runner.run(%w(-n test_mocha_with_matching_parameter)) + assert_equal 1, runner.failures + assert_equal 0, runner.errors + assert_equal 1, runner.assertion_count + assert_not_all_expectation_were_satisfied + end + + def test_should_pass_mocha_test_with_matching_parameter + runner.run(%w(-n test_mocha_with_matching_parameter)) - assert_equal 0, runner.failures - assert_equal 0, runner.errors - assert_equal 1, runner.assertion_count - end + assert_equal 0, runner.failures + assert_equal 0, runner.errors + assert_equal 1, runner.assertion_count + end - def test_should_fail_mocha_test_with_non_matching_parameter - runner.run(%w(-n test_mocha_with_non_matching_parameter)) + def test_should_fail_mocha_test_with_non_matching_parameter + runner.run(%w(-n test_mocha_with_non_matching_parameter)) - assert_equal 1, runner.failures - assert_equal 0, runner.errors - assert_equal 0, runner.assertion_count # unexpected invocation occurs before expectation is verified - assert_unexpected_invocation - end + assert_equal 1, runner.failures + assert_equal 0, runner.errors + assert_equal 0, runner.assertion_count # unexpected invocation occurs before expectation is verified + assert_unexpected_invocation + end - private + private - def output - @output.rewind - @output.read - end + def output + @output.rewind + @output.read + end - def assert_unexpected_invocation - assert_match Regexp.new('unexpected invocation'), output, "MiniTest output:\n#{output}" - end + def assert_unexpected_invocation + assert_match Regexp.new('unexpected invocation'), output, "MiniTest output:\n#{output}" + end + + def assert_not_all_expectation_were_satisfied + assert_match Regexp.new('not all expectations were satisfied'), output, "MiniTest output:\n#{output}" + end - def assert_not_all_expectation_were_satisfied - assert_match Regexp.new('not all expectations were satisfied'), output, "MiniTest output:\n#{output}" end + else + warn "MiniTest is not available, so MiniTestAdapterTest has not been run." end - -else - warn "MiniTest is not available, so MiniTestAdapterTest has not been run." end \ No newline at end of file diff --git a/test/acceptance/mocha_test_result_test.rb b/test/acceptance/mocha_test_result_test.rb index 36c16f668..28033e6e7 100644 --- a/test/acceptance/mocha_test_result_test.rb +++ b/test/acceptance/mocha_test_result_test.rb @@ -1,4 +1,4 @@ -require File.join(File.dirname(__FILE__), "acceptance_test_helper") +require File.expand_path('../acceptance_test_helper', __FILE__) require 'mocha' require 'execution_point' diff --git a/test/acceptance/mock_test.rb b/test/acceptance/mock_test.rb index ecb7bb3b7..9170c330f 100644 --- a/test/acceptance/mock_test.rb +++ b/test/acceptance/mock_test.rb @@ -1,4 +1,4 @@ -require File.join(File.dirname(__FILE__), "acceptance_test_helper") +require File.expand_path('../acceptance_test_helper', __FILE__) require 'mocha' class MockTest < Test::Unit::TestCase diff --git a/test/acceptance/mock_with_initializer_block_test.rb b/test/acceptance/mock_with_initializer_block_test.rb index 7d21f2497..cc8eda6aa 100644 --- a/test/acceptance/mock_with_initializer_block_test.rb +++ b/test/acceptance/mock_with_initializer_block_test.rb @@ -1,4 +1,4 @@ -require File.join(File.dirname(__FILE__), "acceptance_test_helper") +require File.expand_path('../acceptance_test_helper', __FILE__) require 'mocha' class MockWithInitializerBlockTest < Test::Unit::TestCase diff --git a/test/acceptance/mocked_methods_dispatch_test.rb b/test/acceptance/mocked_methods_dispatch_test.rb index ebe359854..5c8b1f979 100644 --- a/test/acceptance/mocked_methods_dispatch_test.rb +++ b/test/acceptance/mocked_methods_dispatch_test.rb @@ -1,4 +1,4 @@ -require File.join(File.dirname(__FILE__), "acceptance_test_helper") +require File.expand_path('../acceptance_test_helper', __FILE__) require 'mocha' class MockedMethodDispatchTest < Test::Unit::TestCase diff --git a/test/acceptance/optional_parameters_test.rb b/test/acceptance/optional_parameters_test.rb index 9741d9d4b..01de731b0 100644 --- a/test/acceptance/optional_parameters_test.rb +++ b/test/acceptance/optional_parameters_test.rb @@ -1,4 +1,4 @@ -require File.join(File.dirname(__FILE__), "acceptance_test_helper") +require File.expand_path('../acceptance_test_helper', __FILE__) require 'mocha' class OptionalParameterMatcherTest < Test::Unit::TestCase diff --git a/test/acceptance/parameter_matcher_test.rb b/test/acceptance/parameter_matcher_test.rb index 4206ea1e8..1c73f73f0 100644 --- a/test/acceptance/parameter_matcher_test.rb +++ b/test/acceptance/parameter_matcher_test.rb @@ -1,4 +1,4 @@ -require File.join(File.dirname(__FILE__), "acceptance_test_helper") +require File.expand_path('../acceptance_test_helper', __FILE__) require 'mocha' class ParameterMatcherTest < Test::Unit::TestCase diff --git a/test/acceptance/partial_mocks_test.rb b/test/acceptance/partial_mocks_test.rb index bc93b8550..c494f78c5 100644 --- a/test/acceptance/partial_mocks_test.rb +++ b/test/acceptance/partial_mocks_test.rb @@ -1,4 +1,4 @@ -require File.join(File.dirname(__FILE__), "acceptance_test_helper") +require File.expand_path('../acceptance_test_helper', __FILE__) require 'mocha' class PartialMockTest < Test::Unit::TestCase diff --git a/test/acceptance/return_value_test.rb b/test/acceptance/return_value_test.rb index be3cc8f5b..a1abcb521 100644 --- a/test/acceptance/return_value_test.rb +++ b/test/acceptance/return_value_test.rb @@ -1,4 +1,4 @@ -require File.join(File.dirname(__FILE__), "acceptance_test_helper") +require File.expand_path('../acceptance_test_helper', __FILE__) require 'mocha' class ReturnValueTest < Test::Unit::TestCase diff --git a/test/acceptance/sequence_test.rb b/test/acceptance/sequence_test.rb index f6c4b4f32..0eb8c996c 100644 --- a/test/acceptance/sequence_test.rb +++ b/test/acceptance/sequence_test.rb @@ -1,4 +1,4 @@ -require File.join(File.dirname(__FILE__), "acceptance_test_helper") +require File.expand_path('../acceptance_test_helper', __FILE__) require 'mocha' class SequenceTest < Test::Unit::TestCase diff --git a/test/acceptance/states_test.rb b/test/acceptance/states_test.rb index 0b94d9b2c..e6f4d10ae 100644 --- a/test/acceptance/states_test.rb +++ b/test/acceptance/states_test.rb @@ -1,4 +1,4 @@ -require File.join(File.dirname(__FILE__), "acceptance_test_helper") +require File.expand_path('../acceptance_test_helper', __FILE__) require 'mocha' class StatesTest < Test::Unit::TestCase diff --git a/test/acceptance/stub_any_instance_method_test.rb b/test/acceptance/stub_any_instance_method_test.rb index 8e734024f..03664aca7 100644 --- a/test/acceptance/stub_any_instance_method_test.rb +++ b/test/acceptance/stub_any_instance_method_test.rb @@ -1,4 +1,4 @@ -require File.join(File.dirname(__FILE__), "acceptance_test_helper") +require File.expand_path('../acceptance_test_helper', __FILE__) require 'mocha' class StubAnyInstanceMethodTest < Test::Unit::TestCase diff --git a/test/acceptance/stub_class_method_test.rb b/test/acceptance/stub_class_method_test.rb index e64d6d8d0..a4981dd02 100644 --- a/test/acceptance/stub_class_method_test.rb +++ b/test/acceptance/stub_class_method_test.rb @@ -1,4 +1,4 @@ -require File.join(File.dirname(__FILE__), "acceptance_test_helper") +require File.expand_path('../acceptance_test_helper', __FILE__) require 'mocha' class StubClassMethodTest < Test::Unit::TestCase diff --git a/test/acceptance/stub_everything_test.rb b/test/acceptance/stub_everything_test.rb index 18d28f733..8945a3b28 100644 --- a/test/acceptance/stub_everything_test.rb +++ b/test/acceptance/stub_everything_test.rb @@ -1,4 +1,4 @@ -require File.join(File.dirname(__FILE__), "acceptance_test_helper") +require File.expand_path('../acceptance_test_helper', __FILE__) require 'mocha' class StubEverythingTest < Test::Unit::TestCase diff --git a/test/acceptance/stub_instance_method_test.rb b/test/acceptance/stub_instance_method_test.rb index f69d7a309..e14cdcd1d 100644 --- a/test/acceptance/stub_instance_method_test.rb +++ b/test/acceptance/stub_instance_method_test.rb @@ -1,4 +1,4 @@ -require File.join(File.dirname(__FILE__), "acceptance_test_helper") +require File.expand_path('../acceptance_test_helper', __FILE__) require 'mocha' class StubInstanceMethodTest < Test::Unit::TestCase diff --git a/test/acceptance/stub_module_method_test.rb b/test/acceptance/stub_module_method_test.rb index a71a4975f..a210cd588 100644 --- a/test/acceptance/stub_module_method_test.rb +++ b/test/acceptance/stub_module_method_test.rb @@ -1,4 +1,4 @@ -require File.join(File.dirname(__FILE__), "acceptance_test_helper") +require File.expand_path('../acceptance_test_helper', __FILE__) require 'mocha' class StubModuleMethodTest < Test::Unit::TestCase diff --git a/test/acceptance/stub_test.rb b/test/acceptance/stub_test.rb index 92859c132..759fd5d17 100644 --- a/test/acceptance/stub_test.rb +++ b/test/acceptance/stub_test.rb @@ -1,4 +1,4 @@ -require File.join(File.dirname(__FILE__), "acceptance_test_helper") +require File.expand_path('../acceptance_test_helper', __FILE__) require 'mocha' class StubTest < Test::Unit::TestCase diff --git a/test/acceptance/stubba_test_result_test.rb b/test/acceptance/stubba_test_result_test.rb index df7a34255..65436e133 100644 --- a/test/acceptance/stubba_test_result_test.rb +++ b/test/acceptance/stubba_test_result_test.rb @@ -1,4 +1,4 @@ -require File.join(File.dirname(__FILE__), "acceptance_test_helper") +require File.expand_path('../acceptance_test_helper', __FILE__) require 'mocha' require 'execution_point' diff --git a/test/acceptance/stubbing_error_backtrace_test.rb b/test/acceptance/stubbing_error_backtrace_test.rb index 6e7a7579b..ca81ef6fa 100644 --- a/test/acceptance/stubbing_error_backtrace_test.rb +++ b/test/acceptance/stubbing_error_backtrace_test.rb @@ -1,4 +1,4 @@ -require File.join(File.dirname(__FILE__), "acceptance_test_helper") +require File.expand_path('../acceptance_test_helper', __FILE__) require 'mocha' require 'execution_point' diff --git a/test/acceptance/stubbing_method_unnecessarily_test.rb b/test/acceptance/stubbing_method_unnecessarily_test.rb index dfc8155ae..38260bc63 100644 --- a/test/acceptance/stubbing_method_unnecessarily_test.rb +++ b/test/acceptance/stubbing_method_unnecessarily_test.rb @@ -1,4 +1,4 @@ -require File.join(File.dirname(__FILE__), "acceptance_test_helper") +require File.expand_path('../acceptance_test_helper', __FILE__) require 'mocha' class StubbingMethodUnnecessarilyTest < Test::Unit::TestCase diff --git a/test/acceptance/stubbing_non_existent_any_instance_method_test.rb b/test/acceptance/stubbing_non_existent_any_instance_method_test.rb index c987553c2..db22fe62f 100644 --- a/test/acceptance/stubbing_non_existent_any_instance_method_test.rb +++ b/test/acceptance/stubbing_non_existent_any_instance_method_test.rb @@ -1,4 +1,4 @@ -require File.join(File.dirname(__FILE__), "acceptance_test_helper") +require File.expand_path('../acceptance_test_helper', __FILE__) require 'mocha' class StubbingNonExistentAnyInstanceMethodTest < Test::Unit::TestCase @@ -19,7 +19,7 @@ def test_should_allow_stubbing_non_existent_any_instance_method test_result = run_as_test do klass.any_instance.stubs(:non_existent_method) end - assert !@logger.warnings.include?("stubbing non-existent method: #{klass.any_instance}.non_existent_method") + assert !@logger.warnings.include?("stubbing non-existent method: #{klass.any_instance.mocha_inspect}.non_existent_method") assert_passed(test_result) end @@ -30,7 +30,7 @@ def test_should_warn_when_stubbing_non_existent_any_instance_method klass.any_instance.stubs(:non_existent_method) end assert_passed(test_result) - assert @logger.warnings.include?("stubbing non-existent method: #{klass.any_instance}.non_existent_method") + assert @logger.warnings.include?("stubbing non-existent method: #{klass.any_instance.mocha_inspect}.non_existent_method") end def test_should_prevent_stubbing_non_existent_any_instance_method @@ -40,7 +40,7 @@ def test_should_prevent_stubbing_non_existent_any_instance_method klass.any_instance.stubs(:non_existent_method) end assert_failed(test_result) - assert test_result.error_messages.include?("Mocha::StubbingError: stubbing non-existent method: #{klass.any_instance}.non_existent_method") + assert test_result.error_messages.include?("Mocha::StubbingError: stubbing non-existent method: #{klass.any_instance.mocha_inspect}.non_existent_method") end def test_should_default_to_allow_stubbing_non_existent_any_instance_method @@ -48,7 +48,7 @@ def test_should_default_to_allow_stubbing_non_existent_any_instance_method test_result = run_as_test do klass.any_instance.stubs(:non_existent_method) end - assert !@logger.warnings.include?("stubbing non-existent method: #{klass.any_instance}.non_existent_method") + assert !@logger.warnings.include?("stubbing non-existent method: #{klass.any_instance.mocha_inspect}.non_existent_method") assert_passed(test_result) end diff --git a/test/acceptance/stubbing_non_existent_class_method_test.rb b/test/acceptance/stubbing_non_existent_class_method_test.rb index 55947b60d..c13901258 100644 --- a/test/acceptance/stubbing_non_existent_class_method_test.rb +++ b/test/acceptance/stubbing_non_existent_class_method_test.rb @@ -1,4 +1,4 @@ -require File.join(File.dirname(__FILE__), "acceptance_test_helper") +require File.expand_path('../acceptance_test_helper', __FILE__) require 'mocha' class StubbingNonExistentClassMethodTest < Test::Unit::TestCase @@ -19,7 +19,7 @@ def test_should_allow_stubbing_non_existent_class_method test_result = run_as_test do klass.stubs(:non_existent_method) end - assert !@logger.warnings.include?("stubbing non-existent method: #{klass}.non_existent_method") + assert !@logger.warnings.include?("stubbing non-existent method: #{klass.mocha_inspect}.non_existent_method") assert_passed(test_result) end @@ -30,7 +30,7 @@ def test_should_warn_when_stubbing_non_existent_class_method klass.stubs(:non_existent_method) end assert_passed(test_result) - assert @logger.warnings.include?("stubbing non-existent method: #{klass}.non_existent_method") + assert @logger.warnings.include?("stubbing non-existent method: #{klass.mocha_inspect}.non_existent_method") end def test_should_prevent_stubbing_non_existent_class_method @@ -40,7 +40,7 @@ def test_should_prevent_stubbing_non_existent_class_method klass.stubs(:non_existent_method) end assert_failed(test_result) - assert test_result.error_messages.include?("Mocha::StubbingError: stubbing non-existent method: #{klass}.non_existent_method") + assert test_result.error_messages.include?("Mocha::StubbingError: stubbing non-existent method: #{klass.mocha_inspect}.non_existent_method") end def test_should_default_to_allow_stubbing_non_existent_class_method @@ -48,7 +48,7 @@ def test_should_default_to_allow_stubbing_non_existent_class_method test_result = run_as_test do klass.stubs(:non_existent_method) end - assert !@logger.warnings.include?("stubbing non-existent method: #{klass}.non_existent_method") + assert !@logger.warnings.include?("stubbing non-existent method: #{klass.mocha_inspect}.non_existent_method") assert_passed(test_result) end diff --git a/test/acceptance/stubbing_non_existent_instance_method_test.rb b/test/acceptance/stubbing_non_existent_instance_method_test.rb index 5aaf370bc..e1a029b49 100644 --- a/test/acceptance/stubbing_non_existent_instance_method_test.rb +++ b/test/acceptance/stubbing_non_existent_instance_method_test.rb @@ -1,4 +1,4 @@ -require File.join(File.dirname(__FILE__), "acceptance_test_helper") +require File.expand_path('../acceptance_test_helper', __FILE__) require 'mocha' class StubbingNonExistentInstanceMethodTest < Test::Unit::TestCase @@ -19,7 +19,7 @@ def test_should_allow_stubbing_non_existent_instance_method test_result = run_as_test do instance.stubs(:non_existent_method) end - assert !@logger.warnings.include?("stubbing non-existent method: #{instance}.non_existent_method") + assert !@logger.warnings.include?("stubbing non-existent method: #{instance.mocha_inspect}.non_existent_method") assert_passed(test_result) end @@ -30,7 +30,7 @@ def test_should_warn_when_stubbing_non_existent_instance_method instance.stubs(:non_existent_method) end assert_passed(test_result) - assert @logger.warnings.include?("stubbing non-existent method: #{instance}.non_existent_method") + assert @logger.warnings.include?("stubbing non-existent method: #{instance.mocha_inspect}.non_existent_method") end def test_should_prevent_stubbing_non_existent_instance_method @@ -40,7 +40,7 @@ def test_should_prevent_stubbing_non_existent_instance_method instance.stubs(:non_existent_method) end assert_failed(test_result) - assert test_result.error_messages.include?("Mocha::StubbingError: stubbing non-existent method: #{instance}.non_existent_method") + assert test_result.error_messages.include?("Mocha::StubbingError: stubbing non-existent method: #{instance.mocha_inspect}.non_existent_method") end def test_should_default_to_allow_stubbing_non_existent_instance_method @@ -48,7 +48,7 @@ def test_should_default_to_allow_stubbing_non_existent_instance_method test_result = run_as_test do instance.stubs(:non_existent_method) end - assert !@logger.warnings.include?("stubbing non-existent method: #{instance}.non_existent_method") + assert !@logger.warnings.include?("stubbing non-existent method: #{instance.mocha_inspect}.non_existent_method") assert_passed(test_result) end diff --git a/test/acceptance/stubbing_non_public_any_instance_method_test.rb b/test/acceptance/stubbing_non_public_any_instance_method_test.rb index 6fc5a982a..b2a9bc8c7 100644 --- a/test/acceptance/stubbing_non_public_any_instance_method_test.rb +++ b/test/acceptance/stubbing_non_public_any_instance_method_test.rb @@ -1,4 +1,4 @@ -require File.join(File.dirname(__FILE__), "acceptance_test_helper") +require File.expand_path('../acceptance_test_helper', __FILE__) require 'mocha' class StubbingNonPublicAnyInstanceMethodTest < Test::Unit::TestCase @@ -23,7 +23,7 @@ def private_method; end klass.any_instance.stubs(:private_method) end assert_passed(test_result) - assert !@logger.warnings.include?("stubbing non-public method: #{klass.any_instance}.private_method") + assert !@logger.warnings.include?("stubbing non-public method: #{klass.any_instance.mocha_inspect}.private_method") end def test_should_allow_stubbing_protected_any_instance_method @@ -36,7 +36,7 @@ def protected_method; end klass.any_instance.stubs(:protected_method) end assert_passed(test_result) - assert !@logger.warnings.include?("stubbing non-public method: #{klass.any_instance}.protected_method") + assert !@logger.warnings.include?("stubbing non-public method: #{klass.any_instance.mocha_inspect}.protected_method") end def test_should_warn_when_stubbing_private_any_instance_method @@ -49,7 +49,7 @@ def private_method; end klass.any_instance.stubs(:private_method) end assert_passed(test_result) - assert @logger.warnings.include?("stubbing non-public method: #{klass.any_instance}.private_method") + assert @logger.warnings.include?("stubbing non-public method: #{klass.any_instance.mocha_inspect}.private_method") end def test_should_warn_when_stubbing_protected_any_instance_method @@ -62,7 +62,7 @@ def protected_method; end klass.any_instance.stubs(:protected_method) end assert_passed(test_result) - assert @logger.warnings.include?("stubbing non-public method: #{klass.any_instance}.protected_method") + assert @logger.warnings.include?("stubbing non-public method: #{klass.any_instance.mocha_inspect}.protected_method") end def test_should_prevent_stubbing_private_any_instance_method @@ -75,7 +75,7 @@ def private_method; end klass.any_instance.stubs(:private_method) end assert_failed(test_result) - assert test_result.error_messages.include?("Mocha::StubbingError: stubbing non-public method: #{klass.any_instance}.private_method") + assert test_result.error_messages.include?("Mocha::StubbingError: stubbing non-public method: #{klass.any_instance.mocha_inspect}.private_method") end def test_should_prevent_stubbing_protected_any_instance_method @@ -88,7 +88,7 @@ def protected_method; end klass.any_instance.stubs(:protected_method) end assert_failed(test_result) - assert test_result.error_messages.include?("Mocha::StubbingError: stubbing non-public method: #{klass.any_instance}.protected_method") + assert test_result.error_messages.include?("Mocha::StubbingError: stubbing non-public method: #{klass.any_instance.mocha_inspect}.protected_method") end def test_should_default_to_allow_stubbing_private_any_instance_method @@ -100,7 +100,7 @@ def private_method; end klass.any_instance.stubs(:private_method) end assert_passed(test_result) - assert !@logger.warnings.include?("stubbing non-public method: #{klass.any_instance}.private_method") + assert !@logger.warnings.include?("stubbing non-public method: #{klass.any_instance.mocha_inspect}.private_method") end def test_should_default_to_allow_stubbing_protected_any_instance_method @@ -112,7 +112,7 @@ def protected_method; end klass.any_instance.stubs(:protected_method) end assert_passed(test_result) - assert !@logger.warnings.include?("stubbing non-public method: #{klass.any_instance}.protected_method") + assert !@logger.warnings.include?("stubbing non-public method: #{klass.any_instance.mocha_inspect}.protected_method") end def test_should_allow_stubbing_public_any_instance_method diff --git a/test/acceptance/stubbing_non_public_class_method_test.rb b/test/acceptance/stubbing_non_public_class_method_test.rb index 923f930c2..37c27b0b8 100644 --- a/test/acceptance/stubbing_non_public_class_method_test.rb +++ b/test/acceptance/stubbing_non_public_class_method_test.rb @@ -1,4 +1,4 @@ -require File.join(File.dirname(__FILE__), "acceptance_test_helper") +require File.expand_path('../acceptance_test_helper', __FILE__) require 'mocha' class StubbingNonPublicClassMethodTest < Test::Unit::TestCase @@ -25,7 +25,7 @@ def private_method; end klass.stubs(:private_method) end assert_passed(test_result) - assert !@logger.warnings.include?("stubbing non-public method: #{klass}.private_method") + assert !@logger.warnings.include?("stubbing non-public method: #{klass.mocha_inspect}.private_method") end def test_should_allow_stubbing_protected_class_method @@ -40,7 +40,7 @@ def protected_method; end klass.stubs(:protected_method) end assert_passed(test_result) - assert !@logger.warnings.include?("stubbing non-public method: #{klass}.protected_method") + assert !@logger.warnings.include?("stubbing non-public method: #{klass.mocha_inspect}.protected_method") end def test_should_warn_when_stubbing_private_class_method @@ -55,7 +55,7 @@ def private_method; end klass.stubs(:private_method) end assert_passed(test_result) - assert @logger.warnings.include?("stubbing non-public method: #{klass}.private_method") + assert @logger.warnings.include?("stubbing non-public method: #{klass.mocha_inspect}.private_method") end def test_should_warn_when_stubbing_protected_class_method @@ -70,7 +70,7 @@ def protected_method; end klass.stubs(:protected_method) end assert_passed(test_result) - assert @logger.warnings.include?("stubbing non-public method: #{klass}.protected_method") + assert @logger.warnings.include?("stubbing non-public method: #{klass.mocha_inspect}.protected_method") end def test_should_prevent_stubbing_private_class_method @@ -85,7 +85,7 @@ def private_method; end klass.stubs(:private_method) end assert_failed(test_result) - assert test_result.error_messages.include?("Mocha::StubbingError: stubbing non-public method: #{klass}.private_method") + assert test_result.error_messages.include?("Mocha::StubbingError: stubbing non-public method: #{klass.mocha_inspect}.private_method") end def test_should_prevent_stubbing_protected_class_method @@ -100,7 +100,7 @@ def protected_method; end klass.stubs(:protected_method) end assert_failed(test_result) - assert test_result.error_messages.include?("Mocha::StubbingError: stubbing non-public method: #{klass}.protected_method") + assert test_result.error_messages.include?("Mocha::StubbingError: stubbing non-public method: #{klass.mocha_inspect}.protected_method") end def test_should_default_to_allow_stubbing_private_class_method @@ -114,7 +114,7 @@ def private_method; end klass.stubs(:private_method) end assert_passed(test_result) - assert !@logger.warnings.include?("stubbing non-public method: #{klass}.private_method") + assert !@logger.warnings.include?("stubbing non-public method: #{klass.mocha_inspect}.private_method") end def test_should_default_to_allow_stubbing_protected_class_method @@ -128,7 +128,7 @@ def protected_method; end klass.stubs(:protected_method) end assert_passed(test_result) - assert !@logger.warnings.include?("stubbing non-public method: #{klass}.protected_method") + assert !@logger.warnings.include?("stubbing non-public method: #{klass.mocha_inspect}.protected_method") end def test_should_allow_stubbing_public_class_method diff --git a/test/acceptance/stubbing_non_public_instance_method_test.rb b/test/acceptance/stubbing_non_public_instance_method_test.rb index 823c9a07d..8f64e44d2 100644 --- a/test/acceptance/stubbing_non_public_instance_method_test.rb +++ b/test/acceptance/stubbing_non_public_instance_method_test.rb @@ -1,4 +1,4 @@ -require File.join(File.dirname(__FILE__), "acceptance_test_helper") +require File.expand_path('../acceptance_test_helper', __FILE__) require 'mocha' class StubbingNonPublicInstanceMethodTest < Test::Unit::TestCase @@ -23,7 +23,7 @@ def private_method; end instance.stubs(:private_method) end assert_passed(test_result) - assert !@logger.warnings.include?("stubbing non-public method: #{instance}.private_method") + assert !@logger.warnings.include?("stubbing non-public method: #{instance.mocha_inspect}.private_method") end def test_should_allow_stubbing_protected_instance_method @@ -36,7 +36,7 @@ def protected_method; end instance.stubs(:protected_method) end assert_passed(test_result) - assert !@logger.warnings.include?("stubbing non-public method: #{instance}.protected_method") + assert !@logger.warnings.include?("stubbing non-public method: #{instance.mocha_inspect}.protected_method") end def test_should_warn_when_stubbing_private_instance_method @@ -49,7 +49,7 @@ def private_method; end instance.stubs(:private_method) end assert_passed(test_result) - assert @logger.warnings.include?("stubbing non-public method: #{instance}.private_method") + assert @logger.warnings.include?("stubbing non-public method: #{instance.mocha_inspect}.private_method") end def test_should_warn_when_stubbing_protected_instance_method @@ -62,7 +62,7 @@ def protected_method; end instance.stubs(:protected_method) end assert_passed(test_result) - assert @logger.warnings.include?("stubbing non-public method: #{instance}.protected_method") + assert @logger.warnings.include?("stubbing non-public method: #{instance.mocha_inspect}.protected_method") end def test_should_prevent_stubbing_private_instance_method @@ -75,7 +75,7 @@ def private_method; end instance.stubs(:private_method) end assert_failed(test_result) - assert test_result.error_messages.include?("Mocha::StubbingError: stubbing non-public method: #{instance}.private_method") + assert test_result.error_messages.include?("Mocha::StubbingError: stubbing non-public method: #{instance.mocha_inspect}.private_method") end def test_should_prevent_stubbing_protected_instance_method @@ -88,7 +88,7 @@ def protected_method; end instance.stubs(:protected_method) end assert_failed(test_result) - assert test_result.error_messages.include?("Mocha::StubbingError: stubbing non-public method: #{instance}.protected_method") + assert test_result.error_messages.include?("Mocha::StubbingError: stubbing non-public method: #{instance.mocha_inspect}.protected_method") end def test_should_default_to_allow_stubbing_private_instance_method @@ -100,7 +100,7 @@ def private_method; end instance.stubs(:private_method) end assert_passed(test_result) - assert !@logger.warnings.include?("stubbing non-public method: #{instance}.private_method") + assert !@logger.warnings.include?("stubbing non-public method: #{instance.mocha_inspect}.private_method") end def test_should_default_to_allow_stubbing_protected_instance_method @@ -112,7 +112,7 @@ def protected_method; end instance.stubs(:protected_method) end assert_passed(test_result) - assert !@logger.warnings.include?("stubbing non-public method: #{instance}.protected_method") + assert !@logger.warnings.include?("stubbing non-public method: #{instance.mocha_inspect}.protected_method") end def test_should_allow_stubbing_public_instance_method diff --git a/test/acceptance/stubbing_on_non_mock_object_test.rb b/test/acceptance/stubbing_on_non_mock_object_test.rb index 216f5398e..0369140e6 100644 --- a/test/acceptance/stubbing_on_non_mock_object_test.rb +++ b/test/acceptance/stubbing_on_non_mock_object_test.rb @@ -1,4 +1,4 @@ -require File.join(File.dirname(__FILE__), "acceptance_test_helper") +require File.expand_path('../acceptance_test_helper', __FILE__) require 'mocha' class StubbingOnNonMockObjectTest < Test::Unit::TestCase @@ -20,7 +20,7 @@ def test_should_allow_stubbing_method_on_non_mock_object non_mock_object.stubs(:existing_method) end assert_passed(test_result) - assert !@logger.warnings.include?("stubbing method on non-mock object: #{non_mock_object}.existing_method") + assert !@logger.warnings.include?("stubbing method on non-mock object: #{non_mock_object.mocha_inspect}.existing_method") end def test_should_warn_on_stubbing_method_on_non_mock_object @@ -30,7 +30,7 @@ def test_should_warn_on_stubbing_method_on_non_mock_object non_mock_object.stubs(:existing_method) end assert_passed(test_result) - assert @logger.warnings.include?("stubbing method on non-mock object: #{non_mock_object}.existing_method") + assert @logger.warnings.include?("stubbing method on non-mock object: #{non_mock_object.mocha_inspect}.existing_method") end def test_should_prevent_stubbing_method_on_non_mock_object @@ -40,7 +40,7 @@ def test_should_prevent_stubbing_method_on_non_mock_object non_mock_object.stubs(:existing_method) end assert_failed(test_result) - assert test_result.error_messages.include?("Mocha::StubbingError: stubbing method on non-mock object: #{non_mock_object}.existing_method") + assert test_result.error_messages.include?("Mocha::StubbingError: stubbing method on non-mock object: #{non_mock_object.mocha_inspect}.existing_method") end def test_should_default_to_allow_stubbing_method_on_non_mock_object @@ -49,7 +49,7 @@ def test_should_default_to_allow_stubbing_method_on_non_mock_object non_mock_object.stubs(:existing_method) end assert_passed(test_result) - assert !@logger.warnings.include?("stubbing method on non-mock object: #{non_mock_object}.existing_method") + assert !@logger.warnings.include?("stubbing method on non-mock object: #{non_mock_object.mocha_inspect}.existing_method") end def test_should_allow_stubbing_method_on_mock_object diff --git a/test/mini_test_result.rb b/test/mini_test_result.rb new file mode 100644 index 000000000..891b6842c --- /dev/null +++ b/test/mini_test_result.rb @@ -0,0 +1,74 @@ +require 'stringio' +require 'test/unit/testcase' +require 'minitest/unit' + +class MiniTestResult + def self.parse_failure(raw) + matches = %r{(Failure)\:\n([^\(]+)\(([^\)]+)\) \[([^\]]+)\]\:\n(.*)\n}m.match(raw) + return nil unless matches + Failure.new(matches[2], matches[3], [matches[4]], matches[5]) + end + + def self.parse_error(raw) + matches = %r{(Error)\:\n([^\(]+)\(([^\)]+)\)\:\n(.+?)\n.+ (.*)\n}m.match(raw) + return nil unless matches + Error.new(matches[2], matches[3], matches[4], [matches[5]]) + end + + class Failure + attr_reader :method, :test_case, :location, :message + def initialize(method, test_case, location, message) + @method, @test_case, @location, @message = method, test_case, location, message + end + end + + class Error + class Exception + attr_reader :message, :backtrace + def initialize(message, location) + @message, @backtrace = message, location + end + end + + attr_reader :method, :test_case, :exception + def initialize(method, test_case, message, backtrace) + @method, @test_case, @exception = method, test_case, Exception.new(message, backtrace) + end + end + + def initialize(runner, test) + @runner, @test = runner, test + end + + def failure_count + @runner.failures + end + + def assertion_count + @test._assertions + end + + def error_count + @runner.errors + end + + def passed? + @test.passed? + end + + def failures + @runner.report.map { |puked| MiniTestResult.parse_failure(puked) }.compact + end + + def errors + @runner.report.map { |puked| MiniTestResult.parse_error(puked) }.compact + end + + def failure_messages + failures.map(&:message) + end + + def error_messages + errors.map { |e| e.exception.message } + end +end \ No newline at end of file diff --git a/test/test_runner.rb b/test/test_runner.rb index a818cda17..140a30525 100644 --- a/test/test_runner.rb +++ b/test/test_runner.rb @@ -1,23 +1,37 @@ -require 'test/unit/testresult' require 'test/unit/testcase' +if defined?(MiniTest) + require 'mocha/integration/mini_test' + require File.expand_path('../mini_test_result', __FILE__) +else + require 'test/unit/testresult' +end + module TestRunner - - def run_as_test(test_result = Test::Unit::TestResult.new, &block) + def run_as_test(test_result = nil, &block) test_class = Class.new(Test::Unit::TestCase) do define_method(:test_me, &block) end test = test_class.new(:test_me) - test.run(test_result) {} - class << test_result - attr_reader :failures, :errors - def failure_messages - failures.map { |failure| failure.message } - end - def error_messages - errors.map { |error| error.message } + + if defined?(Test::Unit::TestResult) + test_result ||= Test::Unit::TestResult.new + test.run(test_result) {} + class << test_result + attr_reader :failures, :errors + def failure_messages + failures.map { |failure| failure.message } + end + def error_messages + errors.map { |error| error.message } + end end + else + runner = MiniTest::Unit.new + test.run(runner) + test_result = MiniTestResult.new(runner, test) end + test_result end