Sha256: 4861913ba4e62fec42df3893cd0064eab0afd50e88efbc6e2fb2d67e8364199c

Contents?: true

Size: 1.55 KB

Versions: 5

Compression:

Stored size: 1.55 KB

Contents

module MetricFu

  # MetricFu.result memoizes access to a Result object, that will be
  # used throughout the lifecycle of the MetricFu app.
  def self.result
    @result ||= Result.new
  end

  # = Result
  #
  # The Result class is responsible for one thing:
  #
  # It tracks the results generated by each metric used in this test run.
  class Result

    # Renders the result of the result_hash into a yaml serialization
    # ready for writing out to a file.
    #
    # @return YAML
    #   A YAML object containing the results of the result generation
    #   process
    def as_yaml
      result_hash.to_yaml
    end

    def per_file_data
      @per_file_data ||= {}
    end

    def result_hash #:nodoc:
      @result_hash ||= {}
    end

    # Adds a hash from a passed result, produced by one of the Generator
    # classes to the aggregate result_hash managed by this hash.
    #
    # @param result_type Hash
    #   The hash to add to the aggregate result_hash
    def add(result_type)
      mf_debug "result requested #{result_type}"
      metric_options = metric_options_for_result_type(result_type)
      generator_class =  MetricFu::Generator.get_generator(result_type)
      mf_debug "result class found #{generator_class}"
      generator = generator_class.new(metric_options)

      result_hash.merge!(generator.generate_result)

      generator.per_file_info(per_file_data) if generator.respond_to?(:per_file_info)
    end

    private

    def metric_options_for_result_type(result_type)
      MetricFu::Metric.get_metric(result_type).run_options
    end

  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
metric_fu-4.4.4 lib/metric_fu/reporting/result.rb
metric_fu-4.4.3 lib/metric_fu/reporting/result.rb
metric_fu-4.4.2 lib/metric_fu/reporting/result.rb
metric_fu-4.4.1 lib/metric_fu/reporting/result.rb
metric_fu-4.4.0 lib/metric_fu/reporting/result.rb