Sha256: 12a3f4f919f9d61946301a15fd1eab46ed0e28dcb4bb0fa2793077e9931c943d

Contents?: true

Size: 1.67 KB

Versions: 9

Compression:

Stored size: 1.67 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 ||= Hash.new do |hash, filename|
        hash[filename] = Hash.new do |h, line|
          h[line] = Array.new
        end
      end
    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

9 entries across 9 versions & 3 rubygems

Version Path
metric_fu-4.13.0 lib/metric_fu/reporting/result.rb
fastruby-metric_fu-5.0.0 lib/metric_fu/reporting/result.rb
code_metric_fu-4.14.4 lib/metric_fu/reporting/result.rb
code_metric_fu-4.14.3 lib/metric_fu/reporting/result.rb
code_metric_fu-4.14.2 lib/metric_fu/reporting/result.rb
code_metric_fu-4.14.1 lib/metric_fu/reporting/result.rb
code_metric_fu-4.14.0 lib/metric_fu/reporting/result.rb
metric_fu-4.12.0 lib/metric_fu/reporting/result.rb
metric_fu-4.11.4 lib/metric_fu/reporting/result.rb