mocha 1.6.0 → 1.7.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 (229) hide show
  1. checksums.yaml +5 -5
  2. data/.rubocop.yml +58 -0
  3. data/.rubocop_todo.yml +50 -0
  4. data/RELEASE.md +7 -0
  5. data/Rakefile +35 -28
  6. data/bin/build-matrix +17 -18
  7. data/lib/mocha/any_instance_method.rb +19 -25
  8. data/lib/mocha/api.rb +1 -5
  9. data/lib/mocha/argument_iterator.rb +4 -8
  10. data/lib/mocha/backtrace_filter.rb +1 -5
  11. data/lib/mocha/cardinality.rb +20 -27
  12. data/lib/mocha/central.rb +7 -15
  13. data/lib/mocha/change_state_side_effect.rb +0 -4
  14. data/lib/mocha/class_method.rb +31 -37
  15. data/lib/mocha/class_methods.rb +5 -13
  16. data/lib/mocha/configuration.rb +3 -9
  17. data/lib/mocha/debug.rb +3 -2
  18. data/lib/mocha/deprecation.rb +4 -11
  19. data/lib/mocha/detection/mini_test.rb +0 -2
  20. data/lib/mocha/detection/test_unit.rb +4 -4
  21. data/lib/mocha/error_with_filtered_backtrace.rb +0 -4
  22. data/lib/mocha/exception_raiser.rb +2 -5
  23. data/lib/mocha/expectation.rb +15 -18
  24. data/lib/mocha/expectation_error.rb +2 -0
  25. data/lib/mocha/expectation_error_factory.rb +0 -1
  26. data/lib/mocha/expectation_list.rb +2 -6
  27. data/lib/mocha/hooks.rb +0 -1
  28. data/lib/mocha/in_state_ordering_constraint.rb +0 -4
  29. data/lib/mocha/inspect.rb +3 -5
  30. data/lib/mocha/instance_method.rb +0 -2
  31. data/lib/mocha/integration.rb +3 -4
  32. data/lib/mocha/integration/mini_test/adapter.rb +2 -4
  33. data/lib/mocha/integration/mini_test/exception_translation.rb +1 -1
  34. data/lib/mocha/integration/mini_test/nothing.rb +4 -4
  35. data/lib/mocha/integration/mini_test/version_13.rb +3 -1
  36. data/lib/mocha/integration/mini_test/version_140.rb +3 -1
  37. data/lib/mocha/integration/mini_test/version_141.rb +3 -1
  38. data/lib/mocha/integration/mini_test/version_142_to_172.rb +3 -1
  39. data/lib/mocha/integration/mini_test/version_200.rb +3 -1
  40. data/lib/mocha/integration/mini_test/version_201_to_222.rb +3 -1
  41. data/lib/mocha/integration/mini_test/version_2110_to_2111.rb +3 -1
  42. data/lib/mocha/integration/mini_test/version_2112_to_320.rb +3 -1
  43. data/lib/mocha/integration/mini_test/version_230_to_2101.rb +3 -1
  44. data/lib/mocha/integration/monkey_patcher.rb +5 -7
  45. data/lib/mocha/integration/test_unit/adapter.rb +5 -6
  46. data/lib/mocha/integration/test_unit/gem_version_200.rb +4 -2
  47. data/lib/mocha/integration/test_unit/gem_version_201_to_202.rb +4 -2
  48. data/lib/mocha/integration/test_unit/gem_version_203_to_220.rb +4 -2
  49. data/lib/mocha/integration/test_unit/gem_version_230_to_250.rb +4 -2
  50. data/lib/mocha/integration/test_unit/nothing.rb +4 -4
  51. data/lib/mocha/integration/test_unit/ruby_version_185_and_below.rb +3 -1
  52. data/lib/mocha/integration/test_unit/ruby_version_186_and_above.rb +3 -1
  53. data/lib/mocha/is_a.rb +0 -2
  54. data/lib/mocha/logger.rb +0 -4
  55. data/lib/mocha/method_matcher.rb +1 -5
  56. data/lib/mocha/minitest.rb +1 -1
  57. data/lib/mocha/mock.rb +25 -30
  58. data/lib/mocha/mockery.rb +27 -43
  59. data/lib/mocha/module_method.rb +0 -2
  60. data/lib/mocha/module_methods.rb +0 -4
  61. data/lib/mocha/multiple_yields.rb +0 -5
  62. data/lib/mocha/names.rb +1 -11
  63. data/lib/mocha/no_yields.rb +1 -7
  64. data/lib/mocha/not_initialized_error.rb +0 -2
  65. data/lib/mocha/object_methods.rb +10 -14
  66. data/lib/mocha/parameter_matchers.rb +0 -2
  67. data/lib/mocha/parameter_matchers/all_of.rb +1 -7
  68. data/lib/mocha/parameter_matchers/any_of.rb +1 -7
  69. data/lib/mocha/parameter_matchers/any_parameters.rb +3 -9
  70. data/lib/mocha/parameter_matchers/anything.rb +2 -8
  71. data/lib/mocha/parameter_matchers/base.rb +6 -12
  72. data/lib/mocha/parameter_matchers/equals.rb +0 -6
  73. data/lib/mocha/parameter_matchers/equivalent_uri.rb +6 -6
  74. data/lib/mocha/parameter_matchers/has_entries.rb +2 -6
  75. data/lib/mocha/parameter_matchers/has_entry.rb +8 -11
  76. data/lib/mocha/parameter_matchers/has_key.rb +2 -6
  77. data/lib/mocha/parameter_matchers/has_value.rb +2 -6
  78. data/lib/mocha/parameter_matchers/includes.rb +2 -6
  79. data/lib/mocha/parameter_matchers/instance_of.rb +0 -6
  80. data/lib/mocha/parameter_matchers/is_a.rb +2 -6
  81. data/lib/mocha/parameter_matchers/kind_of.rb +2 -6
  82. data/lib/mocha/parameter_matchers/not.rb +2 -6
  83. data/lib/mocha/parameter_matchers/object.rb +0 -2
  84. data/lib/mocha/parameter_matchers/optionally.rb +4 -10
  85. data/lib/mocha/parameter_matchers/regexp_matches.rb +0 -6
  86. data/lib/mocha/parameter_matchers/responds_with.rb +3 -8
  87. data/lib/mocha/parameter_matchers/yaml_equivalent.rb +2 -6
  88. data/lib/mocha/parameters_matcher.rb +6 -9
  89. data/lib/mocha/pretty_parameters.rb +0 -4
  90. data/lib/mocha/receivers.rb +6 -12
  91. data/lib/mocha/return_values.rb +3 -7
  92. data/lib/mocha/sequence.rb +4 -9
  93. data/lib/mocha/single_return_value.rb +0 -4
  94. data/lib/mocha/single_yield.rb +0 -5
  95. data/lib/mocha/state_machine.rb +6 -10
  96. data/lib/mocha/stubbing_error.rb +0 -2
  97. data/lib/mocha/test_unit.rb +1 -1
  98. data/lib/mocha/thrower.rb +2 -5
  99. data/lib/mocha/unexpected_invocation.rb +3 -5
  100. data/lib/mocha/version.rb +1 -1
  101. data/lib/mocha/yield_parameters.rb +3 -7
  102. data/mocha.gemspec +34 -58
  103. data/test/acceptance/acceptance_test_helper.rb +0 -4
  104. data/test/acceptance/bug_18914_test.rb +7 -12
  105. data/test/acceptance/bug_21465_test.rb +0 -2
  106. data/test/acceptance/bug_21563_test.rb +0 -2
  107. data/test/acceptance/exception_rescue_test.rb +7 -8
  108. data/test/acceptance/expectations_on_multiple_methods_test.rb +2 -1
  109. data/test/acceptance/expected_invocation_count_test.rb +27 -29
  110. data/test/acceptance/failure_messages_test.rb +3 -5
  111. data/test/acceptance/issue_272_test.rb +0 -1
  112. data/test/acceptance/issue_65_test.rb +15 -13
  113. data/test/acceptance/issue_70_test.rb +0 -1
  114. data/test/acceptance/mocha_example_test.rb +5 -6
  115. data/test/acceptance/mocha_test_result_test.rb +7 -7
  116. data/test/acceptance/mock_test.rb +2 -4
  117. data/test/acceptance/mock_with_initializer_block_test.rb +0 -2
  118. data/test/acceptance/mocked_methods_dispatch_test.rb +0 -2
  119. data/test/acceptance/multiple_expectations_failure_message_test.rb +16 -17
  120. data/test/acceptance/optional_parameters_test.rb +0 -2
  121. data/test/acceptance/parameter_matcher_test.rb +2 -3
  122. data/test/acceptance/partial_mocks_test.rb +4 -6
  123. data/test/acceptance/prepend_test.rb +14 -16
  124. data/test/acceptance/prevent_use_of_mocha_outside_test_test.rb +0 -2
  125. data/test/acceptance/raise_exception_test.rb +2 -4
  126. data/test/acceptance/return_value_test.rb +0 -2
  127. data/test/acceptance/sequence_test.rb +9 -11
  128. data/test/acceptance/states_test.rb +6 -4
  129. data/test/acceptance/stub_any_instance_method_defined_on_superclass_test.rb +5 -4
  130. data/test/acceptance/stub_any_instance_method_test.rb +19 -17
  131. data/test/acceptance/stub_class_method_defined_on_active_record_association_proxy_test.rb +8 -8
  132. data/test/acceptance/stub_class_method_defined_on_class_test.rb +2 -1
  133. data/test/acceptance/stub_class_method_defined_on_module_test.rb +0 -1
  134. data/test/acceptance/stub_class_method_defined_on_superclass_test.rb +7 -4
  135. data/test/acceptance/stub_everything_test.rb +1 -3
  136. data/test/acceptance/stub_instance_method_defined_on_active_record_association_proxy_test.rb +6 -7
  137. data/test/acceptance/stub_instance_method_defined_on_class_and_aliased_test.rb +0 -1
  138. data/test/acceptance/stub_instance_method_defined_on_class_test.rb +0 -1
  139. data/test/acceptance/stub_instance_method_defined_on_kernel_module_test.rb +0 -1
  140. data/test/acceptance/stub_instance_method_defined_on_module_test.rb +0 -1
  141. data/test/acceptance/stub_instance_method_defined_on_object_class_test.rb +2 -1
  142. data/test/acceptance/stub_instance_method_defined_on_singleton_class_test.rb +0 -2
  143. data/test/acceptance/stub_instance_method_defined_on_superclass_test.rb +0 -1
  144. data/test/acceptance/stub_module_method_test.rb +13 -13
  145. data/test/acceptance/stub_test.rb +1 -3
  146. data/test/acceptance/stubba_example_test.rb +6 -14
  147. data/test/acceptance/stubba_test_result_test.rb +5 -8
  148. data/test/acceptance/stubbing_error_backtrace_test.rb +2 -2
  149. data/test/acceptance/stubbing_frozen_object_test.rb +2 -1
  150. data/test/acceptance/stubbing_method_accepting_block_parameter_test.rb +12 -7
  151. data/test/acceptance/stubbing_method_unnecessarily_test.rb +0 -2
  152. data/test/acceptance/stubbing_nil_test.rb +4 -5
  153. data/test/acceptance/stubbing_non_existent_any_instance_method_test.rb +1 -3
  154. data/test/acceptance/stubbing_non_existent_class_method_test.rb +3 -3
  155. data/test/acceptance/stubbing_non_existent_instance_method_test.rb +1 -3
  156. data/test/acceptance/stubbing_non_public_any_instance_method_test.rb +0 -2
  157. data/test/acceptance/stubbing_non_public_class_method_test.rb +3 -3
  158. data/test/acceptance/stubbing_non_public_instance_method_test.rb +1 -3
  159. data/test/acceptance/stubbing_on_non_mock_object_test.rb +4 -10
  160. data/test/acceptance/stubbing_same_class_method_on_parent_and_child_classes_test.rb +3 -4
  161. data/test/acceptance/throw_test.rb +0 -2
  162. data/test/acceptance/unexpected_invocation_test.rb +2 -3
  163. data/test/acceptance/unstubbing_test.rb +41 -14
  164. data/test/deprecation_disabler.rb +0 -1
  165. data/test/execution_point.rb +2 -4
  166. data/test/integration/mini_test_test.rb +2 -2
  167. data/test/integration/shared_tests.rb +24 -22
  168. data/test/integration/test_unit_test.rb +2 -2
  169. data/test/method_definer.rb +1 -3
  170. data/test/mini_test_result.rb +17 -11
  171. data/test/minitest_result.rb +0 -1
  172. data/test/simple_counter.rb +0 -2
  173. data/test/test_helper.rb +13 -5
  174. data/test/test_runner.rb +2 -4
  175. data/test/test_unit_result.rb +4 -2
  176. data/test/unit/any_instance_method_test.rb +31 -17
  177. data/test/unit/array_inspect_test.rb +2 -4
  178. data/test/unit/backtrace_filter_test.rb +3 -5
  179. data/test/unit/cardinality_test.rb +0 -2
  180. data/test/unit/central_test.rb +26 -27
  181. data/test/unit/change_state_side_effect_test.rb +0 -4
  182. data/test/unit/class_method_test.rb +59 -34
  183. data/test/unit/class_methods_test.rb +9 -11
  184. data/test/unit/configuration_test.rb +1 -2
  185. data/test/unit/date_time_inspect_test.rb +1 -3
  186. data/test/unit/exception_raiser_test.rb +0 -2
  187. data/test/unit/expectation_list_test.rb +0 -2
  188. data/test/unit/expectation_test.rb +41 -46
  189. data/test/unit/hash_inspect_test.rb +3 -5
  190. data/test/unit/hooks_test.rb +9 -4
  191. data/test/unit/in_state_ordering_constraint_test.rb +0 -4
  192. data/test/unit/method_matcher_test.rb +1 -3
  193. data/test/unit/mock_test.rb +35 -22
  194. data/test/unit/mockery_test.rb +28 -26
  195. data/test/unit/module_methods_test.rb +0 -2
  196. data/test/unit/multiple_yields_test.rb +0 -2
  197. data/test/unit/no_yields_test.rb +0 -2
  198. data/test/unit/object_inspect_test.rb +16 -7
  199. data/test/unit/object_methods_test.rb +6 -8
  200. data/test/unit/parameter_matchers/all_of_test.rb +0 -2
  201. data/test/unit/parameter_matchers/any_of_test.rb +0 -2
  202. data/test/unit/parameter_matchers/anything_test.rb +2 -4
  203. data/test/unit/parameter_matchers/equals_test.rb +1 -3
  204. data/test/unit/parameter_matchers/equivalent_uri_test.rb +0 -1
  205. data/test/unit/parameter_matchers/has_entries_test.rb +2 -2
  206. data/test/unit/parameter_matchers/has_entry_test.rb +13 -14
  207. data/test/unit/parameter_matchers/has_key_test.rb +0 -1
  208. data/test/unit/parameter_matchers/has_value_test.rb +0 -2
  209. data/test/unit/parameter_matchers/includes_test.rb +8 -9
  210. data/test/unit/parameter_matchers/instance_of_test.rb +1 -3
  211. data/test/unit/parameter_matchers/is_a_test.rb +1 -3
  212. data/test/unit/parameter_matchers/kind_of_test.rb +1 -3
  213. data/test/unit/parameter_matchers/not_test.rb +0 -2
  214. data/test/unit/parameter_matchers/regexp_matches_test.rb +1 -2
  215. data/test/unit/parameter_matchers/responds_with_test.rb +9 -3
  216. data/test/unit/parameter_matchers/stub_matcher.rb +0 -4
  217. data/test/unit/parameter_matchers/yaml_equivalent_test.rb +1 -3
  218. data/test/unit/parameters_matcher_test.rb +2 -4
  219. data/test/unit/receivers_test.rb +8 -6
  220. data/test/unit/return_values_test.rb +3 -5
  221. data/test/unit/sequence_test.rb +1 -5
  222. data/test/unit/single_return_value_test.rb +0 -2
  223. data/test/unit/single_yield_test.rb +0 -2
  224. data/test/unit/state_machine_test.rb +1 -3
  225. data/test/unit/string_inspect_test.rb +2 -4
  226. data/test/unit/thrower_test.rb +0 -2
  227. data/test/unit/yield_parameters_test.rb +0 -2
  228. data/yard-templates/default/layout/html/setup.rb +2 -3
  229. metadata +22 -6
@@ -1,7 +1,6 @@
1
1
  require 'mocha/deprecation'
2
2
 
3
3
  module DeprecationDisabler
4
-
5
4
  def disable_deprecations
6
5
  original_mode = Mocha::Deprecation.mode
7
6
  Mocha::Deprecation.mode = :disabled
@@ -1,5 +1,4 @@
1
1
  class ExecutionPoint
2
-
3
2
  attr_reader :backtrace
4
3
 
5
4
  def self.current
@@ -11,7 +10,7 @@ class ExecutionPoint
11
10
  end
12
11
 
13
12
  def first_relevant_line_of_backtrace
14
- @backtrace && (@backtrace.reject { |l| /\Aorg\/jruby\//.match(l) }.first || 'unknown:0')
13
+ @backtrace && (@backtrace.reject { |l| %r{\Aorg/jruby/}.match(l) }.first || 'unknown:0')
15
14
  end
16
15
 
17
16
  def file_name
@@ -24,7 +23,7 @@ class ExecutionPoint
24
23
 
25
24
  def ==(other)
26
25
  return false unless other.is_a?(ExecutionPoint)
27
- (file_name == other.file_name) and (line_number == other.line_number)
26
+ (file_name == other.file_name) && (line_number == other.line_number)
28
27
  end
29
28
 
30
29
  def to_s
@@ -34,5 +33,4 @@ class ExecutionPoint
34
33
  def inspect
35
34
  to_s
36
35
  end
37
-
38
36
  end
@@ -1,7 +1,7 @@
1
1
  require File.expand_path('../../test_helper', __FILE__)
2
2
 
3
- require "mocha/minitest"
4
- require "integration/shared_tests"
3
+ require 'mocha/minitest'
4
+ require 'integration/shared_tests'
5
5
 
6
6
  class MiniTestTest < Mocha::TestCase
7
7
  include SharedTests
@@ -11,6 +11,7 @@ module SharedTests
11
11
  assert_passed(test_result)
12
12
  end
13
13
 
14
+ # rubocop:disable Style/Semicolon
14
15
  def test_assertion_unsatisfied
15
16
  execution_point = nil
16
17
  test_result = run_as_test do
@@ -24,19 +25,19 @@ module SharedTests
24
25
  def test_mock_object_unexpected_invocation
25
26
  execution_point = nil
26
27
  test_result = run_as_test do
27
- mock = mock("not expecting invocation")
28
+ mock = mock('not expecting invocation')
28
29
  execution_point = ExecutionPoint.current; mock.unexpected
29
30
  end
30
31
  assert_failed(test_result)
31
32
  failure = test_result.failures.first
32
33
  assert_equal execution_point, ExecutionPoint.new(failure.location)
33
- assert_equal ["unexpected invocation: #<Mock:not expecting invocation>.unexpected()"], test_result.failure_message_lines
34
+ assert_equal ['unexpected invocation: #<Mock:not expecting invocation>.unexpected()'], test_result.failure_message_lines
34
35
  end
35
36
 
36
37
  def test_mock_object_explicitly_unexpected_invocation
37
38
  execution_point = nil
38
39
  test_result = run_as_test do
39
- mock = mock("not expecting invocation")
40
+ mock = mock('not expecting invocation')
40
41
  mock.expects(:unexpected).never
41
42
  execution_point = ExecutionPoint.current; mock.unexpected
42
43
  end
@@ -44,25 +45,25 @@ module SharedTests
44
45
  failure = test_result.failures.first
45
46
  assert_equal execution_point, ExecutionPoint.new(failure.location)
46
47
  assert_equal [
47
- "unexpected invocation: #<Mock:not expecting invocation>.unexpected()",
48
- "unsatisfied expectations:",
49
- "- expected never, invoked once: #<Mock:not expecting invocation>.unexpected(any_parameters)"
48
+ 'unexpected invocation: #<Mock:not expecting invocation>.unexpected()',
49
+ 'unsatisfied expectations:',
50
+ '- expected never, invoked once: #<Mock:not expecting invocation>.unexpected(any_parameters)'
50
51
  ], test_result.failure_message_lines
51
52
  end
52
53
 
53
54
  def test_mock_object_unsatisfied_expectation
54
55
  execution_point = nil
55
56
  test_result = run_as_test do
56
- mock = mock("expecting invocation")
57
+ mock = mock('expecting invocation')
57
58
  execution_point = ExecutionPoint.current; mock.expects(:expected)
58
59
  end
59
60
  assert_failed(test_result)
60
61
  failure = test_result.failures.first
61
62
  assert_equal execution_point, ExecutionPoint.new(failure.location)
62
63
  assert_equal [
63
- "not all expectations were satisfied",
64
- "unsatisfied expectations:",
65
- "- expected exactly once, not yet invoked: #<Mock:expecting invocation>.expected(any_parameters)"
64
+ 'not all expectations were satisfied',
65
+ 'unsatisfied expectations:',
66
+ '- expected exactly once, not yet invoked: #<Mock:expecting invocation>.expected(any_parameters)'
66
67
  ], test_result.failure_message_lines
67
68
  end
68
69
 
@@ -70,7 +71,7 @@ module SharedTests
70
71
  execution_point = nil
71
72
  test_result = run_as_tests(
72
73
  :setup => lambda {
73
- mock = mock("not expecting invocation")
74
+ mock = mock('not expecting invocation')
74
75
  execution_point = ExecutionPoint.current; mock.unexpected
75
76
  },
76
77
  :test_me => lambda {
@@ -80,14 +81,14 @@ module SharedTests
80
81
  assert_failed(test_result)
81
82
  failure = test_result.failures.first
82
83
  assert_equal execution_point, ExecutionPoint.new(failure.location)
83
- assert_equal ["unexpected invocation: #<Mock:not expecting invocation>.unexpected()"], test_result.failure_message_lines
84
+ assert_equal ['unexpected invocation: #<Mock:not expecting invocation>.unexpected()'], test_result.failure_message_lines
84
85
  end
85
86
 
86
87
  def test_mock_object_unsatisfied_expectation_in_setup
87
88
  execution_point = nil
88
89
  test_result = run_as_tests(
89
90
  :setup => lambda {
90
- mock = mock("expecting invocation")
91
+ mock = mock('expecting invocation')
91
92
  execution_point = ExecutionPoint.current; mock.expects(:expected)
92
93
  },
93
94
  :test_me => lambda {
@@ -98,9 +99,9 @@ module SharedTests
98
99
  failure = test_result.failures.first
99
100
  assert_equal execution_point, ExecutionPoint.new(failure.location)
100
101
  assert_equal [
101
- "not all expectations were satisfied",
102
- "unsatisfied expectations:",
103
- "- expected exactly once, not yet invoked: #<Mock:expecting invocation>.expected(any_parameters)"
102
+ 'not all expectations were satisfied',
103
+ 'unsatisfied expectations:',
104
+ '- expected exactly once, not yet invoked: #<Mock:expecting invocation>.expected(any_parameters)'
104
105
  ], test_result.failure_message_lines
105
106
  end
106
107
 
@@ -111,14 +112,14 @@ module SharedTests
111
112
  assert true
112
113
  },
113
114
  :teardown => lambda {
114
- mock = mock("not expecting invocation")
115
+ mock = mock('not expecting invocation')
115
116
  execution_point = ExecutionPoint.current; mock.unexpected
116
117
  }
117
118
  )
118
119
  assert_failed(test_result)
119
120
  failure = test_result.failures.first
120
121
  assert_equal execution_point, ExecutionPoint.new(failure.location)
121
- assert_equal ["unexpected invocation: #<Mock:not expecting invocation>.unexpected()"], test_result.failure_message_lines
122
+ assert_equal ['unexpected invocation: #<Mock:not expecting invocation>.unexpected()'], test_result.failure_message_lines
122
123
  end
123
124
 
124
125
  def test_real_object_explicitly_unexpected_invocation
@@ -133,7 +134,7 @@ module SharedTests
133
134
  assert_equal execution_point, ExecutionPoint.new(failure.location)
134
135
  assert_equal [
135
136
  "unexpected invocation: #{object.mocha_inspect}.unexpected()",
136
- "unsatisfied expectations:",
137
+ 'unsatisfied expectations:',
137
138
  "- expected never, invoked once: #{object.mocha_inspect}.unexpected(any_parameters)"
138
139
  ], test_result.failure_message_lines
139
140
  end
@@ -148,8 +149,8 @@ module SharedTests
148
149
  failure = test_result.failures.first
149
150
  assert_equal execution_point, ExecutionPoint.new(failure.location)
150
151
  assert_equal [
151
- "not all expectations were satisfied",
152
- "unsatisfied expectations:",
152
+ 'not all expectations were satisfied',
153
+ 'unsatisfied expectations:',
153
154
  "- expected exactly once, not yet invoked: #{object.mocha_inspect}.expected(any_parameters)"
154
155
  ], test_result.failure_message_lines
155
156
  end
@@ -169,6 +170,7 @@ module SharedTests
169
170
  assert_failed(test_result)
170
171
  exception = test_result.errors.first.exception
171
172
  assert_equal execution_point, ExecutionPoint.new(exception.backtrace)
172
- assert_match %r{undefined method `foo'}, exception.message
173
+ assert_match(/undefined method `foo'/, exception.message)
173
174
  end
175
+ # rubocop:enable Style/Semicolon
174
176
  end
@@ -1,7 +1,7 @@
1
1
  require File.expand_path('../../test_helper', __FILE__)
2
2
 
3
- require "mocha/test_unit"
4
- require "integration/shared_tests"
3
+ require 'mocha/test_unit'
4
+ require 'integration/shared_tests'
5
5
 
6
6
  class TestUnitTest < Mocha::TestCase
7
7
  include SharedTests
@@ -1,14 +1,13 @@
1
1
  require 'metaclass'
2
2
 
3
3
  module Mocha
4
-
5
4
  module ObjectMethods
6
5
  def define_instance_method(method_symbol, &block)
7
6
  __metaclass__.send(:define_method, method_symbol, block)
8
7
  end
9
8
 
10
9
  def replace_instance_method(method_symbol, &block)
11
- raise "Cannot replace #{method_symbol} as #{self} does not respond to it." unless self.respond_to?(method_symbol)
10
+ raise "Cannot replace #{method_symbol} as #{self} does not respond to it." unless respond_to?(method_symbol)
12
11
  define_instance_method(method_symbol, &block)
13
12
  end
14
13
 
@@ -16,7 +15,6 @@ module Mocha
16
15
  symbols.each { |symbol| __metaclass__.send(:attr_accessor, symbol) }
17
16
  end
18
17
  end
19
-
20
18
  end
21
19
 
22
20
  class Object
@@ -2,16 +2,15 @@ require 'stringio'
2
2
  require 'minitest/unit'
3
3
 
4
4
  class MiniTestResult
5
-
6
5
  minitest_version = Gem::Version.new(::MiniTest::Unit::VERSION)
7
6
  if Gem::Requirement.new('<= 4.6.1').satisfied_by?(minitest_version)
8
- FAILURE_PATTERN = %r{(Failure)\:\n([^\(]+)\(([^\)]+)\) \[([^\]]+)\]\:\n(.*)\n}m
9
- ERROR_PATTERN = %r{(Error)\:\n([^\(]+)\(([^\)]+)\)\:\n(.+?)\n}m
10
- PATTERN_INDICES = { :method => 2, :testcase => 3 }
7
+ FAILURE_PATTERN = /(Failure)\:\n([^\(]+)\(([^\)]+)\) \[([^\]]+)\]\:\n(.*)\n/m
8
+ ERROR_PATTERN = /(Error)\:\n([^\(]+)\(([^\)]+)\)\:\n(.+?)\n/m
9
+ PATTERN_INDICES = { :method => 2, :testcase => 3 }.freeze
11
10
  else
12
- FAILURE_PATTERN = %r{(Failure)\:\n.([^#]+)\#([^ ]+) \[([^\]]+)\]\:\n(.*)\n}m
13
- ERROR_PATTERN = %r{(Error)\:\n.([^#]+)\#([^ ]+)\:\n(.+?)\n}m
14
- PATTERN_INDICES = { :method => 3, :testcase => 2 }
11
+ FAILURE_PATTERN = /(Failure)\:\n.([^#]+)\#([^ ]+) \[([^\]]+)\]\:\n(.*)\n/m
12
+ ERROR_PATTERN = /(Error)\:\n.([^#]+)\#([^ ]+)\:\n(.+?)\n/m
13
+ PATTERN_INDICES = { :method => 3, :testcase => 2 }.freeze
15
14
  end
16
15
 
17
16
  def self.parse_failure(raw)
@@ -30,7 +29,10 @@ class MiniTestResult
30
29
  class Failure
31
30
  attr_reader :method, :test_case, :location, :message
32
31
  def initialize(method, test_case, location, message)
33
- @method, @test_case, @location, @message = method, test_case, location, message
32
+ @method = method
33
+ @test_case = test_case
34
+ @location = location
35
+ @message = message
34
36
  end
35
37
  end
36
38
 
@@ -38,18 +40,22 @@ class MiniTestResult
38
40
  class Exception
39
41
  attr_reader :message, :backtrace
40
42
  def initialize(message, location)
41
- @message, @backtrace = message, location
43
+ @message = message
44
+ @backtrace = location
42
45
  end
43
46
  end
44
47
 
45
48
  attr_reader :method, :test_case, :exception
46
49
  def initialize(method, test_case, message, backtrace)
47
- @method, @test_case, @exception = method, test_case, Exception.new(message, backtrace)
50
+ @method = method
51
+ @test_case = test_case
52
+ @exception = Exception.new(message, backtrace)
48
53
  end
49
54
  end
50
55
 
51
56
  def initialize(runner, tests)
52
- @runner, @tests = runner, tests
57
+ @runner = runner
58
+ @tests = tests
53
59
  end
54
60
 
55
61
  def failure_count
@@ -1,7 +1,6 @@
1
1
  require 'forwardable'
2
2
 
3
3
  class MinitestResult
4
-
5
4
  class Failure
6
5
  extend Forwardable
7
6
  def_delegators :@failure, :message, :backtrace
@@ -1,5 +1,4 @@
1
1
  class SimpleCounter
2
-
3
2
  attr_reader :count
4
3
 
5
4
  def initialize
@@ -9,5 +8,4 @@ class SimpleCounter
9
8
  def increment
10
9
  @count += 1
11
10
  end
12
-
13
11
  end
@@ -2,22 +2,26 @@ unless defined?(STANDARD_OBJECT_PUBLIC_INSTANCE_METHODS)
2
2
  STANDARD_OBJECT_PUBLIC_INSTANCE_METHODS = Object.instance_methods + Object.private_instance_methods
3
3
  end
4
4
 
5
- $:.unshift File.expand_path(File.join(File.dirname(__FILE__), "..", "lib"))
6
- $:.unshift File.expand_path(File.join(File.dirname(__FILE__)))
7
- $:.unshift File.expand_path(File.join(File.dirname(__FILE__), 'unit'))
8
- $:.unshift File.expand_path(File.join(File.dirname(__FILE__), 'unit', 'parameter_matchers'))
9
- $:.unshift File.expand_path(File.join(File.dirname(__FILE__), 'acceptance'))
5
+ $LOAD_PATH.unshift File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib'))
6
+ $LOAD_PATH.unshift File.expand_path(File.join(File.dirname(__FILE__)))
7
+ $LOAD_PATH.unshift File.expand_path(File.join(File.dirname(__FILE__), 'unit'))
8
+ $LOAD_PATH.unshift File.expand_path(File.join(File.dirname(__FILE__), 'unit', 'parameter_matchers'))
9
+ $LOAD_PATH.unshift File.expand_path(File.join(File.dirname(__FILE__), 'acceptance'))
10
10
 
11
11
  require 'mocha/detection/mini_test'
12
12
 
13
13
  begin
14
14
  require 'minitest'
15
+ # rubocop:disable Lint/HandleExceptions
15
16
  rescue LoadError
16
17
  end
18
+ # rubocop:enable Lint/HandleExceptions
17
19
  begin
18
20
  require 'minitest/unit'
21
+ # rubocop:disable Lint/HandleExceptions
19
22
  rescue LoadError
20
23
  end
24
+ # rubocop:enable Lint/HandleExceptions
21
25
 
22
26
  module Mocha; end
23
27
 
@@ -27,6 +31,7 @@ if (minitest_testcase = Mocha::Detection::MiniTest.testcase) && (ENV['MOCHA_RUN_
27
31
  rescue LoadError
28
32
  MiniTest::Unit.autorun
29
33
  end
34
+ # rubocop:disable Style/ClassAndModuleChildren
30
35
  class Mocha::TestCase < minitest_testcase
31
36
  def assert_nothing_raised(exception = StandardError)
32
37
  yield
@@ -39,12 +44,15 @@ if (minitest_testcase = Mocha::Detection::MiniTest.testcase) && (ENV['MOCHA_RUN_
39
44
  alias_method :assert_not_same, :refute_same
40
45
  alias_method :assert_no_match, :refute_match
41
46
  end
47
+ # rubocop:enable Style/ClassAndModuleChildren
42
48
  else
43
49
  require 'test/unit'
50
+ # rubocop:disable Style/ClassAndModuleChildren
44
51
  class Mocha::TestCase < Test::Unit::TestCase
45
52
  def test_dummy
46
53
  # Some versions (?) of Test::Unit try to run this base class as a test case
47
54
  # and it fails because it has no test methods, so I'm adding a dummy test.
48
55
  end
49
56
  end
57
+ # rubocop:enable Style/ClassAndModuleChildren
50
58
  end
@@ -23,9 +23,7 @@ module TestRunner
23
23
  minitest_version = Gem::Version.new(Mocha::Detection::MiniTest.version)
24
24
  if Gem::Requirement.new('>= 5.0.0').satisfied_by?(minitest_version)
25
25
  require File.expand_path('../minitest_result', __FILE__)
26
- tests.each do |test|
27
- test.run
28
- end
26
+ tests.each(&:run)
29
27
  Minitest::Runnable.runnables.delete(test_class)
30
28
  test_result = MinitestResult.new(tests)
31
29
  elsif Gem::Requirement.new('> 0.0.0', '< 5.0.0').satisfied_by?(minitest_version)
@@ -53,6 +51,6 @@ module TestRunner
53
51
  end
54
52
 
55
53
  def assert_failed(test_result)
56
- flunk "Test passed unexpectedly" unless test_result.failure_count + test_result.error_count > 0
54
+ flunk 'Test passed unexpectedly' unless test_result.failure_count + test_result.error_count > 0
57
55
  end
58
56
  end
@@ -6,13 +6,15 @@ class TestUnitResult
6
6
  class << test_result
7
7
  attr_reader :failures, :errors
8
8
  def failure_messages
9
- failures.map { |failure| failure.message }
9
+ failures.map(&:message)
10
10
  end
11
+
11
12
  def failure_message_lines
12
13
  failure_messages.map { |message| message.split("\n") }.flatten
13
14
  end
15
+
14
16
  def error_messages
15
- errors.map { |error| error.message }
17
+ errors.map(&:message)
16
18
  end
17
19
  end
18
20
  test_result
@@ -4,19 +4,18 @@ require 'mocha/mock'
4
4
  require 'mocha/any_instance_method'
5
5
 
6
6
  class AnyInstanceMethodTest < Mocha::TestCase
7
-
8
7
  include Mocha
9
8
 
10
- unless RUBY_V2_PLUS
11
- def test_should_hide_original_method
12
- klass = Class.new { def method_x; end }
13
- method = AnyInstanceMethod.new(klass, :method_x)
9
+ unless RUBY_V2_PLUS
10
+ def test_should_hide_original_method
11
+ klass = Class.new { def method_x; end }
12
+ method = AnyInstanceMethod.new(klass, :method_x)
14
13
 
15
- method.hide_original_method
14
+ method.hide_original_method
16
15
 
17
- assert_equal false, klass.method_defined?(:method_x)
16
+ assert_equal false, klass.method_defined?(:method_x)
17
+ end
18
18
  end
19
- end
20
19
 
21
20
  def test_should_not_raise_error_hiding_method_that_isnt_defined
22
21
  klass = Class.new
@@ -45,7 +44,11 @@ end
45
44
  end
46
45
 
47
46
  def test_should_restore_original_method
48
- klass = Class.new { def method_x; :original_result; end }
47
+ klass = Class.new do
48
+ def method_x
49
+ :original_result
50
+ end
51
+ end
49
52
  method = AnyInstanceMethod.new(klass, :method_x)
50
53
 
51
54
  method.hide_original_method
@@ -59,7 +62,11 @@ end
59
62
  end
60
63
 
61
64
  def test_should_not_restore_original_method_if_none_was_defined_in_first_place
62
- klass = Class.new { def method_x; :new_result; end }
65
+ klass = Class.new do
66
+ def method_x
67
+ :new_result
68
+ end
69
+ end
63
70
  method = AnyInstanceMethod.new(klass, :method_x)
64
71
 
65
72
  method.restore_original_method
@@ -75,8 +82,8 @@ end
75
82
  any_instance.stubs(:mocha).returns(any_instance_mocha)
76
83
  klass.define_instance_method(:any_instance) { any_instance }
77
84
  method = AnyInstanceMethod.new(klass, :method_x)
78
- method.replace_instance_method(:restore_original_method) { }
79
- method.replace_instance_method(:reset_mocha) { }
85
+ method.replace_instance_method(:restore_original_method) {}
86
+ method.replace_instance_method(:reset_mocha) {}
80
87
  method.define_instance_accessor(:remove_called)
81
88
  method.replace_instance_method(:remove_new_method) { self.remove_called = true }
82
89
 
@@ -92,8 +99,8 @@ end
92
99
  any_instance.stubs(:mocha).returns(any_instance_mocha)
93
100
  klass.define_instance_method(:any_instance) { any_instance }
94
101
  method = AnyInstanceMethod.new(klass, :method_x)
95
- method.replace_instance_method(:remove_new_method) { }
96
- method.replace_instance_method(:reset_mocha) { }
102
+ method.replace_instance_method(:remove_new_method) {}
103
+ method.replace_instance_method(:reset_mocha) {}
97
104
  method.define_instance_accessor(:restore_called)
98
105
  method.replace_instance_method(:restore_original_method) { self.restore_called = true }
99
106
 
@@ -107,9 +114,16 @@ end
107
114
 
108
115
  method = AnyInstanceMethod.new(klass, :method_x)
109
116
 
110
- method.replace_instance_method(:remove_new_method) { }
111
- method.replace_instance_method(:restore_original_method) { }
112
- mocha = Class.new { class << self; attr_accessor :unstub_method; end; def self.unstub(method); self.unstub_method = method; end; }
117
+ method.replace_instance_method(:remove_new_method) {}
118
+ method.replace_instance_method(:restore_original_method) {}
119
+ mocha = Class.new do
120
+ class << self
121
+ attr_accessor :unstub_method
122
+ end
123
+ def self.unstub(method)
124
+ self.unstub_method = method
125
+ end
126
+ end
113
127
  mocha.define_instance_method(:any_expectations?) { true }
114
128
  method.replace_instance_method(:mock) { mocha }
115
129