gitlab-dangerfiles 2.2.0 → 2.3.1

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: 2f9d4db82aaf60ca573623de5e99c72f5518baef3181d8c854b52131ab4abf60
4
- data.tar.gz: 06bb46e9c0c500cfa1d9e3aef672d529d99f70283ed66fd87291c66117205a96
3
+ metadata.gz: 1f4f4363298e91b36384ef61e96ea5c3ff8dfa81ee3c768e60d24349ad2df7ce
4
+ data.tar.gz: cac0bdb7f5bea8b30afca63a9d70ed1c081abf0e5d16101f08fbc9276764698d
5
5
  SHA512:
6
- metadata.gz: 57da7c2b5d0bb5c47fff3b663d9fa9d3465b7eec5d343423148b11f78079224c5d8682692863ec9736fdccbd42cccf3e3127a7b85ce3f2973baa8108421e6ed0
7
- data.tar.gz: be63b6430ab6bf1e4cfab3ee6849355331ccedb340a1fcdf1a4347c254a6c52c1feea88a3f9e67d2c2d3bd1aa734f22b59fca852558e788a5e4353b8f4456572
6
+ metadata.gz: 3b201247f2fa32c72063c18db9533be9a2244b090dfe64bfe825497f298e747f1b511e91f83cfe58c51c79673283c174ccbfc419acd85d766b21b38c321f5e54
7
+ data.tar.gz: c84b0389e48d61c4c686049a55c94edffb5d30c400195411a829857711110ea3cc98ef53d7c6a37267725e667bc7618ecc17d6264258cef091302bfdf5c4be4c
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
 
@@ -17,7 +17,9 @@ 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: "~tooling for CI, Danger",
21
23
  ci_template: '~"ci::templates"',
22
24
  product_intelligence: '~"product intelligence"',
23
25
  }.freeze
@@ -211,7 +213,7 @@ module Danger
211
213
  # +filename_regex+ is the regex pattern to match file names. +changes_regex+ is the regex pattern to
212
214
  # match changed lines in files that match +filename_regex+
213
215
  #
214
- # @return [Array<Symbol>] the categories a file is in, e.g., +[:frontend]+, +[:backend]+, or +%i[frontend engineering_productivity]+
216
+ # @return [Array<Symbol>] the categories a file is in, e.g., +[:frontend]+, +[:backend]+, or +%i[frontend tooling]+
215
217
  # using filename regex (+filename_regex+) and specific change regex (+changes_regex+) from the given +categories+ hash.
216
218
  def categories_for_file(filename, categories)
217
219
  _, 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
@@ -5,7 +5,7 @@ require_relative "../../../gitlab/dangerfiles/merge_request_linter"
5
5
 
6
6
  COMMIT_MESSAGE_GUIDELINES = "https://docs.gitlab.com/ee/development/contributing/merge_request_workflow.html#commit-messages-guidelines"
7
7
  MORE_INFO = "For more information, take a look at our [Commit message guidelines](#{COMMIT_MESSAGE_GUIDELINES})."
8
- THE_DANGER_JOB_TEXT = "the `%<job_name>` job"
8
+ THE_DANGER_JOB_TEXT = "the `%<job_name>s` job"
9
9
  MAX_COMMITS_COUNT = helper.config.max_commits_count
10
10
  MAX_COMMITS_COUNT_EXCEEDED_MESSAGE = <<~MSG
11
11
  This merge request includes more than %<max_commits_count>d commits. Each commit should meet the following criteria:
@@ -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
@@ -104,7 +104,7 @@ RSpec.shared_context "with dangerfile" do
104
104
  end
105
105
 
106
106
  let(:fake_git) { double("fake-git", added_files: added_files, modified_files: modified_files, deleted_files: deleted_files, renamed_files: renamed_files) }
107
- let(:fake_helper) { double("fake-helper", changes: changes, mr_iid: 1234, mr_title: mr_title, mr_labels: mr_labels) }
107
+ let(:fake_helper) { double("fake-helper", changes: changes, added_files: added_files, modified_files: modified_files, deleted_files: deleted_files, renamed_files: renamed_files, mr_iid: 1234, mr_title: mr_title, mr_labels: mr_labels) }
108
108
 
109
109
  before do
110
110
  allow(dangerfile).to receive(:git).and_return(fake_git)
@@ -95,7 +95,7 @@ module Gitlab
95
95
  area = role[/Software Engineer in Test(?:.*?, (\w+))/, 1]
96
96
 
97
97
  area && labels.any?("devops::#{area.downcase}") if kind == :reviewer
98
- when :engineering_productivity
98
+ when :tooling, :engineering_productivity # Deprecated as of 2.3.0 in favor of tooling
99
99
  return false unless role[/Engineering Productivity/]
100
100
  return true if kind == :reviewer
101
101
  return true if capabilities(project).include?("#{kind} engineering_productivity")
@@ -1,5 +1,5 @@
1
1
  module Gitlab
2
2
  module Dangerfiles
3
- VERSION = "2.2.0"
3
+ VERSION = "2.3.1"
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.0
4
+ version: 2.3.1
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-06 00:00:00.000000000 Z
11
+ date: 2021-09-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: danger-gitlab