mocha 0.12.7 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. data/.yardopts +22 -0
  2. data/COPYING.md +3 -0
  3. data/README.md +230 -0
  4. data/{RELEASE.rdoc → RELEASE.md} +61 -47
  5. data/Rakefile +45 -37
  6. data/build-matrix.rb +16 -4
  7. data/lib/mocha/api.rb +13 -16
  8. data/lib/mocha/class_method.rb +7 -3
  9. data/lib/mocha/class_methods.rb +63 -0
  10. data/lib/mocha/debug.rb +11 -0
  11. data/lib/mocha/deprecation.rb +1 -1
  12. data/lib/mocha/exception_raiser.rb +1 -1
  13. data/lib/mocha/expectation_error.rb +5 -0
  14. data/lib/mocha/expectation_error_factory.rb +19 -0
  15. data/lib/mocha/hooks.rb +43 -0
  16. data/lib/mocha/integration/assertion_counter.rb +13 -0
  17. data/lib/mocha/integration/mini_test/adapter.rb +54 -0
  18. data/lib/mocha/integration/mini_test/exception_translation.rb +0 -6
  19. data/lib/mocha/integration/mini_test/nothing.rb +19 -0
  20. data/lib/mocha/integration/mini_test/version_13.rb +32 -25
  21. data/lib/mocha/integration/mini_test/version_140.rb +32 -26
  22. data/lib/mocha/integration/mini_test/version_141.rb +40 -34
  23. data/lib/mocha/integration/mini_test/version_142_to_172.rb +40 -34
  24. data/lib/mocha/integration/mini_test/version_200.rb +41 -35
  25. data/lib/mocha/integration/mini_test/version_201_to_222.rb +41 -35
  26. data/lib/mocha/integration/mini_test/version_2110_to_2111.rb +49 -43
  27. data/lib/mocha/integration/mini_test/version_2112_to_320.rb +53 -47
  28. data/lib/mocha/integration/mini_test/version_230_to_2101.rb +43 -37
  29. data/lib/mocha/integration/mini_test.rb +42 -51
  30. data/lib/mocha/integration/monkey_patcher.rb +18 -0
  31. data/lib/mocha/integration/test_unit/adapter.rb +51 -0
  32. data/lib/mocha/integration/test_unit/gem_version_200.rb +36 -29
  33. data/lib/mocha/integration/test_unit/gem_version_201_to_202.rb +36 -29
  34. data/lib/mocha/integration/test_unit/gem_version_203_to_220.rb +36 -29
  35. data/lib/mocha/integration/test_unit/gem_version_230_to_250.rb +65 -0
  36. data/lib/mocha/integration/test_unit/nothing.rb +19 -0
  37. data/lib/mocha/integration/test_unit/ruby_version_185_and_below.rb +36 -29
  38. data/lib/mocha/integration/test_unit/ruby_version_186_and_above.rb +37 -30
  39. data/lib/mocha/integration/test_unit.rb +38 -45
  40. data/lib/mocha/integration.rb +6 -38
  41. data/lib/mocha/method_matcher.rb +1 -1
  42. data/lib/mocha/module_methods.rb +14 -0
  43. data/lib/mocha/{object.rb → object_methods.rb} +0 -83
  44. data/lib/mocha/setup.rb +10 -0
  45. data/lib/mocha/standalone.rb +3 -0
  46. data/lib/mocha/version.rb +1 -1
  47. data/lib/mocha.rb +6 -2
  48. data/lib/mocha_standalone.rb +3 -1
  49. data/mocha.gemspec +16 -9
  50. data/test/acceptance/bug_18914_test.rb +1 -1
  51. data/test/acceptance/bug_21465_test.rb +1 -1
  52. data/test/acceptance/bug_21563_test.rb +1 -1
  53. data/test/acceptance/exception_rescue_test.rb +1 -1
  54. data/test/acceptance/expectations_on_multiple_methods_test.rb +1 -1
  55. data/test/acceptance/expected_invocation_count_test.rb +1 -1
  56. data/test/acceptance/failure_messages_test.rb +1 -1
  57. data/test/acceptance/issue_65_test.rb +1 -1
  58. data/test/acceptance/issue_70_test.rb +1 -1
  59. data/test/acceptance/mocha_example_test.rb +1 -1
  60. data/test/acceptance/mocha_test_result_test.rb +1 -1
  61. data/test/acceptance/mock_test.rb +1 -1
  62. data/test/acceptance/mock_with_initializer_block_test.rb +1 -1
  63. data/test/acceptance/mocked_methods_dispatch_test.rb +1 -1
  64. data/test/acceptance/multiple_expectations_failure_message_test.rb +1 -1
  65. data/test/acceptance/optional_parameters_test.rb +1 -1
  66. data/test/acceptance/parameter_matcher_test.rb +1 -1
  67. data/test/acceptance/partial_mocks_test.rb +1 -1
  68. data/test/acceptance/raise_exception_test.rb +1 -1
  69. data/test/acceptance/return_value_test.rb +1 -1
  70. data/test/acceptance/sequence_test.rb +1 -1
  71. data/test/acceptance/states_test.rb +1 -1
  72. data/test/acceptance/stub_any_instance_method_test.rb +1 -1
  73. data/test/acceptance/stub_class_method_defined_on_active_record_association_proxy_test.rb +1 -1
  74. data/test/acceptance/stub_class_method_defined_on_class_test.rb +1 -1
  75. data/test/acceptance/stub_class_method_defined_on_module_test.rb +1 -1
  76. data/test/acceptance/stub_class_method_defined_on_superclass_test.rb +1 -1
  77. data/test/acceptance/stub_everything_test.rb +1 -1
  78. data/test/acceptance/stub_instance_method_defined_on_active_record_association_proxy_test.rb +1 -1
  79. data/test/acceptance/stub_instance_method_defined_on_class_and_aliased_test.rb +1 -1
  80. data/test/acceptance/stub_instance_method_defined_on_class_test.rb +1 -1
  81. data/test/acceptance/stub_instance_method_defined_on_kernel_module_test.rb +1 -1
  82. data/test/acceptance/stub_instance_method_defined_on_module_test.rb +1 -1
  83. data/test/acceptance/stub_instance_method_defined_on_object_class_test.rb +1 -1
  84. data/test/acceptance/stub_instance_method_defined_on_singleton_class_test.rb +1 -1
  85. data/test/acceptance/stub_instance_method_defined_on_superclass_test.rb +1 -1
  86. data/test/acceptance/stub_module_method_test.rb +1 -1
  87. data/test/acceptance/stub_test.rb +1 -1
  88. data/test/acceptance/stubba_example_test.rb +1 -1
  89. data/test/acceptance/stubba_test_result_test.rb +1 -1
  90. data/test/acceptance/stubbing_error_backtrace_test.rb +1 -1
  91. data/test/acceptance/stubbing_frozen_object_test.rb +1 -1
  92. data/test/acceptance/stubbing_method_accepting_block_parameter_test.rb +1 -1
  93. data/test/acceptance/stubbing_method_unnecessarily_test.rb +1 -1
  94. data/test/acceptance/stubbing_nil_test.rb +1 -1
  95. data/test/acceptance/stubbing_non_existent_any_instance_method_test.rb +1 -1
  96. data/test/acceptance/stubbing_non_existent_class_method_test.rb +1 -1
  97. data/test/acceptance/stubbing_non_existent_instance_method_test.rb +1 -1
  98. data/test/acceptance/stubbing_non_public_any_instance_method_test.rb +1 -1
  99. data/test/acceptance/stubbing_non_public_class_method_test.rb +1 -1
  100. data/test/acceptance/stubbing_non_public_instance_method_test.rb +1 -1
  101. data/test/acceptance/stubbing_on_non_mock_object_test.rb +1 -1
  102. data/test/acceptance/stubbing_same_class_method_on_parent_and_child_classes_test.rb +3 -3
  103. data/test/acceptance/throw_test.rb +1 -1
  104. data/test/acceptance/unstubbing_test.rb +1 -1
  105. data/test/integration/mini_test_test.rb +9 -0
  106. data/test/integration/shared_tests.rb +174 -0
  107. data/test/integration/test_unit_test.rb +9 -0
  108. data/test/mini_test_result.rb +0 -1
  109. data/test/test_runner.rb +14 -14
  110. data/test/unit/class_methods_test.rb +40 -0
  111. data/test/unit/method_matcher_test.rb +5 -0
  112. data/test/unit/mock_test.rb +6 -0
  113. data/test/unit/module_methods_test.rb +19 -0
  114. data/test/unit/object_methods_test.rb +45 -0
  115. metadata +43 -42
  116. data/COPYING.rdoc +0 -3
  117. data/README.rdoc +0 -56
  118. data/examples/misc.rb +0 -43
  119. data/examples/mocha.rb +0 -25
  120. data/examples/stubba.rb +0 -64
  121. data/lib/mocha/integration/mini_test/assertion_counter.rb +0 -23
  122. data/lib/mocha/integration/mini_test/version_330_to_410.rb +0 -65
  123. data/lib/mocha/integration/test_unit/assertion_counter.rb +0 -23
  124. data/lib/mocha/integration/test_unit/gem_version_230_to_252.rb +0 -58
  125. data/lib/mocha/options.rb +0 -1
  126. data/test/acceptance/api_test.rb +0 -139
  127. data/test/acceptance/minitest_test.rb +0 -162
  128. data/test/unit/object_test.rb +0 -92
  129. /data/{MIT-LICENSE.rdoc → MIT-LICENSE.md} +0 -0
@@ -1,59 +1,65 @@
1
- require 'mocha/integration/mini_test/assertion_counter'
2
- require 'mocha/expectation_error'
1
+ require 'mocha/integration/assertion_counter'
2
+ require 'mocha/integration/monkey_patcher'
3
+ require 'mocha/integration/mini_test/exception_translation'
3
4
 
4
5
  module Mocha
5
-
6
6
  module Integration
7
-
8
7
  module MiniTest
9
-
10
8
  module Version230To2101
9
+ def self.applicable_to?(mini_test_version)
10
+ Gem::Requirement.new('>= 2.3.0', '<= 2.10.1').satisfied_by?(mini_test_version)
11
+ end
12
+
13
+ def self.description
14
+ "monkey patch for MiniTest gem >= v2.3.0 <= v2.10.1"
15
+ end
16
+
11
17
  def self.included(mod)
12
- $stderr.puts "Monkey patching MiniTest >= v2.3.0 <= v2.10.1" if $mocha_options['debug']
18
+ MonkeyPatcher.apply(mod, RunMethodPatch)
13
19
  end
14
- def run runner
15
- trap 'INFO' do
16
- time = runner.start_time ? Time.now - runner.start_time : 0
17
- warn "%s#%s %.2fs" % [self.class, self.__name__, time]
18
- runner.status $stderr
19
- end if ::MiniTest::Unit::TestCase::SUPPORTS_INFO_SIGNAL
20
20
 
21
- assertion_counter = AssertionCounter.new(self)
22
- result = ""
23
- begin
21
+ module RunMethodPatch
22
+ def run runner
23
+ trap 'INFO' do
24
+ time = runner.start_time ? Time.now - runner.start_time : 0
25
+ warn "%s#%s %.2fs" % [self.class, self.__name__, time]
26
+ runner.status $stderr
27
+ end if ::MiniTest::Unit::TestCase::SUPPORTS_INFO_SIGNAL
28
+
29
+ assertion_counter = AssertionCounter.new(self)
30
+ result = ""
24
31
  begin
25
- @passed = nil
26
- self.setup
27
- self.run_setup_hooks
28
- self.__send__ self.__name__
29
- mocha_verify(assertion_counter)
30
- result = "." unless io?
31
- @passed = true
32
- rescue *::MiniTest::Unit::TestCase::PASSTHROUGH_EXCEPTIONS
33
- raise
34
- rescue Exception => e
35
- @passed = false
36
- result = runner.puke self.class, self.__name__, Mocha::Integration::MiniTest.translate(e)
37
- ensure
38
32
  begin
39
- self.run_teardown_hooks
40
- self.teardown
33
+ @passed = nil
34
+ self.setup
35
+ self.run_setup_hooks
36
+ self.__send__ self.__name__
37
+ mocha_verify(assertion_counter)
38
+ result = "." unless io?
39
+ @passed = true
41
40
  rescue *::MiniTest::Unit::TestCase::PASSTHROUGH_EXCEPTIONS
42
41
  raise
43
42
  rescue Exception => e
43
+ @passed = false
44
44
  result = runner.puke self.class, self.__name__, Mocha::Integration::MiniTest.translate(e)
45
+ ensure
46
+ begin
47
+ self.run_teardown_hooks
48
+ self.teardown
49
+ rescue *::MiniTest::Unit::TestCase::PASSTHROUGH_EXCEPTIONS
50
+ raise
51
+ rescue Exception => e
52
+ result = runner.puke self.class, self.__name__, Mocha::Integration::MiniTest.translate(e)
53
+ end
54
+ trap 'INFO', 'DEFAULT' if ::MiniTest::Unit::TestCase::SUPPORTS_INFO_SIGNAL
45
55
  end
46
- trap 'INFO', 'DEFAULT' if ::MiniTest::Unit::TestCase::SUPPORTS_INFO_SIGNAL
56
+ ensure
57
+ mocha_teardown
47
58
  end
48
- ensure
49
- mocha_teardown
59
+ result
50
60
  end
51
- result
52
61
  end
53
62
  end
54
-
55
63
  end
56
-
57
64
  end
58
-
59
65
  end
@@ -1,62 +1,53 @@
1
- require 'mocha/api'
2
- require 'mocha/options'
3
-
4
- if !MiniTest::Unit::TestCase.ancestors.include?(Mocha::API)
5
-
6
- require 'mocha/integration/mini_test/exception_translation'
7
- require 'mocha/integration/mini_test/version_13'
8
- require 'mocha/integration/mini_test/version_140'
9
- require 'mocha/integration/mini_test/version_141'
10
- require 'mocha/integration/mini_test/version_142_to_172'
11
- require 'mocha/integration/mini_test/version_200'
12
- require 'mocha/integration/mini_test/version_201_to_222'
13
- require 'mocha/integration/mini_test/version_230_to_2101'
14
- require 'mocha/integration/mini_test/version_2110_to_2111'
15
- require 'mocha/integration/mini_test/version_2112_to_320'
16
- require 'mocha/integration/mini_test/version_330_to_410'
17
-
18
- module MiniTest
19
- class Unit
20
- class TestCase
21
-
22
- include Mocha::API
23
-
24
- alias_method :run_before_mocha, :run
25
- remove_method :run
1
+ require 'mocha/debug'
2
+
3
+ require 'mocha/integration/mini_test/nothing'
4
+ require 'mocha/integration/mini_test/version_13'
5
+ require 'mocha/integration/mini_test/version_140'
6
+ require 'mocha/integration/mini_test/version_141'
7
+ require 'mocha/integration/mini_test/version_142_to_172'
8
+ require 'mocha/integration/mini_test/version_200'
9
+ require 'mocha/integration/mini_test/version_201_to_222'
10
+ require 'mocha/integration/mini_test/version_230_to_2101'
11
+ require 'mocha/integration/mini_test/version_2110_to_2111'
12
+ require 'mocha/integration/mini_test/version_2112_to_320'
13
+ require 'mocha/integration/mini_test/adapter'
14
+
15
+ module Mocha
16
+ module Integration
17
+ module MiniTest
18
+ def self.activate
19
+ return false unless defined?(::MiniTest::Unit::TestCase)
26
20
 
27
21
  mini_test_version = begin
28
- Gem::Version.new(MiniTest::Unit::VERSION)
22
+ Gem::Version.new(::MiniTest::Unit::VERSION)
29
23
  rescue LoadError
30
24
  Gem::Version.new('0.0.0')
31
25
  end
32
26
 
33
- $stderr.puts "Detected MiniTest version: #{mini_test_version}" if $mocha_options['debug']
34
-
35
- if Gem::Requirement.new('>= 1.3.0', '<= 1.3.1').satisfied_by?(mini_test_version)
36
- include Mocha::Integration::MiniTest::Version13
37
- elsif Gem::Requirement.new('1.4.0').satisfied_by?(mini_test_version)
38
- include Mocha::Integration::MiniTest::Version140
39
- elsif Gem::Requirement.new('1.4.1').satisfied_by?(mini_test_version)
40
- include Mocha::Integration::MiniTest::Version141
41
- elsif Gem::Requirement.new('>= 1.4.2', '<= 1.7.2').satisfied_by?(mini_test_version)
42
- include Mocha::Integration::MiniTest::Version142To172
43
- elsif Gem::Requirement.new('2.0.0').satisfied_by?(mini_test_version)
44
- include Mocha::Integration::MiniTest::Version200
45
- elsif Gem::Requirement.new('>= 2.0.1', '<= 2.2.2').satisfied_by?(mini_test_version)
46
- include Mocha::Integration::MiniTest::Version201To222
47
- elsif Gem::Requirement.new('>= 2.3.0', '<= 2.10.1').satisfied_by?(mini_test_version)
48
- include Mocha::Integration::MiniTest::Version230To2101
49
- elsif Gem::Requirement.new('>= 2.11.0', '<= 2.11.1').satisfied_by?(mini_test_version)
50
- include Mocha::Integration::MiniTest::Version2110To2111
51
- elsif Gem::Requirement.new('>= 2.11.2', '<= 3.2.0').satisfied_by?(mini_test_version)
52
- include Mocha::Integration::MiniTest::Version2112To320
53
- elsif Gem::Requirement.new('>= 3.3.0', '<= 4.1.0').satisfied_by?(mini_test_version)
54
- include Mocha::Integration::MiniTest::Version330To410
55
- else
56
- raise "No Mocha monkey-patch for MiniTest version"
27
+ Debug.puts "Detected MiniTest version: #{mini_test_version}"
28
+
29
+ integration_module = [
30
+ MiniTest::Adapter,
31
+ MiniTest::Version2112To320,
32
+ MiniTest::Version2110To2111,
33
+ MiniTest::Version230To2101,
34
+ MiniTest::Version201To222,
35
+ MiniTest::Version200,
36
+ MiniTest::Version142To172,
37
+ MiniTest::Version141,
38
+ MiniTest::Version140,
39
+ MiniTest::Version13,
40
+ MiniTest::Nothing
41
+ ].detect { |m| m.applicable_to?(mini_test_version) }
42
+
43
+ unless ::MiniTest::Unit::TestCase < integration_module
44
+ Debug.puts "Applying #{integration_module.description}"
45
+ ::MiniTest::Unit::TestCase.send(:include, integration_module)
57
46
  end
58
-
59
47
  end
48
+ true
60
49
  end
61
50
  end
62
51
  end
52
+
53
+
@@ -0,0 +1,18 @@
1
+ require 'mocha/api'
2
+
3
+ module Mocha
4
+ module Integration
5
+ module MonkeyPatcher
6
+ def self.apply(mod, run_method_patch)
7
+ unless mod < Mocha::API
8
+ mod.send(:include, Mocha::API)
9
+ end
10
+ unless mod.method_defined?(:run_before_mocha)
11
+ mod.send(:alias_method, :run_before_mocha, :run)
12
+ mod.send(:remove_method, :run)
13
+ mod.send(:include, run_method_patch)
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,51 @@
1
+ require 'mocha/api'
2
+ require 'mocha/integration/assertion_counter'
3
+ require 'mocha/expectation_error'
4
+
5
+ module Mocha
6
+ module Integration
7
+ module TestUnit
8
+
9
+ # Integrates Mocha into recent versions of Test::Unit.
10
+ #
11
+ # See the source code for an example of how to integrate Mocha into a test library.
12
+ module Adapter
13
+ include Mocha::API
14
+
15
+ # @private
16
+ def self.applicable_to?(test_unit_version, ruby_version = nil)
17
+ Gem::Requirement.new('>= 2.5.1').satisfied_by?(test_unit_version)
18
+ end
19
+
20
+ # @private
21
+ def self.description
22
+ "adapter for Test::Unit gem >= v2.5.1"
23
+ end
24
+
25
+ # @private
26
+ def self.included(mod)
27
+ mod.setup :mocha_setup, :before => :prepend
28
+
29
+ mod.exception_handler(:handle_mocha_expectation_error)
30
+
31
+ mod.cleanup :after => :append do
32
+ assertion_counter = Integration::AssertionCounter.new(self)
33
+ mocha_verify(assertion_counter)
34
+ end
35
+
36
+ mod.teardown :mocha_teardown, :after => :append
37
+ end
38
+
39
+ private
40
+
41
+ # @private
42
+ def handle_mocha_expectation_error(e)
43
+ return false unless e.is_a?(Mocha::ExpectationError)
44
+ problem_occurred
45
+ add_failure(e.message, e.backtrace)
46
+ true
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -1,52 +1,59 @@
1
- require 'test/unit/testcase'
2
- require 'mocha/integration/test_unit/assertion_counter'
1
+ require 'mocha/integration/assertion_counter'
2
+ require 'mocha/integration/monkey_patcher'
3
3
  require 'mocha/expectation_error'
4
4
 
5
5
  module Mocha
6
-
7
6
  module Integration
8
-
9
7
  module TestUnit
10
-
11
8
  module GemVersion200
9
+ def self.applicable_to?(test_unit_version, ruby_version = nil)
10
+ Gem::Requirement.new('2.0.0').satisfied_by?(test_unit_version)
11
+ end
12
+
13
+ def self.description
14
+ "monkey patch for Test::Unit gem v2.0.0"
15
+ end
16
+
12
17
  def self.included(mod)
13
- $stderr.puts "Monkey patching Test::Unit gem v2.0.0" if $mocha_options['debug']
18
+ MonkeyPatcher.apply(mod, RunMethodPatch)
14
19
  end
15
- def run(result)
16
- assertion_counter = AssertionCounter.new(result)
17
- begin
18
- @_result = result
19
- yield(Test::Unit::TestCase::STARTED, name)
20
+
21
+ module RunMethodPatch
22
+ def run(result)
23
+ assertion_counter = AssertionCounter.new(self)
20
24
  begin
25
+ @_result = result
26
+ yield(Test::Unit::TestCase::STARTED, name)
21
27
  begin
22
- run_setup
23
- __send__(@method_name)
24
- mocha_verify(assertion_counter)
25
- rescue Mocha::ExpectationError => e
26
- add_failure(e.message, e.backtrace)
27
- rescue Exception
28
- @interrupted = true
29
- raise unless handle_exception($!)
30
- ensure
31
28
  begin
32
- run_teardown
29
+ run_setup
30
+ __send__(@method_name)
31
+ mocha_verify(assertion_counter)
32
+ rescue Mocha::ExpectationError => e
33
+ add_failure(e.message, e.backtrace)
33
34
  rescue Exception
35
+ @interrupted = true
34
36
  raise unless handle_exception($!)
37
+ ensure
38
+ begin
39
+ run_teardown
40
+ rescue Mocha::ExpectationError => e
41
+ add_failure(e.message, e.backtrace)
42
+ rescue Exception
43
+ raise unless handle_exception($!)
44
+ end
35
45
  end
46
+ ensure
47
+ mocha_teardown
36
48
  end
49
+ result.add_run
50
+ yield(Test::Unit::TestCase::FINISHED, name)
37
51
  ensure
38
- mocha_teardown
52
+ @_result = nil
39
53
  end
40
- result.add_run
41
- yield(Test::Unit::TestCase::FINISHED, name)
42
- ensure
43
- @_result = nil
44
54
  end
45
55
  end
46
56
  end
47
-
48
57
  end
49
-
50
58
  end
51
-
52
59
  end
@@ -1,52 +1,59 @@
1
- require 'test/unit/testcase'
2
- require 'mocha/integration/test_unit/assertion_counter'
1
+ require 'mocha/integration/assertion_counter'
2
+ require 'mocha/integration/monkey_patcher'
3
3
  require 'mocha/expectation_error'
4
4
 
5
5
  module Mocha
6
-
7
6
  module Integration
8
-
9
7
  module TestUnit
10
-
11
8
  module GemVersion201To202
9
+ def self.applicable_to?(test_unit_version, ruby_version = nil)
10
+ Gem::Requirement.new('>= 2.0.1', '<= 2.0.2').satisfied_by?(test_unit_version)
11
+ end
12
+
13
+ def self.description
14
+ "monkey patch for Test::Unit gem >= v2.0.1 and <= v2.0.2"
15
+ end
16
+
12
17
  def self.included(mod)
13
- $stderr.puts "Monkey patching Test::Unit gem >= v2.0.1 and <= v2.0.2" if $mocha_options['debug']
18
+ MonkeyPatcher.apply(mod, RunMethodPatch)
14
19
  end
15
- def run(result)
16
- assertion_counter = AssertionCounter.new(result)
17
- begin
18
- @_result = result
19
- yield(Test::Unit::TestCase::STARTED, name)
20
+
21
+ module RunMethodPatch
22
+ def run(result)
23
+ assertion_counter = AssertionCounter.new(self)
20
24
  begin
25
+ @_result = result
26
+ yield(Test::Unit::TestCase::STARTED, name)
21
27
  begin
22
- run_setup
23
- run_test
24
- mocha_verify(assertion_counter)
25
- rescue Mocha::ExpectationError => e
26
- add_failure(e.message, e.backtrace)
27
- rescue Exception
28
- @interrupted = true
29
- raise unless handle_exception($!)
30
- ensure
31
28
  begin
32
- run_teardown
29
+ run_setup
30
+ run_test
31
+ mocha_verify(assertion_counter)
32
+ rescue Mocha::ExpectationError => e
33
+ add_failure(e.message, e.backtrace)
33
34
  rescue Exception
35
+ @interrupted = true
34
36
  raise unless handle_exception($!)
37
+ ensure
38
+ begin
39
+ run_teardown
40
+ rescue Mocha::ExpectationError => e
41
+ add_failure(e.message, e.backtrace)
42
+ rescue Exception
43
+ raise unless handle_exception($!)
44
+ end
35
45
  end
46
+ ensure
47
+ mocha_teardown
36
48
  end
49
+ result.add_run
50
+ yield(Test::Unit::TestCase::FINISHED, name)
37
51
  ensure
38
- mocha_teardown
52
+ @_result = nil
39
53
  end
40
- result.add_run
41
- yield(Test::Unit::TestCase::FINISHED, name)
42
- ensure
43
- @_result = nil
44
54
  end
45
55
  end
46
56
  end
47
-
48
57
  end
49
-
50
58
  end
51
-
52
59
  end
@@ -1,52 +1,59 @@
1
- require 'test/unit/testcase'
2
- require 'mocha/integration/test_unit/assertion_counter'
1
+ require 'mocha/integration/assertion_counter'
2
+ require 'mocha/integration/monkey_patcher'
3
3
  require 'mocha/expectation_error'
4
4
 
5
5
  module Mocha
6
-
7
6
  module Integration
8
-
9
7
  module TestUnit
10
-
11
8
  module GemVersion203To220
9
+ def self.applicable_to?(test_unit_version, ruby_version = nil)
10
+ Gem::Requirement.new('>= 2.0.3', '<= 2.2.0').satisfied_by?(test_unit_version)
11
+ end
12
+
13
+ def self.description
14
+ "monkey patch for Test::Unit gem >= v2.0.3 and <= v2.2.0"
15
+ end
16
+
12
17
  def self.included(mod)
13
- $stderr.puts "Monkey patching Test::Unit gem >= v2.0.3 and <= v2.2.0" if $mocha_options['debug']
18
+ MonkeyPatcher.apply(mod, RunMethodPatch)
14
19
  end
15
- def run(result)
16
- assertion_counter = AssertionCounter.new(result)
17
- begin
18
- @_result = result
19
- yield(Test::Unit::TestCase::STARTED, name)
20
+
21
+ module RunMethodPatch
22
+ def run(result)
23
+ assertion_counter = AssertionCounter.new(self)
20
24
  begin
25
+ @_result = result
26
+ yield(Test::Unit::TestCase::STARTED, name)
21
27
  begin
22
- run_setup
23
- run_test
24
- mocha_verify(assertion_counter)
25
- rescue Mocha::ExpectationError => e
26
- add_failure(e.message, e.backtrace)
27
- rescue Exception
28
- @interrupted = true
29
- raise unless handle_exception($!)
30
- ensure
31
28
  begin
32
- run_teardown
29
+ run_setup
30
+ run_test
31
+ mocha_verify(assertion_counter)
32
+ rescue Mocha::ExpectationError => e
33
+ add_failure(e.message, e.backtrace)
33
34
  rescue Exception
35
+ @interrupted = true
34
36
  raise unless handle_exception($!)
37
+ ensure
38
+ begin
39
+ run_teardown
40
+ rescue Mocha::ExpectationError => e
41
+ add_failure(e.message, e.backtrace)
42
+ rescue Exception
43
+ raise unless handle_exception($!)
44
+ end
35
45
  end
46
+ ensure
47
+ mocha_teardown
36
48
  end
49
+ result.add_run
50
+ yield(Test::Unit::TestCase::FINISHED, name)
37
51
  ensure
38
- mocha_teardown
52
+ # @_result = nil # For test-spec's after_all :<
39
53
  end
40
- result.add_run
41
- yield(Test::Unit::TestCase::FINISHED, name)
42
- ensure
43
- # @_result = nil # For test-spec's after_all :<
44
54
  end
45
55
  end
46
56
  end
47
-
48
57
  end
49
-
50
58
  end
51
-
52
59
  end
@@ -0,0 +1,65 @@
1
+ require 'mocha/integration/assertion_counter'
2
+ require 'mocha/integration/monkey_patcher'
3
+ require 'mocha/expectation_error'
4
+
5
+ module Mocha
6
+ module Integration
7
+ module TestUnit
8
+ module GemVersion230To250
9
+ def self.applicable_to?(test_unit_version, ruby_version = nil)
10
+ Gem::Requirement.new('>= 2.3.0', '<= 2.5.0').satisfied_by?(test_unit_version)
11
+ end
12
+
13
+ def self.description
14
+ "monkey patch for Test::Unit gem >= v2.3.0 and <= v2.5.0"
15
+ end
16
+
17
+ def self.included(mod)
18
+ MonkeyPatcher.apply(mod, RunMethodPatch)
19
+ end
20
+
21
+ module RunMethodPatch
22
+ def run(result)
23
+ assertion_counter = AssertionCounter.new(self)
24
+ begin
25
+ @internal_data.test_started
26
+ @_result = result
27
+ yield(Test::Unit::TestCase::STARTED, name)
28
+ yield(Test::Unit::TestCase::STARTED_OBJECT, self)
29
+ begin
30
+ begin
31
+ run_setup
32
+ run_test
33
+ run_cleanup
34
+ mocha_verify(assertion_counter)
35
+ add_pass
36
+ rescue Mocha::ExpectationError => e
37
+ add_failure(e.message, e.backtrace)
38
+ rescue Exception
39
+ @internal_data.interrupted
40
+ raise unless handle_exception($!)
41
+ ensure
42
+ begin
43
+ run_teardown
44
+ rescue Mocha::ExpectationError => e
45
+ add_failure(e.message, e.backtrace)
46
+ rescue Exception
47
+ raise unless handle_exception($!)
48
+ end
49
+ end
50
+ ensure
51
+ mocha_teardown
52
+ end
53
+ @internal_data.test_finished
54
+ result.add_run
55
+ yield(Test::Unit::TestCase::FINISHED, name)
56
+ yield(Test::Unit::TestCase::FINISHED_OBJECT, self)
57
+ ensure
58
+ # @_result = nil # For test-spec's after_all :<
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,19 @@
1
+ module Mocha
2
+ module Integration
3
+ module TestUnit
4
+ module Nothing
5
+ def self.applicable_to?(test_unit_version, ruby_version = nil)
6
+ true
7
+ end
8
+
9
+ def self.description
10
+ "nothing (no Test::Unit integration available)"
11
+ end
12
+
13
+ def self.included(mod)
14
+ raise "No Test::Unit integration available"
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end