Sha256: 21242cfd10ff29b123f3fbde57ae483c06977066f9fc2268fc96c0f1b4445850

Contents?: true

Size: 1.11 KB

Versions: 1

Compression:

Stored size: 1.11 KB

Contents

# Remarkable core module
module Remarkable
  # A module that keeps all matchers added. This is useful because it allows
  # to include matchers in Test::Unit as well.
  module Matchers; end

  # Helper that includes required Remarkable modules into the given klass.
  #
  # If the module to be included responds to :after_include, it's called with the
  # target as argument.
  #
  def self.include_matchers!(base, target=nil)
    if target.nil?
      if rspec_defined?
        target = Spec::Example::ExampleGroup
      else
        raise ArgumentError, "You haven't supplied the target to include_matchers! and RSpec is not loaded, so we cannot infer one."
      end
    end

    target.send :extend, Remarkable::Pending
    target.send :extend, Remarkable::Macros

    if defined?(base::Matchers)
      target.send :include, base::Matchers

      Remarkable::Matchers.send :extend, base::Matchers
      Remarkable::Matchers.send :include, base::Matchers
    end

    if base.respond_to?(:after_include)
      base.after_include(target)
    end
  end

  def self.rspec_defined? #:nodoc:
    defined?(Spec)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
remarkable-3.1.3 lib/remarkable/matchers.rb