rspec-mocks 3.2.0 → 3.2.1
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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/Changelog.md +13 -0
- data/README.md +15 -2
- data/lib/rspec/mocks/argument_matchers.rb +1 -10
- data/lib/rspec/mocks/configuration.rb +0 -5
- data/lib/rspec/mocks/error_generator.rb +5 -0
- data/lib/rspec/mocks/example_methods.rb +10 -18
- data/lib/rspec/mocks/message_expectation.rb +0 -11
- data/lib/rspec/mocks/proxy.rb +4 -42
- data/lib/rspec/mocks/syntax.rb +17 -21
- data/lib/rspec/mocks/version.rb +1 -1
- metadata +4 -4
- metadata.gz.sig +0 -0
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: e4228dd818e7161f972b35380ad510d2c9f42846
         | 
| 4 | 
            +
              data.tar.gz: 6b51cb642d8ab3a56c2bbacb6670bdbe0f5a8a80
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 33be4cf0a047a9e96eb84a057d59554ec8a0299cd67e8c8a26017f8d4b76f453edbe54754ea8c2362ef117cd1997ad32f0b6c36afb17e04434398f9d7609d601
         | 
| 7 | 
            +
              data.tar.gz: 15736e89331dd0b9bce1c3a7c96261cd692e4135bfbdc6a3f93adfd972f3453c3283311db099c8404495941dd86df668273ae62eee4e1f7ffcce5cc31aa1c29e
         | 
    
        checksums.yaml.gz.sig
    CHANGED
    
    | Binary file | 
    
        data.tar.gz.sig
    CHANGED
    
    | Binary file | 
    
        data/Changelog.md
    CHANGED
    
    | @@ -1,3 +1,16 @@ | |
| 1 | 
            +
            ### 3.2.1 / 2015-02-23
         | 
| 2 | 
            +
            [Full Changelog](http://github.com/rspec/rspec-mocks/compare/v3.2.0...v3.2.1)
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            Bug Fixes:
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            * Add missing `rspec/support/differ` require so that rspec-mocks can be
         | 
| 7 | 
            +
              used w/o rspec-expectations (which also loads the differ and hided the
         | 
| 8 | 
            +
              fact we forgot to require it). (Myron Marston, #893)
         | 
| 9 | 
            +
            * Revert tracking of received arg mutation (added in 3.2.0 to provide an
         | 
| 10 | 
            +
              error in a situation we can't support) as our implementation has side
         | 
| 11 | 
            +
              effects on non-standard objects and there's no solution we could come
         | 
| 12 | 
            +
              up with that always works. (Myron Marston, #900)
         | 
| 13 | 
            +
             | 
| 1 14 | 
             
            ### 3.2.0 / 2015-02-03
         | 
| 2 15 | 
             
            [Full Changelog](http://github.com/rspec/rspec-mocks/compare/v3.1.3...v3.2.0)
         | 
| 3 16 |  | 
    
        data/README.md
    CHANGED
    
    | @@ -136,8 +136,7 @@ class_spy("Invitation") # => same as `class_double("Invitation").as_null_object` | |
| 136 136 | 
             
            object_spy("Invitation") # => same as `object_double("Invitation").as_null_object`
         | 
| 137 137 | 
             
            ```
         | 
| 138 138 |  | 
| 139 | 
            -
             | 
| 140 | 
            -
            pattern.
         | 
| 139 | 
            +
            Verifying messages received in this way implements the Test Spy pattern.
         | 
| 141 140 |  | 
| 142 141 | 
             
            ```ruby
         | 
| 143 142 | 
             
            invitation = spy('invitation')
         | 
| @@ -157,6 +156,20 @@ expect(invitation).to have_received(:accept).with(mailer) | |
| 157 156 | 
             
            expect(invitation.accept).to eq(true)
         | 
| 158 157 | 
             
            ```
         | 
| 159 158 |  | 
| 159 | 
            +
            Note that `have_received(...).with(...)` is unable to work properly when
         | 
| 160 | 
            +
            passed arguments are mutated after the spy records the received message.
         | 
| 161 | 
            +
            For example, this does not work properly:
         | 
| 162 | 
            +
             | 
| 163 | 
            +
            ```ruby
         | 
| 164 | 
            +
            greeter = spy("greeter")
         | 
| 165 | 
            +
             | 
| 166 | 
            +
            message = "Hello"
         | 
| 167 | 
            +
            greeter.greet_with(message)
         | 
| 168 | 
            +
            message << ", World"
         | 
| 169 | 
            +
             | 
| 170 | 
            +
            expect(greeter).to have_received(:greet_with).with("Hello")
         | 
| 171 | 
            +
            ```
         | 
| 172 | 
            +
             | 
| 160 173 | 
             
            ## Nomenclature
         | 
| 161 174 |  | 
| 162 175 | 
             
            ### Mock Objects and Test Stubs
         | 
| @@ -17,7 +17,6 @@ module RSpec | |
| 17 17 | 
             
                  # Acts like an arg splat, matching any number of args at any point in an arg list.
         | 
| 18 18 | 
             
                  #
         | 
| 19 19 | 
             
                  # @example
         | 
| 20 | 
            -
                  #
         | 
| 21 20 | 
             
                  #   expect(object).to receive(:message).with(1, 2, any_args)
         | 
| 22 21 | 
             
                  #
         | 
| 23 22 | 
             
                  #   # matches any of these:
         | 
| @@ -31,7 +30,6 @@ module RSpec | |
| 31 30 | 
             
                  # Matches any argument at all.
         | 
| 32 31 | 
             
                  #
         | 
| 33 32 | 
             
                  # @example
         | 
| 34 | 
            -
                  #
         | 
| 35 33 | 
             
                  #   expect(object).to receive(:message).with(anything)
         | 
| 36 34 | 
             
                  def anything
         | 
| 37 35 | 
             
                    AnyArgMatcher::INSTANCE
         | 
| @@ -40,7 +38,6 @@ module RSpec | |
| 40 38 | 
             
                  # Matches no arguments.
         | 
| 41 39 | 
             
                  #
         | 
| 42 40 | 
             
                  # @example
         | 
| 43 | 
            -
                  #
         | 
| 44 41 | 
             
                  #   expect(object).to receive(:message).with(no_args)
         | 
| 45 42 | 
             
                  def no_args
         | 
| 46 43 | 
             
                    NoArgsMatcher::INSTANCE
         | 
| @@ -49,7 +46,6 @@ module RSpec | |
| 49 46 | 
             
                  # Matches if the actual argument responds to the specified messages.
         | 
| 50 47 | 
             
                  #
         | 
| 51 48 | 
             
                  # @example
         | 
| 52 | 
            -
                  #
         | 
| 53 49 | 
             
                  #   expect(object).to receive(:message).with(duck_type(:hello))
         | 
| 54 50 | 
             
                  #   expect(object).to receive(:message).with(duck_type(:hello, :goodbye))
         | 
| 55 51 | 
             
                  def duck_type(*args)
         | 
| @@ -59,7 +55,6 @@ module RSpec | |
| 59 55 | 
             
                  # Matches a boolean value.
         | 
| 60 56 | 
             
                  #
         | 
| 61 57 | 
             
                  # @example
         | 
| 62 | 
            -
                  #
         | 
| 63 58 | 
             
                  #   expect(object).to receive(:message).with(boolean())
         | 
| 64 59 | 
             
                  def boolean
         | 
| 65 60 | 
             
                    BooleanMatcher::INSTANCE
         | 
| @@ -69,7 +64,6 @@ module RSpec | |
| 69 64 | 
             
                  # Ignores any additional keys.
         | 
| 70 65 | 
             
                  #
         | 
| 71 66 | 
             
                  # @example
         | 
| 72 | 
            -
                  #
         | 
| 73 67 | 
             
                  #   expect(object).to receive(:message).with(hash_including(:key => val))
         | 
| 74 68 | 
             
                  #   expect(object).to receive(:message).with(hash_including(:key))
         | 
| 75 69 | 
             
                  #   expect(object).to receive(:message).with(hash_including(:key, :key2 => val2))
         | 
| @@ -81,7 +75,6 @@ module RSpec | |
| 81 75 | 
             
                  # Ignores duplicates and additional values
         | 
| 82 76 | 
             
                  #
         | 
| 83 77 | 
             
                  # @example
         | 
| 84 | 
            -
                  #
         | 
| 85 78 | 
             
                  #   expect(object).to receive(:message).with(array_including(1,2,3))
         | 
| 86 79 | 
             
                  #   expect(object).to receive(:message).with(array_including([1,2,3]))
         | 
| 87 80 | 
             
                  def array_including(*args)
         | 
| @@ -92,7 +85,6 @@ module RSpec | |
| 92 85 | 
             
                  # Matches a hash that doesn't include the specified key(s) or key/value.
         | 
| 93 86 | 
             
                  #
         | 
| 94 87 | 
             
                  # @example
         | 
| 95 | 
            -
                  #
         | 
| 96 88 | 
             
                  #   expect(object).to receive(:message).with(hash_excluding(:key => val))
         | 
| 97 89 | 
             
                  #   expect(object).to receive(:message).with(hash_excluding(:key))
         | 
| 98 90 | 
             
                  #   expect(object).to receive(:message).with(hash_excluding(:key, :key2 => :val2))
         | 
| @@ -105,7 +97,6 @@ module RSpec | |
| 105 97 | 
             
                  # Matches if `arg.instance_of?(klass)`
         | 
| 106 98 | 
             
                  #
         | 
| 107 99 | 
             
                  # @example
         | 
| 108 | 
            -
                  #
         | 
| 109 100 | 
             
                  #   expect(object).to receive(:message).with(instance_of(Thing))
         | 
| 110 101 | 
             
                  def instance_of(klass)
         | 
| 111 102 | 
             
                    InstanceOf.new(klass)
         | 
| @@ -114,8 +105,8 @@ module RSpec | |
| 114 105 | 
             
                  alias_method :an_instance_of, :instance_of
         | 
| 115 106 |  | 
| 116 107 | 
             
                  # Matches if `arg.kind_of?(klass)`
         | 
| 117 | 
            -
                  # @example
         | 
| 118 108 | 
             
                  #
         | 
| 109 | 
            +
                  # @example
         | 
| 119 110 | 
             
                  #   expect(object).to receive(:message).with(kind_of(Thing))
         | 
| 120 111 | 
             
                  def kind_of(klass)
         | 
| 121 112 | 
             
                    KindOf.new(klass)
         | 
| @@ -19,7 +19,6 @@ module RSpec | |
| 19 19 | 
             
                  # Defaults to `true`.
         | 
| 20 20 | 
             
                  #
         | 
| 21 21 | 
             
                  # @example
         | 
| 22 | 
            -
                  #
         | 
| 23 22 | 
             
                  #   RSpec.configure do |rspec|
         | 
| 24 23 | 
             
                  #     rspec.mock_with :rspec do |mocks|
         | 
| 25 24 | 
             
                  #       mocks.yield_receiver_to_any_instance_implementation_blocks = false
         | 
| @@ -35,7 +34,6 @@ module RSpec | |
| 35 34 | 
             
                  # the process.
         | 
| 36 35 | 
             
                  #
         | 
| 37 36 | 
             
                  # @example
         | 
| 38 | 
            -
                  #
         | 
| 39 37 | 
             
                  #   RSpec.configure do |rspec|
         | 
| 40 38 | 
             
                  #     rspec.mock_with :rspec do |mocks|
         | 
| 41 39 | 
             
                  #       mocks.add_stub_and_should_receive_to Delegator
         | 
| @@ -55,7 +53,6 @@ module RSpec | |
| 55 53 | 
             
                  # disable `expect` syntax.
         | 
| 56 54 | 
             
                  #
         | 
| 57 55 | 
             
                  # @example
         | 
| 58 | 
            -
                  #
         | 
| 59 56 | 
             
                  #   RSpec.configure do |rspec|
         | 
| 60 57 | 
             
                  #     rspec.mock_with :rspec do |mocks|
         | 
| 61 58 | 
             
                  #       mocks.syntax = [:expect, :should]
         | 
| @@ -81,7 +78,6 @@ module RSpec | |
| 81 78 | 
             
                  # that are enabled.
         | 
| 82 79 | 
             
                  #
         | 
| 83 80 | 
             
                  # @example
         | 
| 84 | 
            -
                  #
         | 
| 85 81 | 
             
                  #   unless RSpec::Mocks.configuration.syntax.include?(:expect)
         | 
| 86 82 | 
             
                  #     raise "this RSpec extension gem requires the rspec-mocks `:expect` syntax"
         | 
| 87 83 | 
             
                  #   end
         | 
| @@ -107,7 +103,6 @@ module RSpec | |
| 107 103 | 
             
                  # Provides a way to perform customisations when verifying doubles.
         | 
| 108 104 | 
             
                  #
         | 
| 109 105 | 
             
                  # @example
         | 
| 110 | 
            -
                  #
         | 
| 111 106 | 
             
                  #  RSpec::Mocks.configuration.when_declaring_verifying_double do |ref|
         | 
| 112 107 | 
             
                  #    ref.some_method!
         | 
| 113 108 | 
             
                  #  end
         | 
| @@ -1,3 +1,5 @@ | |
| 1 | 
            +
            RSpec::Support.require_rspec_support 'differ'
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            module RSpec
         | 
| 2 4 | 
             
              module Mocks
         | 
| 3 5 | 
             
                # Raised when a message expectation is not satisfied.
         | 
| @@ -18,6 +20,9 @@ module RSpec | |
| 18 20 | 
             
                # Raised for situations that RSpec cannot support due to mutations made
         | 
| 19 21 | 
             
                # externally on arguments that RSpec is holding onto to use for later
         | 
| 20 22 | 
             
                # comparisons.
         | 
| 23 | 
            +
                #
         | 
| 24 | 
            +
                # @deprecated We no longer raise this error but the constant remains until
         | 
| 25 | 
            +
                #   RSpec 4 for SemVer reasons.
         | 
| 21 26 | 
             
                CannotSupportArgMutationsError = Class.new(StandardError)
         | 
| 22 27 |  | 
| 23 28 | 
             
                # @private
         | 
| @@ -24,7 +24,6 @@ module RSpec | |
| 24 24 | 
             
                  # hash of message/return-value pairs.
         | 
| 25 25 | 
             
                  #
         | 
| 26 26 | 
             
                  # @example
         | 
| 27 | 
            -
                  #
         | 
| 28 27 | 
             
                  #   book = double("book", :title => "The RSpec Book")
         | 
| 29 28 | 
             
                  #   book.title #=> "The RSpec Book"
         | 
| 30 29 | 
             
                  #
         | 
| @@ -219,7 +218,6 @@ module RSpec | |
| 219 218 | 
             
                  # @return [Object] the stubbed value of the constant
         | 
| 220 219 | 
             
                  #
         | 
| 221 220 | 
             
                  # @example
         | 
| 222 | 
            -
                  #
         | 
| 223 221 | 
             
                  #   stub_const("MyClass", Class.new) # => Replaces (or defines) MyClass with a new class object.
         | 
| 224 222 | 
             
                  #   stub_const("SomeModel::PER_PAGE", 5) # => Sets SomeModel::PER_PAGE to 5.
         | 
| 225 223 | 
             
                  #
         | 
| @@ -253,7 +251,6 @@ module RSpec | |
| 253 251 | 
             
                  #   The current constant scoping at the point of call is not considered.
         | 
| 254 252 | 
             
                  #
         | 
| 255 253 | 
             
                  # @example
         | 
| 256 | 
            -
                  #
         | 
| 257 254 | 
             
                  #   hide_const("MyClass") # => MyClass is now an undefined constant
         | 
| 258 255 | 
             
                  def hide_const(constant_name)
         | 
| 259 256 | 
             
                    ConstantMutator.hide(constant_name)
         | 
| @@ -271,13 +268,15 @@ module RSpec | |
| 271 268 | 
             
                  #   called.
         | 
| 272 269 | 
             
                  #
         | 
| 273 270 | 
             
                  # @example
         | 
| 274 | 
            -
                  #
         | 
| 275 271 | 
             
                  #   invitation = double('invitation', accept: true)
         | 
| 276 272 | 
             
                  #   user.accept_invitation(invitation)
         | 
| 277 273 | 
             
                  #   expect(invitation).to have_received(:accept)
         | 
| 278 274 | 
             
                  #
         | 
| 279 275 | 
             
                  #   # You can also use most message expectations:
         | 
| 280 276 | 
             
                  #   expect(invitation).to have_received(:accept).with(mailer).once
         | 
| 277 | 
            +
                  #
         | 
| 278 | 
            +
                  # @note `have_received(...).with(...)` is unable to work properly when
         | 
| 279 | 
            +
                  #   passed arguments are mutated after the spy records the received message.
         | 
| 281 280 | 
             
                  def have_received(method_name, &block)
         | 
| 282 281 | 
             
                    Matchers::HaveReceived.new(method_name, &block)
         | 
| 283 282 | 
             
                  end
         | 
| @@ -287,7 +286,6 @@ module RSpec | |
| 287 286 | 
             
                  # on it.
         | 
| 288 287 | 
             
                  #
         | 
| 289 288 | 
             
                  # @example
         | 
| 290 | 
            -
                  #
         | 
| 291 289 | 
             
                  #   expect(obj).to receive(:foo).with(5).and_return(:return_value)
         | 
| 292 290 | 
             
                  #
         | 
| 293 291 | 
             
                  # @note This method is usually provided by rspec-expectations. However,
         | 
| @@ -300,7 +298,6 @@ module RSpec | |
| 300 298 | 
             
                  # on it.
         | 
| 301 299 | 
             
                  #
         | 
| 302 300 | 
             
                  # @example
         | 
| 303 | 
            -
                  #
         | 
| 304 301 | 
             
                  #   allow(dbl).to receive(:foo).with(5).and_return(:return_value)
         | 
| 305 302 | 
             
                  #
         | 
| 306 303 | 
             
                  # @note If you disable the `:expect` syntax this method will be undefined.
         | 
| @@ -310,7 +307,6 @@ module RSpec | |
| 310 307 | 
             
                  # on instances of it.
         | 
| 311 308 | 
             
                  #
         | 
| 312 309 | 
             
                  # @example
         | 
| 313 | 
            -
                  #
         | 
| 314 310 | 
             
                  #   expect_any_instance_of(MyClass).to receive(:foo)
         | 
| 315 311 | 
             
                  #
         | 
| 316 312 | 
             
                  # @note If you disable the `:expect` syntax this method will be undefined.
         | 
| @@ -320,7 +316,6 @@ module RSpec | |
| 320 316 | 
             
                  # on instances of it.
         | 
| 321 317 | 
             
                  #
         | 
| 322 318 | 
             
                  # @example
         | 
| 323 | 
            -
                  #
         | 
| 324 319 | 
             
                  #   allow_any_instance_of(MyClass).to receive(:foo)
         | 
| 325 320 | 
             
                  #
         | 
| 326 321 | 
             
                  # @note This is only available when you have enabled the `expect` syntax.
         | 
| @@ -333,7 +328,6 @@ module RSpec | |
| 333 328 | 
             
                  # times, and configure how the object should respond to the message.
         | 
| 334 329 | 
             
                  #
         | 
| 335 330 | 
             
                  # @example
         | 
| 336 | 
            -
                  #
         | 
| 337 331 | 
             
                  #   expect(obj).to receive(:hello).with("world").exactly(3).times
         | 
| 338 332 | 
             
                  #
         | 
| 339 333 | 
             
                  # @note If you disable the `:expect` syntax this method will be undefined.
         | 
| @@ -346,7 +340,6 @@ module RSpec | |
| 346 340 | 
             
                  # interface.
         | 
| 347 341 | 
             
                  #
         | 
| 348 342 | 
             
                  # @example
         | 
| 349 | 
            -
                  #
         | 
| 350 343 | 
             
                  #   allow(obj).to receive_messages(:speak => "Hello World")
         | 
| 351 344 | 
             
                  #   allow(obj).to receive_messages(:speak => "Hello", :meow => "Meow")
         | 
| 352 345 | 
             
                  #
         | 
| @@ -370,16 +363,15 @@ module RSpec | |
| 370 363 | 
             
                  # implementation calls `foo.baz.bar`, the stub will not work.
         | 
| 371 364 | 
             
                  #
         | 
| 372 365 | 
             
                  # @example
         | 
| 366 | 
            +
                  #   allow(double).to receive_message_chain("foo.bar") { :baz }
         | 
| 367 | 
            +
                  #   allow(double).to receive_message_chain(:foo, :bar => :baz)
         | 
| 368 | 
            +
                  #   allow(double).to receive_message_chain(:foo, :bar) { :baz }
         | 
| 373 369 | 
             
                  #
         | 
| 374 | 
            -
                  # | 
| 375 | 
            -
                  # | 
| 376 | 
            -
                  #     allow(double).to receive_message_chain(:foo, :bar) { :baz }
         | 
| 377 | 
            -
                  #
         | 
| 378 | 
            -
                  #     # Given any of ^^ these three forms ^^:
         | 
| 379 | 
            -
                  #     double.foo.bar # => :baz
         | 
| 370 | 
            +
                  #   # Given any of ^^ these three forms ^^:
         | 
| 371 | 
            +
                  #   double.foo.bar # => :baz
         | 
| 380 372 | 
             
                  #
         | 
| 381 | 
            -
                  # | 
| 382 | 
            -
                  # | 
| 373 | 
            +
                  #   # Common use in Rails/ActiveRecord:
         | 
| 374 | 
            +
                  #   allow(Article).to receive_message_chain("recent.published") { [Article.new] }
         | 
| 383 375 | 
             
                  #
         | 
| 384 376 | 
             
                  # @note If you disable the `:expect` syntax this method will be undefined.
         | 
| 385 377 |  | 
| @@ -510,17 +510,6 @@ module RSpec | |
| 510 510 | 
             
                      @actual_received_count += 1
         | 
| 511 511 | 
             
                    end
         | 
| 512 512 |  | 
| 513 | 
            -
                    def fail_if_problematic_received_arg_mutations(received_arg_list)
         | 
| 514 | 
            -
                      return if @argument_list_matcher == ArgumentListMatcher::MATCH_ALL
         | 
| 515 | 
            -
                      return unless received_arg_list.has_mutations?
         | 
| 516 | 
            -
             | 
| 517 | 
            -
                      raise CannotSupportArgMutationsError,
         | 
| 518 | 
            -
                            "`have_received(...).with(...)` cannot be used when received " \
         | 
| 519 | 
            -
                            "message args have later been mutated. You can use a normal " \
         | 
| 520 | 
            -
                            "message expectation (`expect(...).to receive(...).with(...)`) " \
         | 
| 521 | 
            -
                            "instead."
         | 
| 522 | 
            -
                    end
         | 
| 523 | 
            -
             | 
| 524 513 | 
             
                  private
         | 
| 525 514 |  | 
| 526 515 | 
             
                    def invoke_incrementing_actual_calls_by(increment, allowed_to_fail, parent_stub, *args, &block)
         | 
    
        data/lib/rspec/mocks/proxy.rb
    CHANGED
    
    | @@ -88,12 +88,7 @@ module RSpec | |
| 88 88 | 
             
                      @error_generator.raise_expectation_on_unstubbed_method(expected_method_name)
         | 
| 89 89 | 
             
                    end
         | 
| 90 90 |  | 
| 91 | 
            -
                    @messages_received.each do |(actual_method_name,  | 
| 92 | 
            -
                      if expectation.message == actual_method_name
         | 
| 93 | 
            -
                        expectation.fail_if_problematic_received_arg_mutations(received_arg_list)
         | 
| 94 | 
            -
                      end
         | 
| 95 | 
            -
             | 
| 96 | 
            -
                      args = received_arg_list.args
         | 
| 91 | 
            +
                    @messages_received.each do |(actual_method_name, args, _)|
         | 
| 97 92 | 
             
                      next unless expectation.matches?(actual_method_name, *args)
         | 
| 98 93 |  | 
| 99 94 | 
             
                      expectation.safe_invoke(nil)
         | 
| @@ -103,8 +98,7 @@ module RSpec | |
| 103 98 |  | 
| 104 99 | 
             
                  # @private
         | 
| 105 100 | 
             
                  def check_for_unexpected_arguments(expectation)
         | 
| 106 | 
            -
                    @messages_received.each do |(method_name,  | 
| 107 | 
            -
                      args = received_arg_list.args
         | 
| 101 | 
            +
                    @messages_received.each do |(method_name, args, _)|
         | 
| 108 102 | 
             
                      next unless expectation.matches_name_but_not_args(method_name, *args)
         | 
| 109 103 |  | 
| 110 104 | 
             
                      raise_unexpected_message_args_error(expectation, *args)
         | 
| @@ -144,11 +138,7 @@ module RSpec | |
| 144 138 |  | 
| 145 139 | 
             
                  # @private
         | 
| 146 140 | 
             
                  def received_message?(method_name, *args, &block)
         | 
| 147 | 
            -
                    @messages_received.any?  | 
| 148 | 
            -
                      method_name == received_method_name &&
         | 
| 149 | 
            -
                        args == received_arg_list.args &&
         | 
| 150 | 
            -
                        block == received_block
         | 
| 151 | 
            -
                    end
         | 
| 141 | 
            +
                    @messages_received.any? { |array| array == [method_name, args, block] }
         | 
| 152 142 | 
             
                  end
         | 
| 153 143 |  | 
| 154 144 | 
             
                  # @private
         | 
| @@ -159,35 +149,7 @@ module RSpec | |
| 159 149 | 
             
                  # @private
         | 
| 160 150 | 
             
                  def record_message_received(message, *args, &block)
         | 
| 161 151 | 
             
                    @order_group.invoked SpecificMessage.new(object, message, args)
         | 
| 162 | 
            -
                    @messages_received << [message,  | 
| 163 | 
            -
                  end
         | 
| 164 | 
            -
             | 
| 165 | 
            -
                  class ReceivedArgList
         | 
| 166 | 
            -
                    attr_reader :args
         | 
| 167 | 
            -
             | 
| 168 | 
            -
                    def initialize(args)
         | 
| 169 | 
            -
                      @args          = args
         | 
| 170 | 
            -
                      @original_hash = hash_of(args)
         | 
| 171 | 
            -
                    end
         | 
| 172 | 
            -
             | 
| 173 | 
            -
                    def has_mutations?
         | 
| 174 | 
            -
                      @original_hash != hash_of(args)
         | 
| 175 | 
            -
                    end
         | 
| 176 | 
            -
             | 
| 177 | 
            -
                  private
         | 
| 178 | 
            -
             | 
| 179 | 
            -
                    def hash_of(arg)
         | 
| 180 | 
            -
                      arg.hash
         | 
| 181 | 
            -
                    rescue Exception
         | 
| 182 | 
            -
                      # While `Object#hash` is a built-in ruby method that we expect args to
         | 
| 183 | 
            -
                      # support, there's no guarantee that all args will. For example, a
         | 
| 184 | 
            -
                      # `BasicObject` instance will raise a `NoMethodError`. Given that
         | 
| 185 | 
            -
                      # we use the hash only to advise the user of a rare case we don't
         | 
| 186 | 
            -
                      # support involving mutations, it seems better to ignore this error
         | 
| 187 | 
            -
                      # and use a static value in its place (which will make us assume no
         | 
| 188 | 
            -
                      # mutation has occurred).
         | 
| 189 | 
            -
                      :failed_to_get_hash
         | 
| 190 | 
            -
                    end
         | 
| 152 | 
            +
                    @messages_received << [message, args, block]
         | 
| 191 153 | 
             
                  end
         | 
| 192 154 |  | 
| 193 155 | 
             
                  # @private
         | 
    
        data/lib/rspec/mocks/syntax.rb
    CHANGED
    
    | @@ -214,11 +214,10 @@ if defined?(BasicObject) | |
| 214 214 | 
             
                # the end of the example.
         | 
| 215 215 | 
             
                #
         | 
| 216 216 | 
             
                # @example
         | 
| 217 | 
            -
                #
         | 
| 218 | 
            -
                # | 
| 219 | 
            -
                # | 
| 220 | 
            -
                # | 
| 221 | 
            -
                #     thing_that_logs.do_something_that_logs_a_message
         | 
| 217 | 
            +
                #   logger = double('logger')
         | 
| 218 | 
            +
                #   thing_that_logs = ThingThatLogs.new(logger)
         | 
| 219 | 
            +
                #   logger.should_receive(:log)
         | 
| 220 | 
            +
                #   thing_that_logs.do_something_that_logs_a_message
         | 
| 222 221 | 
             
                #
         | 
| 223 222 | 
             
                # @note This is only available when you have enabled the `should` syntax.
         | 
| 224 223 | 
             
                # @see RSpec::Mocks::ExampleMethods#expect
         | 
| @@ -232,10 +231,9 @@ if defined?(BasicObject) | |
| 232 231 | 
             
                # Tells the object to respond to the message with the specified value.
         | 
| 233 232 | 
             
                #
         | 
| 234 233 | 
             
                # @example
         | 
| 235 | 
            -
                #
         | 
| 236 | 
            -
                # | 
| 237 | 
            -
                # | 
| 238 | 
            -
                #     counter.stub(:count) { 37 }
         | 
| 234 | 
            +
                #   counter.stub(:count).and_return(37)
         | 
| 235 | 
            +
                #   counter.stub(:count => 37)
         | 
| 236 | 
            +
                #   counter.stub(:count) { 37 }
         | 
| 239 237 | 
             
                #
         | 
| 240 238 | 
             
                # @note This is only available when you have enabled the `should` syntax.
         | 
| 241 239 | 
             
                # @see RSpec::Mocks::ExampleMethods#allow
         | 
| @@ -269,10 +267,9 @@ if defined?(BasicObject) | |
| 269 267 | 
             
                # implementation calls `foo.baz.bar`, the stub will not work.
         | 
| 270 268 | 
             
                #
         | 
| 271 269 | 
             
                # @example
         | 
| 272 | 
            -
                #
         | 
| 273 | 
            -
                # | 
| 274 | 
            -
                # | 
| 275 | 
            -
                #     double.stub_chain(:foo, :bar) { :baz }
         | 
| 270 | 
            +
                #   double.stub_chain("foo.bar") { :baz }
         | 
| 271 | 
            +
                #   double.stub_chain(:foo, :bar => :baz)
         | 
| 272 | 
            +
                #   double.stub_chain(:foo, :bar) { :baz }
         | 
| 276 273 | 
             
                #
         | 
| 277 274 | 
             
                #     # Given any of ^^ these three forms ^^:
         | 
| 278 275 | 
             
                #     double.foo.bar # => :baz
         | 
| @@ -311,15 +308,14 @@ class Class | |
| 311 308 | 
             
              # class.
         | 
| 312 309 | 
             
              #
         | 
| 313 310 | 
             
              # @example
         | 
| 311 | 
            +
              #   Car.any_instance.should_receive(:go)
         | 
| 312 | 
            +
              #   race = Race.new
         | 
| 313 | 
            +
              #   race.cars << Car.new
         | 
| 314 | 
            +
              #   race.go # assuming this delegates to all of its cars
         | 
| 315 | 
            +
              #           # this example would pass
         | 
| 314 316 | 
             
              #
         | 
| 315 | 
            -
              # | 
| 316 | 
            -
              # | 
| 317 | 
            -
              #     race.cars << Car.new
         | 
| 318 | 
            -
              #     race.go # assuming this delegates to all of its cars
         | 
| 319 | 
            -
              #             # this example would pass
         | 
| 320 | 
            -
              #
         | 
| 321 | 
            -
              #     Account.any_instance.stub(:balance) { Money.new(:USD, 25) }
         | 
| 322 | 
            -
              #     Account.new.balance # => Money.new(:USD, 25))
         | 
| 317 | 
            +
              #   Account.any_instance.stub(:balance) { Money.new(:USD, 25) }
         | 
| 318 | 
            +
              #   Account.new.balance # => Money.new(:USD, 25))
         | 
| 323 319 | 
             
              #
         | 
| 324 320 | 
             
              # @return [Recorder]
         | 
| 325 321 | 
             
              #
         | 
    
        data/lib/rspec/mocks/version.rb
    CHANGED
    
    
    
        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: 3.2. | 
| 4 | 
            +
              version: 3.2.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Steven Baker
         | 
| @@ -45,7 +45,7 @@ cert_chain: | |
| 45 45 | 
             
              ZsVDj6a7lH3cNqtWXZxrb2wO38qV5AkYj8SQK7Hj3/Yui9myUX3crr+PdetazSqQ
         | 
| 46 46 | 
             
              F3MdtaDehhjC
         | 
| 47 47 | 
             
              -----END CERTIFICATE-----
         | 
| 48 | 
            -
            date: 2015-02- | 
| 48 | 
            +
            date: 2015-02-24 00:00:00.000000000 Z
         | 
| 49 49 | 
             
            dependencies:
         | 
| 50 50 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 51 51 | 
             
              name: rspec-support
         | 
| @@ -208,9 +208,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 208 208 | 
             
                  version: '0'
         | 
| 209 209 | 
             
            requirements: []
         | 
| 210 210 | 
             
            rubyforge_project: rspec
         | 
| 211 | 
            -
            rubygems_version: 2. | 
| 211 | 
            +
            rubygems_version: 2.4.5
         | 
| 212 212 | 
             
            signing_key: 
         | 
| 213 213 | 
             
            specification_version: 4
         | 
| 214 | 
            -
            summary: rspec-mocks-3.2. | 
| 214 | 
            +
            summary: rspec-mocks-3.2.1
         | 
| 215 215 | 
             
            test_files: []
         | 
| 216 216 | 
             
            has_rdoc: 
         | 
    
        metadata.gz.sig
    CHANGED
    
    | Binary file |