summaryrefslogtreecommitdiff
path: root/rubocop
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-11-18 13:16:36 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2021-11-18 13:16:36 +0000
commit311b0269b4eb9839fa63f80c8d7a58f32b8138a0 (patch)
tree07e7870bca8aed6d61fdcc810731c50d2c40af47 /rubocop
parent27909cef6c4170ed9205afa7426b8d3de47cbb0c (diff)
downloadgitlab-ce-14.5.0-rc42.tar.gz
Add latest changes from gitlab-org/gitlab@14-5-stable-eev14.5.0-rc42
Diffstat (limited to 'rubocop')
-rw-r--r--rubocop/cop/gitlab/bulk_insert.rb6
-rw-r--r--rubocop/cop/gitlab/change_timezone.rb (renamed from rubocop/cop/gitlab/change_timzone.rb)0
-rw-r--r--rubocop/cop/gitlab/keys_first_and_values_first.rb (renamed from rubocop/cop/gitlab/keys-first-and-values-first.rb)0
-rw-r--r--rubocop/cop/gitlab/mark_used_feature_flags.rb9
-rw-r--r--rubocop/cop/qa/duplicate_testcase_link.rb46
-rw-r--r--rubocop/rubocop.rb3
6 files changed, 60 insertions, 4 deletions
diff --git a/rubocop/cop/gitlab/bulk_insert.rb b/rubocop/cop/gitlab/bulk_insert.rb
index 4c8c232043f..baaefc2533c 100644
--- a/rubocop/cop/gitlab/bulk_insert.rb
+++ b/rubocop/cop/gitlab/bulk_insert.rb
@@ -3,13 +3,13 @@
module RuboCop
module Cop
module Gitlab
- # Cop that disallows the use of `Gitlab::Database.main.bulk_insert`, in favour of using
+ # Cop that disallows the use of `legacy_bulk_insert`, in favour of using
# the `BulkInsertSafe` module.
class BulkInsert < RuboCop::Cop::Cop
- MSG = 'Use the `BulkInsertSafe` concern, instead of using `Gitlab::Database.main.bulk_insert`. See https://docs.gitlab.com/ee/development/insert_into_tables_in_batches.html'
+ MSG = 'Use the `BulkInsertSafe` concern, instead of using `LegacyBulkInsert.bulk_insert`. See https://docs.gitlab.com/ee/development/insert_into_tables_in_batches.html'
def_node_matcher :raw_union?, <<~PATTERN
- (send (send (const (const _ :Gitlab) :Database) :main) :bulk_insert ...)
+ (send _ :legacy_bulk_insert ...)
PATTERN
def on_send(node)
diff --git a/rubocop/cop/gitlab/change_timzone.rb b/rubocop/cop/gitlab/change_timezone.rb
index c30a057d51c..c30a057d51c 100644
--- a/rubocop/cop/gitlab/change_timzone.rb
+++ b/rubocop/cop/gitlab/change_timezone.rb
diff --git a/rubocop/cop/gitlab/keys-first-and-values-first.rb b/rubocop/cop/gitlab/keys_first_and_values_first.rb
index e9bf266cdd7..e9bf266cdd7 100644
--- a/rubocop/cop/gitlab/keys-first-and-values-first.rb
+++ b/rubocop/cop/gitlab/keys_first_and_values_first.rb
diff --git a/rubocop/cop/gitlab/mark_used_feature_flags.rb b/rubocop/cop/gitlab/mark_used_feature_flags.rb
index 03ee4805f4e..d3c5cfb827e 100644
--- a/rubocop/cop/gitlab/mark_used_feature_flags.rb
+++ b/rubocop/cop/gitlab/mark_used_feature_flags.rb
@@ -255,10 +255,17 @@ module RuboCop
]
# For EE additionally process `ee/` feature flags
- if File.exist?(File.expand_path('../../../ee/app/models/license.rb', __dir__)) && !%w[true 1].include?(ENV['FOSS_ONLY'].to_s)
+ is_ee = File.exist?(File.expand_path('../../../ee/app/models/license.rb', __dir__)) && !%w[true 1].include?(ENV['FOSS_ONLY'].to_s)
+ if is_ee
flags_paths << 'ee/config/feature_flags/**/*.yml'
end
+ # For JH additionally process `jh/` feature flags
+ is_jh = is_ee && Dir.exist?(File.expand_path('../../../jh', __dir__)) && !%w[true 1].include?(ENV['EE_ONLY'].to_s)
+ if is_jh
+ flags_paths << 'jh/config/feature_flags/**/*.yml'
+ end
+
flags_paths.each_with_object([]) do |flags_path, memo|
flags_path = File.expand_path("../../../#{flags_path}", __dir__)
Dir.glob(flags_path).each do |path|
diff --git a/rubocop/cop/qa/duplicate_testcase_link.rb b/rubocop/cop/qa/duplicate_testcase_link.rb
new file mode 100644
index 00000000000..82549707a83
--- /dev/null
+++ b/rubocop/cop/qa/duplicate_testcase_link.rb
@@ -0,0 +1,46 @@
+# frozen_string_literal: true
+
+module RuboCop
+ module Cop
+ module QA
+ # This cop checks for duplicate testcase links across e2e specs
+ #
+ # @example
+ #
+ # # bad
+ # it 'some test', testcase: '(...)/quality/test_cases/1892'
+ # it 'another test, testcase: '(...)/quality/test_cases/1892'
+ #
+ # # good
+ # it 'some test', testcase: '(...)/quality/test_cases/1892'
+ # it 'another test, testcase: '(...)/quality/test_cases/1894'
+ class DuplicateTestcaseLink < RuboCop::Cop::Cop
+ MESSAGE = "Don't reuse the same testcase link in different tests. Replace one of `%s`."
+
+ @testcase_set = Set.new
+
+ def_node_matcher :duplicate_testcase_link, <<~PATTERN
+ (block
+ (send nil? ...
+ ...
+ (hash
+ (pair
+ (sym :testcase)
+ (str $_))...)...)...)
+ PATTERN
+
+ def on_block(node)
+ duplicate_testcase_link(node) do |link|
+ break unless self.class.duplicate?(link)
+
+ add_offense(node, message: MESSAGE % link)
+ end
+ end
+
+ def self.duplicate?(link)
+ !@testcase_set.add?(link)
+ end
+ end
+ end
+ end
+end
diff --git a/rubocop/rubocop.rb b/rubocop/rubocop.rb
index c8a573410d8..5a5e76a87e2 100644
--- a/rubocop/rubocop.rb
+++ b/rubocop/rubocop.rb
@@ -1,4 +1,7 @@
+# rubocop:disable Naming/FileName
# frozen_string_literal: true
# Auto-require all cops under `rubocop/cop/**/*.rb`
Dir[File.join(__dir__, 'cop', '**', '*.rb')].sort.each(&method(:require))
+
+# rubocop:enable Naming/FileName