Sha256: 26027f7b55c998e0bd8f469dcf002a257c04e8b7ffdba4b81c3a08505b3de0af
Contents?: true
Size: 1.77 KB
Versions: 4
Compression:
Stored size: 1.77 KB
Contents
# frozen_string_literal: true module Buildkite::TestCollector::TestLinksPlugin class Formatter RSpec::Core::Formatters.register self, :dump_failures def initialize(output) @output = output end def dump_failures(notification) # Do not display summary if no failed examples return if notification.failed_examples.empty? # Check if a Test Analytics token is set return unless Buildkite::TestCollector.api_token metadata = fetch_metadata # return if metadata was not fetched successfully return if metadata.nil? # return if suite url is nil return if metadata['suite_url'].nil? @output << "\n\nš„ \x1b[31mTest Analytics failures š„\n" @output << '_____________________________' @output << "\n\n" @output << notification.failed_examples.map do |example| failed_example_output(example, metadata['suite_url']) end.join("\n") @output << "\n\n" end private def generate_scope_name_digest(scope, name) Digest::SHA256.hexdigest(scope + name) end def failed_example_output(example, url) scope = example.example_group.metadata[:full_description] name = example.description scope_name_digest = generate_scope_name_digest(scope, name) test_url = "#{url}/tests/#{scope_name_digest}" "š \x1b[4m\x1b[37m#{%(\x1b]1339;url=#{test_url};content="#{scope} #{name}"\x07)}\x1b[m" end def fetch_metadata return unless Buildkite::TestCollector.api_token http = Buildkite::TestCollector::HTTPClient.new(Buildkite::TestCollector.url) response = http.metadata JSON.parse(response.body) if response.code == '200' rescue StandardError => e # We don't need to output anything here end end end
Version data entries
4 entries across 4 versions & 1 rubygems