Class: Evilution::Integration::Minitest

Inherits:
Base
  • Object
show all
Defined in:
lib/evilution/integration/minitest.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

#call

Constructor Details

#initialize(test_files: nil, hooks: nil, fallback_to_full_suite: false, spec_selector: nil) ⇒ Minitest

Returns a new instance of Minitest.



48
49
50
51
52
53
54
55
56
57
58
# File 'lib/evilution/integration/minitest.rb', line 48

def initialize(test_files: nil, hooks: nil, fallback_to_full_suite: false, spec_selector: nil)
  @test_files = test_files
  @minitest_loaded = false
  @spec_selector = spec_selector || Evilution::SpecSelector.new(
    spec_resolver: Evilution::SpecResolver.new(test_dir: "test", test_suffix: "_test.rb", request_dir: "integration")
  )
  @fallback_to_full_suite = fallback_to_full_suite
  @crash_detector = nil
  @warned_files = Set.new
  super(hooks: hooks)
end

Class Method Details

.baseline_optionsObject



40
41
42
43
44
45
46
# File 'lib/evilution/integration/minitest.rb', line 40

def self.baseline_options
  {
    runner: baseline_runner,
    spec_resolver: Evilution::SpecResolver.new(test_dir: "test", test_suffix: "_test.rb", request_dir: "integration"),
    fallback_dir: "test"
  }
end

.baseline_runnerObject



12
13
14
# File 'lib/evilution/integration/minitest.rb', line 12

def self.baseline_runner
  ->(test_file) { run_baseline_test_file(test_file) }
end

.baseline_test_files(test_file) ⇒ Object



24
25
26
# File 'lib/evilution/integration/minitest.rb', line 24

def self.baseline_test_files(test_file)
  File.directory?(test_file) ? Dir.glob(File.join(test_file, "**/*_test.rb")) : [test_file]
end

.run_baseline_minitestObject



28
29
30
31
32
33
34
35
36
37
38
# File 'lib/evilution/integration/minitest.rb', line 28

def self.run_baseline_minitest
  out = StringIO.new
  options = ::Minitest.process_args(["--seed", "0"])
  options[:io] = out
  reporter = ::Minitest::CompositeReporter.new
  reporter << ::Minitest::SummaryReporter.new(out, options)
  reporter.start
  ::Minitest.__run(reporter, options)
  reporter.report
  reporter.passed?
end

.run_baseline_test_file(test_file) ⇒ Object



16
17
18
19
20
21
22
# File 'lib/evilution/integration/minitest.rb', line 16

def self.run_baseline_test_file(test_file)
  require "minitest"
  require "stringio"
  ::Minitest::Runnable.runnables.clear
  baseline_test_files(test_file).each { |f| load(File.expand_path(f)) }
  run_baseline_minitest
end