buildkite-test_collector 2.3.2 ā 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/Gemfile.lock +1 -1
- data/lib/buildkite/test_collector/http_client.rb +14 -0
- data/lib/buildkite/test_collector/library_hooks/rspec.rb +2 -0
- data/lib/buildkite/test_collector/test_links_plugin/formatter.rb +62 -0
- data/lib/buildkite/test_collector/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d1d5188350d19431be80e4d9680a9a561d4ae25f64549d5be488607d1882a5c1
|
4
|
+
data.tar.gz: aece9ddaddba6792fcf2fa91f8642e5be3712bf118f154f6e152f0cbad5aa9eb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6eb7578e7cad14c2088b6bb522eb3548cccd6de33dd09952fc4d4fd8638a707f9abaa8b68060fefd3eab212ab7a23d114cba0f4155e9394b13277b1b67719652
|
7
|
+
data.tar.gz: 6d1f20581f34336eb39e22a753661d5cd9b9feaf05a7773ca6d3171ec50ef335a61ec6697f9baeab4526810e0ed400981fae1738a78637179fbadae452a1995d
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
@@ -41,6 +41,20 @@ module Buildkite::TestCollector
|
|
41
41
|
http.request(contact)
|
42
42
|
end
|
43
43
|
|
44
|
+
def metadata
|
45
|
+
contact_uri = URI.parse("#{url}/metadata")
|
46
|
+
|
47
|
+
http = Net::HTTP.new(contact_uri.host, contact_uri.port)
|
48
|
+
http.use_ssl = contact_uri.scheme == "https"
|
49
|
+
|
50
|
+
contact = Net::HTTP::Get.new(contact_uri.path, {
|
51
|
+
"Authorization" => authorization_header,
|
52
|
+
"Content-Type" => "application/json"
|
53
|
+
})
|
54
|
+
|
55
|
+
http.request(contact)
|
56
|
+
end
|
57
|
+
|
44
58
|
private
|
45
59
|
|
46
60
|
attr :url
|
@@ -5,12 +5,14 @@ require "rspec/expectations"
|
|
5
5
|
|
6
6
|
require_relative "../rspec_plugin/reporter"
|
7
7
|
require_relative "../rspec_plugin/trace"
|
8
|
+
require_relative "../test_links_plugin/formatter"
|
8
9
|
|
9
10
|
Buildkite::TestCollector.uploader = Buildkite::TestCollector::Uploader
|
10
11
|
|
11
12
|
RSpec.configure do |config|
|
12
13
|
config.before(:suite) do
|
13
14
|
config.add_formatter Buildkite::TestCollector::RSpecPlugin::Reporter
|
15
|
+
config.add_formatter Buildkite::TestCollector::TestLinksPlugin::Formatter
|
14
16
|
end
|
15
17
|
|
16
18
|
config.around(:each) do |example|
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Buildkite::TestCollector::TestLinksPlugin
|
4
|
+
class Formatter
|
5
|
+
RSpec::Core::Formatters.register self, :dump_failures
|
6
|
+
|
7
|
+
def initialize(output)
|
8
|
+
@output = output
|
9
|
+
end
|
10
|
+
|
11
|
+
def dump_failures(notification)
|
12
|
+
# Do not display summary if no failed examples
|
13
|
+
return unless notification.failed_examples.present?
|
14
|
+
|
15
|
+
# Check if a Test Analytics token is set
|
16
|
+
return unless Buildkite::TestCollector.api_token
|
17
|
+
|
18
|
+
metadata = fetch_metadata
|
19
|
+
|
20
|
+
# return if metadata was not fetched successfully
|
21
|
+
return if metadata.nil?
|
22
|
+
|
23
|
+
# return if suite url is nil
|
24
|
+
return if metadata['suite_url'].nil?
|
25
|
+
|
26
|
+
@output << "\n\nš„ \x1b[31mTest Analytics failures š„\n"
|
27
|
+
@output << '_____________________________'
|
28
|
+
@output << "\n\n"
|
29
|
+
|
30
|
+
@output << notification.failed_examples.map do |example|
|
31
|
+
failed_example_output(example, metadata['suite_url'])
|
32
|
+
end.join("\n")
|
33
|
+
|
34
|
+
@output << "\n\n"
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def generate_scope_name_digest(scope, name)
|
40
|
+
Digest::SHA256.hexdigest(scope + name)
|
41
|
+
end
|
42
|
+
|
43
|
+
def failed_example_output(example, url)
|
44
|
+
scope = example.example_group.metadata[:full_description]
|
45
|
+
name = example.description
|
46
|
+
scope_name_digest = generate_scope_name_digest(scope, name)
|
47
|
+
test_url = "#{url}/tests/#{scope_name_digest}"
|
48
|
+
"š \x1b[4m\x1b[37m#{%(\x1b]1339;url=#{test_url};content="#{scope} #{name}"\x07)}\x1b[m"
|
49
|
+
end
|
50
|
+
|
51
|
+
def fetch_metadata
|
52
|
+
return unless Buildkite::TestCollector.api_token
|
53
|
+
|
54
|
+
http = Buildkite::TestCollector::HTTPClient.new(Buildkite::TestCollector.url)
|
55
|
+
response = http.metadata
|
56
|
+
|
57
|
+
JSON.parse(response.body) if response.code == '200'
|
58
|
+
rescue StandardError => e
|
59
|
+
# We don't need to output anything here
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: buildkite-test_collector
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Buildkite
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-11-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -88,6 +88,7 @@ files:
|
|
88
88
|
- lib/buildkite/test_collector/rspec_plugin/reporter.rb
|
89
89
|
- lib/buildkite/test_collector/rspec_plugin/trace.rb
|
90
90
|
- lib/buildkite/test_collector/session.rb
|
91
|
+
- lib/buildkite/test_collector/test_links_plugin/formatter.rb
|
91
92
|
- lib/buildkite/test_collector/tracer.rb
|
92
93
|
- lib/buildkite/test_collector/uploader.rb
|
93
94
|
- lib/buildkite/test_collector/uuid.rb
|
@@ -114,7 +115,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
114
115
|
- !ruby/object:Gem::Version
|
115
116
|
version: '0'
|
116
117
|
requirements: []
|
117
|
-
rubygems_version: 3.3.
|
118
|
+
rubygems_version: 3.3.22
|
118
119
|
signing_key:
|
119
120
|
specification_version: 4
|
120
121
|
summary: Track test executions and report to Buildkite Test Analytics
|