gitlab_quality-test_tooling 3.10.1 → 3.12.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6c49f987999c6124651b5f1f21de7d588d1940749b91f8527e21b9fcbbb1921b
4
- data.tar.gz: 384d0765fb0d891e373777004ad20a5cecbc2df9b07cc74ca1b70ae30a080641
3
+ metadata.gz: 544d1dca9801992bdb2b7cbe9c34eb3dae7f7c47f84c3d51b5eb55dbfcaae6c6
4
+ data.tar.gz: 8442c5eaa7f809c59cbad5e96ef46606ab7f1a881bc9040267929b66cf36f9d5
5
5
  SHA512:
6
- metadata.gz: 4ff2cc394058616512c5c00779772d244d08986e12762a49c17ca9e31065a4af6b79beaeb8ceb7ac35c290efb10410c5888aff363b183d4190bb9b863278a418
7
- data.tar.gz: 8cc8717e64a9c260ca10474897aae319bae9565a1257815e3a83e931049d8d0c61c32fb38d9b66f13976f0f0e1ec4e7d3666f5c3311c5e64cae0c25940ff5da6
6
+ metadata.gz: d1115577ba91a7bf0c1a8632a53502b58fad6b5c2cd62862230d70e26a31c7ef5eed202bed97f90cd2d8d98897bdc5a71f5006a4059a6b1bdac571144c5722c8
7
+ data.tar.gz: 108b5be41cde544adee4439d56e61caeccab5a4fa5ebefcb785cea9b8dc70a4751cdce0659e7f4bf176165392a3e184dd944e8832bdc8c399661e87f36830c58
data/Gemfile.lock CHANGED
@@ -1,12 +1,13 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- gitlab_quality-test_tooling (3.10.1)
4
+ gitlab_quality-test_tooling (3.12.1)
5
5
  activesupport (>= 7.0)
6
6
  amatch (~> 0.4.1)
7
7
  fog-google (~> 1.24, >= 1.24.1)
8
8
  gitlab (>= 4.19, < 7.0)
9
9
  http (~> 5.0)
10
+ http-cookie (>= 1.0, < 1.1.1)
10
11
  nokogiri (~> 1.10)
11
12
  parallel (>= 1, < 2)
12
13
  rainbow (>= 3, < 4)
@@ -11,6 +11,14 @@ module GitlabQuality
11
11
  WWW_GITLAB_COM_GROUPS_JSON = "#{WWW_GITLAB_COM_SITE}/groups.json".freeze
12
12
  WWW_GITLAB_COM_CATEGORIES_JSON = "#{WWW_GITLAB_COM_SITE}/categories.json".freeze
13
13
 
14
+ EM_KEYS = {
15
+ all: %w[engineering_managers backend_engineering_managers frontend_engineering_managers fullstack_managers],
16
+ generic: %w[engineering_managers],
17
+ backend: %w[backend_engineering_managers],
18
+ frontend: %w[frontend_engineering_managers],
19
+ fullstack: %w[fullstack_managers]
20
+ }.freeze
21
+
14
22
  def infer_labels_from_product_group(product_group)
15
23
  [groups_mapping.dig(product_group, 'label')].compact.to_set
16
24
  end
@@ -26,8 +34,53 @@ module GitlabQuality
26
34
  categories_mapping.dig(feature_category, 'group')
27
35
  end
28
36
 
37
+ def group_data_from_label(label)
38
+ return unless label
39
+
40
+ groups_mapping.each do |key, data|
41
+ next unless label.casecmp?(data['label'])
42
+
43
+ return data.merge('key' => key)
44
+ end
45
+
46
+ nil
47
+ end
48
+
49
+ def product_managers_from_product_group(product_group)
50
+ group_data = groups_mapping[product_group]
51
+ return [] unless group_data
52
+
53
+ normalize_mentions(Array(group_data['product_managers']).compact)
54
+ end
55
+
56
+ def all_group_labels
57
+ groups_mapping.filter_map { |_key, data| data['label'] }.uniq
58
+ end
59
+
60
+ def engineering_managers_from_product_group(product_group, *scopes)
61
+ group_data = groups_mapping[product_group]
62
+ return [] unless group_data
63
+
64
+ default_scope = scopes.empty?
65
+ scopes = [:all] if default_scope
66
+ ems = resolve_ems(group_data, scopes, default_scope)
67
+
68
+ normalize_mentions(ems)
69
+ end
70
+
29
71
  private
30
72
 
73
+ def normalize_mentions(names)
74
+ names.uniq.sort.map { |name| name.start_with?('@') ? name : "@#{name}" }
75
+ end
76
+
77
+ def resolve_ems(group_data, scopes, default_scope)
78
+ keys = scopes.flat_map { |scope| EM_KEYS.fetch(scope) { [] } }
79
+ ems = group_data.values_at(*keys).flatten.compact
80
+ ems = Array(group_data['engineering_managers']).compact if ems.empty? && default_scope
81
+ ems
82
+ end
83
+
31
84
  def categories_mapping
32
85
  @categories_mapping ||= self.class.fetch_json(WWW_GITLAB_COM_CATEGORIES_JSON)
33
86
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module GitlabQuality
4
4
  module TestTooling
5
- VERSION = "3.10.1"
5
+ VERSION = "3.12.1"
6
6
  end
7
7
  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: 3.10.1
4
+ version: 3.12.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - GitLab Quality
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-03-19 00:00:00.000000000 Z
11
+ date: 2026-04-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: climate_control
@@ -302,6 +302,26 @@ dependencies:
302
302
  - - "~>"
303
303
  - !ruby/object:Gem::Version
304
304
  version: '5.0'
305
+ - !ruby/object:Gem::Dependency
306
+ name: http-cookie
307
+ requirement: !ruby/object:Gem::Requirement
308
+ requirements:
309
+ - - ">="
310
+ - !ruby/object:Gem::Version
311
+ version: '1.0'
312
+ - - "<"
313
+ - !ruby/object:Gem::Version
314
+ version: 1.1.1
315
+ type: :runtime
316
+ prerelease: false
317
+ version_requirements: !ruby/object:Gem::Requirement
318
+ requirements:
319
+ - - ">="
320
+ - !ruby/object:Gem::Version
321
+ version: '1.0'
322
+ - - "<"
323
+ - !ruby/object:Gem::Version
324
+ version: 1.1.1
305
325
  - !ruby/object:Gem::Dependency
306
326
  name: nokogiri
307
327
  requirement: !ruby/object:Gem::Requirement