rr 1.1.2 → 3.0.2

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 (157) hide show
  1. checksums.yaml +5 -5
  2. data/Appraisals +3 -43
  3. data/CHANGES.md +93 -0
  4. data/CREDITS.md +5 -0
  5. data/Gemfile +1 -17
  6. data/README.md +29 -32
  7. data/Rakefile +42 -40
  8. data/doc/02_syntax_comparison.md +1 -0
  9. data/lib/rr/class_instance_method_defined.rb +1 -1
  10. data/lib/rr/core_ext/array.rb +2 -0
  11. data/lib/rr/core_ext/hash.rb +2 -0
  12. data/lib/rr/deprecations.rb +97 -0
  13. data/lib/rr/double.rb +28 -10
  14. data/lib/rr/double_definitions/double_definition.rb +39 -16
  15. data/lib/rr/double_definitions/double_definition_create.rb +5 -5
  16. data/lib/rr/double_definitions/double_definition_create_blank_slate.rb +10 -4
  17. data/lib/rr/double_definitions/double_injections/any_instance_of.rb +1 -1
  18. data/lib/rr/double_definitions/double_injections/instance.rb +2 -2
  19. data/lib/rr/double_definitions/strategies/strategy.rb +27 -8
  20. data/lib/rr/double_definitions/strategies/verification/mock.rb +8 -2
  21. data/lib/rr/double_matches.rb +4 -3
  22. data/lib/rr/dsl.rb +152 -0
  23. data/lib/rr/expectations/any_argument_expectation.rb +4 -4
  24. data/lib/rr/expectations/argument_equality_expectation.rb +43 -5
  25. data/lib/rr/injections/double_injection.rb +85 -26
  26. data/lib/rr/injections/method_missing_injection.rb +37 -6
  27. data/lib/rr/integrations/minitest_4.rb +1 -1
  28. data/lib/rr/integrations/minitest_4_active_support.rb +1 -1
  29. data/lib/rr/integrations/rspec/invocation_matcher.rb +0 -8
  30. data/lib/rr/integrations/rspec_2.rb +20 -2
  31. data/lib/rr/keyword_arguments.rb +15 -0
  32. data/lib/rr/method_dispatches/base_method_dispatch.rb +22 -5
  33. data/lib/rr/method_dispatches/method_dispatch.rb +21 -10
  34. data/lib/rr/method_dispatches/method_missing_dispatch.rb +14 -5
  35. data/lib/rr/recorded_call.rb +35 -0
  36. data/lib/rr/recorded_calls.rb +23 -9
  37. data/lib/rr/space.rb +15 -5
  38. data/lib/rr/spy_verification.rb +13 -5
  39. data/lib/rr/version.rb +1 -1
  40. data/lib/rr/wildcard_matchers.rb +10 -10
  41. data/lib/rr/without_autohook.rb +7 -14
  42. data/rr.gemspec +8 -3
  43. data/spec/defines_spec_suite_tasks.rb +12 -0
  44. data/spec/global_helper.rb +5 -0
  45. data/spec/spec_suite_configuration.rb +1 -7
  46. data/spec/suites.yml +0 -14
  47. data/spec/suites/rspec_2/functional/any_instance_of_spec.rb +133 -33
  48. data/spec/suites/rspec_2/functional/dont_allow_spec.rb +13 -8
  49. data/spec/suites/rspec_2/functional/mock_bang_spec.rb +20 -0
  50. data/spec/suites/rspec_2/functional/mock_instance_of_spec.rb +14 -0
  51. data/spec/suites/rspec_2/functional/mock_instance_of_strong_spec.rb +15 -0
  52. data/spec/suites/rspec_2/functional/mock_proxy_instance_of_spec.rb +15 -0
  53. data/spec/suites/rspec_2/functional/mock_proxy_spec.rb +14 -0
  54. data/spec/suites/rspec_2/functional/mock_spec.rb +8 -232
  55. data/spec/suites/rspec_2/functional/mock_strong_spec.rb +14 -0
  56. data/spec/suites/rspec_2/functional/received_spec.rb +16 -0
  57. data/spec/suites/rspec_2/functional/spy_spec.rb +89 -28
  58. data/spec/suites/rspec_2/functional/stub_bang_spec.rb +20 -0
  59. data/spec/suites/rspec_2/functional/stub_instance_of_spec.rb +15 -0
  60. data/spec/suites/rspec_2/functional/stub_instance_of_strong_spec.rb +15 -0
  61. data/spec/suites/rspec_2/functional/stub_proxy_instance_of_spec.rb +16 -0
  62. data/spec/suites/rspec_2/functional/stub_proxy_spec.rb +45 -0
  63. data/spec/suites/rspec_2/functional/stub_spec.rb +42 -161
  64. data/spec/suites/rspec_2/functional/stub_strong_spec.rb +15 -0
  65. data/spec/suites/rspec_2/helper.rb +2 -2
  66. data/spec/suites/rspec_2/support/mixins/double_definition_creator_helpers.rb +173 -0
  67. data/spec/suites/rspec_2/support/mixins/mock_definition_creator_helpers.rb +45 -0
  68. data/spec/suites/rspec_2/support/mixins/proxy_definition_creator_helpers.rb +33 -0
  69. data/spec/suites/rspec_2/support/mixins/stub_creator_helpers.rb +43 -0
  70. data/spec/suites/rspec_2/support/mixins/stub_definition_creator_helpers.rb +45 -0
  71. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/argument_expectations_with_never_called_qualifier.rb +39 -0
  72. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/argument_expectations_with_times_called_qualifier.rb +50 -0
  73. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/argument_expectations_without_qualifiers.rb +131 -0
  74. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/dont_allow.rb +148 -0
  75. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/mock_instance_of.rb +26 -0
  76. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/mock_instance_of_strong.rb +28 -0
  77. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/mock_proxy.rb +11 -0
  78. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/mock_strong.rb +37 -0
  79. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/mocking.rb +107 -0
  80. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/stub_instance_of.rb +32 -0
  81. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/stub_instance_of_strong.rb +39 -0
  82. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/stub_proxy.rb +11 -0
  83. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/stub_strong.rb +37 -0
  84. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/stubbing.rb +57 -0
  85. data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/array_flatten_bug.rb +35 -0
  86. data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/block_form.rb +31 -0
  87. data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/comparing_arity.rb +63 -0
  88. data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/object_is_proxy.rb +43 -0
  89. data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/sequential_invocations.rb +26 -0
  90. data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/setting_implementation.rb +51 -0
  91. data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/yields.rb +81 -0
  92. data/spec/suites/rspec_2/unit/core_ext/enumerable_spec.rb +0 -28
  93. data/spec/suites/rspec_2/unit/deprecations_spec.rb +27 -0
  94. data/spec/suites/rspec_2/unit/double_definitions/double_definition_create_spec.rb +18 -18
  95. data/spec/suites/rspec_2/unit/dsl/double_creators_spec.rb +133 -0
  96. data/spec/suites/rspec_2/unit/dsl/space_spec.rb +99 -0
  97. data/spec/suites/rspec_2/unit/dsl/wildcard_matchers_spec.rb +67 -0
  98. data/spec/suites/rspec_2/unit/expectations/any_argument_expectation_spec.rb +9 -9
  99. data/spec/suites/rspec_2/unit/expectations/argument_equality_expectation_spec.rb +21 -21
  100. data/spec/suites/rspec_2/unit/expectations/boolean_argument_equality_expectation_spec.rb +4 -4
  101. data/spec/suites/rspec_2/unit/expectations/hash_including_argument_equality_expectation_spec.rb +31 -21
  102. data/spec/suites/rspec_2/unit/injections/double_injection/double_injection_spec.rb +0 -12
  103. data/spec/suites/rspec_2/unit/integrations/rspec_spec.rb +4 -19
  104. data/spec/suites/rspec_2/unit/space_spec.rb +7 -4
  105. data/spec/suites/rspec_2/unit/spy_verification_spec.rb +1 -1
  106. data/spec/support/adapter.rb +1 -1
  107. data/spec/support/adapter_tests/rspec.rb +19 -15
  108. data/spec/support/project/generator.rb +0 -4
  109. metadata +112 -57
  110. data/gemfiles/ruby_18_rspec_1.gemfile +0 -14
  111. data/gemfiles/ruby_18_rspec_1.gemfile.lock +0 -38
  112. data/gemfiles/ruby_18_rspec_1_rails_2.gemfile +0 -18
  113. data/gemfiles/ruby_18_rspec_1_rails_2.gemfile.lock +0 -64
  114. data/gemfiles/ruby_19_rspec_2_rails_3.gemfile +0 -15
  115. data/gemfiles/ruby_19_rspec_2_rails_3.gemfile.lock +0 -123
  116. data/lib/rr/adapters.rb +0 -34
  117. data/lib/rr/adapters/rr_methods.rb +0 -142
  118. data/lib/rr/integrations/rspec_1.rb +0 -46
  119. data/lib/rr/integrations/test_unit_1.rb +0 -63
  120. data/lib/rr/integrations/test_unit_2.rb +0 -17
  121. data/lib/rr/integrations/test_unit_200.rb +0 -27
  122. data/lib/rr/integrations/test_unit_200_active_support.rb +0 -25
  123. data/lib/rr/integrations/test_unit_2_active_support.rb +0 -38
  124. data/lib/rr/proc_from_block.rb +0 -11
  125. data/spec/suites/rspec_1/helper.rb +0 -24
  126. data/spec/suites/rspec_1/integration/rspec_1_spec.rb +0 -93
  127. data/spec/suites/rspec_1/integration/test_unit_1_spec.rb +0 -102
  128. data/spec/suites/rspec_1/integration/test_unit_2_spec.rb +0 -109
  129. data/spec/suites/rspec_1/spec_helper.rb +0 -3
  130. data/spec/suites/rspec_1_rails_2/integration/astc_rails_2_spec.rb +0 -141
  131. data/spec/suites/rspec_1_rails_2/integration/rspec_1_rails_2_spec.rb +0 -132
  132. data/spec/suites/rspec_1_rails_2/integration/test_unit_1_rails_2_spec.rb +0 -141
  133. data/spec/suites/rspec_1_rails_2/integration/test_unit_2_rails_2_spec.rb +0 -148
  134. data/spec/suites/rspec_1_rails_2/spec_helper.rb +0 -3
  135. data/spec/suites/rspec_2/functional/dsl_spec.rb +0 -13
  136. data/spec/suites/rspec_2/functional/instance_of_spec.rb +0 -14
  137. data/spec/suites/rspec_2/functional/proxy_spec.rb +0 -136
  138. data/spec/suites/rspec_2/functional/strong_spec.rb +0 -79
  139. data/spec/suites/rspec_2/integration/rspec_2_spec.rb +0 -133
  140. data/spec/suites/rspec_2/integration/test_unit_200_spec.rb +0 -102
  141. data/spec/suites/rspec_2/integration/test_unit_2_spec.rb +0 -109
  142. data/spec/suites/rspec_2/unit/adapters/rr_methods/double_creators_spec.rb +0 -135
  143. data/spec/suites/rspec_2/unit/adapters/rr_methods/space_spec.rb +0 -101
  144. data/spec/suites/rspec_2/unit/adapters/rr_methods/wildcard_matchers_spec.rb +0 -69
  145. data/spec/suites/rspec_2/unit/proc_from_block_spec.rb +0 -14
  146. data/spec/suites/rspec_2_rails_3/integration/astc_rails_3_spec.rb +0 -141
  147. data/spec/suites/rspec_2_rails_3/integration/minitest_4_rails_3_spec.rb +0 -148
  148. data/spec/suites/rspec_2_rails_3/integration/rspec_2_rails_3_spec.rb +0 -172
  149. data/spec/suites/rspec_2_rails_3/integration/test_unit_200_rails_3_spec.rb +0 -141
  150. data/spec/suites/rspec_2_rails_3/integration/test_unit_2_rails_3_spec.rb +0 -148
  151. data/spec/suites/rspec_2_rails_3/spec_helper.rb +0 -3
  152. data/spec/suites/rspec_2_rails_4/integration/astc_rails_4_spec.rb +0 -142
  153. data/spec/suites/rspec_2_rails_4/integration/minitest_4_rails_4_spec.rb +0 -149
  154. data/spec/suites/rspec_2_rails_4/integration/rspec_2_rails_4_spec.rb +0 -173
  155. data/spec/suites/rspec_2_rails_4/integration/test_unit_200_rails_4_spec.rb +0 -142
  156. data/spec/suites/rspec_2_rails_4/integration/test_unit_2_rails_4_spec.rb +0 -149
  157. data/spec/suites/rspec_2_rails_4/spec_helper.rb +0 -3
@@ -1,15 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rake", "~> 10.0"
6
- gem "aws-sdk", "~> 1.0"
7
- gem "minitar", "~> 0.5"
8
- gem "dotenv", "~> 0.7"
9
- gem "simplecov", "~> 0.7"
10
- gem "appraisal", "~> 0.5"
11
- gem "posix-spawn", :platforms=>:mri
12
- gem "open4", :platforms=>:mri
13
- gem "rspec", "~> 2.14"
14
- gem "rails", "~> 3.0"
15
-
@@ -1,123 +0,0 @@
1
- GEM
2
- remote: https://rubygems.org/
3
- specs:
4
- actionmailer (3.2.13)
5
- actionpack (= 3.2.13)
6
- mail (~> 2.5.3)
7
- actionpack (3.2.13)
8
- activemodel (= 3.2.13)
9
- activesupport (= 3.2.13)
10
- builder (~> 3.0.0)
11
- erubis (~> 2.7.0)
12
- journey (~> 1.0.4)
13
- rack (~> 1.4.5)
14
- rack-cache (~> 1.2)
15
- rack-test (~> 0.6.1)
16
- sprockets (~> 2.2.1)
17
- activemodel (3.2.13)
18
- activesupport (= 3.2.13)
19
- builder (~> 3.0.0)
20
- activerecord (3.2.13)
21
- activemodel (= 3.2.13)
22
- activesupport (= 3.2.13)
23
- arel (~> 3.0.2)
24
- tzinfo (~> 0.3.29)
25
- activeresource (3.2.13)
26
- activemodel (= 3.2.13)
27
- activesupport (= 3.2.13)
28
- activesupport (3.2.13)
29
- i18n (= 0.6.1)
30
- multi_json (~> 1.0)
31
- appraisal (0.5.2)
32
- bundler
33
- rake
34
- arel (3.0.2)
35
- aws-sdk (1.9.5)
36
- json (~> 1.4)
37
- nokogiri (>= 1.4.4)
38
- uuidtools (~> 2.1)
39
- builder (3.0.4)
40
- diff-lcs (1.2.4)
41
- dotenv (0.7.0)
42
- erubis (2.7.0)
43
- hike (1.2.3)
44
- i18n (0.6.1)
45
- journey (1.0.4)
46
- json (1.8.0)
47
- json (1.8.0-java)
48
- mail (2.5.4)
49
- mime-types (~> 1.16)
50
- treetop (~> 1.4.8)
51
- mime-types (1.23)
52
- minitar (0.5.4)
53
- multi_json (1.7.7)
54
- nokogiri (1.5.9)
55
- nokogiri (1.5.9-java)
56
- open4 (1.3.0)
57
- polyglot (0.3.3)
58
- posix-spawn (0.3.6)
59
- rack (1.4.5)
60
- rack-cache (1.2)
61
- rack (>= 0.4)
62
- rack-ssl (1.3.3)
63
- rack
64
- rack-test (0.6.2)
65
- rack (>= 1.0)
66
- rails (3.2.13)
67
- actionmailer (= 3.2.13)
68
- actionpack (= 3.2.13)
69
- activerecord (= 3.2.13)
70
- activeresource (= 3.2.13)
71
- activesupport (= 3.2.13)
72
- bundler (~> 1.0)
73
- railties (= 3.2.13)
74
- railties (3.2.13)
75
- actionpack (= 3.2.13)
76
- activesupport (= 3.2.13)
77
- rack-ssl (~> 1.3.2)
78
- rake (>= 0.8.7)
79
- rdoc (~> 3.4)
80
- thor (>= 0.14.6, < 2.0)
81
- rake (10.0.4)
82
- rdoc (3.12.2)
83
- json (~> 1.4)
84
- rspec (2.14.1)
85
- rspec-core (~> 2.14.0)
86
- rspec-expectations (~> 2.14.0)
87
- rspec-mocks (~> 2.14.0)
88
- rspec-core (2.14.5)
89
- rspec-expectations (2.14.2)
90
- diff-lcs (>= 1.1.3, < 2.0)
91
- rspec-mocks (2.14.3)
92
- simplecov (0.7.1)
93
- multi_json (~> 1.0)
94
- simplecov-html (~> 0.7.1)
95
- simplecov-html (0.7.1)
96
- sprockets (2.2.2)
97
- hike (~> 1.2)
98
- multi_json (~> 1.0)
99
- rack (~> 1.0)
100
- tilt (~> 1.1, != 1.3.0)
101
- thor (0.18.1)
102
- tilt (1.4.1)
103
- treetop (1.4.14)
104
- polyglot
105
- polyglot (>= 0.3.1)
106
- tzinfo (0.3.37)
107
- uuidtools (2.1.4)
108
-
109
- PLATFORMS
110
- java
111
- ruby
112
-
113
- DEPENDENCIES
114
- appraisal (~> 0.5)
115
- aws-sdk (~> 1.0)
116
- dotenv (~> 0.7)
117
- minitar (~> 0.5)
118
- open4
119
- posix-spawn
120
- rails (~> 3.0)
121
- rake (~> 10.0)
122
- rspec (~> 2.14)
123
- simplecov (~> 0.7)
data/lib/rr/adapters.rb DELETED
@@ -1,34 +0,0 @@
1
- module RR
2
- module Adapters
3
- class << self
4
- DEPRECATED_ADAPTERS = [
5
- :MiniTest,
6
- :TestUnit,
7
- :RSpec2
8
- ]
9
-
10
- def const_missing(adapter_const_name)
11
- unless DEPRECATED_ADAPTERS.include?(adapter_const_name)
12
- super
13
- return
14
- end
15
-
16
- show_warning_for(adapter_const_name)
17
- RR.autohook
18
-
19
- Module.new
20
- end
21
-
22
- private
23
-
24
- def show_warning_for(adapter_const_name)
25
- warn <<EOT
26
- --------------------------------------------------------------------------------
27
- RR deprecation warning: RR now has an autohook system. You don't need to
28
- `include RR::Adapters::*` in your test framework's base class anymore.
29
- --------------------------------------------------------------------------------
30
- EOT
31
- end
32
- end
33
- end
34
- 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
22
- ::Test::Unit::TestCase.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,17 +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) &&
10
- defined?(::Test::Unit::TestCase) &&
11
- has_test_unit_version?
12
- end
13
- end
14
-
15
- RR.register_adapter TestUnit2
16
- end
17
- end