Hello community,

here is the log from the commit of package rubygem-rspec-mocks for 
openSUSE:Factory checked in at 2015-12-01 10:02:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rubygem-rspec-mocks (Old)
 and      /work/SRC/openSUSE:Factory/.rubygem-rspec-mocks.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "rubygem-rspec-mocks"

Changes:
--------
--- /work/SRC/openSUSE:Factory/rubygem-rspec-mocks/rubygem-rspec-mocks.changes  
2015-07-20 11:19:52.000000000 +0200
+++ 
/work/SRC/openSUSE:Factory/.rubygem-rspec-mocks.new/rubygem-rspec-mocks.changes 
    2015-12-01 10:02:21.000000000 +0100
@@ -1,0 +2,25 @@
+Fri Nov 13 05:39:04 UTC 2015 - co...@suse.com
+
+- updated to version 3.4.0
+ see installed Changelog.md
+
+  ### 3.4.0 / 2015-11-11
+  [Full Changelog](http://github.com/rspec/rspec-mocks/compare/v3.3.2...v3.4.0)
+  
+  Enhancements:
+  
+  * Make `expect(...).to have_received` work without relying upon
+    rspec-expectations. (Myron Marston, #978)
+  * Add option for failing tests when expectations are set on `nil`.
+    (Liz Rush, #983)
+  
+  Bug Fixes:
+  
+  * Fix `have_received { ... }` so that any block passed when the message
+    was received is forwarded to the `have_received` block. (Myron Marston, 
#1006)
+  * Fix infinite loop in error generator when stubbing `respond_to?`.
+    (Alex Dowad, #1022)
+  * Fix issue with using `receive` on subclasses (at a class level) with 1.8.7.
+    (Alex Dowad, #1026)
+
+-------------------------------------------------------------------

Old:
----
  rspec-mocks-3.3.2.gem

New:
----
  rspec-mocks-3.4.0.gem

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ rubygem-rspec-mocks.spec ++++++
--- /var/tmp/diff_new_pack.7GLWpg/_old  2015-12-01 10:02:22.000000000 +0100
+++ /var/tmp/diff_new_pack.7GLWpg/_new  2015-12-01 10:02:22.000000000 +0100
@@ -24,7 +24,7 @@
 #
 
 Name:           rubygem-rspec-mocks
-Version:        3.3.2
+Version:        3.4.0
 Release:        0
 %define mod_name rspec-mocks
 %define mod_full_name %{mod_name}-%{version}
@@ -49,7 +49,7 @@
 
 %install
 %gem_install \
-  --doc-files="Changelog.md License.txt README.md" \
+  --doc-files="Changelog.md LICENSE.md README.md" \
   -f
 
 %gem_packages

++++++ rspec-mocks-3.3.2.gem -> rspec-mocks-3.4.0.gem ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/.document new/.document
--- old/.document       2015-07-15 19:12:26.000000000 +0200
+++ new/.document       2015-11-12 08:48:44.000000000 +0100
@@ -1,5 +1,5 @@
 lib/**/*.rb
 -
 README.md
-License.txt
+LICENSE.md
 Changelog.md
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/.yardopts new/.yardopts
--- old/.yardopts       2015-07-15 19:12:26.000000000 +0200
+++ new/.yardopts       2015-11-12 08:48:44.000000000 +0100
@@ -3,4 +3,4 @@
 --markup markdown
 -
 Changelog.md
-License.txt
+LICENSE.md
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Changelog.md new/Changelog.md
--- old/Changelog.md    2015-07-15 19:12:26.000000000 +0200
+++ new/Changelog.md    2015-11-12 08:48:44.000000000 +0100
@@ -1,3 +1,22 @@
+### 3.4.0 / 2015-11-11
+[Full Changelog](http://github.com/rspec/rspec-mocks/compare/v3.3.2...v3.4.0)
+
+Enhancements:
+
+* Make `expect(...).to have_received` work without relying upon
+  rspec-expectations. (Myron Marston, #978)
+* Add option for failing tests when expectations are set on `nil`.
+  (Liz Rush, #983)
+
+Bug Fixes:
+
+* Fix `have_received { ... }` so that any block passed when the message
+  was received is forwarded to the `have_received` block. (Myron Marston, 
#1006)
+* Fix infinite loop in error generator when stubbing `respond_to?`.
+  (Alex Dowad, #1022)
+* Fix issue with using `receive` on subclasses (at a class level) with 1.8.7.
+  (Alex Dowad, #1026)
+
 ### 3.3.2 / 2015-07-15
 [Full Changelog](http://github.com/rspec/rspec-mocks/compare/v3.3.1...v3.3.2)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/LICENSE.md new/LICENSE.md
--- old/LICENSE.md      1970-01-01 01:00:00.000000000 +0100
+++ new/LICENSE.md      2015-11-12 08:48:44.000000000 +0100
@@ -0,0 +1,25 @@
+The MIT License (MIT)
+=====================
+
+* Copyright © 2012 David Chelimsky, Myron Marston
+* Copyright © 2006 David Chelimsky, The RSpec Development Team
+* Copyright © 2005 Steven Baker
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/License.txt new/License.txt
--- old/License.txt     2015-07-15 19:12:26.000000000 +0200
+++ new/License.txt     1970-01-01 01:00:00.000000000 +0100
@@ -1,24 +0,0 @@
-(The MIT License)
-
-Copyright (c) 2012 David Chelimsky, Myron Marston
-Copyright (c) 2006 David Chelimsky, The RSpec Development Team
-Copyright (c) 2005 Steven Baker
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/README.md new/README.md
--- old/README.md       2015-07-15 19:12:26.000000000 +0200
+++ new/README.md       2015-11-12 08:48:44.000000000 +0100
@@ -16,6 +16,20 @@
   gem lib, :git => "git://github.com/rspec/#{lib}.git", :branch => 'master'
 end
 ```
+## Contributing
+
+Once you've set up the environment, you'll need to cd into the working
+directory of whichever repo you want to work in. From there you can run the
+specs and cucumber features, and make patches.
+
+NOTE: You do not need to use rspec-dev to work on a specific RSpec repo. You
+can treat each RSpec repo as an independent project.
+
+For information about contributing to RSpec, please refer to the following 
markdown files:
+* [Build details](BUILD_DETAIL.md)
+* [Code of Conduct](CODE_OF_CONDUCT.md)
+* [Detailed contributing guide](CONTRIBUTING.md)
+* [Development setup guide](DEVELOPMENT.md)
 
 ## Test Doubles
 
@@ -346,7 +360,7 @@
 ## Delegating to the Original Implementation
 
 When working with a partial mock object, you may occasionally
-want to set a message expecation without interfering with how
+want to set a message expectation without interfering with how
 the object responds to the message. You can use `and_call_original`
 to achieve this:
 
@@ -425,6 +439,7 @@
 
 ## Also see
 
-* [http://github.com/rspec/rspec](http://github.com/rspec/rspec)
-* [http://github.com/rspec/rspec-core](http://github.com/rspec/rspec-core)
-* 
[http://github.com/rspec/rspec-expectations](http://github.com/rspec/rspec-expectations)
+* [https://github.com/rspec/rspec](https://github.com/rspec/rspec)
+* [https://github.com/rspec/rspec-core](https://github.com/rspec/rspec-core)
+* 
[https://github.com/rspec/rspec-expectations](https://github.com/rspec/rspec-expectations)
+* [https://github.com/rspec/rspec-rails](https://github.com/rspec/rspec-rails)
Files old/checksums.yaml.gz and new/checksums.yaml.gz differ
Files old/checksums.yaml.gz.sig and new/checksums.yaml.gz.sig differ
Files old/data.tar.gz.sig and new/data.tar.gz.sig differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rspec/mocks/configuration.rb 
new/lib/rspec/mocks/configuration.rb
--- old/lib/rspec/mocks/configuration.rb        2015-07-15 19:12:26.000000000 
+0200
+++ new/lib/rspec/mocks/configuration.rb        2015-11-12 08:48:44.000000000 
+0100
@@ -3,12 +3,29 @@
     # Provides configuration options for rspec-mocks.
     class Configuration
       def initialize
+        @allow_message_expectations_on_nil = nil
         @yield_receiver_to_any_instance_implementation_blocks = true
         @verify_doubled_constant_names = false
         @transfer_nested_constants = false
         @verify_partial_doubles = false
       end
 
+      # Sets whether RSpec will warn, ignore, or fail a test when
+      # expectations are set on nil.
+      # By default, when this flag is not set, warning messages are issued when
+      # expectations are set on nil. This is to prevent false-positives and to
+      # catch potential bugs early on.
+      # When set to `true`, warning messages are suppressed.
+      # When set to `false`, it will raise an error.
+      #
+      # @example
+      #   RSpec.configure do |config|
+      #     config.mock_with :rspec do |mocks|
+      #       mocks.allow_message_expectations_on_nil = false
+      #     end
+      #   end
+      attr_accessor :allow_message_expectations_on_nil
+
       def yield_receiver_to_any_instance_implementation_blocks?
         @yield_receiver_to_any_instance_implementation_blocks
       end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rspec/mocks/error_generator.rb 
new/lib/rspec/mocks/error_generator.rb
--- old/lib/rspec/mocks/error_generator.rb      2015-07-15 19:12:26.000000000 
+0200
+++ new/lib/rspec/mocks/error_generator.rb      2015-11-12 08:48:44.000000000 
+0100
@@ -69,12 +69,7 @@
       end
 
       def default_error_message(expectation, expected_args, actual_args)
-        [
-          intro,
-          "received",
-          expectation.message.inspect,
-          unexpected_arguments_message(expected_args, actual_args),
-        ].join(" ")
+        "#{intro} received #{expectation.message.inspect} 
#{unexpected_arguments_message(expected_args, actual_args)}"
       end
 
       # rubocop:disable Style/ParameterLists
@@ -213,6 +208,16 @@
         notify MockExpectationAlreadyInvokedError.new(error_message)
       end
 
+      def raise_expectation_on_nil_error(method_name)
+        __raise expectation_on_nil_message(method_name)
+      end
+
+      def expectation_on_nil_message(method_name)
+        "An expectation of `:#{method_name}` was set on `nil`. " \
+        "To allow expectations on `nil` and suppress this message, set 
`config.allow_expectations_on_nil` to `true`. " \
+        "To disallow expectations on `nil`, set 
`config.allow_expectations_on_nil` to `false`"
+      end
+
     private
 
       def received_part_of_expectation_error(actual_received_count, args)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rspec/mocks/example_methods.rb 
new/lib/rspec/mocks/example_methods.rb
--- old/lib/rspec/mocks/example_methods.rb      2015-07-15 19:12:26.000000000 
+0200
+++ new/lib/rspec/mocks/example_methods.rb      2015-11-12 08:48:44.000000000 
+0100
@@ -197,6 +197,7 @@
       # By default warning messages are issued when expectations are set on
       # nil.  This is to prevent false-positives and to catch potential bugs
       # early on.
+      # @deprecated Use 
{RSpec::Mocks::Configuration#allow_message_expectations_on_nil} instead.
       def allow_message_expectations_on_nil
         RSpec::Mocks.space.proxy_for(nil).warn_about_expectations = false
       end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rspec/mocks/instance_method_stasher.rb 
new/lib/rspec/mocks/instance_method_stasher.rb
--- old/lib/rspec/mocks/instance_method_stasher.rb      2015-07-15 
19:12:26.000000000 +0200
+++ new/lib/rspec/mocks/instance_method_stasher.rb      2015-11-12 
08:48:44.000000000 +0100
@@ -31,7 +31,6 @@
         def stashed_method_name
           "obfuscated_by_rspec_mocks__#{@method}"
         end
-        private :stashed_method_name
 
         # @private
         def restore
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rspec/mocks/matchers/have_received.rb 
new/lib/rspec/mocks/matchers/have_received.rb
--- old/lib/rspec/mocks/matchers/have_received.rb       2015-07-15 
19:12:26.000000000 +0200
+++ new/lib/rspec/mocks/matchers/have_received.rb       2015-11-12 
08:48:44.000000000 +0100
@@ -36,11 +36,11 @@
         end
 
         def failure_message
-          generate_failure_message
+          capture_failure_message
         end
 
         def failure_message_when_negated
-          generate_failure_message
+          capture_failure_message
         end
 
         def description
@@ -54,6 +54,14 @@
           end
         end
 
+        def setup_expectation(subject, &block)
+          notify_failure_message unless matches?(subject, &block)
+        end
+
+        def setup_negative_expectation(subject, &block)
+          notify_failure_message unless does_not_match?(subject, &block)
+        end
+
         def setup_allowance(_subject, &_block)
           disallow("allow", " as it would have no effect")
         end
@@ -95,13 +103,17 @@
           end
         end
 
-        def generate_failure_message
+        def capture_failure_message
           RSpec::Support.with_failure_notifier(Proc.new { |err, _opt| return 
err.message }) do
-            mock_proxy.check_for_unexpected_arguments(@expectation)
-            @expectation.generate_error
+            notify_failure_message
           end
         end
 
+        def notify_failure_message
+          mock_proxy.check_for_unexpected_arguments(@expectation)
+          @expectation.generate_error
+        end
+
         def expected_messages_received_in_order?
           mock_proxy.replay_received_message_on @expectation, &@block
           @expectation.expected_messages_received? && 
@expectation.ensure_expected_ordering_received!
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rspec/mocks/message_expectation.rb 
new/lib/rspec/mocks/message_expectation.rb
--- old/lib/rspec/mocks/message_expectation.rb  2015-07-15 19:12:26.000000000 
+0200
+++ new/lib/rspec/mocks/message_expectation.rb  2015-11-12 08:48:44.000000000 
+0100
@@ -2,7 +2,7 @@
   module Mocks
     # A message expectation that only allows concrete return values to be set
     # for a message. While this same effect can be achieved using a standard
-    # MessageExpecation, this version is much faster and so can be used as an
+    # MessageExpectation, this version is much faster and so can be used as an
     # optimization.
     #
     # @private
@@ -169,7 +169,7 @@
       # Tells the object to yield one or more args to a block when the message
       # is received.
       #
-      # @return [MessageExpecation] self, to support further chaining.
+      # @return [MessageExpectation] self, to support further chaining.
       # @example
       #   stream.stub(:open).and_yield(StringIO.new)
       def and_yield(*args, &block)
@@ -191,7 +191,7 @@
       # Constrain a message expectation to be received a specific number of
       # times.
       #
-      # @return [MessageExpecation] self, to support further chaining.
+      # @return [MessageExpectation] self, to support further chaining.
       # @example
       #   expect(dealer).to receive(:deal_card).exactly(10).times
       def exactly(n, &block)
@@ -204,7 +204,7 @@
       # Constrain a message expectation to be received at least a specific
       # number of times.
       #
-      # @return [MessageExpecation] self, to support further chaining.
+      # @return [MessageExpectation] self, to support further chaining.
       # @example
       #   expect(dealer).to receive(:deal_card).at_least(9).times
       def at_least(n, &block)
@@ -223,7 +223,7 @@
       # Constrain a message expectation to be received at most a specific
       # number of times.
       #
-      # @return [MessageExpecation] self, to support further chaining.
+      # @return [MessageExpectation] self, to support further chaining.
       # @example
       #   expect(dealer).to receive(:deal_card).at_most(10).times
       def at_most(n, &block)
@@ -235,7 +235,7 @@
 
       # Syntactic sugar for `exactly`, `at_least` and `at_most`
       #
-      # @return [MessageExpecation] self, to support further chaining.
+      # @return [MessageExpectation] self, to support further chaining.
       # @example
       #   expect(dealer).to receive(:deal_card).exactly(10).times
       #   expect(dealer).to receive(:deal_card).at_least(10).times
@@ -247,7 +247,7 @@
 
       # Expect a message not to be received at all.
       #
-      # @return [MessageExpecation] self, to support further chaining.
+      # @return [MessageExpectation] self, to support further chaining.
       # @example
       #   expect(car).to receive(:stop).never
       def never
@@ -258,7 +258,7 @@
 
       # Expect a message to be received exactly one time.
       #
-      # @return [MessageExpecation] self, to support further chaining.
+      # @return [MessageExpectation] self, to support further chaining.
       # @example
       #   expect(car).to receive(:go).once
       def once(&block)
@@ -269,7 +269,7 @@
 
       # Expect a message to be received exactly two times.
       #
-      # @return [MessageExpecation] self, to support further chaining.
+      # @return [MessageExpectation] self, to support further chaining.
       # @example
       #   expect(car).to receive(:go).twice
       def twice(&block)
@@ -280,7 +280,7 @@
 
       # Expect a message to be received exactly three times.
       #
-      # @return [MessageExpecation] self, to support further chaining.
+      # @return [MessageExpectation] self, to support further chaining.
       # @example
       #   expect(car).to receive(:go).thrice
       def thrice(&block)
@@ -302,7 +302,7 @@
       # A message expectation will fail if the message is received with 
different
       # arguments.
       #
-      # @return [MessageExpecation] self, to support further chaining.
+      # @return [MessageExpectation] self, to support further chaining.
       # @example
       #   allow(cart).to receive(:add) { :failure }
       #   allow(cart).to receive(:add).with(Book.new(:isbn => 1934356379)) { 
:success }
@@ -330,7 +330,7 @@
 
       # Expect messages to be received in a specific order.
       #
-      # @return [MessageExpecation] self, to support further chaining.
+      # @return [MessageExpectation] self, to support further chaining.
       # @example
       #   expect(api).to receive(:prepare).ordered
       #   expect(api).to receive(:run).ordered
@@ -345,7 +345,7 @@
       end
 
       # @private
-      # Contains the parts of `MessageExpecation` that aren't part of
+      # Contains the parts of `MessageExpectation` that aren't part of
       # rspec-mocks' public API. The class is very big and could really use
       # some collaborators it delegates to for this stuff but for now this was
       # the simplest way to split the public from private stuff to make it
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rspec/mocks/method_double.rb 
new/lib/rspec/mocks/method_double.rb
--- old/lib/rspec/mocks/method_double.rb        2015-07-15 19:12:26.000000000 
+0200
+++ new/lib/rspec/mocks/method_double.rb        2015-11-12 08:48:44.000000000 
+0100
@@ -3,7 +3,7 @@
     # @private
     class MethodDouble
       # @private
-      attr_reader :method_name, :object, :expectations, :stubs
+      attr_reader :method_name, :object, :expectations, :stubs, :method_stasher
 
       # @private
       def initialize(object, method_name, proxy)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rspec/mocks/mutex.rb new/lib/rspec/mocks/mutex.rb
--- old/lib/rspec/mocks/mutex.rb        2015-07-15 19:12:26.000000000 +0200
+++ new/lib/rspec/mocks/mutex.rb        1970-01-01 01:00:00.000000000 +0100
@@ -1,73 +0,0 @@
-module RSpec
-  module Mocks
-    # On 1.8.7, it's in the stdlib.
-    # We don't want to load the stdlib, b/c this is a test tool, and can affect
-    # the test environment, causing tests to pass where they should fail.
-    #
-    # So we're transcribing/modifying it from
-    # https://github.com/ruby/ruby/blob/v1_8_7_374/lib/thread.rb#L56
-    # Some methods we don't need are deleted. Anything I don't
-    # understand (there's quite a bit, actually) is left in.
-    #
-    # Some formating changes are made to appease the robot overlord:
-    #   https://travis-ci.org/rspec/rspec-core/jobs/54410874
-    # @private
-    class Mutex
-      def initialize
-        @waiting = []
-        @locked = false
-        @waiting.taint
-        taint
-      end
-
-      # @private
-      def lock
-        while Thread.critical = true && @locked
-          @waiting.push Thread.current
-          Thread.stop
-        end
-        @locked = true
-        Thread.critical = false
-        self
-      end
-
-      # @private
-      def unlock
-        return unless @locked
-        Thread.critical = true
-        @locked = false
-        wakeup_and_run_waiting_thread
-        self
-      end
-
-      # @private
-      def synchronize
-        lock
-        begin
-          yield
-        ensure
-          unlock
-        end
-      end
-
-    private
-
-      def wakeup_and_run_waiting_thread
-        begin
-          t = @waiting.shift
-          t.wakeup if t
-        rescue ThreadError
-          retry
-        end
-        Thread.critical = false
-        begin
-          t.run if t
-        rescue ThreadError
-          :noop
-        end
-      end
-
-      # Avoid warnings for library wide checks spec
-    end unless defined?(::RSpec::Mocks::Mutex) || defined?(::Mutex)
-  end
-end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rspec/mocks/proxy.rb new/lib/rspec/mocks/proxy.rb
--- old/lib/rspec/mocks/proxy.rb        2015-07-15 19:12:26.000000000 +0200
+++ new/lib/rspec/mocks/proxy.rb        2015-11-12 08:48:44.000000000 +0100
@@ -89,11 +89,11 @@
           
@error_generator.raise_expectation_on_unstubbed_method(expected_method_name)
         end
 
-        @messages_received.each do |(actual_method_name, args, _)|
+        @messages_received.each do |(actual_method_name, args, received_block)|
           next unless expectation.matches?(actual_method_name, *args)
 
           expectation.safe_invoke(nil)
-          block.call(*args) if block
+          block.call(*args, &received_block) if block
         end
       end
 
@@ -371,20 +371,36 @@
 
         return super unless unbound_method
         unbound_method.bind(object)
+        # :nocov:
+      rescue TypeError
+        if RUBY_VERSION == '1.8.7'
+          # In MRI 1.8.7, a singleton method on a class cannot be rebound to 
its subclass
+          if unbound_method && unbound_method.owner.ancestors.first != 
unbound_method.owner
+            # This is a singleton method; we can't do anything with it
+            # But we can work around this using a different implementation
+            double = method_double_from_ancestor_for(message)
+            return object.method(double.method_stasher.stashed_method_name)
+          end
+        end
+        raise
+        # :nocov:
       end
 
     protected
 
       def original_unbound_method_handle_from_ancestor_for(message)
-        method_double = @method_doubles.fetch(message) do
+        double = method_double_from_ancestor_for(message)
+        double && double.original_method.unbind
+      end
+
+      def method_double_from_ancestor_for(message)
+        @method_doubles.fetch(message) do
           # The fact that there is no method double for this message indicates
           # that it has not been redefined by rspec-mocks. We need to continue
           # looking up the ancestor chain.
           return superclass_proxy &&
-            
superclass_proxy.original_unbound_method_handle_from_ancestor_for(message)
+            superclass_proxy.method_double_from_ancestor_for(message)
         end
-
-        method_double.original_method.unbind
       end
 
       def superclass_proxy
@@ -406,33 +422,62 @@
     # @private
     class ProxyForNil < PartialDoubleProxy
       def initialize(order_group)
-        @warn_about_expectations = true
+        set_expectation_behavior
         super(nil, order_group)
       end
 
+      attr_accessor :disallow_expectations
       attr_accessor :warn_about_expectations
-      alias warn_about_expectations? warn_about_expectations
 
       def add_message_expectation(method_name, opts={}, &block)
-        warn(method_name) if warn_about_expectations?
+        warn_or_raise!(method_name)
         super
       end
 
       def add_negative_message_expectation(location, method_name, 
&implementation)
-        warn(method_name) if warn_about_expectations?
+        warn_or_raise!(method_name)
         super
       end
 
       def add_stub(method_name, opts={}, &implementation)
-        warn(method_name) if warn_about_expectations?
+        warn_or_raise!(method_name)
         super
       end
 
     private
 
+      def set_expectation_behavior
+        case RSpec::Mocks.configuration.allow_message_expectations_on_nil
+        when false
+          @warn_about_expectations = false
+          @disallow_expectations = true
+        when true
+          @warn_about_expectations = false
+          @disallow_expectations = false
+        else
+          @warn_about_expectations = true
+          @disallow_expectations = false
+        end
+      end
+
+      def warn_or_raise!(method_name)
+        # This method intentionally swallows the message when
+        # neither disallow_expectations nor warn_about_expectations
+        # are set to true.
+        if disallow_expectations
+          raise_error(method_name)
+        elsif warn_about_expectations
+          warn(method_name)
+        end
+      end
+
       def warn(method_name)
-        source = CallerFilter.first_non_rspec_line
-        Kernel.warn("An expectation of :#{method_name} was set on nil. Called 
from #{source}. Use allow_message_expectations_on_nil to disable warnings.")
+        warning_msg = @error_generator.expectation_on_nil_message(method_name)
+        RSpec.warning(warning_msg)
+      end
+
+      def raise_error(method_name)
+        @error_generator.raise_expectation_on_nil_error(method_name)
       end
     end
   end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rspec/mocks/reentrant_mutex.rb 
new/lib/rspec/mocks/reentrant_mutex.rb
--- old/lib/rspec/mocks/reentrant_mutex.rb      2015-07-15 19:12:26.000000000 
+0200
+++ new/lib/rspec/mocks/reentrant_mutex.rb      1970-01-01 01:00:00.000000000 
+0100
@@ -1,53 +0,0 @@
-module RSpec
-  module Mocks
-    # Allows a thread to lock out other threads from a critical section of 
code,
-    # while allowing the thread with the lock to reenter that section.
-    #
-    # Based on Monitor as of 2.2 -
-    # 
https://github.com/ruby/ruby/blob/eb7ddaa3a47bf48045d26c72eb0f263a53524ebc/lib/monitor.rb#L9
-    #
-    # Depends on Mutex, but Mutex is only available as part of core since 
1.9.1:
-    #   exists - http://ruby-doc.org/core-1.9.1/Mutex.html
-    #   dne    - http://ruby-doc.org/core-1.9.0/Mutex.html
-    #
-    # @private
-    class ReentrantMutex
-      def initialize
-        @owner = nil
-        @count = 0
-        @mutex = Mutex.new
-      end
-
-      def synchronize
-        enter
-        yield
-      ensure
-        exit
-      end
-
-    private
-
-      def enter
-        @mutex.lock if @owner != Thread.current
-        @owner = Thread.current
-        @count += 1
-      end
-
-      def exit
-        @count -= 1
-        return unless @count == 0
-        @owner = nil
-        @mutex.unlock
-      end
-    end
-
-    if defined? ::Mutex
-      # On 1.9 and up, this is in core, so we just use the real one
-      Mutex = ::Mutex
-    else # For 1.8.7
-      # :nocov:
-      RSpec::Support.require_rspec_mocks "mutex"
-      # :nocov:
-    end
-  end
-end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rspec/mocks/space.rb new/lib/rspec/mocks/space.rb
--- old/lib/rspec/mocks/space.rb        2015-07-15 19:12:26.000000000 +0200
+++ new/lib/rspec/mocks/space.rb        2015-11-12 08:48:44.000000000 +0100
@@ -1,4 +1,4 @@
-RSpec::Support.require_rspec_mocks 'reentrant_mutex'
+RSpec::Support.require_rspec_support 'reentrant_mutex'
 
 module RSpec
   module Mocks
@@ -145,7 +145,7 @@
     private
 
       def new_mutex
-        Mocks::ReentrantMutex.new
+        Support::ReentrantMutex.new
       end
 
       def proxy_not_found_for(id, object)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rspec/mocks/syntax.rb 
new/lib/rspec/mocks/syntax.rb
--- old/lib/rspec/mocks/syntax.rb       2015-07-15 19:12:26.000000000 +0200
+++ new/lib/rspec/mocks/syntax.rb       2015-11-12 08:48:44.000000000 +0100
@@ -48,7 +48,7 @@
           end
 
           def unstub(message)
-            ::RSpec::Mocks::Syntax.warn_unless_should_configured(__method__, 
"`allow(...).to_receive(...).and_call_original` or explicitly enable `:should`")
+            ::RSpec::Mocks::Syntax.warn_unless_should_configured(__method__, 
"`allow(...).to receive(...).and_call_original` or explicitly enable `:should`")
             ::RSpec::Mocks.space.proxy_for(self).remove_stub(message)
           end
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rspec/mocks/targets.rb 
new/lib/rspec/mocks/targets.rb
--- old/lib/rspec/mocks/targets.rb      2015-07-15 19:12:26.000000000 +0200
+++ new/lib/rspec/mocks/targets.rb      2015-11-12 08:48:44.000000000 +0100
@@ -19,7 +19,7 @@
         method_name = options.fetch(:from)
         define_method(method_name) do |matcher, &block|
           case matcher
-          when Matchers::Receive
+          when Matchers::Receive, Matchers::HaveReceived
             define_matcher(matcher, matcher_method, &block)
           when Matchers::ReceiveMessages, Matchers::ReceiveMessageChain
             raise_negation_unsupported(method_name, matcher)
@@ -47,7 +47,7 @@
 
       def raise_unsupported_matcher(method_name, matcher)
         raise UnsupportedMatcherError,
-              "only the `receive` or `receive_messages` matchers are supported 
" \
+              "only the `receive`, `have_received` and `receive_messages` 
matchers are supported " \
               "with `#{expression}(...).#{method_name}`, but you have 
provided: #{matcher}"
       end
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rspec/mocks/verifying_message_expecation.rb 
new/lib/rspec/mocks/verifying_message_expecation.rb
--- old/lib/rspec/mocks/verifying_message_expecation.rb 2015-07-15 
19:12:26.000000000 +0200
+++ new/lib/rspec/mocks/verifying_message_expecation.rb 1970-01-01 
01:00:00.000000000 +0100
@@ -1,54 +0,0 @@
-RSpec::Support.require_rspec_support 'method_signature_verifier'
-
-module RSpec
-  module Mocks
-    # A message expectation that knows about the real implementation of the
-    # message being expected, so that it can verify that any expectations
-    # have the valid arguments.
-    # @api private
-    class VerifyingMessageExpectation < MessageExpectation
-      # A level of indirection is used here rather than just passing in the
-      # method itself, since method look up is expensive and we only want to
-      # do it if actually needed.
-      #
-      # Conceptually the method reference makes more sense as a constructor
-      # argument since it should be immutable, but it is significantly more
-      # straight forward to build the object in pieces so for now it stays as
-      # an accessor.
-      attr_accessor :method_reference
-
-      def initialize(*args)
-        super
-      end
-
-      # @private
-      def with(*args, &block)
-        super(*args, &block).tap do
-          validate_expected_arguments! do |signature|
-            example_call_site_args = [:an_arg] * signature.min_non_kw_args
-            example_call_site_args << :kw_args_hash if 
signature.required_kw_args.any?
-            
@argument_list_matcher.resolve_expected_args_based_on(example_call_site_args)
-          end
-        end
-      end
-
-    private
-
-      def validate_expected_arguments!
-        return if method_reference.nil?
-
-        method_reference.with_signature do |signature|
-          args     = yield signature
-          verifier = Support::LooseSignatureVerifier.new(signature, args)
-
-          unless verifier.valid?
-            # Fail fast is required, otherwise the message expecation will fail
-            # as well ("expected method not called") and clobber this one.
-            @failed_fast = true
-            @error_generator.raise_invalid_arguments_error(verifier)
-          end
-        end
-      end
-    end
-  end
-end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rspec/mocks/verifying_message_expectation.rb 
new/lib/rspec/mocks/verifying_message_expectation.rb
--- old/lib/rspec/mocks/verifying_message_expectation.rb        1970-01-01 
01:00:00.000000000 +0100
+++ new/lib/rspec/mocks/verifying_message_expectation.rb        2015-11-12 
08:48:44.000000000 +0100
@@ -0,0 +1,54 @@
+RSpec::Support.require_rspec_support 'method_signature_verifier'
+
+module RSpec
+  module Mocks
+    # A message expectation that knows about the real implementation of the
+    # message being expected, so that it can verify that any expectations
+    # have the valid arguments.
+    # @api private
+    class VerifyingMessageExpectation < MessageExpectation
+      # A level of indirection is used here rather than just passing in the
+      # method itself, since method look up is expensive and we only want to
+      # do it if actually needed.
+      #
+      # Conceptually the method reference makes more sense as a constructor
+      # argument since it should be immutable, but it is significantly more
+      # straight forward to build the object in pieces so for now it stays as
+      # an accessor.
+      attr_accessor :method_reference
+
+      def initialize(*args)
+        super
+      end
+
+      # @private
+      def with(*args, &block)
+        super(*args, &block).tap do
+          validate_expected_arguments! do |signature|
+            example_call_site_args = [:an_arg] * signature.min_non_kw_args
+            example_call_site_args << :kw_args_hash if 
signature.required_kw_args.any?
+            
@argument_list_matcher.resolve_expected_args_based_on(example_call_site_args)
+          end
+        end
+      end
+
+    private
+
+      def validate_expected_arguments!
+        return if method_reference.nil?
+
+        method_reference.with_signature do |signature|
+          args     = yield signature
+          verifier = Support::LooseSignatureVerifier.new(signature, args)
+
+          unless verifier.valid?
+            # Fail fast is required, otherwise the message expectation will 
fail
+            # as well ("expected method not called") and clobber this one.
+            @failed_fast = true
+            @error_generator.raise_invalid_arguments_error(verifier)
+          end
+        end
+      end
+    end
+  end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rspec/mocks/verifying_proxy.rb 
new/lib/rspec/mocks/verifying_proxy.rb
--- old/lib/rspec/mocks/verifying_proxy.rb      2015-07-15 19:12:26.000000000 
+0200
+++ new/lib/rspec/mocks/verifying_proxy.rb      2015-11-12 08:48:44.000000000 
+0100
@@ -1,4 +1,4 @@
-RSpec::Support.require_rspec_mocks 'verifying_message_expecation'
+RSpec::Support.require_rspec_mocks 'verifying_message_expectation'
 RSpec::Support.require_rspec_mocks 'method_reference'
 
 module RSpec
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rspec/mocks/version.rb 
new/lib/rspec/mocks/version.rb
--- old/lib/rspec/mocks/version.rb      2015-07-15 19:12:27.000000000 +0200
+++ new/lib/rspec/mocks/version.rb      2015-11-12 08:48:44.000000000 +0100
@@ -3,7 +3,7 @@
     # Version information for RSpec mocks.
     module Version
       # Version of RSpec mocks currently in use in SemVer format.
-      STRING = '3.3.2'
+      STRING = '3.4.0'
     end
   end
 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/metadata new/metadata
--- old/metadata        2015-07-15 19:12:26.000000000 +0200
+++ new/metadata        2015-11-12 08:48:44.000000000 +0100
@@ -1,7 +1,7 @@
 --- !ruby/object:Gem::Specification
 name: rspec-mocks
 version: !ruby/object:Gem::Version
-  version: 3.3.2
+  version: 3.4.0
 platform: ruby
 authors:
 - Steven Baker
@@ -45,7 +45,7 @@
   ZsVDj6a7lH3cNqtWXZxrb2wO38qV5AkYj8SQK7Hj3/Yui9myUX3crr+PdetazSqQ
   F3MdtaDehhjC
   -----END CERTIFICATE-----
-date: 2015-07-15 00:00:00.000000000 Z
+date: 2015-11-12 00:00:00.000000000 Z
 dependencies:
 - !ruby/object:Gem::Dependency
   name: rspec-support
@@ -53,14 +53,14 @@
     requirements:
     - - "~>"
       - !ruby/object:Gem::Version
-        version: 3.3.0
+        version: 3.4.0
   type: :runtime
   prerelease: false
   version_requirements: !ruby/object:Gem::Requirement
     requirements:
     - - "~>"
       - !ruby/object:Gem::Version
-        version: 3.3.0
+        version: 3.4.0
 - !ruby/object:Gem::Dependency
   name: diff-lcs
   requirement: !ruby/object:Gem::Requirement
@@ -115,14 +115,14 @@
     requirements:
     - - "~>"
       - !ruby/object:Gem::Version
-        version: '0.5'
+        version: 0.6.2
   type: :development
   prerelease: false
   version_requirements: !ruby/object:Gem::Requirement
     requirements:
     - - "~>"
       - !ruby/object:Gem::Version
-        version: '0.5'
+        version: 0.6.2
 - !ruby/object:Gem::Dependency
   name: minitest
   requirement: !ruby/object:Gem::Requirement
@@ -137,20 +137,6 @@
     - - "~>"
       - !ruby/object:Gem::Version
         version: '5.2'
-- !ruby/object:Gem::Dependency
-  name: thread_order
-  requirement: !ruby/object:Gem::Requirement
-    requirements:
-    - - "~>"
-      - !ruby/object:Gem::Version
-        version: 1.1.0
-  type: :development
-  prerelease: false
-  version_requirements: !ruby/object:Gem::Requirement
-    requirements:
-    - - "~>"
-      - !ruby/object:Gem::Version
-        version: 1.1.0
 description: RSpec's 'test double' framework, with support for stubbing and 
mocking
 email: rs...@googlegroups.com
 executables: []
@@ -160,7 +146,7 @@
 - ".document"
 - ".yardopts"
 - Changelog.md
-- License.txt
+- LICENSE.md
 - README.md
 - lib/rspec/mocks.rb
 - lib/rspec/mocks/any_instance.rb
@@ -190,18 +176,16 @@
 - lib/rspec/mocks/method_double.rb
 - lib/rspec/mocks/method_reference.rb
 - lib/rspec/mocks/mutate_const.rb
-- lib/rspec/mocks/mutex.rb
 - lib/rspec/mocks/object_reference.rb
 - lib/rspec/mocks/order_group.rb
 - lib/rspec/mocks/proxy.rb
-- lib/rspec/mocks/reentrant_mutex.rb
 - lib/rspec/mocks/space.rb
 - lib/rspec/mocks/standalone.rb
 - lib/rspec/mocks/syntax.rb
 - lib/rspec/mocks/targets.rb
 - lib/rspec/mocks/test_double.rb
 - lib/rspec/mocks/verifying_double.rb
-- lib/rspec/mocks/verifying_message_expecation.rb
+- lib/rspec/mocks/verifying_message_expectation.rb
 - lib/rspec/mocks/verifying_proxy.rb
 - lib/rspec/mocks/version.rb
 homepage: http://github.com/rspec/rspec-mocks
@@ -228,6 +212,6 @@
 rubygems_version: 2.2.2
 signing_key: 
 specification_version: 4
-summary: rspec-mocks-3.3.2
+summary: rspec-mocks-3.4.0
 test_files: []
 has_rdoc: 
Files old/metadata.gz.sig and new/metadata.gz.sig differ


Reply via email to