/usr/lib/ruby/vendor_ruby/rspec/mocks.rb is in ruby-rspec-mocks 3.5.0c3e0m0s0-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 | require 'rspec/support'
RSpec::Support.require_rspec_support 'caller_filter'
RSpec::Support.require_rspec_support 'warnings'
RSpec::Support.require_rspec_support 'ruby_features'
RSpec::Support.define_optimized_require_for_rspec(:mocks) { |f| require_relative f }
%w[
instance_method_stasher
method_double
argument_matchers
example_methods
proxy
test_double
argument_list_matcher
message_expectation
order_group
error_generator
space
mutate_const
targets
syntax
configuration
verifying_double
version
].each { |name| RSpec::Support.require_rspec_mocks name }
# Share the top-level RSpec namespace, because we are a core supported
# extension.
module RSpec
# Contains top-level utility methods. While this contains a few
# public methods, these are not generally meant to be called from
# a test or example. They exist primarily for integration with
# test frameworks (such as rspec-core).
module Mocks
# Performs per-test/example setup. This should be called before
# an test or example begins.
def self.setup
@space_stack << (@space = space.new_scope)
end
# Verifies any message expectations that were set during the
# test or example. This should be called at the end of an example.
def self.verify
space.verify_all
end
# Cleans up all test double state (including any methods that were
# redefined on partial doubles). This _must_ be called after
# each example, even if an error was raised during the example.
def self.teardown
space.reset_all
@space_stack.pop
@space = @space_stack.last || @root_space
end
# Adds an allowance (stub) on `subject`
#
# @param subject the subject to which the message will be added
# @param message a symbol, representing the message that will be
# added.
# @param opts a hash of options, :expected_from is used to set the
# original call site
# @yield an optional implementation for the allowance
#
# @example Defines the implementation of `foo` on `bar`, using the passed block
# x = 0
# RSpec::Mocks.allow_message(bar, :foo) { x += 1 }
def self.allow_message(subject, message, opts={}, &block)
space.proxy_for(subject).add_stub(message, opts, &block)
end
# Sets a message expectation on `subject`.
# @param subject the subject on which the message will be expected
# @param message a symbol, representing the message that will be
# expected.
# @param opts a hash of options, :expected_from is used to set the
# original call site
# @yield an optional implementation for the expectation
#
# @example Expect the message `foo` to receive `bar`, then call it
# RSpec::Mocks.expect_message(bar, :foo)
# bar.foo
def self.expect_message(subject, message, opts={}, &block)
space.proxy_for(subject).add_message_expectation(message, opts, &block)
end
# Call the passed block and verify mocks after it has executed. This allows
# mock usage in arbitrary places, such as a `before(:all)` hook.
def self.with_temporary_scope
setup
begin
yield
verify
ensure
teardown
end
end
class << self
# @private
attr_reader :space
end
@space_stack = []
@root_space = @space = RSpec::Mocks::RootSpace.new
# @private
IGNORED_BACKTRACE_LINE = 'this backtrace line is ignored'
# To speed up boot time a bit, delay loading optional or rarely
# used features until their first use.
autoload :AnyInstance, "rspec/mocks/any_instance"
autoload :ExpectChain, "rspec/mocks/message_chain"
autoload :StubChain, "rspec/mocks/message_chain"
autoload :MarshalExtension, "rspec/mocks/marshal_extension"
# Namespace for mock-related matchers.
module Matchers
# @private
# just a "tag" for rspec-mock matchers detection
module Matcher; end
autoload :HaveReceived, "rspec/mocks/matchers/have_received"
autoload :Receive, "rspec/mocks/matchers/receive"
autoload :ReceiveMessageChain, "rspec/mocks/matchers/receive_message_chain"
autoload :ReceiveMessages, "rspec/mocks/matchers/receive_messages"
end
end
end
|