rspec-mocks 2.10.1 → 2.11.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 (36) hide show
  1. data/Changelog.md +26 -1
  2. data/README.md +14 -2
  3. data/features/stubbing_constants/README.md +62 -0
  4. data/features/stubbing_constants/stub_defined_constant.feature +79 -0
  5. data/features/stubbing_constants/stub_undefined_constant.feature +50 -0
  6. data/lib/rspec/mocks/any_instance.rb +37 -1
  7. data/lib/rspec/mocks/any_instance/chain.rb +0 -81
  8. data/lib/rspec/mocks/any_instance/expectation_chain.rb +57 -0
  9. data/lib/rspec/mocks/any_instance/recorder.rb +6 -1
  10. data/lib/rspec/mocks/any_instance/stub_chain.rb +37 -0
  11. data/lib/rspec/mocks/any_instance/stub_chain_chain.rb +25 -0
  12. data/lib/rspec/mocks/argument_list_matcher.rb +93 -0
  13. data/lib/rspec/mocks/argument_matchers.rb +39 -31
  14. data/lib/rspec/mocks/error_generator.rb +7 -0
  15. data/lib/rspec/mocks/example_methods.rb +41 -0
  16. data/lib/rspec/mocks/framework.rb +2 -1
  17. data/lib/rspec/mocks/message_expectation.rb +21 -13
  18. data/lib/rspec/mocks/methods.rb +4 -0
  19. data/lib/rspec/mocks/proxy.rb +10 -4
  20. data/lib/rspec/mocks/stub_const.rb +280 -0
  21. data/lib/rspec/mocks/test_double.rb +3 -2
  22. data/lib/rspec/mocks/version.rb +1 -1
  23. data/spec/rspec/mocks/any_instance/message_chains_spec.rb +1 -1
  24. data/spec/rspec/mocks/any_instance_spec.rb +66 -26
  25. data/spec/rspec/mocks/argument_expectation_spec.rb +7 -7
  26. data/spec/rspec/mocks/at_least_spec.rb +14 -0
  27. data/spec/rspec/mocks/block_return_value_spec.rb +8 -0
  28. data/spec/rspec/mocks/mock_spec.rb +33 -20
  29. data/spec/rspec/mocks/multiple_return_value_spec.rb +2 -2
  30. data/spec/rspec/mocks/null_object_mock_spec.rb +22 -0
  31. data/spec/rspec/mocks/stub_chain_spec.rb +45 -45
  32. data/spec/rspec/mocks/stub_const_spec.rb +309 -0
  33. data/spec/rspec/mocks/stub_spec.rb +2 -2
  34. data/spec/spec_helper.rb +0 -40
  35. metadata +18 -6
  36. data/lib/rspec/mocks/argument_expectation.rb +0 -52
@@ -208,10 +208,10 @@ module RSpec
208
208
  end.should raise_error(/received :foo with unexpected arguments/)
209
209
  end
210
210
 
211
- it "complains if called with other arg" do
211
+ it "complains if called with other arg", :github_issue => [123,147] do
212
212
  lambda do
213
213
  @stub.foo("other")
214
- end.should raise_error(/received :foo with unexpected arguments/)
214
+ end.should raise_error(/received :foo with unexpected arguments.*Please stub a default value/m)
215
215
  end
216
216
 
217
217
  it "does not complain if also mocked w/ different args" do
@@ -1,32 +1,3 @@
1
- require 'rspec/core'
2
- require 'rspec/mocks'
3
- require 'rspec/expectations'
4
-
5
- module Macros
6
- def treats_method_missing_as_private(options = {:noop => true, :subject => nil})
7
- it "has method_missing as private" do
8
- self.class.describes.private_instance_methods.should include_method(:method_missing)
9
- end
10
-
11
- it "does not respond_to? method_missing (because it's private)" do
12
- formatter = options[:subject] || described_class.new({ }, StringIO.new)
13
- formatter.should_not respond_to(:method_missing)
14
- end
15
-
16
- if options[:noop]
17
- it "should respond_to? all messages" do
18
- formatter = described_class.new({ }, StringIO.new)
19
- formatter.should respond_to(:just_about_anything)
20
- end
21
-
22
- it "should respond_to? anything, when given the private flag" do
23
- formatter = described_class.new({ }, StringIO.new)
24
- formatter.respond_to?(:method_missing, true).should be_true
25
- end
26
- end
27
- end
28
- end
29
-
30
1
  RSpec::Matchers.define :include_method do |expected|
31
2
  match do |actual|
32
3
  actual.map { |m| m.to_s }.include?(expected.to_s)
@@ -37,19 +8,8 @@ RSpec.configure do |config|
37
8
  config.mock_with :rspec
38
9
  config.color_enabled = true
39
10
  config.order = :random
40
- config.extend(Macros)
41
11
  config.include(RSpec::Mocks::Methods)
42
12
  config.run_all_when_everything_filtered = true
43
13
  config.treat_symbols_as_metadata_keys_with_true_values = true
44
14
  config.filter_run_including :focus
45
- config.filter_run_excluding :ruby => lambda {|version|
46
- case version.to_s
47
- when "!jruby"
48
- RUBY_ENGINE != "jruby"
49
- when /^> (.*)/
50
- !(RUBY_VERSION.to_s > $1)
51
- else
52
- !(RUBY_VERSION.to_s =~ /^#{version.to_s}/)
53
- end
54
- }
55
15
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-mocks
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.10.1
4
+ version: 2.11.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-05-05 00:00:00.000000000 Z
13
+ date: 2012-07-07 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rake
@@ -69,9 +69,12 @@ files:
69
69
  - lib/rspec/mocks.rb
70
70
  - lib/rspec/mocks/any_instance.rb
71
71
  - lib/rspec/mocks/any_instance/chain.rb
72
+ - lib/rspec/mocks/any_instance/expectation_chain.rb
72
73
  - lib/rspec/mocks/any_instance/message_chains.rb
73
74
  - lib/rspec/mocks/any_instance/recorder.rb
74
- - lib/rspec/mocks/argument_expectation.rb
75
+ - lib/rspec/mocks/any_instance/stub_chain.rb
76
+ - lib/rspec/mocks/any_instance/stub_chain_chain.rb
77
+ - lib/rspec/mocks/argument_list_matcher.rb
75
78
  - lib/rspec/mocks/argument_matchers.rb
76
79
  - lib/rspec/mocks/error_generator.rb
77
80
  - lib/rspec/mocks/errors.rb
@@ -89,6 +92,7 @@ files:
89
92
  - lib/rspec/mocks/serialization.rb
90
93
  - lib/rspec/mocks/space.rb
91
94
  - lib/rspec/mocks/standalone.rb
95
+ - lib/rspec/mocks/stub_const.rb
92
96
  - lib/rspec/mocks/test_double.rb
93
97
  - lib/rspec/mocks/version.rb
94
98
  - lib/spec/mocks.rb
@@ -120,6 +124,9 @@ files:
120
124
  - features/outside_rspec/configuration.feature
121
125
  - features/outside_rspec/standalone.feature
122
126
  - features/step_definitions/additional_cli_steps.rb
127
+ - features/stubbing_constants/README.md
128
+ - features/stubbing_constants/stub_defined_constant.feature
129
+ - features/stubbing_constants/stub_undefined_constant.feature
123
130
  - features/support/env.rb
124
131
  - spec/rspec/mocks/and_yield_spec.rb
125
132
  - spec/rspec/mocks/any_instance/message_chains_spec.rb
@@ -158,6 +165,7 @@ files:
158
165
  - spec/rspec/mocks/serialization_spec.rb
159
166
  - spec/rspec/mocks/stash_spec.rb
160
167
  - spec/rspec/mocks/stub_chain_spec.rb
168
+ - spec/rspec/mocks/stub_const_spec.rb
161
169
  - spec/rspec/mocks/stub_implementation_spec.rb
162
170
  - spec/rspec/mocks/stub_spec.rb
163
171
  - spec/rspec/mocks/stubbed_message_expectations_spec.rb
@@ -182,7 +190,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
182
190
  version: '0'
183
191
  segments:
184
192
  - 0
185
- hash: 2302057449526330825
193
+ hash: 1632544807063438503
186
194
  required_rubygems_version: !ruby/object:Gem::Requirement
187
195
  none: false
188
196
  requirements:
@@ -191,13 +199,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
191
199
  version: '0'
192
200
  segments:
193
201
  - 0
194
- hash: 2302057449526330825
202
+ hash: 1632544807063438503
195
203
  requirements: []
196
204
  rubyforge_project: rspec
197
205
  rubygems_version: 1.8.24
198
206
  signing_key:
199
207
  specification_version: 3
200
- summary: rspec-mocks-2.10.1
208
+ summary: rspec-mocks-2.11.0
201
209
  test_files:
202
210
  - features/README.md
203
211
  - features/Scope.md
@@ -222,6 +230,9 @@ test_files:
222
230
  - features/outside_rspec/configuration.feature
223
231
  - features/outside_rspec/standalone.feature
224
232
  - features/step_definitions/additional_cli_steps.rb
233
+ - features/stubbing_constants/README.md
234
+ - features/stubbing_constants/stub_defined_constant.feature
235
+ - features/stubbing_constants/stub_undefined_constant.feature
225
236
  - features/support/env.rb
226
237
  - spec/rspec/mocks/and_yield_spec.rb
227
238
  - spec/rspec/mocks/any_instance/message_chains_spec.rb
@@ -260,6 +271,7 @@ test_files:
260
271
  - spec/rspec/mocks/serialization_spec.rb
261
272
  - spec/rspec/mocks/stash_spec.rb
262
273
  - spec/rspec/mocks/stub_chain_spec.rb
274
+ - spec/rspec/mocks/stub_const_spec.rb
263
275
  - spec/rspec/mocks/stub_implementation_spec.rb
264
276
  - spec/rspec/mocks/stub_spec.rb
265
277
  - spec/rspec/mocks/stubbed_message_expectations_spec.rb
@@ -1,52 +0,0 @@
1
- module RSpec
2
- module Mocks
3
- # @api private
4
- class ArgumentExpectation
5
- attr_reader :args
6
-
7
- def initialize(*args, &block)
8
- @args = args
9
- @block = args.empty? ? block : nil
10
- @match_any_args = false
11
- @matchers = nil
12
-
13
- case args.first
14
- when ArgumentMatchers::AnyArgsMatcher
15
- @match_any_args = true
16
- when ArgumentMatchers::NoArgsMatcher
17
- @matchers = []
18
- else
19
- @matchers = args.collect {|arg| matcher_for(arg)}
20
- end
21
- end
22
-
23
- def matcher_for(arg)
24
- return ArgumentMatchers::MatcherMatcher.new(arg) if is_matcher?(arg)
25
- return ArgumentMatchers::RegexpMatcher.new(arg) if arg.is_a?(Regexp)
26
- return ArgumentMatchers::EqualityProxy.new(arg)
27
- end
28
-
29
- def is_matcher?(obj)
30
- !obj.null_object? & obj.respond_to?(:matches?) & [:failure_message_for_should, :failure_message].any? { |m| obj.respond_to?(m) }
31
- end
32
-
33
- def args_match?(*args)
34
- match_any_args? || block_passes?(*args) || matchers_match?(*args)
35
- end
36
-
37
- private
38
-
39
- def block_passes?(*args)
40
- @block.call(*args) if @block
41
- end
42
-
43
- def matchers_match?(*args)
44
- @matchers == args
45
- end
46
-
47
- def match_any_args?
48
- @match_any_args
49
- end
50
- end
51
- end
52
- end