Sha256: 643560ee3300497c61e86e66ca68243a885ec8316ae061a8829f07418549deee

Contents?: true

Size: 739 Bytes

Versions: 1

Compression:

Stored size: 739 Bytes

Contents

# typed: strict

module Mocktail
  class GathersFakeableInstanceMethods
    extend T::Sig

    sig { params(type: T.any(T::Class[T.anything], Module)).returns(T::Array[Symbol]) }
    def gather(type)
      methods = type.instance_methods + [
        (:respond_to_missing? if type.private_method_defined?(:respond_to_missing?))
      ].compact

      methods.reject { |m|
        ignore?(type, m)
      }
    end

    sig { params(type: T.any(T::Class[T.anything], Module), method_name: Symbol).returns(T::Boolean) }
    def ignore?(type, method_name)
      ignored_ancestors.include?(type.instance_method(method_name).owner)
    end

    sig { returns(T::Array[Module]) }
    def ignored_ancestors
      Object.ancestors
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mocktail-2.0.0 lib/mocktail/sorbet/mocktail/imitates_type/makes_double/gathers_fakeable_instance_methods.rb