Sha256: f89baea3fd7f6f440d804e98fa81d9f61126b7f855bb38d97d978d2dd47e5e7e

Contents?: true

Size: 1.14 KB

Versions: 7389

Compression:

Stored size: 1.14 KB

Contents

module RSpec
  module Mocks
    # Support for `patch_marshal_to_support_partial_doubles` configuration.
    #
    # @private
    class MarshalExtension
      def self.patch!
        return if Marshal.respond_to?(:dump_with_rspec_mocks)

        Marshal.instance_eval do
          class << self
            def dump_with_rspec_mocks(object, *rest)
              if !::RSpec::Mocks.space.registered?(object) || NilClass === object
                dump_without_rspec_mocks(object, *rest)
              else
                dump_without_rspec_mocks(object.dup, *rest)
              end
            end

            alias_method :dump_without_rspec_mocks, :dump
            undef_method :dump
            alias_method :dump, :dump_with_rspec_mocks
          end
        end
      end

      def self.unpatch!
        return unless Marshal.respond_to?(:dump_with_rspec_mocks)

        Marshal.instance_eval do
          class << self
            undef_method :dump_with_rspec_mocks
            undef_method :dump
            alias_method :dump, :dump_without_rspec_mocks
            undef_method :dump_without_rspec_mocks
          end
        end
      end
    end
  end
end

Version data entries

7,389 entries across 7,298 versions & 132 rubygems

Version Path
rspec-mocks-3.1.0 lib/rspec/mocks/marshal_extension.rb
rspec-mocks-3.0.4 lib/rspec/mocks/marshal_extension.rb
rspec-mocks-3.0.3 lib/rspec/mocks/marshal_extension.rb
rspec-mocks-3.0.2 lib/rspec/mocks/marshal_extension.rb
whos_dated_who-0.1.0 vendor/bundle/gems/rspec-mocks-3.0.1/lib/rspec/mocks/marshal_extension.rb
whos_dated_who-0.0.1 vendor/bundle/gems/rspec-mocks-3.0.1/lib/rspec/mocks/marshal_extension.rb
rspec-mocks-3.0.1 lib/rspec/mocks/marshal_extension.rb
rspec-mocks-3.0.0 lib/rspec/mocks/marshal_extension.rb
rspec-mocks-3.0.0.rc1 lib/rspec/mocks/marshal_extension.rb