gitlab_quality-test_tooling 2.5.0 → 2.6.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/Gemfile.lock +1 -1
- data/lib/gitlab_quality/test_tooling/gitlab_client/issues_client.rb +15 -0
- data/lib/gitlab_quality/test_tooling/report/concerns/issue_reports.rb +2 -2
- data/lib/gitlab_quality/test_tooling/report/relate_failure_issue.rb +30 -3
- data/lib/gitlab_quality/test_tooling/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 279a7eab459c664263a3506753c09d78111784af48af599cab26ed8928f54e2a
|
4
|
+
data.tar.gz: '06388341bfbb2c868ae25569af2597666f64cdb7e980465078a78778081ca107'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cd37eca775b6899df0e476d11499ee491a8ea4278d88bf8f9584feb3cb8d1245da3319aa534ed4743c06ca1bd7da7a4eefcf619aa26688eb895bf3168d58eb9d
|
7
|
+
data.tar.gz: 58f7c549202b39a20d6d5b5fc117e9017a044ee2e6bff63f07b82dda9650ed819f43407f20a5363d638b986fb8860d69c2452ea68bdf7fe5b7e33e70abb281b4
|
data/Gemfile.lock
CHANGED
@@ -122,6 +122,21 @@ module GitlabQuality
|
|
122
122
|
end
|
123
123
|
end
|
124
124
|
|
125
|
+
def find_pipeline(project, pipeline_id)
|
126
|
+
handle_gitlab_client_exceptions do
|
127
|
+
client.pipeline(project, pipeline_id)
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
def find_commit_parent(project, sha)
|
132
|
+
handle_gitlab_client_exceptions do
|
133
|
+
# In a merged results commit, the first parent is the one from
|
134
|
+
# the main branch, and the second parent is from the branch
|
135
|
+
# itself (more likely to have caused the issue)
|
136
|
+
client.commit(project, sha).parent_ids.last
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
125
140
|
private
|
126
141
|
|
127
142
|
attr_reader :token, :project
|
@@ -113,11 +113,11 @@ module GitlabQuality
|
|
113
113
|
end
|
114
114
|
end
|
115
115
|
|
116
|
-
def initial_reports_section(test)
|
116
|
+
def initial_reports_section(test, item_extra_content: nil)
|
117
117
|
<<~REPORTS
|
118
118
|
### Reports (1)
|
119
119
|
|
120
|
-
#{ReportsList.report_list_item(test)}
|
120
|
+
#{ReportsList.report_list_item(test, item_extra_content: item_extra_content)}
|
121
121
|
REPORTS
|
122
122
|
end
|
123
123
|
|
@@ -26,6 +26,13 @@ module GitlabQuality
|
|
26
26
|
NEW_ISSUE_LABELS = Set.new(%w[test failure::new priority::2 automation:bot-authored]).freeze
|
27
27
|
SCREENSHOT_IGNORED_ERRORS = ['500 Internal Server Error', 'fabricate_via_api!', 'Error Code 500'].freeze
|
28
28
|
|
29
|
+
# Map commits to security fork (gitlab-org/security/gitlab) for gitlab-org/gitlab since security patches exist
|
30
|
+
# there before being released to the public repository
|
31
|
+
DIFF_PROJECT_MAPPINGS = {
|
32
|
+
'gitlab-org/gitlab' => 'gitlab-org/security/gitlab',
|
33
|
+
'gitlab-org/customers-gitlab-com' => 'gitlab-org/customers-gitlab-com'
|
34
|
+
}.freeze
|
35
|
+
|
29
36
|
MultipleIssuesFound = Class.new(StandardError)
|
30
37
|
|
31
38
|
def initialize(
|
@@ -271,14 +278,27 @@ module GitlabQuality
|
|
271
278
|
|
272
279
|
def new_issue_description(test)
|
273
280
|
super + [
|
274
|
-
"\n
|
281
|
+
"\n#{compare_against_previous_commit}",
|
282
|
+
"### Stack trace",
|
275
283
|
"```\n#{test.full_stacktrace}\n```",
|
276
284
|
screenshot_section(test),
|
277
285
|
system_log_errors_section(test),
|
278
|
-
initial_reports_section(test)
|
286
|
+
initial_reports_section(test, item_extra_content: screenshot_artifact_url(test))
|
279
287
|
].compact.join("\n\n")
|
280
288
|
end
|
281
289
|
|
290
|
+
def compare_against_previous_commit
|
291
|
+
pipeline_sha = gitlab.find_pipeline(project, Runtime::Env.ci_pipeline_id.to_i).sha
|
292
|
+
parent_sha = gitlab.find_commit_parent(project, pipeline_sha)
|
293
|
+
diff_project = if DIFF_PROJECT_MAPPINGS.key?(project)
|
294
|
+
DIFF_PROJECT_MAPPINGS[project]
|
295
|
+
else
|
296
|
+
raise "Project #{project} is not supported for commit diff links"
|
297
|
+
end
|
298
|
+
|
299
|
+
"### Commit diff\nhttps://gitlab.com/#{diff_project}/-/compare/#{parent_sha}...#{pipeline_sha}"
|
300
|
+
end
|
301
|
+
|
282
302
|
def system_log_errors_section(test)
|
283
303
|
correlation_id = test.failures.first['correlation_id']
|
284
304
|
section = ''
|
@@ -322,7 +342,7 @@ module GitlabQuality
|
|
322
342
|
state_event = issue.state == 'closed' ? 'reopen' : nil
|
323
343
|
|
324
344
|
issue_attrs = {
|
325
|
-
description: increment_reports(current_reports_content: issue.description, test: test).to_s,
|
345
|
+
description: increment_reports(current_reports_content: issue.description, test: test, item_extra_content: screenshot_artifact_url(test)).to_s,
|
326
346
|
labels: up_to_date_labels(test: test, issue: issue)
|
327
347
|
}
|
328
348
|
issue_attrs[:state_event] = state_event if state_event
|
@@ -386,6 +406,13 @@ module GitlabQuality
|
|
386
406
|
.filter_map { |e| failure_to_ignore.find { |m| e['message'].include?(m) } }
|
387
407
|
.compact
|
388
408
|
end
|
409
|
+
|
410
|
+
def screenshot_artifact_url(test)
|
411
|
+
ci_job_url = test.ci_job_url
|
412
|
+
screenshot_path = test.screenshot_image[%r{qa/.*$}]
|
413
|
+
|
414
|
+
"|| [Screenshot](#{ci_job_url}/artifacts/file/#{screenshot_path})"
|
415
|
+
end
|
389
416
|
end
|
390
417
|
end
|
391
418
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gitlab_quality-test_tooling
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- GitLab Quality
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-01-
|
11
|
+
date: 2025-01-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: climate_control
|