Class: LemansReport::Reporter

Inherits:
Minitest::AbstractReporter
  • Object
show all
Defined in:
lib/lemans/verifier/assets/lemans_minitest_reporter.rb

Overview

Appends every Minitest result to $LOGS/checks.json. Required by eport-lemans once Minitest is loaded; never load this file directly.

Instance Method Summary collapse

Constructor Details

#initialize(dir) ⇒ Reporter

Returns a new instance of Reporter.



9
10
11
12
13
# File 'lib/lemans/verifier/assets/lemans_minitest_reporter.rb', line 9

def initialize(dir)
  super()
  @dir = dir
  @results = []
end

Instance Method Details

#passed?Boolean

A skip inside the harness-shipped tests is an unverified requirement and fails the run. The app's own suite keeps vanilla skip semantics.

Returns:

  • (Boolean)


33
34
35
# File 'lib/lemans/verifier/assets/lemans_minitest_reporter.rb', line 33

def passed?
  @results.none? { |result| graded?(result) && result.skipped? }
end

#record(result) ⇒ Object



15
16
17
# File 'lib/lemans/verifier/assets/lemans_minitest_reporter.rb', line 15

def record(result)
  @results << result
end

#reportObject



19
20
21
22
23
24
25
26
27
28
29
# File 'lib/lemans/verifier/assets/lemans_minitest_reporter.rb', line 19

def report
  graded = @results.select { graded?(_1) }
  prior = existing.fetch("checks", {})
  return if graded.empty? && prior.empty?

  checks = prior.merge(graded.to_h { [name(_1), status(_1)] }).sort.to_h
  File.write(
    File.join(@dir, "checks.json"),
    JSON.pretty_generate(checks: checks, failures: checks.reject { |_, status| status == "pass" }.keys)
  )
end