class InspecPlugins::JsonMinReporter::Reporter

Public Class Methods

run_data_schema_constraints() click to toggle source
# File lib/plugins/inspec-reporter-json-min/lib/inspec-reporter-json-min/reporter.rb, line 5
def self.run_data_schema_constraints
  "~> 0.0"
end

Public Instance Methods

render() click to toggle source
# File lib/plugins/inspec-reporter-json-min/lib/inspec-reporter-json-min/reporter.rb, line 9
def render
  output(report.to_json, false)
end
report() click to toggle source
# File lib/plugins/inspec-reporter-json-min/lib/inspec-reporter-json-min/reporter.rb, line 13
def report # rubocop:disable Metrics/AbcSize
  report = {
    controls: [],
    statistics: { duration: run_data.statistics.duration },
    version: run_data.version,
  }

  # collect all test results and add them to the report
  run_data.profiles.each do |profile|
    profile_id = profile.name

    profile.controls.each do |control|
      control_id = control.id

      control.results.each do |result|
        result_for_report = {
          id: control_id,
          profile_id: profile_id,
          profile_sha256: profile.sha256,
          status: result.status,
          code_desc: result.code_desc,
        }

        result_for_report[:skip_message] = result.skip_message if result.non_nil?(:skip_message)
        result_for_report[:resource] = result.resource if result.non_nil?(:resource)
        result_for_report[:message] = result.message if result.non_nil?(:message)
        result_for_report[:exception] = result.exception if result.non_nil?(:exception)
        result_for_report[:backtrace] = result.backtrace if result.non_nil?(:backtrace)

        report[:controls] << result_for_report
      end
    end
  end

  report
end