Sha256: 9c496231fde3361cf7cd2ceb0066b2fc504142ef2184c356849fb805af09a64f

Contents?: true

Size: 1.84 KB

Versions: 2

Compression:

Stored size: 1.84 KB

Contents

# =========================================================================
#   Ceedling - Test-Centered Build System for C
#   ThrowTheSwitch.org
#   Copyright (c) 2010-25 Mike Karlesky, Mark VanderVoord, & Greg Williams
#   SPDX-License-Identifier: MIT
# =========================================================================

require 'json'
require 'tests_reporter'

class JsonTestsReporter < TestsReporter

  def setup()
    super( default_filename: 'tests_report.json' )
  end

  def body(results:, stream:)
    hash = {
      "FailedTests"  => write_failures( results[:failures] ),
      "PassedTests"  => write_tests( results[:successes] ),
      "IgnoredTests" => write_tests( results[:ignores] ),
      "Summary"      => write_statistics( results[:counts] )
    }
    
    stream << JSON.pretty_generate(hash)
  end

  ### Private

  private

  def write_failures(results)
    # Array of hashes relating a source file, test, and test failure
    failures = []
    results.each do |result|
      result[:collection].each do |item|
        failures << {
          "file" => result[:source][:file],
          "test" => item[:test],
          "line" => item[:line],
          "message" => item[:message]
        }
      end
    end
    return failures.uniq
  end

  def write_tests(results)
    # Array of hashes relating a source file and test
    successes = []
    results.each do |result|
      result[:collection].each do |item|
        successes << { 
          "file" => result[:source][:file],
          "test" => item[:test]
        }
      end
    end
    return successes
  end

  def write_statistics(counts)
    # Hash of keys:values for statistics
    return {
      "total_tests" => counts[:total],
      "passed" => (counts[:total] - counts[:ignored] - counts[:failed]),
      "ignored" => counts[:ignored],
      "failures" => counts[:failed]
    }
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ceedling-1.0.1 plugins/report_tests_log_factory/lib/json_tests_reporter.rb
ceedling-1.0.0 plugins/report_tests_log_factory/lib/json_tests_reporter.rb