gitlab_quality-test_tooling 1.5.1 → 1.5.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +2 -2
- data/lib/gitlab_quality/test_tooling/report/issue_logger.rb +2 -0
- data/lib/gitlab_quality/test_tooling/report/merge_request_slow_tests_report.rb +23 -14
- data/lib/gitlab_quality/test_tooling/report/relate_failure_issue.rb +4 -1
- data/lib/gitlab_quality/test_tooling/runtime/logger.rb +1 -0
- data/lib/gitlab_quality/test_tooling/test_result/json_test_result.rb +4 -0
- 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: 421778dfb1e380d4b8e0fc3e43a8d4147d50c0a11304ac36e964aeaf99330404
|
4
|
+
data.tar.gz: 1f09fb87a864818b6728364454c0f8b9043cc73c5cec1ce4aa0104261d5dbfea
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7cdbc73cd4ac08dc3f78a27b4575ec3a6005b7cfd95577bd61c8868d6836b3f1d549b1744d27d6cc2939e08d9b777eb74e84e4fb473952c7a9c982dc7a9b719e
|
7
|
+
data.tar.gz: ddd08dc76c0a45cae09283f0a2c8b91a731a203ffa624cac641254b4933b49585d585b5ada0169f85cccd4c59af562ffca9b16df5d733ee98d38f0c15af08334
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
gitlab_quality-test_tooling (1.5.
|
4
|
+
gitlab_quality-test_tooling (1.5.2)
|
5
5
|
activesupport (>= 6.1, < 7.2)
|
6
6
|
amatch (~> 0.4.1)
|
7
7
|
gitlab (~> 4.19)
|
@@ -15,7 +15,7 @@ PATH
|
|
15
15
|
GEM
|
16
16
|
remote: https://rubygems.org/
|
17
17
|
specs:
|
18
|
-
activesupport (
|
18
|
+
activesupport (7.0.8)
|
19
19
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
20
20
|
i18n (>= 1.6, < 2)
|
21
21
|
minitest (>= 5.1)
|
@@ -15,6 +15,7 @@ module GitlabQuality
|
|
15
15
|
merge_request_iid: merge_request_iid)
|
16
16
|
@files = Array(input_files)
|
17
17
|
@merge_request_iid = merge_request_iid
|
18
|
+
@slow_tests = []
|
18
19
|
end
|
19
20
|
|
20
21
|
def invoke!
|
@@ -25,7 +26,7 @@ module GitlabQuality
|
|
25
26
|
|
26
27
|
private
|
27
28
|
|
28
|
-
attr_reader :gitlab_merge_request, :files, :project, :merge_request_iid
|
29
|
+
attr_reader :gitlab_merge_request, :files, :project, :merge_request_iid, :slow_tests
|
29
30
|
|
30
31
|
def run!
|
31
32
|
puts "Reporting slow tests in MR #{merge_request_iid}"
|
@@ -33,21 +34,26 @@ module GitlabQuality
|
|
33
34
|
TestResults::Builder.new(files).test_results_per_file do |test_results|
|
34
35
|
puts "=> Reporting #{test_results.count} tests in #{test_results.path}"
|
35
36
|
|
36
|
-
|
37
|
+
@slow_tests += slow_related_tests(find_slow_tests(test_results))
|
37
38
|
end
|
39
|
+
|
40
|
+
@slow_tests.uniq!
|
41
|
+
@slow_tests.reject!(&:failed?)
|
42
|
+
|
43
|
+
return unless @slow_tests.any?
|
44
|
+
|
45
|
+
upsert_mr_note(@slow_tests)
|
38
46
|
end
|
39
47
|
|
40
|
-
def
|
41
|
-
|
42
|
-
|
43
|
-
|
48
|
+
def related_test?(slow_test)
|
49
|
+
base_file = slow_test.file.split('/').last.gsub('_spec.rb', '')
|
50
|
+
|
51
|
+
merge_request_changed_files.any? { |change| change =~ /#{base_file}/ }
|
44
52
|
end
|
45
53
|
|
46
54
|
def slow_related_tests(slow_test_results)
|
47
|
-
slow_test_results.select do |
|
48
|
-
|
49
|
-
|
50
|
-
merge_request_changed_files.any? { |change| change =~ /#{base_file}/ }
|
55
|
+
slow_test_results.select do |slow_test|
|
56
|
+
related_test?(slow_test)
|
51
57
|
end
|
52
58
|
end
|
53
59
|
|
@@ -55,7 +61,7 @@ module GitlabQuality
|
|
55
61
|
@merge_request_changed_files ||= gitlab_merge_request.merge_request_changed_files
|
56
62
|
end
|
57
63
|
|
58
|
-
def
|
64
|
+
def find_slow_tests(test_results)
|
59
65
|
test_results.select(&:slow_test?)
|
60
66
|
end
|
61
67
|
|
@@ -66,7 +72,8 @@ module GitlabQuality
|
|
66
72
|
":tools: #{SLOW_TEST_NOTE_SOURCE_CODE}\n",
|
67
73
|
":recycle: #{SLOW_TEST_NOTE_FEEDBACK}\n",
|
68
74
|
"---\n",
|
69
|
-
|
75
|
+
":snail: Slow tests detected in this merge request. These slow tests might be related to this merge request's changes.",
|
76
|
+
"<details><summary>Click to expand</summary>\n",
|
70
77
|
'| Job | File | Name | Duration | Expected duration |',
|
71
78
|
'| --- | --- | --- | --- | --- |'
|
72
79
|
]
|
@@ -83,7 +90,7 @@ module GitlabQuality
|
|
83
90
|
end
|
84
91
|
|
85
92
|
def build_note(slow_test)
|
86
|
-
rows = note_header + slow_test_rows(slow_test)
|
93
|
+
rows = note_header + slow_test_rows(slow_test) + ["\n</details>"]
|
87
94
|
|
88
95
|
rows.join("\n")
|
89
96
|
end
|
@@ -105,11 +112,13 @@ module GitlabQuality
|
|
105
112
|
end
|
106
113
|
|
107
114
|
def add_slow_test_rows(gitlab_note, slow_tests)
|
115
|
+
gitlab_note.gsub!("\n\n</details>", "")
|
116
|
+
|
108
117
|
slow_tests.each do |slow_test|
|
109
118
|
gitlab_note += "\n#{slow_test_table_row(slow_test)}" unless note_comment_includes_slow_test?(gitlab_note, slow_test)
|
110
119
|
end
|
111
120
|
|
112
|
-
gitlab_note
|
121
|
+
"#{gitlab_note}\n\n</details>"
|
113
122
|
end
|
114
123
|
|
115
124
|
def upsert_mr_note(slow_tests)
|
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: 1.5.
|
4
|
+
version: 1.5.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- GitLab Quality
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-11-
|
11
|
+
date: 2023-11-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: climate_control
|