rr 1.1.1 → 3.0.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 (223) hide show
  1. checksums.yaml +5 -5
  2. data/Appraisals +6 -0
  3. data/CHANGES.md +102 -1
  4. data/CREDITS.md +5 -0
  5. data/Gemfile +3 -0
  6. data/README.md +91 -110
  7. data/Rakefile +43 -0
  8. data/doc/02_syntax_comparison.md +1 -0
  9. data/gemfiles/ruby_19_rspec_2.gemfile +14 -0
  10. data/gemfiles/ruby_19_rspec_2.gemfile.lock +49 -0
  11. data/gemfiles/ruby_19_rspec_2_rails_4.gemfile +15 -0
  12. data/gemfiles/ruby_19_rspec_2_rails_4.gemfile.lock +119 -0
  13. data/lib/rr/class_instance_method_defined.rb +1 -1
  14. data/lib/rr/core_ext/array.rb +2 -0
  15. data/lib/rr/core_ext/hash.rb +2 -0
  16. data/lib/rr/deprecations.rb +97 -0
  17. data/lib/rr/double.rb +28 -10
  18. data/lib/rr/double_definitions/double_definition.rb +39 -16
  19. data/lib/rr/double_definitions/double_definition_create.rb +5 -5
  20. data/lib/rr/double_definitions/double_definition_create_blank_slate.rb +10 -4
  21. data/lib/rr/double_definitions/double_injections/any_instance_of.rb +1 -1
  22. data/lib/rr/double_definitions/double_injections/instance.rb +2 -2
  23. data/lib/rr/double_definitions/strategies/strategy.rb +27 -8
  24. data/lib/rr/double_definitions/strategies/verification/mock.rb +8 -2
  25. data/lib/rr/double_matches.rb +4 -3
  26. data/lib/rr/dsl.rb +152 -0
  27. data/lib/rr/expectations/any_argument_expectation.rb +4 -4
  28. data/lib/rr/expectations/argument_equality_expectation.rb +43 -5
  29. data/lib/rr/injections/double_injection.rb +67 -19
  30. data/lib/rr/injections/method_missing_injection.rb +37 -6
  31. data/lib/rr/integrations.rb +13 -12
  32. data/lib/rr/integrations/decorator.rb +4 -1
  33. data/lib/rr/integrations/minitest_4.rb +1 -1
  34. data/lib/rr/integrations/minitest_4_active_support.rb +1 -1
  35. data/lib/rr/integrations/rspec/invocation_matcher.rb +0 -8
  36. data/lib/rr/integrations/rspec_2.rb +28 -3
  37. data/lib/rr/keyword_arguments.rb +15 -0
  38. data/lib/rr/method_dispatches/base_method_dispatch.rb +22 -5
  39. data/lib/rr/method_dispatches/method_dispatch.rb +21 -10
  40. data/lib/rr/method_dispatches/method_missing_dispatch.rb +14 -5
  41. data/lib/rr/recorded_call.rb +35 -0
  42. data/lib/rr/recorded_calls.rb +23 -9
  43. data/lib/rr/space.rb +15 -5
  44. data/lib/rr/spy_verification.rb +13 -5
  45. data/lib/rr/version.rb +1 -2
  46. data/lib/rr/wildcard_matchers.rb +10 -10
  47. data/lib/rr/without_autohook.rb +7 -14
  48. data/rr.gemspec +14 -5
  49. data/spec/custom_formatter_for_rspec.rb +18 -0
  50. data/spec/custom_formatter_for_rspec_2.rb +40 -0
  51. data/spec/defines_spec_suite_tasks.rb +57 -0
  52. data/spec/fixtures/rubygems_patch_for_187.rb +598 -0
  53. data/spec/global_helper.rb +38 -0
  54. data/spec/spec.opts +3 -0
  55. data/spec/spec_suite_configuration.rb +126 -0
  56. data/spec/spec_suite_runner.rb +47 -0
  57. data/spec/suites.yml +10 -0
  58. data/spec/suites/rspec_2/functional/any_instance_of_spec.rb +147 -0
  59. data/spec/suites/rspec_2/functional/dont_allow_spec.rb +17 -0
  60. data/spec/suites/rspec_2/functional/mock_bang_spec.rb +20 -0
  61. data/spec/suites/rspec_2/functional/mock_instance_of_spec.rb +14 -0
  62. data/spec/suites/rspec_2/functional/mock_instance_of_strong_spec.rb +15 -0
  63. data/spec/suites/rspec_2/functional/mock_proxy_instance_of_spec.rb +15 -0
  64. data/spec/suites/rspec_2/functional/mock_proxy_spec.rb +14 -0
  65. data/spec/suites/rspec_2/functional/mock_spec.rb +17 -0
  66. data/spec/suites/rspec_2/functional/mock_strong_spec.rb +14 -0
  67. data/spec/suites/rspec_2/functional/received_spec.rb +16 -0
  68. data/spec/suites/rspec_2/functional/spy_spec.rb +102 -0
  69. data/spec/suites/rspec_2/functional/stub_bang_spec.rb +20 -0
  70. data/spec/suites/rspec_2/functional/stub_instance_of_spec.rb +15 -0
  71. data/spec/suites/rspec_2/functional/stub_instance_of_strong_spec.rb +15 -0
  72. data/spec/suites/rspec_2/functional/stub_proxy_instance_of_spec.rb +16 -0
  73. data/spec/suites/rspec_2/functional/stub_proxy_spec.rb +45 -0
  74. data/spec/suites/rspec_2/functional/stub_spec.rb +71 -0
  75. data/spec/suites/rspec_2/functional/stub_strong_spec.rb +15 -0
  76. data/spec/suites/rspec_2/functional/wildcard_matchers_spec.rb +128 -0
  77. data/spec/suites/rspec_2/helper.rb +28 -0
  78. data/spec/suites/rspec_2/integration/minitest_4_spec.rb +109 -0
  79. data/spec/suites/rspec_2/integration/minitest_spec.rb +109 -0
  80. data/spec/suites/rspec_2/spec_helper.rb +3 -0
  81. data/spec/suites/rspec_2/support/matchers/wildcard_matcher_matchers.rb +32 -0
  82. data/spec/suites/rspec_2/support/mixins/double_definition_creator_helpers.rb +173 -0
  83. data/spec/suites/rspec_2/support/mixins/mock_definition_creator_helpers.rb +45 -0
  84. data/spec/suites/rspec_2/support/mixins/proxy_definition_creator_helpers.rb +33 -0
  85. data/spec/suites/rspec_2/support/mixins/stub_creator_helpers.rb +43 -0
  86. data/spec/suites/rspec_2/support/mixins/stub_definition_creator_helpers.rb +45 -0
  87. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/argument_expectations_with_never_called_qualifier.rb +39 -0
  88. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/argument_expectations_with_times_called_qualifier.rb +50 -0
  89. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/argument_expectations_without_qualifiers.rb +131 -0
  90. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/dont_allow.rb +148 -0
  91. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/mock_instance_of.rb +26 -0
  92. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/mock_instance_of_strong.rb +28 -0
  93. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/mock_proxy.rb +11 -0
  94. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/mock_strong.rb +37 -0
  95. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/mocking.rb +107 -0
  96. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/stub_instance_of.rb +32 -0
  97. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/stub_instance_of_strong.rb +39 -0
  98. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/stub_proxy.rb +11 -0
  99. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/stub_strong.rb +37 -0
  100. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/stubbing.rb +57 -0
  101. data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/array_flatten_bug.rb +35 -0
  102. data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/block_form.rb +31 -0
  103. data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/comparing_arity.rb +63 -0
  104. data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/object_is_proxy.rb +43 -0
  105. data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/sequential_invocations.rb +26 -0
  106. data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/setting_implementation.rb +51 -0
  107. data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/yields.rb +81 -0
  108. data/spec/suites/rspec_2/support/shared_examples/space.rb +13 -0
  109. data/spec/suites/rspec_2/support/shared_examples/times_called_expectation.rb +9 -0
  110. data/spec/suites/rspec_2/unit/core_ext/array_spec.rb +39 -0
  111. data/spec/suites/rspec_2/unit/core_ext/enumerable_spec.rb +53 -0
  112. data/spec/suites/rspec_2/unit/core_ext/hash_spec.rb +55 -0
  113. data/spec/suites/rspec_2/unit/core_ext/range_spec.rb +41 -0
  114. data/spec/suites/rspec_2/unit/core_ext/regexp_spec.rb +41 -0
  115. data/spec/suites/rspec_2/unit/deprecations_spec.rb +27 -0
  116. data/spec/suites/rspec_2/unit/double_definitions/child_double_definition_create_spec.rb +114 -0
  117. data/spec/suites/rspec_2/unit/double_definitions/double_definition_create_blank_slate_spec.rb +93 -0
  118. data/spec/suites/rspec_2/unit/double_definitions/double_definition_create_spec.rb +446 -0
  119. data/spec/suites/rspec_2/unit/dsl/double_creators_spec.rb +133 -0
  120. data/spec/suites/rspec_2/unit/dsl/space_spec.rb +99 -0
  121. data/spec/suites/rspec_2/unit/dsl/wildcard_matchers_spec.rb +67 -0
  122. data/spec/suites/rspec_2/unit/errors/rr_error_spec.rb +67 -0
  123. data/spec/suites/rspec_2/unit/expectations/any_argument_expectation_spec.rb +48 -0
  124. data/spec/suites/rspec_2/unit/expectations/anything_argument_equality_expectation_spec.rb +14 -0
  125. data/spec/suites/rspec_2/unit/expectations/argument_equality_expectation_spec.rb +135 -0
  126. data/spec/suites/rspec_2/unit/expectations/boolean_argument_equality_expectation_spec.rb +30 -0
  127. data/spec/suites/rspec_2/unit/expectations/hash_including_argument_equality_expectation_spec.rb +92 -0
  128. data/spec/suites/rspec_2/unit/expectations/satisfy_argument_equality_expectation_spec.rb +61 -0
  129. data/spec/suites/rspec_2/unit/expectations/times_called_expectation/any_times_matcher_spec.rb +22 -0
  130. data/spec/suites/rspec_2/unit/expectations/times_called_expectation/at_least_matcher_spec.rb +37 -0
  131. data/spec/suites/rspec_2/unit/expectations/times_called_expectation/at_most_matcher_spec.rb +43 -0
  132. data/spec/suites/rspec_2/unit/expectations/times_called_expectation/integer_matcher_spec.rb +58 -0
  133. data/spec/suites/rspec_2/unit/expectations/times_called_expectation/proc_matcher_spec.rb +35 -0
  134. data/spec/suites/rspec_2/unit/expectations/times_called_expectation/range_matcher_spec.rb +39 -0
  135. data/spec/suites/rspec_2/unit/hash_with_object_id_key_spec.rb +88 -0
  136. data/spec/suites/rspec_2/unit/injections/double_injection/double_injection_spec.rb +533 -0
  137. data/spec/suites/rspec_2/unit/injections/double_injection/double_injection_verify_spec.rb +32 -0
  138. data/spec/suites/rspec_2/unit/integrations/rspec/invocation_matcher_spec.rb +297 -0
  139. data/spec/suites/rspec_2/unit/integrations/rspec_spec.rb +70 -0
  140. data/spec/suites/rspec_2/unit/rr_spec.rb +28 -0
  141. data/spec/suites/rspec_2/unit/space_spec.rb +598 -0
  142. data/spec/suites/rspec_2/unit/spy_verification_spec.rb +133 -0
  143. data/spec/suites/rspec_2/unit/times_called_matchers/any_times_matcher_spec.rb +46 -0
  144. data/spec/suites/rspec_2/unit/times_called_matchers/at_least_matcher_spec.rb +54 -0
  145. data/spec/suites/rspec_2/unit/times_called_matchers/at_most_matcher_spec.rb +69 -0
  146. data/spec/suites/rspec_2/unit/times_called_matchers/integer_matcher_spec.rb +69 -0
  147. data/spec/suites/rspec_2/unit/times_called_matchers/proc_matcher_spec.rb +54 -0
  148. data/spec/suites/rspec_2/unit/times_called_matchers/range_matcher_spec.rb +75 -0
  149. data/spec/suites/rspec_2/unit/times_called_matchers/times_called_matcher_spec.rb +117 -0
  150. data/spec/suites/rspec_2/unit/wildcard_matchers/anything_spec.rb +33 -0
  151. data/spec/suites/rspec_2/unit/wildcard_matchers/boolean_spec.rb +45 -0
  152. data/spec/suites/rspec_2/unit/wildcard_matchers/duck_type_spec.rb +64 -0
  153. data/spec/suites/rspec_2/unit/wildcard_matchers/hash_including_spec.rb +64 -0
  154. data/spec/suites/rspec_2/unit/wildcard_matchers/is_a_spec.rb +55 -0
  155. data/spec/suites/rspec_2/unit/wildcard_matchers/numeric_spec.rb +46 -0
  156. data/spec/suites/rspec_2/unit/wildcard_matchers/satisfy_spec.rb +57 -0
  157. data/spec/support/adapter.rb +22 -0
  158. data/spec/support/adapter_tests/base.rb +45 -0
  159. data/spec/support/adapter_tests/minitest.rb +7 -0
  160. data/spec/support/adapter_tests/rspec.rb +70 -0
  161. data/spec/support/adapter_tests/test_unit.rb +47 -0
  162. data/spec/support/command_runner.rb +105 -0
  163. data/spec/support/generator.rb +56 -0
  164. data/spec/support/integration_tests/base.rb +64 -0
  165. data/spec/support/integration_tests/rails.rb +60 -0
  166. data/spec/support/integration_tests/rails_minitest.rb +13 -0
  167. data/spec/support/integration_tests/rails_rspec.rb +13 -0
  168. data/spec/support/integration_tests/rails_test_unit.rb +13 -0
  169. data/spec/support/integration_tests/rails_test_unit_like.rb +13 -0
  170. data/spec/support/integration_tests/ruby.rb +7 -0
  171. data/spec/support/integration_tests/ruby_minitest.rb +13 -0
  172. data/spec/support/integration_tests/ruby_rspec.rb +13 -0
  173. data/spec/support/integration_tests/ruby_test_unit.rb +13 -0
  174. data/spec/support/matchers/be_a_subset_of_matcher.rb +24 -0
  175. data/spec/support/project/cucumber.rb +50 -0
  176. data/spec/support/project/generator.rb +348 -0
  177. data/spec/support/project/minitest.rb +39 -0
  178. data/spec/support/project/rails.rb +199 -0
  179. data/spec/support/project/rails_minitest.rb +17 -0
  180. data/spec/support/project/rails_rspec.rb +50 -0
  181. data/spec/support/project/rails_test_unit.rb +17 -0
  182. data/spec/support/project/rails_test_unit_like.rb +17 -0
  183. data/spec/support/project/rspec.rb +69 -0
  184. data/spec/support/project/ruby.rb +34 -0
  185. data/spec/support/project/ruby_minitest.rb +11 -0
  186. data/spec/support/project/ruby_rspec.rb +29 -0
  187. data/spec/support/project/ruby_test_unit.rb +11 -0
  188. data/spec/support/project/ruby_test_unit_like.rb +21 -0
  189. data/spec/support/project/test_unit.rb +29 -0
  190. data/spec/support/project/test_unit_like.rb +7 -0
  191. data/spec/support/project/tests_runner.rb +22 -0
  192. data/spec/support/test.sqlite3 +0 -0
  193. data/spec/support/test_case/generator.rb +53 -0
  194. data/spec/support/test_case/minitest.rb +13 -0
  195. data/spec/support/test_case/rspec.rb +19 -0
  196. data/spec/support/test_case/test_unit.rb +21 -0
  197. data/spec/support/test_file/generator.rb +120 -0
  198. data/spec/support/test_file/minitest.rb +19 -0
  199. data/spec/support/test_file/rails_minitest.rb +7 -0
  200. data/spec/support/test_file/rails_rspec.rb +12 -0
  201. data/spec/support/test_file/rails_test_unit.rb +25 -0
  202. data/spec/support/test_file/rspec.rb +33 -0
  203. data/spec/support/test_file/test_unit.rb +36 -0
  204. data/spec/support/test_helper/generator.rb +27 -0
  205. data/spec/support/test_helper/minitest.rb +7 -0
  206. data/spec/support/test_helper/rails.rb +31 -0
  207. data/spec/support/test_helper/rails_minitest.rb +7 -0
  208. data/spec/support/test_helper/rails_rspec.rb +25 -0
  209. data/spec/support/test_helper/rails_test_unit.rb +23 -0
  210. data/spec/support/test_helper/rspec.rb +7 -0
  211. data/spec/support/test_helper/ruby.rb +31 -0
  212. data/spec/support/test_helper/test_unit.rb +7 -0
  213. metadata +240 -19
  214. data/VERSION +0 -1
  215. data/lib/rr/adapters.rb +0 -44
  216. data/lib/rr/adapters/rr_methods.rb +0 -142
  217. data/lib/rr/integrations/rspec_1.rb +0 -46
  218. data/lib/rr/integrations/test_unit_1.rb +0 -63
  219. data/lib/rr/integrations/test_unit_2.rb +0 -15
  220. data/lib/rr/integrations/test_unit_200.rb +0 -27
  221. data/lib/rr/integrations/test_unit_200_active_support.rb +0 -25
  222. data/lib/rr/integrations/test_unit_2_active_support.rb +0 -38
  223. data/lib/rr/proc_from_block.rb +0 -11
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 1.1.1
data/lib/rr/adapters.rb DELETED
@@ -1,44 +0,0 @@
1
- module RR
2
- module Adapters
3
- class << self
4
- DEPRECATED_ADAPTERS = [
5
- :MiniTest,
6
- :TestUnit
7
- ]
8
-
9
- def const_missing(adapter_const_name)
10
- unless DEPRECATED_ADAPTERS.include?(adapter_const_name)
11
- super
12
- return
13
- end
14
-
15
- show_warning_for(adapter_const_name)
16
-
17
- adapter = shim_adapters[adapter_const_name] ||=
18
- case adapter_const_name
19
- when :TestUnit
20
- RR.find_applicable_adapter_matching(/^TestUnit/)
21
- when :MiniTest
22
- RR.find_applicable_adapter_matching(/^minitest/i)
23
- end
24
-
25
- adapter
26
- end
27
-
28
- private
29
-
30
- def shim_adapters
31
- @shim_adapters ||= {}
32
- end
33
-
34
- def show_warning_for(adapter_const_name)
35
- warn <<EOT
36
- --------------------------------------------------------------------------------
37
- RR deprecation warning: RR now has an autohook system. You don't need to
38
- `include RR::Adapters::*` in your test framework's base class anymore.
39
- --------------------------------------------------------------------------------
40
- EOT
41
- end
42
- end
43
- end
44
- end
@@ -1,142 +0,0 @@
1
- module RR
2
- module Adapters
3
- module RRMethods
4
- include ::RR::DoubleDefinitions::Strategies::StrategyMethods
5
-
6
- def mock(subject=DoubleDefinitions::DoubleDefinitionCreate::NO_SUBJECT, method_name=nil, &definition_eval_block)
7
- double_definition_create = DoubleDefinitions::DoubleDefinitionCreate.new
8
- double_definition_create.mock(subject, method_name, &definition_eval_block)
9
- end
10
-
11
- def stub(subject=DoubleDefinitions::DoubleDefinitionCreate::NO_SUBJECT, method_name=nil, &definition_eval_block)
12
- double_definition_create = DoubleDefinitions::DoubleDefinitionCreate.new
13
- double_definition_create.stub(subject, method_name, &definition_eval_block)
14
- end
15
-
16
- def dont_allow(subject=DoubleDefinitions::DoubleDefinitionCreate::NO_SUBJECT, method_name=nil, &definition_eval_block)
17
- double_definition_create = DoubleDefinitions::DoubleDefinitionCreate.new
18
- double_definition_create.dont_allow(subject, method_name, &definition_eval_block)
19
- end
20
-
21
- def proxy(subject=DoubleDefinitions::DoubleDefinitionCreate::NO_SUBJECT, method_name=nil, &definition_eval_block)
22
- double_definition_create = DoubleDefinitions::DoubleDefinitionCreate.new
23
- double_definition_create.proxy(subject, method_name, &definition_eval_block)
24
- end
25
-
26
- def strong(subject=DoubleDefinitions::DoubleDefinitionCreate::NO_SUBJECT, method_name=nil, &definition_eval_block)
27
- double_definition_create = DoubleDefinitions::DoubleDefinitionCreate.new
28
- double_definition_create.strong(subject, method_name, &definition_eval_block)
29
- end
30
-
31
- def instance_of(subject=DoubleDefinitions::DoubleDefinitionCreate::NO_SUBJECT, method_name=nil, &definition_eval_block)
32
- double_definition_create = DoubleDefinitions::DoubleDefinitionCreate.new
33
- double_definition_create.instance_of(subject, method_name, &definition_eval_block)
34
- end
35
-
36
- def any_instance_of(*args, &block)
37
- RR::DoubleDefinitions::DoubleInjections::AnyInstanceOf.call(*args, &block)
38
- end
39
-
40
- # Verifies all the DoubleInjection objects have met their
41
- # TimesCalledExpectations.
42
- def verify
43
- RR::Space.instance.verify_doubles
44
- end
45
-
46
- # Resets the registered Doubles and ordered Doubles
47
- def reset
48
- RR::Space.instance.reset
49
- end
50
-
51
- # Returns a AnyTimesMatcher. This is meant to be passed in as an argument
52
- # to Double#times.
53
- #
54
- # mock(object).method_name(anything).times(any_times) {return_value}
55
- def any_times
56
- TimesCalledMatchers::AnyTimesMatcher.new
57
- end
58
-
59
- # Sets up an Anything wildcard ArgumentEqualityExpectation
60
- # that succeeds when passed any argument.
61
- # mock(object).method_name(anything) {return_value}
62
- # object.method_name("an arbitrary value") # passes
63
- def anything
64
- RR::WildcardMatchers::Anything.new
65
- end
66
-
67
- # Sets up an IsA wildcard ArgumentEqualityExpectation
68
- # that succeeds when passed an argument of a certain type.
69
- # mock(object).method_name(is_a(String)) {return_value}
70
- # object.method_name("A String") # passes
71
- def is_a(klass)
72
- RR::WildcardMatchers::IsA.new(klass)
73
- end
74
-
75
- # Sets up an Numeric wildcard ArgumentEqualityExpectation
76
- # that succeeds when passed an argument that is ::Numeric.
77
- # mock(object).method_name(numeric) {return_value}
78
- # object.method_name(99) # passes
79
- def numeric
80
- RR::WildcardMatchers::Numeric.new
81
- end
82
-
83
- # Sets up an Boolean wildcard ArgumentEqualityExpectation
84
- # that succeeds when passed an argument that is a ::Boolean.
85
- # mock(object).method_name(boolean) {return_value}
86
- # object.method_name(false) # passes
87
- def boolean
88
- RR::WildcardMatchers::Boolean.new
89
- end
90
-
91
- # Sets up a DuckType wildcard ArgumentEqualityExpectation
92
- # that succeeds when the passed argument implements the methods.
93
- # arg = Object.new
94
- # def arg.foo; end
95
- # def arg.bar; end
96
- # mock(object).method_name(duck_type(:foo, :bar)) {return_value}
97
- # object.method_name(arg) # passes
98
- def duck_type(*args)
99
- RR::WildcardMatchers::DuckType.new(*args)
100
- end
101
-
102
- # Sets up a HashIncluding wildcard ArgumentEqualityExpectation
103
- # that succeeds when the passed argument contains at least those keys
104
- # and values of the expectation.
105
- # mock(object).method_name(hash_including(:foo => 1)) {return_value}
106
- # object.method_name({:foo => 1, :bar => 2) # passes
107
- def hash_including(expected_hash)
108
- RR::WildcardMatchers::HashIncluding.new(expected_hash)
109
- end
110
-
111
- # Sets up a Satisfy wildcard ArgumentEqualityExpectation
112
- # that succeeds when the passed argument causes the expectation's
113
- # proc to return true.
114
- # mock(object).method_name(satisfy {|arg| arg == :foo}) {return_value}
115
- # object.method_name(:foo) # passes
116
- def satisfy(expectation_proc=nil, &block)
117
- expectation_proc ||= block
118
- RR::WildcardMatchers::Satisfy.new(expectation_proc)
119
- end
120
-
121
- def spy(subject)
122
- methods_to_stub = subject.public_methods.map {|method_name| method_name.to_sym} -
123
- [:methods, :==, :__send__, :__id__, :object_id, :class]
124
- methods_to_stub.each do |method|
125
- stub.proxy(subject, method)
126
- end
127
- end
128
-
129
- def received(subject)
130
- RR::SpyVerificationProxy.new(subject)
131
- end
132
-
133
- instance_methods.each do |name|
134
- alias_method "rr_#{name}", name
135
- end
136
- end
137
- end
138
-
139
- module Extensions
140
- InstanceMethods = Adapters::RRMethods
141
- end
142
- end
@@ -1,46 +0,0 @@
1
- module RR
2
- module Integrations
3
- class RSpec1
4
- module Mixin
5
- def setup_mocks_for_rspec
6
- RR.reset
7
- end
8
-
9
- def verify_mocks_for_rspec
10
- RR.verify
11
- end
12
-
13
- def teardown_mocks_for_rspec
14
- RR.reset
15
- end
16
-
17
- def have_received(method = nil)
18
- RSpec::InvocationMatcher.new(method)
19
- end
20
- end
21
-
22
- def name
23
- 'RSpec 1'
24
- end
25
-
26
- def applies?
27
- defined?(::Spec) &&
28
- defined?(::Spec::VERSION::STRING) &&
29
- ::Spec::VERSION::STRING =~ /^1/
30
- end
31
-
32
- def hook
33
- ::Spec::Runner.configure do |config|
34
- config.mock_with Mixin
35
- config.include RR::Adapters::RRMethods
36
- end
37
- patterns = ::Spec::Runner::QuietBacktraceTweaker::IGNORE_PATTERNS
38
- unless patterns.include?(RR::Errors::BACKTRACE_IDENTIFIER)
39
- patterns.push(RR::Errors::BACKTRACE_IDENTIFIER)
40
- end
41
- end
42
- end
43
-
44
- RR.register_adapter RSpec1
45
- end
46
- end
@@ -1,63 +0,0 @@
1
- module RR
2
- module Integrations
3
- class TestUnit1
4
- module Mixin
5
- def assert_received(subject, &block)
6
- block.call(received(subject)).call
7
- end
8
- end
9
-
10
- def name
11
- 'Test::Unit 1'
12
- end
13
-
14
- def applies?
15
- defined?(::Test::Unit) &&
16
- defined?(::Test::Unit::TestCase) &&
17
- !has_test_unit_version? &&
18
- !test_unit_just_wraps_minitest?
19
- end
20
-
21
- def hook(test_case_class = ::Test::Unit::TestCase)
22
- test_case_class.class_eval do
23
- include RR::Adapters::RRMethods
24
- include Mixin
25
-
26
- unless instance_methods.detect {|method_name| method_name.to_sym == :setup_with_rr }
27
- alias_method :setup_without_rr, :setup
28
- def setup_with_rr
29
- setup_without_rr
30
- RR.reset
31
- RR.trim_backtrace = true
32
- RR.overridden_error_class = ::Test::Unit::AssertionFailedError
33
- end
34
- alias_method :setup, :setup_with_rr
35
-
36
- alias_method :teardown_without_rr, :teardown
37
- def teardown_with_rr
38
- RR.verify
39
- ensure
40
- teardown_without_rr
41
- end
42
- alias_method :teardown, :teardown_with_rr
43
- end
44
- end
45
- end
46
-
47
- def test_unit_just_wraps_minitest?
48
- defined?(::Test::Unit::TestCase) &&
49
- defined?(::MiniTest::Unit::TestCase) &&
50
- ::Test::Unit::TestCase < ::MiniTest::Unit::TestCase
51
- end
52
-
53
- def has_test_unit_version?
54
- require 'test/unit/version'
55
- true
56
- rescue LoadError
57
- false
58
- end
59
- end
60
-
61
- RR.register_adapter TestUnit1
62
- end
63
- end
@@ -1,15 +0,0 @@
1
- module RR
2
- module Integrations
3
- class TestUnit2 < TestUnit1
4
- def name
5
- RR.ruby_18? ? 'Test::Unit 2.4.x' : 'Test::Unit >= 2.5'
6
- end
7
-
8
- def applies?
9
- defined?(::Test::Unit) && has_test_unit_version?
10
- end
11
- end
12
-
13
- RR.register_adapter TestUnit2
14
- end
15
- end
@@ -1,27 +0,0 @@
1
- module RR
2
- module Integrations
3
- class TestUnit200
4
- def initialize
5
- @mt4_adapter = RR.adapters_by_name[:MiniTest4]
6
- @tu_adapter = RR.adapters_by_name[:TestUnit1]
7
- end
8
-
9
- def name
10
- 'Test::Unit 2.0.0'
11
- end
12
-
13
- def applies?
14
- @mt4_adapter.applies? &&
15
- defined?(::Test::Unit) &&
16
- !@tu_adapter.has_test_unit_version? &&
17
- @tu_adapter.test_unit_just_wraps_minitest?
18
- end
19
-
20
- def hook
21
- @mt4_adapter.hook
22
- end
23
- end
24
-
25
- RR.register_adapter TestUnit200
26
- end
27
- end
@@ -1,25 +0,0 @@
1
- module RR
2
- module Integrations
3
- class TestUnit200ActiveSupport
4
- def initialize
5
- @mt4as_adapter = RR.adapters_by_name[:MiniTest4ActiveSupport]
6
- @tu200_adapter = RR.adapters_by_name[:TestUnit200]
7
- end
8
-
9
- def name
10
- "#{@tu200_adapter.name} + ActiveSupport"
11
- end
12
-
13
- def applies?
14
- @tu200_adapter.applies? && defined?(::ActiveSupport::TestCase)
15
- end
16
-
17
- def hook
18
- @mt4as_adapter.hook
19
- end
20
- end
21
-
22
- RR.register_adapter TestUnit200ActiveSupport
23
- end
24
- end
25
-
@@ -1,38 +0,0 @@
1
- module RR
2
- module Integrations
3
- class TestUnit2ActiveSupport
4
- def initialize
5
- @tu2_adapter = RR.adapters_by_name[:TestUnit2]
6
- end
7
-
8
- def name
9
- "#{@tu2_adapter.name} + ActiveSupport"
10
- end
11
-
12
- def applies?
13
- @tu2_adapter.applies? &&
14
- defined?(::ActiveSupport::TestCase)
15
- end
16
-
17
- def hook
18
- RR.trim_backtrace = true
19
- RR.overridden_error_class = ::Test::Unit::AssertionFailedError
20
-
21
- ::ActiveSupport::TestCase.class_eval do
22
- include RR::Adapters::RRMethods
23
- include TestUnit1::Mixin
24
-
25
- setup do
26
- RR.reset
27
- end
28
-
29
- teardown do
30
- RR.verify
31
- end
32
- end
33
- end
34
- end
35
-
36
- RR.register_adapter TestUnit2ActiveSupport
37
- end
38
- end
@@ -1,11 +0,0 @@
1
- module RR
2
- if RUBY_VERSION =~ /^1.8/
3
- class ProcFromBlock < Proc
4
- def ==(other)
5
- Proc.new(&self) == other
6
- end
7
- end
8
- else
9
- ProcFromBlock = Proc
10
- end
11
- end