module Minitest::Assertions

def assert_raises *exp

def assert_raises *exp
  flunk "assert_raises requires a block to capture errors." unless
    block_given?
  msg = "#{exp.pop}.\n" if String === exp.last
  exp << StandardError if exp.empty?
  begin
    yield
  rescue *exp => e
    pass # count assertion
    return e
  rescue Minitest::Assertion # incl Skip & UnexpectedError
    # don't count assertion
    raise
  rescue SignalException, SystemExit
    raise
  rescue Exception => e
    flunk proc {
      exception_details(e, "#{msg}#{mu_pp(exp)} exception expected, not")
    }
  end
  exp = exp.first if exp.size == 1
  flunk "#{msg}#{mu_pp(exp)} expected but nothing was raised."
end