Sha256: c9dd139f10ab92c69f613299d5fc3f7ca1632df10a01f05db6450be33fe65ca8

Contents?: true

Size: 1.85 KB

Versions: 2

Compression:

Stored size: 1.85 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
# =========================================================================

class TestsReporter

  # Dependency injection
  attr_writer :config_walkinator

  # Setup value injection
  attr_writer :config

  # Publicly accessible filename for the resulting report
  attr_reader :filename

  def initialize(handle:)
    @handle = handle

    # Safe default filename in case user's custom subclass forgets to call 
    # setup() with a default filename.
    # If the report is named 'foo_bar' in project configuration, the 
    # fallback filename is 'foo_bar.report'
    @filename = "#{handle}.report"
  end

  def setup(default_filename:)
    @filename = update_filename( default_filename )
  end

  # Write report contents to file
  def write(filepath:, results:)
    File.open( filepath, 'w' ) do |f|
      header( results: results, stream: f )
      body( results: results, stream: f )
      footer( results: results, stream: f )
    end
  end

  def header(results:, stream:)
    # Override in subclass to do something
  end

  def body(results:, stream:)
    # Override in subclass to do something
  end

  def footer(results:, stream:)
    # Override in subclass to do something
  end

  ### Private

  private

  def update_filename(default_filename)
    # Fetch configured filename if it exists, otherwise return default filename
    filename, _ = @config_walkinator.fetch_value( :filename, hash:@config, default:default_filename )
    return filename
  end

  # Handy convenience method for subclasses
  def fetch_config_value(*keys)
    result, _ = @config_walkinator.fetch_value( *keys, hash:@config )
    return result
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

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