Sha256: b7437c2642d935cdb8ff9471a08ea1c96bf2b8401fcdf14aed247523e9b89d53

Contents?: true

Size: 972 Bytes

Versions: 47

Compression:

Stored size: 972 Bytes

Contents

# frozen_string_literal: true

require 'json'

module GitlabQuality
  module TestTooling
    module TestMetrics
      class JsonTestMetricCollection
        include Enumerable

        attr_reader :path, :metrics

        def initialize(path)
          @path = path
          @metrics = process
        end

        def metric_for_test_id(test_id)
          metrics.find do |metric|
            metric.fields['id'] == test_id
          end
        end

        def write
          File.write(path, JSON.pretty_generate(metrics))
        end

        private

        def parse
          JSON.parse(File.read(path))
        rescue JSON::ParserError
          Runtime::Logger.debug("#{self.class.name}##{__method__} attempted to parse invalid JSON at path: #{path}")
          {}
        end

        def process
          parse.map do |test|
            GitlabQuality::TestTooling::TestMetric::JsonTestMetric.new(test)
          end
        end
      end
    end
  end
end

Version data entries

47 entries across 47 versions & 1 rubygems

Version Path
gitlab_quality-test_tooling-1.12.0 lib/gitlab_quality/test_tooling/test_metrics/json_test_metric_collection.rb
gitlab_quality-test_tooling-1.11.0 lib/gitlab_quality/test_tooling/test_metrics/json_test_metric_collection.rb
gitlab_quality-test_tooling-1.10.1 lib/gitlab_quality/test_tooling/test_metrics/json_test_metric_collection.rb
gitlab_quality-test_tooling-1.10.0 lib/gitlab_quality/test_tooling/test_metrics/json_test_metric_collection.rb
gitlab_quality-test_tooling-1.9.0 lib/gitlab_quality/test_tooling/test_metrics/json_test_metric_collection.rb
gitlab_quality-test_tooling-1.8.1 lib/gitlab_quality/test_tooling/test_metrics/json_test_metric_collection.rb
gitlab_quality-test_tooling-1.8.0 lib/gitlab_quality/test_tooling/test_metrics/json_test_metric_collection.rb