Sha256: 74663acf56e7e30876a86ed032d8f14c65c949f46b0d633baf2082463b37e4bb

Contents?: true

Size: 1.7 KB

Versions: 21

Compression:

Stored size: 1.7 KB

Contents

# frozen_string_literal: true

require 'nokogiri'
require 'table_print'

module GitlabQuality
  module TestTooling
    class SummaryTable
      def self.create(input_files:, **options)
        "```\n#{TablePrint::Printer.table_print(collect_results(input_files, **options))}```\n"
      end

      # rubocop:disable Metrics/AbcSize
      def self.collect_results(input_files, **options)
        sort_by = options[:sort_by]
        sort_direction = options[:sort_direction]
        hide_passed_tests = options[:hide_passed_tests]

        stage_wise_results = Dir.glob(input_files).each_with_object([]) do |report_file, stage_wise_results|
          stage_hash = {}
          stage_hash["Dev Stage"] = File.basename(report_file, ".*").capitalize

          report_stats = Nokogiri::XML(File.open(report_file)).children[0].attributes

          next if hide_passed_tests && report_stats["failures"].value.to_i.zero? && report_stats["errors"].value.to_i.zero?

          stage_hash["Total"] = report_stats["tests"].value
          stage_hash["Failures"] = report_stats["failures"].value
          stage_hash["Errors"] = report_stats["errors"].value
          stage_hash["Skipped"] = report_stats["skipped"].value
          stage_hash["Result"] = result_emoji(report_stats)

          stage_wise_results << stage_hash
        end

        stage_wise_results.sort_by! { |stage_hash| stage_hash[sort_by] } if sort_by
        stage_wise_results.reverse! if sort_direction == :desc

        stage_wise_results
      end
      # rubocop:enable Metrics/AbcSize

      def self.result_emoji(report_stats)
        report_stats["failures"].value.to_i.positive? || report_stats["errors"].value.to_i.positive? ? "❌" : "✅"
      end
    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
gitlab_quality-test_tooling-2.8.0 lib/gitlab_quality/test_tooling/summary_table.rb
gitlab_quality-test_tooling-2.7.0 lib/gitlab_quality/test_tooling/summary_table.rb
gitlab_quality-test_tooling-2.6.0 lib/gitlab_quality/test_tooling/summary_table.rb
gitlab_quality-test_tooling-2.5.0 lib/gitlab_quality/test_tooling/summary_table.rb
gitlab_quality-test_tooling-2.4.0 lib/gitlab_quality/test_tooling/summary_table.rb
gitlab_quality-test_tooling-2.3.0 lib/gitlab_quality/test_tooling/summary_table.rb
gitlab_quality-test_tooling-2.2.0 lib/gitlab_quality/test_tooling/summary_table.rb
gitlab_quality-test_tooling-2.1.0 lib/gitlab_quality/test_tooling/summary_table.rb
gitlab_quality-test_tooling-2.0.0 lib/gitlab_quality/test_tooling/summary_table.rb
gitlab_quality-test_tooling-1.39.0 lib/gitlab_quality/test_tooling/summary_table.rb
gitlab_quality-test_tooling-1.38.1 lib/gitlab_quality/test_tooling/summary_table.rb
gitlab_quality-test_tooling-1.38.0 lib/gitlab_quality/test_tooling/summary_table.rb
gitlab_quality-test_tooling-1.37.0 lib/gitlab_quality/test_tooling/summary_table.rb
gitlab_quality-test_tooling-1.36.0 lib/gitlab_quality/test_tooling/summary_table.rb
gitlab_quality-test_tooling-1.35.0 lib/gitlab_quality/test_tooling/summary_table.rb
gitlab_quality-test_tooling-1.34.0 lib/gitlab_quality/test_tooling/summary_table.rb
gitlab_quality-test_tooling-1.33.0 lib/gitlab_quality/test_tooling/summary_table.rb
gitlab_quality-test_tooling-1.32.1 lib/gitlab_quality/test_tooling/summary_table.rb
gitlab_quality-test_tooling-1.32.0 lib/gitlab_quality/test_tooling/summary_table.rb
gitlab_quality-test_tooling-1.31.0 lib/gitlab_quality/test_tooling/summary_table.rb