Sha256: 2a31495313103fbdf5fc30845045644796a45069f8da7632fcdeee58703028b4

Contents?: true

Size: 1.9 KB

Versions: 27

Compression:

Stored size: 1.9 KB

Contents

require "tempfile"
require "stringio"
require "minitest/autorun"

class Minitest::Test
  def clean s
    s.gsub(/^ {6}/, "")
  end
end

class MetaMetaMetaTestCase < Minitest::Test
  attr_accessor :reporter, :output, :tu

  def run_tu_with_fresh_reporter flags = %w[--seed 42]
    options = Minitest.process_args flags

    @output = StringIO.new("")

    self.reporter = Minitest::CompositeReporter.new
    reporter << Minitest::SummaryReporter.new(@output, options)
    reporter << Minitest::ProgressReporter.new(@output, options)

    reporter.start

    yield(reporter) if block_given?

    @tus ||= [@tu]
    @tus.each do |tu|
      Minitest::Runnable.runnables.delete tu

      tu.run reporter, options
    end

    reporter.report
  end

  def first_reporter
    reporter.reporters.first
  end

  def assert_report expected, flags = %w[--seed 42], &block
    header = clean <<-EOM
      Run options: #{flags.map { |s| s =~ /\|/ ? s.inspect : s }.join " "}

      # Running:

    EOM

    run_tu_with_fresh_reporter flags, &block

    output = normalize_output @output.string.dup

    assert_equal header + expected, output
  end

  def normalize_output output
    output.sub!(/Finished in .*/, "Finished in 0.00")
    output.sub!(/Loaded suite .*/, "Loaded suite blah")

    output.gsub!(/ = \d+.\d\d s = /, " = 0.00 s = ")
    output.gsub!(/0x[A-Fa-f0-9]+/, "0xXXX")
    output.gsub!(/ +$/, "")

    if windows? then
      output.gsub!(/\[(?:[A-Za-z]:)?[^\]:]+:\d+\]/, "[FILE:LINE]")
      output.gsub!(/^(\s+)(?:[A-Za-z]:)?[^:]+:\d+:in/, '\1FILE:LINE:in')
    else
      output.gsub!(/\[[^\]:]+:\d+\]/, "[FILE:LINE]")
      output.gsub!(/^(\s+)[^:]+:\d+:in/, '\1FILE:LINE:in')
    end

    output
  end

  def restore_env
    old_value = ENV["MT_NO_SKIP_MSG"]
    ENV.delete "MT_NO_SKIP_MSG"

    yield
  ensure
    ENV["MT_NO_SKIP_MSG"] = old_value
  end

  def setup
    super
    srand 42
    Minitest::Test.reset
    @tu = nil
  end
end

Version data entries

27 entries across 26 versions & 11 rubygems

Version Path
mercadopago-custom-checkout-0.1.2 .gs/gems/minitest-5.9.0/test/minitest/metametameta.rb
mercadopago-custom-checkout-0.1.1 .gs/gems/minitest-5.9.0/test/minitest/metametameta.rb
abaci-0.3.0 vendor/bundle/gems/minitest-5.9.0/test/minitest/metametameta.rb
second_step-0.1.2 secondstep-notify-1.0.0-osx/lib/ruby/lib/ruby/gems/2.2.0/gems/minitest-5.9.1/test/minitest/metametameta.rb
minitest-5.9.1 test/minitest/metametameta.rb
minitest-5.8.5 test/minitest/metametameta.rb
windows-pr-1.2.5 vendor/bundle/ruby/2.2.0/gems/minitest-5.9.0/test/minitest/metametameta.rb
minitest-5.9.0 test/minitest/metametameta.rb
ish_lib_manager-0.0.1 test/dummy/vendor/bundle/ruby/2.3.0/gems/minitest-5.8.4/test/minitest/metametameta.rb
minitest-5.8.4 test/minitest/metametameta.rb
angular-rails4-templates-0.4.1 vendor/ruby/2.1.0/gems/minitest-5.8.0/test/minitest/metametameta.rb
angular-rails4-templates-0.4.0 vendor/ruby/2.1.0/gems/minitest-5.8.0/test/minitest/metametameta.rb
tdiary-4.2.1 vendor/bundle/ruby/2.2.0/gems/minitest-5.8.3/test/minitest/metametameta.rb
tdiary-4.2.1 vendor/bundle/ruby/2.3.0/gems/minitest-5.8.3/test/minitest/metametameta.rb
angular-rails4-templates-0.3.0 vendor/ruby/2.1.0/gems/minitest-5.8.0/test/minitest/metametameta.rb
minitest-5.8.3 test/minitest/metametameta.rb
minitest-5.8.2 test/minitest/metametameta.rb
sc_core-0.0.7 test/dummy/vendor/bundle/ruby/2.2.0/gems/minitest-5.8.1/test/minitest/metametameta.rb
minitest-5.8.1 test/minitest/metametameta.rb
minitest-5.8.0 test/minitest/metametameta.rb