gitlab_quality-test_tooling 1.26.0 → 1.27.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6895c7a00b6414c417fdadfe15fc030d316c1a6ecac135d5a3b281748d321926
4
- data.tar.gz: d9c8dcf80524df5f22c3cc32439f2abaf5f148d061c46a1b8f74a6c40aaa2a21
3
+ metadata.gz: a5b3317b1df5c3f923259fb0dbb71e9cfdf9b4e32f9338b2189758538aaacb30
4
+ data.tar.gz: 60fda58d2a830e1849c8175347050cb81f62658a20e1ee4c9bdde2cb3049d965
5
5
  SHA512:
6
- metadata.gz: c6305ab3fcdf665926a8a1180ffd1308611e39ef53442d584e1797e8caf0115527bac36376b668ee89473d94f86ee160eeeeeaf2a72dca8348a96b44c375f233
7
- data.tar.gz: bf77f8ce83ebebb939925479593cb7c21b9f2f4a8ac564da009605d509ec4e56c4eb68b73fbc156b05567c9c0d5603b7ac2552f77c615b1b19fa2e5e19ad568a
6
+ metadata.gz: 0c70f1860b051ccd633aae6cb58298a90edecdd8a93a598e76f90ac8b2a337f755d77e30fa8b1dd6bcd3df7473c9af31c8a6e46509b59a5047d1be03a4bb2910
7
+ data.tar.gz: 1ae2fbf63375f49d43ef28cb5a5ec44af6940a5ffd46b43a07c07855085449994858bc49b4ca61c0cd73737c7d4960de9f5f092019681668ad339326f069c741
data/Gemfile.lock CHANGED
@@ -1,11 +1,12 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- gitlab_quality-test_tooling (1.26.0)
5
- activesupport (>= 6.1, < 7.2)
4
+ gitlab_quality-test_tooling (1.27.0)
5
+ activesupport (~> 7.1)
6
6
  amatch (~> 0.4.1)
7
7
  gitlab (~> 4.19)
8
8
  http (~> 5.0)
9
+ influxdb-client (~> 3.1)
9
10
  nokogiri (~> 1.10)
10
11
  parallel (>= 1, < 2)
11
12
  rainbow (>= 3, < 4)
@@ -35,7 +36,7 @@ GEM
35
36
  backport (1.2.0)
36
37
  base64 (0.2.0)
37
38
  benchmark (0.3.0)
38
- bigdecimal (3.1.6)
39
+ bigdecimal (3.1.8)
39
40
  binding_of_caller (1.0.0)
40
41
  debug_inspector (>= 0.0.1)
41
42
  byebug (11.1.3)
@@ -128,7 +129,7 @@ GEM
128
129
  httparty (0.21.0)
129
130
  mini_mime (>= 1.0.0)
130
131
  multi_xml (>= 0.5.2)
131
- i18n (1.14.4)
132
+ i18n (1.14.5)
132
133
  concurrent-ruby (~> 1.0)
133
134
  influxdb-client (3.1.0)
134
135
  jaro_winkler (1.5.6)
@@ -148,7 +149,7 @@ GEM
148
149
  method_source (1.0.0)
149
150
  mini_mime (1.1.5)
150
151
  mini_portile2 (2.8.5)
151
- minitest (5.22.2)
152
+ minitest (5.23.0)
152
153
  mize (0.4.1)
153
154
  protocol (~> 2.0)
154
155
  multi_xml (0.6.0)
@@ -313,13 +314,11 @@ PLATFORMS
313
314
  ruby
314
315
 
315
316
  DEPENDENCIES
316
- activesupport (>= 6.1, < 7.2)
317
317
  climate_control (~> 1.2)
318
318
  gitlab-dangerfiles (~> 3.8)
319
319
  gitlab-styles (~> 10.0)
320
320
  gitlab_quality-test_tooling!
321
321
  guard-rspec (~> 4.7)
322
- influxdb-client (~> 3.1)
323
322
  lefthook (~> 1.3)
324
323
  pry-byebug (= 3.10.1)
325
324
  rake (~> 13.0)
@@ -29,15 +29,10 @@ module GitlabQuality
29
29
  MultipleNotesFound = Class.new(StandardError)
30
30
 
31
31
  def initialize(
32
- token:,
33
- input_files:,
34
32
  base_issue_labels: nil,
35
- dry_run: false,
36
- related_issues_file: nil,
37
- project: nil,
38
33
  max_diff_ratio: DEFAULT_MAX_DIFF_RATIO_FOR_DETECTION,
39
- **_kwargs)
40
- super(token: token, input_files: input_files, related_issues_file: related_issues_file, project: project, dry_run: dry_run)
34
+ **kwargs)
35
+ super(**kwargs)
41
36
 
42
37
  @base_issue_labels = Set.new(base_issue_labels)
43
38
  @max_diff_ratio = max_diff_ratio.to_f
@@ -64,7 +59,13 @@ module GitlabQuality
64
59
  puts " => Reporting failure for test '#{test.name}'..."
65
60
 
66
61
  issues = find_issues_by_hash(test_hash(test), state: 'opened', labels: SEARCH_LABELS)
67
- issues << create_issue(test) if issues.empty?
62
+
63
+ if issues.empty?
64
+ issues << create_issue(test)
65
+ else
66
+ # Keep issues description up-to-date
67
+ update_issues(issues, test)
68
+ end
68
69
 
69
70
  update_reports(issues, test)
70
71
  collect_issues(test, issues)
@@ -27,14 +27,9 @@ module GitlabQuality
27
27
  DOC
28
28
 
29
29
  def initialize(
30
- token:,
31
- input_files:,
32
30
  base_issue_labels: nil,
33
- confidential: false,
34
- dry_run: false,
35
- project: nil,
36
- **_kwargs)
37
- super(token: token, input_files: input_files, project: project, confidential: confidential, dry_run: dry_run)
31
+ **kwargs)
32
+ super(**kwargs)
38
33
 
39
34
  @base_issue_labels = Set.new(base_issue_labels)
40
35
  end
@@ -60,7 +55,13 @@ module GitlabQuality
60
55
  puts " => Reporting flakiness for test '#{test.name}'..."
61
56
 
62
57
  issues = find_issues_by_hash(test_hash(test), state: 'opened', labels: SEARCH_LABELS)
63
- issues << create_issue(test) if issues.empty?
58
+
59
+ if issues.empty?
60
+ issues << create_issue(test)
61
+ else
62
+ # Keep issues description up-to-date
63
+ update_issues(issues, test)
64
+ end
64
65
 
65
66
  update_reports(issues, test)
66
67
  collect_issues(test, issues)
@@ -51,17 +51,19 @@ module GitlabQuality
51
51
 
52
52
  def new_issue_description(test)
53
53
  <<~DESCRIPTION
54
- ### Test metadata (don't modify)
54
+ ### Test metadata
55
55
 
56
+ <!-- Don't modify this section as it's auto-generated -->
56
57
  | Field | Value |
57
58
  | ------ | ------ |
58
59
  | File URL | #{test.test_file_link} |
59
60
  | Filename | `#{test.file}` |
60
61
  | Description | `#{test.name}` |
61
- | Test level | #{test.level} |
62
+ | Test level | `#{test.level}` |
62
63
  | Hash | `#{test_hash(test)}` |
63
- | Expected duration | < #{test.max_duration_for_test} seconds |
64
+ | Max expected duration | < #{test.max_duration_for_test} seconds |
64
65
  #{"| Test case | #{test.testcase} |" if test.testcase}
66
+ <!-- Don't modify this section as it's auto-generated -->
65
67
  DESCRIPTION
66
68
  end
67
69
 
@@ -111,6 +113,21 @@ module GitlabQuality
111
113
  end
112
114
  end
113
115
 
116
+ def update_issues(issues, test)
117
+ issues.each do |issue|
118
+ update_issue(issue, test)
119
+ end
120
+ end
121
+
122
+ def update_issue(issue, test)
123
+ issue_attrs = {
124
+ description: new_issue_description(test)
125
+ }
126
+ return if issue.description == issue_attrs[:description]
127
+
128
+ gitlab.edit_issue(iid: issue.iid, options: issue_attrs)
129
+ end
130
+
114
131
  def issue_labels(issue)
115
132
  issue&.labels&.to_set || Set.new
116
133
  end
@@ -45,7 +45,13 @@ module GitlabQuality
45
45
  puts " => Reporting slowness for test '#{test.name}'..."
46
46
 
47
47
  issues = find_issues_by_hash(test_hash(test), state: 'opened', labels: SEARCH_LABELS)
48
- issues << create_issue(test) if issues.empty?
48
+
49
+ if issues.empty?
50
+ issues << create_issue(test)
51
+ else
52
+ # Keep issues description up-to-date
53
+ update_issues(issues, test)
54
+ end
49
55
 
50
56
  update_reports(issues, test)
51
57
  collect_issues(test, issues)
@@ -81,9 +81,7 @@ module GitlabQuality
81
81
  live_envs = %w[staging staging-canary staging-ref canary preprod production]
82
82
  return unless live_envs.include?(ci_project_name)
83
83
 
84
- test_subset = if env_var_value_if_defined('NO_ADMIN') == 'true'
85
- 'sanity-no-admin'
86
- elsif env_var_value_if_defined('SMOKE_ONLY') == 'true'
84
+ test_subset = if env_var_value_if_defined('SMOKE_ONLY') == 'true'
87
85
  'sanity'
88
86
  else
89
87
  'full'
@@ -5,19 +5,19 @@ require "singleton"
5
5
  module GitlabQuality
6
6
  module TestTooling
7
7
  module TestMetricsExporter
8
- class << self
9
- def configuration
10
- Config.instance
11
- end
12
-
13
- def configure
14
- yield(configuration)
15
- end
16
- end
17
-
18
8
  class Config
19
9
  include Singleton
20
10
 
11
+ class << self
12
+ def configuration
13
+ Config.instance
14
+ end
15
+
16
+ def configure
17
+ yield(configuration)
18
+ end
19
+ end
20
+
21
21
  attr_accessor :influxdb_url,
22
22
  :influxdb_token,
23
23
  :influxdb_bucket,
@@ -6,8 +6,8 @@ module GitlabQuality
6
6
  class Formatter < RSpec::Core::Formatters::BaseFormatter
7
7
  RSpec::Core::Formatters.register(self, :stop)
8
8
 
9
- def stop(_notification)
10
- setup_test_metrics_exporter
9
+ def stop(notification)
10
+ setup_test_metrics_exporter(notification.examples)
11
11
 
12
12
  log_test_metrics.push_test_metrics(
13
13
  custom_keys_tags: config.custom_keys_tags,
@@ -29,9 +29,9 @@ module GitlabQuality
29
29
  Config.configuration
30
30
  end
31
31
 
32
- def setup_test_metrics_exporter
32
+ def setup_test_metrics_exporter(examples)
33
33
  @log_test_metrics = LogTestMetrics.new(
34
- examples: notification.examples,
34
+ examples: examples,
35
35
  influxdb_url: config.influxdb_url,
36
36
  influxdb_token: config.influxdb_token,
37
37
  influxdb_bucket: config.influxdb_bucket,
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'influxdb-client'
4
+
3
5
  module GitlabQuality
4
6
  module TestTooling
5
7
  module TestMetricsExporter
@@ -2,6 +2,6 @@
2
2
 
3
3
  module GitlabQuality
4
4
  module TestTooling
5
- VERSION = "1.26.0"
5
+ VERSION = "1.27.0"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,35 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitlab_quality-test_tooling
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.26.0
4
+ version: 1.27.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: 2024-05-16 00:00:00.000000000 Z
11
+ date: 2024-05-23 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: activesupport
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '6.1'
20
- - - "<"
21
- - !ruby/object:Gem::Version
22
- version: '7.2'
23
- type: :development
24
- prerelease: false
25
- version_requirements: !ruby/object:Gem::Requirement
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- version: '6.1'
30
- - - "<"
31
- - !ruby/object:Gem::Version
32
- version: '7.2'
33
13
  - !ruby/object:Gem::Dependency
34
14
  name: climate_control
35
15
  requirement: !ruby/object:Gem::Requirement
@@ -86,20 +66,6 @@ dependencies:
86
66
  - - "~>"
87
67
  - !ruby/object:Gem::Version
88
68
  version: '4.7'
89
- - !ruby/object:Gem::Dependency
90
- name: influxdb-client
91
- requirement: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - "~>"
94
- - !ruby/object:Gem::Version
95
- version: '3.1'
96
- type: :development
97
- prerelease: false
98
- version_requirements: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - "~>"
101
- - !ruby/object:Gem::Version
102
- version: '3.1'
103
69
  - !ruby/object:Gem::Dependency
104
70
  name: lefthook
105
71
  requirement: !ruby/object:Gem::Requirement
@@ -230,22 +196,16 @@ dependencies:
230
196
  name: activesupport
231
197
  requirement: !ruby/object:Gem::Requirement
232
198
  requirements:
233
- - - ">="
234
- - !ruby/object:Gem::Version
235
- version: '6.1'
236
- - - "<"
199
+ - - "~>"
237
200
  - !ruby/object:Gem::Version
238
- version: '7.2'
201
+ version: '7.1'
239
202
  type: :runtime
240
203
  prerelease: false
241
204
  version_requirements: !ruby/object:Gem::Requirement
242
205
  requirements:
243
- - - ">="
244
- - !ruby/object:Gem::Version
245
- version: '6.1'
246
- - - "<"
206
+ - - "~>"
247
207
  - !ruby/object:Gem::Version
248
- version: '7.2'
208
+ version: '7.1'
249
209
  - !ruby/object:Gem::Dependency
250
210
  name: amatch
251
211
  requirement: !ruby/object:Gem::Requirement
@@ -288,6 +248,20 @@ dependencies:
288
248
  - - "~>"
289
249
  - !ruby/object:Gem::Version
290
250
  version: '5.0'
251
+ - !ruby/object:Gem::Dependency
252
+ name: influxdb-client
253
+ requirement: !ruby/object:Gem::Requirement
254
+ requirements:
255
+ - - "~>"
256
+ - !ruby/object:Gem::Version
257
+ version: '3.1'
258
+ type: :runtime
259
+ prerelease: false
260
+ version_requirements: !ruby/object:Gem::Requirement
261
+ requirements:
262
+ - - "~>"
263
+ - !ruby/object:Gem::Version
264
+ version: '3.1'
291
265
  - !ruby/object:Gem::Dependency
292
266
  name: nokogiri
293
267
  requirement: !ruby/object:Gem::Requirement