Class: Minitest::JsonReporter

Inherits:
AbstractReporter
  • Object
show all
Defined in:
lib/minitest/json_reporter_plugin.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ JsonReporter

Returns a new instance of JsonReporter.



21
22
23
24
25
26
# File 'lib/minitest/json_reporter_plugin.rb', line 21

def initialize(options)
  @io = options[:io]
  @results = []
  @assertions = 0
  @failures = 0
end

Instance Attribute Details

#assertionsObject

Returns the value of attribute assertions.



19
20
21
# File 'lib/minitest/json_reporter_plugin.rb', line 19

def assertions
  @assertions
end

#failuresObject

Returns the value of attribute failures.



19
20
21
# File 'lib/minitest/json_reporter_plugin.rb', line 19

def failures
  @failures
end

#ioObject

Returns the value of attribute io.



19
20
21
# File 'lib/minitest/json_reporter_plugin.rb', line 19

def io
  @io
end

#resultsObject

Returns the value of attribute results.



19
20
21
# File 'lib/minitest/json_reporter_plugin.rb', line 19

def results
  @results
end

Instance Method Details

#record(result) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/minitest/json_reporter_plugin.rb', line 28

def record(result)
  self.assertions += result.assertions
  self.failures += result.failures.size

  line = result.source_location[-1]
  failure = result.failures[0]

  if failure && !failure.is_a?(Minitest::UnexpectedError)
    # "/Users/marcusheng/projects/rails/sample_project/test/models/user_test.rb:11"
    line = failure.location.split("/")[-1].split(":")[-1]
  end

  results << {
    name: result.name,
    status: result.passed? ? "PASS" : "FAIL",
    failures: failure ? failure.error.to_s : "",
    line: line.to_i
  }.to_json
end

#reportObject



48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/minitest/json_reporter_plugin.rb', line 48

def report
  io.write(
    JSON.dump(
      {
        examples: results,
        statistics: {
          assertions: assertions,
          failures: failures
        }
      }
    )
  )
  # results.each { |result| io.write "\n#{result}" }
end