rspec-mocks 3.3.1 → 3.3.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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/Changelog.md +8 -0
- data/lib/rspec/mocks/mutex.rb +73 -0
- data/lib/rspec/mocks/reentrant_mutex.rb +53 -0
- data/lib/rspec/mocks/space.rb +3 -11
- data/lib/rspec/mocks/version.rb +1 -1
- metadata +19 -3
- 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: 159a6b84817d3fe5b931c2fa0158a88ac84ab6d5
         | 
| 4 | 
            +
              data.tar.gz: c9b42659f94d5814fc4aeb107954eb15763a9e93
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: f0f3c1c4ec0ebd3efbbf608c3c749f1af4354aa78264c0738241a8585d4c8b170508ead0da894f2808fb1c43d692b1d7a910744b95ce20f4c3f1c2f7e8ef2d4e
         | 
| 7 | 
            +
              data.tar.gz: 52b08792990f741a014390e5886fe49226b7c22ca90db1e01e0b26728571020702ce37d6b635a3df87635275b4c05606dfbd475b68120c7664fade2a86a20d86
         | 
    
        checksums.yaml.gz.sig
    CHANGED
    
    | Binary file | 
    
        data.tar.gz.sig
    CHANGED
    
    | Binary file | 
    
        data/Changelog.md
    CHANGED
    
    | @@ -1,3 +1,11 @@ | |
| 1 | 
            +
            ### 3.3.2 / 2015-07-15
         | 
| 2 | 
            +
            [Full Changelog](http://github.com/rspec/rspec-mocks/compare/v3.3.1...v3.3.2)
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            Bug Fixes:
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            * Prevent thread deadlock errors during proxy creation (e.g. when using
         | 
| 7 | 
            +
              `before_verifying_doubles` callbacks). (Jon Rowe, #980, #979)
         | 
| 8 | 
            +
             | 
| 1 9 | 
             
            ### 3.3.1 / 2015-06-19
         | 
| 2 10 | 
             
            [Full Changelog](http://github.com/rspec/rspec-mocks/compare/v3.3.0...v3.3.1)
         | 
| 3 11 |  | 
| @@ -0,0 +1,73 @@ | |
| 1 | 
            +
            module RSpec
         | 
| 2 | 
            +
              module Mocks
         | 
| 3 | 
            +
                # On 1.8.7, it's in the stdlib.
         | 
| 4 | 
            +
                # We don't want to load the stdlib, b/c this is a test tool, and can affect
         | 
| 5 | 
            +
                # the test environment, causing tests to pass where they should fail.
         | 
| 6 | 
            +
                #
         | 
| 7 | 
            +
                # So we're transcribing/modifying it from
         | 
| 8 | 
            +
                # https://github.com/ruby/ruby/blob/v1_8_7_374/lib/thread.rb#L56
         | 
| 9 | 
            +
                # Some methods we don't need are deleted. Anything I don't
         | 
| 10 | 
            +
                # understand (there's quite a bit, actually) is left in.
         | 
| 11 | 
            +
                #
         | 
| 12 | 
            +
                # Some formating changes are made to appease the robot overlord:
         | 
| 13 | 
            +
                #   https://travis-ci.org/rspec/rspec-core/jobs/54410874
         | 
| 14 | 
            +
                # @private
         | 
| 15 | 
            +
                class Mutex
         | 
| 16 | 
            +
                  def initialize
         | 
| 17 | 
            +
                    @waiting = []
         | 
| 18 | 
            +
                    @locked = false
         | 
| 19 | 
            +
                    @waiting.taint
         | 
| 20 | 
            +
                    taint
         | 
| 21 | 
            +
                  end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                  # @private
         | 
| 24 | 
            +
                  def lock
         | 
| 25 | 
            +
                    while Thread.critical = true && @locked
         | 
| 26 | 
            +
                      @waiting.push Thread.current
         | 
| 27 | 
            +
                      Thread.stop
         | 
| 28 | 
            +
                    end
         | 
| 29 | 
            +
                    @locked = true
         | 
| 30 | 
            +
                    Thread.critical = false
         | 
| 31 | 
            +
                    self
         | 
| 32 | 
            +
                  end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                  # @private
         | 
| 35 | 
            +
                  def unlock
         | 
| 36 | 
            +
                    return unless @locked
         | 
| 37 | 
            +
                    Thread.critical = true
         | 
| 38 | 
            +
                    @locked = false
         | 
| 39 | 
            +
                    wakeup_and_run_waiting_thread
         | 
| 40 | 
            +
                    self
         | 
| 41 | 
            +
                  end
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                  # @private
         | 
| 44 | 
            +
                  def synchronize
         | 
| 45 | 
            +
                    lock
         | 
| 46 | 
            +
                    begin
         | 
| 47 | 
            +
                      yield
         | 
| 48 | 
            +
                    ensure
         | 
| 49 | 
            +
                      unlock
         | 
| 50 | 
            +
                    end
         | 
| 51 | 
            +
                  end
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                private
         | 
| 54 | 
            +
             | 
| 55 | 
            +
                  def wakeup_and_run_waiting_thread
         | 
| 56 | 
            +
                    begin
         | 
| 57 | 
            +
                      t = @waiting.shift
         | 
| 58 | 
            +
                      t.wakeup if t
         | 
| 59 | 
            +
                    rescue ThreadError
         | 
| 60 | 
            +
                      retry
         | 
| 61 | 
            +
                    end
         | 
| 62 | 
            +
                    Thread.critical = false
         | 
| 63 | 
            +
                    begin
         | 
| 64 | 
            +
                      t.run if t
         | 
| 65 | 
            +
                    rescue ThreadError
         | 
| 66 | 
            +
                      :noop
         | 
| 67 | 
            +
                    end
         | 
| 68 | 
            +
                  end
         | 
| 69 | 
            +
             | 
| 70 | 
            +
                  # Avoid warnings for library wide checks spec
         | 
| 71 | 
            +
                end unless defined?(::RSpec::Mocks::Mutex) || defined?(::Mutex)
         | 
| 72 | 
            +
              end
         | 
| 73 | 
            +
            end
         | 
| @@ -0,0 +1,53 @@ | |
| 1 | 
            +
            module RSpec
         | 
| 2 | 
            +
              module Mocks
         | 
| 3 | 
            +
                # Allows a thread to lock out other threads from a critical section of code,
         | 
| 4 | 
            +
                # while allowing the thread with the lock to reenter that section.
         | 
| 5 | 
            +
                #
         | 
| 6 | 
            +
                # Based on Monitor as of 2.2 -
         | 
| 7 | 
            +
                # https://github.com/ruby/ruby/blob/eb7ddaa3a47bf48045d26c72eb0f263a53524ebc/lib/monitor.rb#L9
         | 
| 8 | 
            +
                #
         | 
| 9 | 
            +
                # Depends on Mutex, but Mutex is only available as part of core since 1.9.1:
         | 
| 10 | 
            +
                #   exists - http://ruby-doc.org/core-1.9.1/Mutex.html
         | 
| 11 | 
            +
                #   dne    - http://ruby-doc.org/core-1.9.0/Mutex.html
         | 
| 12 | 
            +
                #
         | 
| 13 | 
            +
                # @private
         | 
| 14 | 
            +
                class ReentrantMutex
         | 
| 15 | 
            +
                  def initialize
         | 
| 16 | 
            +
                    @owner = nil
         | 
| 17 | 
            +
                    @count = 0
         | 
| 18 | 
            +
                    @mutex = Mutex.new
         | 
| 19 | 
            +
                  end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                  def synchronize
         | 
| 22 | 
            +
                    enter
         | 
| 23 | 
            +
                    yield
         | 
| 24 | 
            +
                  ensure
         | 
| 25 | 
            +
                    exit
         | 
| 26 | 
            +
                  end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                private
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                  def enter
         | 
| 31 | 
            +
                    @mutex.lock if @owner != Thread.current
         | 
| 32 | 
            +
                    @owner = Thread.current
         | 
| 33 | 
            +
                    @count += 1
         | 
| 34 | 
            +
                  end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                  def exit
         | 
| 37 | 
            +
                    @count -= 1
         | 
| 38 | 
            +
                    return unless @count == 0
         | 
| 39 | 
            +
                    @owner = nil
         | 
| 40 | 
            +
                    @mutex.unlock
         | 
| 41 | 
            +
                  end
         | 
| 42 | 
            +
                end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                if defined? ::Mutex
         | 
| 45 | 
            +
                  # On 1.9 and up, this is in core, so we just use the real one
         | 
| 46 | 
            +
                  Mutex = ::Mutex
         | 
| 47 | 
            +
                else # For 1.8.7
         | 
| 48 | 
            +
                  # :nocov:
         | 
| 49 | 
            +
                  RSpec::Support.require_rspec_mocks "mutex"
         | 
| 50 | 
            +
                  # :nocov:
         | 
| 51 | 
            +
                end
         | 
| 52 | 
            +
              end
         | 
| 53 | 
            +
            end
         | 
    
        data/lib/rspec/mocks/space.rb
    CHANGED
    
    | @@ -1,3 +1,5 @@ | |
| 1 | 
            +
            RSpec::Support.require_rspec_mocks 'reentrant_mutex'
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            module RSpec
         | 
| 2 4 | 
             
              module Mocks
         | 
| 3 5 | 
             
                # @private
         | 
| @@ -142,18 +144,8 @@ module RSpec | |
| 142 144 |  | 
| 143 145 | 
             
                private
         | 
| 144 146 |  | 
| 145 | 
            -
                  # We don't want to depend on the stdlib ourselves, but if the user is
         | 
| 146 | 
            -
                  # using threads then a Mutex will be available to us. If not, we don't
         | 
| 147 | 
            -
                  # need to synchronize anyway.
         | 
| 148 147 | 
             
                  def new_mutex
         | 
| 149 | 
            -
                     | 
| 150 | 
            -
                  end
         | 
| 151 | 
            -
             | 
| 152 | 
            -
                  # @private
         | 
| 153 | 
            -
                  module FakeMutex
         | 
| 154 | 
            -
                    def self.synchronize
         | 
| 155 | 
            -
                      yield
         | 
| 156 | 
            -
                    end
         | 
| 148 | 
            +
                    Mocks::ReentrantMutex.new
         | 
| 157 149 | 
             
                  end
         | 
| 158 150 |  | 
| 159 151 | 
             
                  def proxy_not_found_for(id, object)
         | 
    
        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.3. | 
| 4 | 
            +
              version: 3.3.2
         | 
| 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- | 
| 48 | 
            +
            date: 2015-07-15 00:00:00.000000000 Z
         | 
| 49 49 | 
             
            dependencies:
         | 
| 50 50 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 51 51 | 
             
              name: rspec-support
         | 
| @@ -137,6 +137,20 @@ dependencies: | |
| 137 137 | 
             
                - - "~>"
         | 
| 138 138 | 
             
                  - !ruby/object:Gem::Version
         | 
| 139 139 | 
             
                    version: '5.2'
         | 
| 140 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 141 | 
            +
              name: thread_order
         | 
| 142 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 143 | 
            +
                requirements:
         | 
| 144 | 
            +
                - - "~>"
         | 
| 145 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 146 | 
            +
                    version: 1.1.0
         | 
| 147 | 
            +
              type: :development
         | 
| 148 | 
            +
              prerelease: false
         | 
| 149 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 150 | 
            +
                requirements:
         | 
| 151 | 
            +
                - - "~>"
         | 
| 152 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 153 | 
            +
                    version: 1.1.0
         | 
| 140 154 | 
             
            description: RSpec's 'test double' framework, with support for stubbing and mocking
         | 
| 141 155 | 
             
            email: rspec@googlegroups.com
         | 
| 142 156 | 
             
            executables: []
         | 
| @@ -176,9 +190,11 @@ files: | |
| 176 190 | 
             
            - lib/rspec/mocks/method_double.rb
         | 
| 177 191 | 
             
            - lib/rspec/mocks/method_reference.rb
         | 
| 178 192 | 
             
            - lib/rspec/mocks/mutate_const.rb
         | 
| 193 | 
            +
            - lib/rspec/mocks/mutex.rb
         | 
| 179 194 | 
             
            - lib/rspec/mocks/object_reference.rb
         | 
| 180 195 | 
             
            - lib/rspec/mocks/order_group.rb
         | 
| 181 196 | 
             
            - lib/rspec/mocks/proxy.rb
         | 
| 197 | 
            +
            - lib/rspec/mocks/reentrant_mutex.rb
         | 
| 182 198 | 
             
            - lib/rspec/mocks/space.rb
         | 
| 183 199 | 
             
            - lib/rspec/mocks/standalone.rb
         | 
| 184 200 | 
             
            - lib/rspec/mocks/syntax.rb
         | 
| @@ -212,6 +228,6 @@ rubyforge_project: | |
| 212 228 | 
             
            rubygems_version: 2.2.2
         | 
| 213 229 | 
             
            signing_key: 
         | 
| 214 230 | 
             
            specification_version: 4
         | 
| 215 | 
            -
            summary: rspec-mocks-3.3. | 
| 231 | 
            +
            summary: rspec-mocks-3.3.2
         | 
| 216 232 | 
             
            test_files: []
         | 
| 217 233 | 
             
            has_rdoc: 
         | 
    
        metadata.gz.sig
    CHANGED
    
    | Binary file |