mocha 0.12.8 → 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 (133) 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 -50
  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 -57
  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 +44 -72
  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/gemfiles/Gemfile.minitest.3.3.0 +0 -7
  122. data/gemfiles/Gemfile.minitest.4.2.0 +0 -7
  123. data/lib/mocha/integration/mini_test/assertion_counter.rb +0 -23
  124. data/lib/mocha/integration/mini_test/version_330_to_410.rb +0 -65
  125. data/lib/mocha/integration/mini_test/version_420_to_433.rb +0 -70
  126. data/lib/mocha/integration/mini_test/version_440.rb +0 -70
  127. data/lib/mocha/integration/test_unit/assertion_counter.rb +0 -23
  128. data/lib/mocha/integration/test_unit/gem_version_230_to_253.rb +0 -58
  129. data/lib/mocha/options.rb +0 -1
  130. data/test/acceptance/api_test.rb +0 -139
  131. data/test/acceptance/minitest_test.rb +0 -162
  132. data/test/unit/object_test.rb +0 -92
  133. /data/{MIT-LICENSE.rdoc → MIT-LICENSE.md} +0 -0
@@ -1,56 +1,62 @@
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 Version141
9
+ def self.applicable_to?(mini_test_version)
10
+ Gem::Requirement.new('1.4.1').satisfied_by?(mini_test_version)
11
+ end
12
+
13
+ def self.description
14
+ "monkey patch for MiniTest gem v1.4.1"
15
+ end
16
+
11
17
  def self.included(mod)
12
- $stderr.puts "Monkey patching MiniTest v1.4.1"
18
+ MonkeyPatcher.apply(mod, RunMethodPatch)
13
19
  end
14
- def run runner
15
- trap 'INFO' do
16
- warn '%s#%s %.2fs' % [self.class, self.__name__,
17
- (Time.now - runner.start_time)]
18
- runner.status $stderr
19
- end
20
20
 
21
- assertion_counter = AssertionCounter.new(self)
22
- result = '.'
23
- begin
21
+ module RunMethodPatch
22
+ def run runner
23
+ trap 'INFO' do
24
+ warn '%s#%s %.2fs' % [self.class, self.__name__,
25
+ (Time.now - runner.start_time)]
26
+ runner.status $stderr
27
+ end
28
+
29
+ assertion_counter = AssertionCounter.new(self)
30
+ result = '.'
24
31
  begin
25
- @passed = nil
26
- self.setup
27
- self.__send__ self.__name__
28
- mocha_verify(assertion_counter)
29
- @passed = true
30
- rescue *::MiniTest::Unit::TestCase::PASSTHROUGH_EXCEPTIONS
31
- raise
32
- rescue Exception => e
33
- @passed = false
34
- result = runner.puke(self.class, self.__name__, Mocha::Integration::MiniTest.translate(e))
35
- ensure
36
32
  begin
37
- self.teardown
33
+ @passed = nil
34
+ self.setup
35
+ self.__send__ self.__name__
36
+ mocha_verify(assertion_counter)
37
+ @passed = true
38
38
  rescue *::MiniTest::Unit::TestCase::PASSTHROUGH_EXCEPTIONS
39
39
  raise
40
40
  rescue Exception => e
41
+ @passed = false
41
42
  result = runner.puke(self.class, self.__name__, Mocha::Integration::MiniTest.translate(e))
43
+ ensure
44
+ begin
45
+ self.teardown
46
+ rescue *::MiniTest::Unit::TestCase::PASSTHROUGH_EXCEPTIONS
47
+ raise
48
+ rescue Exception => e
49
+ result = runner.puke(self.class, self.__name__, Mocha::Integration::MiniTest.translate(e))
50
+ end
51
+ trap 'INFO', 'DEFAULT'
42
52
  end
43
- trap 'INFO', 'DEFAULT'
53
+ ensure
54
+ mocha_teardown
44
55
  end
45
- ensure
46
- mocha_teardown
56
+ result
47
57
  end
48
- result
49
58
  end
50
59
  end
51
-
52
60
  end
53
-
54
61
  end
55
-
56
62
  end
@@ -1,56 +1,62 @@
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 Version142To172
9
+ def self.applicable_to?(mini_test_version)
10
+ Gem::Requirement.new('>= 1.4.2', '<= 1.7.2').satisfied_by?(mini_test_version)
11
+ end
12
+
13
+ def self.description
14
+ "monkey patch for MiniTest gem >= v1.4.2 and <= v1.7.2"
15
+ end
16
+
11
17
  def self.included(mod)
12
- $stderr.puts "Monkey patching MiniTest >= v1.4.2 and <= v1.7.2" if $mocha_options['debug']
18
+ MonkeyPatcher.apply(mod, RunMethodPatch)
13
19
  end
14
- def run runner
15
- trap 'INFO' do
16
- warn '%s#%s %.2fs' % [self.class, self.__name__,
17
- (Time.now - runner.start_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
+ warn '%s#%s %.2fs' % [self.class, self.__name__,
25
+ (Time.now - runner.start_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.__send__ self.__name__
28
- mocha_verify(assertion_counter)
29
- @passed = true
30
- rescue *::MiniTest::Unit::TestCase::PASSTHROUGH_EXCEPTIONS
31
- raise
32
- rescue Exception => e
33
- @passed = false
34
- result = runner.puke(self.class, self.__name__, Mocha::Integration::MiniTest.translate(e))
35
- ensure
36
32
  begin
37
- self.teardown
33
+ @passed = nil
34
+ self.setup
35
+ self.__send__ self.__name__
36
+ mocha_verify(assertion_counter)
37
+ @passed = true
38
38
  rescue *::MiniTest::Unit::TestCase::PASSTHROUGH_EXCEPTIONS
39
39
  raise
40
40
  rescue Exception => e
41
+ @passed = false
41
42
  result = runner.puke(self.class, self.__name__, Mocha::Integration::MiniTest.translate(e))
43
+ ensure
44
+ begin
45
+ self.teardown
46
+ rescue *::MiniTest::Unit::TestCase::PASSTHROUGH_EXCEPTIONS
47
+ raise
48
+ rescue Exception => e
49
+ result = runner.puke(self.class, self.__name__, Mocha::Integration::MiniTest.translate(e))
50
+ end
51
+ trap 'INFO', 'DEFAULT' if ::MiniTest::Unit::TestCase::SUPPORTS_INFO_SIGNAL
42
52
  end
43
- trap 'INFO', 'DEFAULT' if ::MiniTest::Unit::TestCase::SUPPORTS_INFO_SIGNAL
53
+ ensure
54
+ mocha_teardown
44
55
  end
45
- ensure
46
- mocha_teardown
56
+ result
47
57
  end
48
- result
49
58
  end
50
59
  end
51
-
52
60
  end
53
-
54
61
  end
55
-
56
62
  end
@@ -1,57 +1,63 @@
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 Version200
9
+ def self.applicable_to?(mini_test_version)
10
+ Gem::Requirement.new('2.0.0').satisfied_by?(mini_test_version)
11
+ end
12
+
13
+ def self.description
14
+ "monkey patch for MiniTest gem v2.0.0"
15
+ end
16
+
11
17
  def self.included(mod)
12
- $stderr.puts "Monkey patching MiniTest v2.0.0" if $mocha_options['debug']
18
+ MonkeyPatcher.apply(mod, RunMethodPatch)
13
19
  end
14
- def run runner
15
- trap 'INFO' do
16
- time = Time.now - runner.start_time
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 = Time.now - runner.start_time
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.__send__ self.__name__
28
- mocha_verify(assertion_counter)
29
- result = "." unless io?
30
- @passed = true
31
- rescue *::MiniTest::Unit::TestCase::PASSTHROUGH_EXCEPTIONS
32
- raise
33
- rescue Exception => e
34
- @passed = false
35
- result = runner.puke self.class, self.__name__, Mocha::Integration::MiniTest.translate(e)
36
- ensure
37
32
  begin
38
- self.teardown
33
+ @passed = nil
34
+ self.setup
35
+ self.__send__ self.__name__
36
+ mocha_verify(assertion_counter)
37
+ result = "." unless io?
38
+ @passed = true
39
39
  rescue *::MiniTest::Unit::TestCase::PASSTHROUGH_EXCEPTIONS
40
40
  raise
41
41
  rescue Exception => e
42
+ @passed = false
42
43
  result = runner.puke self.class, self.__name__, Mocha::Integration::MiniTest.translate(e)
44
+ ensure
45
+ begin
46
+ self.teardown
47
+ rescue *::MiniTest::Unit::TestCase::PASSTHROUGH_EXCEPTIONS
48
+ raise
49
+ rescue Exception => e
50
+ result = runner.puke self.class, self.__name__, Mocha::Integration::MiniTest.translate(e)
51
+ end
52
+ trap 'INFO', 'DEFAULT' if ::MiniTest::Unit::TestCase::SUPPORTS_INFO_SIGNAL
43
53
  end
44
- trap 'INFO', 'DEFAULT' if ::MiniTest::Unit::TestCase::SUPPORTS_INFO_SIGNAL
54
+ ensure
55
+ mocha_teardown
45
56
  end
46
- ensure
47
- mocha_teardown
57
+ result
48
58
  end
49
- result
50
59
  end
51
60
  end
52
-
53
61
  end
54
-
55
62
  end
56
-
57
63
  end
@@ -1,57 +1,63 @@
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 Version201To222
9
+ def self.applicable_to?(mini_test_version)
10
+ Gem::Requirement.new('>= 2.0.1', '<= 2.2.2').satisfied_by?(mini_test_version)
11
+ end
12
+
13
+ def self.description
14
+ "monkey patch for MiniTest gem >= v2.0.1 <= v2.2.2"
15
+ end
16
+
11
17
  def self.included(mod)
12
- $stderr.puts "Monkey patching MiniTest >= v2.0.1 <= v2.2.2" 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.__send__ self.__name__
28
- mocha_verify(assertion_counter)
29
- result = "." unless io?
30
- @passed = true
31
- rescue *::MiniTest::Unit::TestCase::PASSTHROUGH_EXCEPTIONS
32
- raise
33
- rescue Exception => e
34
- @passed = false
35
- result = runner.puke self.class, self.__name__, Mocha::Integration::MiniTest.translate(e)
36
- ensure
37
32
  begin
38
- self.teardown
33
+ @passed = nil
34
+ self.setup
35
+ self.__send__ self.__name__
36
+ mocha_verify(assertion_counter)
37
+ result = "." unless io?
38
+ @passed = true
39
39
  rescue *::MiniTest::Unit::TestCase::PASSTHROUGH_EXCEPTIONS
40
40
  raise
41
41
  rescue Exception => e
42
+ @passed = false
42
43
  result = runner.puke self.class, self.__name__, Mocha::Integration::MiniTest.translate(e)
44
+ ensure
45
+ begin
46
+ self.teardown
47
+ rescue *::MiniTest::Unit::TestCase::PASSTHROUGH_EXCEPTIONS
48
+ raise
49
+ rescue Exception => e
50
+ result = runner.puke self.class, self.__name__, Mocha::Integration::MiniTest.translate(e)
51
+ end
52
+ trap 'INFO', 'DEFAULT' if ::MiniTest::Unit::TestCase::SUPPORTS_INFO_SIGNAL
43
53
  end
44
- trap 'INFO', 'DEFAULT' if ::MiniTest::Unit::TestCase::SUPPORTS_INFO_SIGNAL
54
+ ensure
55
+ mocha_teardown
45
56
  end
46
- ensure
47
- mocha_teardown
57
+ result
48
58
  end
49
- result
50
59
  end
51
60
  end
52
-
53
61
  end
54
-
55
62
  end
56
-
57
63
  end
@@ -1,61 +1,67 @@
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 Version2110To2111
9
+ def self.applicable_to?(mini_test_version)
10
+ Gem::Requirement.new('>= 2.11.0', '<= 2.11.1').satisfied_by?(mini_test_version)
11
+ end
12
+
13
+ def self.description
14
+ "monkey patch for MiniTest gem >= v2.11.0 <= v2.11.1"
15
+ end
16
+
11
17
  def self.included(mod)
12
- $stderr.puts "Monkey patching MiniTest >= v2.11.0 <= v2.11.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.before_setup
27
- self.setup
28
- self.after_setup
29
- self.run_test self.__name__
30
- mocha_verify(assertion_counter)
31
- result = "." unless io?
32
- @passed = true
33
- rescue *::MiniTest::Unit::TestCase::PASSTHROUGH_EXCEPTIONS
34
- raise
35
- rescue Exception => e
36
- @passed = false
37
- result = runner.puke self.class, self.__name__, Mocha::Integration::MiniTest.translate(e)
38
- ensure
39
- %w{ before_teardown teardown after_teardown }.each do |hook|
40
- begin
41
- self.send hook
42
- rescue *::MiniTest::Unit::TestCase::PASSTHROUGH_EXCEPTIONS
43
- raise
44
- rescue Exception => e
45
- result = runner.puke self.class, self.__name__, Mocha::Integration::MiniTest.translate(e)
32
+ begin
33
+ @passed = nil
34
+ self.before_setup
35
+ self.setup
36
+ self.after_setup
37
+ self.run_test self.__name__
38
+ mocha_verify(assertion_counter)
39
+ result = "." unless io?
40
+ @passed = true
41
+ rescue *::MiniTest::Unit::TestCase::PASSTHROUGH_EXCEPTIONS
42
+ raise
43
+ rescue Exception => e
44
+ @passed = false
45
+ result = runner.puke self.class, self.__name__, Mocha::Integration::MiniTest.translate(e)
46
+ ensure
47
+ %w{ before_teardown teardown after_teardown }.each do |hook|
48
+ begin
49
+ self.send hook
50
+ rescue *::MiniTest::Unit::TestCase::PASSTHROUGH_EXCEPTIONS
51
+ raise
52
+ rescue Exception => e
53
+ result = runner.puke self.class, self.__name__, Mocha::Integration::MiniTest.translate(e)
54
+ end
46
55
  end
56
+ trap 'INFO', 'DEFAULT' if ::MiniTest::Unit::TestCase::SUPPORTS_INFO_SIGNAL
47
57
  end
48
- trap 'INFO', 'DEFAULT' if ::MiniTest::Unit::TestCase::SUPPORTS_INFO_SIGNAL
58
+ ensure
59
+ mocha_teardown
49
60
  end
50
- ensure
51
- mocha_teardown
61
+ result
52
62
  end
53
- result
54
63
  end
55
64
  end
56
-
57
65
  end
58
-
59
66
  end
60
-
61
67
  end
@@ -1,64 +1,70 @@
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 Version2112To320
9
+ def self.applicable_to?(mini_test_version)
10
+ Gem::Requirement.new('>= 2.11.2', '<= 3.2.0').satisfied_by?(mini_test_version)
11
+ end
12
+
13
+ def self.description
14
+ "monkey patch for MiniTest gem >= v2.11.2 <= v3.2.0"
15
+ end
16
+
11
17
  def self.included(mod)
12
- $stderr.puts "Monkey patching MiniTest >= v2.11.2 <= v3.2.0" if $mocha_options['debug']
18
+ MonkeyPatcher.apply(mod, RunMethodPatch)
13
19
  end
14
- def run runner
15
- trap "INFO" do
16
- runner.report.each_with_index do |msg, i|
17
- warn "\n%3d) %s" % [i + 1, msg]
18
- end
19
- warn ''
20
- time = runner.start_time ? Time.now - runner.start_time : 0
21
- warn "Current Test: %s#%s %.2fs" % [self.class, self.__name__, time]
22
- runner.status $stderr
23
- end if ::MiniTest::Unit::TestCase::SUPPORTS_INFO_SIGNAL
24
- assertion_counter = AssertionCounter.new(self)
25
- result = ""
26
- begin
20
+
21
+ module RunMethodPatch
22
+ def run runner
23
+ trap "INFO" do
24
+ runner.report.each_with_index do |msg, i|
25
+ warn "\n%3d) %s" % [i + 1, msg]
26
+ end
27
+ warn ''
28
+ time = runner.start_time ? Time.now - runner.start_time : 0
29
+ warn "Current Test: %s#%s %.2fs" % [self.class, self.__name__, time]
30
+ runner.status $stderr
31
+ end if ::MiniTest::Unit::TestCase::SUPPORTS_INFO_SIGNAL
32
+ assertion_counter = AssertionCounter.new(self)
33
+ result = ""
27
34
  begin
28
- @passed = nil
29
- self.before_setup
30
- self.setup
31
- self.after_setup
32
- self.run_test self.__name__
33
- mocha_verify(assertion_counter)
34
- result = "." unless io?
35
- @passed = true
36
- rescue *::MiniTest::Unit::TestCase::PASSTHROUGH_EXCEPTIONS
37
- raise
38
- rescue Exception => e
39
- @passed = false
40
- result = runner.puke self.class, self.__name__, Mocha::Integration::MiniTest.translate(e)
41
- ensure
42
- %w{ before_teardown teardown after_teardown }.each do |hook|
43
- begin
44
- self.send hook
45
- rescue *::MiniTest::Unit::TestCase::PASSTHROUGH_EXCEPTIONS
46
- raise
47
- rescue Exception => e
48
- result = runner.puke self.class, self.__name__, Mocha::Integration::MiniTest.translate(e)
35
+ begin
36
+ @passed = nil
37
+ self.before_setup
38
+ self.setup
39
+ self.after_setup
40
+ self.run_test self.__name__
41
+ mocha_verify(assertion_counter)
42
+ result = "." unless io?
43
+ @passed = true
44
+ rescue *::MiniTest::Unit::TestCase::PASSTHROUGH_EXCEPTIONS
45
+ raise
46
+ rescue Exception => e
47
+ @passed = false
48
+ result = runner.puke self.class, self.__name__, Mocha::Integration::MiniTest.translate(e)
49
+ ensure
50
+ %w{ before_teardown teardown after_teardown }.each do |hook|
51
+ begin
52
+ self.send hook
53
+ rescue *::MiniTest::Unit::TestCase::PASSTHROUGH_EXCEPTIONS
54
+ raise
55
+ rescue Exception => e
56
+ result = runner.puke self.class, self.__name__, Mocha::Integration::MiniTest.translate(e)
57
+ end
49
58
  end
59
+ trap 'INFO', 'DEFAULT' if ::MiniTest::Unit::TestCase::SUPPORTS_INFO_SIGNAL
50
60
  end
51
- trap 'INFO', 'DEFAULT' if ::MiniTest::Unit::TestCase::SUPPORTS_INFO_SIGNAL
61
+ ensure
62
+ mocha_teardown
52
63
  end
53
- ensure
54
- mocha_teardown
64
+ result
55
65
  end
56
- result
57
66
  end
58
67
  end
59
-
60
68
  end
61
-
62
69
  end
63
-
64
70
  end