Sha256: 85d596d35c9463029f5b4ff0b3f9ce0edee145557027052050f75d3708031230

Contents?: true

Size: 1.21 KB

Versions: 1

Compression:

Stored size: 1.21 KB

Contents

# This warner is used in Assertions#assert_warn and
# Assertions#assert_no_warn blocks. It captures all warnings in format and
# provides access to them using the warned? method.
class StructuredWarnings::Test::Warner < StructuredWarnings::Warner
  # Overrides the public interface of StructuredWarnings::Warner. This
  # method always returns nil to avoid warnings on stdout during assert_warn
  # and assert_no_warn blocks.
  def format(warning, message, options, call_stack)
    given_warnings << warning.new(message)
    nil
  end

  # Returns true if any warning or a subclass of warning was emitted.
  def warned?(warning, message = nil)
    case message
    when Regexp
      given_warnings.any? {|w| w.is_a?(warning) && w.message =~ message}
    when String
      given_warnings.any? {|w| w.is_a?(warning) && w.message == message}
    when nil
      given_warnings.any? {|w| w.is_a?(warning)}
    else
      raise ArgumentError, "Unkown argument type for 'message': #{message.class.inspect}"
    end
  end

  # :stopdoc:
  protected

  # Returns an array of all warning classes, that were given to this
  # warner's format method, including duplications.
  def given_warnings
    @given_warnings ||= []
  end
  # :startdoc:
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
structured_warnings-0.4.0 lib/structured_warnings/test/warner.rb