mocha 1.6.0 → 1.7.0

Sign up to get free protection for your applications and to get access to all the features.
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,21 +1,17 @@
1
1
  module Mocha
2
-
3
2
  class ArgumentIterator
4
-
5
3
  def initialize(argument)
6
4
  @argument = argument
7
5
  end
8
6
 
9
- def each(&block)
10
- if @argument.is_a?(Hash) then
7
+ def each
8
+ if @argument.is_a?(Hash)
11
9
  @argument.each do |method_name, return_value|
12
- block.call(method_name, return_value)
10
+ yield method_name, return_value
13
11
  end
14
12
  else
15
- block.call(@argument)
13
+ yield @argument
16
14
  end
17
15
  end
18
-
19
16
  end
20
-
21
17
  end
@@ -1,8 +1,6 @@
1
1
  module Mocha
2
-
3
2
  class BacktraceFilter
4
-
5
- LIB_DIRECTORY = File.expand_path(File.join(File.dirname(__FILE__), "..")) + File::SEPARATOR
3
+ LIB_DIRECTORY = File.expand_path(File.join(File.dirname(__FILE__), '..')) + File::SEPARATOR
6
4
 
7
5
  def initialize(lib_directory = LIB_DIRECTORY)
8
6
  @path_pattern = Regexp.new(lib_directory)
@@ -11,7 +9,5 @@ module Mocha
11
9
  def filtered(backtrace)
12
10
  backtrace.reject { |location| @path_pattern.match(File.expand_path(location)) }
13
11
  end
14
-
15
12
  end
16
-
17
13
  end
@@ -1,11 +1,8 @@
1
1
  module Mocha
2
-
3
2
  class Cardinality
4
-
5
3
  INFINITY = 1 / 0.0
6
4
 
7
5
  class << self
8
-
9
6
  def exactly(count)
10
7
  new(count, count)
11
8
  end
@@ -20,15 +17,15 @@ module Mocha
20
17
 
21
18
  def times(range_or_count)
22
19
  case range_or_count
23
- when Range then new(range_or_count.first, range_or_count.last)
24
- else new(range_or_count, range_or_count)
20
+ when Range then new(range_or_count.first, range_or_count.last)
21
+ else new(range_or_count, range_or_count)
25
22
  end
26
23
  end
27
-
28
24
  end
29
25
 
30
26
  def initialize(required, maximum)
31
- @required, @maximum = required, maximum
27
+ @required = required
28
+ @maximum = maximum
32
29
  end
33
30
 
34
31
  def invocations_allowed?(invocation_count)
@@ -48,28 +45,26 @@ module Mocha
48
45
  end
49
46
 
50
47
  def allowed_any_number_of_times?
51
- required == 0 && infinite?(maximum)
48
+ required.zero? && infinite?(maximum)
52
49
  end
53
50
 
54
51
  def used?(invocation_count)
55
- (invocation_count > 0) || (maximum == 0)
52
+ (invocation_count > 0) || maximum.zero?
56
53
  end
57
54
 
58
55
  def mocha_inspect
59
56
  if allowed_any_number_of_times?
60
- "allowed any number of times"
57
+ 'allowed any number of times'
58
+ elsif required.zero? && maximum.zero?
59
+ 'expected never'
60
+ elsif required == maximum
61
+ "expected exactly #{times(required)}"
62
+ elsif infinite?(maximum)
63
+ "expected at least #{times(required)}"
64
+ elsif required.zero?
65
+ "expected at most #{times(maximum)}"
61
66
  else
62
- if required == 0 && maximum == 0
63
- "expected never"
64
- elsif required == maximum
65
- "expected exactly #{times(required)}"
66
- elsif infinite?(maximum)
67
- "expected at least #{times(required)}"
68
- elsif required == 0
69
- "expected at most #{times(maximum)}"
70
- else
71
- "expected between #{required} and #{times(maximum)}"
72
- end
67
+ "expected between #{required} and #{times(maximum)}"
73
68
  end
74
69
  end
75
70
 
@@ -79,17 +74,15 @@ module Mocha
79
74
 
80
75
  def times(number)
81
76
  case number
82
- when 0 then "no times"
83
- when 1 then "once"
84
- when 2 then "twice"
85
- else "#{number} times"
77
+ when 0 then 'no times'
78
+ when 1 then 'once'
79
+ when 2 then 'twice'
80
+ else "#{number} times"
86
81
  end
87
82
  end
88
83
 
89
84
  def infinite?(number)
90
85
  number.respond_to?(:infinite?) && number.infinite?
91
86
  end
92
-
93
87
  end
94
-
95
88
  end
@@ -1,9 +1,6 @@
1
1
  module Mocha
2
-
3
2
  class Central
4
-
5
3
  class Null < self
6
-
7
4
  def initialize(&block)
8
5
  super
9
6
  @raise_not_initialized_error = block
@@ -16,7 +13,6 @@ module Mocha
16
13
  def unstub(*)
17
14
  @raise_not_initialized_error.call
18
15
  end
19
-
20
16
  end
21
17
 
22
18
  attr_accessor :stubba_methods
@@ -26,25 +22,21 @@ module Mocha
26
22
  end
27
23
 
28
24
  def stub(method)
29
- unless stubba_methods.detect { |m| m.matches?(method) }
30
- method.stub
31
- stubba_methods.push(method)
32
- end
25
+ return if stubba_methods.detect { |m| m.matches?(method) }
26
+ method.stub
27
+ stubba_methods.push(method)
33
28
  end
34
29
 
35
30
  def unstub(method)
36
- if existing = stubba_methods.detect { |m| m.matches?(method) }
37
- existing.unstub
38
- stubba_methods.delete(existing)
39
- end
31
+ return unless (existing = stubba_methods.detect { |m| m.matches?(method) })
32
+ existing.unstub
33
+ stubba_methods.delete(existing)
40
34
  end
41
35
 
42
36
  def unstub_all
43
- while stubba_methods.any? do
37
+ while stubba_methods.any?
44
38
  unstub(stubba_methods.first)
45
39
  end
46
40
  end
47
-
48
41
  end
49
-
50
42
  end
@@ -1,7 +1,5 @@
1
1
  module Mocha
2
-
3
2
  class ChangeStateSideEffect
4
-
5
3
  def initialize(state)
6
4
  @state = state
7
5
  end
@@ -13,7 +11,5 @@ module Mocha
13
11
  def mocha_inspect
14
12
  "then #{@state.mocha_inspect}"
15
13
  end
16
-
17
14
  end
18
-
19
15
  end
@@ -2,16 +2,15 @@ require 'mocha/ruby_version'
2
2
  require 'metaclass'
3
3
 
4
4
  module Mocha
5
-
6
5
  class ClassMethod
7
-
8
6
  PrependedModule = Class.new(Module)
9
7
 
10
8
  attr_reader :stubbee, :method
11
9
 
12
10
  def initialize(stubbee, method)
13
11
  @stubbee = stubbee
14
- @original_method, @original_visibility = nil, nil
12
+ @original_method = nil
13
+ @original_visibility = nil
15
14
  @method = PRE_RUBY_V19 ? method.to_s : method.to_sym
16
15
  end
17
16
 
@@ -24,9 +23,8 @@ module Mocha
24
23
  remove_new_method
25
24
  restore_original_method
26
25
  mock.unstub(method.to_sym)
27
- unless mock.any_expectations?
28
- reset_mocha
29
- end
26
+ return if mock.any_expectations?
27
+ reset_mocha
30
28
  end
31
29
 
32
30
  def mock
@@ -38,21 +36,22 @@ module Mocha
38
36
  end
39
37
 
40
38
  def hide_original_method
41
- if @original_visibility = method_visibility(method)
42
- begin
43
- if RUBY_V2_PLUS
44
- @definition_target = PrependedModule.new
45
- stubbee.__metaclass__.__send__ :prepend, @definition_target
46
- else
47
- @original_method = stubbee._method(method)
48
- if @original_method && @original_method.owner == stubbee.__metaclass__
49
- stubbee.__metaclass__.send(:remove_method, method)
50
- end
39
+ return unless (@original_visibility = method_visibility(method))
40
+ begin
41
+ if RUBY_V2_PLUS
42
+ @definition_target = PrependedModule.new
43
+ stubbee.__metaclass__.__send__ :prepend, @definition_target
44
+ else
45
+ @original_method = stubbee._method(method)
46
+ if @original_method && @original_method.owner == stubbee.__metaclass__
47
+ stubbee.__metaclass__.send(:remove_method, method)
51
48
  end
52
- rescue NameError
53
- # deal with nasties like ActiveRecord::Associations::AssociationProxy
54
49
  end
50
+ # rubocop:disable Lint/HandleExceptions
51
+ rescue NameError
52
+ # deal with nasties like ActiveRecord::Associations::AssociationProxy
55
53
  end
54
+ # rubocop:enable Lint/HandleExceptions
56
55
  end
57
56
 
58
57
  def define_new_method
@@ -61,9 +60,8 @@ module Mocha
61
60
  mocha.method_missing(:#{method}, *args, &block)
62
61
  end
63
62
  CODE
64
- if @original_visibility
65
- Module.instance_method(@original_visibility).bind(definition_target).call(method)
66
- end
63
+ return unless @original_visibility
64
+ Module.instance_method(@original_visibility).bind(definition_target).call(method)
67
65
  end
68
66
 
69
67
  def remove_new_method
@@ -71,26 +69,24 @@ module Mocha
71
69
  end
72
70
 
73
71
  def restore_original_method
74
- unless RUBY_V2_PLUS
75
- if @original_method && @original_method.owner == stubbee.__metaclass__
76
- if PRE_RUBY_V19
77
- original_method = @original_method
78
- stubbee.__metaclass__.send(:define_method, method) do |*args, &block|
79
- original_method.call(*args, &block)
80
- end
81
- else
82
- stubbee.__metaclass__.send(:define_method, method, @original_method)
72
+ return if RUBY_V2_PLUS
73
+ if @original_method && @original_method.owner == stubbee.__metaclass__
74
+ if PRE_RUBY_V19
75
+ original_method = @original_method
76
+ stubbee.__metaclass__.send(:define_method, method) do |*args, &block|
77
+ original_method.call(*args, &block)
83
78
  end
84
- end
85
- if @original_visibility
86
- Module.instance_method(@original_visibility).bind(stubbee.__metaclass__).call(method)
79
+ else
80
+ stubbee.__metaclass__.send(:define_method, method, @original_method)
87
81
  end
88
82
  end
83
+ return unless @original_visibility
84
+ Module.instance_method(@original_visibility).bind(stubbee.__metaclass__).call(method)
89
85
  end
90
86
 
91
87
  def matches?(other)
92
- return false unless (other.class == self.class)
93
- (stubbee.object_id == other.stubbee.object_id) and (method == other.method)
88
+ return false unless other.class == self.class
89
+ (stubbee.object_id == other.stubbee.object_id) && (method == other.method)
94
90
  end
95
91
 
96
92
  alias_method :==, :eql?
@@ -113,7 +109,5 @@ module Mocha
113
109
  def definition_target
114
110
  @definition_target ||= stubbee.__metaclass__
115
111
  end
116
-
117
112
  end
118
-
119
113
  end
@@ -3,10 +3,8 @@ require 'mocha/class_method'
3
3
  require 'mocha/any_instance_method'
4
4
 
5
5
  module Mocha
6
-
7
6
  # Methods added to all classes to allow mocking and stubbing on real (i.e. non-mock) objects.
8
7
  module ClassMethods
9
-
10
8
  # @private
11
9
  def stubba_method
12
10
  Mocha::ClassMethod
@@ -14,7 +12,6 @@ module Mocha
14
12
 
15
13
  # @private
16
14
  class AnyInstance
17
-
18
15
  def initialize(klass)
19
16
  @stubba_object = klass
20
17
  end
@@ -31,20 +28,17 @@ module Mocha
31
28
  Mocha::AnyInstanceMethod
32
29
  end
33
30
 
34
- def stubba_object
35
- @stubba_object
36
- end
31
+ attr_reader :stubba_object
37
32
 
38
33
  def method_exists?(method, include_public_methods = true)
39
34
  if include_public_methods
40
- return true if @stubba_object.public_instance_methods(include_superclass_methods = true).include?(method)
35
+ return true if @stubba_object.public_instance_methods(true).include?(method)
41
36
  return true if @stubba_object.allocate.respond_to?(method.to_sym)
42
37
  end
43
- return true if @stubba_object.protected_instance_methods(include_superclass_methods = true).include?(method)
44
- return true if @stubba_object.private_instance_methods(include_superclass_methods = true).include?(method)
45
- return false
38
+ return true if @stubba_object.protected_instance_methods(true).include?(method)
39
+ return true if @stubba_object.private_instance_methods(true).include?(method)
40
+ false
46
41
  end
47
-
48
42
  end
49
43
 
50
44
  # @return [Mock] a mock object which will detect calls to any instance of this class.
@@ -62,7 +56,5 @@ module Mocha
62
56
  end
63
57
  @any_instance ||= AnyInstance.new(self)
64
58
  end
65
-
66
59
  end
67
-
68
60
  end
@@ -1,5 +1,4 @@
1
1
  module Mocha
2
-
3
2
  # This class allows you to determine what should happen under certain circumstances. In each scenario, Mocha can be configured to {.allow do nothing}, {.warn_when display a warning message}, or {.prevent raise an exception}. The relevant scenario is identified using one of the following symbols:
4
3
  #
5
4
  # * +:stubbing_method_unnecessarily+ This is useful for identifying unused stubs. Unused stubs are often accidentally introduced when code is {http://martinfowler.com/bliki/DefinitionOfRefactoring.html refactored}. Allowed by default.
@@ -67,17 +66,15 @@ module Mocha
67
66
  # # => no exception raised
68
67
  # end
69
68
  class Configuration
70
-
71
69
  DEFAULTS = {
72
70
  :stubbing_method_unnecessarily => :allow,
73
71
  :stubbing_method_on_non_mock_object => :allow,
74
72
  :stubbing_non_existent_method => :allow,
75
73
  :stubbing_non_public_method => :allow,
76
- :stubbing_method_on_nil => :prevent,
77
- }
74
+ :stubbing_method_on_nil => :prevent
75
+ }.freeze
78
76
 
79
77
  class << self
80
-
81
78
  # Allow the specified +action+.
82
79
  #
83
80
  # @param [Symbol] action one of +:stubbing_method_unnecessarily+, +:stubbing_method_on_non_mock_object+, +:stubbing_non_existent_method+, +:stubbing_non_public_method+, +:stubbing_method_on_nil+.
@@ -139,16 +136,13 @@ module Mocha
139
136
  end
140
137
 
141
138
  # @private
142
- def temporarily_change_config(action, new_value, &block)
139
+ def temporarily_change_config(action, new_value)
143
140
  original_value = configuration[action]
144
141
  configuration[action] = new_value
145
142
  yield
146
143
  ensure
147
144
  configuration[action] = original_value
148
145
  end
149
-
150
146
  end
151
-
152
147
  end
153
-
154
148
  end
@@ -1,11 +1,12 @@
1
1
  module Mocha
2
2
  module Debug
3
3
  OPTIONS = (ENV['MOCHA_OPTIONS'] || '').split(',').inject({}) do |hash, key|
4
- hash[key] = true; hash
4
+ hash[key] = true
5
+ hash
5
6
  end.freeze
6
7
 
7
8
  def self.puts(message)
8
- $stderr.puts(message) if OPTIONS['debug']
9
+ warn(message) if OPTIONS['debug']
9
10
  end
10
11
  end
11
12
  end
@@ -1,27 +1,20 @@
1
1
  require 'mocha/backtrace_filter'
2
2
 
3
3
  module Mocha
4
-
5
4
  class Deprecation
6
-
7
5
  class << self
8
-
9
6
  attr_accessor :mode, :messages
10
7
 
11
8
  def warning(message)
12
9
  @messages << message
13
- unless mode == :disabled
14
- filter = BacktraceFilter.new
15
- location = filter.filtered(caller)[0]
16
- $stderr.puts "Mocha deprecation warning at #{location}: #{message}"
17
- end
10
+ return if mode == :disabled
11
+ filter = BacktraceFilter.new
12
+ location = filter.filtered(caller)[0]
13
+ warn "Mocha deprecation warning at #{location}: #{message}"
18
14
  end
19
-
20
15
  end
21
16
 
22
17
  self.mode = :enabled
23
18
  self.messages = []
24
-
25
19
  end
26
-
27
20
  end