gitlab-dangerfiles 2.2.2 → 2.4.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: 9f81554a60bebe4dbb5cec0a4499df086b580778f5bd2d82a67613a9af166a78
4
- data.tar.gz: 83c066d44caca9a1bf05386269f15d92b781891e90b1f3e709cf190faffbb773
3
+ metadata.gz: 635a5f7c76e99281a75a956cc045c25b11e0ba243dca544dfeff4c53c6665826
4
+ data.tar.gz: baf2cd3b0d5bc499f980ac031c816dbdfe656e099af9db4520ad0a282788b1c8
5
5
  SHA512:
6
- metadata.gz: d9369900511e47644c72f843f52f8b212528f1604a50a07427cab956822974ea9b71f5051a4d8313cf962a7430b9ea150c0f3deeca3ed2360542729b1f79d279
7
- data.tar.gz: 9d2cc70542f4df753a6d30d194a43c883a1960aefe517f0b1001609ec47cb764c9c90b7a166d633b7a50a4e49a046bc90cdb56b5c3ed0d02c052909458453d65
6
+ metadata.gz: 8db37fdb8728b021e63c60cf612255894d353224274010ae5ccaf7b110968c5735fbc8ec7bf936c320d6b1c0c5413ab5bd9eb925571035b824d06b6c95cd3a0f
7
+ data.tar.gz: 1c3a3d119b6be0a19d2648740038d33e1dcba3ed0821dec6c4b4be988983a8d7a45818b33c3510168a924b47950151fc0906f10887f6ac1f21388fad62bd43cb
data/README.md CHANGED
@@ -7,7 +7,7 @@ The goal of this gem is to centralize Danger plugins and rules that to be used b
7
7
  Add this line to your application's Gemfile:
8
8
 
9
9
  ```ruby
10
- gem 'gitlab-dangerfiles'
10
+ gem 'gitlab-dangerfiles', require: false
11
11
  ```
12
12
 
13
13
  And then execute:
@@ -29,6 +29,8 @@ $ gem install gitlab-dangerfiles
29
29
  In your project's `Dangerfile`, add the following two line to import the plugins and rules from this gem:
30
30
 
31
31
  ```ruby
32
+ require 'gitlab-dangerfiles'
33
+
32
34
  # Get an instance of Gitlab::Dangerfiles
33
35
  gitlab_dangerfiles = Gitlab::Dangerfiles::Engine.new(self)
34
36
 
@@ -53,7 +55,6 @@ For the full documentation about the plugins, please see https://www.rubydoc.inf
53
55
 
54
56
  ### Rules
55
57
 
56
-
57
58
  Danger rules are located under `lib/danger/rules`.
58
59
 
59
60
  #### `changes_size`
@@ -17,9 +17,13 @@ module Danger
17
17
  none: "",
18
18
  qa: "~QA",
19
19
  test: "~test ~Quality for `spec/features/*`",
20
+ # Deprecated as of 2.3.0 in favor of tooling
20
21
  engineering_productivity: '~"Engineering Productivity" for CI, Danger',
22
+ tooling: '~"type::tooling" for CI, Danger',
21
23
  ci_template: '~"ci::templates"',
22
24
  product_intelligence: '~"product intelligence"',
25
+ integrations_be: '~"group::integrations" (backend)',
26
+ integrations_fe: '~"group::integrations" (frontend)',
23
27
  }.freeze
24
28
 
25
29
  # Allows to set specific rule's configuration by passing a block.
@@ -211,7 +215,7 @@ module Danger
211
215
  # +filename_regex+ is the regex pattern to match file names. +changes_regex+ is the regex pattern to
212
216
  # match changed lines in files that match +filename_regex+
213
217
  #
214
- # @return [Array<Symbol>] the categories a file is in, e.g., +[:frontend]+, +[:backend]+, or +%i[frontend engineering_productivity]+
218
+ # @return [Array<Symbol>] the categories a file is in, e.g., +[:frontend]+, +[:backend]+, or +%i[frontend tooling]+
215
219
  # using filename regex (+filename_regex+) and specific change regex (+changes_regex+) from the given +categories+ hash.
216
220
  def categories_for_file(filename, categories)
217
221
  _, categories = categories.find do |key, _|
@@ -58,7 +58,7 @@ module Danger
58
58
  # Fetch an already picked backend reviewer, or pick one otherwise
59
59
  spin.reviewer = backend_spin&.reviewer || spin_for_category(project, :backend, timezone_experiment: including_timezone).reviewer
60
60
  end
61
- when :engineering_productivity
61
+ when :tooling, :engineering_productivity # Deprecated as of 2.3.0 in favor of tooling
62
62
  if spin.maintainer.nil?
63
63
  # Fetch an already picked backend maintainer, or pick one otherwise
64
64
  spin.maintainer = backend_spin&.maintainer || spin_for_category(project, :backend, timezone_experiment: including_timezone).maintainer
@@ -75,6 +75,8 @@ module Danger
75
75
  # Fetch an already picked maintainer, or pick one otherwise
76
76
  spin.maintainer = backend_spin&.maintainer || frontend_spin&.maintainer || spin_for_category(project, :backend, timezone_experiment: including_timezone).maintainer
77
77
  end
78
+ when :integrations_be, :integrations_fe
79
+ spin.optional_role = :maintainer
78
80
  end
79
81
  end
80
82
 
@@ -28,6 +28,10 @@ module Gitlab
28
28
  @problems = {}
29
29
  end
30
30
 
31
+ def inspect
32
+ "#{self.class}:#{object_id} @commit=#{@commit} @problems=#{@problems}"
33
+ end
34
+
31
35
  def failed?
32
36
  problems.any?
33
37
  end
@@ -9,9 +9,9 @@ module Gitlab
9
9
  MAX_CHANGED_FILES_IN_COMMIT = 3
10
10
  MAX_CHANGED_LINES_IN_COMMIT = 30
11
11
  # Issue, MR, Epic
12
- SHORT_REFERENCE_REGEX = %r{([\w\-\/]+)?(?<!`)(#|!|&)\d+(?<!`)}.freeze
12
+ SHORT_REFERENCE_REGEX = %r{(\S*([\w\-\/]+)?(?<!`)(#|!|&)\d+(?<!`))}.freeze
13
13
  # Milestone
14
- MS_SHORT_REFERENCE_REGEX = %r{([\w\-\/]+)?(?<!`)%"?\d{1,3}\.\d{1,3}"?(?<!`)}.freeze
14
+ MS_SHORT_REFERENCE_REGEX = %r{(\S*([\w\-\/]+)?(?<!`)%"?\d{1,3}\.\d{1,3}"?(?<!`))}.freeze
15
15
  SUGGESTIONS_APPLIED_COMMIT_REGEX = /Apply \d+ suggestion\(s\) to \d+ file\(s\)/.freeze
16
16
 
17
17
  def self.problems_mapping
@@ -143,8 +143,13 @@ module Gitlab
143
143
  end
144
144
 
145
145
  def message_contains_short_reference?
146
- commit.message.match?(SHORT_REFERENCE_REGEX) ||
147
- commit.message.match?(MS_SHORT_REFERENCE_REGEX)
146
+ match_data = commit.message.match(SHORT_REFERENCE_REGEX) ||
147
+ commit.message.match(MS_SHORT_REFERENCE_REGEX)
148
+
149
+ return false unless match_data
150
+
151
+ # Any URL would include "//". This works for http/https/ftp etc.
152
+ !match_data[1].include?("//")
148
153
  end
149
154
 
150
155
  def emoji_checker
@@ -49,6 +49,18 @@ module Gitlab
49
49
  has_capability?(project, category, :maintainer, labels)
50
50
  end
51
51
 
52
+ def integrations_be?(project, category, labels)
53
+ return false unless category == :integrations_be
54
+
55
+ has_capability?(project, category, :reviewer, labels)
56
+ end
57
+
58
+ def integrations_fe?(project, category, labels)
59
+ return false unless category == :integrations_fe
60
+
61
+ has_capability?(project, category, :reviewer, labels)
62
+ end
63
+
52
64
  def markdown_name(author: nil)
53
65
  "#{@markdown_name} (#{utc_offset_text(author)})"
54
66
  end
@@ -95,12 +107,18 @@ module Gitlab
95
107
  area = role[/Software Engineer in Test(?:.*?, (\w+))/, 1]
96
108
 
97
109
  area && labels.any?("devops::#{area.downcase}") if kind == :reviewer
98
- when :engineering_productivity
110
+ when :tooling, :engineering_productivity # Deprecated as of 2.3.0 in favor of tooling
99
111
  return false unless role[/Engineering Productivity/]
100
112
  return true if kind == :reviewer
101
113
  return true if capabilities(project).include?("#{kind} engineering_productivity")
102
114
 
103
115
  capabilities(project).include?("#{kind} backend")
116
+ when :integrations_be
117
+ kind == :reviewer &&
118
+ role.match?(/Backend Engineer.+Ecosystem:Integrations/)
119
+ when :integrations_fe
120
+ kind == :reviewer &&
121
+ role.match?(/Frontend Engineer.+Ecosystem:Integrations/)
104
122
  when nil
105
123
  capabilities(project).include?("#{kind}")
106
124
  else
@@ -1,5 +1,5 @@
1
1
  module Gitlab
2
2
  module Dangerfiles
3
- VERSION = "2.2.2"
3
+ VERSION = "2.4.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitlab-dangerfiles
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.2
4
+ version: 2.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - GitLab
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-07-09 00:00:00.000000000 Z
11
+ date: 2021-11-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: danger-gitlab