class Assert::Assertions::CheckException

exception raised utility classes

Attributes

exception[R]
msg[R]

Public Class Methods

new(exceptions, &block) click to toggle source
# File lib/assert/assertions.rb, line 352
def initialize(exceptions, &block)
  @exceptions = exceptions
  # rubocop:disable Lint/SuppressedException
  # rubocop:disable Lint/RescueException
  # rubocop:disable Naming/RescuedExceptionsVariableName
  begin
    block.call
  rescue Exception => @exception
  end
  # rubocop:enable Lint/SuppressedException
  # rubocop:enable Lint/RescueException
  # rubocop:enable Naming/RescuedExceptionsVariableName
  @msg = "#{exceptions_sentence(@exceptions)} #{exception_details}"
end

Public Instance Methods

raised?() click to toggle source
# File lib/assert/assertions.rb, line 367
def raised?
  !@exception.nil? && is_one_of?(@exception, @exceptions)
end

Private Instance Methods

exception_details(raised_msg = nil, no_raised_msg = nil) click to toggle source
# File lib/assert/assertions.rb, line 391
def exception_details(raised_msg = nil, no_raised_msg = nil)
  if @exception
    backtrace = Assert::Result::Backtrace.new(@exception.backtrace)
    [
      raised_msg,
      "Class: `#{@exception.class}`",
      "Message: `#{@exception.message.inspect}`",
      "---Backtrace---",
      backtrace.filtered.to_s,
      "---------------",
    ]
      .compact
      .join("\n")
  else
    no_raised_msg
  end
end
exceptions_sentence(exceptions) click to toggle source
# File lib/assert/assertions.rb, line 383
def exceptions_sentence(exceptions)
  if exceptions.size <= 1
    (exceptions.first || "An").to_s
  else
    "#{exceptions[0..-2].join(", ")} or #{exceptions[-1]}"
  end
end
is_one_of?(exception, exceptions) click to toggle source
# File lib/assert/assertions.rb, line 373
def is_one_of?(exception, exceptions)
  exceptions.empty? || exceptions.any? do |exp|
    if exp.instance_of?(Module)
      exception.is_a?(exp)
    else
      exception.class == exp
    end
  end
end