Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-03-20 18:19:03 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-03-20 18:19:03 +0300
commit14bd84b61276ef29b97d23642d698de769bacfd2 (patch)
treef9eba90140c1bd874211dea17750a0d422c04080 /tooling
parent891c388697b2db0d8ee0c8358a9bdbf6dc56d581 (diff)
Add latest changes from gitlab-org/gitlab@15-10-stable-eev15.10.0-rc42
Diffstat (limited to 'tooling')
-rw-r--r--tooling/danger/sidekiq_args.rb59
-rw-r--r--tooling/danger/sidekiq_queues.rb2
-rw-r--r--tooling/danger/specs.rb14
-rw-r--r--tooling/lib/tooling/find_codeowners.rb6
-rw-r--r--tooling/lib/tooling/kubernetes_client.rb26
-rw-r--r--tooling/lib/tooling/mappings/js_to_system_specs_mappings.rb1
-rw-r--r--tooling/lib/tooling/test_map_generator.rb4
7 files changed, 86 insertions, 26 deletions
diff --git a/tooling/danger/sidekiq_args.rb b/tooling/danger/sidekiq_args.rb
new file mode 100644
index 00000000000..d06bb92ca6d
--- /dev/null
+++ b/tooling/danger/sidekiq_args.rb
@@ -0,0 +1,59 @@
+# frozen_string_literal: true
+
+module Tooling
+ module Danger
+ module SidekiqArgs
+ include ::Danger::Helpers
+
+ WORKER_FILES_REGEX = 'app/workers'
+ EE_PREFIX = 'ee/'
+ DEF_PERFORM = "def perform"
+ DEF_PERFORM_REGEX = /[\s+-]*def perform\((.*)\)/
+ BEFORE_DEF_PERFORM_REGEX = /^[\s-]*def perform\b/
+ AFTER_DEF_PERFORM_REGEX = /^[\s+]*def perform\b/
+
+ SUGGEST_MR_COMMENT = <<~SUGGEST_COMMENT
+ Please follow the [sidekiq development guidelines](https://docs.gitlab.com/ee/development/sidekiq/compatibility_across_updates.html#changing-the-arguments-for-a-worker) when changing sidekiq worker arguments.
+ SUGGEST_COMMENT
+
+ def changed_worker_files(ee: :include)
+ changed_files = helper.all_changed_files
+ folder_prefix =
+ case ee
+ when :include
+ "(#{EE_PREFIX})?"
+ when :only
+ EE_PREFIX
+ when :exclude
+ nil
+ end
+
+ changed_files.grep(%r{\A#{folder_prefix}#{WORKER_FILES_REGEX}})
+ end
+
+ def args_changed?(diff)
+ # Find the "before" and "after" versions of the perform method definition
+ before_def_perform = diff.find { |line| BEFORE_DEF_PERFORM_REGEX.match?(line) }
+ after_def_perform = diff.find { |line| AFTER_DEF_PERFORM_REGEX.match?(line) }
+
+ # args are not changed if there is no before or after def perform method
+ return false unless before_def_perform && after_def_perform
+
+ # Extract the perform method arguments from the "before" and "after" versions
+ before_args, after_args = diff.flat_map { |line| line.scan(DEF_PERFORM_REGEX) }
+
+ before_args != after_args
+ end
+
+ def add_comment_for_matched_line(filename)
+ diff = helper.changed_lines(filename)
+ return unless args_changed?(diff)
+
+ file_lines = project_helper.file_lines(filename)
+
+ perform_method_line = file_lines.index { |line| line.include?(DEF_PERFORM) }
+ markdown(format(SUGGEST_MR_COMMENT), file: filename, line: perform_method_line.succ)
+ end
+ end
+ end
+end
diff --git a/tooling/danger/sidekiq_queues.rb b/tooling/danger/sidekiq_queues.rb
index ae32b128682..bd6480fcba6 100644
--- a/tooling/danger/sidekiq_queues.rb
+++ b/tooling/danger/sidekiq_queues.rb
@@ -14,7 +14,7 @@ module Tooling
def changed_queue_names
@changed_queue_names ||=
(new_queues.values_at(*old_queues.keys) - old_queues.values)
- .compact.map { |queue| queue[:name] }
+ .compact.map { |queue| queue[:name] } # rubocop:disable Rails/Pluck
end
private
diff --git a/tooling/danger/specs.rb b/tooling/danger/specs.rb
index f95a798d53e..5359e71f8cc 100644
--- a/tooling/danger/specs.rb
+++ b/tooling/danger/specs.rb
@@ -90,15 +90,17 @@ module Tooling
changed_lines.each_with_index do |changed_line, i|
next unless changed_line =~ RSPEC_TOP_LEVEL_DESCRIBE_REGEX
- next_line_in_file = file_lines[file_lines.find_index(changed_line.delete_prefix('+')) + 1]
-
- if changed_line.include?(FEATURE_CATEGORY_KEYWORD) || next_line_in_file.to_s.include?(FEATURE_CATEGORY_KEYWORD)
- next
- end
-
line_number = file_lines.find_index(changed_line.delete_prefix('+'))
next unless line_number
+ # Get the top level RSpec.describe line and the next 5 lines
+ lines_to_check = file_lines[line_number, 5]
+ # Remove all the lines after the first one that ends in `do`
+ last_line_number_of_describe_declaration = lines_to_check.index { |line| line.end_with?(' do') }
+ lines_to_check = lines_to_check[0..last_line_number_of_describe_declaration]
+
+ next if lines_to_check.any? { |line| line.include?(FEATURE_CATEGORY_KEYWORD) }
+
suggested_line = file_lines[line_number]
markdown(comment(FEATURE_CATEGORY_SUGGESTION, suggested_line), file: filename, line: line_number.succ)
diff --git a/tooling/lib/tooling/find_codeowners.rb b/tooling/lib/tooling/find_codeowners.rb
index cc37d4db1ec..e542ab9967c 100644
--- a/tooling/lib/tooling/find_codeowners.rb
+++ b/tooling/lib/tooling/find_codeowners.rb
@@ -48,11 +48,7 @@ module Tooling
def load_config
config_path = "#{__dir__}/../../config/CODEOWNERS.yml"
- if YAML.respond_to?(:safe_load_file) # Ruby 3.0+
- YAML.safe_load_file(config_path, symbolize_names: true)
- else
- YAML.safe_load(File.read(config_path), symbolize_names: true)
- end
+ YAML.safe_load_file(config_path, symbolize_names: true)
end
# Copied and modified from ee/lib/gitlab/code_owners/file.rb
diff --git a/tooling/lib/tooling/kubernetes_client.rb b/tooling/lib/tooling/kubernetes_client.rb
index ab914db5777..27eb4c8151e 100644
--- a/tooling/lib/tooling/kubernetes_client.rb
+++ b/tooling/lib/tooling/kubernetes_client.rb
@@ -35,6 +35,19 @@ module Tooling
delete_namespaces_by_exact_names(resource_names: namespaces, wait: wait)
end
+ def delete_namespaces_by_exact_names(resource_names:, wait:)
+ command = [
+ 'delete',
+ 'namespace',
+ '--now',
+ '--ignore-not-found',
+ %(--wait=#{wait}),
+ resource_names.join(' ')
+ ]
+
+ run_command(command)
+ end
+
private
def delete_by_selector(release_name:, wait:)
@@ -74,19 +87,6 @@ module Tooling
run_command(command)
end
- def delete_namespaces_by_exact_names(resource_names:, wait:)
- command = [
- 'delete',
- 'namespace',
- '--now',
- '--ignore-not-found',
- %(--wait=#{wait}),
- resource_names.join(' ')
- ]
-
- run_command(command)
- end
-
def delete_by_matching_name(release_name:)
resource_names = raw_resource_names
command = [
diff --git a/tooling/lib/tooling/mappings/js_to_system_specs_mappings.rb b/tooling/lib/tooling/mappings/js_to_system_specs_mappings.rb
index 365e466011b..e78ce266a32 100644
--- a/tooling/lib/tooling/mappings/js_to_system_specs_mappings.rb
+++ b/tooling/lib/tooling/mappings/js_to_system_specs_mappings.rb
@@ -18,6 +18,7 @@ module Tooling
@first_js_folder_extract_regexp = %r{
(?:.*/)? # Skips the GitLab edition (e.g. ee/, jh/)
#{@js_base_folder}/ # Most likely app/assets/javascripts/
+ (?:pages/)? # If under a pages folder, we capture the following folder
([\w-]*) # Captures the first folder
}x
end
diff --git a/tooling/lib/tooling/test_map_generator.rb b/tooling/lib/tooling/test_map_generator.rb
index f96f33ff074..88b4353b232 100644
--- a/tooling/lib/tooling/test_map_generator.rb
+++ b/tooling/lib/tooling/test_map_generator.rb
@@ -12,7 +12,9 @@ module Tooling
def parse(yaml_files)
Array(yaml_files).each do |yaml_file|
data = File.read(yaml_file)
- metadata, example_groups = data.split("---\n").reject(&:empty?).map { |yml| YAML.safe_load(yml, [Symbol]) }
+ metadata, example_groups = data.split("---\n").reject(&:empty?).map do |yml|
+ YAML.safe_load(yml, permitted_classes: [Symbol])
+ end
if example_groups.nil?
puts "No examples in #{yaml_file}! Metadata: #{metadata}"