Sha256: 02b150cfedebd729182c314c08b211750d47815ef70de5bc427d4997771b1ae7

Contents?: true

Size: 1.04 KB

Versions: 2

Compression:

Stored size: 1.04 KB

Contents

# frozen_string_literal: true

require "minitest"
require_relative "aggregate_assertions/version"
require_relative "aggregate_assertions/assertion_aggregator"

module AggregateAssertions
  # Contains patches to the Minitest::Test class
  module TestPatch
    def assert(test, msg = nil)
      super
    rescue Minitest::Assertion, StandardError => e
      raise unless AssertionAggregator.active?

      AssertionAggregator.add_error(e)
    end

    def aggregate_assertions(label = nil)
      flunk "aggregate_assertions requires a block" unless block_given?

      AssertionAggregator.open_failure_group(label)

      begin
        yield
      rescue Minitest::Assertion, StandardError => e
        AssertionAggregator.add_error(e)
      ensure
        failure_group = AssertionAggregator.close_failure_group
      end

      return if failure_group.success?

      raise failure_group.error unless AssertionAggregator.active?

      AssertionAggregator.add_error(failure_group.error)
    end
  end
end

Minitest::Test.prepend(AggregateAssertions::TestPatch)

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
aggregate_assertions-0.1.1 lib/aggregate_assertions.rb
aggregate_assertions-0.1.0 lib/aggregate_assertions.rb