diff options
Diffstat (limited to 'spec/support')
146 files changed, 13578 insertions, 832 deletions
diff --git a/spec/support/capybara.rb b/spec/support/capybara.rb index 14ef0f1b7e0..a5d845f5177 100644 --- a/spec/support/capybara.rb +++ b/spec/support/capybara.rb @@ -72,6 +72,12 @@ Capybara.register_driver :chrome do |app| # Explicitly set user-data-dir to prevent crashes. See https://gitlab.com/gitlab-org/gitlab-foss/issues/58882#note_179811508 options.add_argument("user-data-dir=/tmp/chrome") if ENV['CI'] || ENV['CI_SERVER'] + # Set chrome default download path + if ENV['DEFAULT_CHROME_DOWNLOAD_PATH'] + options.add_preference("download.default_directory", ENV['DEFAULT_CHROME_DOWNLOAD_PATH']) + options.add_preference("download.prompt_for_download", false) + end + # Chrome 75 defaults to W3C mode which doesn't allow console log access options.add_option(:w3c, false) diff --git a/spec/support/database/without_check_constraint.rb b/spec/support/database/without_check_constraint.rb new file mode 100644 index 00000000000..b361f4374b8 --- /dev/null +++ b/spec/support/database/without_check_constraint.rb @@ -0,0 +1,52 @@ +# frozen_string_literal: true + +# Temporarily disable the named constraint on the table within the block. +# +# without_constraint('members', 'check_1234') do +# create_invalid_data +# end +module Database + module WithoutCheckConstraint + def without_check_constraint(table, name, connection:) + saved_constraint = constraint(table, name, connection) + + constraint_error!(table, name, connection) if saved_constraint.nil? + + begin + connection.remove_check_constraint(table, name: name) + connection.transaction do + yield + raise ActiveRecord::Rollback + end + ensure + restore_constraint(saved_constraint, connection) + end + end + + private + + def constraint_error!(table, name, connection) + msg = if connection.table_exists?(table) + "'#{table}' table does not contain constraint called '#{name}'" + else + "'#{table}' does not exist" + end + + raise msg + end + + def constraint(table, name, connection) + connection + .check_constraints(table) + .find { |constraint| constraint.options[:name] == name } + end + + def restore_constraint(constraint, connection) + connection.add_check_constraint( + constraint.table_name, + constraint.expression, + **constraint.options + ) + end + end +end diff --git a/spec/support/gitlab_stubs/gitlab_ci.yml b/spec/support/gitlab_stubs/gitlab_ci.yml index b1533879e32..b6a66cfa2c6 100644 --- a/spec/support/gitlab_stubs/gitlab_ci.yml +++ b/spec/support/gitlab_stubs/gitlab_ci.yml @@ -8,6 +8,9 @@ before_script: variables: DB_NAME: postgres + ENVIRONMENT_VAR: + value: 'env var value' + description: 'env var description' stages: - test diff --git a/spec/support/helpers/api_internal_base_helpers.rb b/spec/support/helpers/api_internal_base_helpers.rb index 94996f7480e..e89716571f9 100644 --- a/spec/support/helpers/api_internal_base_helpers.rb +++ b/spec/support/helpers/api_internal_base_helpers.rb @@ -1,6 +1,10 @@ # frozen_string_literal: true +require_relative 'gitlab_shell_helpers' + module APIInternalBaseHelpers + include GitlabShellHelpers + def gl_repository_for(container) case container when ProjectWiki @@ -33,9 +37,9 @@ module APIInternalBaseHelpers project: full_path_for(container), gl_repository: gl_repository_for(container), action: 'git-upload-pack', - secret_token: secret_token, protocol: protocol - } + }, + headers: gitlab_shell_internal_api_request_header ) end @@ -56,7 +60,6 @@ module APIInternalBaseHelpers key_id: key.id, project: full_path, action: 'git-receive-pack', - secret_token: secret_token, protocol: protocol, env: env } @@ -64,7 +67,8 @@ module APIInternalBaseHelpers post( api("/internal/allowed"), - params: params + params: params, + headers: gitlab_shell_internal_api_request_header ) end @@ -77,9 +81,9 @@ module APIInternalBaseHelpers project: full_path_for(container), gl_repository: gl_repository_for(container), action: 'git-upload-archive', - secret_token: secret_token, protocol: 'ssh' - } + }, + headers: gitlab_shell_internal_api_request_header ) end end diff --git a/spec/support/helpers/ci/template_helpers.rb b/spec/support/helpers/ci/template_helpers.rb index 119f8d001a1..2e9b6f748cd 100644 --- a/spec/support/helpers/ci/template_helpers.rb +++ b/spec/support/helpers/ci/template_helpers.rb @@ -2,10 +2,6 @@ module Ci module TemplateHelpers - def secure_analyzers_prefix - 'registry.gitlab.com/security-products' - end - def template_registry_host 'registry.gitlab.com' end diff --git a/spec/support/helpers/create_environments_helpers.rb b/spec/support/helpers/create_environments_helpers.rb index be105f5862b..361d365dc5b 100644 --- a/spec/support/helpers/create_environments_helpers.rb +++ b/spec/support/helpers/create_environments_helpers.rb @@ -7,7 +7,7 @@ module CreateEnvironmentsHelpers start_review = create(:ci_build, :start_review_app, :success, **common, pipeline: pipeline) stop_review = create(:ci_build, :stop_review_app, :manual, **common, pipeline: pipeline) environment = create(:environment, :auto_stoppable, project: project, name: ref) - create(:deployment, :success, **common, on_stop: stop_review.name, - deployable: start_review, environment: environment) + create(:deployment, :success, **common, + on_stop: stop_review.name, deployable: start_review, environment: environment) end end diff --git a/spec/support/helpers/cycle_analytics_helpers.rb b/spec/support/helpers/cycle_analytics_helpers.rb index 05e9a099a2b..6d41d7b7414 100644 --- a/spec/support/helpers/cycle_analytics_helpers.rb +++ b/spec/support/helpers/cycle_analytics_helpers.rb @@ -7,7 +7,7 @@ module CycleAnalyticsHelpers def path_nav_stage_names_without_median # Returns the path names with the median value stripped out - page.all('.gl-path-button').collect(&:text).map {|name_with_median| name_with_median.split("\n")[0] } + page.all('.gl-path-button').collect(&:text).map { |name_with_median| name_with_median.split("\n")[0] } end def fill_in_custom_stage_fields diff --git a/spec/support/helpers/database/partitioning_helpers.rb b/spec/support/helpers/database/partitioning_helpers.rb index 80b31fe0603..889652a9252 100644 --- a/spec/support/helpers/database/partitioning_helpers.rb +++ b/spec/support/helpers/database/partitioning_helpers.rb @@ -79,8 +79,8 @@ module Database SQL end - def find_partitions(partition, schema: Gitlab::Database::DYNAMIC_PARTITIONS_SCHEMA) - connection.select_rows(<<~SQL) + def find_partitions(partition, schema: Gitlab::Database::DYNAMIC_PARTITIONS_SCHEMA, conn: connection) + conn.select_rows(<<~SQL) select pg_class.relname from pg_class diff --git a/spec/support/helpers/gitlab_shell_helpers.rb b/spec/support/helpers/gitlab_shell_helpers.rb new file mode 100644 index 00000000000..aa0cec22727 --- /dev/null +++ b/spec/support/helpers/gitlab_shell_helpers.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +module GitlabShellHelpers + extend self + + def gitlab_shell_internal_api_request_header( + issuer: API::Helpers::GITLAB_SHELL_JWT_ISSUER, secret_token: Gitlab::Shell.secret_token) + jwt_token = JSONWebToken::HMACToken.new(secret_token).tap do |token| + token.issuer = issuer + end + + { API::Helpers::GITLAB_SHELL_API_HEADER => jwt_token.encoded } + end +end diff --git a/spec/support/helpers/graphql_helpers.rb b/spec/support/helpers/graphql_helpers.rb index d78c523decd..9d745f2cb70 100644 --- a/spec/support/helpers/graphql_helpers.rb +++ b/spec/support/helpers/graphql_helpers.rb @@ -130,11 +130,12 @@ module GraphqlHelpers current_user: :not_given, # The current user (specified explicitly, overrides ctx[:current_user]) schema: GitlabSchema, # A specific schema instance object_type: described_class, # The `BaseObject` type this field belongs to - arg_style: :internal_prepared # Args are in internal format, but should use more rigorous processing + arg_style: :internal_prepared, # Args are in internal format, but should use more rigorous processing + query: nil # Query to evaluate the field ) field = to_base_field(field, object_type) ctx[:current_user] = current_user unless current_user == :not_given - query = GraphQL::Query.new(schema, context: ctx.to_h) + query ||= GraphQL::Query.new(schema, context: ctx.to_h) extras[:lookahead] = negative_lookahead if extras[:lookahead] == :not_given && field.extras.include?(:lookahead) query_ctx = query.context @@ -857,6 +858,8 @@ module GraphqlHelpers def positive_lookahead double(selects?: true).tap do |selection| allow(selection).to receive(:selection).and_return(selection) + allow(selection).to receive(:selections).and_return(selection) + allow(selection).to receive(:map).and_return(double(include?: true)) end end diff --git a/spec/support/helpers/html_escaped_helpers.rb b/spec/support/helpers/html_escaped_helpers.rb new file mode 100644 index 00000000000..7f6825e9598 --- /dev/null +++ b/spec/support/helpers/html_escaped_helpers.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +module HtmlEscapedHelpers + extend self + + # Checks if +content+ contains HTML escaped tags and returns its match. + # + # It matches escaped opening and closing tags `<<name>` and + # `</<name>`. The match is discarded if the tag is inside a quoted + # attribute value. + # Foor example, `<div title="We allow # <b>bold</b>">`. + # + # @return [MatchData, nil] Returns the match or +nil+ if no match was found. + def match_html_escaped_tags(content) + match_data = %r{<\s*(?:/\s*)?\w+}.match(content) + return unless match_data + + # Escaped HTML tags are allowed inside quoted attribute values like: + # `title="Press <back>"` + return if %r{=\s*["'][^>]*\z}.match?(match_data.pre_match) + + match_data + end +end diff --git a/spec/support/helpers/javascript_form_helper.rb b/spec/support/helpers/javascript_form_helper.rb new file mode 100644 index 00000000000..41c5ba4373b --- /dev/null +++ b/spec/support/helpers/javascript_form_helper.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +module JavascriptFormHelper + def prevent_submit_for(query_selector) + execute_script("document.querySelector('#{query_selector}').addEventListener('submit', e => e.preventDefault())") + end +end diff --git a/spec/support/helpers/kubernetes_helpers.rb b/spec/support/helpers/kubernetes_helpers.rb index dd210f02ae7..912e7d24b25 100644 --- a/spec/support/helpers/kubernetes_helpers.rb +++ b/spec/support/helpers/kubernetes_helpers.rb @@ -880,7 +880,7 @@ module KubernetesHelpers containers.map do |container| terminal = { selectors: { pod: pod_name, container: container['name'] }, - url: container_exec_url(service.api_url, pod_namespace, pod_name, container['name']), + url: container_exec_url(service.api_url, pod_namespace, pod_name, container['name']), subprotocols: ['channel.k8s.io'], headers: { 'Authorization' => ["Bearer #{service.token}"] }, created_at: DateTime.parse(pod['metadata']['creationTimestamp']), diff --git a/spec/support/helpers/login_helpers.rb b/spec/support/helpers/login_helpers.rb index d966fd13dca..87a1f5459ec 100644 --- a/spec/support/helpers/login_helpers.rb +++ b/spec/support/helpers/login_helpers.rb @@ -122,7 +122,7 @@ module LoginHelpers def register_via(provider, uid, email, additional_info: {}) mock_auth_hash(provider, uid, email, additional_info: additional_info) visit new_user_registration_path - expect(page).to have_content('Create an account using') + expect(page).to have_content('Create an account using').or(have_content('Register with')) click_link_or_button "oauth-login-#{provider}" end diff --git a/spec/support/helpers/migrations_helpers/work_item_types_helper.rb b/spec/support/helpers/migrations_helpers/work_item_types_helper.rb index 59b1f1b1305..b05caf265ee 100644 --- a/spec/support/helpers/migrations_helpers/work_item_types_helper.rb +++ b/spec/support/helpers/migrations_helpers/work_item_types_helper.rb @@ -3,11 +3,11 @@ module MigrationHelpers module WorkItemTypesHelper DEFAULT_WORK_ITEM_TYPES = { - issue: { name: 'Issue', icon_name: 'issue-type-issue', enum_value: 0 }, - incident: { name: 'Incident', icon_name: 'issue-type-incident', enum_value: 1 }, - test_case: { name: 'Test Case', icon_name: 'issue-type-test-case', enum_value: 2 }, + issue: { name: 'Issue', icon_name: 'issue-type-issue', enum_value: 0 }, + incident: { name: 'Incident', icon_name: 'issue-type-incident', enum_value: 1 }, + test_case: { name: 'Test Case', icon_name: 'issue-type-test-case', enum_value: 2 }, requirement: { name: 'Requirement', icon_name: 'issue-type-requirements', enum_value: 3 }, - task: { name: 'Task', icon_name: 'issue-type-task', enum_value: 4 } + task: { name: 'Task', icon_name: 'issue-type-task', enum_value: 4 } }.freeze def reset_work_item_types diff --git a/spec/support/helpers/navbar_structure_helper.rb b/spec/support/helpers/navbar_structure_helper.rb index e11548d0b75..b44552d6479 100644 --- a/spec/support/helpers/navbar_structure_helper.rb +++ b/spec/support/helpers/navbar_structure_helper.rb @@ -34,7 +34,7 @@ module NavbarStructureHelper insert_after_nav_item( within, new_nav_item: { - nav_item: _('Packages & Registries'), + nav_item: _('Packages and registries'), nav_sub_items: [_('Package Registry')] } ) @@ -56,7 +56,7 @@ module NavbarStructureHelper def insert_container_nav insert_after_sub_nav_item( _('Package Registry'), - within: _('Packages & Registries'), + within: _('Packages and registries'), new_sub_nav_item_name: _('Container Registry') ) end @@ -64,7 +64,7 @@ module NavbarStructureHelper def insert_dependency_proxy_nav insert_after_sub_nav_item( _('Package Registry'), - within: _('Packages & Registries'), + within: _('Packages and registries'), new_sub_nav_item_name: _('Dependency Proxy') ) end @@ -72,7 +72,7 @@ module NavbarStructureHelper def insert_infrastructure_registry_nav insert_after_sub_nav_item( _('Package Registry'), - within: _('Packages & Registries'), + within: _('Packages and registries'), new_sub_nav_item_name: _('Infrastructure Registry') ) end @@ -80,11 +80,21 @@ module NavbarStructureHelper def insert_harbor_registry_nav(within) insert_after_sub_nav_item( within, - within: _('Packages & Registries'), + within: _('Packages and registries'), new_sub_nav_item_name: _('Harbor Registry') ) end + def insert_observability_nav + insert_after_nav_item( + _('Kubernetes'), + new_nav_item: { + nav_item: _('Observability'), + nav_sub_items: [] + } + ) + end + def insert_infrastructure_google_cloud_nav insert_after_sub_nav_item( _('Terraform'), diff --git a/spec/support/helpers/seed_helper.rb b/spec/support/helpers/seed_helper.rb index 59723583cbc..9628762d46a 100644 --- a/spec/support/helpers/seed_helper.rb +++ b/spec/support/helpers/seed_helper.rb @@ -29,8 +29,8 @@ module SeedHelper def create_bare_seeds system(git_env, *%W(#{Gitlab.config.git.bin_path} clone --bare #{GITLAB_GIT_TEST_REPO_URL}), chdir: SEED_STORAGE_PATH, - out: '/dev/null', - err: '/dev/null') + out: '/dev/null', + err: '/dev/null') end def create_normal_seeds diff --git a/spec/support/helpers/snowplow_helpers.rb b/spec/support/helpers/snowplow_helpers.rb index c8b194919ed..265e1c38b09 100644 --- a/spec/support/helpers/snowplow_helpers.rb +++ b/spec/support/helpers/snowplow_helpers.rb @@ -7,7 +7,7 @@ module SnowplowHelpers # # Examples: # - # describe '#show', :snowplow do + # describe '#show' do # it 'tracks snowplow events' do # get :show # @@ -15,7 +15,7 @@ module SnowplowHelpers # end # end # - # describe '#create', :snowplow do + # describe '#create' do # it 'tracks snowplow events' do # post :create # diff --git a/spec/support/helpers/stub_configuration.rb b/spec/support/helpers/stub_configuration.rb index 20f46396424..c08e35912c3 100644 --- a/spec/support/helpers/stub_configuration.rb +++ b/spec/support/helpers/stub_configuration.rb @@ -104,6 +104,10 @@ module StubConfiguration .to receive(:sentry_clientside_dsn) { clientside_dsn } end + def stub_microsoft_graph_mailer_setting(messages) + allow(Gitlab.config.microsoft_graph_mailer).to receive_messages(to_settings(messages)) + end + def stub_kerberos_setting(messages) allow(Gitlab.config.kerberos).to receive_messages(to_settings(messages)) end diff --git a/spec/support/helpers/stub_object_storage.rb b/spec/support/helpers/stub_object_storage.rb index 024f06cae1b..661c1c683b0 100644 --- a/spec/support/helpers/stub_object_storage.rb +++ b/spec/support/helpers/stub_object_storage.rb @@ -3,8 +3,8 @@ module StubObjectStorage def stub_dependency_proxy_object_storage(**params) stub_object_storage_uploader(config: ::Gitlab.config.dependency_proxy.object_store, - uploader: ::DependencyProxy::FileUploader, - **params) + uploader: ::DependencyProxy::FileUploader, + **params) end def stub_object_storage_uploader( diff --git a/spec/support/helpers/test_env.rb b/spec/support/helpers/test_env.rb index 03e9ad1a08e..691f978550a 100644 --- a/spec/support/helpers/test_env.rb +++ b/spec/support/helpers/test_env.rb @@ -10,85 +10,86 @@ module TestEnv # When developing the seed repository, comment out the branch you will modify. BRANCH_SHA = { - 'signed-commits' => 'c7794c1', - 'not-merged-branch' => 'b83d6e3', - 'branch-merged' => '498214d', - 'empty-branch' => '7efb185', - 'ends-with.json' => '98b0d8b', - 'flatten-dir' => 'e56497b', - 'feature' => '0b4bc9a', - 'feature_conflict' => 'bb5206f', - 'fix' => '48f0be4', - 'improve/awesome' => '5937ac0', - 'merged-target' => '21751bf', - 'markdown' => '0ed8c6c', - 'lfs' => '55bc176', - 'master' => 'b83d6e3', - 'merge-test' => '5937ac0', - "'test'" => 'e56497b', - 'orphaned-branch' => '45127a9', - 'binary-encoding' => '7b1cf43', - 'gitattributes' => '5a62481', - 'expand-collapse-diffs' => '4842455', - 'symlink-expand-diff' => '81e6355', - 'diff-files-symlink-to-image' => '8cfca84', - 'diff-files-image-to-symlink' => '3e94fda', - 'diff-files-symlink-to-text' => '689815e', - 'diff-files-text-to-symlink' => '5e2c270', - 'expand-collapse-files' => '025db92', - 'expand-collapse-lines' => '238e82d', - 'pages-deploy' => '7897d5b', - 'pages-deploy-target' => '7975be0', - 'audio' => 'c3c21fd', - 'video' => '8879059', - 'crlf-diff' => '5938907', - 'conflict-start' => '824be60', - 'conflict-resolvable' => '1450cd6', - 'conflict-binary-file' => '259a6fb', + 'signed-commits' => 'c7794c1', + 'not-merged-branch' => 'b83d6e3', + 'branch-merged' => '498214d', + 'empty-branch' => '7efb185', + 'ends-with.json' => '98b0d8b', + 'flatten-dir' => 'e56497b', + 'feature' => '0b4bc9a', + 'feature_conflict' => 'bb5206f', + 'fix' => '48f0be4', + 'improve/awesome' => '5937ac0', + 'merged-target' => '21751bf', + 'markdown' => '0ed8c6c', + 'lfs' => '55bc176', + 'master' => 'b83d6e391c22777fca1ed3012fce84f633d7fed0', + 'merge-test' => '5937ac0', + "'test'" => 'e56497b', + 'orphaned-branch' => '45127a9', + 'binary-encoding' => '7b1cf43', + 'gitattributes' => '5a62481', + 'expand-collapse-diffs' => '4842455', + 'symlink-expand-diff' => '81e6355', + 'diff-files-symlink-to-image' => '8cfca84', + 'diff-files-image-to-symlink' => '3e94fda', + 'diff-files-symlink-to-text' => '689815e', + 'diff-files-text-to-symlink' => '5e2c270', + 'expand-collapse-files' => '025db92', + 'expand-collapse-lines' => '238e82d', + 'pages-deploy' => '7897d5b', + 'pages-deploy-target' => '7975be0', + 'audio' => 'c3c21fd', + 'video' => '8879059', + 'crlf-diff' => '5938907', + 'conflict-start' => '824be60', + 'conflict-resolvable' => '1450cd6', + 'conflict-binary-file' => '259a6fb', 'conflict-contains-conflict-markers' => '78a3086', - 'conflict-missing-side' => 'eb227b3', - 'conflict-non-utf8' => 'd0a293c', - 'conflict-too-large' => '39fa04f', - 'deleted-image-test' => '6c17798', - 'wip' => 'b9238ee', - 'csv' => '3dd0896', - 'v1.1.0' => 'b83d6e3', - 'add-ipython-files' => '4963fef', - 'add-pdf-file' => 'e774ebd', - 'squash-large-files' => '54cec52', - 'add-pdf-text-binary' => '79faa7b', - 'add_images_and_changes' => '010d106', - 'update-gitlab-shell-v-6-0-1' => '2f61d70', - 'update-gitlab-shell-v-6-0-3' => 'de78448', - 'merge-commit-analyze-before' => '1adbdef', - 'merge-commit-analyze-side-branch' => '8a99451', - 'merge-commit-analyze-after' => '646ece5', - 'snippet/single-file' => '43e4080aaa14fc7d4b77ee1f5c9d067d5a7df10e', - 'snippet/multiple-files' => '40232f7eb98b3f221886432def6e8bab2432add9', - 'snippet/rename-and-edit-file' => '220a1e4b4dff37feea0625a7947a4c60fbe78365', - 'snippet/edit-file' => 'c2f074f4f26929c92795a75775af79a6ed6d8430', - 'snippet/no-files' => '671aaa842a4875e5f30082d1ab6feda345fdb94d', - '2-mb-file' => 'bf12d25', - 'before-create-delete-modify-move' => '845009f', - 'between-create-delete-modify-move' => '3f5f443', - 'after-create-delete-modify-move' => 'ba3faa7', - 'with-codeowners' => '219560e', - 'submodule_inside_folder' => 'b491b92', - 'png-lfs' => 'fe42f41', - 'sha-starting-with-large-number' => '8426165', - 'invalid-utf8-diff-paths' => '99e4853', - 'compare-with-merge-head-source' => 'f20a03d', - 'compare-with-merge-head-target' => '2f1e176', - 'trailers' => 'f0a5ed6', - 'add_commit_with_5mb_subject' => '8cf8e80', - 'blame-on-renamed' => '32c33da', - 'with-executables' => '6b8dc4a', - 'spooky-stuff' => 'ba3343b', - 'few-commits' => '0031876', - 'two-commits' => '304d257', - 'utf-16' => 'f05a987', - 'gitaly-rename-test' => '94bb47c', - 'smime-signed-commits' => 'ed775cc' + 'conflict-missing-side' => 'eb227b3', + 'conflict-non-utf8' => 'd0a293c', + 'conflict-too-large' => '39fa04f', + 'deleted-image-test' => '6c17798', + 'wip' => 'b9238ee', + 'csv' => '3dd0896', + 'v1.1.0' => 'b83d6e3', + 'add-ipython-files' => '4963fef', + 'add-pdf-file' => 'e774ebd', + 'squash-large-files' => '54cec52', + 'add-pdf-text-binary' => '79faa7b', + 'add_images_and_changes' => '010d106', + 'update-gitlab-shell-v-6-0-1' => '2f61d70', + 'update-gitlab-shell-v-6-0-3' => 'de78448', + 'merge-commit-analyze-before' => '1adbdef', + 'merge-commit-analyze-side-branch' => '8a99451', + 'merge-commit-analyze-after' => '646ece5', + 'snippet/single-file' => '43e4080aaa14fc7d4b77ee1f5c9d067d5a7df10e', + 'snippet/multiple-files' => '40232f7eb98b3f221886432def6e8bab2432add9', + 'snippet/rename-and-edit-file' => '220a1e4b4dff37feea0625a7947a4c60fbe78365', + 'snippet/edit-file' => 'c2f074f4f26929c92795a75775af79a6ed6d8430', + 'snippet/no-files' => '671aaa842a4875e5f30082d1ab6feda345fdb94d', + '2-mb-file' => 'bf12d25', + 'before-create-delete-modify-move' => '845009f', + 'between-create-delete-modify-move' => '3f5f443', + 'after-create-delete-modify-move' => 'ba3faa7', + 'with-codeowners' => '219560e', + 'submodule_inside_folder' => 'b491b92', + 'png-lfs' => 'fe42f41', + 'sha-starting-with-large-number' => '8426165', + 'invalid-utf8-diff-paths' => '99e4853', + 'compare-with-merge-head-source' => 'f20a03d', + 'compare-with-merge-head-target' => '2f1e176', + 'trailers' => 'f0a5ed6', + 'add_commit_with_5mb_subject' => '8cf8e80', + 'blame-on-renamed' => '32c33da', + 'with-executables' => '6b8dc4a', + 'spooky-stuff' => 'ba3343b', + 'few-commits' => '0031876', + 'two-commits' => '304d257', + 'utf-16' => 'f05a987', + 'gitaly-rename-test' => '94bb47c', + 'smime-signed-commits' => 'ed775cc', + 'Ääh-test-utf-8' => '7975be0' }.freeze # gitlab-test-fork is a fork of gitlab-fork, but we don't necessarily @@ -96,9 +97,9 @@ module TestEnv # We currently only need a subset of the branches FORKED_BRANCH_SHA = { 'add-submodule-version-bump' => '3f547c0', - 'master' => '5937ac0', - 'remove-submodule' => '2a33e0c', - 'conflict-resolvable-fork' => '404fa3f' + 'master' => '5937ac0', + 'remove-submodule' => '2a33e0c', + 'conflict-resolvable-fork' => '404fa3f' }.freeze TMP_TEST_PATH = Rails.root.join('tmp', 'tests').freeze diff --git a/spec/support/helpers/usage_data_helpers.rb b/spec/support/helpers/usage_data_helpers.rb index 2a9144614d0..1aea3545ae0 100644 --- a/spec/support/helpers/usage_data_helpers.rb +++ b/spec/support/helpers/usage_data_helpers.rb @@ -6,22 +6,14 @@ module UsageDataHelpers snippet_update snippet_comment merge_request_comment - merge_request_create commit_comment wiki_pages_create wiki_pages_update wiki_pages_delete - web_ide_views - web_ide_commits - web_ide_merge_requests - web_ide_previews navbar_searches cycle_analytics_views productivity_analytics_views source_code_pushes - design_management_designs_create - design_management_designs_update - design_management_designs_delete ).freeze COUNTS_KEYS = %i( @@ -126,7 +118,6 @@ module UsageDataHelpers uploads web_hooks user_preferences_user_gitpod_enabled - service_usage_data_download_payload_click ).push(*SMAU_KEYS) USAGE_DATA_KEYS = %i( @@ -193,11 +184,11 @@ module UsageDataHelpers allow(Settings).to receive(:[]).with('artifacts') .and_return( { 'enabled' => true, - 'object_store' => + 'object_store' => { 'enabled' => true, - 'remote_directory' => 'artifacts', - 'direct_upload' => true, - 'connection' => + 'remote_directory' => 'artifacts', + 'direct_upload' => true, + 'connection' => { 'provider' => 'AWS', 'aws_access_key_id' => 'minio', 'aws_secret_access_key' => 'gdk-minio', 'region' => 'gdk', 'endpoint' => 'http://127.0.0.1:9000', 'path_style' => true }, 'background_upload' => false, 'proxy_download' => false } } @@ -208,11 +199,11 @@ module UsageDataHelpers allow(Settings).to receive(:[]).with('lfs') .and_return( { 'enabled' => true, - 'object_store' => + 'object_store' => { 'enabled' => false, - 'remote_directory' => 'lfs-objects', - 'direct_upload' => true, - 'connection' => + 'remote_directory' => 'lfs-objects', + 'direct_upload' => true, + 'connection' => { 'provider' => 'AWS', 'aws_access_key_id' => 'minio', 'aws_secret_access_key' => 'gdk-minio', 'region' => 'gdk', 'endpoint' => 'http://127.0.0.1:9000', 'path_style' => true }, 'background_upload' => false, 'proxy_download' => false } } @@ -221,21 +212,21 @@ module UsageDataHelpers .and_return( { 'object_store' => { 'enabled' => false, - 'remote_directory' => 'uploads', - 'direct_upload' => true, - 'connection' => + 'remote_directory' => 'uploads', + 'direct_upload' => true, + 'connection' => { 'provider' => 'AWS', 'aws_access_key_id' => 'minio', 'aws_secret_access_key' => 'gdk-minio', 'region' => 'gdk', 'endpoint' => 'http://127.0.0.1:9000', 'path_style' => true }, - 'background_upload' => false, - 'proxy_download' => false } } + 'background_upload' => false, + 'proxy_download' => false } } ) allow(Settings).to receive(:[]).with('packages') .and_return( { 'enabled' => true, - 'object_store' => + 'object_store' => { 'enabled' => false, - 'remote_directory' => 'packages', - 'direct_upload' => false, - 'connection' => + 'remote_directory' => 'packages', + 'direct_upload' => false, + 'connection' => { 'provider' => 'AWS', 'aws_access_key_id' => 'minio', 'aws_secret_access_key' => 'gdk-minio', 'region' => 'gdk', 'endpoint' => 'http://127.0.0.1:9000', 'path_style' => true }, 'background_upload' => true, 'proxy_download' => false } } diff --git a/spec/support/matchers/abort_matcher.rb b/spec/support/matchers/abort_matcher.rb index 64fed2ca069..140953cdc42 100644 --- a/spec/support/matchers/abort_matcher.rb +++ b/spec/support/matchers/abort_matcher.rb @@ -13,17 +13,16 @@ RSpec::Matchers.define :abort_execution do captured = @captured_stderr.string.chomp @actual_exit_code = e.status break false unless e.status == 1 - - if @message - if @message.is_a? String - @message == captured - elsif @message.is_a? Regexp - @message.match?(captured) - else - raise ArgumentError, 'with_message must be either a String or a Regular Expression' - end + break true unless @message + + case @message + when String + @message == captured + when Regexp + @message.match?(captured) + else + raise ArgumentError, 'with_message must be either a String or a Regular Expression' end - ensure $stderr = original_stderr end diff --git a/spec/support/matchers/graphql_matchers.rb b/spec/support/matchers/graphql_matchers.rb index e6d820104be..db7d4269945 100644 --- a/spec/support/matchers/graphql_matchers.rb +++ b/spec/support/matchers/graphql_matchers.rb @@ -230,3 +230,61 @@ RSpec::Matchers.define :expose_permissions_using do |expected| expect(permission_field.type.of_type.graphql_name).to eq(expected.graphql_name) end end + +RSpec::Matchers.define :have_graphql_name do |expected| + def graphql_name(object) + object.graphql_name if object.respond_to?(:graphql_name) + end + + match do |object| + name = graphql_name(object) + + begin + if expected.present? + expect(name).to eq(expected) + else + expect(expected).to be_present + end + rescue RSpec::Expectations::ExpectationNotMetError => error + @error = error + raise + end + end + + failure_message do |object| + if expected.present? + @error + else + 'Expected graphql_name value cannot be blank' + end + end +end + +RSpec::Matchers.define :have_graphql_description do |expected| + def graphql_description(object) + object.description if object.respond_to?(:description) + end + + match do |object| + description = graphql_description(object) + + begin + if expected.present? + expect(description).to eq(expected) + else + expect(description).to be_present + end + rescue RSpec::Expectations::ExpectationNotMetError => error + @error = error + raise + end + end + + failure_message do |object| + if expected.present? + @error + else + "have_graphql_description expected value cannot be blank" + end + end +end diff --git a/spec/support/matchers/markdown_matchers.rb b/spec/support/matchers/markdown_matchers.rb index 8bec3be2535..a80c269f915 100644 --- a/spec/support/matchers/markdown_matchers.rb +++ b/spec/support/matchers/markdown_matchers.rb @@ -134,7 +134,7 @@ module MarkdownMatchers set_default_markdown_messages match do |actual| - expect(actual).to have_selector('a.gfm.gfm-snippet', count: 5) + expect(actual).to have_selector('a.gfm.gfm-snippet', count: 9) end end @@ -196,6 +196,16 @@ module MarkdownMatchers end end + # MathFilter + matcher :parse_math do + set_default_markdown_messages + + match do |actual| + expect(actual).to have_selector('[data-math-style="inline"]', count: 4) + expect(actual).to have_selector('[data-math-style="display"]', count: 4) + end + end + # InlineDiffFilter matcher :parse_inline_diffs do set_default_markdown_messages diff --git a/spec/support/migrations_helpers/vulnerabilities_findings_helper.rb b/spec/support/migrations_helpers/vulnerabilities_findings_helper.rb index 922f49ba84a..a3cccc3a75d 100644 --- a/spec/support/migrations_helpers/vulnerabilities_findings_helper.rb +++ b/spec/support/migrations_helpers/vulnerabilities_findings_helper.rb @@ -31,14 +31,14 @@ module MigrationHelpers "links" => [ { "name" => "Cipher does not check for integrity first?", - "url" => "https://crypto.stackexchange.com/questions/31428/pbewithmd5anddes-cipher-does-not-check-for-integrity-first" + "url" => "https://crypto.stackexchange.com/questions/31428/pbewithmd5anddes-cipher-does-not-check-for-integrity-first" } ], "assets" => [ { "type" => "postman", "name" => "Test Postman Collection", - "url" => "http://localhost/test.collection" + "url" => "http://localhost/test.collection" } ], "evidence" => { @@ -50,7 +50,7 @@ module MigrationHelpers "headers" => [ { "name" => "Accept", - "value" => "*/*" + "value" => "*/*" } ] }, @@ -61,7 +61,7 @@ module MigrationHelpers "headers" => [ { "name" => "Content-Length", - "value" => "0" + "value" => "0" } ] }, diff --git a/spec/support/redis.rb b/spec/support/redis.rb index 421079af8e0..d00d6562966 100644 --- a/spec/support/redis.rb +++ b/spec/support/redis.rb @@ -1,4 +1,5 @@ # frozen_string_literal: true +require 'gitlab/redis' RSpec.configure do |config| config.after(:each, :redis) do @@ -7,51 +8,15 @@ RSpec.configure do |config| end end - config.around(:each, :clean_gitlab_redis_cache) do |example| - redis_cache_cleanup! + Gitlab::Redis::ALL_CLASSES.each do |instance_class| + underscored_name = instance_class.store_name.underscore - example.run + config.around(:each, :"clean_gitlab_redis_#{underscored_name}") do |example| + public_send("redis_#{underscored_name}_cleanup!") - redis_cache_cleanup! - end - - config.around(:each, :clean_gitlab_redis_shared_state) do |example| - redis_shared_state_cleanup! - - example.run - - redis_shared_state_cleanup! - end - - config.around(:each, :clean_gitlab_redis_queues) do |example| - redis_queues_cleanup! - - example.run - - redis_queues_cleanup! - end - - config.around(:each, :clean_gitlab_redis_trace_chunks) do |example| - redis_trace_chunks_cleanup! + example.run - example.run - - redis_trace_chunks_cleanup! - end - - config.around(:each, :clean_gitlab_redis_rate_limiting) do |example| - redis_rate_limiting_cleanup! - - example.run - - redis_rate_limiting_cleanup! - end - - config.around(:each, :clean_gitlab_redis_sessions) do |example| - redis_sessions_cleanup! - - example.run - - redis_sessions_cleanup! + public_send("redis_#{underscored_name}_cleanup!") + end end end diff --git a/spec/support/redis/redis_helpers.rb b/spec/support/redis/redis_helpers.rb index 90c15dea1f8..34ac69236ee 100644 --- a/spec/support/redis/redis_helpers.rb +++ b/spec/support/redis/redis_helpers.rb @@ -1,36 +1,10 @@ # frozen_string_literal: true module RedisHelpers - # config/README.md - - # Usage: performance enhancement - def redis_cache_cleanup! - Gitlab::Redis::Cache.with(&:flushdb) - end - - # Usage: SideKiq, Mailroom, CI Runner, Workhorse, push services - def redis_queues_cleanup! - Gitlab::Redis::Queues.with(&:flushdb) - end - - # Usage: session state, rate limiting - def redis_shared_state_cleanup! - Gitlab::Redis::SharedState.with(&:flushdb) - end - - # Usage: CI trace chunks - def redis_trace_chunks_cleanup! - Gitlab::Redis::TraceChunks.with(&:flushdb) - end - - # Usage: rate limiting state (for Rack::Attack) - def redis_rate_limiting_cleanup! - Gitlab::Redis::RateLimiting.with(&:flushdb) - end - - # Usage: session state - def redis_sessions_cleanup! - Gitlab::Redis::Sessions.with(&:flushdb) + Gitlab::Redis::ALL_CLASSES.each do |instance_class| + define_method("redis_#{instance_class.store_name.underscore}_cleanup!") do + instance_class.with(&:flushdb) + end end # Usage: reset cached instance config diff --git a/spec/support/redis/redis_shared_examples.rb b/spec/support/redis/redis_shared_examples.rb index d4c8682ec71..33945509675 100644 --- a/spec/support/redis/redis_shared_examples.rb +++ b/spec/support/redis/redis_shared_examples.rb @@ -3,19 +3,19 @@ RSpec.shared_examples "redis_shared_examples" do include StubENV - let(:test_redis_url) { "redis://redishost:#{redis_port}"} + let(:test_redis_url) { "redis://redishost:#{redis_port}" } let(:config_file_name) { instance_specific_config_file } let(:config_old_format_socket) { "spec/fixtures/config/redis_old_format_socket.yml" } let(:config_new_format_socket) { "spec/fixtures/config/redis_new_format_socket.yml" } - let(:old_socket_path) {"/path/to/old/redis.sock" } - let(:new_socket_path) {"/path/to/redis.sock" } + let(:old_socket_path) { "/path/to/old/redis.sock" } + let(:new_socket_path) { "/path/to/redis.sock" } let(:config_old_format_host) { "spec/fixtures/config/redis_old_format_host.yml" } let(:config_new_format_host) { "spec/fixtures/config/redis_new_format_host.yml" } let(:redis_port) { 6379 } let(:redis_database) { 99 } let(:sentinel_port) { 26379 } - let(:config_with_environment_variable_inside) { "spec/fixtures/config/redis_config_with_env.yml"} - let(:config_env_variable_url) {"TEST_GITLAB_REDIS_URL"} + let(:config_with_environment_variable_inside) { "spec/fixtures/config/redis_config_with_env.yml" } + let(:config_env_variable_url) { "TEST_GITLAB_REDIS_URL" } let(:rails_root) { Dir.mktmpdir('redis_shared_examples') } before do diff --git a/spec/support/rspec.rb b/spec/support/rspec.rb index 30e48b3baf1..6795d2f6d2a 100644 --- a/spec/support/rspec.rb +++ b/spec/support/rspec.rb @@ -1,22 +1,26 @@ # frozen_string_literal: true +require_relative "rspec_order" +require_relative "system_exit_detected" require_relative "helpers/stub_configuration" require_relative "helpers/stub_metrics" require_relative "helpers/stub_object_storage" require_relative "helpers/stub_env" require_relative "helpers/fast_rails_root" -# so we need to load rubocop here due to the rubocop support file loading cop_helper -# which monkey patches class Cop -# if cop helper is loaded before rubocop (where class Cop is defined as class Cop < Base) -# we get a `superclass mismatch for class Cop` error when running a rspec for a locally defined -# rubocop cop - therefore we need rubocop required first since it had an inheritance added to the Cop class -require 'rubocop' -require 'rubocop/rspec/support' - RSpec::Expectations.configuration.on_potential_false_positives = :raise RSpec.configure do |config| + # Re-run failures locally with `--only-failures` + config.example_status_persistence_file_path = ENV.fetch('RSPEC_LAST_RUN_RESULTS_FILE', './spec/examples.txt') + + unless ENV['CI'] + # Allow running `:focus` examples locally, + # falling back to all tests when there is no `:focus` example. + config.filter_run focus: true + config.run_all_when_everything_filtered = true + end + config.mock_with :rspec do |mocks| mocks.verify_doubled_constant_names = true end @@ -28,10 +32,4 @@ RSpec.configure do |config| config.include StubObjectStorage config.include StubENV config.include FastRailsRoot - - config.include RuboCop::RSpec::ExpectOffense, type: :rubocop - - config.define_derived_metadata(file_path: %r{spec/rubocop}) do |metadata| - metadata[:type] = :rubocop - end end diff --git a/spec/support/rspec_order.rb b/spec/support/rspec_order.rb new file mode 100644 index 00000000000..c128e18b38e --- /dev/null +++ b/spec/support/rspec_order.rb @@ -0,0 +1,67 @@ +# frozen_string_literal: true + +module Support + module RspecOrder + TODO_YAML = File.join(__dir__, 'rspec_order_todo.yml') + + module_function + + def order_for(example_group) + order_from_env || random_order(example_group) + end + + def order_from_env + return @order_from_env if defined?(@order_from_env) + + # Passing custom defined order via `--order NAME` is not supported. + # For example, `--order reverse` does not work so we are passing it via + # environment variable RSPEC_ORDER. + @order_from_env = ENV['RSPEC_ORDER'] + end + + def random_order(example_group) + path = example_group.metadata.fetch(:file_path) + + :random unless potential_order_dependent?(path) + end + + def potential_order_dependent?(path) + @todo ||= YAML.load_file(TODO_YAML).to_set # rubocop:disable Gitlab/PredicateMemoization + + @todo.include?(path) + end + + # Adds '# order <ORDER>` below the example group description if the order + # has been set to help debugging in case of failure. + # + # Previously, we've modified metadata[:description] directly but that led + # to bugs. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96137 + module DocumentationFormatterPatch + # See https://github.com/rspec/rspec-core/blob/v3.11.0/lib/rspec/core/formatters/documentation_formatter.rb#L24-L29 + def example_group_started(notification) + super + + order = notification.group.metadata[:order] + return unless order + + output.puts "#{current_indentation}# order #{order}" + end + end + end +end + +RSpec::Core::Formatters::DocumentationFormatter.prepend Support::RspecOrder::DocumentationFormatterPatch + +RSpec.configure do |config| + # Useful to find order-dependent specs. + config.register_ordering(:reverse, &:reverse) + + # Randomization can be reproduced across test runs. + Kernel.srand config.seed + + config.on_example_group_definition do |example_group| + order = Support::RspecOrder.order_for(example_group) + + example_group.metadata[:order] = order.to_sym if order + end +end diff --git a/spec/support/rspec_order_todo.yml b/spec/support/rspec_order_todo.yml new file mode 100644 index 00000000000..b5e3d707d50 --- /dev/null +++ b/spec/support/rspec_order_todo.yml @@ -0,0 +1,11150 @@ +# The following specs are excluded from running in random order. +# They are run in defined order. +# +# See https://docs.gitlab.com/ee/development/testing_guide/best_practices.html#test-order. +# +--- +- './ee/spec/components/billing/plan_component_spec.rb' +- './ee/spec/components/namespaces/free_user_cap/alert_component_spec.rb' +- './ee/spec/components/namespaces/free_user_cap/preview_alert_component_spec.rb' +- './ee/spec/components/namespaces/free_user_cap/preview_usage_quota_alert_component_spec.rb' +- './ee/spec/components/namespaces/free_user_cap/usage_quota_alert_component_spec.rb' +- './ee/spec/components/namespaces/free_user_cap/usage_quota_trial_alert_component_spec.rb' +- './ee/spec/components/namespaces/storage/limit_alert_component_spec.rb' +- './ee/spec/config/metrics/every_metric_definition_spec.rb' +- './ee/spec/controllers/admin/applications_controller_spec.rb' +- './ee/spec/controllers/admin/application_settings_controller_spec.rb' +- './ee/spec/controllers/admin/audit_log_reports_controller_spec.rb' +- './ee/spec/controllers/admin/audit_logs_controller_spec.rb' +- './ee/spec/controllers/admin/clusters_controller_spec.rb' +- './ee/spec/controllers/admin/dashboard_controller_spec.rb' +- './ee/spec/controllers/admin/dev_ops_report_controller_spec.rb' +- './ee/spec/controllers/admin/elasticsearch_controller_spec.rb' +- './ee/spec/controllers/admin/emails_controller_spec.rb' +- './ee/spec/controllers/admin/geo/nodes_controller_spec.rb' +- './ee/spec/controllers/admin/geo/projects_controller_spec.rb' +- './ee/spec/controllers/admin/geo/settings_controller_spec.rb' +- './ee/spec/controllers/admin/groups_controller_spec.rb' +- './ee/spec/controllers/admin/impersonations_controller_spec.rb' +- './ee/spec/controllers/admin/licenses_controller_spec.rb' +- './ee/spec/controllers/admin/licenses/usage_exports_controller_spec.rb' +- './ee/spec/controllers/admin/projects_controller_spec.rb' +- './ee/spec/controllers/admin/push_rules_controller_spec.rb' +- './ee/spec/controllers/admin/runners_controller_spec.rb' +- './ee/spec/controllers/admin/users_controller_spec.rb' +- './ee/spec/controllers/autocomplete_controller_spec.rb' +- './ee/spec/controllers/boards/issues_controller_spec.rb' +- './ee/spec/controllers/boards/lists_controller_spec.rb' +- './ee/spec/controllers/boards/milestones_controller_spec.rb' +- './ee/spec/controllers/boards/users_controller_spec.rb' +- './ee/spec/controllers/concerns/boards_responses_spec.rb' +- './ee/spec/controllers/concerns/ee/routable_actions/sso_enforcement_redirect_spec.rb' +- './ee/spec/controllers/concerns/geo_instrumentation_spec.rb' +- './ee/spec/controllers/concerns/gitlab_subscriptions/seat_count_alert_spec.rb' +- './ee/spec/controllers/concerns/internal_redirect_spec.rb' +- './ee/spec/controllers/concerns/registrations/verification_spec.rb' +- './ee/spec/controllers/concerns/routable_actions_spec.rb' +- './ee/spec/controllers/countries_controller_spec.rb' +- './ee/spec/controllers/country_states_controller_spec.rb' +- './ee/spec/controllers/dashboard_controller_spec.rb' +- './ee/spec/controllers/ee/admin/sessions_controller_spec.rb' +- './ee/spec/controllers/ee/dashboard/projects_controller_spec.rb' +- './ee/spec/controllers/ee/groups_controller_spec.rb' +- './ee/spec/controllers/ee/groups/variables_controller_spec.rb' +- './ee/spec/controllers/ee/omniauth_callbacks_controller_spec.rb' +- './ee/spec/controllers/ee/profiles/preferences_controller_spec.rb' +- './ee/spec/controllers/ee/projects/autocomplete_sources_controller_spec.rb' +- './ee/spec/controllers/ee/projects/blob_controller_spec.rb' +- './ee/spec/controllers/ee/projects/jobs_controller_spec.rb' +- './ee/spec/controllers/ee/projects/merge_requests/content_controller_spec.rb' +- './ee/spec/controllers/ee/projects/protected_branches_controller_spec.rb' +- './ee/spec/controllers/ee/projects/variables_controller_spec.rb' +- './ee/spec/controllers/ee/registrations_controller_spec.rb' +- './ee/spec/controllers/ee/root_controller_spec.rb' +- './ee/spec/controllers/ee/search_controller_spec.rb' +- './ee/spec/controllers/ee/sent_notifications_controller_spec.rb' +- './ee/spec/controllers/ee/sessions_controller_spec.rb' +- './ee/spec/controllers/ee/uploads_controller_spec.rb' +- './ee/spec/controllers/groups/analytics/ci_cd_analytics_controller_spec.rb' +- './ee/spec/controllers/groups/analytics/coverage_reports_controller_spec.rb' +- './ee/spec/controllers/groups/analytics/cycle_analytics_controller_spec.rb' +- './ee/spec/controllers/groups/analytics/cycle_analytics/stages_controller_spec.rb' +- './ee/spec/controllers/groups/analytics/cycle_analytics/summary_controller_spec.rb' +- './ee/spec/controllers/groups/analytics/cycle_analytics/value_streams_controller_spec.rb' +- './ee/spec/controllers/groups/analytics/productivity_analytics_controller_spec.rb' +- './ee/spec/controllers/groups/analytics/repository_analytics_controller_spec.rb' +- './ee/spec/controllers/groups/analytics/tasks_by_type_controller_spec.rb' +- './ee/spec/controllers/groups/audit_events_controller_spec.rb' +- './ee/spec/controllers/groups/billings_controller_spec.rb' +- './ee/spec/controllers/groups/boards_controller_spec.rb' +- './ee/spec/controllers/groups/clusters_controller_spec.rb' +- './ee/spec/controllers/groups/contribution_analytics_controller_spec.rb' +- './ee/spec/controllers/groups/dependency_proxy_for_containers_controller_spec.rb' +- './ee/spec/controllers/groups/epic_boards_controller_spec.rb' +- './ee/spec/controllers/groups/epic_issues_controller_spec.rb' +- './ee/spec/controllers/groups/epics_controller_spec.rb' +- './ee/spec/controllers/groups/epics/notes_controller_spec.rb' +- './ee/spec/controllers/groups/group_members_controller_spec.rb' +- './ee/spec/controllers/groups/groups_controller_spec.rb' +- './ee/spec/controllers/groups/hooks_controller_spec.rb' +- './ee/spec/controllers/groups/insights_controller_spec.rb' +- './ee/spec/controllers/groups/issues_analytics_controller_spec.rb' +- './ee/spec/controllers/groups/issues_controller_spec.rb' +- './ee/spec/controllers/groups/iteration_cadences_controller_spec.rb' +- './ee/spec/controllers/groups/iterations_controller_spec.rb' +- './ee/spec/controllers/groups/ldaps_controller_spec.rb' +- './ee/spec/controllers/groups/ldap_settings_controller_spec.rb' +- './ee/spec/controllers/groups/merge_requests_controller_spec.rb' +- './ee/spec/controllers/groups/omniauth_callbacks_controller_spec.rb' +- './ee/spec/controllers/groups/push_rules_controller_spec.rb' +- './ee/spec/controllers/groups/roadmap_controller_spec.rb' +- './ee/spec/controllers/groups/runners_controller_spec.rb' +- './ee/spec/controllers/groups/saml_group_links_controller_spec.rb' +- './ee/spec/controllers/groups/saml_providers_controller_spec.rb' +- './ee/spec/controllers/groups/scim_oauth_controller_spec.rb' +- './ee/spec/controllers/groups/seat_usage_controller_spec.rb' +- './ee/spec/controllers/groups/security/compliance_dashboards_controller_spec.rb' +- './ee/spec/controllers/groups/security/dashboard_controller_spec.rb' +- './ee/spec/controllers/groups/security/merge_commit_reports_controller_spec.rb' +- './ee/spec/controllers/groups/security/policies_controller_spec.rb' +- './ee/spec/controllers/groups/security/vulnerabilities_controller_spec.rb' +- './ee/spec/controllers/groups/sso_controller_spec.rb' +- './ee/spec/controllers/groups/todos_controller_spec.rb' +- './ee/spec/controllers/groups/usage_quotas_controller_spec.rb' +- './ee/spec/controllers/groups/wikis_controller_spec.rb' +- './ee/spec/controllers/ldap/omniauth_callbacks_controller_spec.rb' +- './ee/spec/controllers/oauth/applications_controller_spec.rb' +- './ee/spec/controllers/oauth/geo_auth_controller_spec.rb' +- './ee/spec/controllers/operations_controller_spec.rb' +- './ee/spec/controllers/passwords_controller_spec.rb' +- './ee/spec/controllers/profiles/billings_controller_spec.rb' +- './ee/spec/controllers/profiles_controller_spec.rb' +- './ee/spec/controllers/profiles/keys_controller_spec.rb' +- './ee/spec/controllers/profiles/slacks_controller_spec.rb' +- './ee/spec/controllers/profiles/usage_quotas_controller_spec.rb' +- './ee/spec/controllers/projects/analytics/cycle_analytics/summary_controller_spec.rb' +- './ee/spec/controllers/projects/analytics/issues_analytics_controller_spec.rb' +- './ee/spec/controllers/projects/analytics/merge_request_analytics_controller_spec.rb' +- './ee/spec/controllers/projects/approver_groups_controller_spec.rb' +- './ee/spec/controllers/projects/approvers_controller_spec.rb' +- './ee/spec/controllers/projects/audit_events_controller_spec.rb' +- './ee/spec/controllers/projects/boards_controller_spec.rb' +- './ee/spec/controllers/projects/branches_controller_spec.rb' +- './ee/spec/controllers/projects/clusters_controller_spec.rb' +- './ee/spec/controllers/projects_controller_spec.rb' +- './ee/spec/controllers/projects/dependencies_controller_spec.rb' +- './ee/spec/controllers/projects/deploy_keys_controller_spec.rb' +- './ee/spec/controllers/projects/environments_controller_spec.rb' +- './ee/spec/controllers/projects/feature_flag_issues_controller_spec.rb' +- './ee/spec/controllers/projects/imports_controller_spec.rb' +- './ee/spec/controllers/projects/incident_management/escalation_policies_controller_spec.rb' +- './ee/spec/controllers/projects/incident_management/oncall_schedules_controller_spec.rb' +- './ee/spec/controllers/projects/insights_controller_spec.rb' +- './ee/spec/controllers/projects/integrations/jira/issues_controller_spec.rb' +- './ee/spec/controllers/projects/integrations/zentao/issues_controller_spec.rb' +- './ee/spec/controllers/projects/issue_links_controller_spec.rb' +- './ee/spec/controllers/projects/issues_controller_spec.rb' +- './ee/spec/controllers/projects/iteration_cadences_controller_spec.rb' +- './ee/spec/controllers/projects/iterations_controller_spec.rb' +- './ee/spec/controllers/projects/legacy_pipelines_controller_spec.rb' +- './ee/spec/controllers/projects/licenses_controller_spec.rb' +- './ee/spec/controllers/projects/merge_requests_controller_spec.rb' +- './ee/spec/controllers/projects/merge_requests/creations_controller_spec.rb' +- './ee/spec/controllers/projects/mirrors_controller_spec.rb' +- './ee/spec/controllers/projects/pages_controller_spec.rb' +- './ee/spec/controllers/projects/path_locks_controller_spec.rb' +- './ee/spec/controllers/projects/pipelines_controller_spec.rb' +- './ee/spec/controllers/projects/protected_environments_controller_spec.rb' +- './ee/spec/controllers/projects/push_rules_controller_spec.rb' +- './ee/spec/controllers/projects/quality/test_cases_controller_spec.rb' +- './ee/spec/controllers/projects/repositories_controller_spec.rb' +- './ee/spec/controllers/projects/requirements_management/requirements_controller_spec.rb' +- './ee/spec/controllers/projects/runners_controller_spec.rb' +- './ee/spec/controllers/projects/security/api_fuzzing_configuration_controller_spec.rb' +- './ee/spec/controllers/projects/security/configuration_controller_spec.rb' +- './ee/spec/controllers/projects/security/dashboard_controller_spec.rb' +- './ee/spec/controllers/projects/security/sast_configuration_controller_spec.rb' +- './ee/spec/controllers/projects/security/scanned_resources_controller_spec.rb' +- './ee/spec/controllers/projects/security/vulnerabilities_controller_spec.rb' +- './ee/spec/controllers/projects/security/vulnerabilities/notes_controller_spec.rb' +- './ee/spec/controllers/projects/security/vulnerability_report_controller_spec.rb' +- './ee/spec/controllers/projects/settings/ci_cd_controller_spec.rb' +- './ee/spec/controllers/projects/settings/integrations_controller_spec.rb' +- './ee/spec/controllers/projects/settings/operations_controller_spec.rb' +- './ee/spec/controllers/projects/settings/repository_controller_spec.rb' +- './ee/spec/controllers/projects/settings/slacks_controller_spec.rb' +- './ee/spec/controllers/projects/subscriptions_controller_spec.rb' +- './ee/spec/controllers/projects/vulnerability_feedback_controller_spec.rb' +- './ee/spec/controllers/registrations/company_controller_spec.rb' +- './ee/spec/controllers/registrations/groups_controller_spec.rb' +- './ee/spec/controllers/registrations/groups_projects_controller_spec.rb' +- './ee/spec/controllers/registrations/projects_controller_spec.rb' +- './ee/spec/controllers/registrations/verification_controller_spec.rb' +- './ee/spec/controllers/registrations/welcome_controller_spec.rb' +- './ee/spec/controllers/repositories/git_http_controller_spec.rb' +- './ee/spec/controllers/security/dashboard_controller_spec.rb' +- './ee/spec/controllers/security/projects_controller_spec.rb' +- './ee/spec/controllers/security/vulnerabilities_controller_spec.rb' +- './ee/spec/controllers/sitemap_controller_spec.rb' +- './ee/spec/controllers/subscriptions_controller_spec.rb' +- './ee/spec/controllers/subscriptions/groups_controller_spec.rb' +- './ee/spec/controllers/trial_registrations_controller_spec.rb' +- './ee/spec/controllers/trials_controller_spec.rb' +- './ee/spec/controllers/users_controller_spec.rb' +- './ee/spec/db/production/license_spec.rb' +- './ee/spec/elastic_integration/global_search_spec.rb' +- './ee/spec/elastic_integration/repository_index_spec.rb' +- './ee/spec/elastic/migrate/20201105181100_apply_max_analyzed_offset_spec.rb' +- './ee/spec/elastic/migrate/20201116142400_add_new_data_to_issues_documents_spec.rb' +- './ee/spec/elastic/migrate/20201123123400_migrate_issues_to_separate_index_spec.rb' +- './ee/spec/elastic/migrate/20210112165500_delete_issues_from_original_index_spec.rb' +- './ee/spec/elastic/migrate/20210127154600_remove_permissions_data_from_notes_documents_spec.rb' +- './ee/spec/elastic/migrate/20210128163600_add_permissions_data_to_notes_documents_spec.rb' +- './ee/spec/elastic/migrate/20210201104800_migrate_notes_to_separate_index_spec.rb' +- './ee/spec/elastic/migrate/20210421140400_add_new_data_to_merge_requests_documents_spec.rb' +- './ee/spec/elastic/migrate/20210429154500_migrate_merge_requests_to_separate_index_spec.rb' +- './ee/spec/elastic/migrate/20210510113500_delete_merge_requests_from_original_index_spec.rb' +- './ee/spec/elastic/migrate/20210510143200_delete_notes_from_original_index_spec.rb' +- './ee/spec/elastic/migrate/20210623081800_add_upvotes_to_issues_spec.rb' +- './ee/spec/elastic/migrate/20210722112500_add_upvotes_mappings_to_merge_requests_spec.rb' +- './ee/spec/elastic/migrate/20210813134600_add_namespace_ancestry_to_issues_mapping_spec.rb' +- './ee/spec/elastic/migrate/20210825110300_backfill_namespace_ancestry_for_issues_spec.rb' +- './ee/spec/elastic/migrate/20210910094600_add_namespace_ancestry_ids_to_issues_mapping_spec.rb' +- './ee/spec/elastic/migrate/20210910100000_redo_backfill_namespace_ancestry_ids_for_issues_spec.rb' +- './ee/spec/elastic/migrate/20220118150500_delete_orphaned_commits_spec.rb' +- './ee/spec/elastic/migrate/20220119120500_populate_commit_permissions_in_main_index_spec.rb' +- './ee/spec/elastic/migrate/20220512150000_pause_indexing_for_unsupported_es_versions_spec.rb' +- './ee/spec/elastic/migrate/20220613120500_migrate_commits_to_separate_index_spec.rb' +- './ee/spec/elastic/migrate/20220713103500_delete_commits_from_original_index_spec.rb' +- './ee/spec/factories/lfs_object_spec.rb' +- './ee/spec/features/account_recovery_regular_check_spec.rb' +- './ee/spec/features/admin/admin_credentials_inventory_spec.rb' +- './ee/spec/features/admin/admin_dashboard_spec.rb' +- './ee/spec/features/admin/admin_dev_ops_reports_spec.rb' +- './ee/spec/features/admin/admin_emails_spec.rb' +- './ee/spec/features/admin/admin_groups_spec.rb' +- './ee/spec/features/admin/admin_interacts_with_push_rules_spec.rb' +- './ee/spec/features/admin/admin_merge_requests_approvals_spec.rb' +- './ee/spec/features/admin/admin_reset_pipeline_minutes_spec.rb' +- './ee/spec/features/admin/admin_runners_spec.rb' +- './ee/spec/features/admin/admin_sends_notification_spec.rb' +- './ee/spec/features/admin/admin_settings_spec.rb' +- './ee/spec/features/admin/admin_show_new_user_signups_cap_alert_spec.rb' +- './ee/spec/features/admin/admin_users_spec.rb' +- './ee/spec/features/admin/geo/admin_geo_nodes_spec.rb' +- './ee/spec/features/admin/geo/admin_geo_projects_spec.rb' +- './ee/spec/features/admin/geo/admin_geo_replication_nav_spec.rb' +- './ee/spec/features/admin/geo/admin_geo_sidebar_spec.rb' +- './ee/spec/features/admin/groups/admin_changes_plan_spec.rb' +- './ee/spec/features/admin/groups/admin_subscription_alerts_spec.rb' +- './ee/spec/features/admin/licenses/admin_adds_license_spec.rb' +- './ee/spec/features/admin/licenses/show_user_count_threshold_spec.rb' +- './ee/spec/features/admin/subscriptions/admin_views_subscription_spec.rb' +- './ee/spec/features/admin/users/users_spec.rb' +- './ee/spec/features/analytics/code_analytics_spec.rb' +- './ee/spec/features/analytics/group_analytics_spec.rb' +- './ee/spec/features/billings/billing_plans_spec.rb' +- './ee/spec/features/billings/extend_reactivate_trial_spec.rb' +- './ee/spec/features/billings/qrtly_reconciliation_alert_spec.rb' +- './ee/spec/features/boards/board_filters_spec.rb' +- './ee/spec/features/boards/boards_licensed_features_spec.rb' +- './ee/spec/features/boards/boards_spec.rb' +- './ee/spec/features/boards/group_boards/board_deletion_spec.rb' +- './ee/spec/features/boards/group_boards/multiple_boards_spec.rb' +- './ee/spec/features/boards/new_issue_spec.rb' +- './ee/spec/features/boards/scoped_issue_board_spec.rb' +- './ee/spec/features/boards/sidebar_spec.rb' +- './ee/spec/features/boards/swimlanes/epics_swimlanes_drag_drop_spec.rb' +- './ee/spec/features/boards/swimlanes/epics_swimlanes_filtering_spec.rb' +- './ee/spec/features/boards/swimlanes/epics_swimlanes_sidebar_labels_spec.rb' +- './ee/spec/features/boards/swimlanes/epics_swimlanes_sidebar_spec.rb' +- './ee/spec/features/boards/swimlanes/epics_swimlanes_spec.rb' +- './ee/spec/features/boards/user_adds_lists_to_board_spec.rb' +- './ee/spec/features/boards/user_visits_board_spec.rb' +- './ee/spec/features/burndown_charts_spec.rb' +- './ee/spec/features/burnup_charts_spec.rb' +- './ee/spec/features/ci/ci_minutes_spec.rb' +- './ee/spec/features/ci_shared_runner_settings_spec.rb' +- './ee/spec/features/ci_shared_runner_warnings_spec.rb' +- './ee/spec/features/clusters/cluster_detail_page_spec.rb' +- './ee/spec/features/contextual_sidebar_spec.rb' +- './ee/spec/features/dashboards/activity_spec.rb' +- './ee/spec/features/dashboards/groups_spec.rb' +- './ee/spec/features/dashboards/issues_spec.rb' +- './ee/spec/features/dashboards/merge_requests_spec.rb' +- './ee/spec/features/dashboards/operations_spec.rb' +- './ee/spec/features/dashboards/projects_spec.rb' +- './ee/spec/features/dashboards/todos_spec.rb' +- './ee/spec/features/discussion_comments/epic_quick_actions_spec.rb' +- './ee/spec/features/discussion_comments/epic_spec.rb' +- './ee/spec/features/epic_boards/epic_boards_sidebar_spec.rb' +- './ee/spec/features/epic_boards/epic_boards_spec.rb' +- './ee/spec/features/epic_boards/multiple_epic_boards_spec.rb' +- './ee/spec/features/epic_boards/new_epic_spec.rb' +- './ee/spec/features/epics/delete_epic_spec.rb' +- './ee/spec/features/epics/epic_issues_spec.rb' +- './ee/spec/features/epics/epic_labels_spec.rb' +- './ee/spec/features/epics/epic_related_epics_spec.rb' +- './ee/spec/features/epics/epic_show_spec.rb' +- './ee/spec/features/epics/epics_list_spec.rb' +- './ee/spec/features/epics/gfm_autocomplete_spec.rb' +- './ee/spec/features/epics/issue_promotion_spec.rb' +- './ee/spec/features/epics/referencing_epics_spec.rb' +- './ee/spec/features/epics/shortcuts_epic_spec.rb' +- './ee/spec/features/epics/todo_spec.rb' +- './ee/spec/features/epics/update_epic_spec.rb' +- './ee/spec/features/epics/user_uses_quick_actions_spec.rb' +- './ee/spec/features/geo_node_spec.rb' +- './ee/spec/features/gitlab_subscriptions/seat_count_alert_spec.rb' +- './ee/spec/features/google_analytics_datalayer_spec.rb' +- './ee/spec/features/groups/active_tabs_spec.rb' +- './ee/spec/features/groups/analytics/ci_cd_analytics_spec.rb' +- './ee/spec/features/groups/analytics/cycle_analytics/charts_spec.rb' +- './ee/spec/features/groups/analytics/cycle_analytics/filters_and_data_spec.rb' +- './ee/spec/features/groups/analytics/cycle_analytics/multiple_value_streams_spec.rb' +- './ee/spec/features/groups/analytics/productivity_analytics_spec.rb' +- './ee/spec/features/groups/audit_events_spec.rb' +- './ee/spec/features/groups/billing_spec.rb' +- './ee/spec/features/groups/contribution_analytics_spec.rb' +- './ee/spec/features/groups/feature_discovery_moments_spec.rb' +- './ee/spec/features/groups/group_overview_spec.rb' +- './ee/spec/features/groups/group_page_with_external_authorization_service_spec.rb' +- './ee/spec/features/groups/group_projects_spec.rb' +- './ee/spec/features/groups/group_roadmap_spec.rb' +- './ee/spec/features/groups/group_settings_spec.rb' +- './ee/spec/features/groups/groups_security_credentials_spec.rb' +- './ee/spec/features/groups/hooks/user_adds_hook_spec.rb' +- './ee/spec/features/groups/hooks/user_edits_hooks_spec.rb' +- './ee/spec/features/groups/hooks/user_tests_hooks_spec.rb' +- './ee/spec/features/groups/hooks/user_views_hooks_spec.rb' +- './ee/spec/features/groups/insights_spec.rb' +- './ee/spec/features/groups/issues_spec.rb' +- './ee/spec/features/groups/iterations/iterations_list_spec.rb' +- './ee/spec/features/groups/iteration_spec.rb' +- './ee/spec/features/groups/iterations/user_creates_iteration_in_cadence_spec.rb' +- './ee/spec/features/groups/iterations/user_edits_iteration_cadence_spec.rb' +- './ee/spec/features/groups/iterations/user_edits_iteration_spec.rb' +- './ee/spec/features/groups/iterations/user_views_iteration_cadence_spec.rb' +- './ee/spec/features/groups/iterations/user_views_iteration_spec.rb' +- './ee/spec/features/groups/ldap_group_links_spec.rb' +- './ee/spec/features/groups/ldap_settings_spec.rb' +- './ee/spec/features/groups/members/leave_group_spec.rb' +- './ee/spec/features/groups/members/list_members_spec.rb' +- './ee/spec/features/groups/members/manage_groups_spec.rb' +- './ee/spec/features/groups/members/manage_members_spec.rb' +- './ee/spec/features/groups/members/override_ldap_memberships_spec.rb' +- './ee/spec/features/groups/navbar_spec.rb' +- './ee/spec/features/groups/new_spec.rb' +- './ee/spec/features/groups/push_rules_spec.rb' +- './ee/spec/features/groups/saml_enforcement_spec.rb' +- './ee/spec/features/groups/saml_group_links_spec.rb' +- './ee/spec/features/groups/saml_providers_spec.rb' +- './ee/spec/features/groups/scim_token_spec.rb' +- './ee/spec/features/groups/seat_usage/seat_usage_spec.rb' +- './ee/spec/features/groups/security/compliance_dashboards_spec.rb' +- './ee/spec/features/groups/settings/ci_cd_spec.rb' +- './ee/spec/features/groups/settings/protected_environments_spec.rb' +- './ee/spec/features/groups/settings/reporting_spec.rb' +- './ee/spec/features/groups/settings/user_configures_insights_spec.rb' +- './ee/spec/features/groups/settings/user_searches_in_settings_spec.rb' +- './ee/spec/features/groups_spec.rb' +- './ee/spec/features/groups/sso_spec.rb' +- './ee/spec/features/groups/usage_quotas_spec.rb' +- './ee/spec/features/groups/wikis_spec.rb' +- './ee/spec/features/groups/wiki/user_views_wiki_empty_spec.rb' +- './ee/spec/features/ide/user_commits_changes_spec.rb' +- './ee/spec/features/ide/user_opens_ide_spec.rb' +- './ee/spec/features/incidents/incident_details_spec.rb' +- './ee/spec/features/incidents/incidents_list_spec.rb' +- './ee/spec/features/integrations/jira/jira_issues_list_spec.rb' +- './ee/spec/features/invites_spec.rb' +- './ee/spec/features/issues/blocking_issues_spec.rb' +- './ee/spec/features/issues/epic_in_issue_sidebar_spec.rb' +- './ee/spec/features/issues/filtered_search/filter_issues_by_iteration_spec.rb' +- './ee/spec/features/issues/filtered_search/filter_issues_by_multiple_assignees_spec.rb' +- './ee/spec/features/issues/filtered_search/filter_issues_epic_spec.rb' +- './ee/spec/features/issues/filtered_search/filter_issues_weight_spec.rb' +- './ee/spec/features/issues/form_spec.rb' +- './ee/spec/features/issues/gfm_autocomplete_ee_spec.rb' +- './ee/spec/features/issues/issue_actions_spec.rb' +- './ee/spec/features/issues/issue_sidebar_spec.rb' +- './ee/spec/features/issues/move_issue_resource_weight_events_spec.rb' +- './ee/spec/features/issues/related_issues_spec.rb' +- './ee/spec/features/issues/resource_weight_events_spec.rb' +- './ee/spec/features/issues/sub_nav_ee_spec.rb' +- './ee/spec/features/issues/user_bulk_edits_issues_spec.rb' +- './ee/spec/features/issues/user_edits_issue_spec.rb' +- './ee/spec/features/issues/user_sees_empty_state_spec.rb' +- './ee/spec/features/issues/user_uses_quick_actions_spec.rb' +- './ee/spec/features/issues/user_views_issues_spec.rb' +- './ee/spec/features/labels_hierarchy_spec.rb' +- './ee/spec/features/markdown/markdown_spec.rb' +- './ee/spec/features/markdown/metrics_spec.rb' +- './ee/spec/features/merge_request/merge_request_widget_blocking_mrs_spec.rb' +- './ee/spec/features/merge_request/sidebar_spec.rb' +- './ee/spec/features/merge_requests/user_filters_by_approvers_spec.rb' +- './ee/spec/features/merge_requests/user_resets_approvers_spec.rb' +- './ee/spec/features/merge_requests/user_views_all_merge_requests_spec.rb' +- './ee/spec/features/merge_request/user_approves_spec.rb' +- './ee/spec/features/merge_request/user_approves_with_password_spec.rb' +- './ee/spec/features/merge_request/user_comments_on_merge_request_spec.rb' +- './ee/spec/features/merge_request/user_creates_merge_request_spec.rb' +- './ee/spec/features/merge_request/user_creates_merge_request_with_blocking_mrs_spec.rb' +- './ee/spec/features/merge_request/user_creates_multiple_assignees_mr_spec.rb' +- './ee/spec/features/merge_request/user_creates_multiple_reviewers_mr_spec.rb' +- './ee/spec/features/merge_request/user_edits_approval_rules_mr_spec.rb' +- './ee/spec/features/merge_request/user_edits_merge_request_blocking_mrs_spec.rb' +- './ee/spec/features/merge_request/user_edits_multiple_assignees_mr_spec.rb' +- './ee/spec/features/merge_request/user_edits_multiple_reviewers_mr_spec.rb' +- './ee/spec/features/merge_request/user_merges_immediately_spec.rb' +- './ee/spec/features/merge_request/user_merges_with_namespace_storage_limits_spec.rb' +- './ee/spec/features/merge_request/user_merges_with_push_rules_spec.rb' +- './ee/spec/features/merge_request/user_sees_approval_widget_spec.rb' +- './ee/spec/features/merge_request/user_sees_closing_issues_message_spec.rb' +- './ee/spec/features/merge_request/user_sees_merge_widget_spec.rb' +- './ee/spec/features/merge_request/user_sees_mr_approvals_promo_spec.rb' +- './ee/spec/features/merge_request/user_sees_status_checks_widget_spec.rb' +- './ee/spec/features/merge_request/user_selects_branches_for_new_mr_spec.rb' +- './ee/spec/features/merge_request/user_sets_approval_rules_spec.rb' +- './ee/spec/features/merge_request/user_sets_approvers_spec.rb' +- './ee/spec/features/merge_request/user_uses_slash_commands_spec.rb' +- './ee/spec/features/merge_request/user_views_blocked_merge_request_spec.rb' +- './ee/spec/features/merge_trains/two_merge_requests_on_train_spec.rb' +- './ee/spec/features/merge_trains/user_adds_merge_request_to_merge_train_spec.rb' +- './ee/spec/features/merge_trains/user_adds_to_merge_train_when_pipeline_succeeds_spec.rb' +- './ee/spec/features/milestones/user_views_milestone_spec.rb' +- './ee/spec/features/namespace_user_cap_reached_alert_spec.rb' +- './ee/spec/features/oncall_schedules/user_creates_schedule_spec.rb' +- './ee/spec/features/operations_nav_link_spec.rb' +- './ee/spec/features/password_reset_spec.rb' +- './ee/spec/features/pending_group_memberships_spec.rb' +- './ee/spec/features/pending_project_memberships_spec.rb' +- './ee/spec/features/profiles/account_spec.rb' +- './ee/spec/features/profiles/billing_spec.rb' +- './ee/spec/features/profiles/password_spec.rb' +- './ee/spec/features/profiles/usage_quotas_spec.rb' +- './ee/spec/features/profiles/user_visits_public_profile_spec.rb' +- './ee/spec/features/projects/active_tabs_spec.rb' +- './ee/spec/features/projects/audit_events_spec.rb' +- './ee/spec/features/projects/custom_projects_template_spec.rb' +- './ee/spec/features/projects/environments/environments_spec.rb' +- './ee/spec/features/projects/feature_flags/feature_flag_issues_spec.rb' +- './ee/spec/features/projects/feature_flags/user_creates_feature_flag_spec.rb' +- './ee/spec/features/projects/feature_flags/user_deletes_feature_flag_spec.rb' +- './ee/spec/features/projects/feature_flags/user_sees_feature_flag_list_spec.rb' +- './ee/spec/features/projects/feature_flags/user_updates_feature_flag_spec.rb' +- './ee/spec/features/projects/insights_spec.rb' +- './ee/spec/features/projects/integrations/jira_issues_list_spec.rb' +- './ee/spec/features/projects/integrations/project_integrations_spec.rb' +- './ee/spec/features/projects/integrations/prometheus_custom_metrics_spec.rb' +- './ee/spec/features/projects/integrations/user_activates_github_spec.rb' +- './ee/spec/features/projects/integrations/user_activates_jira_spec.rb' +- './ee/spec/features/projects/issues/user_creates_issue_spec.rb' +- './ee/spec/features/projects/issues/viewing_relocated_issues_spec.rb' +- './ee/spec/features/projects/iterations/iteration_cadences_list_spec.rb' +- './ee/spec/features/projects/iterations/iterations_list_spec.rb' +- './ee/spec/features/projects/iterations/user_views_iteration_spec.rb' +- './ee/spec/features/projects/jobs/blocked_deployment_job_page_spec.rb' +- './ee/spec/features/projects/jobs_spec.rb' +- './ee/spec/features/projects/kerberos_clone_instructions_spec.rb' +- './ee/spec/features/projects/licenses/maintainer_views_policies_spec.rb' +- './ee/spec/features/projects/members/invite_group_and_members_spec.rb' +- './ee/spec/features/projects/members/manage_groups_spec.rb' +- './ee/spec/features/projects/members/member_is_removed_from_project_spec.rb' +- './ee/spec/features/projects/members/member_leaves_project_spec.rb' +- './ee/spec/features/projects/merge_requests/user_approves_merge_request_spec.rb' +- './ee/spec/features/projects/merge_requests/user_edits_merge_request_spec.rb' +- './ee/spec/features/projects/milestones/milestone_spec.rb' +- './ee/spec/features/projects/mirror_spec.rb' +- './ee/spec/features/projects/navbar_spec.rb' +- './ee/spec/features/projects/new_project_from_template_spec.rb' +- './ee/spec/features/projects/new_project_spec.rb' +- './ee/spec/features/projects/path_locks_spec.rb' +- './ee/spec/features/projects/pipelines/legacy_pipeline_spec.rb' +- './ee/spec/features/projects/pipelines/pipeline_csp_spec.rb' +- './ee/spec/features/projects/pipelines/pipeline_spec.rb' +- './ee/spec/features/projects/pipelines/pipelines_spec.rb' +- './ee/spec/features/projects/push_rules_spec.rb' +- './ee/spec/features/projects/quality/test_case_create_spec.rb' +- './ee/spec/features/projects/quality/test_case_list_spec.rb' +- './ee/spec/features/projects/quality/test_case_show_spec.rb' +- './ee/spec/features/projects/releases/user_views_release_spec.rb' +- './ee/spec/features/projects/requirements_management/requirements_list_spec.rb' +- './ee/spec/features/projects/security/dast_scanner_profiles_spec.rb' +- './ee/spec/features/projects/security/dast_site_profiles_spec.rb' +- './ee/spec/features/projects/security/user_creates_on_demand_scan_spec.rb' +- './ee/spec/features/projects/security/user_edits_on_demand_scan_spec.rb' +- './ee/spec/features/projects/security/user_views_security_configuration_spec.rb' +- './ee/spec/features/projects/settings/auto_rollback_spec.rb' +- './ee/spec/features/projects/settings/disable_merge_trains_setting_spec.rb' +- './ee/spec/features/projects/settings/ee/repository_mirrors_settings_spec.rb' +- './ee/spec/features/projects/settings/ee/service_desk_setting_spec.rb' +- './ee/spec/features/projects/settings/issues_settings_spec.rb' +- './ee/spec/features/projects/settings/merge_request_approvals_settings_spec.rb' +- './ee/spec/features/projects/settings/merge_requests_settings_spec.rb' +- './ee/spec/features/projects/settings/pipeline_subscriptions_spec.rb' +- './ee/spec/features/projects/settings/protected_environments_spec.rb' +- './ee/spec/features/projects/settings/push_rules_settings_spec.rb' +- './ee/spec/features/projects/settings/slack_application_spec.rb' +- './ee/spec/features/projects/settings/user_manages_approval_settings_spec.rb' +- './ee/spec/features/projects/settings/user_manages_issues_template_spec.rb' +- './ee/spec/features/projects/settings/user_manages_members_spec.rb' +- './ee/spec/features/projects/settings/user_manages_merge_pipelines_spec.rb' +- './ee/spec/features/projects/settings/user_manages_merge_requests_template_spec.rb' +- './ee/spec/features/projects/settings/user_manages_merge_trains_spec.rb' +- './ee/spec/features/projects/show/developer_views_empty_project_instructions_spec.rb' +- './ee/spec/features/projects/show_project_spec.rb' +- './ee/spec/features/projects_spec.rb' +- './ee/spec/features/projects/user_applies_custom_file_template_spec.rb' +- './ee/spec/features/projects/view_blob_with_code_owners_spec.rb' +- './ee/spec/features/projects/wiki/user_views_wiki_empty_spec.rb' +- './ee/spec/features/promotion_spec.rb' +- './ee/spec/features/protected_branches_spec.rb' +- './ee/spec/features/protected_tags_spec.rb' +- './ee/spec/features/read_only_spec.rb' +- './ee/spec/features/registrations/combined_registration_spec.rb' +- './ee/spec/features/registrations/one_trust_spec.rb' +- './ee/spec/features/registrations/saas_user_registration_spec.rb' +- './ee/spec/features/registrations/trial_during_signup_flow_spec.rb' +- './ee/spec/features/registrations/user_sees_new_onboarding_flow_spec.rb' +- './ee/spec/features/registrations/welcome_spec.rb' +- './ee/spec/features/search/elastic/global_search_spec.rb' +- './ee/spec/features/search/elastic/group_search_spec.rb' +- './ee/spec/features/search/elastic/project_search_spec.rb' +- './ee/spec/features/search/elastic/snippet_search_spec.rb' +- './ee/spec/features/search/user_searches_for_epics_spec.rb' +- './ee/spec/features/security/admin_access_spec.rb' +- './ee/spec/features/security/dashboard_access_spec.rb' +- './ee/spec/features/security/group/internal_access_spec.rb' +- './ee/spec/features/security/group/private_access_spec.rb' +- './ee/spec/features/security/group/public_access_spec.rb' +- './ee/spec/features/security/profile_access_spec.rb' +- './ee/spec/features/security/project/discover_spec.rb' +- './ee/spec/features/security/project/internal_access_spec.rb' +- './ee/spec/features/security/project/private_access_spec.rb' +- './ee/spec/features/security/project/public_access_spec.rb' +- './ee/spec/features/security/project/snippet/internal_access_spec.rb' +- './ee/spec/features/security/project/snippet/private_access_spec.rb' +- './ee/spec/features/security/project/snippet/public_access_spec.rb' +- './ee/spec/features/signup_spec.rb' +- './ee/spec/features/subscriptions/expiring_subscription_message_spec.rb' +- './ee/spec/features/subscriptions/groups/edit_spec.rb' +- './ee/spec/features/subscriptions_spec.rb' +- './ee/spec/features/trial_registrations/company_information_spec.rb' +- './ee/spec/features/trial_registrations/signin_spec.rb' +- './ee/spec/features/trial_registrations/signup_spec.rb' +- './ee/spec/features/trials/capture_lead_spec.rb' +- './ee/spec/features/trials/select_namespace_spec.rb' +- './ee/spec/features/trials/show_trial_banner_spec.rb' +- './ee/spec/features/users/arkose_labs_csp_spec.rb' +- './ee/spec/features/users/login_spec.rb' +- './ee/spec/features/users/signup_spec.rb' +- './ee/spec/features/user_unsubscribes_from_admin_notifications_spec.rb' +- './ee/spec/finders/analytics/cycle_analytics/stage_finder_spec.rb' +- './ee/spec/finders/analytics/devops_adoption/enabled_namespaces_finder_spec.rb' +- './ee/spec/finders/analytics/devops_adoption/snapshots_finder_spec.rb' +- './ee/spec/finders/approval_rules/group_finder_spec.rb' +- './ee/spec/finders/app_sec/fuzzing/coverage/corpuses_finder_spec.rb' +- './ee/spec/finders/audit_event_finder_spec.rb' +- './ee/spec/finders/auth/group_saml_identity_finder_spec.rb' +- './ee/spec/finders/auth/provisioned_users_finder_spec.rb' +- './ee/spec/finders/autocomplete/group_subgroups_finder_spec.rb' +- './ee/spec/finders/autocomplete/project_invited_groups_finder_spec.rb' +- './ee/spec/finders/autocomplete/vulnerabilities_autocomplete_finder_spec.rb' +- './ee/spec/finders/billed_users_finder_spec.rb' +- './ee/spec/finders/boards/boards_finder_spec.rb' +- './ee/spec/finders/boards/epic_boards_finder_spec.rb' +- './ee/spec/finders/boards/milestones_finder_spec.rb' +- './ee/spec/finders/boards/users_finder_spec.rb' +- './ee/spec/finders/clusters/environments_finder_spec.rb' +- './ee/spec/finders/compliance_management/merge_requests/compliance_violations_finder_spec.rb' +- './ee/spec/finders/custom_project_templates_finder_spec.rb' +- './ee/spec/finders/dast/profiles_finder_spec.rb' +- './ee/spec/finders/dast_scanner_profiles_finder_spec.rb' +- './ee/spec/finders/dast_site_profiles_finder_spec.rb' +- './ee/spec/finders/dast_site_validations_finder_spec.rb' +- './ee/spec/finders/ee/alert_management/http_integrations_finder_spec.rb' +- './ee/spec/finders/ee/autocomplete/users_finder_spec.rb' +- './ee/spec/finders/ee/ci/daily_build_group_report_results_finder_spec.rb' +- './ee/spec/finders/ee/clusters/agent_authorizations_finder_spec.rb' +- './ee/spec/finders/ee/clusters/agents_finder_spec.rb' +- './ee/spec/finders/ee/fork_targets_finder_spec.rb' +- './ee/spec/finders/ee/group_members_finder_spec.rb' +- './ee/spec/finders/ee/namespaces/projects_finder_spec.rb' +- './ee/spec/finders/ee/projects_finder_spec.rb' +- './ee/spec/finders/ee/user_recent_events_finder_spec.rb' +- './ee/spec/finders/epics_finder_spec.rb' +- './ee/spec/finders/geo/ci_secure_file_registry_finder_spec.rb' +- './ee/spec/finders/geo/container_repository_registry_finder_spec.rb' +- './ee/spec/finders/geo/design_registry_finder_spec.rb' +- './ee/spec/finders/geo/group_wiki_repository_registry_finder_spec.rb' +- './ee/spec/finders/geo/lfs_object_registry_finder_spec.rb' +- './ee/spec/finders/geo/merge_request_diff_registry_finder_spec.rb' +- './ee/spec/finders/geo_node_finder_spec.rb' +- './ee/spec/finders/geo/package_file_registry_finder_spec.rb' +- './ee/spec/finders/geo/pages_deployment_registry_finder_spec.rb' +- './ee/spec/finders/geo/pipeline_artifact_registry_finder_spec.rb' +- './ee/spec/finders/geo/project_registry_finder_spec.rb' +- './ee/spec/finders/geo/project_registry_status_finder_spec.rb' +- './ee/spec/finders/geo/repository_verification_finder_spec.rb' +- './ee/spec/finders/geo/snippet_repository_registry_finder_spec.rb' +- './ee/spec/finders/geo/terraform_state_version_registry_finder_spec.rb' +- './ee/spec/finders/geo/upload_registry_finder_spec.rb' +- './ee/spec/finders/gpg_keys_finder_spec.rb' +- './ee/spec/finders/group_projects_finder_spec.rb' +- './ee/spec/finders/group_saml_identity_finder_spec.rb' +- './ee/spec/finders/groups_with_templates_finder_spec.rb' +- './ee/spec/finders/incident_management/escalation_policies_finder_spec.rb' +- './ee/spec/finders/incident_management/escalation_rules_finder_spec.rb' +- './ee/spec/finders/incident_management/issuable_resource_links_finder_spec.rb' +- './ee/spec/finders/incident_management/member_oncall_rotations_finder_spec.rb' +- './ee/spec/finders/incident_management/oncall_rotations_finder_spec.rb' +- './ee/spec/finders/incident_management/oncall_schedules_finder_spec.rb' +- './ee/spec/finders/incident_management/oncall_users_finder_spec.rb' +- './ee/spec/finders/issues_finder_spec.rb' +- './ee/spec/finders/iterations/cadences_finder_spec.rb' +- './ee/spec/finders/iterations_finder_spec.rb' +- './ee/spec/finders/licenses_finder_spec.rb' +- './ee/spec/finders/license_template_finder_spec.rb' +- './ee/spec/finders/merge_requests/by_approvers_finder_spec.rb' +- './ee/spec/finders/merge_requests_finder_spec.rb' +- './ee/spec/finders/merge_trains_finder_spec.rb' +- './ee/spec/finders/notes_finder_spec.rb' +- './ee/spec/finders/productivity_analytics_finder_spec.rb' +- './ee/spec/finders/projects/integrations/jira/by_ids_finder_spec.rb' +- './ee/spec/finders/projects/integrations/jira/issues_finder_spec.rb' +- './ee/spec/finders/requirements_management/requirements_finder_spec.rb' +- './ee/spec/finders/scim_finder_spec.rb' +- './ee/spec/finders/security/findings_finder_spec.rb' +- './ee/spec/finders/security/pipeline_vulnerabilities_finder_spec.rb' +- './ee/spec/finders/security/scan_execution_policies_finder_spec.rb' +- './ee/spec/finders/security/training_providers/base_url_finder_spec.rb' +- './ee/spec/finders/security/training_providers/kontra_url_finder_spec.rb' +- './ee/spec/finders/security/training_providers/secure_code_warrior_url_finder_spec.rb' +- './ee/spec/finders/security/training_urls_finder_spec.rb' +- './ee/spec/finders/security/vulnerabilities_finder_spec.rb' +- './ee/spec/finders/security/vulnerability_feedbacks_finder_spec.rb' +- './ee/spec/finders/security/vulnerability_reads_finder_spec.rb' +- './ee/spec/finders/snippets_finder_spec.rb' +- './ee/spec/finders/software_license_policies_finder_spec.rb' +- './ee/spec/finders/status_page/incident_comments_finder_spec.rb' +- './ee/spec/finders/status_page/incidents_finder_spec.rb' +- './ee/spec/finders/template_finder_spec.rb' +- './ee/spec/finders/users_finder_spec.rb' +- './ee/spec/frontend/fixtures/analytics/charts.rb' +- './ee/spec/frontend/fixtures/analytics/devops_reports/devops_adoption/enabled_namespaces.rb' +- './ee/spec/frontend/fixtures/analytics/metrics.rb' +- './ee/spec/frontend/fixtures/analytics/value_streams_code_stage.rb' +- './ee/spec/frontend/fixtures/analytics/value_streams_issue_stage.rb' +- './ee/spec/frontend/fixtures/analytics/value_streams_plan_stage.rb' +- './ee/spec/frontend/fixtures/analytics/value_streams.rb' +- './ee/spec/frontend/fixtures/analytics/value_streams_review_stage.rb' +- './ee/spec/frontend/fixtures/analytics/value_streams_staging_stage.rb' +- './ee/spec/frontend/fixtures/analytics/value_streams_test_stage.rb' +- './ee/spec/frontend/fixtures/codequality_report.rb' +- './ee/spec/frontend/fixtures/dast_profiles.rb' +- './ee/spec/frontend/fixtures/dora/metrics.rb' +- './ee/spec/frontend/fixtures/epic.rb' +- './ee/spec/frontend/fixtures/issues.rb' +- './ee/spec/frontend/fixtures/merge_requests.rb' +- './ee/spec/frontend/fixtures/on_demand_dast_scans.rb' +- './ee/spec/frontend/fixtures/project_quality_summary.rb' +- './ee/spec/frontend/fixtures/projects.rb' +- './ee/spec/frontend/fixtures/runner.rb' +- './ee/spec/frontend/fixtures/saml_providers.rb' +- './ee/spec/frontend/fixtures/search.rb' +- './ee/spec/graphql/api/vulnerabilities_spec.rb' +- './ee/spec/graphql/ee/mutations/boards/issues/issue_move_list_spec.rb' +- './ee/spec/graphql/ee/mutations/boards/lists/create_spec.rb' +- './ee/spec/graphql/ee/mutations/ci/project_ci_cd_settings_update_spec.rb' +- './ee/spec/graphql/ee/mutations/ci/runner/update_spec.rb' +- './ee/spec/graphql/ee/mutations/concerns/mutations/resolves_issuable_spec.rb' +- './ee/spec/graphql/ee/resolvers/board_list_issues_resolver_spec.rb' +- './ee/spec/graphql/ee/resolvers/board_lists_resolver_spec.rb' +- './ee/spec/graphql/ee/resolvers/issues_resolver_spec.rb' +- './ee/spec/graphql/ee/resolvers/namespace_projects_resolver_spec.rb' +- './ee/spec/graphql/ee/types/alert_management/http_integration_type_spec.rb' +- './ee/spec/graphql/ee/types/board_list_type_spec.rb' +- './ee/spec/graphql/ee/types/boards/board_issue_input_type_spec.rb' +- './ee/spec/graphql/ee/types/board_type_spec.rb' +- './ee/spec/graphql/ee/types/ci/pipeline_merge_request_type_enum_spec.rb' +- './ee/spec/graphql/ee/types/compliance_management/compliance_framework_type_spec.rb' +- './ee/spec/graphql/ee/types/group_type_spec.rb' +- './ee/spec/graphql/ee/types/issuable_type_spec.rb' +- './ee/spec/graphql/ee/types/issue_sort_enum_spec.rb' +- './ee/spec/graphql/ee/types/merge_request_type_spec.rb' +- './ee/spec/graphql/ee/types/milestone_type_spec.rb' +- './ee/spec/graphql/ee/types/mutation_type_spec.rb' +- './ee/spec/graphql/ee/types/namespace_type_spec.rb' +- './ee/spec/graphql/ee/types/notes/noteable_interface_spec.rb' +- './ee/spec/graphql/ee/types/projects/service_type_enum_spec.rb' +- './ee/spec/graphql/ee/types/repository/blob_type_spec.rb' +- './ee/spec/graphql/ee/types/todoable_interface_spec.rb' +- './ee/spec/graphql/ee/types/user_merge_request_interaction_type_spec.rb' +- './ee/spec/graphql/mutations/app_sec/fuzzing/api/ci_configuration/create_spec.rb' +- './ee/spec/graphql/mutations/app_sec/fuzzing/coverage/corpus/create_spec.rb' +- './ee/spec/graphql/mutations/audit_events/streaming/headers/create_spec.rb' +- './ee/spec/graphql/mutations/audit_events/streaming/headers/destroy_spec.rb' +- './ee/spec/graphql/mutations/boards/epic_boards/create_spec.rb' +- './ee/spec/graphql/mutations/boards/epic_boards/destroy_spec.rb' +- './ee/spec/graphql/mutations/boards/epic_boards/epic_move_list_spec.rb' +- './ee/spec/graphql/mutations/boards/epic_boards/update_spec.rb' +- './ee/spec/graphql/mutations/boards/epic_lists/create_spec.rb' +- './ee/spec/graphql/mutations/boards/epic_lists/update_spec.rb' +- './ee/spec/graphql/mutations/boards/epics/create_spec.rb' +- './ee/spec/graphql/mutations/boards/lists/update_limit_metrics_spec.rb' +- './ee/spec/graphql/mutations/boards/update_epic_user_preferences_spec.rb' +- './ee/spec/graphql/mutations/boards/update_spec.rb' +- './ee/spec/graphql/mutations/compliance_management/frameworks/create_spec.rb' +- './ee/spec/graphql/mutations/compliance_management/frameworks/destroy_spec.rb' +- './ee/spec/graphql/mutations/compliance_management/frameworks/update_spec.rb' +- './ee/spec/graphql/mutations/dast_on_demand_scans/create_spec.rb' +- './ee/spec/graphql/mutations/dast/profiles/create_spec.rb' +- './ee/spec/graphql/mutations/dast/profiles/delete_spec.rb' +- './ee/spec/graphql/mutations/dast/profiles/run_spec.rb' +- './ee/spec/graphql/mutations/dast/profiles/update_spec.rb' +- './ee/spec/graphql/mutations/dast_scanner_profiles/create_spec.rb' +- './ee/spec/graphql/mutations/dast_scanner_profiles/delete_spec.rb' +- './ee/spec/graphql/mutations/dast_scanner_profiles/update_spec.rb' +- './ee/spec/graphql/mutations/dast_site_profiles/create_spec.rb' +- './ee/spec/graphql/mutations/dast_site_profiles/delete_spec.rb' +- './ee/spec/graphql/mutations/dast_site_profiles/update_spec.rb' +- './ee/spec/graphql/mutations/dast_site_tokens/create_spec.rb' +- './ee/spec/graphql/mutations/dast_site_validations/create_spec.rb' +- './ee/spec/graphql/mutations/dast_site_validations/revoke_spec.rb' +- './ee/spec/graphql/mutations/epics/add_issue_spec.rb' +- './ee/spec/graphql/mutations/epics/create_spec.rb' +- './ee/spec/graphql/mutations/epics/update_spec.rb' +- './ee/spec/graphql/mutations/gitlab_subscriptions/activate_spec.rb' +- './ee/spec/graphql/mutations/incident_management/escalation_policy/create_spec.rb' +- './ee/spec/graphql/mutations/incident_management/escalation_policy/destroy_spec.rb' +- './ee/spec/graphql/mutations/incident_management/escalation_policy/update_spec.rb' +- './ee/spec/graphql/mutations/incident_management/issuable_resource_link/create_spec.rb' +- './ee/spec/graphql/mutations/incident_management/issuable_resource_link/destroy_spec.rb' +- './ee/spec/graphql/mutations/incident_management/oncall_rotation/create_spec.rb' +- './ee/spec/graphql/mutations/incident_management/oncall_rotation/destroy_spec.rb' +- './ee/spec/graphql/mutations/incident_management/oncall_rotation/update_spec.rb' +- './ee/spec/graphql/mutations/incident_management/oncall_schedule/create_spec.rb' +- './ee/spec/graphql/mutations/incident_management/oncall_schedule/destroy_spec.rb' +- './ee/spec/graphql/mutations/incident_management/oncall_schedule/update_spec.rb' +- './ee/spec/graphql/mutations/instance_security_dashboard/add_project_spec.rb' +- './ee/spec/graphql/mutations/instance_security_dashboard/remove_project_spec.rb' +- './ee/spec/graphql/mutations/issues/create_spec.rb' +- './ee/spec/graphql/mutations/issues/promote_to_epic_spec.rb' +- './ee/spec/graphql/mutations/issues/set_assignees_spec.rb' +- './ee/spec/graphql/mutations/issues/set_epic_spec.rb' +- './ee/spec/graphql/mutations/issues/set_escalation_policy_spec.rb' +- './ee/spec/graphql/mutations/issues/set_iteration_spec.rb' +- './ee/spec/graphql/mutations/issues/set_weight_spec.rb' +- './ee/spec/graphql/mutations/issues/update_spec.rb' +- './ee/spec/graphql/mutations/merge_requests/accept_spec.rb' +- './ee/spec/graphql/mutations/merge_requests/set_assignees_spec.rb' +- './ee/spec/graphql/mutations/merge_requests/set_reviewers_spec.rb' +- './ee/spec/graphql/mutations/namespaces/increase_storage_temporarily_spec.rb' +- './ee/spec/graphql/mutations/projects/set_compliance_framework_spec.rb' +- './ee/spec/graphql/mutations/projects/set_locked_spec.rb' +- './ee/spec/graphql/mutations/releases/update_spec.rb' +- './ee/spec/graphql/mutations/requirements_management/create_requirement_spec.rb' +- './ee/spec/graphql/mutations/requirements_management/export_requirements_spec.rb' +- './ee/spec/graphql/mutations/requirements_management/update_requirement_spec.rb' +- './ee/spec/graphql/mutations/security/ci_configuration/configure_container_scanning_spec.rb' +- './ee/spec/graphql/mutations/security/ci_configuration/configure_dependency_scanning_spec.rb' +- './ee/spec/graphql/mutations/security_finding/dismiss_spec.rb' +- './ee/spec/graphql/mutations/security_policy/assign_security_policy_project_spec.rb' +- './ee/spec/graphql/mutations/security_policy/commit_scan_execution_policy_spec.rb' +- './ee/spec/graphql/mutations/security_policy/create_security_policy_project_spec.rb' +- './ee/spec/graphql/mutations/security_policy/unassign_security_policy_project_spec.rb' +- './ee/spec/graphql/mutations/security/training_provider_update_spec.rb' +- './ee/spec/graphql/mutations/todos/create_spec.rb' +- './ee/spec/graphql/mutations/vulnerabilities/confirm_spec.rb' +- './ee/spec/graphql/mutations/vulnerabilities/create_external_issue_link_spec.rb' +- './ee/spec/graphql/mutations/vulnerabilities/create_spec.rb' +- './ee/spec/graphql/mutations/vulnerabilities/destroy_external_issue_link_spec.rb' +- './ee/spec/graphql/mutations/vulnerabilities/dismiss_spec.rb' +- './ee/spec/graphql/mutations/vulnerabilities/resolve_spec.rb' +- './ee/spec/graphql/mutations/vulnerabilities/revert_to_detected_spec.rb' +- './ee/spec/graphql/representation/vulnerability_scanner_entry_spec.rb' +- './ee/spec/graphql/resolvers/admin/cloud_licenses/current_license_resolver_spec.rb' +- './ee/spec/graphql/resolvers/admin/cloud_licenses/license_history_entries_resolver_spec.rb' +- './ee/spec/graphql/resolvers/admin/cloud_licenses/subscription_future_entries_resolver_spec.rb' +- './ee/spec/graphql/resolvers/analytics/devops_adoption/enabled_namespaces_resolver_spec.rb' +- './ee/spec/graphql/resolvers/app_sec/dast/profile_resolver_spec.rb' +- './ee/spec/graphql/resolvers/app_sec/fuzzing/coverage/corpuses_resolver_spec.rb' +- './ee/spec/graphql/resolvers/board_groupings/epics_resolvers_spec.rb' +- './ee/spec/graphql/resolvers/boards/board_list_epics_resolver_spec.rb' +- './ee/spec/graphql/resolvers/boards/epic_boards_resolvers_spec.rb' +- './ee/spec/graphql/resolvers/boards/epic_list_resolver_spec.rb' +- './ee/spec/graphql/resolvers/boards/epic_lists_resolvers_spec.rb' +- './ee/spec/graphql/resolvers/ci/code_coverage_activities_resolver_spec.rb' +- './ee/spec/graphql/resolvers/ci/code_coverage_summary_resolver_spec.rb' +- './ee/spec/graphql/resolvers/clusters/agents_resolver_spec.rb' +- './ee/spec/graphql/resolvers/compliance_management/merge_requests/compliance_violation_resolver_spec.rb' +- './ee/spec/graphql/resolvers/dast_site_profile_resolver_spec.rb' +- './ee/spec/graphql/resolvers/dast_site_validation_resolver_spec.rb' +- './ee/spec/graphql/resolvers/dora_metrics_resolver_spec.rb' +- './ee/spec/graphql/resolvers/epic_ancestors_resolver_spec.rb' +- './ee/spec/graphql/resolvers/epic_issues_resolver_spec.rb' +- './ee/spec/graphql/resolvers/epics_resolver_spec.rb' +- './ee/spec/graphql/resolvers/external_issue_resolver_spec.rb' +- './ee/spec/graphql/resolvers/geo/ci_secure_file_registries_resolver_spec.rb' +- './ee/spec/graphql/resolvers/geo/geo_node_resolver_spec.rb' +- './ee/spec/graphql/resolvers/geo/group_wiki_repository_registries_resolver_spec.rb' +- './ee/spec/graphql/resolvers/geo/job_artifact_registries_resolver_spec.rb' +- './ee/spec/graphql/resolvers/geo/lfs_object_registries_resolver_spec.rb' +- './ee/spec/graphql/resolvers/geo/merge_request_diff_registries_resolver_spec.rb' +- './ee/spec/graphql/resolvers/geo/package_file_registries_resolver_spec.rb' +- './ee/spec/graphql/resolvers/geo/pages_deployment_registries_resolver_spec.rb' +- './ee/spec/graphql/resolvers/geo/pipeline_artifact_registries_resolver_spec.rb' +- './ee/spec/graphql/resolvers/geo/snippet_repository_registries_resolver_spec.rb' +- './ee/spec/graphql/resolvers/geo/terraform_state_version_registries_resolver_spec.rb' +- './ee/spec/graphql/resolvers/geo/upload_registries_resolver_spec.rb' +- './ee/spec/graphql/resolvers/incident_management/escalation_policies_resolver_spec.rb' +- './ee/spec/graphql/resolvers/incident_management/issuable_resource_links_resolver_spec.rb' +- './ee/spec/graphql/resolvers/incident_management/oncall_rotations_resolver_spec.rb' +- './ee/spec/graphql/resolvers/incident_management/oncall_schedule_resolver_spec.rb' +- './ee/spec/graphql/resolvers/incident_management/oncall_shifts_resolver_spec.rb' +- './ee/spec/graphql/resolvers/incident_management/oncall_users_resolver_spec.rb' +- './ee/spec/graphql/resolvers/instance_security_dashboard/projects_resolver_spec.rb' +- './ee/spec/graphql/resolvers/instance_security_dashboard_resolver_spec.rb' +- './ee/spec/graphql/resolvers/iterations/cadences_resolver_spec.rb' +- './ee/spec/graphql/resolvers/iterations_resolver_spec.rb' +- './ee/spec/graphql/resolvers/network_policy_resolver_spec.rb' +- './ee/spec/graphql/resolvers/path_locks_resolver_spec.rb' +- './ee/spec/graphql/resolvers/pipeline_security_report_findings_resolver_spec.rb' +- './ee/spec/graphql/resolvers/requirements_management/requirements_resolver_spec.rb' +- './ee/spec/graphql/resolvers/requirements_management/test_reports_resolver_spec.rb' +- './ee/spec/graphql/resolvers/security_orchestration/scan_execution_policy_resolver_spec.rb' +- './ee/spec/graphql/resolvers/security_orchestration/scan_result_policy_resolver_spec.rb' +- './ee/spec/graphql/resolvers/security_report_summary_resolver_spec.rb' +- './ee/spec/graphql/resolvers/security_training_urls_resolver_spec.rb' +- './ee/spec/graphql/resolvers/timebox_report_resolver_spec.rb' +- './ee/spec/graphql/resolvers/user_discussions_count_resolver_spec.rb' +- './ee/spec/graphql/resolvers/user_notes_count_resolver_spec.rb' +- './ee/spec/graphql/resolvers/vulnerabilities/container_images_resolver_spec.rb' +- './ee/spec/graphql/resolvers/vulnerabilities_count_per_day_resolver_spec.rb' +- './ee/spec/graphql/resolvers/vulnerabilities/details_resolver_spec.rb' +- './ee/spec/graphql/resolvers/vulnerabilities_grade_resolver_spec.rb' +- './ee/spec/graphql/resolvers/vulnerabilities/issue_links_resolver_spec.rb' +- './ee/spec/graphql/resolvers/vulnerabilities_resolver_spec.rb' +- './ee/spec/graphql/resolvers/vulnerabilities/scanners_resolver_spec.rb' +- './ee/spec/graphql/resolvers/vulnerability_severities_count_resolver_spec.rb' +- './ee/spec/graphql/types/admin/cloud_licenses/current_license_type_spec.rb' +- './ee/spec/graphql/types/admin/cloud_licenses/license_history_entry_type_spec.rb' +- './ee/spec/graphql/types/admin/cloud_licenses/subscription_future_entry_type_spec.rb' +- './ee/spec/graphql/types/alert_management/payload_alert_field_name_enum_spec.rb' +- './ee/spec/graphql/types/alert_management/payload_alert_field_path_segment_type_spec.rb' +- './ee/spec/graphql/types/alert_management/payload_alert_field_type_enum_spec.rb' +- './ee/spec/graphql/types/approval_rule_type_enum_spec.rb' +- './ee/spec/graphql/types/approval_rule_type_spec.rb' +- './ee/spec/graphql/types/app_sec/fuzzing/api/ci_configuration_type_spec.rb' +- './ee/spec/graphql/types/app_sec/fuzzing/api/scan_mode_enum_spec.rb' +- './ee/spec/graphql/types/app_sec/fuzzing/api/scan_profile_type_spec.rb' +- './ee/spec/graphql/types/app_sec/fuzzing/coverage/corpus_type_spec.rb' +- './ee/spec/graphql/types/asset_type_spec.rb' +- './ee/spec/graphql/types/audit_events/exterrnal_audit_event_destination_type_spec.rb' +- './ee/spec/graphql/types/audit_events/streaming/header_type_spec.rb' +- './ee/spec/graphql/types/boards/board_epic_type_spec.rb' +- './ee/spec/graphql/types/boards/epic_board_type_spec.rb' +- './ee/spec/graphql/types/boards/epic_list_metadata_type_spec.rb' +- './ee/spec/graphql/types/boards/epic_list_type_spec.rb' +- './ee/spec/graphql/types/boards/epic_user_preferences_type_spec.rb' +- './ee/spec/graphql/types/burnup_chart_daily_totals_type_spec.rb' +- './ee/spec/graphql/types/ci/code_coverage_activity_type_spec.rb' +- './ee/spec/graphql/types/ci/code_coverage_summary_spec.rb' +- './ee/spec/graphql/types/ci/code_quality_degradation_severity_enum_spec.rb' +- './ee/spec/graphql/types/ci/code_quality_degradation_type_spec.rb' +- './ee/spec/graphql/types/ci/minutes/namespace_monthly_usage_type_spec.rb' +- './ee/spec/graphql/types/ci/minutes/project_monthly_usage_type_spec.rb' +- './ee/spec/graphql/types/ci/pipeline_type_spec.rb' +- './ee/spec/graphql/types/ci/runner_type_spec.rb' +- './ee/spec/graphql/types/compliance_management/merge_requests/compliance_violation_input_type_spec.rb' +- './ee/spec/graphql/types/compliance_management/merge_requests/compliance_violation_reason_enum_spec.rb' +- './ee/spec/graphql/types/compliance_management/merge_requests/compliance_violation_severity_enum_spec.rb' +- './ee/spec/graphql/types/compliance_management/merge_requests/compliance_violation_sort_enum_spec.rb' +- './ee/spec/graphql/types/compliance_management/merge_requests/compliance_violation_type_spec.rb' +- './ee/spec/graphql/types/dast/profile_branch_type_spec.rb' +- './ee/spec/graphql/types/dast/profile_cadence_enum_spec.rb' +- './ee/spec/graphql/types/dast/profile_cadence_input_type_spec.rb' +- './ee/spec/graphql/types/dast/profile_cadence_type_spec.rb' +- './ee/spec/graphql/types/dast/profile_schedule_input_type_spec.rb' +- './ee/spec/graphql/types/dast/profile_schedule_type_spec.rb' +- './ee/spec/graphql/types/dast/profile_type_spec.rb' +- './ee/spec/graphql/types/dast/scan_method_type_enum_spec.rb' +- './ee/spec/graphql/types/dast_scanner_profile_type_spec.rb' +- './ee/spec/graphql/types/dast/site_profile_auth_input_type_spec.rb' +- './ee/spec/graphql/types/dast/site_profile_auth_type_spec.rb' +- './ee/spec/graphql/types/dast_site_profile_type_spec.rb' +- './ee/spec/graphql/types/dast_site_validation_type_spec.rb' +- './ee/spec/graphql/types/dora_metric_bucketing_interval_enum_spec.rb' +- './ee/spec/graphql/types/dora_metric_type_enum_spec.rb' +- './ee/spec/graphql/types/dora_metric_type_spec.rb' +- './ee/spec/graphql/types/dora_type_spec.rb' +- './ee/spec/graphql/types/epic_descendant_count_type_spec.rb' +- './ee/spec/graphql/types/epic_descendant_weight_sum_type_spec.rb' +- './ee/spec/graphql/types/epic_issue_type_spec.rb' +- './ee/spec/graphql/types/epic_sort_enum_spec.rb' +- './ee/spec/graphql/types/epic_state_enum_spec.rb' +- './ee/spec/graphql/types/epic_type_spec.rb' +- './ee/spec/graphql/types/external_issue_type_spec.rb' +- './ee/spec/graphql/types/geo/ci_secure_file_registry_type_spec.rb' +- './ee/spec/graphql/types/geo/geo_node_type_spec.rb' +- './ee/spec/graphql/types/geo/job_artifact_registry_type_spec.rb' +- './ee/spec/graphql/types/geo/lfs_object_registry_type_spec.rb' +- './ee/spec/graphql/types/geo/merge_request_diff_registry_type_spec.rb' +- './ee/spec/graphql/types/geo/package_file_registry_type_spec.rb' +- './ee/spec/graphql/types/geo/pages_deployment_registry_type_spec.rb' +- './ee/spec/graphql/types/geo/pipeline_artifact_registry_type_spec.rb' +- './ee/spec/graphql/types/geo/registry_state_enum_spec.rb' +- './ee/spec/graphql/types/geo/terraform_state_version_registry_type_spec.rb' +- './ee/spec/graphql/types/geo/upload_registry_type_spec.rb' +- './ee/spec/graphql/types/global_id_type_spec.rb' +- './ee/spec/graphql/types/group_release_stats_type_spec.rb' +- './ee/spec/graphql/types/group_stats_type_spec.rb' +- './ee/spec/graphql/types/health_status_enum_spec.rb' +- './ee/spec/graphql/types/incident_management/escalation_policy_type_spec.rb' +- './ee/spec/graphql/types/incident_management/escalation_rule_input_type_spec.rb' +- './ee/spec/graphql/types/incident_management/escalation_rule_type_spec.rb' +- './ee/spec/graphql/types/incident_management/issuable_resource_link_type_enum_spec.rb' +- './ee/spec/graphql/types/incident_management/issuable_resource_link_type_spec.rb' +- './ee/spec/graphql/types/incident_management/oncall_participant_type_spec.rb' +- './ee/spec/graphql/types/incident_management/oncall_rotation_date_input_type_spec.rb' +- './ee/spec/graphql/types/incident_management/oncall_rotation_type_spec.rb' +- './ee/spec/graphql/types/incident_management/oncall_schedule_type_spec.rb' +- './ee/spec/graphql/types/incident_management/oncall_shift_type_spec.rb' +- './ee/spec/graphql/types/instance_security_dashboard_type_spec.rb' +- './ee/spec/graphql/types/issue_connection_type_spec.rb' +- './ee/spec/graphql/types/issue_type_spec.rb' +- './ee/spec/graphql/types/iterations/cadence_type_spec.rb' +- './ee/spec/graphql/types/iteration_type_spec.rb' +- './ee/spec/graphql/types/json_string_type_spec.rb' +- './ee/spec/graphql/types/merge_requests/approval_state_type_spec.rb' +- './ee/spec/graphql/types/metric_image_type_spec.rb' +- './ee/spec/graphql/types/move_type_enum_spec.rb' +- './ee/spec/graphql/types/network_policy_kind_enum_spec.rb' +- './ee/spec/graphql/types/network_policy_type_spec.rb' +- './ee/spec/graphql/types/path_lock_type_spec.rb' +- './ee/spec/graphql/types/permission_types/epic_spec.rb' +- './ee/spec/graphql/types/permission_types/project_spec.rb' +- './ee/spec/graphql/types/permission_types/vulnerability_spec.rb' +- './ee/spec/graphql/types/pipeline_security_report_finding_type_spec.rb' +- './ee/spec/graphql/types/projects/services_enum_spec.rb' +- './ee/spec/graphql/types/project_type_spec.rb' +- './ee/spec/graphql/types/push_rules_type_spec.rb' +- './ee/spec/graphql/types/query_type_spec.rb' +- './ee/spec/graphql/types/requirements_management/requirement_state_enum_spec.rb' +- './ee/spec/graphql/types/requirements_management/requirement_states_count_type_spec.rb' +- './ee/spec/graphql/types/requirements_management/requirement_type_spec.rb' +- './ee/spec/graphql/types/requirements_management/test_report_state_enum_spec.rb' +- './ee/spec/graphql/types/requirements_management/test_report_type_spec.rb' +- './ee/spec/graphql/types/scanned_resource_type_spec.rb' +- './ee/spec/graphql/types/scan_type_spec.rb' +- './ee/spec/graphql/types/security_orchestration/group_security_policy_source_type_spec.rb' +- './ee/spec/graphql/types/security_orchestration/project_security_policy_source_type_spec.rb' +- './ee/spec/graphql/types/security_orchestration/security_policy_relation_type_enum_spec.rb' +- './ee/spec/graphql/types/security_orchestration/security_policy_source_type_spec.rb' +- './ee/spec/graphql/types/security_report_summary_section_type_spec.rb' +- './ee/spec/graphql/types/security_report_summary_type_spec.rb' +- './ee/spec/graphql/types/security_scanners_spec.rb' +- './ee/spec/graphql/types/security_scanner_type_enum_spec.rb' +- './ee/spec/graphql/types/security/training_type_spec.rb' +- './ee/spec/graphql/types/security/training_url_request_status_enum_spec.rb' +- './ee/spec/graphql/types/security/training_url_type_spec.rb' +- './ee/spec/graphql/types/timebox_report_type_spec.rb' +- './ee/spec/graphql/types/vulnerabilities/container_image_type_spec.rb' +- './ee/spec/graphql/types/vulnerabilities_count_by_day_type_spec.rb' +- './ee/spec/graphql/types/vulnerabilities/link_type_spec.rb' +- './ee/spec/graphql/types/vulnerability_confidence_enum_spec.rb' +- './ee/spec/graphql/types/vulnerability_details/base_type_spec.rb' +- './ee/spec/graphql/types/vulnerability_details/boolean_type_spec.rb' +- './ee/spec/graphql/types/vulnerability_details/code_type_spec.rb' +- './ee/spec/graphql/types/vulnerability_details/commit_type_spec.rb' +- './ee/spec/graphql/types/vulnerability_details/diff_type_spec.rb' +- './ee/spec/graphql/types/vulnerability_details/file_location_type_spec.rb' +- './ee/spec/graphql/types/vulnerability_details/int_type_spec.rb' +- './ee/spec/graphql/types/vulnerability_details/list_type_spec.rb' +- './ee/spec/graphql/types/vulnerability_details/markdown_type_spec.rb' +- './ee/spec/graphql/types/vulnerability_details/module_location_type_spec.rb' +- './ee/spec/graphql/types/vulnerability_details/table_type_spec.rb' +- './ee/spec/graphql/types/vulnerability_details/text_type_spec.rb' +- './ee/spec/graphql/types/vulnerability_details/url_type_spec.rb' +- './ee/spec/graphql/types/vulnerability_detail_type_spec.rb' +- './ee/spec/graphql/types/vulnerability_evidence_source_type_spec.rb' +- './ee/spec/graphql/types/vulnerability_evidence_supporting_message_type_spec.rb' +- './ee/spec/graphql/types/vulnerability_evidence_type_spec.rb' +- './ee/spec/graphql/types/vulnerability/external_issue_link_external_tracker_enum_spec.rb' +- './ee/spec/graphql/types/vulnerability/external_issue_link_type_enum_spec.rb' +- './ee/spec/graphql/types/vulnerability/external_issue_link_type_spec.rb' +- './ee/spec/graphql/types/vulnerability_grade_enum_spec.rb' +- './ee/spec/graphql/types/vulnerability_identifier_input_type_spec.rb' +- './ee/spec/graphql/types/vulnerability_identifier_type_spec.rb' +- './ee/spec/graphql/types/vulnerability/issue_link_type_enum_spec.rb' +- './ee/spec/graphql/types/vulnerability/issue_link_type_spec.rb' +- './ee/spec/graphql/types/vulnerability_location/cluster_image_scanning_type_spec.rb' +- './ee/spec/graphql/types/vulnerability_location/container_scanning_type_spec.rb' +- './ee/spec/graphql/types/vulnerability_location/coverage_fuzzing_type_spec.rb' +- './ee/spec/graphql/types/vulnerability_location/dast_type_spec.rb' +- './ee/spec/graphql/types/vulnerability_location/dependency_scanning_type_spec.rb' +- './ee/spec/graphql/types/vulnerability_location/generic_type_spec.rb' +- './ee/spec/graphql/types/vulnerability_location/sast_type_spec.rb' +- './ee/spec/graphql/types/vulnerability_location/secret_detection_type_spec.rb' +- './ee/spec/graphql/types/vulnerability_location_type_spec.rb' +- './ee/spec/graphql/types/vulnerability_report_type_enum_spec.rb' +- './ee/spec/graphql/types/vulnerability_request_response_header_type_spec.rb' +- './ee/spec/graphql/types/vulnerability_request_type_spec.rb' +- './ee/spec/graphql/types/vulnerability_response_type_spec.rb' +- './ee/spec/graphql/types/vulnerability_scanner_input_type_spec.rb' +- './ee/spec/graphql/types/vulnerability_scanner_type_spec.rb' +- './ee/spec/graphql/types/vulnerability_scanner_vendor_input_type_spec.rb' +- './ee/spec/graphql/types/vulnerability_severities_count_type_spec.rb' +- './ee/spec/graphql/types/vulnerability_severity_enum_spec.rb' +- './ee/spec/graphql/types/vulnerability_sort_enum_spec.rb' +- './ee/spec/graphql/types/vulnerability_state_enum_spec.rb' +- './ee/spec/graphql/types/vulnerability_type_spec.rb' +- './ee/spec/graphql/types/vulnerable_dependency_type_spec.rb' +- './ee/spec/graphql/types/vulnerable_kubernetes_resource_type_spec.rb' +- './ee/spec/graphql/types/vulnerable_package_type_spec.rb' +- './ee/spec/graphql/types/vulnerable_projects_by_grade_type_spec.rb' +- './ee/spec/graphql/types/work_items/type_spec.rb' +- './ee/spec/graphql/types/work_items/widget_interface_spec.rb' +- './ee/spec/graphql/types/work_items/widgets/verification_status_type_spec.rb' +- './ee/spec/helpers/admin/emails_helper_spec.rb' +- './ee/spec/helpers/admin/ip_restriction_helper_spec.rb' +- './ee/spec/helpers/admin/repo_size_limit_helper_spec.rb' +- './ee/spec/helpers/analytics/code_review_helper_spec.rb' +- './ee/spec/helpers/application_helper_spec.rb' +- './ee/spec/helpers/audit_events_helper_spec.rb' +- './ee/spec/helpers/billing_plans_helper_spec.rb' +- './ee/spec/helpers/boards_helper_spec.rb' +- './ee/spec/helpers/compliance_management/compliance_framework/group_settings_helper_spec.rb' +- './ee/spec/helpers/credentials_inventory_helper_spec.rb' +- './ee/spec/helpers/ee/access_tokens_helper_spec.rb' +- './ee/spec/helpers/ee/admin/identities_helper_spec.rb' +- './ee/spec/helpers/ee/application_settings_helper_spec.rb' +- './ee/spec/helpers/ee/auth_helper_spec.rb' +- './ee/spec/helpers/ee/blob_helper_spec.rb' +- './ee/spec/helpers/ee/branches_helper_spec.rb' +- './ee/spec/helpers/ee/ci/pipeline_editor_helper_spec.rb' +- './ee/spec/helpers/ee/ci/pipelines_helper_spec.rb' +- './ee/spec/helpers/ee/ci/runners_helper_spec.rb' +- './ee/spec/helpers/ee/dashboard_helper_spec.rb' +- './ee/spec/helpers/ee/emails_helper_spec.rb' +- './ee/spec/helpers/ee/environments_helper_spec.rb' +- './ee/spec/helpers/ee/events_helper_spec.rb' +- './ee/spec/helpers/ee/export_helper_spec.rb' +- './ee/spec/helpers/ee/feature_flags_helper_spec.rb' +- './ee/spec/helpers/ee/geo_helper_spec.rb' +- './ee/spec/helpers/ee/gitlab_routing_helper_spec.rb' +- './ee/spec/helpers/ee/graph_helper_spec.rb' +- './ee/spec/helpers/ee/groups/analytics/cycle_analytics_helper_spec.rb' +- './ee/spec/helpers/ee/groups/group_members_helper_spec.rb' +- './ee/spec/helpers/ee/groups_helper_spec.rb' +- './ee/spec/helpers/ee/groups/settings_helper_spec.rb' +- './ee/spec/helpers/ee/hooks_helper_spec.rb' +- './ee/spec/helpers/ee/integrations_helper_spec.rb' +- './ee/spec/helpers/ee/invite_members_helper_spec.rb' +- './ee/spec/helpers/ee/issuables_helper_spec.rb' +- './ee/spec/helpers/ee/issues_helper_spec.rb' +- './ee/spec/helpers/ee/labels_helper_spec.rb' +- './ee/spec/helpers/ee/learn_gitlab_helper_spec.rb' +- './ee/spec/helpers/ee/lock_helper_spec.rb' +- './ee/spec/helpers/ee/namespaces_helper_spec.rb' +- './ee/spec/helpers/ee/namespace_user_cap_reached_alert_helper_spec.rb' +- './ee/spec/helpers/ee/operations_helper_spec.rb' +- './ee/spec/helpers/ee/personal_access_tokens_helper_spec.rb' +- './ee/spec/helpers/ee/profiles_helper_spec.rb' +- './ee/spec/helpers/ee/projects/incidents_helper_spec.rb' +- './ee/spec/helpers/ee/projects/pipeline_helper_spec.rb' +- './ee/spec/helpers/ee/projects/security/api_fuzzing_configuration_helper_spec.rb' +- './ee/spec/helpers/ee/projects/security/configuration_helper_spec.rb' +- './ee/spec/helpers/ee/projects/security/dast_configuration_helper_spec.rb' +- './ee/spec/helpers/ee/projects/security/sast_configuration_helper_spec.rb' +- './ee/spec/helpers/ee/registrations_helper_spec.rb' +- './ee/spec/helpers/ee/releases_helper_spec.rb' +- './ee/spec/helpers/ee/security_orchestration_helper_spec.rb' +- './ee/spec/helpers/ee/sorting_helper_spec.rb' +- './ee/spec/helpers/ee/subscribable_banner_helper_spec.rb' +- './ee/spec/helpers/ee/system_note_helper_spec.rb' +- './ee/spec/helpers/ee/todos_helper_spec.rb' +- './ee/spec/helpers/ee/trial_helper_spec.rb' +- './ee/spec/helpers/ee/trial_registration_helper_spec.rb' +- './ee/spec/helpers/ee/users/callouts_helper_spec.rb' +- './ee/spec/helpers/ee/version_check_helper_spec.rb' +- './ee/spec/helpers/ee/welcome_helper_spec.rb' +- './ee/spec/helpers/ee/wiki_helper_spec.rb' +- './ee/spec/helpers/epics_helper_spec.rb' +- './ee/spec/helpers/gitlab_subscriptions/upcoming_reconciliation_helper_spec.rb' +- './ee/spec/helpers/groups/feature_discovery_moments_helper_spec.rb' +- './ee/spec/helpers/groups/ldap_sync_helper_spec.rb' +- './ee/spec/helpers/groups/security_features_helper_spec.rb' +- './ee/spec/helpers/groups/sso_helper_spec.rb' +- './ee/spec/helpers/incident_management/escalation_policy_helper_spec.rb' +- './ee/spec/helpers/incident_management/oncall_schedule_helper_spec.rb' +- './ee/spec/helpers/kerberos_helper_spec.rb' +- './ee/spec/helpers/license_helper_spec.rb' +- './ee/spec/helpers/license_monitoring_helper_spec.rb' +- './ee/spec/helpers/manual_quarterly_co_term_banner_helper_spec.rb' +- './ee/spec/helpers/markup_helper_spec.rb' +- './ee/spec/helpers/merge_requests_helper_spec.rb' +- './ee/spec/helpers/nav/new_dropdown_helper_spec.rb' +- './ee/spec/helpers/nav/top_nav_helper_spec.rb' +- './ee/spec/helpers/notes_helper_spec.rb' +- './ee/spec/helpers/paid_feature_callout_helper_spec.rb' +- './ee/spec/helpers/path_locks_helper_spec.rb' +- './ee/spec/helpers/preferences_helper_spec.rb' +- './ee/spec/helpers/prevent_forking_helper_spec.rb' +- './ee/spec/helpers/projects_helper_spec.rb' +- './ee/spec/helpers/projects/on_demand_scans_helper_spec.rb' +- './ee/spec/helpers/projects/project_members_helper_spec.rb' +- './ee/spec/helpers/projects/security/dast_profiles_helper_spec.rb' +- './ee/spec/helpers/projects/security/discover_helper_spec.rb' +- './ee/spec/helpers/push_rules_helper_spec.rb' +- './ee/spec/helpers/roadmaps_helper_spec.rb' +- './ee/spec/helpers/routing/pseudonymization_helper_spec.rb' +- './ee/spec/helpers/search_helper_spec.rb' +- './ee/spec/helpers/seat_count_alert_helper_spec.rb' +- './ee/spec/helpers/security_helper_spec.rb' +- './ee/spec/helpers/subscriptions_helper_spec.rb' +- './ee/spec/helpers/timeboxes_helper_spec.rb' +- './ee/spec/helpers/trial_registrations/reassurances_helper_spec.rb' +- './ee/spec/helpers/trial_status_widget_helper_spec.rb' +- './ee/spec/helpers/users_helper_spec.rb' +- './ee/spec/helpers/vulnerabilities_helper_spec.rb' +- './ee/spec/initializers/1_settings_spec.rb' +- './ee/spec/initializers/database_config_spec.rb' +- './ee/spec/initializers/fog_google_https_private_urls_spec.rb' +- './ee/spec/initializers/session_store_spec.rb' +- './ee/spec/lib/analytics/devops_adoption/snapshot_calculator_spec.rb' +- './ee/spec/lib/analytics/group_activity_calculator_spec.rb' +- './ee/spec/lib/analytics/merge_request_metrics_calculator_spec.rb' +- './ee/spec/lib/analytics/merge_request_metrics_refresh_spec.rb' +- './ee/spec/lib/analytics/productivity_analytics_request_params_spec.rb' +- './ee/spec/lib/analytics/refresh_approvals_data_spec.rb' +- './ee/spec/lib/analytics/refresh_comments_data_spec.rb' +- './ee/spec/lib/analytics/refresh_reassign_data_spec.rb' +- './ee/spec/lib/api/entities/deployments/approval_spec.rb' +- './ee/spec/lib/api/entities/deployments/approval_summary_spec.rb' +- './ee/spec/lib/api/entities/merge_request_approval_setting_spec.rb' +- './ee/spec/lib/api/entities/pending_member_spec.rb' +- './ee/spec/lib/api/entities/protected_environments/approval_rule_for_summary_spec.rb' +- './ee/spec/lib/api/entities/protected_environments/approval_rule_spec.rb' +- './ee/spec/lib/api/entities/protected_environments/deploy_access_level_spec.rb' +- './ee/spec/lib/arkose/settings_spec.rb' +- './ee/spec/lib/arkose/verify_response_spec.rb' +- './ee/spec/lib/audit/changes_spec.rb' +- './ee/spec/lib/audit/details_spec.rb' +- './ee/spec/lib/audit/external_status_check_changes_auditor_spec.rb' +- './ee/spec/lib/audit/group_merge_request_approval_setting_changes_auditor_spec.rb' +- './ee/spec/lib/audit/group_push_rules_changes_auditor_spec.rb' +- './ee/spec/lib/banzai/filter/cross_project_issuable_information_filter_spec.rb' +- './ee/spec/lib/banzai/filter/issuable_reference_expansion_filter_spec.rb' +- './ee/spec/lib/banzai/filter/jira_private_image_link_filter_spec.rb' +- './ee/spec/lib/banzai/filter/references/epic_reference_filter_spec.rb' +- './ee/spec/lib/banzai/filter/references/iteration_reference_filter_spec.rb' +- './ee/spec/lib/banzai/filter/references/label_reference_filter_spec.rb' +- './ee/spec/lib/banzai/filter/references/vulnerability_reference_filters_spec.rb' +- './ee/spec/lib/banzai/issuable_extractor_spec.rb' +- './ee/spec/lib/banzai/reference_parser/epic_parser_spec.rb' +- './ee/spec/lib/banzai/reference_parser/iteration_parser_spec.rb' +- './ee/spec/lib/banzai/reference_parser/vulnerability_parser_spec.rb' +- './ee/spec/lib/bulk_imports/common/pipelines/boards_pipeline_spec.rb' +- './ee/spec/lib/bulk_imports/common/pipelines/wiki_pipeline_spec.rb' +- './ee/spec/lib/bulk_imports/groups/graphql/get_iterations_query_spec.rb' +- './ee/spec/lib/bulk_imports/groups/pipelines/epics_pipeline_spec.rb' +- './ee/spec/lib/bulk_imports/groups/pipelines/iterations_pipeline_spec.rb' +- './ee/spec/lib/bulk_imports/projects/pipelines/issues_pipeline_spec.rb' +- './ee/spec/lib/bulk_imports/projects/pipelines/protected_branches_pipeline_spec.rb' +- './ee/spec/lib/bulk_imports/projects/pipelines/push_rule_pipeline_spec.rb' +- './ee/spec/lib/compliance_management/merge_request_approval_settings/resolver_spec.rb' +- './ee/spec/lib/container_registry/client_spec.rb' +- './ee/spec/lib/ee/api/entities/analytics/code_review/merge_request_spec.rb' +- './ee/spec/lib/ee/api/entities/analytics/group_activity_spec.rb' +- './ee/spec/lib/ee/api/entities/billable_member_spec.rb' +- './ee/spec/lib/ee/api/entities/ci/minutes/additional_pack_spec.rb' +- './ee/spec/lib/ee/api/entities/deployment_extended_spec.rb' +- './ee/spec/lib/ee/api/entities/experiment_spec.rb' +- './ee/spec/lib/ee/api/entities/geo_node_status_spec.rb' +- './ee/spec/lib/ee/api/entities/group_detail_spec.rb' +- './ee/spec/lib/ee/api/entities/groups/repository_storage_move_spec.rb' +- './ee/spec/lib/ee/api/entities/member_spec.rb' +- './ee/spec/lib/ee/api/entities/project_spec.rb' +- './ee/spec/lib/ee/api/entities/scim/conflict_spec.rb' +- './ee/spec/lib/ee/api/entities/scim/emails_spec.rb' +- './ee/spec/lib/ee/api/entities/scim/error_spec.rb' +- './ee/spec/lib/ee/api/entities/scim/not_found_spec.rb' +- './ee/spec/lib/ee/api/entities/scim/user_name_spec.rb' +- './ee/spec/lib/ee/api/entities/scim/user_spec.rb' +- './ee/spec/lib/ee/api/entities/scim/users_spec.rb' +- './ee/spec/lib/ee/api/entities/user_with_admin_spec.rb' +- './ee/spec/lib/ee/api/entities/vulnerability_export_spec.rb' +- './ee/spec/lib/ee/api/entities/vulnerability_spec.rb' +- './ee/spec/lib/ee/api/helpers/issues_helpers_spec.rb' +- './ee/spec/lib/ee/api/helpers/members_helpers_spec.rb' +- './ee/spec/lib/ee/api/helpers/notes_helpers_spec.rb' +- './ee/spec/lib/ee/api/helpers/scim_pagination_spec.rb' +- './ee/spec/lib/ee/api/helpers_spec.rb' +- './ee/spec/lib/ee/api/helpers/variables_helpers_spec.rb' +- './ee/spec/lib/ee/audit/compliance_framework_changes_auditor_spec.rb' +- './ee/spec/lib/ee/audit/group_changes_auditor_spec.rb' +- './ee/spec/lib/ee/audit/project_changes_auditor_spec.rb' +- './ee/spec/lib/ee/audit/project_ci_cd_setting_changes_auditor_spec.rb' +- './ee/spec/lib/ee/audit/project_feature_changes_auditor_spec.rb' +- './ee/spec/lib/ee/audit/project_setting_changes_auditor_spec.rb' +- './ee/spec/lib/ee/audit/protected_branches_changes_auditor_spec.rb' +- './ee/spec/lib/ee/backup/repositories_spec.rb' +- './ee/spec/lib/ee/banzai/filter/sanitization_filter_spec.rb' +- './ee/spec/lib/ee/bulk_imports/groups/stage_spec.rb' +- './ee/spec/lib/ee/bulk_imports/projects/stage_spec.rb' +- './ee/spec/lib/ee/event_filter_spec.rb' +- './ee/spec/lib/ee/feature_spec.rb' +- './ee/spec/lib/ee/gitlab/alert_management/payload/generic_spec.rb' +- './ee/spec/lib/ee/gitlab/analytics/cycle_analytics/aggregated/base_query_builder_spec.rb' +- './ee/spec/lib/ee/gitlab/analytics/cycle_analytics/base_query_builder_spec.rb' +- './ee/spec/lib/ee/gitlab/application_context_spec.rb' +- './ee/spec/lib/ee/gitlab/application_rate_limiter_spec.rb' +- './ee/spec/lib/ee/gitlab/auth/auth_finders_spec.rb' +- './ee/spec/lib/ee/gitlab/auth/ldap/access_levels_spec.rb' +- './ee/spec/lib/ee/gitlab/auth/ldap/config_spec.rb' +- './ee/spec/lib/ee/gitlab/auth/ldap/group_spec.rb' +- './ee/spec/lib/ee/gitlab/auth/ldap/sync/admin_users_spec.rb' +- './ee/spec/lib/ee/gitlab/auth/ldap/sync/external_users_spec.rb' +- './ee/spec/lib/ee/gitlab/auth/ldap/sync/group_spec.rb' +- './ee/spec/lib/ee/gitlab/auth/ldap/sync/groups_spec.rb' +- './ee/spec/lib/ee/gitlab/auth/ldap/sync/proxy_spec.rb' +- './ee/spec/lib/ee/gitlab/auth/request_authenticator_spec.rb' +- './ee/spec/lib/ee/gitlab/auth/saml/identity_linker_spec.rb' +- './ee/spec/lib/ee/gitlab/background_migration/backfill_iteration_cadence_id_for_boards_spec.rb' +- './ee/spec/lib/ee/gitlab/background_migration/backfill_project_statistics_container_repository_size_spec.rb' +- './ee/spec/lib/ee/gitlab/background_migration/create_security_setting_spec.rb' +- './ee/spec/lib/ee/gitlab/background_migration/delete_invalid_epic_issues_spec.rb' +- './ee/spec/lib/ee/gitlab/background_migration/drop_invalid_remediations_spec.rb' +- './ee/spec/lib/ee/gitlab/background_migration/fix_incorrect_max_seats_used_spec.rb' +- './ee/spec/lib/ee/gitlab/background_migration/migrate_approver_to_approval_rules_check_progress_spec.rb' +- './ee/spec/lib/ee/gitlab/background_migration/migrate_approver_to_approval_rules_in_batch_spec.rb' +- './ee/spec/lib/ee/gitlab/background_migration/migrate_approver_to_approval_rules_spec.rb' +- './ee/spec/lib/ee/gitlab/background_migration/migrate_job_artifact_registry_to_ssf_spec.rb' +- './ee/spec/lib/ee/gitlab/background_migration/migrate_shared_vulnerability_scanners_spec.rb' +- './ee/spec/lib/ee/gitlab/background_migration/populate_latest_pipeline_ids_spec.rb' +- './ee/spec/lib/ee/gitlab/background_migration/populate_namespace_statistics_spec.rb' +- './ee/spec/lib/ee/gitlab/background_migration/populate_resolved_on_default_branch_column_spec.rb' +- './ee/spec/lib/ee/gitlab/background_migration/populate_uuids_for_security_findings_spec.rb' +- './ee/spec/lib/ee/gitlab/background_migration/purge_stale_security_scans_spec.rb' +- './ee/spec/lib/ee/gitlab/background_migration/recalculate_vulnerability_finding_signatures_for_findings_spec.rb' +- './ee/spec/lib/ee/gitlab/background_migration/update_vulnerability_occurrences_location_spec.rb' +- './ee/spec/lib/ee/gitlab/checks/push_rule_check_spec.rb' +- './ee/spec/lib/ee/gitlab/checks/push_rules/branch_check_spec.rb' +- './ee/spec/lib/ee/gitlab/checks/push_rules/commit_check_spec.rb' +- './ee/spec/lib/ee/gitlab/checks/push_rules/file_size_check_spec.rb' +- './ee/spec/lib/ee/gitlab/checks/push_rules/tag_check_spec.rb' +- './ee/spec/lib/ee/gitlab/ci/config/entry/bridge_spec.rb' +- './ee/spec/lib/ee/gitlab/ci/config/entry/need_spec.rb' +- './ee/spec/lib/ee/gitlab/ci/config/entry/needs_spec.rb' +- './ee/spec/lib/ee/gitlab/ci/config_spec.rb' +- './ee/spec/lib/ee/gitlab/ci/jwt_spec.rb' +- './ee/spec/lib/ee/gitlab/ci/matching/runner_matcher_spec.rb' +- './ee/spec/lib/ee/gitlab/ci/parsers/security/common_spec.rb' +- './ee/spec/lib/ee/gitlab/ci/parsers/security/validators/schema_validator_spec.rb' +- './ee/spec/lib/ee/gitlab/ci/pipeline/chain/validate/abilities_spec.rb' +- './ee/spec/lib/ee/gitlab/ci/pipeline/chain/validate/after_config_spec.rb' +- './ee/spec/lib/ee/gitlab/ci/pipeline/chain/validate/external_spec.rb' +- './ee/spec/lib/ee/gitlab/ci/pipeline/chain/validate/security_orchestration_policy_spec.rb' +- './ee/spec/lib/ee/gitlab/ci/pipeline/quota/activity_spec.rb' +- './ee/spec/lib/ee/gitlab/ci/pipeline/quota/job_activity_spec.rb' +- './ee/spec/lib/ee/gitlab/ci/pipeline/quota/size_spec.rb' +- './ee/spec/lib/ee/gitlab/ci/reports/security/reports_spec.rb' +- './ee/spec/lib/ee/gitlab/ci/status/build/manual_spec.rb' +- './ee/spec/lib/ee/gitlab/ci/templates/templates_spec.rb' +- './ee/spec/lib/ee/gitlab/cleanup/orphan_job_artifact_files_batch_spec.rb' +- './ee/spec/lib/ee/gitlab/cleanup/orphan_job_artifact_files_spec.rb' +- './ee/spec/lib/ee/gitlab/database/gitlab_schema_spec.rb' +- './ee/spec/lib/ee/gitlab/database_spec.rb' +- './ee/spec/lib/ee/gitlab/elastic/helper_spec.rb' +- './ee/spec/lib/ee/gitlab/email/handler/service_desk_handler_spec.rb' +- './ee/spec/lib/ee/gitlab/etag_caching/router/rails_spec.rb' +- './ee/spec/lib/ee/gitlab/event_store_spec.rb' +- './ee/spec/lib/ee/gitlab/git_access_design_spec.rb' +- './ee/spec/lib/ee/gitlab/git_access_project_spec.rb' +- './ee/spec/lib/ee/gitlab/git_access_snippet_spec.rb' +- './ee/spec/lib/ee/gitlab/gon_helper_spec.rb' +- './ee/spec/lib/ee/gitlab/group_search_results_spec.rb' +- './ee/spec/lib/ee/gitlab/hook_data/group_member_builder_spec.rb' +- './ee/spec/lib/ee/gitlab/hook_data/issue_builder_spec.rb' +- './ee/spec/lib/ee/gitlab/hook_data/user_builder_spec.rb' +- './ee/spec/lib/ee/gitlab/import_export/after_export_strategies/custom_template_export_import_strategy_spec.rb' +- './ee/spec/lib/ee/gitlab/import_export/group/legacy_tree_restorer_spec.rb' +- './ee/spec/lib/ee/gitlab/import_export/group/legacy_tree_saver_spec.rb' +- './ee/spec/lib/ee/gitlab/import_export/group/tree_restorer_spec.rb' +- './ee/spec/lib/ee/gitlab/import_export/group/tree_saver_spec.rb' +- './ee/spec/lib/ee/gitlab/import_export/project/tree_restorer_spec.rb' +- './ee/spec/lib/ee/gitlab/import_export/project/tree_saver_spec.rb' +- './ee/spec/lib/ee/gitlab/import_export/repo_restorer_spec.rb' +- './ee/spec/lib/ee/gitlab/import_export/wiki_repo_saver_spec.rb' +- './ee/spec/lib/ee/gitlab/ip_restriction/enforcer_spec.rb' +- './ee/spec/lib/ee/gitlab/issuable/clone/copy_resource_events_service_spec.rb' +- './ee/spec/lib/ee/gitlab/issuable_metadata_spec.rb' +- './ee/spec/lib/ee/gitlab/metrics/samplers/database_sampler_spec.rb' +- './ee/spec/lib/ee/gitlab/middleware/read_only_spec.rb' +- './ee/spec/lib/ee/gitlab/namespaces/storage/enforcement_spec.rb' +- './ee/spec/lib/ee/gitlab/namespace_storage_size_error_message_spec.rb' +- './ee/spec/lib/ee/gitlab/omniauth_initializer_spec.rb' +- './ee/spec/lib/ee/gitlab/pages/deployment_update_spec.rb' +- './ee/spec/lib/ee/gitlab/prometheus/metric_group_spec.rb' +- './ee/spec/lib/ee/gitlab/rack_attack/request_spec.rb' +- './ee/spec/lib/ee/gitlab/repo_path_spec.rb' +- './ee/spec/lib/ee/gitlab/repository_size_checker_spec.rb' +- './ee/spec/lib/ee/gitlab/scim/attribute_transform_spec.rb' +- './ee/spec/lib/ee/gitlab/scim/deprovision_service_spec.rb' +- './ee/spec/lib/ee/gitlab/scim/filter_parser_spec.rb' +- './ee/spec/lib/ee/gitlab/scim/params_parser_spec.rb' +- './ee/spec/lib/ee/gitlab/scim/provisioning_service_spec.rb' +- './ee/spec/lib/ee/gitlab/scim/reprovision_service_spec.rb' +- './ee/spec/lib/ee/gitlab/scim/value_parser_spec.rb' +- './ee/spec/lib/ee/gitlab/search_results_spec.rb' +- './ee/spec/lib/ee/gitlab/security/scan_configuration_spec.rb' +- './ee/spec/lib/ee/gitlab/snippet_search_results_spec.rb' +- './ee/spec/lib/ee/gitlab/template/gitlab_ci_yml_template_spec.rb' +- './ee/spec/lib/ee/gitlab/tracking_spec.rb' +- './ee/spec/lib/ee/gitlab/url_builder_spec.rb' +- './ee/spec/lib/ee/gitlab/usage_data_counters/hll_redis_counter_spec.rb' +- './ee/spec/lib/ee/gitlab/usage_data_counters/issue_activity_unique_counter_spec.rb' +- './ee/spec/lib/ee/gitlab/usage_data_counters/merge_request_activity_unique_counter_spec.rb' +- './ee/spec/lib/ee/gitlab/usage_data_counters/work_item_activity_unique_counter_spec.rb' +- './ee/spec/lib/ee/gitlab/usage_data_non_sql_metrics_spec.rb' +- './ee/spec/lib/ee/gitlab/usage_data_spec.rb' +- './ee/spec/lib/ee/gitlab/usage/service_ping/payload_keys_processor_spec.rb' +- './ee/spec/lib/ee/gitlab/usage/service_ping_report_spec.rb' +- './ee/spec/lib/ee/gitlab/verify/lfs_objects_spec.rb' +- './ee/spec/lib/ee/gitlab/verify/uploads_spec.rb' +- './ee/spec/lib/ee/gitlab/web_hooks/rate_limiter_spec.rb' +- './ee/spec/lib/ee/gitlab/web_ide/config/entry/global_spec.rb' +- './ee/spec/lib/ee/service_ping/build_payload_spec.rb' +- './ee/spec/lib/ee/service_ping/permit_data_categories_spec.rb' +- './ee/spec/lib/ee/service_ping/service_ping_settings_spec.rb' +- './ee/spec/lib/ee/sidebars/groups/menus/issues_menu_spec.rb' +- './ee/spec/lib/ee/sidebars/groups/menus/settings_menu_spec.rb' +- './ee/spec/lib/ee/sidebars/projects/menus/analytics_menu_spec.rb' +- './ee/spec/lib/ee/sidebars/projects/menus/ci_cd_menu_spec.rb' +- './ee/spec/lib/ee/sidebars/projects/menus/issues_menu_spec.rb' +- './ee/spec/lib/ee/sidebars/projects/menus/monitor_menu_spec.rb' +- './ee/spec/lib/ee/sidebars/projects/menus/repository_menu_spec.rb' +- './ee/spec/lib/ee/sidebars/projects/menus/security_compliance_menu_spec.rb' +- './ee/spec/lib/ee/sidebars/projects/panel_spec.rb' +- './ee/spec/lib/elastic/latest/commit_config_spec.rb' +- './ee/spec/lib/elastic/latest/config_spec.rb' +- './ee/spec/lib/elastic/latest/custom_language_analyzers_spec.rb' +- './ee/spec/lib/elastic/latest/git_class_proxy_spec.rb' +- './ee/spec/lib/elastic/latest/git_instance_proxy_spec.rb' +- './ee/spec/lib/elastic/latest/issue_config_spec.rb' +- './ee/spec/lib/elastic/latest/merge_request_config_spec.rb' +- './ee/spec/lib/elastic/latest/note_config_spec.rb' +- './ee/spec/lib/elastic/latest/project_instance_proxy_spec.rb' +- './ee/spec/lib/elastic/latest/project_wiki_class_proxy_spec.rb' +- './ee/spec/lib/elastic/latest/project_wiki_instance_proxy_spec.rb' +- './ee/spec/lib/elastic/latest/routing_spec.rb' +- './ee/spec/lib/elastic/latest/snippet_instance_proxy_spec.rb' +- './ee/spec/lib/elastic/migration_spec.rb' +- './ee/spec/lib/elastic/multi_version_class_proxy_spec.rb' +- './ee/spec/lib/elastic/multi_version_instance_proxy_spec.rb' +- './ee/spec/lib/gem_extensions/elasticsearch/model/adapter/active_record/records_spec.rb' +- './ee/spec/lib/gem_extensions/elasticsearch/model/indexing/instance_methods_spec.rb' +- './ee/spec/lib/gitlab/alert_management/alert_payload_field_extractor_spec.rb' +- './ee/spec/lib/gitlab/analytics/cycle_analytics/aggregated/data_for_duration_chart_spec.rb' +- './ee/spec/lib/gitlab/analytics/cycle_analytics/data_collector_spec.rb' +- './ee/spec/lib/gitlab/analytics/cycle_analytics/data_for_duration_chart_spec.rb' +- './ee/spec/lib/gitlab/analytics/cycle_analytics/distinct_stage_loader_spec.rb' +- './ee/spec/lib/gitlab/analytics/cycle_analytics/request_params_spec.rb' +- './ee/spec/lib/gitlab/analytics/cycle_analytics/stage_events/issue_closed_spec.rb' +- './ee/spec/lib/gitlab/analytics/cycle_analytics/stage_events/issue_first_added_to_board_spec.rb' +- './ee/spec/lib/gitlab/analytics/cycle_analytics/stage_events/issue_first_associated_with_milestone_spec.rb' +- './ee/spec/lib/gitlab/analytics/cycle_analytics/stage_events/issue_label_added_spec.rb' +- './ee/spec/lib/gitlab/analytics/cycle_analytics/stage_events/issue_label_removed_spec.rb' +- './ee/spec/lib/gitlab/analytics/cycle_analytics/stage_events/issue_last_edited_spec.rb' +- './ee/spec/lib/gitlab/analytics/cycle_analytics/stage_events/merge_request_closed_spec.rb' +- './ee/spec/lib/gitlab/analytics/cycle_analytics/stage_events/merge_request_first_commit_at_spec.rb' +- './ee/spec/lib/gitlab/analytics/cycle_analytics/stage_events/merge_request_label_added_spec.rb' +- './ee/spec/lib/gitlab/analytics/cycle_analytics/stage_events/merge_request_label_removed_spec.rb' +- './ee/spec/lib/gitlab/analytics/cycle_analytics/stage_events/merge_request_last_edited_spec.rb' +- './ee/spec/lib/gitlab/analytics/cycle_analytics/summary/base_dora_summary_spec.rb' +- './ee/spec/lib/gitlab/analytics/cycle_analytics/summary/change_failure_rate_spec.rb' +- './ee/spec/lib/gitlab/analytics/cycle_analytics/summary/group/stage_summary_spec.rb' +- './ee/spec/lib/gitlab/analytics/cycle_analytics/summary/lead_time_for_changes_spec.rb' +- './ee/spec/lib/gitlab/analytics/cycle_analytics/summary/lead_time_spec.rb' +- './ee/spec/lib/gitlab/analytics/cycle_analytics/summary/stage_time_summary_spec.rb' +- './ee/spec/lib/gitlab/analytics/cycle_analytics/summary/time_to_restore_service_spec.rb' +- './ee/spec/lib/gitlab/analytics/type_of_work/tasks_by_type_spec.rb' +- './ee/spec/lib/gitlab/audit/auditor_spec.rb' +- './ee/spec/lib/gitlab/audit/events/preloader_spec.rb' +- './ee/spec/lib/gitlab/audit/levels/group_spec.rb' +- './ee/spec/lib/gitlab/audit/levels/instance_spec.rb' +- './ee/spec/lib/gitlab/audit/levels/project_spec.rb' +- './ee/spec/lib/gitlab/auth/group_saml/auth_hash_spec.rb' +- './ee/spec/lib/gitlab/auth/group_saml/dynamic_settings_spec.rb' +- './ee/spec/lib/gitlab/auth/group_saml/failure_handler_spec.rb' +- './ee/spec/lib/gitlab/auth/group_saml/gma_membership_enforcer_spec.rb' +- './ee/spec/lib/gitlab/auth/group_saml/group_lookup_spec.rb' +- './ee/spec/lib/gitlab/auth/group_saml/identity_linker_spec.rb' +- './ee/spec/lib/gitlab/auth/group_saml/membership_enforcer_spec.rb' +- './ee/spec/lib/gitlab/auth/group_saml/membership_updater_spec.rb' +- './ee/spec/lib/gitlab/auth/group_saml/response_check_spec.rb' +- './ee/spec/lib/gitlab/auth/group_saml/response_store_spec.rb' +- './ee/spec/lib/gitlab/auth/group_saml/session_enforcer_spec.rb' +- './ee/spec/lib/gitlab/auth/group_saml/sso_enforcer_spec.rb' +- './ee/spec/lib/gitlab/auth/group_saml/sso_state_spec.rb' +- './ee/spec/lib/gitlab/auth/group_saml/token_actor_spec.rb' +- './ee/spec/lib/gitlab/auth/group_saml/user_spec.rb' +- './ee/spec/lib/gitlab/auth/group_saml/xml_response_spec.rb' +- './ee/spec/lib/gitlab/auth/ldap/access_spec.rb' +- './ee/spec/lib/gitlab/auth/ldap/adapter_spec.rb' +- './ee/spec/lib/gitlab/auth/ldap/person_spec.rb' +- './ee/spec/lib/gitlab/auth/ldap/user_spec.rb' +- './ee/spec/lib/gitlab/auth/o_auth/auth_hash_spec.rb' +- './ee/spec/lib/gitlab/auth/o_auth/user_spec.rb' +- './ee/spec/lib/gitlab/authority_analyzer_spec.rb' +- './ee/spec/lib/gitlab/auth/otp/session_enforcer_spec.rb' +- './ee/spec/lib/gitlab/auth/saml/config_spec.rb' +- './ee/spec/lib/gitlab/auth/saml/membership_updater_spec.rb' +- './ee/spec/lib/gitlab/auth/saml/user_spec.rb' +- './ee/spec/lib/gitlab/auth/smartcard/certificate_spec.rb' +- './ee/spec/lib/gitlab/auth/smartcard/ldap_certificate_spec.rb' +- './ee/spec/lib/gitlab/auth/smartcard/san_extension_spec.rb' +- './ee/spec/lib/gitlab/auth/smartcard/session_enforcer_spec.rb' +- './ee/spec/lib/gitlab/auth/smartcard/session_spec.rb' +- './ee/spec/lib/gitlab/background_migration/migrate_requirements_to_work_items_spec.rb' +- './ee/spec/lib/gitlab/background_migration/populate_test_reports_issue_id_spec.rb' +- './ee/spec/lib/gitlab/background_migration/remove_all_trace_expiration_dates_spec.rb' +- './ee/spec/lib/gitlab/bullet/exclusions_spec.rb' +- './ee/spec/lib/gitlab/cache_spec.rb' +- './ee/spec/lib/gitlab/checks/changes_access_spec.rb' +- './ee/spec/lib/gitlab/checks/diff_check_spec.rb' +- './ee/spec/lib/gitlab/ci/config/entry/dast_configuration_spec.rb' +- './ee/spec/lib/gitlab/ci/config/entry/job_spec.rb' +- './ee/spec/lib/gitlab/ci/config/entry/secret_spec.rb' +- './ee/spec/lib/gitlab/ci/config/entry/vault/engine_spec.rb' +- './ee/spec/lib/gitlab/ci/config/entry/vault/secret_spec.rb' +- './ee/spec/lib/gitlab/ci/config/required/processor_spec.rb' +- './ee/spec/lib/gitlab/ci/config/security_orchestration_policies/processor_spec.rb' +- './ee/spec/lib/gitlab/cidr_spec.rb' +- './ee/spec/lib/gitlab/ci/minutes/build_consumption_spec.rb' +- './ee/spec/lib/gitlab/ci/minutes/cached_quota_spec.rb' +- './ee/spec/lib/gitlab/ci/minutes/cost_factor_spec.rb' +- './ee/spec/lib/gitlab/ci/minutes/gitlab_contribution_cost_factor_spec.rb' +- './ee/spec/lib/gitlab/ci/minutes/runners_availability_spec.rb' +- './ee/spec/lib/gitlab/ci/parsers/license_compliance/license_scanning_spec.rb' +- './ee/spec/lib/gitlab/ci/parsers/metrics/generic_spec.rb' +- './ee/spec/lib/gitlab/ci/parsers/security/cluster_image_scanning_spec.rb' +- './ee/spec/lib/gitlab/ci/parsers/security/container_scanning_spec.rb' +- './ee/spec/lib/gitlab/ci/parsers/security/coverage_fuzzing_spec.rb' +- './ee/spec/lib/gitlab/ci/parsers/security/dast_spec.rb' +- './ee/spec/lib/gitlab/ci/parsers/security/dependency_list_spec.rb' +- './ee/spec/lib/gitlab/ci/parsers/security/dependency_scanning_spec.rb' +- './ee/spec/lib/gitlab/ci/parsers/security/formatters/dast_spec.rb' +- './ee/spec/lib/gitlab/ci/parsers/security/formatters/dependency_list_spec.rb' +- './ee/spec/lib/gitlab/ci/parsers/security/validators/default_branch_image_validator_spec.rb' +- './ee/spec/lib/gitlab/ci/pipeline/chain/config/content_spec.rb' +- './ee/spec/lib/gitlab/ci/pipeline/chain/create_cross_database_associations_spec.rb' +- './ee/spec/lib/gitlab/ci/pipeline/chain/limit/activity_spec.rb' +- './ee/spec/lib/gitlab/ci/pipeline/chain/limit/job_activity_spec.rb' +- './ee/spec/lib/gitlab/ci/pipeline/chain/limit/size_spec.rb' +- './ee/spec/lib/gitlab/ci/reports/coverage_fuzzing/report_spec.rb' +- './ee/spec/lib/gitlab/ci/reports/dependency_list/dependency_spec.rb' +- './ee/spec/lib/gitlab/ci/reports/dependency_list/report_spec.rb' +- './ee/spec/lib/gitlab/ci/reports/license_scanning/dependency_spec.rb' +- './ee/spec/lib/gitlab/ci/reports/license_scanning/license_spec.rb' +- './ee/spec/lib/gitlab/ci/reports/license_scanning/reports_comparer_spec.rb' +- './ee/spec/lib/gitlab/ci/reports/license_scanning/report_spec.rb' +- './ee/spec/lib/gitlab/ci/reports/metrics/reports_comparer_spec.rb' +- './ee/spec/lib/gitlab/ci/reports/metrics/report_spec.rb' +- './ee/spec/lib/gitlab/ci/reports/security/finding_spec.rb' +- './ee/spec/lib/gitlab/ci/reports/security/locations/cluster_image_scanning_spec.rb' +- './ee/spec/lib/gitlab/ci/reports/security/locations/container_scanning_spec.rb' +- './ee/spec/lib/gitlab/ci/reports/security/locations/dast_spec.rb' +- './ee/spec/lib/gitlab/ci/reports/security/locations/dependency_scanning_spec.rb' +- './ee/spec/lib/gitlab/ci/reports/security/remediation_spec.rb' +- './ee/spec/lib/gitlab/ci/templates/api_security_gitlab_ci_yaml_spec.rb' +- './ee/spec/lib/gitlab/ci/templates/api_security_latest_gitlab_ci_yaml_spec.rb' +- './ee/spec/lib/gitlab/ci/templates/container_scanning_gitlab_ci_yaml_spec.rb' +- './ee/spec/lib/gitlab/ci/templates/coverage_fuzzing_gitlab_ci_yaml_spec.rb' +- './ee/spec/lib/gitlab/ci/templates/dast_api_gitlab_ci_yaml_spec.rb' +- './ee/spec/lib/gitlab/ci/templates/dast_api_latest_gitlab_ci_yaml_spec.rb' +- './ee/spec/lib/gitlab/ci/templates/dast_gitlab_ci_yaml_spec.rb' +- './ee/spec/lib/gitlab/ci/templates/dast_latest_gitlab_ci_yaml_spec.rb' +- './ee/spec/lib/gitlab/ci/templates/dast_on_demand_api_scan_gitlab_ci_yaml_spec.rb' +- './ee/spec/lib/gitlab/ci/templates/dast_runner_validation_gitlab_ci_yaml_spec.rb' +- './ee/spec/lib/gitlab/ci/templates/dependency_scanning_gitlab_ci_yaml_spec.rb' +- './ee/spec/lib/gitlab/ci/templates/Jobs/browser_performance_testing_gitlab_ci_yaml_spec.rb' +- './ee/spec/lib/gitlab/ci/templates/Jobs/dast_default_branch_gitlab_ci_yaml_spec.rb' +- './ee/spec/lib/gitlab/ci/templates/Jobs/load_performance_testing_gitlab_ci_yaml_spec.rb' +- './ee/spec/lib/gitlab/ci/templates/license_scanning_gitlab_ci_yaml_spec.rb' +- './ee/spec/lib/gitlab/ci/templates/sast_gitlab_ci_yaml_spec.rb' +- './ee/spec/lib/gitlab/ci/templates/sast_iac_gitlab_ci_yaml_spec.rb' +- './ee/spec/lib/gitlab/ci/templates/sast_latest_gitlab_ci_yaml_spec.rb' +- './ee/spec/lib/gitlab/ci/templates/secret_detection_gitlab_ci_yaml_spec.rb' +- './ee/spec/lib/gitlab/ci/templates/secret_detection_latest_gitlab_ci_yaml_spec.rb' +- './ee/spec/lib/gitlab/ci/templates/secure_binaries_ci_yaml_spec.rb' +- './ee/spec/lib/gitlab/ci/templates/Verify/browser_performance_testing_gitlab_ci_yaml_spec.rb' +- './ee/spec/lib/gitlab/ci/templates/Verify/load_performance_testing_gitlab_ci_yaml_spec.rb' +- './ee/spec/lib/gitlab/ci/yaml_processor_spec.rb' +- './ee/spec/lib/gitlab/code_owners/entry_spec.rb' +- './ee/spec/lib/gitlab/code_owners/file_spec.rb' +- './ee/spec/lib/gitlab/code_owners/groups_loader_spec.rb' +- './ee/spec/lib/gitlab/code_owners/loader_spec.rb' +- './ee/spec/lib/gitlab/code_owners/reference_extractor_spec.rb' +- './ee/spec/lib/gitlab/code_owners_spec.rb' +- './ee/spec/lib/gitlab/code_owners/users_loader_spec.rb' +- './ee/spec/lib/gitlab/code_owners/validator_spec.rb' +- './ee/spec/lib/gitlab/compliance_management/violations/approved_by_committer_spec.rb' +- './ee/spec/lib/gitlab/compliance_management/violations/approved_by_insufficient_users_spec.rb' +- './ee/spec/lib/gitlab/compliance_management/violations/approved_by_merge_request_author_spec.rb' +- './ee/spec/lib/gitlab/com_spec.rb' +- './ee/spec/lib/gitlab/console_spec.rb' +- './ee/spec/lib/gitlab/contribution_analytics/data_collector_spec.rb' +- './ee/spec/lib/gitlab/customers_dot/jwt_spec.rb' +- './ee/spec/lib/gitlab/custom_file_templates_spec.rb' +- './ee/spec/lib/gitlab/cycle_analytics/stage_summary_spec.rb' +- './ee/spec/lib/gitlab/data_builder/vulnerability_spec.rb' +- './ee/spec/lib/gitlab/elastic/bulk_indexer_spec.rb' +- './ee/spec/lib/gitlab/elastic/client_spec.rb' +- './ee/spec/lib/gitlab/elastic/document_reference_spec.rb' +- './ee/spec/lib/gitlab/elastic/elasticsearch_enabled_cache_spec.rb' +- './ee/spec/lib/gitlab/elastic/group_search_results_spec.rb' +- './ee/spec/lib/gitlab/elastic/indexer_spec.rb' +- './ee/spec/lib/gitlab/elastic/project_search_results_spec.rb' +- './ee/spec/lib/gitlab/elastic/search_results_spec.rb' +- './ee/spec/lib/gitlab/elastic/snippet_search_results_spec.rb' +- './ee/spec/lib/gitlab/email/handler/create_note_handler_spec.rb' +- './ee/spec/lib/gitlab/email/message/account_validation_spec.rb' +- './ee/spec/lib/gitlab/exclusive_lease_spec.rb' +- './ee/spec/lib/gitlab/expiring_subscription_message_spec.rb' +- './ee/spec/lib/gitlab/favicon_spec.rb' +- './ee/spec/lib/gitlab/geo/base_request_spec.rb' +- './ee/spec/lib/gitlab/geo/cron_manager_spec.rb' +- './ee/spec/lib/gitlab/geo/event_gap_tracking_spec.rb' +- './ee/spec/lib/gitlab/geo/geo_node_status_check_spec.rb' +- './ee/spec/lib/gitlab/geo/geo_tasks_spec.rb' +- './ee/spec/lib/gitlab/geo/git_push_http_spec.rb' +- './ee/spec/lib/gitlab/geo/git_ssh_proxy_spec.rb' +- './ee/spec/lib/gitlab/geo/health_check_spec.rb' +- './ee/spec/lib/gitlab/geo/json_request_spec.rb' +- './ee/spec/lib/gitlab/geo/jwt_request_decoder_spec.rb' +- './ee/spec/lib/gitlab/geo/log_cursor/daemon_spec.rb' +- './ee/spec/lib/gitlab/geo/log_cursor/event_logs_spec.rb' +- './ee/spec/lib/gitlab/geo/log_cursor/events/cache_invalidation_event_spec.rb' +- './ee/spec/lib/gitlab/geo/log_cursor/events/container_repository_updated_event_spec.rb' +- './ee/spec/lib/gitlab/geo/log_cursor/events/design_repository_updated_event_spec.rb' +- './ee/spec/lib/gitlab/geo/log_cursor/events/event_spec.rb' +- './ee/spec/lib/gitlab/geo/log_cursor/events/hashed_storage_attachments_event_spec.rb' +- './ee/spec/lib/gitlab/geo/log_cursor/events/hashed_storage_migrated_event_spec.rb' +- './ee/spec/lib/gitlab/geo/log_cursor/events/repositories_changed_event_spec.rb' +- './ee/spec/lib/gitlab/geo/log_cursor/events/repository_created_event_spec.rb' +- './ee/spec/lib/gitlab/geo/log_cursor/events/repository_deleted_event_spec.rb' +- './ee/spec/lib/gitlab/geo/log_cursor/events/repository_renamed_event_spec.rb' +- './ee/spec/lib/gitlab/geo/log_cursor/events/repository_updated_event_spec.rb' +- './ee/spec/lib/gitlab/geo/log_cursor/events/reset_checksum_event_spec.rb' +- './ee/spec/lib/gitlab/geo/log_cursor/lease_spec.rb' +- './ee/spec/lib/gitlab/geo/log_cursor/logger_spec.rb' +- './ee/spec/lib/gitlab/geo/logger_spec.rb' +- './ee/spec/lib/gitlab/geo/log_helpers_spec.rb' +- './ee/spec/lib/gitlab/geo/oauth/login_state_spec.rb' +- './ee/spec/lib/gitlab/geo/oauth/logout_state_spec.rb' +- './ee/spec/lib/gitlab/geo/oauth/logout_token_spec.rb' +- './ee/spec/lib/gitlab/geo/oauth/session_spec.rb' +- './ee/spec/lib/gitlab/geo/registry_batcher_spec.rb' +- './ee/spec/lib/gitlab/geo/replication/blob_downloader_spec.rb' +- './ee/spec/lib/gitlab/geo/replication/blob_retriever_spec.rb' +- './ee/spec/lib/gitlab/geo/replicator_spec.rb' +- './ee/spec/lib/gitlab/geo/signed_data_spec.rb' +- './ee/spec/lib/gitlab/geo_spec.rb' +- './ee/spec/lib/gitlab/git_access_spec.rb' +- './ee/spec/lib/gitlab/git_access_wiki_spec.rb' +- './ee/spec/lib/gitlab/gl_repository/identifier_spec.rb' +- './ee/spec/lib/gitlab/gl_repository/repo_type_spec.rb' +- './ee/spec/lib/gitlab/gl_repository_spec.rb' +- './ee/spec/lib/gitlab/graphql/aggregations/epics/epic_node_spec.rb' +- './ee/spec/lib/gitlab/graphql/aggregations/epics/lazy_epic_aggregate_spec.rb' +- './ee/spec/lib/gitlab/graphql/aggregations/epics/lazy_links_aggregate_spec.rb' +- './ee/spec/lib/gitlab/graphql/aggregations/issuables/lazy_links_aggregate_spec.rb' +- './ee/spec/lib/gitlab/graphql/aggregations/issues/lazy_links_aggregate_spec.rb' +- './ee/spec/lib/gitlab/graphql/aggregations/security_orchestration_policies/lazy_dast_profile_aggregate_spec.rb' +- './ee/spec/lib/gitlab/graphql/aggregations/vulnerabilities/lazy_user_notes_count_aggregate_spec.rb' +- './ee/spec/lib/gitlab/graphql/aggregations/vulnerability_statistics/lazy_aggregate_spec.rb' +- './ee/spec/lib/gitlab/graphql/loaders/bulk_epic_aggregate_loader_spec.rb' +- './ee/spec/lib/gitlab/graphql/loaders/oncall_participant_loader_spec.rb' +- './ee/spec/lib/gitlab/group_plans_preloader_spec.rb' +- './ee/spec/lib/gitlab/import_export/attributes_permitter_spec.rb' +- './ee/spec/lib/gitlab/import_export/group/group_and_descendants_repo_restorer_spec.rb' +- './ee/spec/lib/gitlab/import_export/group/group_and_descendants_repo_saver_spec.rb' +- './ee/spec/lib/gitlab/import_export/group/relation_factory_spec.rb' +- './ee/spec/lib/gitlab/import_export/project/object_builder_spec.rb' +- './ee/spec/lib/gitlab/import_sources_spec.rb' +- './ee/spec/lib/gitlab/incident_management_spec.rb' +- './ee/spec/lib/gitlab/ingestion/bulk_insertable_task_spec.rb' +- './ee/spec/lib/gitlab/insights/executors/dora_executor_spec.rb' +- './ee/spec/lib/gitlab/insights/executors/issuable_executor_spec.rb' +- './ee/spec/lib/gitlab/insights/finders/issuable_finder_spec.rb' +- './ee/spec/lib/gitlab/insights/finders/projects_finder_spec.rb' +- './ee/spec/lib/gitlab/insights/loader_spec.rb' +- './ee/spec/lib/gitlab/insights/project_insights_config_spec.rb' +- './ee/spec/lib/gitlab/insights/reducers/base_reducer_spec.rb' +- './ee/spec/lib/gitlab/insights/reducers/count_per_label_reducer_spec.rb' +- './ee/spec/lib/gitlab/insights/reducers/count_per_period_reducer_spec.rb' +- './ee/spec/lib/gitlab/insights/reducers/dora_reducer_spec.rb' +- './ee/spec/lib/gitlab/insights/reducers/label_count_per_period_reducer_spec.rb' +- './ee/spec/lib/gitlab/insights/serializers/chartjs/bar_serializer_spec.rb' +- './ee/spec/lib/gitlab/insights/serializers/chartjs/bar_time_series_serializer_spec.rb' +- './ee/spec/lib/gitlab/insights/serializers/chartjs/line_serializer_spec.rb' +- './ee/spec/lib/gitlab/insights/serializers/chartjs/multi_series_serializer_spec.rb' +- './ee/spec/lib/gitlab/insights/validators/params_validator_spec.rb' +- './ee/spec/lib/gitlab/instrumentation/elasticsearch_transport_spec.rb' +- './ee/spec/lib/gitlab/instrumentation_helper_spec.rb' +- './ee/spec/lib/gitlab/ip_address_state_spec.rb' +- './ee/spec/lib/gitlab/items_collection_spec.rb' +- './ee/spec/lib/gitlab/kerberos/authentication_spec.rb' +- './ee/spec/lib/gitlab/legacy_github_import/project_creator_spec.rb' +- './ee/spec/lib/gitlab/licenses/submit_license_usage_data_banner_spec.rb' +- './ee/spec/lib/gitlab/manual_quarterly_co_term_banner_spec.rb' +- './ee/spec/lib/gitlab/metrics/samplers/global_search_sampler_spec.rb' +- './ee/spec/lib/gitlab/middleware/ip_restrictor_spec.rb' +- './ee/spec/lib/gitlab/mirror_spec.rb' +- './ee/spec/lib/gitlab/object_hierarchy_spec.rb' +- './ee/spec/lib/gitlab/pagination_delegate_spec.rb' +- './ee/spec/lib/gitlab/pagination/keyset/simple_order_builder_spec.rb' +- './ee/spec/lib/gitlab/patch/database_config_spec.rb' +- './ee/spec/lib/gitlab/patch/draw_route_spec.rb' +- './ee/spec/lib/gitlab/patch/geo_database_tasks_spec.rb' +- './ee/spec/lib/gitlab/path_locks_finder_spec.rb' +- './ee/spec/lib/gitlab/project_template_spec.rb' +- './ee/spec/lib/gitlab/prometheus/queries/additional_metrics_deployment_query_spec.rb' +- './ee/spec/lib/gitlab/prometheus/queries/additional_metrics_environment_query_spec.rb' +- './ee/spec/lib/gitlab/prometheus/queries/cluster_query_spec.rb' +- './ee/spec/lib/gitlab/proxy_spec.rb' +- './ee/spec/lib/gitlab/quick_actions/users_extractor_spec.rb' +- './ee/spec/lib/gitlab/rack_attack_spec.rb' +- './ee/spec/lib/gitlab/reference_extractor_spec.rb' +- './ee/spec/lib/gitlab/regex_spec.rb' +- './ee/spec/lib/gitlab/return_to_location_spec.rb' +- './ee/spec/lib/gitlab/search/aggregation_parser_spec.rb' +- './ee/spec/lib/gitlab/search/aggregation_spec.rb' +- './ee/spec/lib/gitlab/search_context/builder_spec.rb' +- './ee/spec/lib/gitlab/search/recent_epics_spec.rb' +- './ee/spec/lib/gitlab/sidekiq_config_spec.rb' +- './ee/spec/lib/gitlab/sitemaps/generator_spec.rb' +- './ee/spec/lib/gitlab/sitemaps/sitemap_file_spec.rb' +- './ee/spec/lib/gitlab/sitemaps/url_extractor_spec.rb' +- './ee/spec/lib/gitlab/slash_commands/presenters/issue_show_spec.rb' +- './ee/spec/lib/gitlab/spdx/catalogue_gateway_spec.rb' +- './ee/spec/lib/gitlab/spdx/catalogue_spec.rb' +- './ee/spec/lib/gitlab/status_page/filter/image_filter_spec.rb' +- './ee/spec/lib/gitlab/status_page/filter/mention_anonymization_filter_spec.rb' +- './ee/spec/lib/gitlab/status_page/pipeline/post_process_pipeline_spec.rb' +- './ee/spec/lib/gitlab/status_page_spec.rb' +- './ee/spec/lib/gitlab/status_page/storage/s3_client_spec.rb' +- './ee/spec/lib/gitlab/status_page/storage/s3_multipart_upload_spec.rb' +- './ee/spec/lib/gitlab/status_page/storage_spec.rb' +- './ee/spec/lib/gitlab/status_page/usage_data_counters/incident_counter_spec.rb' +- './ee/spec/lib/gitlab/subscription_portal/clients/graphql_spec.rb' +- './ee/spec/lib/gitlab/subscription_portal/client_spec.rb' +- './ee/spec/lib/gitlab/subscription_portal/clients/rest_spec.rb' +- './ee/spec/lib/gitlab_subscriptions/upcoming_reconciliation_entity_spec.rb' +- './ee/spec/lib/gitlab/template/custom_templates_spec.rb' +- './ee/spec/lib/gitlab/tracking/snowplow_schema_validation_spec.rb' +- './ee/spec/lib/gitlab/tracking/standard_context_spec.rb' +- './ee/spec/lib/gitlab/tree_summary_spec.rb' +- './ee/spec/lib/gitlab/usage_data_counters/epic_activity_unique_counter_spec.rb' +- './ee/spec/lib/gitlab/usage_data_counters/licenses_list_spec.rb' +- './ee/spec/lib/gitlab/usage_data_metrics_spec.rb' +- './ee/spec/lib/gitlab/usage/metrics/aggregates/aggregate_spec.rb' +- './ee/spec/lib/gitlab/usage/metrics/instrumentations/advanced_search/build_type_metric_spec.rb' +- './ee/spec/lib/gitlab/usage/metrics/instrumentations/advanced_search/distribution_metric_spec.rb' +- './ee/spec/lib/gitlab/usage/metrics/instrumentations/advanced_search/lucene_version_metric_spec.rb' +- './ee/spec/lib/gitlab/usage/metrics/instrumentations/advanced_search/version_metric_spec.rb' +- './ee/spec/lib/gitlab/usage/metrics/instrumentations/approval_project_rules_with_user_metric_spec.rb' +- './ee/spec/lib/gitlab/usage/metrics/instrumentations/count_ci_builds_metric_spec.rb' +- './ee/spec/lib/gitlab/usage/metrics/instrumentations/count_ci_environments_approval_required_spec.rb' +- './ee/spec/lib/gitlab/usage/metrics/instrumentations/count_deployment_approvals_metric_spec.rb' +- './ee/spec/lib/gitlab/usage/metrics/instrumentations/count_distinct_merged_merge_requests_using_approval_rules_metric_spec.rb' +- './ee/spec/lib/gitlab/usage/metrics/instrumentations/count_event_streaming_destinations_metric_spec.rb' +- './ee/spec/lib/gitlab/usage/metrics/instrumentations/count_external_status_checks_metric_spec.rb' +- './ee/spec/lib/gitlab/usage/metrics/instrumentations/count_groups_with_event_streaming_destinations_metric_spec.rb' +- './ee/spec/lib/gitlab/usage/metrics/instrumentations/count_projects_with_external_status_checks_metric_spec.rb' +- './ee/spec/lib/gitlab/usage/metrics/instrumentations/count_saml_group_links_metric_spec.rb' +- './ee/spec/lib/gitlab/usage/metrics/instrumentations/count_slack_app_installations_gbp_metric_spec.rb' +- './ee/spec/lib/gitlab/usage/metrics/instrumentations/count_slack_app_installations_metric_spec.rb' +- './ee/spec/lib/gitlab/usage/metrics/instrumentations/count_users_associating_group_milestones_to_releases_metric_spec.rb' +- './ee/spec/lib/gitlab/usage/metrics/instrumentations/count_users_creating_ci_builds_metric_spec.rb' +- './ee/spec/lib/gitlab/usage/metrics/instrumentations/count_users_deployment_approvals_spec.rb' +- './ee/spec/lib/gitlab/usage/metrics/instrumentations/historical_max_users_metrics_spec.rb' +- './ee/spec/lib/gitlab/usage/metrics/instrumentations/licensee_metrics_spec.rb' +- './ee/spec/lib/gitlab/usage/metrics/instrumentations/license_management_jobs_metric_spec.rb' +- './ee/spec/lib/gitlab/usage/metrics/instrumentations/license_metric_spec.rb' +- './ee/spec/lib/gitlab/usage/metrics/instrumentations/protected_environment_approval_rules_required_approvals_average_metric_spec.rb' +- './ee/spec/lib/gitlab/usage/metrics/instrumentations/protected_environments_required_approvals_average_metric_spec.rb' +- './ee/spec/lib/gitlab/usage/metrics/instrumentations/user_cap_setting_enabled_metric_spec.rb' +- './ee/spec/lib/gitlab/user_access_spec.rb' +- './ee/spec/lib/gitlab/visibility_level_spec.rb' +- './ee/spec/lib/gitlab/vulnerabilities/base_vulnerability_spec.rb' +- './ee/spec/lib/gitlab/vulnerabilities/container_scanning_vulnerability_spec.rb' +- './ee/spec/lib/gitlab/vulnerabilities/findings_preloader_spec.rb' +- './ee/spec/lib/gitlab/vulnerabilities/parser_spec.rb' +- './ee/spec/lib/gitlab/vulnerabilities/standard_vulnerability_spec.rb' +- './ee/spec/lib/gitlab/web_ide/config/entry/schema/match_spec.rb' +- './ee/spec/lib/gitlab/web_ide/config/entry/schema_spec.rb' +- './ee/spec/lib/gitlab/web_ide/config/entry/schemas_spec.rb' +- './ee/spec/lib/gitlab/web_ide/config/entry/schema/uri_spec.rb' +- './ee/spec/lib/incident_management/oncall_shift_generator_spec.rb' +- './ee/spec/lib/omni_auth/strategies/group_saml_spec.rb' +- './ee/spec/lib/omni_auth/strategies/kerberos_spec.rb' +- './ee/spec/lib/peek/views/elasticsearch_spec.rb' +- './ee/spec/lib/sidebars/groups/menus/administration_menu_spec.rb' +- './ee/spec/lib/sidebars/groups/menus/analytics_menu_spec.rb' +- './ee/spec/lib/sidebars/groups/menus/epics_menu_spec.rb' +- './ee/spec/lib/sidebars/groups/menus/security_compliance_menu_spec.rb' +- './ee/spec/lib/sidebars/groups/menus/trial_experiment_menu_spec.rb' +- './ee/spec/lib/sidebars/groups/menus/wiki_menu_spec.rb' +- './ee/spec/lib/sidebars/projects/menus/trial_experiment_menu_spec.rb' +- './ee/spec/lib/system_check/app/search_check_spec.rb' +- './ee/spec/lib/system_check/geo/authorized_keys_check_spec.rb' +- './ee/spec/lib/system_check/geo/authorized_keys_flag_check_spec.rb' +- './ee/spec/lib/system_check/geo/current_node_check_spec.rb' +- './ee/spec/lib/system_check/geo/geo_database_configured_check_spec.rb' +- './ee/spec/lib/system_check/geo/http_clone_enabled_check_spec.rb' +- './ee/spec/lib/system_check/geo/http_connection_check_spec.rb' +- './ee/spec/lib/system_check/geo/license_check_spec.rb' +- './ee/spec/lib/system_check/rake_task/geo_task_spec.rb' +- './ee/spec/lib/world_spec.rb' +- './ee/spec/mailers/ci_minutes_usage_mailer_spec.rb' +- './ee/spec/mailers/credentials_inventory_mailer_spec.rb' +- './ee/spec/mailers/devise_mailer_spec.rb' +- './ee/spec/mailers/ee/emails/admin_notification_spec.rb' +- './ee/spec/mailers/ee/emails/issues_spec.rb' +- './ee/spec/mailers/ee/emails/merge_requests_spec.rb' +- './ee/spec/mailers/ee/emails/profile_spec.rb' +- './ee/spec/mailers/ee/emails/projects_spec.rb' +- './ee/spec/mailers/emails/epics_spec.rb' +- './ee/spec/mailers/emails/group_memberships_spec.rb' +- './ee/spec/mailers/emails/in_product_marketing_spec.rb' +- './ee/spec/mailers/emails/merge_commits_spec.rb' +- './ee/spec/mailers/emails/namespace_storage_usage_mailer_spec.rb' +- './ee/spec/mailers/emails/requirements_spec.rb' +- './ee/spec/mailers/emails/user_cap_spec.rb' +- './ee/spec/mailers/license_mailer_spec.rb' +- './ee/spec/mailers/notify_spec.rb' +- './ee/spec/migrations/20220411173544_cleanup_orphans_approval_project_rules_spec.rb' +- './ee/spec/migrations/20220517144749_remove_vulnerability_approval_rules_spec.rb' +- './ee/spec/migrations/add_non_null_constraint_for_escalation_rule_on_pending_alert_escalations_spec.rb' +- './ee/spec/migrations/async_build_trace_expire_at_index_spec.rb' +- './ee/spec/migrations/backfill_delayed_group_deletion_spec.rb' +- './ee/spec/migrations/backfill_namespace_statistics_with_wiki_size_spec.rb' +- './ee/spec/migrations/drop_invalid_remediations_spec.rb' +- './ee/spec/migrations/geo/fix_state_column_in_file_registry_spec.rb' +- './ee/spec/migrations/geo/fix_state_column_in_lfs_object_registry_spec.rb' +- './ee/spec/migrations/geo/migrate_ci_job_artifacts_to_separate_registry_spec.rb' +- './ee/spec/migrations/geo/migrate_job_artifact_registry_spec.rb' +- './ee/spec/migrations/geo/migrate_lfs_objects_to_separate_registry_spec.rb' +- './ee/spec/migrations/geo/set_resync_flag_for_retried_projects_spec.rb' +- './ee/spec/migrations/remove_schedule_and_status_null_constraints_from_pending_escalations_alert_spec.rb' +- './ee/spec/migrations/schedule_delete_invalid_epic_issues_revised_spec.rb' +- './ee/spec/migrations/schedule_populate_test_reports_issue_id_spec.rb' +- './ee/spec/migrations/schedule_requirements_migration_spec.rb' +- './ee/spec/migrations/schedule_trace_expiry_removal_spec.rb' +- './ee/spec/migrations/update_gitlab_subscriptions_start_at_post_eoa_spec.rb' +- './ee/spec/migrations/update_vulnerability_occurrences_location_spec.rb' +- './ee/spec/models/alert_management/alert_payload_field_spec.rb' +- './ee/spec/models/allowed_email_domain_spec.rb' +- './ee/spec/models/analytics/cycle_analytics/aggregation_context_spec.rb' +- './ee/spec/models/analytics/cycle_analytics/group_level_spec.rb' +- './ee/spec/models/analytics/cycle_analytics/group_stage_spec.rb' +- './ee/spec/models/analytics/cycle_analytics/group_value_stream_spec.rb' +- './ee/spec/models/analytics/cycle_analytics/project_stage_spec.rb' +- './ee/spec/models/analytics/cycle_analytics/runtime_limiter_spec.rb' +- './ee/spec/models/analytics/devops_adoption/enabled_namespace_spec.rb' +- './ee/spec/models/analytics/devops_adoption/snapshot_spec.rb' +- './ee/spec/models/analytics/issues_analytics_spec.rb' +- './ee/spec/models/analytics/language_trend/repository_language_spec.rb' +- './ee/spec/models/application_setting_spec.rb' +- './ee/spec/models/approvable_spec.rb' +- './ee/spec/models/approval_merge_request_rule_spec.rb' +- './ee/spec/models/approval_project_rule_spec.rb' +- './ee/spec/models/approvals/scan_finding_wrapped_rule_set_spec.rb' +- './ee/spec/models/approval_state_spec.rb' +- './ee/spec/models/approvals/wrapped_rule_set_spec.rb' +- './ee/spec/models/approval_wrapped_any_approver_rule_spec.rb' +- './ee/spec/models/approval_wrapped_code_owner_rule_spec.rb' +- './ee/spec/models/approval_wrapped_rule_spec.rb' +- './ee/spec/models/approver_group_spec.rb' +- './ee/spec/models/app_sec/fuzzing/api/ci_configuration_spec.rb' +- './ee/spec/models/app_sec/fuzzing/coverage/corpus_spec.rb' +- './ee/spec/models/audit_events/external_audit_event_destination_spec.rb' +- './ee/spec/models/audit_events/streaming/header_spec.rb' +- './ee/spec/models/board_assignee_spec.rb' +- './ee/spec/models/board_label_spec.rb' +- './ee/spec/models/boards/epic_board_label_spec.rb' +- './ee/spec/models/boards/epic_board_position_spec.rb' +- './ee/spec/models/boards/epic_board_recent_visit_spec.rb' +- './ee/spec/models/boards/epic_board_spec.rb' +- './ee/spec/models/boards/epic_list_spec.rb' +- './ee/spec/models/boards/epic_list_user_preference_spec.rb' +- './ee/spec/models/boards/epic_user_preference_spec.rb' +- './ee/spec/models/board_spec.rb' +- './ee/spec/models/board_user_preference_spec.rb' +- './ee/spec/models/broadcast_message_spec.rb' +- './ee/spec/models/burndown_spec.rb' +- './ee/spec/models/ci/bridge_spec.rb' +- './ee/spec/models/ci/build_spec.rb' +- './ee/spec/models/ci/daily_build_group_report_result_spec.rb' +- './ee/spec/models/ci/minutes/additional_pack_spec.rb' +- './ee/spec/models/ci/minutes/context_spec.rb' +- './ee/spec/models/ci/minutes/limit_spec.rb' +- './ee/spec/models/ci/minutes/namespace_monthly_usage_spec.rb' +- './ee/spec/models/ci/minutes/notification_spec.rb' +- './ee/spec/models/ci/minutes/project_monthly_usage_spec.rb' +- './ee/spec/models/ci/minutes/usage_spec.rb' +- './ee/spec/models/ci/pipeline_spec.rb' +- './ee/spec/models/ci/processable_spec.rb' +- './ee/spec/models/ci/sources/project_spec.rb' +- './ee/spec/models/ci/subscriptions/project_spec.rb' +- './ee/spec/models/commit_spec.rb' +- './ee/spec/models/compliance_management/compliance_framework/project_settings_spec.rb' +- './ee/spec/models/compliance_management/framework_spec.rb' +- './ee/spec/models/concerns/approval_rule_like_spec.rb' +- './ee/spec/models/concerns/approver_migrate_hook_spec.rb' +- './ee/spec/models/concerns/auditable_spec.rb' +- './ee/spec/models/concerns/deprecated_approvals_before_merge_spec.rb' +- './ee/spec/models/concerns/ee/clusters/agents/authorization_config_scopes_spec.rb' +- './ee/spec/models/concerns/ee/issuable_spec.rb' +- './ee/spec/models/concerns/ee/mentionable_spec.rb' +- './ee/spec/models/concerns/ee/milestoneable_spec.rb' +- './ee/spec/models/concerns/ee/noteable_spec.rb' +- './ee/spec/models/concerns/ee/participable_spec.rb' +- './ee/spec/models/concerns/ee/project_security_scanners_information_spec.rb' +- './ee/spec/models/concerns/ee/weight_eventable_spec.rb' +- './ee/spec/models/concerns/elastic/application_versioned_search_spec.rb' +- './ee/spec/models/concerns/elastic/issue_spec.rb' +- './ee/spec/models/concerns/elastic/merge_request_spec.rb' +- './ee/spec/models/concerns/elastic/milestone_spec.rb' +- './ee/spec/models/concerns/elastic/note_spec.rb' +- './ee/spec/models/concerns/elastic/project_spec.rb' +- './ee/spec/models/concerns/elastic/projects_search_spec.rb' +- './ee/spec/models/concerns/elastic/project_wiki_spec.rb' +- './ee/spec/models/concerns/elastic/repository_spec.rb' +- './ee/spec/models/concerns/elastic/snippet_spec.rb' +- './ee/spec/models/concerns/epic_tree_sorting_spec.rb' +- './ee/spec/models/concerns/geo/eventable_spec.rb' +- './ee/spec/models/concerns/geo/has_replicator_spec.rb' +- './ee/spec/models/concerns/geo/replicable_model_spec.rb' +- './ee/spec/models/concerns/geo/verifiable_model_spec.rb' +- './ee/spec/models/concerns/geo/verification_state_spec.rb' +- './ee/spec/models/concerns/health_status_spec.rb' +- './ee/spec/models/concerns/incident_management/base_pending_escalation_spec.rb' +- './ee/spec/models/concerns/password_complexity_spec.rb' +- './ee/spec/models/concerns/scim_paginatable_spec.rb' +- './ee/spec/models/container_registry/event_spec.rb' +- './ee/spec/models/container_repository_spec.rb' +- './ee/spec/models/dast/branch_spec.rb' +- './ee/spec/models/dast/profile_schedule_spec.rb' +- './ee/spec/models/dast/profile_spec.rb' +- './ee/spec/models/dast/profiles_pipeline_spec.rb' +- './ee/spec/models/dast/scanner_profiles_build_spec.rb' +- './ee/spec/models/dast_scanner_profile_spec.rb' +- './ee/spec/models/dast/site_profiles_build_spec.rb' +- './ee/spec/models/dast/site_profile_secret_variable_spec.rb' +- './ee/spec/models/dast_site_profile_spec.rb' +- './ee/spec/models/dast_site_spec.rb' +- './ee/spec/models/dast_site_token_spec.rb' +- './ee/spec/models/dast_site_validation_spec.rb' +- './ee/spec/models/deployments/approval_spec.rb' +- './ee/spec/models/deployment_spec.rb' +- './ee/spec/models/dora/base_metric_spec.rb' +- './ee/spec/models/dora/change_failure_rate_metric_spec.rb' +- './ee/spec/models/dora/daily_metrics_spec.rb' +- './ee/spec/models/dora/deployment_frequency_metric_spec.rb' +- './ee/spec/models/dora/lead_time_for_changes_metric_spec.rb' +- './ee/spec/models/dora/time_to_restore_service_metric_spec.rb' +- './ee/spec/models/ee/alert_management/alert_spec.rb' +- './ee/spec/models/ee/analytics/cycle_analytics/stage_event_hash_spec.rb' +- './ee/spec/models/ee/analytics/usage_trends/measurement_spec.rb' +- './ee/spec/models/ee/appearance_spec.rb' +- './ee/spec/models/ee/audit_event_spec.rb' +- './ee/spec/models/ee/award_emoji_spec.rb' +- './ee/spec/models/ee/ci/build_dependencies_spec.rb' +- './ee/spec/models/ee/ci/job_artifact_spec.rb' +- './ee/spec/models/ee/ci/pending_build_spec.rb' +- './ee/spec/models/ee/ci/pipeline_artifact_spec.rb' +- './ee/spec/models/ee/ci/runner_spec.rb' +- './ee/spec/models/ee/ci/secure_file_spec.rb' +- './ee/spec/models/ee/clusters/agent_spec.rb' +- './ee/spec/models/ee/description_version_spec.rb' +- './ee/spec/models/ee/event_collection_spec.rb' +- './ee/spec/models/ee/event_spec.rb' +- './ee/spec/models/ee/gpg_key_spec.rb' +- './ee/spec/models/ee/group_group_link_spec.rb' +- './ee/spec/models/ee/groups/feature_setting_spec.rb' +- './ee/spec/models/ee/group_spec.rb' +- './ee/spec/models/ee/incident_management/project_incident_management_setting_spec.rb' +- './ee/spec/models/ee/integrations/jira_spec.rb' +- './ee/spec/models/ee/integration_spec.rb' +- './ee/spec/models/ee/iterations/cadence_spec.rb' +- './ee/spec/models/ee/iteration_spec.rb' +- './ee/spec/models/ee/key_spec.rb' +- './ee/spec/models/ee/label_spec.rb' +- './ee/spec/models/ee/lfs_object_spec.rb' +- './ee/spec/models/ee/list_spec.rb' +- './ee/spec/models/ee/members_preloader_spec.rb' +- './ee/spec/models/ee/merge_request_diff_spec.rb' +- './ee/spec/models/ee/merge_request/metrics_spec.rb' +- './ee/spec/models/ee/namespace_ci_cd_setting_spec.rb' +- './ee/spec/models/ee/namespace/root_storage_statistics_spec.rb' +- './ee/spec/models/ee/namespaces/namespace_ban_spec.rb' +- './ee/spec/models/ee/namespace_spec.rb' +- './ee/spec/models/ee/namespace_statistics_spec.rb' +- './ee/spec/models/ee/namespace/storage/notification_spec.rb' +- './ee/spec/models/ee/notification_setting_spec.rb' +- './ee/spec/models/ee/pages_deployment_spec.rb' +- './ee/spec/models/ee/personal_access_token_spec.rb' +- './ee/spec/models/ee/preloaders/group_policy_preloader_spec.rb' +- './ee/spec/models/ee/project_authorization_spec.rb' +- './ee/spec/models/ee/project_group_link_spec.rb' +- './ee/spec/models/ee/project_setting_spec.rb' +- './ee/spec/models/ee/project_wiki_spec.rb' +- './ee/spec/models/ee/protected_branch_spec.rb' +- './ee/spec/models/ee/protected_ref_access_spec.rb' +- './ee/spec/models/ee/protected_ref_spec.rb' +- './ee/spec/models/ee/release_spec.rb' +- './ee/spec/models/ee/resource_label_event_spec.rb' +- './ee/spec/models/ee/resource_state_event_spec.rb' +- './ee/spec/models/ee/service_desk_setting_spec.rb' +- './ee/spec/models/ee/system_note_metadata_spec.rb' +- './ee/spec/models/ee/terraform/state_version_spec.rb' +- './ee/spec/models/ee/user_highest_role_spec.rb' +- './ee/spec/models/ee/users/merge_request_interaction_spec.rb' +- './ee/spec/models/ee/user_spec.rb' +- './ee/spec/models/ee/users_statistics_spec.rb' +- './ee/spec/models/ee/vulnerability_spec.rb' +- './ee/spec/models/ee/work_items/type_spec.rb' +- './ee/spec/models/elastic/index_setting_spec.rb' +- './ee/spec/models/elastic/migration_record_spec.rb' +- './ee/spec/models/elastic/reindexing_slice_spec.rb' +- './ee/spec/models/elastic/reindexing_subtask_spec.rb' +- './ee/spec/models/elastic/reindexing_task_spec.rb' +- './ee/spec/models/elasticsearch_indexed_namespace_spec.rb' +- './ee/spec/models/elasticsearch_indexed_project_spec.rb' +- './ee/spec/models/environment_spec.rb' +- './ee/spec/models/epic_issue_spec.rb' +- './ee/spec/models/epic/related_epic_link_spec.rb' +- './ee/spec/models/epic_spec.rb' +- './ee/spec/models/epic_user_mention_spec.rb' +- './ee/spec/models/geo/cache_invalidation_event_spec.rb' +- './ee/spec/models/geo/ci_secure_file_registry_spec.rb' +- './ee/spec/models/geo/container_repository_registry_spec.rb' +- './ee/spec/models/geo/container_repository_updated_event_spec.rb' +- './ee/spec/models/geo/deleted_project_spec.rb' +- './ee/spec/models/geo/design_registry_spec.rb' +- './ee/spec/models/geo/event_log_spec.rb' +- './ee/spec/models/geo/event_log_state_spec.rb' +- './ee/spec/models/geo/every_geo_event_spec.rb' +- './ee/spec/models/geo/group_wiki_repository_registry_spec.rb' +- './ee/spec/models/geo/hashed_storage_migrated_event_spec.rb' +- './ee/spec/models/geo/job_artifact_registry_spec.rb' +- './ee/spec/models/geo/lfs_object_registry_spec.rb' +- './ee/spec/models/geo/merge_request_diff_registry_spec.rb' +- './ee/spec/models/geo_node_namespace_link_spec.rb' +- './ee/spec/models/geo_node_spec.rb' +- './ee/spec/models/geo_node_status_spec.rb' +- './ee/spec/models/geo/package_file_registry_spec.rb' +- './ee/spec/models/geo/pages_deployment_registry_spec.rb' +- './ee/spec/models/geo/pipeline_artifact_registry_spec.rb' +- './ee/spec/models/geo/project_registry_spec.rb' +- './ee/spec/models/geo/push_user_spec.rb' +- './ee/spec/models/geo/repositories_changed_event_spec.rb' +- './ee/spec/models/geo/repository_created_event_spec.rb' +- './ee/spec/models/geo/repository_renamed_event_spec.rb' +- './ee/spec/models/geo/repository_updated_event_spec.rb' +- './ee/spec/models/geo/reset_checksum_event_spec.rb' +- './ee/spec/models/geo/secondary_usage_data_spec.rb' +- './ee/spec/models/geo/snippet_repository_registry_spec.rb' +- './ee/spec/models/geo/terraform_state_version_registry_spec.rb' +- './ee/spec/models/geo/tracking_base_spec.rb' +- './ee/spec/models/geo/upload_registry_spec.rb' +- './ee/spec/models/geo/upload_state_spec.rb' +- './ee/spec/models/gitlab/seat_link_data_spec.rb' +- './ee/spec/models/gitlab_subscription_history_spec.rb' +- './ee/spec/models/gitlab_subscriptions/features_spec.rb' +- './ee/spec/models/gitlab_subscription_spec.rb' +- './ee/spec/models/gitlab_subscriptions/upcoming_reconciliation_spec.rb' +- './ee/spec/models/group_deletion_schedule_spec.rb' +- './ee/spec/models/group_member_spec.rb' +- './ee/spec/models/group_merge_request_approval_setting_spec.rb' +- './ee/spec/models/groups/repository_storage_move_spec.rb' +- './ee/spec/models/group_wiki_repository_spec.rb' +- './ee/spec/models/group_wiki_spec.rb' +- './ee/spec/models/historical_data_spec.rb' +- './ee/spec/models/hooks/group_hook_spec.rb' +- './ee/spec/models/identity_spec.rb' +- './ee/spec/models/incident_management/escalation_policy_spec.rb' +- './ee/spec/models/incident_management/escalation_rule_spec.rb' +- './ee/spec/models/incident_management/issuable_escalation_status_spec.rb' +- './ee/spec/models/incident_management/issuable_resource_link_spec.rb' +- './ee/spec/models/incident_management/oncall_participant_spec.rb' +- './ee/spec/models/incident_management/oncall_rotation_spec.rb' +- './ee/spec/models/incident_management/oncall_schedule_spec.rb' +- './ee/spec/models/incident_management/oncall_shift_spec.rb' +- './ee/spec/models/incident_management/pending_escalations/alert_spec.rb' +- './ee/spec/models/incident_management/pending_escalations/issue_spec.rb' +- './ee/spec/models/instance_security_dashboard_spec.rb' +- './ee/spec/models/integrations/chat_message/vulnerability_message_spec.rb' +- './ee/spec/models/integrations/github/remote_project_spec.rb' +- './ee/spec/models/integrations/github_spec.rb' +- './ee/spec/models/integrations/github/status_message_spec.rb' +- './ee/spec/models/integrations/github/status_notifier_spec.rb' +- './ee/spec/models/integrations/gitlab_slack_application_spec.rb' +- './ee/spec/models/ip_restriction_spec.rb' +- './ee/spec/models/issuable_metric_image_spec.rb' +- './ee/spec/models/issuables_analytics_spec.rb' +- './ee/spec/models/issuable_sla_spec.rb' +- './ee/spec/models/issue_link_spec.rb' +- './ee/spec/models/issue_spec.rb' +- './ee/spec/models/iteration_note_spec.rb' +- './ee/spec/models/label_note_spec.rb' +- './ee/spec/models/ldap_group_link_spec.rb' +- './ee/spec/models/license_spec.rb' +- './ee/spec/models/member_spec.rb' +- './ee/spec/models/merge_request/blocking_spec.rb' +- './ee/spec/models/merge_request_block_spec.rb' +- './ee/spec/models/merge_requests/compliance_violation_spec.rb' +- './ee/spec/models/merge_requests/external_status_check_spec.rb' +- './ee/spec/models/merge_request_spec.rb' +- './ee/spec/models/merge_requests/status_check_response_spec.rb' +- './ee/spec/models/merge_train_spec.rb' +- './ee/spec/models/milestone_release_spec.rb' +- './ee/spec/models/milestone_spec.rb' +- './ee/spec/models/namespace_limit_spec.rb' +- './ee/spec/models/namespace_setting_spec.rb' +- './ee/spec/models/namespaces/free_user_cap/preview_spec.rb' +- './ee/spec/models/namespaces/free_user_cap_spec.rb' +- './ee/spec/models/namespaces/free_user_cap/standard_spec.rb' +- './ee/spec/models/namespaces/storage/root_excess_size_spec.rb' +- './ee/spec/models/namespaces/storage/root_size_spec.rb' +- './ee/spec/models/note_spec.rb' +- './ee/spec/models/packages/package_file_spec.rb' +- './ee/spec/models/path_lock_spec.rb' +- './ee/spec/models/plan_spec.rb' +- './ee/spec/models/preloaders/environments/protected_environment_preloader_spec.rb' +- './ee/spec/models/productivity_analytics_spec.rb' +- './ee/spec/models/project_alias_spec.rb' +- './ee/spec/models/project_ci_cd_setting_spec.rb' +- './ee/spec/models/project_feature_spec.rb' +- './ee/spec/models/project_import_data_spec.rb' +- './ee/spec/models/project_import_state_spec.rb' +- './ee/spec/models/project_member_spec.rb' +- './ee/spec/models/project_repository_state_spec.rb' +- './ee/spec/models/project_security_setting_spec.rb' +- './ee/spec/models/project_spec.rb' +- './ee/spec/models/project_team_spec.rb' +- './ee/spec/models/protected_branch/required_code_owners_section_spec.rb' +- './ee/spec/models/protected_branch/unprotect_access_level_spec.rb' +- './ee/spec/models/protected_environment/deploy_access_level_spec.rb' +- './ee/spec/models/protected_environments/approval_rule_spec.rb' +- './ee/spec/models/protected_environments/approval_summary_spec.rb' +- './ee/spec/models/protected_environment_spec.rb' +- './ee/spec/models/push_rule_spec.rb' +- './ee/spec/models/release_highlight_spec.rb' +- './ee/spec/models/remote_mirror_spec.rb' +- './ee/spec/models/repository_spec.rb' +- './ee/spec/models/requirements_management/requirement_spec.rb' +- './ee/spec/models/requirements_management/test_report_spec.rb' +- './ee/spec/models/resource_iteration_event_spec.rb' +- './ee/spec/models/resource_weight_event_spec.rb' +- './ee/spec/models/saml_group_link_spec.rb' +- './ee/spec/models/saml_provider_spec.rb' +- './ee/spec/models/sbom/component_spec.rb' +- './ee/spec/models/sbom/component_version_spec.rb' +- './ee/spec/models/sbom/occurrence_spec.rb' +- './ee/spec/models/sbom/source_spec.rb' +- './ee/spec/models/sca/license_compliance_spec.rb' +- './ee/spec/models/sca/license_policy_spec.rb' +- './ee/spec/models/scim_identity_spec.rb' +- './ee/spec/models/scim_oauth_access_token_spec.rb' +- './ee/spec/models/scoped_label_set_spec.rb' +- './ee/spec/models/security/finding_spec.rb' +- './ee/spec/models/security/orchestration_policy_configuration_spec.rb' +- './ee/spec/models/security/orchestration_policy_rule_schedule_spec.rb' +- './ee/spec/models/security/scan_spec.rb' +- './ee/spec/models/security/training_provider_spec.rb' +- './ee/spec/models/security/training_spec.rb' +- './ee/spec/models/slack_integration_spec.rb' +- './ee/spec/models/snippet_repository_spec.rb' +- './ee/spec/models/snippet_spec.rb' +- './ee/spec/models/software_license_policy_spec.rb' +- './ee/spec/models/software_license_spec.rb' +- './ee/spec/models/status_page/project_setting_spec.rb' +- './ee/spec/models/status_page/published_incident_spec.rb' +- './ee/spec/models/storage_shard_spec.rb' +- './ee/spec/models/uploads/local_spec.rb' +- './ee/spec/models/upload_spec.rb' +- './ee/spec/models/user_detail_spec.rb' +- './ee/spec/models/user_permission_export_upload_spec.rb' +- './ee/spec/models/user_preference_spec.rb' +- './ee/spec/models/users_security_dashboard_project_spec.rb' +- './ee/spec/models/visible_approvable_spec.rb' +- './ee/spec/models/vulnerabilities/export_spec.rb' +- './ee/spec/models/vulnerabilities/external_issue_link_spec.rb' +- './ee/spec/models/vulnerabilities/feedback_spec.rb' +- './ee/spec/models/vulnerabilities/finding/evidence_spec.rb' +- './ee/spec/models/vulnerabilities/finding_identifier_spec.rb' +- './ee/spec/models/vulnerabilities/finding_link_spec.rb' +- './ee/spec/models/vulnerabilities/finding_pipeline_spec.rb' +- './ee/spec/models/vulnerabilities/finding_remediation_spec.rb' +- './ee/spec/models/vulnerabilities/finding_signature_spec.rb' +- './ee/spec/models/vulnerabilities/finding_spec.rb' +- './ee/spec/models/vulnerabilities/flag_spec.rb' +- './ee/spec/models/vulnerabilities/historical_statistic_spec.rb' +- './ee/spec/models/vulnerabilities/identifier_spec.rb' +- './ee/spec/models/vulnerabilities/issue_link_spec.rb' +- './ee/spec/models/vulnerabilities/merge_request_link_spec.rb' +- './ee/spec/models/vulnerabilities/projects_grade_spec.rb' +- './ee/spec/models/vulnerabilities/read_spec.rb' +- './ee/spec/models/vulnerabilities/remediation_spec.rb' +- './ee/spec/models/vulnerabilities/scanner_spec.rb' +- './ee/spec/models/vulnerabilities/stat_diff_spec.rb' +- './ee/spec/models/vulnerabilities/state_transition_spec.rb' +- './ee/spec/models/vulnerabilities/statistic_spec.rb' +- './ee/spec/models/vulnerability_user_mention_spec.rb' +- './ee/spec/models/weight_note_spec.rb' +- './ee/spec/models/work_item_spec.rb' +- './ee/spec/models/work_items/widgets/verification_status_spec.rb' +- './ee/spec/policies/approval_merge_request_rule_policy_spec.rb' +- './ee/spec/policies/approval_project_rule_policy_spec.rb' +- './ee/spec/policies/approval_state_policy_spec.rb' +- './ee/spec/policies/app_sec/fuzzing/coverage/corpus_policy_spec.rb' +- './ee/spec/policies/award_emoji_policy_spec.rb' +- './ee/spec/policies/base_policy_spec.rb' +- './ee/spec/policies/ci/build_policy_spec.rb' +- './ee/spec/policies/ci/minutes/namespace_monthly_usage_policy_spec.rb' +- './ee/spec/policies/clusters/instance_policy_spec.rb' +- './ee/spec/policies/compliance_management/framework_policy_spec.rb' +- './ee/spec/policies/dast/branch_policy_spec.rb' +- './ee/spec/policies/dast/profile_policy_spec.rb' +- './ee/spec/policies/dast/profile_schedule_policy_spec.rb' +- './ee/spec/policies/dast_scanner_profile_policy_spec.rb' +- './ee/spec/policies/dast_site_profile_policy_spec.rb' +- './ee/spec/policies/dast_site_validation_policy_spec.rb' +- './ee/spec/policies/ee/ci/runner_policy_spec.rb' +- './ee/spec/policies/ee/namespaces/user_namespace_policy_spec.rb' +- './ee/spec/policies/ee/readonly_abilities_spec.rb' +- './ee/spec/policies/environment_policy_spec.rb' +- './ee/spec/policies/epic_policy_spec.rb' +- './ee/spec/policies/event_policy_spec.rb' +- './ee/spec/policies/geo_node_policy_spec.rb' +- './ee/spec/policies/geo/registry_policy_spec.rb' +- './ee/spec/policies/global_policy_spec.rb' +- './ee/spec/policies/group_hook_policy_spec.rb' +- './ee/spec/policies/group_policy_spec.rb' +- './ee/spec/policies/identity_provider_policy_spec.rb' +- './ee/spec/policies/incident_management/oncall_rotation_policy_spec.rb' +- './ee/spec/policies/incident_management/oncall_schedule_policy_spec.rb' +- './ee/spec/policies/incident_management/oncall_shift_policy_spec.rb' +- './ee/spec/policies/instance_security_dashboard_policy_spec.rb' +- './ee/spec/policies/issuable_policy_spec.rb' +- './ee/spec/policies/issue_policy_spec.rb' +- './ee/spec/policies/merge_request_policy_spec.rb' +- './ee/spec/policies/note_policy_spec.rb' +- './ee/spec/policies/path_lock_policy_spec.rb' +- './ee/spec/policies/project_policy_spec.rb' +- './ee/spec/policies/project_snippet_policy_spec.rb' +- './ee/spec/policies/protected_branch_policy_spec.rb' +- './ee/spec/policies/requirements_management/requirement_policy_spec.rb' +- './ee/spec/policies/saml_provider_policy_spec.rb' +- './ee/spec/policies/security/scan_policy_spec.rb' +- './ee/spec/policies/user_policy_spec.rb' +- './ee/spec/policies/vulnerabilities/export_policy_spec.rb' +- './ee/spec/policies/vulnerabilities/external_issue_link_policy_spec.rb' +- './ee/spec/policies/vulnerabilities/feedback_policy_spec.rb' +- './ee/spec/policies/vulnerabilities/issue_link_policy_spec.rb' +- './ee/spec/policies/vulnerabilities/scanner_policy_spec.rb' +- './ee/spec/policies/vulnerability_policy_spec.rb' +- './ee/spec/presenters/analytics/cycle_analytics/stage_presenter_spec.rb' +- './ee/spec/presenters/approval_rule_presenter_spec.rb' +- './ee/spec/presenters/audit_event_presenter_spec.rb' +- './ee/spec/presenters/ci/build_presenter_spec.rb' +- './ee/spec/presenters/ci/build_runner_presenter_spec.rb' +- './ee/spec/presenters/ci/minutes/usage_presenter_spec.rb' +- './ee/spec/presenters/ci/pipeline_presenter_spec.rb' +- './ee/spec/presenters/dast/site_profile_presenter_spec.rb' +- './ee/spec/presenters/ee/blob_presenter_spec.rb' +- './ee/spec/presenters/ee/clusters/cluster_presenter_spec.rb' +- './ee/spec/presenters/ee/instance_clusterable_presenter_spec.rb' +- './ee/spec/presenters/ee/issue_presenter_spec.rb' +- './ee/spec/presenters/ee/projects/security/configuration_presenter_spec.rb' +- './ee/spec/presenters/epic_issue_presenter_spec.rb' +- './ee/spec/presenters/epic_presenter_spec.rb' +- './ee/spec/presenters/group_clusterable_presenter_spec.rb' +- './ee/spec/presenters/group_member_presenter_spec.rb' +- './ee/spec/presenters/label_presenter_spec.rb' +- './ee/spec/presenters/merge_request_approver_presenter_spec.rb' +- './ee/spec/presenters/merge_request_presenter_spec.rb' +- './ee/spec/presenters/project_clusterable_presenter_spec.rb' +- './ee/spec/presenters/project_member_presenter_spec.rb' +- './ee/spec/presenters/security/scan_presenter_spec.rb' +- './ee/spec/presenters/subscription_presenter_spec.rb' +- './ee/spec/presenters/subscriptions/new_plan_presenter_spec.rb' +- './ee/spec/presenters/vulnerabilities/finding_presenter_spec.rb' +- './ee/spec/presenters/vulnerability_presenter_spec.rb' +- './ee/spec/presenters/web_hooks/group/hook_presenter_spec.rb' +- './ee/spec/replicators/geo/ci_secure_file_replicator_spec.rb' +- './ee/spec/replicators/geo/group_wiki_repository_replicator_spec.rb' +- './ee/spec/replicators/geo/job_artifact_replicator_spec.rb' +- './ee/spec/replicators/geo/lfs_object_replicator_spec.rb' +- './ee/spec/replicators/geo/merge_request_diff_replicator_spec.rb' +- './ee/spec/replicators/geo/package_file_replicator_spec.rb' +- './ee/spec/replicators/geo/pages_deployment_replicator_spec.rb' +- './ee/spec/replicators/geo/pipeline_artifact_replicator_spec.rb' +- './ee/spec/replicators/geo/pipeline_replicator_spec.rb' +- './ee/spec/replicators/geo/snippet_repository_replicator_spec.rb' +- './ee/spec/replicators/geo/terraform_state_version_replicator_spec.rb' +- './ee/spec/replicators/geo/upload_replicator_spec.rb' +- './ee/spec/requests/admin/audit_events_spec.rb' +- './ee/spec/requests/admin/credentials_controller_spec.rb' +- './ee/spec/requests/admin/geo/nodes_controller_spec.rb' +- './ee/spec/requests/admin/geo/replicables_controller_spec.rb' +- './ee/spec/requests/admin/subscriptions_controller_spec.rb' +- './ee/spec/requests/admin/user_permission_exports_controller_spec.rb' +- './ee/spec/requests/admin/users_controller_spec.rb' +- './ee/spec/requests/api/analytics/code_review_analytics_spec.rb' +- './ee/spec/requests/api/analytics/group_activity_analytics_spec.rb' +- './ee/spec/requests/api/analytics/project_deployment_frequency_spec.rb' +- './ee/spec/requests/api/api_spec.rb' +- './ee/spec/requests/api/audit_events_spec.rb' +- './ee/spec/requests/api/award_emoji_spec.rb' +- './ee/spec/requests/api/boards_spec.rb' +- './ee/spec/requests/api/branches_spec.rb' +- './ee/spec/requests/api/captcha_check_spec.rb' +- './ee/spec/requests/api/ci/jobs_spec.rb' +- './ee/spec/requests/api/ci/minutes_spec.rb' +- './ee/spec/requests/api/ci/pipelines_spec.rb' +- './ee/spec/requests/api/ci/runner/jobs_put_spec.rb' +- './ee/spec/requests/api/ci/runner/jobs_trace_spec.rb' +- './ee/spec/requests/api/ci/runner_spec.rb' +- './ee/spec/requests/api/ci/triggers_spec.rb' +- './ee/spec/requests/api/ci/variables_spec.rb' +- './ee/spec/requests/api/commits_spec.rb' +- './ee/spec/requests/api/dependencies_spec.rb' +- './ee/spec/requests/api/deployments_spec.rb' +- './ee/spec/requests/api/discussions_spec.rb' +- './ee/spec/requests/api/dora/metrics_spec.rb' +- './ee/spec/requests/api/elasticsearch_indexed_namespaces_spec.rb' +- './ee/spec/requests/api/epic_issues_spec.rb' +- './ee/spec/requests/api/epic_links_spec.rb' +- './ee/spec/requests/api/epics_spec.rb' +- './ee/spec/requests/api/experiments_spec.rb' +- './ee/spec/requests/api/features_spec.rb' +- './ee/spec/requests/api/files_spec.rb' +- './ee/spec/requests/api/geo_nodes_spec.rb' +- './ee/spec/requests/api/geo_replication_spec.rb' +- './ee/spec/requests/api/geo_spec.rb' +- './ee/spec/requests/api/graphql/analytics/devops_adoption/enabled_namespaces_spec.rb' +- './ee/spec/requests/api/graphql/app_sec/fuzzing/api/ci_configuration_type_spec.rb' +- './ee/spec/requests/api/graphql/app_sec/fuzzing/coverage/corpus_type_spec.rb' +- './ee/spec/requests/api/graphql/audit_events/streaming/headers/create_spec.rb' +- './ee/spec/requests/api/graphql/audit_events/streaming/headers/destroy_spec.rb' +- './ee/spec/requests/api/graphql/audit_events/streaming/headers/update_spec.rb' +- './ee/spec/requests/api/graphql/boards/board_list_query_spec.rb' +- './ee/spec/requests/api/graphql/boards/board_lists_query_spec.rb' +- './ee/spec/requests/api/graphql/boards/boards_query_spec.rb' +- './ee/spec/requests/api/graphql/boards/epic_board_list_epics_query_spec.rb' +- './ee/spec/requests/api/graphql/boards/epic_boards_query_spec.rb' +- './ee/spec/requests/api/graphql/boards/epic_list_query_spec.rb' +- './ee/spec/requests/api/graphql/boards/epic_lists_query_spec.rb' +- './ee/spec/requests/api/graphql/boards/epic_lists/update_spec.rb' +- './ee/spec/requests/api/graphql/ci/minutes/usage_spec.rb' +- './ee/spec/requests/api/graphql/ci/runner_spec.rb' +- './ee/spec/requests/api/graphql/ci/runners_spec.rb' +- './ee/spec/requests/api/graphql/compliance_management/merge_requests/compliance_violations_spec.rb' +- './ee/spec/requests/api/graphql/current_user/groups_query_spec.rb' +- './ee/spec/requests/api/graphql/current_user/todos_query_spec.rb' +- './ee/spec/requests/api/graphql/dora/dora_spec.rb' +- './ee/spec/requests/api/graphql/epics/epic_resolver_spec.rb' +- './ee/spec/requests/api/graphql/geo/geo_node_spec.rb' +- './ee/spec/requests/api/graphql/geo/registries_spec.rb' +- './ee/spec/requests/api/graphql/group/ci_cd_settings_spec.rb' +- './ee/spec/requests/api/graphql/group/dast_profile_schedule_spec.rb' +- './ee/spec/requests/api/graphql/group/epic/epic_aggregate_query_spec.rb' +- './ee/spec/requests/api/graphql/group/epic/epic_ancestors_spec.rb' +- './ee/spec/requests/api/graphql/group/epic/epic_issues_spec.rb' +- './ee/spec/requests/api/graphql/group/epic/notes_spec.rb' +- './ee/spec/requests/api/graphql/group/epics_spec.rb' +- './ee/spec/requests/api/graphql/group/external_audit_event_destinations_spec.rb' +- './ee/spec/requests/api/graphql/group_query_spec.rb' +- './ee/spec/requests/api/graphql/incident_management/issuable_resource_links_spec.rb' +- './ee/spec/requests/api/graphql/instance_security_dashboard_spec.rb' +- './ee/spec/requests/api/graphql/iterations/cadences_spec.rb' +- './ee/spec/requests/api/graphql/iterations/iterations_spec.rb' +- './ee/spec/requests/api/graphql/iteration_spec.rb' +- './ee/spec/requests/api/graphql/merge_request_reviewer_spec.rb' +- './ee/spec/requests/api/graphql/merge_requests/approval_state_spec.rb' +- './ee/spec/requests/api/graphql/milestone_spec.rb' +- './ee/spec/requests/api/graphql/mutations/alert_management/http_integration/create_spec.rb' +- './ee/spec/requests/api/graphql/mutations/alert_management/http_integration/update_spec.rb' +- './ee/spec/requests/api/graphql/mutations/analytics/devops_adoption/enabled_namespaces/bulk_enable_spec.rb' +- './ee/spec/requests/api/graphql/mutations/analytics/devops_adoption/enabled_namespaces/disable_spec.rb' +- './ee/spec/requests/api/graphql/mutations/analytics/devops_adoption/enabled_namespaces/enable_spec.rb' +- './ee/spec/requests/api/graphql/mutations/app_sec/fuzzing/api/ci_configuration/create_spec.rb' +- './ee/spec/requests/api/graphql/mutations/audit_events/external_audit_event_destinations/create_spec.rb' +- './ee/spec/requests/api/graphql/mutations/audit_events/external_audit_event_destinations/destroy_spec.rb' +- './ee/spec/requests/api/graphql/mutations/audit_events/external_audit_event_destinations/update_spec.rb' +- './ee/spec/requests/api/graphql/mutations/boards/create_spec.rb' +- './ee/spec/requests/api/graphql/mutations/boards/epic_boards/create_spec.rb' +- './ee/spec/requests/api/graphql/mutations/boards/epic_boards/destroy_spec.rb' +- './ee/spec/requests/api/graphql/mutations/boards/epic_boards/epic_move_list_spec.rb' +- './ee/spec/requests/api/graphql/mutations/boards/epic_boards/update_spec.rb' +- './ee/spec/requests/api/graphql/mutations/boards/epic_lists/create_spec.rb' +- './ee/spec/requests/api/graphql/mutations/boards/epic_lists/destroy_spec.rb' +- './ee/spec/requests/api/graphql/mutations/boards/epics/create_spec.rb' +- './ee/spec/requests/api/graphql/mutations/boards/issues/issue_move_list_spec.rb' +- './ee/spec/requests/api/graphql/mutations/boards/lists/create_spec.rb' +- './ee/spec/requests/api/graphql/mutations/boards/lists/update_limit_metrics_spec.rb' +- './ee/spec/requests/api/graphql/mutations/boards/update_epic_user_preferences_spec.rb' +- './ee/spec/requests/api/graphql/mutations/ci/namespace_ci_cd_settings_update_spec.rb' +- './ee/spec/requests/api/graphql/mutations/compliance_management/frameworks/create_spec.rb' +- './ee/spec/requests/api/graphql/mutations/compliance_management/frameworks/destroy_spec.rb' +- './ee/spec/requests/api/graphql/mutations/compliance_management/frameworks/update_spec.rb' +- './ee/spec/requests/api/graphql/mutations/dast_on_demand_scans/create_spec.rb' +- './ee/spec/requests/api/graphql/mutations/dast/profiles/create_spec.rb' +- './ee/spec/requests/api/graphql/mutations/dast/profiles/delete_spec.rb' +- './ee/spec/requests/api/graphql/mutations/dast/profiles/run_spec.rb' +- './ee/spec/requests/api/graphql/mutations/dast/profiles/update_spec.rb' +- './ee/spec/requests/api/graphql/mutations/dast_scanner_profiles/create_spec.rb' +- './ee/spec/requests/api/graphql/mutations/dast_scanner_profiles/delete_spec.rb' +- './ee/spec/requests/api/graphql/mutations/dast_scanner_profiles/update_spec.rb' +- './ee/spec/requests/api/graphql/mutations/dast_site_profiles/create_spec.rb' +- './ee/spec/requests/api/graphql/mutations/dast_site_profiles/delete_spec.rb' +- './ee/spec/requests/api/graphql/mutations/dast_site_profiles/update_spec.rb' +- './ee/spec/requests/api/graphql/mutations/dast_site_tokens/create_spec.rb' +- './ee/spec/requests/api/graphql/mutations/dast_site_validations/create_spec.rb' +- './ee/spec/requests/api/graphql/mutations/dast_site_validations/revoke_spec.rb' +- './ee/spec/requests/api/graphql/mutations/environments/canary_ingress/update_spec.rb' +- './ee/spec/requests/api/graphql/mutations/epics/add_issue_spec.rb' +- './ee/spec/requests/api/graphql/mutations/epics/create_spec.rb' +- './ee/spec/requests/api/graphql/mutations/epics/set_subscription_spec.rb' +- './ee/spec/requests/api/graphql/mutations/epics/update_spec.rb' +- './ee/spec/requests/api/graphql/mutations/epic_tree/reorder_spec.rb' +- './ee/spec/requests/api/graphql/mutations/gitlab_subscriptions/activate_spec.rb' +- './ee/spec/requests/api/graphql/mutations/incident_management/escalation_policy/create_spec.rb' +- './ee/spec/requests/api/graphql/mutations/incident_management/escalation_policy/destroy_spec.rb' +- './ee/spec/requests/api/graphql/mutations/incident_management/escalation_policy/update_spec.rb' +- './ee/spec/requests/api/graphql/mutations/incident_management/issuable_resource_link/create_spec.rb' +- './ee/spec/requests/api/graphql/mutations/incident_management/issuable_resource_link/destroy_spec.rb' +- './ee/spec/requests/api/graphql/mutations/incident_management/oncall_rotation/create_spec.rb' +- './ee/spec/requests/api/graphql/mutations/incident_management/oncall_rotation/update_spec.rb' +- './ee/spec/requests/api/graphql/mutations/incident_management/oncall_schedule/create_spec.rb' +- './ee/spec/requests/api/graphql/mutations/incident_management/oncall_schedule/destroy_spec.rb' +- './ee/spec/requests/api/graphql/mutations/incident_management/oncall_schedule/update_spec.rb' +- './ee/spec/requests/api/graphql/mutations/issues/create_spec.rb' +- './ee/spec/requests/api/graphql/mutations/issues/promote_to_epic_spec.rb' +- './ee/spec/requests/api/graphql/mutations/issues/set_epic_spec.rb' +- './ee/spec/requests/api/graphql/mutations/issues/set_escalation_policy_spec.rb' +- './ee/spec/requests/api/graphql/mutations/issues/set_weight_spec.rb' +- './ee/spec/requests/api/graphql/mutations/issues/update_spec.rb' +- './ee/spec/requests/api/graphql/mutations/iterations/cadences/create_spec.rb' +- './ee/spec/requests/api/graphql/mutations/iterations/cadences/destroy_spec.rb' +- './ee/spec/requests/api/graphql/mutations/iterations/cadences/update_spec.rb' +- './ee/spec/requests/api/graphql/mutations/iterations/create_spec.rb' +- './ee/spec/requests/api/graphql/mutations/iterations/delete_spec.rb' +- './ee/spec/requests/api/graphql/mutations/iterations/update_spec.rb' +- './ee/spec/requests/api/graphql/mutations/merge_requests/set_assignees_spec.rb' +- './ee/spec/requests/api/graphql/mutations/notes/create/note_spec.rb' +- './ee/spec/requests/api/graphql/mutations/projects/lock_path_spec.rb' +- './ee/spec/requests/api/graphql/mutations/projects/set_compliance_framework_spec.rb' +- './ee/spec/requests/api/graphql/mutations/quality_management/test_cases/create_spec.rb' +- './ee/spec/requests/api/graphql/mutations/releases/create_spec.rb' +- './ee/spec/requests/api/graphql/mutations/releases/update_spec.rb' +- './ee/spec/requests/api/graphql/mutations/requirements_management/create_requirement_spec.rb' +- './ee/spec/requests/api/graphql/mutations/requirements_management/export_requirements_spec.rb' +- './ee/spec/requests/api/graphql/mutations/requirements_management/update_requirement_spec.rb' +- './ee/spec/requests/api/graphql/mutations/security_finding/create_issue_spec.rb' +- './ee/spec/requests/api/graphql/mutations/security_policy/assign_security_policy_project_spec.rb' +- './ee/spec/requests/api/graphql/mutations/security_policy/commit_scan_execution_policy_spec.rb' +- './ee/spec/requests/api/graphql/mutations/security_policy/create_security_policy_project_spec.rb' +- './ee/spec/requests/api/graphql/mutations/security_policy/unassign_security_policy_project_spec.rb' +- './ee/spec/requests/api/graphql/mutations/timelogs/create_spec.rb' +- './ee/spec/requests/api/graphql/mutations/users/abuse/namespace_bans/destroy_spec.rb' +- './ee/spec/requests/api/graphql/mutations/vulnerabilities/create_external_issue_link_spec.rb' +- './ee/spec/requests/api/graphql/mutations/vulnerabilities/destroy_external_issue_link_spec.rb' +- './ee/spec/requests/api/graphql/mutations/vulnerabilities/finding_dismiss_spec.rb' +- './ee/spec/requests/api/graphql/mutations/work_items/update_spec.rb' +- './ee/spec/requests/api/graphql/namespace/compliance_frameworks_spec.rb' +- './ee/spec/requests/api/graphql/namespace/projects_spec.rb' +- './ee/spec/requests/api/graphql/project/alert_management/http_integrations_spec.rb' +- './ee/spec/requests/api/graphql/project/alert_management/integrations_spec.rb' +- './ee/spec/requests/api/graphql/project/alert_management/payload_fields_spec.rb' +- './ee/spec/requests/api/graphql/project/code_coverage_summary_spec.rb' +- './ee/spec/requests/api/graphql/project/compliance_frameworks_spec.rb' +- './ee/spec/requests/api/graphql/project/dast_profile_schedule_spec.rb' +- './ee/spec/requests/api/graphql/project/dast_profile_spec.rb' +- './ee/spec/requests/api/graphql/project/dast_profiles_spec.rb' +- './ee/spec/requests/api/graphql/project/dast_scanner_profiles_spec.rb' +- './ee/spec/requests/api/graphql/project/dast_site_profile_spec.rb' +- './ee/spec/requests/api/graphql/project/dast_site_profiles_spec.rb' +- './ee/spec/requests/api/graphql/project/dast_site_validations_spec.rb' +- './ee/spec/requests/api/graphql/project/incident_management/escalation_policies_spec.rb' +- './ee/spec/requests/api/graphql/project/incident_management/escalation_policy/rules_spec.rb' +- './ee/spec/requests/api/graphql/project/incident_management/oncall_participants_spec.rb' +- './ee/spec/requests/api/graphql/project/incident_management/oncall_schedules_spec.rb' +- './ee/spec/requests/api/graphql/project/incident_management/oncall_shifts_spec.rb' +- './ee/spec/requests/api/graphql/project/issues_spec.rb' +- './ee/spec/requests/api/graphql/project/merge_requests_spec.rb' +- './ee/spec/requests/api/graphql/project/path_locks_spec.rb' +- './ee/spec/requests/api/graphql/project/pipeline/code_quality_reports_spec.rb' +- './ee/spec/requests/api/graphql/project/pipeline/dast_profile_spec.rb' +- './ee/spec/requests/api/graphql/project/pipelines/dast_profile_spec.rb' +- './ee/spec/requests/api/graphql/project/pipeline/security_report_finding_spec.rb' +- './ee/spec/requests/api/graphql/project/pipeline/security_report_summary_spec.rb' +- './ee/spec/requests/api/graphql/project/push_rules_spec.rb' +- './ee/spec/requests/api/graphql/project/requirements_management/requirement_counts_spec.rb' +- './ee/spec/requests/api/graphql/project/requirements_management/requirements_spec.rb' +- './ee/spec/requests/api/graphql/project/requirements_management/test_reports_spec.rb' +- './ee/spec/requests/api/graphql/projects/compliance_frameworks_spec.rb' +- './ee/spec/requests/api/graphql/project/security_orchestration/scan_result_policy_spec.rb' +- './ee/spec/requests/api/graphql/project/vulnerability_severities_count_spec.rb' +- './ee/spec/requests/api/graphql/project/work_items_spec.rb' +- './ee/spec/requests/api/graphql/vulnerabilities/description_spec.rb' +- './ee/spec/requests/api/graphql/vulnerabilities/details_spec.rb' +- './ee/spec/requests/api/graphql/vulnerabilities/external_issue_links_spec.rb' +- './ee/spec/requests/api/graphql/vulnerabilities/identifiers_spec.rb' +- './ee/spec/requests/api/graphql/vulnerabilities/issue_links_spec.rb' +- './ee/spec/requests/api/graphql/vulnerabilities/location_spec.rb' +- './ee/spec/requests/api/graphql/vulnerabilities/primary_identifier_spec.rb' +- './ee/spec/requests/api/graphql/vulnerabilities/scanner_spec.rb' +- './ee/spec/requests/api/graphql/vulnerabilities/sort_spec.rb' +- './ee/spec/requests/api/graphql/work_item_spec.rb' +- './ee/spec/requests/api/group_boards_spec.rb' +- './ee/spec/requests/api/group_clusters_spec.rb' +- './ee/spec/requests/api/group_hooks_spec.rb' +- './ee/spec/requests/api/group_milestones_spec.rb' +- './ee/spec/requests/api/group_push_rule_spec.rb' +- './ee/spec/requests/api/group_repository_storage_moves_spec.rb' +- './ee/spec/requests/api/groups_spec.rb' +- './ee/spec/requests/api/group_variables_spec.rb' +- './ee/spec/requests/api/integrations_spec.rb' +- './ee/spec/requests/api/internal/app_sec/dast/site_validations_spec.rb' +- './ee/spec/requests/api/internal/base_spec.rb' +- './ee/spec/requests/api/internal/kubernetes_spec.rb' +- './ee/spec/requests/api/internal/upcoming_reconciliations_spec.rb' +- './ee/spec/requests/api/invitations_spec.rb' +- './ee/spec/requests/api/issue_links_spec.rb' +- './ee/spec/requests/api/issues_spec.rb' +- './ee/spec/requests/api/iterations_spec.rb' +- './ee/spec/requests/api/ldap_group_links_spec.rb' +- './ee/spec/requests/api/ldap_spec.rb' +- './ee/spec/requests/api/license_spec.rb' +- './ee/spec/requests/api/managed_licenses_spec.rb' +- './ee/spec/requests/api/markdown_golden_master_spec.rb' +- './ee/spec/requests/api/members_spec.rb' +- './ee/spec/requests/api/merge_request_approval_rules_spec.rb' +- './ee/spec/requests/api/merge_request_approval_settings_spec.rb' +- './ee/spec/requests/api/merge_request_approvals_spec.rb' +- './ee/spec/requests/api/merge_requests_spec.rb' +- './ee/spec/requests/api/merge_trains_spec.rb' +- './ee/spec/requests/api/namespaces_spec.rb' +- './ee/spec/requests/api/notes_spec.rb' +- './ee/spec/requests/api/project_aliases_spec.rb' +- './ee/spec/requests/api/project_approval_rules_spec.rb' +- './ee/spec/requests/api/project_approval_settings_spec.rb' +- './ee/spec/requests/api/project_approvals_spec.rb' +- './ee/spec/requests/api/project_clusters_spec.rb' +- './ee/spec/requests/api/project_import_spec.rb' +- './ee/spec/requests/api/project_milestones_spec.rb' +- './ee/spec/requests/api/project_mirror_spec.rb' +- './ee/spec/requests/api/project_push_rule_spec.rb' +- './ee/spec/requests/api/project_snapshots_spec.rb' +- './ee/spec/requests/api/projects_spec.rb' +- './ee/spec/requests/api/protected_branches_spec.rb' +- './ee/spec/requests/api/protected_environments_spec.rb' +- './ee/spec/requests/api/protected_tags_spec.rb' +- './ee/spec/requests/api/related_epic_links_spec.rb' +- './ee/spec/requests/api/releases_spec.rb' +- './ee/spec/requests/api/repositories_spec.rb' +- './ee/spec/requests/api/resource_iteration_events_spec.rb' +- './ee/spec/requests/api/resource_label_events_spec.rb' +- './ee/spec/requests/api/resource_weight_events_spec.rb' +- './ee/spec/requests/api/saml_group_links_spec.rb' +- './ee/spec/requests/api/scim_spec.rb' +- './ee/spec/requests/api/search_spec.rb' +- './ee/spec/requests/api/settings_spec.rb' +- './ee/spec/requests/api/status_checks_spec.rb' +- './ee/spec/requests/api/submodules_spec.rb' +- './ee/spec/requests/api/templates_spec.rb' +- './ee/spec/requests/api/todos_spec.rb' +- './ee/spec/requests/api/usage_data_spec.rb' +- './ee/spec/requests/api/users_spec.rb' +- './ee/spec/requests/api/v3/github_spec.rb' +- './ee/spec/requests/api/visual_review_discussions_spec.rb' +- './ee/spec/requests/api/vulnerabilities_spec.rb' +- './ee/spec/requests/api/vulnerability_exports_spec.rb' +- './ee/spec/requests/api/vulnerability_findings_spec.rb' +- './ee/spec/requests/api/vulnerability_issue_links_spec.rb' +- './ee/spec/requests/api/wikis_spec.rb' +- './ee/spec/requests/callout_spec.rb' +- './ee/spec/requests/customers_dot/proxy_controller_spec.rb' +- './ee/spec/requests/ee/groups/autocomplete_sources_spec.rb' +- './ee/spec/requests/ee/groups/settings/repository_controller_spec.rb' +- './ee/spec/requests/ee/projects/deploy_tokens_controller_spec.rb' +- './ee/spec/requests/ee/projects/environments_controller_spec.rb' +- './ee/spec/requests/ee/projects/service_desk_controller_spec.rb' +- './ee/spec/requests/git_http_geo_spec.rb' +- './ee/spec/requests/git_http_spec.rb' +- './ee/spec/requests/groups/analytics/devops_adoption_controller_spec.rb' +- './ee/spec/requests/groups/audit_events_spec.rb' +- './ee/spec/requests/groups/clusters_controller_spec.rb' +- './ee/spec/requests/groups/compliance_frameworks_spec.rb' +- './ee/spec/requests/groups/contribution_analytics_spec.rb' +- './ee/spec/requests/groups_controller_spec.rb' +- './ee/spec/requests/groups/epics/epic_links_controller_spec.rb' +- './ee/spec/requests/groups/epics/related_epic_links_controller_spec.rb' +- './ee/spec/requests/groups/feature_discovery_moments_spec.rb' +- './ee/spec/requests/groups/group_members_controller_spec.rb' +- './ee/spec/requests/groups/hook_logs_controller_spec.rb' +- './ee/spec/requests/groups/labels_spec.rb' +- './ee/spec/requests/groups/protected_environments_controller_spec.rb' +- './ee/spec/requests/groups/roadmap_controller_spec.rb' +- './ee/spec/requests/groups/security/credentials_controller_spec.rb' +- './ee/spec/requests/groups/settings/reporting_controller_spec.rb' +- './ee/spec/requests/groups/usage_quotas_spec.rb' +- './ee/spec/requests/jwt_controller_spec.rb' +- './ee/spec/requests/lfs_http_spec.rb' +- './ee/spec/requests/lfs_locks_api_spec.rb' +- './ee/spec/requests/omniauth_kerberos_spec.rb' +- './ee/spec/requests/projects/analytics/code_reviews_controller_spec.rb' +- './ee/spec/requests/projects/audit_events_spec.rb' +- './ee/spec/requests/projects/incidents_controller_spec.rb' +- './ee/spec/requests/projects/issue_feature_flags_controller_spec.rb' +- './ee/spec/requests/projects/issues_controller_spec.rb' +- './ee/spec/requests/projects/merge_requests_controller_spec.rb' +- './ee/spec/requests/projects/mirrors_controller_spec.rb' +- './ee/spec/requests/projects/on_demand_scans_controller_spec.rb' +- './ee/spec/requests/projects/pipelines_controller_spec.rb' +- './ee/spec/requests/projects/pipelines/email_campaigns_controller_spec.rb' +- './ee/spec/requests/projects/requirements_management/requirements_controller_spec.rb' +- './ee/spec/requests/projects/security/corpus_management_controller_spec.rb' +- './ee/spec/requests/projects/security/dast_configuration_controller_spec.rb' +- './ee/spec/requests/projects/security/dast_profiles_controller_spec.rb' +- './ee/spec/requests/projects/security/dast_scanner_profiles_controller_spec.rb' +- './ee/spec/requests/projects/security/dast_site_profiles_controller_spec.rb' +- './ee/spec/requests/projects/security/policies_controller_spec.rb' +- './ee/spec/requests/projects/security/scanned_resources_controller_spec.rb' +- './ee/spec/requests/projects/settings/access_tokens_controller_spec.rb' +- './ee/spec/requests/rack_attack_global_spec.rb' +- './ee/spec/requests/rack_attack_spec.rb' +- './ee/spec/requests/repositories/git_http_controller_spec.rb' +- './ee/spec/requests/search_controller_spec.rb' +- './ee/spec/requests/smartcard_controller_spec.rb' +- './ee/spec/requests/trial_registrations_controller_spec.rb' +- './ee/spec/requests/user_activity_spec.rb' +- './ee/spec/routing/admin_routing_spec.rb' +- './ee/spec/routing/git_http_routing_spec.rb' +- './ee/spec/routing/group_routing_spec.rb' +- './ee/spec/routing/groups/cadences_routing_spec.rb' +- './ee/spec/routing/operations_routing_spec.rb' +- './ee/spec/routing/project_routing_spec.rb' +- './ee/spec/routing/projects/security/configuration_controller_routing_spec.rb' +- './ee/spec/routing/security_routing_spec.rb' +- './ee/spec/routing/uploads_routing_spec.rb' +- './ee/spec/routing/user_routing_spec.rb' +- './ee/spec/routing/webhook_routes_spec.rb' +- './ee/spec/serializers/analytics/cycle_analytics/event_entity_spec.rb' +- './ee/spec/serializers/analytics/cycle_analytics/stage_entity_spec.rb' +- './ee/spec/serializers/analytics/cycle_analytics/value_stream_errors_serializer_spec.rb' +- './ee/spec/serializers/audit_event_entity_spec.rb' +- './ee/spec/serializers/audit_event_serializer_spec.rb' +- './ee/spec/serializers/autocomplete/group_entity_spec.rb' +- './ee/spec/serializers/autocomplete/group_serializer_spec.rb' +- './ee/spec/serializers/blocking_merge_request_entity_spec.rb' +- './ee/spec/serializers/board_serializer_spec.rb' +- './ee/spec/serializers/clusters/deployment_entity_spec.rb' +- './ee/spec/serializers/clusters/environment_entity_spec.rb' +- './ee/spec/serializers/clusters/environment_serializer_spec.rb' +- './ee/spec/serializers/dashboard_environment_entity_spec.rb' +- './ee/spec/serializers/dashboard_environments_project_entity_spec.rb' +- './ee/spec/serializers/dashboard_environments_serializer_spec.rb' +- './ee/spec/serializers/dashboard_operations_project_entity_spec.rb' +- './ee/spec/serializers/dependency_entity_spec.rb' +- './ee/spec/serializers/dependency_list_entity_spec.rb' +- './ee/spec/serializers/dependency_list_serializer_spec.rb' +- './ee/spec/serializers/ee/admin/user_entity_spec.rb' +- './ee/spec/serializers/ee/blob_entity_spec.rb' +- './ee/spec/serializers/ee/board_simple_entity_spec.rb' +- './ee/spec/serializers/ee/build_details_entity_spec.rb' +- './ee/spec/serializers/ee/ci/job_entity_spec.rb' +- './ee/spec/serializers/ee/ci/pipeline_entity_spec.rb' +- './ee/spec/serializers/ee/deployment_entity_spec.rb' +- './ee/spec/serializers/ee/environment_serializer_spec.rb' +- './ee/spec/serializers/ee/evidences/release_entity_spec.rb' +- './ee/spec/serializers/ee/group_child_entity_spec.rb' +- './ee/spec/serializers/ee/issue_board_entity_spec.rb' +- './ee/spec/serializers/ee/issue_entity_spec.rb' +- './ee/spec/serializers/ee/issue_sidebar_basic_entity_spec.rb' +- './ee/spec/serializers/ee/issue_sidebar_extras_entity_spec.rb' +- './ee/spec/serializers/ee/merge_request_poll_cached_widget_entity_spec.rb' +- './ee/spec/serializers/ee/note_entity_spec.rb' +- './ee/spec/serializers/ee/user_serializer_spec.rb' +- './ee/spec/serializers/environment_entity_spec.rb' +- './ee/spec/serializers/epic_entity_spec.rb' +- './ee/spec/serializers/epic_note_entity_spec.rb' +- './ee/spec/serializers/epics/related_epic_entity_spec.rb' +- './ee/spec/serializers/evidences/build_artifact_entity_spec.rb' +- './ee/spec/serializers/evidences/evidence_entity_spec.rb' +- './ee/spec/serializers/fork_namespace_entity_spec.rb' +- './ee/spec/serializers/geo_project_registry_entity_spec.rb' +- './ee/spec/serializers/group_vulnerability_autocomplete_entity_spec.rb' +- './ee/spec/serializers/incident_management/escalation_policy_entity_spec.rb' +- './ee/spec/serializers/incident_management/oncall_schedule_entity_spec.rb' +- './ee/spec/serializers/integrations/field_entity_spec.rb' +- './ee/spec/serializers/integrations/jira_serializers/issue_detail_entity_spec.rb' +- './ee/spec/serializers/integrations/jira_serializers/issue_entity_spec.rb' +- './ee/spec/serializers/integrations/jira_serializers/issue_serializer_spec.rb' +- './ee/spec/serializers/integrations/zentao_serializers/issue_entity_spec.rb' +- './ee/spec/serializers/issuable_sidebar_extras_entity_spec.rb' +- './ee/spec/serializers/issue_serializer_spec.rb' +- './ee/spec/serializers/issues/linked_issue_feature_flag_entity_spec.rb' +- './ee/spec/serializers/license_compliance/collapsed_comparer_entity_spec.rb' +- './ee/spec/serializers/license_compliance/comparer_entity_spec.rb' +- './ee/spec/serializers/license_entity_spec.rb' +- './ee/spec/serializers/licenses_list_entity_spec.rb' +- './ee/spec/serializers/licenses_list_serializer_spec.rb' +- './ee/spec/serializers/linked_feature_flag_issue_entity_spec.rb' +- './ee/spec/serializers/member_entity_spec.rb' +- './ee/spec/serializers/member_user_entity_spec.rb' +- './ee/spec/serializers/merge_request_poll_widget_entity_spec.rb' +- './ee/spec/serializers/merge_request_sidebar_basic_entity_spec.rb' +- './ee/spec/serializers/merge_request_widget_entity_spec.rb' +- './ee/spec/serializers/metrics_report_metric_entity_spec.rb' +- './ee/spec/serializers/metrics_reports_comparer_entity_spec.rb' +- './ee/spec/serializers/pipeline_serializer_spec.rb' +- './ee/spec/serializers/productivity_analytics_merge_request_entity_spec.rb' +- './ee/spec/serializers/project_mirror_entity_spec.rb' +- './ee/spec/serializers/protected_environments/deploy_access_level_entity_spec.rb' +- './ee/spec/serializers/protected_environments/entity_spec.rb' +- './ee/spec/serializers/scim_oauth_access_token_entity_spec.rb' +- './ee/spec/serializers/security/license_policy_entity_spec.rb' +- './ee/spec/serializers/security/vulnerability_report_data_entity_spec.rb' +- './ee/spec/serializers/security/vulnerability_report_data_serializer_spec.rb' +- './ee/spec/serializers/status_page/incident_comment_entity_spec.rb' +- './ee/spec/serializers/status_page/incident_entity_spec.rb' +- './ee/spec/serializers/status_page/incident_serializer_spec.rb' +- './ee/spec/serializers/status_page/renderer_spec.rb' +- './ee/spec/serializers/storage_shard_entity_spec.rb' +- './ee/spec/serializers/test_reports_comparer_entity_spec.rb' +- './ee/spec/serializers/test_reports_comparer_serializer_spec.rb' +- './ee/spec/serializers/test_suite_comparer_entity_spec.rb' +- './ee/spec/serializers/user_analytics_entity_spec.rb' +- './ee/spec/serializers/vulnerabilities/feedback_entity_spec.rb' +- './ee/spec/serializers/vulnerabilities/finding_entity_spec.rb' +- './ee/spec/serializers/vulnerabilities/finding_reports_comparer_entity_spec.rb' +- './ee/spec/serializers/vulnerabilities/finding_serializer_spec.rb' +- './ee/spec/serializers/vulnerabilities/identifier_entity_spec.rb' +- './ee/spec/serializers/vulnerabilities/request_entity_spec.rb' +- './ee/spec/serializers/vulnerabilities/response_entity_spec.rb' +- './ee/spec/serializers/vulnerabilities/scanner_entity_spec.rb' +- './ee/spec/serializers/vulnerability_entity_spec.rb' +- './ee/spec/serializers/vulnerability_note_entity_spec.rb' +- './ee/spec/services/admin/email_service_spec.rb' +- './ee/spec/services/alert_management/extract_alert_payload_fields_service_spec.rb' +- './ee/spec/services/alert_management/process_prometheus_alert_service_spec.rb' +- './ee/spec/services/analytics/cycle_analytics/aggregator_service_spec.rb' +- './ee/spec/services/analytics/cycle_analytics/consistency_check_service_spec.rb' +- './ee/spec/services/analytics/cycle_analytics/data_loader_service_spec.rb' +- './ee/spec/services/analytics/cycle_analytics/stages/create_service_spec.rb' +- './ee/spec/services/analytics/cycle_analytics/stages/delete_service_spec.rb' +- './ee/spec/services/analytics/cycle_analytics/stages/list_service_spec.rb' +- './ee/spec/services/analytics/cycle_analytics/stages/update_service_spec.rb' +- './ee/spec/services/analytics/cycle_analytics/value_streams/create_service_spec.rb' +- './ee/spec/services/analytics/cycle_analytics/value_streams/update_service_spec.rb' +- './ee/spec/services/analytics/devops_adoption/enabled_namespaces/bulk_delete_service_spec.rb' +- './ee/spec/services/analytics/devops_adoption/enabled_namespaces/bulk_find_or_create_service_spec.rb' +- './ee/spec/services/analytics/devops_adoption/enabled_namespaces/create_service_spec.rb' +- './ee/spec/services/analytics/devops_adoption/enabled_namespaces/delete_service_spec.rb' +- './ee/spec/services/analytics/devops_adoption/enabled_namespaces/find_or_create_service_spec.rb' +- './ee/spec/services/analytics/devops_adoption/snapshots/calculate_and_save_service_spec.rb' +- './ee/spec/services/analytics/devops_adoption/snapshots/create_service_spec.rb' +- './ee/spec/services/analytics/devops_adoption/snapshots/update_service_spec.rb' +- './ee/spec/services/applications/create_service_spec.rb' +- './ee/spec/services/application_settings/update_service_spec.rb' +- './ee/spec/services/approval_rules/create_service_spec.rb' +- './ee/spec/services/approval_rules/finalize_service_spec.rb' +- './ee/spec/services/approval_rules/merge_request_rule_destroy_service_spec.rb' +- './ee/spec/services/approval_rules/params_filtering_service_spec.rb' +- './ee/spec/services/approval_rules/project_rule_destroy_service_spec.rb' +- './ee/spec/services/approval_rules/update_service_spec.rb' +- './ee/spec/services/app_sec/dast/builds/associate_service_spec.rb' +- './ee/spec/services/app_sec/dast/pipelines/find_latest_service_spec.rb' +- './ee/spec/services/app_sec/dast/profiles/audit/update_service_spec.rb' +- './ee/spec/services/app_sec/dast/profiles/build_config_service_spec.rb' +- './ee/spec/services/app_sec/dast/profile_schedules/audit/update_service_spec.rb' +- './ee/spec/services/app_sec/dast/profiles/create_associations_service_spec.rb' +- './ee/spec/services/app_sec/dast/profiles/create_service_spec.rb' +- './ee/spec/services/app_sec/dast/profiles/destroy_service_spec.rb' +- './ee/spec/services/app_sec/dast/profiles/update_service_spec.rb' +- './ee/spec/services/app_sec/dast/scan_configs/build_service_spec.rb' +- './ee/spec/services/app_sec/dast/scan_configs/fetch_service_spec.rb' +- './ee/spec/services/app_sec/dast/scanner_profiles/create_service_spec.rb' +- './ee/spec/services/app_sec/dast/scanner_profiles/destroy_service_spec.rb' +- './ee/spec/services/app_sec/dast/scanner_profiles/update_service_spec.rb' +- './ee/spec/services/app_sec/dast/scans/create_service_spec.rb' +- './ee/spec/services/app_sec/dast/scans/run_service_spec.rb' +- './ee/spec/services/app_sec/dast/site_profiles/audit/update_service_spec.rb' +- './ee/spec/services/app_sec/dast/site_profiles/create_service_spec.rb' +- './ee/spec/services/app_sec/dast/site_profiles/destroy_service_spec.rb' +- './ee/spec/services/app_sec/dast/site_profile_secret_variables/create_or_update_service_spec.rb' +- './ee/spec/services/app_sec/dast/site_profile_secret_variables/destroy_service_spec.rb' +- './ee/spec/services/app_sec/dast/site_profiles/update_service_spec.rb' +- './ee/spec/services/app_sec/dast/sites/find_or_create_service_spec.rb' +- './ee/spec/services/app_sec/dast/site_tokens/find_or_create_service_spec.rb' +- './ee/spec/services/app_sec/dast/site_validations/find_or_create_service_spec.rb' +- './ee/spec/services/app_sec/dast/site_validations/revoke_service_spec.rb' +- './ee/spec/services/app_sec/dast/site_validations/runner_service_spec.rb' +- './ee/spec/services/app_sec/fuzzing/api/ci_configuration_create_service_spec.rb' +- './ee/spec/services/app_sec/fuzzing/coverage/corpuses/create_service_spec.rb' +- './ee/spec/services/arkose/blocked_users_report_service_spec.rb' +- './ee/spec/services/arkose/user_verification_service_spec.rb' +- './ee/spec/services/audit_events/build_service_spec.rb' +- './ee/spec/services/audit_events/custom_audit_event_service_spec.rb' +- './ee/spec/services/audit_event_service_spec.rb' +- './ee/spec/services/audit_events/export_csv_service_spec.rb' +- './ee/spec/services/audit_events/impersonation_audit_event_service_spec.rb' +- './ee/spec/services/audit_events/protected_branch_audit_event_service_spec.rb' +- './ee/spec/services/audit_events/register_runner_audit_event_service_spec.rb' +- './ee/spec/services/audit_events/release_artifacts_downloaded_audit_event_service_spec.rb' +- './ee/spec/services/audit_events/release_associate_milestone_audit_event_service_spec.rb' +- './ee/spec/services/audit_events/release_created_audit_event_service_spec.rb' +- './ee/spec/services/audit_events/release_updated_audit_event_service_spec.rb' +- './ee/spec/services/audit_events/repository_download_started_audit_event_service_spec.rb' +- './ee/spec/services/audit_events/runner_custom_audit_event_service_spec.rb' +- './ee/spec/services/audit_events/runners_token_audit_event_service_spec.rb' +- './ee/spec/services/audit_events/streaming/headers/base_spec.rb' +- './ee/spec/services/audit_events/streaming/headers/create_service_spec.rb' +- './ee/spec/services/audit_events/streaming/headers/destroy_service_spec.rb' +- './ee/spec/services/audit_events/streaming/headers/update_service_spec.rb' +- './ee/spec/services/audit_events/unregister_runner_audit_event_service_spec.rb' +- './ee/spec/services/audit_events/user_impersonation_group_audit_event_service_spec.rb' +- './ee/spec/services/auto_merge/add_to_merge_train_when_pipeline_succeeds_service_spec.rb' +- './ee/spec/services/auto_merge/merge_train_service_spec.rb' +- './ee/spec/services/auto_merge/merge_when_pipeline_succeeds_service_spec.rb' +- './ee/spec/services/award_emojis/add_service_spec.rb' +- './ee/spec/services/award_emojis/destroy_service_spec.rb' +- './ee/spec/services/base_count_service_spec.rb' +- './ee/spec/services/billable_members/destroy_service_spec.rb' +- './ee/spec/services/boards/create_service_spec.rb' +- './ee/spec/services/boards/epic_boards/create_service_spec.rb' +- './ee/spec/services/boards/epic_boards/destroy_service_spec.rb' +- './ee/spec/services/boards/epic_boards/update_service_spec.rb' +- './ee/spec/services/boards/epic_boards/visits/create_service_spec.rb' +- './ee/spec/services/boards/epic_lists/create_service_spec.rb' +- './ee/spec/services/boards/epic_lists/destroy_service_spec.rb' +- './ee/spec/services/boards/epic_lists/list_service_spec.rb' +- './ee/spec/services/boards/epic_lists/update_service_spec.rb' +- './ee/spec/services/boards/epics/create_service_spec.rb' +- './ee/spec/services/boards/epics/list_service_spec.rb' +- './ee/spec/services/boards/epics/move_service_spec.rb' +- './ee/spec/services/boards/epics/position_create_service_spec.rb' +- './ee/spec/services/boards/epic_user_preferences/update_service_spec.rb' +- './ee/spec/services/boards/lists/update_service_spec.rb' +- './ee/spec/services/boards/update_service_spec.rb' +- './ee/spec/services/boards/user_preferences/update_service_spec.rb' +- './ee/spec/services/branches/delete_service_spec.rb' +- './ee/spec/services/ci/audit_variable_change_service_spec.rb' +- './ee/spec/services/ci_cd/github_integration_setup_service_spec.rb' +- './ee/spec/services/ci_cd/github_setup_service_spec.rb' +- './ee/spec/services/ci_cd/setup_project_spec.rb' +- './ee/spec/services/ci/compare_license_scanning_reports_collapsed_service_spec.rb' +- './ee/spec/services/ci/compare_license_scanning_reports_service_spec.rb' +- './ee/spec/services/ci/compare_metrics_reports_service_spec.rb' +- './ee/spec/services/ci/compare_security_reports_service_spec.rb' +- './ee/spec/services/ci/copy_cross_database_associations_service_spec.rb' +- './ee/spec/services/ci/create_pipeline_service/compliance_spec.rb' +- './ee/spec/services/ci/create_pipeline_service/cross_needs_artifacts_spec.rb' +- './ee/spec/services/ci/create_pipeline_service/dast_configuration_spec.rb' +- './ee/spec/services/ci/create_pipeline_service/needs_spec.rb' +- './ee/spec/services/ci/create_pipeline_service/runnable_builds_spec.rb' +- './ee/spec/services/ci/create_pipeline_service_spec.rb' +- './ee/spec/services/ci/destroy_pipeline_service_spec.rb' +- './ee/spec/services/ci/external_pull_requests/process_github_event_service_spec.rb' +- './ee/spec/services/ci/minutes/additional_packs/change_namespace_service_spec.rb' +- './ee/spec/services/ci/minutes/additional_packs/create_service_spec.rb' +- './ee/spec/services/ci/minutes/batch_reset_service_spec.rb' +- './ee/spec/services/ci/minutes/email_notification_service_spec.rb' +- './ee/spec/services/ci/minutes/refresh_cached_data_service_spec.rb' +- './ee/spec/services/ci/minutes/reset_usage_service_spec.rb' +- './ee/spec/services/ci/minutes/track_live_consumption_service_spec.rb' +- './ee/spec/services/ci/minutes/update_build_minutes_service_spec.rb' +- './ee/spec/services/ci/minutes/update_project_and_namespace_usage_service_spec.rb' +- './ee/spec/services/ci/pipeline_bridge_status_service_spec.rb' +- './ee/spec/services/ci/pipeline_creation/drop_not_runnable_builds_service_spec.rb' +- './ee/spec/services/ci/pipeline_creation/start_pipeline_service_spec.rb' +- './ee/spec/services/ci/pipeline_trigger_service_spec.rb' +- './ee/spec/services/ci/play_bridge_service_spec.rb' +- './ee/spec/services/ci/play_build_service_spec.rb' +- './ee/spec/services/ci/process_build_service_spec.rb' +- './ee/spec/services/ci/process_pipeline_service_spec.rb' +- './ee/spec/services/ci/register_job_service_spec.rb' +- './ee/spec/services/ci/retry_job_service_spec.rb' +- './ee/spec/services/ci/retry_pipeline_service_spec.rb' +- './ee/spec/services/ci/runners/assign_runner_service_spec.rb' +- './ee/spec/services/ci/runners/register_runner_service_spec.rb' +- './ee/spec/services/ci/runners/reset_registration_token_service_spec.rb' +- './ee/spec/services/ci/runners/stale_group_runners_prune_service_spec.rb' +- './ee/spec/services/ci/runners/unassign_runner_service_spec.rb' +- './ee/spec/services/ci/runners/unregister_runner_service_spec.rb' +- './ee/spec/services/ci/subscribe_bridge_service_spec.rb' +- './ee/spec/services/ci/sync_reports_to_approval_rules_service_spec.rb' +- './ee/spec/services/ci/trigger_downstream_subscription_service_spec.rb' +- './ee/spec/services/compliance_management/frameworks/create_service_spec.rb' +- './ee/spec/services/compliance_management/frameworks/destroy_service_spec.rb' +- './ee/spec/services/compliance_management/frameworks/update_service_spec.rb' +- './ee/spec/services/compliance_management/merge_requests/create_compliance_violations_service_spec.rb' +- './ee/spec/services/concerns/epics/related_epic_links/usage_data_helper_spec.rb' +- './ee/spec/services/dashboard/environments/list_service_spec.rb' +- './ee/spec/services/dashboard/operations/list_service_spec.rb' +- './ee/spec/services/dashboard/projects/create_service_spec.rb' +- './ee/spec/services/dashboard/projects/list_service_spec.rb' +- './ee/spec/services/deploy_keys/create_service_spec.rb' +- './ee/spec/services/deployments/approval_service_spec.rb' +- './ee/spec/services/deployments/auto_rollback_service_spec.rb' +- './ee/spec/services/dora/aggregate_metrics_service_spec.rb' +- './ee/spec/services/ee/alert_management/alerts/update_service_spec.rb' +- './ee/spec/services/ee/alert_management/create_alert_issue_service_spec.rb' +- './ee/spec/services/ee/alert_management/http_integrations/create_service_spec.rb' +- './ee/spec/services/ee/alert_management/http_integrations/update_service_spec.rb' +- './ee/spec/services/ee/allowed_email_domains/update_service_spec.rb' +- './ee/spec/services/ee/auth/container_registry_authentication_service_spec.rb' +- './ee/spec/services/ee/auto_merge_service_spec.rb' +- './ee/spec/services/ee/boards/issues/create_service_spec.rb' +- './ee/spec/services/ee/boards/issues/list_service_spec.rb' +- './ee/spec/services/ee/boards/issues/move_service_spec.rb' +- './ee/spec/services/ee/boards/lists/create_service_spec.rb' +- './ee/spec/services/ee/boards/lists/list_service_spec.rb' +- './ee/spec/services/ee/boards/lists/max_limits_spec.rb' +- './ee/spec/services/ee/ci/change_variable_service_spec.rb' +- './ee/spec/services/ee/ci/change_variables_service_spec.rb' +- './ee/spec/services/ee/ci/job_artifacts/create_service_spec.rb' +- './ee/spec/services/ee/ci/job_artifacts/destroy_all_expired_service_spec.rb' +- './ee/spec/services/ee/ci/job_artifacts/destroy_batch_service_spec.rb' +- './ee/spec/services/ee/ci/pipeline_processing/atomic_processing_service_spec.rb' +- './ee/spec/services/ee/commits/create_service_spec.rb' +- './ee/spec/services/ee/deployments/update_environment_service_spec.rb' +- './ee/spec/services/ee/design_management/delete_designs_service_spec.rb' +- './ee/spec/services/ee/design_management/save_designs_service_spec.rb' +- './ee/spec/services/ee/event_create_service_spec.rb' +- './ee/spec/services/ee/git/branch_push_service_spec.rb' +- './ee/spec/services/ee/git/wiki_push_service_spec.rb' +- './ee/spec/services/ee/gpg_keys/create_service_spec.rb' +- './ee/spec/services/ee/gpg_keys/destroy_service_spec.rb' +- './ee/spec/services/ee/groups/autocomplete_service_spec.rb' +- './ee/spec/services/ee/groups/deploy_tokens/create_service_spec.rb' +- './ee/spec/services/ee/groups/deploy_tokens/destroy_service_spec.rb' +- './ee/spec/services/ee/groups/deploy_tokens/revoke_service_spec.rb' +- './ee/spec/services/ee/groups/import_export/export_service_spec.rb' +- './ee/spec/services/ee/groups/import_export/import_service_spec.rb' +- './ee/spec/services/ee/incident_management/issuable_escalation_statuses/after_update_service_spec.rb' +- './ee/spec/services/ee/incident_management/issuable_escalation_statuses/create_service_spec.rb' +- './ee/spec/services/ee/incident_management/issuable_escalation_statuses/prepare_update_service_spec.rb' +- './ee/spec/services/ee/integrations/test/project_service_spec.rb' +- './ee/spec/services/ee/ip_restrictions/update_service_spec.rb' +- './ee/spec/services/ee/issuable/bulk_update_service_spec.rb' +- './ee/spec/services/ee/issuable/common_system_notes_service_spec.rb' +- './ee/spec/services/ee/issuable/destroy_service_spec.rb' +- './ee/spec/services/ee/issue_links/create_service_spec.rb' +- './ee/spec/services/ee/issues/after_create_service_spec.rb' +- './ee/spec/services/ee/issues/build_from_vulnerability_service_spec.rb' +- './ee/spec/services/ee/issues/clone_service_spec.rb' +- './ee/spec/services/ee/issues/close_service_spec.rb' +- './ee/spec/services/ee/issues/create_from_vulnerability_data_service_spec.rb' +- './ee/spec/services/ee/issues/create_service_spec.rb' +- './ee/spec/services/ee/issues/move_service_spec.rb' +- './ee/spec/services/ee/issues/reopen_service_spec.rb' +- './ee/spec/services/ee/issues/update_service_spec.rb' +- './ee/spec/services/ee/keys/destroy_service_spec.rb' +- './ee/spec/services/ee/labels/create_service_spec.rb' +- './ee/spec/services/ee/labels/promote_service_spec.rb' +- './ee/spec/services/ee/members/create_service_spec.rb' +- './ee/spec/services/ee/members/destroy_service_spec.rb' +- './ee/spec/services/ee/members/import_project_team_service_spec.rb' +- './ee/spec/services/ee/members/invite_service_spec.rb' +- './ee/spec/services/ee/members/update_service_spec.rb' +- './ee/spec/services/ee/merge_request_metrics_service_spec.rb' +- './ee/spec/services/ee/merge_requests/after_create_service_spec.rb' +- './ee/spec/services/ee/merge_requests/base_service_spec.rb' +- './ee/spec/services/ee/merge_requests/create_approval_event_service_spec.rb' +- './ee/spec/services/ee/merge_requests/create_from_vulnerability_data_service_spec.rb' +- './ee/spec/services/ee/merge_requests/create_pipeline_service_spec.rb' +- './ee/spec/services/ee/merge_requests/create_service_spec.rb' +- './ee/spec/services/ee/merge_requests/execute_approval_hooks_service_spec.rb' +- './ee/spec/services/ee/merge_requests/handle_assignees_change_service_spec.rb' +- './ee/spec/services/ee/merge_requests/post_merge_service_spec.rb' +- './ee/spec/services/ee/merge_requests/refresh_service_spec.rb' +- './ee/spec/services/ee/merge_requests/update_assignees_service_spec.rb' +- './ee/spec/services/ee/merge_requests/update_reviewers_service_spec.rb' +- './ee/spec/services/ee/merge_requests/update_service_spec.rb' +- './ee/spec/services/ee/namespace_settings/update_service_spec.rb' +- './ee/spec/services/ee/notes/create_service_spec.rb' +- './ee/spec/services/ee/notes/destroy_service_spec.rb' +- './ee/spec/services/ee/notes/post_process_service_spec.rb' +- './ee/spec/services/ee/notes/quick_actions_service_spec.rb' +- './ee/spec/services/ee/notes/update_service_spec.rb' +- './ee/spec/services/ee/notification_service_spec.rb' +- './ee/spec/services/ee/null_notification_service_spec.rb' +- './ee/spec/services/ee/personal_access_tokens/revoke_service_spec.rb' +- './ee/spec/services/ee/post_receive_service_spec.rb' +- './ee/spec/services/ee/preview_markdown_service_spec.rb' +- './ee/spec/services/ee/projects/autocomplete_service_spec.rb' +- './ee/spec/services/ee/projects/deploy_tokens/create_service_spec.rb' +- './ee/spec/services/ee/projects/deploy_tokens/destroy_service_spec.rb' +- './ee/spec/services/ee/protected_branches/create_service_spec.rb' +- './ee/spec/services/ee/protected_branches/destroy_service_spec.rb' +- './ee/spec/services/ee/protected_branches/update_service_spec.rb' +- './ee/spec/services/ee/quick_actions/target_service_spec.rb' +- './ee/spec/services/ee/releases/create_evidence_service_spec.rb' +- './ee/spec/services/ee/resource_events/change_iteration_service_spec.rb' +- './ee/spec/services/ee/resource_events/change_labels_service_spec.rb' +- './ee/spec/services/ee/resource_events/merge_into_notes_service_spec.rb' +- './ee/spec/services/ee/resource_events/synthetic_iteration_notes_builder_service_spec.rb' +- './ee/spec/services/ee/resource_events/synthetic_weight_notes_builder_service_spec.rb' +- './ee/spec/services/ee/system_notes/issuables_service_spec.rb' +- './ee/spec/services/ee/terraform/states/destroy_service_spec.rb' +- './ee/spec/services/ee/todos/destroy/entity_leave_service_spec.rb' +- './ee/spec/services/ee/two_factor/destroy_service_spec.rb' +- './ee/spec/services/ee/users/approve_service_spec.rb' +- './ee/spec/services/ee/users/authorized_build_service_spec.rb' +- './ee/spec/services/ee/users/block_service_spec.rb' +- './ee/spec/services/ee/users/build_service_spec.rb' +- './ee/spec/services/ee/users/create_service_spec.rb' +- './ee/spec/services/ee/users/destroy_service_spec.rb' +- './ee/spec/services/ee/users/migrate_to_ghost_user_service_spec.rb' +- './ee/spec/services/ee/users/reject_service_spec.rb' +- './ee/spec/services/ee/users/update_service_spec.rb' +- './ee/spec/services/ee/vulnerability_feedback_module/update_service_spec.rb' +- './ee/spec/services/elastic/cluster_reindexing_service_spec.rb' +- './ee/spec/services/elastic/data_migration_service_spec.rb' +- './ee/spec/services/elastic/indexing_control_service_spec.rb' +- './ee/spec/services/elastic/index_projects_by_id_service_spec.rb' +- './ee/spec/services/elastic/index_projects_by_range_service_spec.rb' +- './ee/spec/services/elastic/index_projects_service_spec.rb' +- './ee/spec/services/elastic/metrics_update_service_spec.rb' +- './ee/spec/services/elastic/process_bookkeeping_service_spec.rb' +- './ee/spec/services/elastic/process_initial_bookkeeping_service_spec.rb' +- './ee/spec/services/emails/create_service_spec.rb' +- './ee/spec/services/emails/destroy_service_spec.rb' +- './ee/spec/services/epic_issues/create_service_spec.rb' +- './ee/spec/services/epic_issues/destroy_service_spec.rb' +- './ee/spec/services/epic_issues/list_service_spec.rb' +- './ee/spec/services/epic_issues/update_service_spec.rb' +- './ee/spec/services/epics/close_service_spec.rb' +- './ee/spec/services/epics/create_service_spec.rb' +- './ee/spec/services/epics/descendant_count_service_spec.rb' +- './ee/spec/services/epics/epic_links/create_service_spec.rb' +- './ee/spec/services/epics/epic_links/destroy_service_spec.rb' +- './ee/spec/services/epics/epic_links/list_service_spec.rb' +- './ee/spec/services/epics/epic_links/update_service_spec.rb' +- './ee/spec/services/epics/issue_promote_service_spec.rb' +- './ee/spec/services/epics/related_epic_links/create_service_spec.rb' +- './ee/spec/services/epics/related_epic_links/destroy_service_spec.rb' +- './ee/spec/services/epics/related_epic_links/list_service_spec.rb' +- './ee/spec/services/epics/reopen_service_spec.rb' +- './ee/spec/services/epics/transfer_service_spec.rb' +- './ee/spec/services/epics/tree_reorder_service_spec.rb' +- './ee/spec/services/epics/update_dates_service_spec.rb' +- './ee/spec/services/epics/update_service_spec.rb' +- './ee/spec/services/external_status_checks/create_service_spec.rb' +- './ee/spec/services/external_status_checks/destroy_service_spec.rb' +- './ee/spec/services/external_status_checks/dispatch_service_spec.rb' +- './ee/spec/services/external_status_checks/update_service_spec.rb' +- './ee/spec/services/feature_flag_issues/destroy_service_spec.rb' +- './ee/spec/services/geo/base_file_service_spec.rb' +- './ee/spec/services/geo/blob_download_service_spec.rb' +- './ee/spec/services/geo/blob_upload_service_spec.rb' +- './ee/spec/services/geo/cache_invalidation_event_store_spec.rb' +- './ee/spec/services/geo/container_repository_sync_service_spec.rb' +- './ee/spec/services/geo/container_repository_sync_spec.rb' +- './ee/spec/services/geo/container_repository_updated_event_store_spec.rb' +- './ee/spec/services/geo/design_repository_sync_service_spec.rb' +- './ee/spec/services/geo/event_service_spec.rb' +- './ee/spec/services/geo/file_registry_removal_service_spec.rb' +- './ee/spec/services/geo/files_expire_service_spec.rb' +- './ee/spec/services/geo/framework_repository_sync_service_spec.rb' +- './ee/spec/services/geo/graphql_request_service_spec.rb' +- './ee/spec/services/geo/hashed_storage_attachments_event_store_spec.rb' +- './ee/spec/services/geo/hashed_storage_attachments_migration_service_spec.rb' +- './ee/spec/services/geo/hashed_storage_migrated_event_store_spec.rb' +- './ee/spec/services/geo/hashed_storage_migration_service_spec.rb' +- './ee/spec/services/geo/metrics_update_service_spec.rb' +- './ee/spec/services/geo/move_repository_service_spec.rb' +- './ee/spec/services/geo/node_create_service_spec.rb' +- './ee/spec/services/geo/node_status_request_service_spec.rb' +- './ee/spec/services/geo/node_update_service_spec.rb' +- './ee/spec/services/geo/project_housekeeping_service_spec.rb' +- './ee/spec/services/geo/prune_event_log_service_spec.rb' +- './ee/spec/services/geo/registry_consistency_service_spec.rb' +- './ee/spec/services/geo/rename_repository_service_spec.rb' +- './ee/spec/services/geo/replication_toggle_request_service_spec.rb' +- './ee/spec/services/geo/repositories_changed_event_store_spec.rb' +- './ee/spec/services/geo/repository_base_sync_service_spec.rb' +- './ee/spec/services/geo/repository_created_event_store_spec.rb' +- './ee/spec/services/geo/repository_deleted_event_store_spec.rb' +- './ee/spec/services/geo/repository_destroy_service_spec.rb' +- './ee/spec/services/geo/repository_registry_removal_service_spec.rb' +- './ee/spec/services/geo/repository_renamed_event_store_spec.rb' +- './ee/spec/services/geo/repository_sync_service_spec.rb' +- './ee/spec/services/geo/repository_updated_event_store_spec.rb' +- './ee/spec/services/geo/repository_updated_service_spec.rb' +- './ee/spec/services/geo/repository_verification_primary_service_spec.rb' +- './ee/spec/services/geo/repository_verification_reset_spec.rb' +- './ee/spec/services/geo/repository_verification_secondary_service_spec.rb' +- './ee/spec/services/geo/reset_checksum_event_store_spec.rb' +- './ee/spec/services/geo/wiki_sync_service_spec.rb' +- './ee/spec/services/gitlab_subscriptions/activate_awaiting_users_service_spec.rb' +- './ee/spec/services/gitlab_subscriptions/activate_service_spec.rb' +- './ee/spec/services/gitlab_subscriptions/apply_trial_service_spec.rb' +- './ee/spec/services/gitlab_subscriptions/check_future_renewal_service_spec.rb' +- './ee/spec/services/gitlab_subscriptions/create_hand_raise_lead_service_spec.rb' +- './ee/spec/services/gitlab_subscriptions/create_service_spec.rb' +- './ee/spec/services/gitlab_subscriptions/create_trial_or_lead_service_spec.rb' +- './ee/spec/services/gitlab_subscriptions/extend_reactivate_trial_service_spec.rb' +- './ee/spec/services/gitlab_subscriptions/fetch_purchase_eligible_namespaces_service_spec.rb' +- './ee/spec/services/gitlab_subscriptions/fetch_subscription_plans_service_spec.rb' +- './ee/spec/services/gitlab_subscriptions/notify_seats_exceeded_service_spec.rb' +- './ee/spec/services/gitlab_subscriptions/plan_upgrade_service_spec.rb' +- './ee/spec/services/gitlab_subscriptions/preview_billable_user_change_service_spec.rb' +- './ee/spec/services/gitlab_subscriptions/reconciliations/calculate_seat_count_data_service_spec.rb' +- './ee/spec/services/gitlab_subscriptions/reconciliations/check_seat_usage_alerts_eligibility_service_spec.rb' +- './ee/spec/services/group_saml/group_managed_accounts/clean_up_members_service_spec.rb' +- './ee/spec/services/group_saml/group_managed_accounts/transfer_membership_service_spec.rb' +- './ee/spec/services/group_saml/identity/destroy_service_spec.rb' +- './ee/spec/services/group_saml/saml_group_links/create_service_spec.rb' +- './ee/spec/services/group_saml/saml_group_links/destroy_service_spec.rb' +- './ee/spec/services/group_saml/saml_provider/create_service_spec.rb' +- './ee/spec/services/group_saml/saml_provider/update_service_spec.rb' +- './ee/spec/services/group_saml/sign_up_service_spec.rb' +- './ee/spec/services/groups/create_service_spec.rb' +- './ee/spec/services/groups/destroy_service_spec.rb' +- './ee/spec/services/groups/epics_count_service_spec.rb' +- './ee/spec/services/groups/mark_for_deletion_service_spec.rb' +- './ee/spec/services/groups/memberships/export_service_spec.rb' +- './ee/spec/services/groups/participants_service_spec.rb' +- './ee/spec/services/groups/restore_service_spec.rb' +- './ee/spec/services/groups/schedule_bulk_repository_shard_moves_service_spec.rb' +- './ee/spec/services/groups/seat_usage_export_service_spec.rb' +- './ee/spec/services/groups/sync_service_spec.rb' +- './ee/spec/services/groups/transfer_service_spec.rb' +- './ee/spec/services/groups/update_repository_storage_service_spec.rb' +- './ee/spec/services/groups/update_service_spec.rb' +- './ee/spec/services/historical_user_data/csv_service_spec.rb' +- './ee/spec/services/ide/schemas_config_service_spec.rb' +- './ee/spec/services/incident_management/create_incident_sla_exceeded_label_service_spec.rb' +- './ee/spec/services/incident_management/escalation_policies/create_service_spec.rb' +- './ee/spec/services/incident_management/escalation_policies/destroy_service_spec.rb' +- './ee/spec/services/incident_management/escalation_policies/update_service_spec.rb' +- './ee/spec/services/incident_management/escalation_rules/destroy_service_spec.rb' +- './ee/spec/services/incident_management/incidents/create_sla_service_spec.rb' +- './ee/spec/services/incident_management/incidents/upload_metric_service_spec.rb' +- './ee/spec/services/incident_management/issuable_resource_links/create_service_spec.rb' +- './ee/spec/services/incident_management/issuable_resource_links/destroy_service_spec.rb' +- './ee/spec/services/incident_management/oncall_rotations/create_service_spec.rb' +- './ee/spec/services/incident_management/oncall_rotations/destroy_service_spec.rb' +- './ee/spec/services/incident_management/oncall_rotations/edit_service_spec.rb' +- './ee/spec/services/incident_management/oncall_rotations/remove_participant_service_spec.rb' +- './ee/spec/services/incident_management/oncall_rotations/remove_participants_service_spec.rb' +- './ee/spec/services/incident_management/oncall_schedules/create_service_spec.rb' +- './ee/spec/services/incident_management/oncall_schedules/destroy_service_spec.rb' +- './ee/spec/services/incident_management/oncall_schedules/update_service_spec.rb' +- './ee/spec/services/incident_management/oncall_shifts/read_service_spec.rb' +- './ee/spec/services/incident_management/pending_escalations/create_service_spec.rb' +- './ee/spec/services/incident_management/pending_escalations/process_service_spec.rb' +- './ee/spec/services/issuable/destroy_label_links_service_spec.rb' +- './ee/spec/services/issue_feature_flags/list_service_spec.rb' +- './ee/spec/services/issues/build_service_spec.rb' +- './ee/spec/services/issues/duplicate_service_spec.rb' +- './ee/spec/services/issues/export_csv_service_spec.rb' +- './ee/spec/services/iterations/cadences/create_iterations_in_advance_service_spec.rb' +- './ee/spec/services/iterations/cadences/create_service_spec.rb' +- './ee/spec/services/iterations/cadences/destroy_service_spec.rb' +- './ee/spec/services/iterations/cadences/update_service_spec.rb' +- './ee/spec/services/iterations/create_service_spec.rb' +- './ee/spec/services/iterations/delete_service_spec.rb' +- './ee/spec/services/iterations/roll_over_issues_service_spec.rb' +- './ee/spec/services/iterations/update_service_spec.rb' +- './ee/spec/services/jira/jql_builder_service_spec.rb' +- './ee/spec/services/jira/requests/issues/list_service_spec.rb' +- './ee/spec/services/keys/create_service_spec.rb' +- './ee/spec/services/keys/last_used_service_spec.rb' +- './ee/spec/services/ldap_group_reset_service_spec.rb' +- './ee/spec/services/lfs/lock_file_service_spec.rb' +- './ee/spec/services/lfs/unlock_file_service_spec.rb' +- './ee/spec/services/licenses/destroy_service_spec.rb' +- './ee/spec/services/members/activate_service_spec.rb' +- './ee/spec/services/members/await_service_spec.rb' +- './ee/spec/services/merge_commits/export_csv_service_spec.rb' +- './ee/spec/services/merge_request_approval_settings/update_service_spec.rb' +- './ee/spec/services/merge_requests/approval_service_spec.rb' +- './ee/spec/services/merge_requests/build_service_spec.rb' +- './ee/spec/services/merge_requests/mergeability/check_approved_service_spec.rb' +- './ee/spec/services/merge_requests/mergeability/check_blocked_by_other_mrs_service_spec.rb' +- './ee/spec/services/merge_requests/mergeability/check_denied_policies_service_spec.rb' +- './ee/spec/services/merge_requests/merge_service_spec.rb' +- './ee/spec/services/merge_requests/merge_to_ref_service_spec.rb' +- './ee/spec/services/merge_requests/push_options_handler_service_spec.rb' +- './ee/spec/services/merge_requests/reload_merge_head_diff_service_spec.rb' +- './ee/spec/services/merge_requests/remove_approval_service_spec.rb' +- './ee/spec/services/merge_requests/reset_approvals_service_spec.rb' +- './ee/spec/services/merge_requests/stream_approval_audit_event_service_spec.rb' +- './ee/spec/services/merge_requests/sync_code_owner_approval_rules_spec.rb' +- './ee/spec/services/merge_requests/sync_report_approver_approval_rules_spec.rb' +- './ee/spec/services/merge_requests/update_blocks_service_spec.rb' +- './ee/spec/services/merge_trains/check_status_service_spec.rb' +- './ee/spec/services/merge_trains/create_pipeline_service_spec.rb' +- './ee/spec/services/merge_trains/refresh_merge_request_service_spec.rb' +- './ee/spec/services/merge_trains/refresh_service_spec.rb' +- './ee/spec/services/milestones/destroy_service_spec.rb' +- './ee/spec/services/milestones/promote_service_spec.rb' +- './ee/spec/services/milestones/update_service_spec.rb' +- './ee/spec/services/namespaces/free_user_cap/deactivate_members_over_limit_service_spec.rb' +- './ee/spec/services/namespaces/free_user_cap/remove_group_group_links_outside_hierarchy_service_spec.rb' +- './ee/spec/services/namespaces/free_user_cap/remove_project_group_links_outside_hierarchy_service_spec.rb' +- './ee/spec/services/namespaces/free_user_cap/update_prevent_sharing_outside_hierarchy_service_spec.rb' +- './ee/spec/services/namespaces/in_product_marketing_emails_service_spec.rb' +- './ee/spec/services/namespaces/storage/email_notification_service_spec.rb' +- './ee/spec/services/path_locks/lock_service_spec.rb' +- './ee/spec/services/path_locks/unlock_service_spec.rb' +- './ee/spec/services/personal_access_tokens/create_service_audit_log_spec.rb' +- './ee/spec/services/personal_access_tokens/groups/update_lifetime_service_spec.rb' +- './ee/spec/services/personal_access_tokens/instance/update_lifetime_service_spec.rb' +- './ee/spec/services/personal_access_tokens/revoke_invalid_tokens_spec.rb' +- './ee/spec/services/personal_access_tokens/revoke_service_audit_log_spec.rb' +- './ee/spec/services/personal_access_tokens/rotation_verifier_service_spec.rb' +- './ee/spec/services/projects/after_rename_service_spec.rb' +- './ee/spec/services/projects/alerting/notify_service_spec.rb' +- './ee/spec/services/projects/cleanup_service_spec.rb' +- './ee/spec/services/projects/create_from_template_service_spec.rb' +- './ee/spec/services/projects/create_service_spec.rb' +- './ee/spec/services/projects/destroy_service_spec.rb' +- './ee/spec/services/projects/disable_deploy_key_service_spec.rb' +- './ee/spec/services/projects/disable_legacy_inactive_projects_service_spec.rb' +- './ee/spec/services/projects/enable_deploy_key_service_spec.rb' +- './ee/spec/services/projects/fork_service_spec.rb' +- './ee/spec/services/projects/gitlab_projects_import_service_spec.rb' +- './ee/spec/services/projects/group_links/create_service_spec.rb' +- './ee/spec/services/projects/group_links/destroy_service_spec.rb' +- './ee/spec/services/projects/group_links/update_service_spec.rb' +- './ee/spec/services/projects/hashed_storage/migrate_attachments_service_spec.rb' +- './ee/spec/services/projects/hashed_storage/migrate_repository_service_spec.rb' +- './ee/spec/services/projects/import_export/export_service_spec.rb' +- './ee/spec/services/projects/import_service_spec.rb' +- './ee/spec/services/projects/licenses/create_policy_service_spec.rb' +- './ee/spec/services/projects/licenses/update_policy_service_spec.rb' +- './ee/spec/services/projects/mark_for_deletion_service_spec.rb' +- './ee/spec/services/projects/open_issues_count_service_spec.rb' +- './ee/spec/services/projects/operations/update_service_spec.rb' +- './ee/spec/services/projects/prometheus/alerts/notify_service_spec.rb' +- './ee/spec/services/projects/protect_default_branch_service_spec.rb' +- './ee/spec/services/projects/restore_service_spec.rb' +- './ee/spec/services/projects/setup_ci_cd_spec.rb' +- './ee/spec/services/projects/slack_application_install_service_spec.rb' +- './ee/spec/services/projects/transfer_service_spec.rb' +- './ee/spec/services/projects/update_mirror_service_spec.rb' +- './ee/spec/services/projects/update_service_spec.rb' +- './ee/spec/services/protected_environments/base_service_spec.rb' +- './ee/spec/services/protected_environments/create_service_spec.rb' +- './ee/spec/services/protected_environments/destroy_service_spec.rb' +- './ee/spec/services/protected_environments/environment_dropdown_service_spec.rb' +- './ee/spec/services/protected_environments/search_service_spec.rb' +- './ee/spec/services/protected_environments/update_service_spec.rb' +- './ee/spec/services/push_rules/create_or_update_service_spec.rb' +- './ee/spec/services/quality_management/test_cases/create_service_spec.rb' +- './ee/spec/services/quick_actions/interpret_service_spec.rb' +- './ee/spec/services/releases/create_service_spec.rb' +- './ee/spec/services/releases/update_service_spec.rb' +- './ee/spec/services/repositories/housekeeping_service_spec.rb' +- './ee/spec/services/requirements_management/export_csv_service_spec.rb' +- './ee/spec/services/requirements_management/import_csv_service_spec.rb' +- './ee/spec/services/requirements_management/map_export_fields_service_spec.rb' +- './ee/spec/services/requirements_management/prepare_import_csv_service_spec.rb' +- './ee/spec/services/requirements_management/process_test_reports_service_spec.rb' +- './ee/spec/services/requirements_management/update_requirement_service_spec.rb' +- './ee/spec/services/resource_access_tokens/create_service_spec.rb' +- './ee/spec/services/resource_access_tokens/revoke_service_spec.rb' +- './ee/spec/services/resource_events/change_weight_service_spec.rb' +- './ee/spec/services/search/global_service_spec.rb' +- './ee/spec/services/search/group_service_spec.rb' +- './ee/spec/services/search/project_service_spec.rb' +- './ee/spec/services/search_service_spec.rb' +- './ee/spec/services/search/snippet_service_spec.rb' +- './ee/spec/services/security/auto_fix_label_service_spec.rb' +- './ee/spec/services/security/auto_fix_service_spec.rb' +- './ee/spec/services/security/configuration/save_auto_fix_service_spec.rb' +- './ee/spec/services/security/dependency_list_service_spec.rb' +- './ee/spec/services/security/findings/cleanup_service_spec.rb' +- './ee/spec/services/security/ingestion/finding_map_collection_spec.rb' +- './ee/spec/services/security/ingestion/finding_map_spec.rb' +- './ee/spec/services/security/ingestion/ingest_report_service_spec.rb' +- './ee/spec/services/security/ingestion/ingest_report_slice_service_spec.rb' +- './ee/spec/services/security/ingestion/ingest_reports_service_spec.rb' +- './ee/spec/services/security/ingestion/mark_as_resolved_service_spec.rb' +- './ee/spec/services/security/ingestion/tasks/attach_findings_to_vulnerabilities_spec.rb' +- './ee/spec/services/security/ingestion/tasks/hooks_execution_spec.rb' +- './ee/spec/services/security/ingestion/tasks/ingest_finding_evidence_spec.rb' +- './ee/spec/services/security/ingestion/tasks/ingest_finding_identifiers_spec.rb' +- './ee/spec/services/security/ingestion/tasks/ingest_finding_links_spec.rb' +- './ee/spec/services/security/ingestion/tasks/ingest_finding_pipelines_spec.rb' +- './ee/spec/services/security/ingestion/tasks/ingest_finding_signatures_spec.rb' +- './ee/spec/services/security/ingestion/tasks/ingest_findings_spec.rb' +- './ee/spec/services/security/ingestion/tasks/ingest_identifiers_spec.rb' +- './ee/spec/services/security/ingestion/tasks/ingest_issue_links_spec.rb' +- './ee/spec/services/security/ingestion/tasks/ingest_remediations_spec.rb' +- './ee/spec/services/security/ingestion/tasks/ingest_vulnerabilities/create_spec.rb' +- './ee/spec/services/security/ingestion/tasks/ingest_vulnerabilities/mark_resolved_as_detected_spec.rb' +- './ee/spec/services/security/ingestion/tasks/ingest_vulnerabilities_spec.rb' +- './ee/spec/services/security/ingestion/tasks/ingest_vulnerability_flags_spec.rb' +- './ee/spec/services/security/ingestion/tasks/ingest_vulnerability_statistics_spec.rb' +- './ee/spec/services/security/ingestion/tasks/update_vulnerability_uuids_spec.rb' +- './ee/spec/services/security/merge_reports_service_spec.rb' +- './ee/spec/services/security/orchestration/assign_service_spec.rb' +- './ee/spec/services/security/orchestration/unassign_service_spec.rb' +- './ee/spec/services/security/override_uuids_service_spec.rb' +- './ee/spec/services/security/report_fetch_service_spec.rb' +- './ee/spec/services/security/report_summary_service_spec.rb' +- './ee/spec/services/security/scanned_resources_counting_service_spec.rb' +- './ee/spec/services/security/scanned_resources_service_spec.rb' +- './ee/spec/services/security/security_orchestration_policies/ci_configuration_service_spec.rb' +- './ee/spec/services/security/security_orchestration_policies/create_pipeline_service_spec.rb' +- './ee/spec/services/security/security_orchestration_policies/fetch_policy_approvers_service_spec.rb' +- './ee/spec/services/security/security_orchestration_policies/fetch_policy_service_spec.rb' +- './ee/spec/services/security/security_orchestration_policies/on_demand_scan_pipeline_configuration_service_spec.rb' +- './ee/spec/services/security/security_orchestration_policies/operational_vulnerabilities_configuration_service_spec.rb' +- './ee/spec/services/security/security_orchestration_policies/policy_commit_service_spec.rb' +- './ee/spec/services/security/security_orchestration_policies/policy_configuration_validation_service_spec.rb' +- './ee/spec/services/security/security_orchestration_policies/process_policy_service_spec.rb' +- './ee/spec/services/security/security_orchestration_policies/process_rule_service_spec.rb' +- './ee/spec/services/security/security_orchestration_policies/process_scan_result_policy_service_spec.rb' +- './ee/spec/services/security/security_orchestration_policies/project_create_service_spec.rb' +- './ee/spec/services/security/security_orchestration_policies/rule_schedule_service_spec.rb' +- './ee/spec/services/security/security_orchestration_policies/scan_pipeline_service_spec.rb' +- './ee/spec/services/security/security_orchestration_policies/sync_opened_merge_requests_service_spec.rb' +- './ee/spec/services/security/security_orchestration_policies/sync_open_merge_requests_head_pipeline_service_spec.rb' +- './ee/spec/services/security/security_orchestration_policies/validate_policy_service_spec.rb' +- './ee/spec/services/security/store_findings_metadata_service_spec.rb' +- './ee/spec/services/security/store_grouped_scans_service_spec.rb' +- './ee/spec/services/security/store_scan_service_spec.rb' +- './ee/spec/services/security/store_scans_service_spec.rb' +- './ee/spec/services/security/token_revocation_service_spec.rb' +- './ee/spec/services/security/track_scan_service_spec.rb' +- './ee/spec/services/security/update_training_service_spec.rb' +- './ee/spec/services/security/vulnerability_counting_service_spec.rb' +- './ee/spec/services/sitemap/create_service_spec.rb' +- './ee/spec/services/slash_commands/global_slack_handler_spec.rb' +- './ee/spec/services/software_license_policies/create_service_spec.rb' +- './ee/spec/services/software_license_policies/update_service_spec.rb' +- './ee/spec/services/start_pull_mirroring_service_spec.rb' +- './ee/spec/services/status_page/mark_for_publication_service_spec.rb' +- './ee/spec/services/status_page/publish_attachments_service_spec.rb' +- './ee/spec/services/status_page/publish_details_service_spec.rb' +- './ee/spec/services/status_page/publish_list_service_spec.rb' +- './ee/spec/services/status_page/publish_service_spec.rb' +- './ee/spec/services/status_page/trigger_publish_service_spec.rb' +- './ee/spec/services/status_page/unpublish_details_service_spec.rb' +- './ee/spec/services/system_notes/epics_service_spec.rb' +- './ee/spec/services/system_note_service_spec.rb' +- './ee/spec/services/system_notes/escalations_service_spec.rb' +- './ee/spec/services/system_notes/merge_train_service_spec.rb' +- './ee/spec/services/system_notes/vulnerabilities_service_spec.rb' +- './ee/spec/services/timebox_report_service_spec.rb' +- './ee/spec/services/timelogs/create_service_spec.rb' +- './ee/spec/services/todos/allowed_target_filter_service_spec.rb' +- './ee/spec/services/todos/destroy/confidential_epic_service_spec.rb' +- './ee/spec/services/todo_service_spec.rb' +- './ee/spec/services/upcoming_reconciliations/update_service_spec.rb' +- './ee/spec/services/user_permissions/export_service_spec.rb' +- './ee/spec/services/users/abuse/excessive_projects_download_ban_service_spec.rb' +- './ee/spec/services/users/abuse/git_abuse/namespace_throttle_service_spec.rb' +- './ee/spec/services/users/abuse/namespace_bans/create_service_spec.rb' +- './ee/spec/services/users/abuse/namespace_bans/destroy_service_spec.rb' +- './ee/spec/services/users/captcha_challenge_service_spec.rb' +- './ee/spec/services/users_ops_dashboard_projects/destroy_service_spec.rb' +- './ee/spec/services/users/update_highest_member_role_service_spec.rb' +- './ee/spec/services/vulnerabilities/confirm_service_spec.rb' +- './ee/spec/services/vulnerabilities/create_from_security_finding_service_spec.rb' +- './ee/spec/services/vulnerabilities/create_service_spec.rb' +- './ee/spec/services/vulnerabilities/destroy_dismissal_feedback_service_spec.rb' +- './ee/spec/services/vulnerabilities/dismiss_service_spec.rb' +- './ee/spec/services/vulnerabilities/finding_dismiss_service_spec.rb' +- './ee/spec/services/vulnerabilities/findings/create_from_security_finding_service_spec.rb' +- './ee/spec/services/vulnerabilities/historical_statistics/adjustment_service_spec.rb' +- './ee/spec/services/vulnerabilities/historical_statistics/deletion_service_spec.rb' +- './ee/spec/services/vulnerabilities/manually_create_service_spec.rb' +- './ee/spec/services/vulnerabilities/resolve_service_spec.rb' +- './ee/spec/services/vulnerabilities/revert_to_detected_service_spec.rb' +- './ee/spec/services/vulnerabilities/security_finding/create_issue_service_spec.rb' +- './ee/spec/services/vulnerabilities/starboard_vulnerability_create_service_spec.rb' +- './ee/spec/services/vulnerabilities/starboard_vulnerability_resolve_service_spec.rb' +- './ee/spec/services/vulnerabilities/statistics/adjustment_service_spec.rb' +- './ee/spec/services/vulnerabilities/statistics/update_service_spec.rb' +- './ee/spec/services/vulnerabilities/update_service_spec.rb' +- './ee/spec/services/vulnerabilities/user_notes_count_service_spec.rb' +- './ee/spec/services/vulnerability_exports/create_service_spec.rb' +- './ee/spec/services/vulnerability_exports/exporters/csv_service_spec.rb' +- './ee/spec/services/vulnerability_exports/export_service_spec.rb' +- './ee/spec/services/vulnerability_external_issue_links/create_service_spec.rb' +- './ee/spec/services/vulnerability_external_issue_links/destroy_service_spec.rb' +- './ee/spec/services/vulnerability_feedback/create_service_spec.rb' +- './ee/spec/services/vulnerability_feedback/destroy_service_spec.rb' +- './ee/spec/services/vulnerability_issue_links/create_service_spec.rb' +- './ee/spec/services/vulnerability_issue_links/delete_service_spec.rb' +- './ee/spec/services/vulnerability_scanners/list_service_spec.rb' +- './ee/spec/services/web_hook_service_spec.rb' +- './ee/spec/services/wiki_pages/create_service_spec.rb' +- './ee/spec/services/wiki_pages/destroy_service_spec.rb' +- './ee/spec/services/wiki_pages/update_service_spec.rb' +- './ee/spec/services/wikis/create_attachment_service_spec.rb' +- './ee/spec/services/work_items/update_service_spec.rb' +- './ee/spec/services/work_items/widgets/weight_service/update_service_spec.rb' +- './ee/spec/tasks/geo/git_rake_spec.rb' +- './ee/spec/tasks/geo_rake_spec.rb' +- './ee/spec/tasks/gitlab/check_rake_spec.rb' +- './ee/spec/tasks/gitlab/elastic_rake_spec.rb' +- './ee/spec/tasks/gitlab/geo_rake_spec.rb' +- './ee/spec/tasks/gitlab/license_rake_spec.rb' +- './ee/spec/tasks/gitlab/seed/group_seed_rake_spec.rb' +- './ee/spec/tasks/gitlab/spdx_rake_spec.rb' +- './ee/spec/tasks/gitlab/uploads/migrate_rake_spec.rb' +- './ee/spec/validators/json_schema_validator_spec.rb' +- './ee/spec/validators/ldap_filter_validator_spec.rb' +- './ee/spec/validators/password/complexity_validator_spec.rb' +- './ee/spec/validators/user_existence_validator_spec.rb' +- './ee/spec/views/admin/application_settings/_deletion_protection_settings.html.haml_spec.rb' +- './ee/spec/views/admin/application_settings/_elasticsearch_form.html.haml_spec.rb' +- './ee/spec/views/admin/application_settings/general.html.haml_spec.rb' +- './ee/spec/views/admin/application_settings/_git_abuse_rate_limit.html.haml_spec.rb' +- './ee/spec/views/admin/dashboard/index.html.haml_spec.rb' +- './ee/spec/views/admin/dev_ops_report/show.html.haml_spec.rb' +- './ee/spec/views/admin/groups/_form.html.haml_spec.rb' +- './ee/spec/views/admin/identities/index.html.haml_spec.rb' +- './ee/spec/views/admin/push_rules/_merge_request_approvals.html.haml_spec.rb' +- './ee/spec/views/admin/users/_credit_card_info.html.haml_spec.rb' +- './ee/spec/views/admin/users/index.html.haml_spec.rb' +- './ee/spec/views/admin/users/show.html.haml_spec.rb' +- './ee/spec/views/clusters/clusters/show.html.haml_spec.rb' +- './ee/spec/views/compliance_management/compliance_framework/_compliance_framework_badge.html.haml_spec.rb' +- './ee/spec/views/compliance_management/compliance_framework/_project_settings.html.haml_spec.rb' +- './ee/spec/views/devise/sessions/new.html.haml_spec.rb' +- './ee/spec/views/groups/billings/index.html.haml_spec.rb' +- './ee/spec/views/groups/compliance_frameworks/edit.html.haml_spec.rb' +- './ee/spec/views/groups/_compliance_frameworks.html.haml_spec.rb' +- './ee/spec/views/groups/compliance_frameworks/new.html.haml_spec.rb' +- './ee/spec/views/groups/edit.html.haml_spec.rb' +- './ee/spec/views/groups/feature_discovery_moments/advanced_features_dashboard.html.haml_spec.rb' +- './ee/spec/views/groups/group_members/index.html.haml_spec.rb' +- './ee/spec/views/groups/hook_logs/show.html.haml_spec.rb' +- './ee/spec/views/groups/hooks/edit.html.haml_spec.rb' +- './ee/spec/views/groups/security/discover/show.html.haml_spec.rb' +- './ee/spec/views/groups/settings/_remove.html.haml_spec.rb' +- './ee/spec/views/groups/settings/reporting/show.html.haml_spec.rb' +- './ee/spec/views/groups/show.html.haml_spec.rb' +- './ee/spec/views/groups/usage_quotas/index.html.haml_spec.rb' +- './ee/spec/views/layouts/application.html.haml_spec.rb' +- './ee/spec/views/layouts/checkout.html.haml_spec.rb' +- './ee/spec/views/layouts/header/_current_user_dropdown.html.haml_spec.rb' +- './ee/spec/views/layouts/header/_ee_subscribable_banner.html.haml_spec.rb' +- './ee/spec/views/layouts/header/help_dropdown/_cross_stage_fdm.html.haml_spec.rb' +- './ee/spec/views/layouts/header/_new_dropdown.haml_spec.rb' +- './ee/spec/views/layouts/header/_read_only_banner.html.haml_spec.rb' +- './ee/spec/views/layouts/nav/sidebar/_admin.html.haml_spec.rb' +- './ee/spec/views/layouts/nav/sidebar/_group.html.haml_spec.rb' +- './ee/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb' +- './ee/spec/views/layouts/nav/sidebar/_push_rules_link.html.haml_spec.rb' +- './ee/spec/views/layouts/_search.html.haml_spec.rb' +- './ee/spec/views/operations/environments.html.haml_spec.rb' +- './ee/spec/views/operations/index.html.haml_spec.rb' +- './ee/spec/views/profiles/preferences/show.html.haml_spec.rb' +- './ee/spec/views/projects/edit.html.haml_spec.rb' +- './ee/spec/views/projects/empty.html.haml_spec.rb' +- './ee/spec/views/projects/issues/show.html.haml_spec.rb' +- './ee/spec/views/projects/merge_requests/_merge_request_approvals.html.haml_spec.rb' +- './ee/spec/views/projects/_merge_request_status_checks_settings.html.haml_spec.rb' +- './ee/spec/views/projects/on_demand_scans/index.html.haml_spec.rb' +- './ee/spec/views/projects/pipelines/_tabs_content.html.haml_spec.rb' +- './ee/spec/views/projects/project_members/index.html.haml_spec.rb' +- './ee/spec/views/projects/security/corpus_management/show.html.haml_spec.rb' +- './ee/spec/views/projects/security/dast_profiles/show.html.haml_spec.rb' +- './ee/spec/views/projects/security/dast_scanner_profiles/edit.html.haml_spec.rb' +- './ee/spec/views/projects/security/dast_scanner_profiles/new.html.haml_spec.rb' +- './ee/spec/views/projects/security/dast_site_profiles/edit.html.haml_spec.rb' +- './ee/spec/views/projects/security/dast_site_profiles/new.html.haml_spec.rb' +- './ee/spec/views/projects/security/discover/show.html.haml_spec.rb' +- './ee/spec/views/projects/security/policies/index.html.haml_spec.rb' +- './ee/spec/views/projects/security/sast_configuration/show.html.haml_spec.rb' +- './ee/spec/views/projects/settings/subscriptions/_index.html.haml_spec.rb' +- './ee/spec/views/projects/show.html.haml_spec.rb' +- './ee/spec/views/registrations/groups/new.html.haml_spec.rb' +- './ee/spec/views/registrations/groups_projects/new.html.haml_spec.rb' +- './ee/spec/views/registrations/projects/new.html.haml_spec.rb' +- './ee/spec/views/registrations/welcome/continuous_onboarding_getting_started.html.haml_spec.rb' +- './ee/spec/views/registrations/welcome/show.html.haml_spec.rb' +- './ee/spec/views/search/_category.html.haml_spec.rb' +- './ee/spec/views/shared/access_tokens/_table.html.haml_spec.rb' +- './ee/spec/views/shared/billings/_billing_plan_actions.html.haml_spec.rb' +- './ee/spec/views/shared/billings/_billing_plan.html.haml_spec.rb' +- './ee/spec/views/shared/billings/_billing_plans.html.haml_spec.rb' +- './ee/spec/views/shared/billings/_eoa_bronze_plan_banner.html.haml_spec.rb' +- './ee/spec/views/shared/billings/_trial_status.html.haml_spec.rb' +- './ee/spec/views/shared/_clone_panel.html.haml_spec.rb' +- './ee/spec/views/shared/credentials_inventory/_expiry_date.html.haml_spec.rb' +- './ee/spec/views/shared/credentials_inventory/gpg_keys/_gpg_key.html.haml_spec.rb' +- './ee/spec/views/shared/credentials_inventory/personal_access_tokens/_personal_access_token.html.haml_spec.rb' +- './ee/spec/views/shared/credentials_inventory/project_access_tokens/_project_access_token.html.haml_spec.rb' +- './ee/spec/views/shared/credentials_inventory/ssh_keys/_ssh_key.html.haml_spec.rb' +- './ee/spec/views/shared/issuable/_approver_suggestion.html.haml_spec.rb' +- './ee/spec/views/shared/issuable/_epic_dropdown.html.haml_spec.rb' +- './ee/spec/views/shared/issuable/_health_status_dropdown.html.haml_spec.rb' +- './ee/spec/views/shared/issuable/_iterations_dropdown.html.haml_spec.rb' +- './ee/spec/views/shared/issuable/_sidebar.html.haml_spec.rb' +- './ee/spec/views/shared/_kerberos_clone_button.html.haml_spec.rb' +- './ee/spec/views/shared/labels/_create_label_help_text.html.haml_spec.rb' +- './ee/spec/views/shared/milestones/_milestone.html.haml_spec.rb' +- './ee/spec/views/shared/_mirror_status.html.haml_spec.rb' +- './ee/spec/views/shared/_mirror_update_button.html.haml_spec.rb' +- './ee/spec/views/shared/_namespace_user_cap_reached_alert.html.haml_spec.rb' +- './ee/spec/views/shared/promotions/_promotion_link_project.html.haml_spec.rb' +- './ee/spec/views/subscriptions/buy_minutes.html.haml_spec.rb' +- './ee/spec/views/subscriptions/buy_storage.html.haml_spec.rb' +- './ee/spec/views/subscriptions/groups/edit.html.haml_spec.rb' +- './ee/spec/views/subscriptions/new.html.haml_spec.rb' +- './ee/spec/views/trial_registrations/new.html.haml_spec.rb' +- './ee/spec/views/trials/_skip_trial.html.haml_spec.rb' +- './ee/spec/workers/active_user_count_threshold_worker_spec.rb' +- './ee/spec/workers/adjourned_group_deletion_worker_spec.rb' +- './ee/spec/workers/adjourned_project_deletion_worker_spec.rb' +- './ee/spec/workers/adjourned_projects_deletion_cron_worker_spec.rb' +- './ee/spec/workers/admin_emails_worker_spec.rb' +- './ee/spec/workers/analytics/code_review_metrics_worker_spec.rb' +- './ee/spec/workers/analytics/cycle_analytics/consistency_worker_spec.rb' +- './ee/spec/workers/analytics/cycle_analytics/incremental_worker_spec.rb' +- './ee/spec/workers/analytics/cycle_analytics/reaggregation_worker_spec.rb' +- './ee/spec/workers/analytics/devops_adoption/create_all_snapshots_worker_spec.rb' +- './ee/spec/workers/analytics/devops_adoption/create_snapshot_worker_spec.rb' +- './ee/spec/workers/approval_rules/external_approval_rule_payload_worker_spec.rb' +- './ee/spec/workers/app_sec/dast/profile_schedule_worker_spec.rb' +- './ee/spec/workers/app_sec/dast/scanner_profiles_builds/consistency_worker_spec.rb' +- './ee/spec/workers/app_sec/dast/scans/consistency_worker_spec.rb' +- './ee/spec/workers/app_sec/dast/site_profiles_builds/consistency_worker_spec.rb' +- './ee/spec/workers/audit_events/audit_event_streaming_worker_spec.rb' +- './ee/spec/workers/audit_events/user_impersonation_event_create_worker_spec.rb' +- './ee/spec/workers/auth/saml_group_sync_worker_spec.rb' +- './ee/spec/workers/ci/batch_reset_minutes_worker_spec.rb' +- './ee/spec/workers/ci/initial_pipeline_process_worker_spec.rb' +- './ee/spec/workers/ci/minutes/refresh_cached_data_worker_spec.rb' +- './ee/spec/workers/ci/minutes/update_project_and_namespace_usage_worker_spec.rb' +- './ee/spec/workers/ci/runners/stale_group_runners_prune_cron_worker_spec.rb' +- './ee/spec/workers/ci/sync_reports_to_report_approval_rules_worker_spec.rb' +- './ee/spec/workers/ci/trigger_downstream_subscriptions_worker_spec.rb' +- './ee/spec/workers/ci/upstream_projects_subscriptions_cleanup_worker_spec.rb' +- './ee/spec/workers/clear_shared_runners_minutes_worker_spec.rb' +- './ee/spec/workers/compliance_management/chain_of_custody_report_worker_spec.rb' +- './ee/spec/workers/compliance_management/merge_requests/compliance_violations_worker_spec.rb' +- './ee/spec/workers/concerns/elastic/indexing_control_spec.rb' +- './ee/spec/workers/concerns/elastic/migration_obsolete_spec.rb' +- './ee/spec/workers/concerns/elastic/migration_options_spec.rb' +- './ee/spec/workers/concerns/update_orchestration_policy_configuration_spec.rb' +- './ee/spec/workers/create_github_webhook_worker_spec.rb' +- './ee/spec/workers/deployments/auto_rollback_worker_spec.rb' +- './ee/spec/workers/dora/daily_metrics/refresh_worker_spec.rb' +- './ee/spec/workers/ee/arkose/blocked_users_report_worker_spec.rb' +- './ee/spec/workers/ee/ci/build_finished_worker_spec.rb' +- './ee/spec/workers/ee/issuable_export_csv_worker_spec.rb' +- './ee/spec/workers/ee/namespaces/in_product_marketing_emails_worker_spec.rb' +- './ee/spec/workers/ee/namespaces/root_statistics_worker_spec.rb' +- './ee/spec/workers/ee/projects/inactive_projects_deletion_cron_worker_spec.rb' +- './ee/spec/workers/ee/repository_check/batch_worker_spec.rb' +- './ee/spec/workers/ee/repository_check/single_repository_worker_spec.rb' +- './ee/spec/workers/elastic_association_indexer_worker_spec.rb' +- './ee/spec/workers/elastic_cluster_reindexing_cron_worker_spec.rb' +- './ee/spec/workers/elastic_commit_indexer_worker_spec.rb' +- './ee/spec/workers/elastic_delete_project_worker_spec.rb' +- './ee/spec/workers/elastic_full_index_worker_spec.rb' +- './ee/spec/workers/elastic_index_bulk_cron_worker_spec.rb' +- './ee/spec/workers/elastic_indexing_control_worker_spec.rb' +- './ee/spec/workers/elastic_index_initial_bulk_cron_worker_spec.rb' +- './ee/spec/workers/elastic/migration_worker_spec.rb' +- './ee/spec/workers/elastic_namespace_indexer_worker_spec.rb' +- './ee/spec/workers/elastic_namespace_rollout_worker_spec.rb' +- './ee/spec/workers/elastic/project_transfer_worker_spec.rb' +- './ee/spec/workers/elastic_remove_expired_namespace_subscriptions_from_index_cron_worker_spec.rb' +- './ee/spec/workers/epics/new_epic_issue_worker_spec.rb' +- './ee/spec/workers/geo/batch_event_create_worker_spec.rb' +- './ee/spec/workers/geo/batch/project_registry_scheduler_worker_spec.rb' +- './ee/spec/workers/geo/batch/project_registry_worker_spec.rb' +- './ee/spec/workers/geo/container_repository_sync_dispatch_worker_spec.rb' +- './ee/spec/workers/geo/container_repository_sync_worker_spec.rb' +- './ee/spec/workers/geo/create_repository_updated_event_worker_spec.rb' +- './ee/spec/workers/geo/design_repository_shard_sync_worker_spec.rb' +- './ee/spec/workers/geo/design_repository_sync_worker_spec.rb' +- './ee/spec/workers/geo/destroy_worker_spec.rb' +- './ee/spec/workers/geo/event_worker_spec.rb' +- './ee/spec/workers/geo/metrics_update_worker_spec.rb' +- './ee/spec/workers/geo/project_sync_worker_spec.rb' +- './ee/spec/workers/geo/prune_event_log_worker_spec.rb' +- './ee/spec/workers/geo/registry_sync_worker_spec.rb' +- './ee/spec/workers/geo/repositories_clean_up_worker_spec.rb' +- './ee/spec/workers/geo/repository_cleanup_worker_spec.rb' +- './ee/spec/workers/geo_repository_destroy_worker_spec.rb' +- './ee/spec/workers/geo/repository_shard_sync_worker_spec.rb' +- './ee/spec/workers/geo/repository_sync_worker_spec.rb' +- './ee/spec/workers/geo/repository_verification/primary/batch_worker_spec.rb' +- './ee/spec/workers/geo/repository_verification/primary/shard_worker_spec.rb' +- './ee/spec/workers/geo/repository_verification/primary/single_worker_spec.rb' +- './ee/spec/workers/geo/repository_verification/secondary/scheduler_worker_spec.rb' +- './ee/spec/workers/geo/repository_verification/secondary/shard_worker_spec.rb' +- './ee/spec/workers/geo/repository_verification/secondary/single_worker_spec.rb' +- './ee/spec/workers/geo/reverification_batch_worker_spec.rb' +- './ee/spec/workers/geo/scheduler/per_shard_scheduler_worker_spec.rb' +- './ee/spec/workers/geo/scheduler/scheduler_worker_spec.rb' +- './ee/spec/workers/geo/secondary/registry_consistency_worker_spec.rb' +- './ee/spec/workers/geo/secondary_usage_data_cron_worker_spec.rb' +- './ee/spec/workers/geo/sidekiq_cron_config_worker_spec.rb' +- './ee/spec/workers/geo/sync_timeout_cron_worker_spec.rb' +- './ee/spec/workers/geo/verification_batch_worker_spec.rb' +- './ee/spec/workers/geo/verification_cron_worker_spec.rb' +- './ee/spec/workers/geo/verification_state_backfill_service_spec.rb' +- './ee/spec/workers/geo/verification_state_backfill_worker_spec.rb' +- './ee/spec/workers/geo/verification_timeout_worker_spec.rb' +- './ee/spec/workers/geo/verification_worker_spec.rb' +- './ee/spec/workers/gitlab_subscriptions/notify_seats_exceeded_worker_spec.rb' +- './ee/spec/workers/group_saml_group_sync_worker_spec.rb' +- './ee/spec/workers/groups/create_event_worker_spec.rb' +- './ee/spec/workers/groups/export_memberships_worker_spec.rb' +- './ee/spec/workers/groups/schedule_bulk_repository_shard_moves_worker_spec.rb' +- './ee/spec/workers/groups/update_repository_storage_worker_spec.rb' +- './ee/spec/workers/group_wikis/git_garbage_collect_worker_spec.rb' +- './ee/spec/workers/historical_data_worker_spec.rb' +- './ee/spec/workers/import_software_licenses_worker_spec.rb' +- './ee/spec/workers/incident_management/apply_incident_sla_exceeded_label_worker_spec.rb' +- './ee/spec/workers/incident_management/incident_sla_exceeded_check_worker_spec.rb' +- './ee/spec/workers/incident_management/oncall_rotations/persist_all_rotations_shifts_job_spec.rb' +- './ee/spec/workers/incident_management/oncall_rotations/persist_shifts_job_spec.rb' +- './ee/spec/workers/incident_management/pending_escalations/alert_check_worker_spec.rb' +- './ee/spec/workers/incident_management/pending_escalations/alert_create_worker_spec.rb' +- './ee/spec/workers/incident_management/pending_escalations/issue_check_worker_spec.rb' +- './ee/spec/workers/incident_management/pending_escalations/issue_create_worker_spec.rb' +- './ee/spec/workers/incident_management/pending_escalations/schedule_check_cron_worker_spec.rb' +- './ee/spec/workers/iterations/cadences/create_iterations_worker_spec.rb' +- './ee/spec/workers/iterations/cadences/schedule_create_iterations_worker_spec.rb' +- './ee/spec/workers/iterations/roll_over_issues_worker_spec.rb' +- './ee/spec/workers/iterations_update_status_worker_spec.rb' +- './ee/spec/workers/ldap_all_groups_sync_worker_spec.rb' +- './ee/spec/workers/ldap_group_sync_worker_spec.rb' +- './ee/spec/workers/ldap_sync_worker_spec.rb' +- './ee/spec/workers/licenses/reset_submit_license_usage_data_banner_worker_spec.rb' +- './ee/spec/workers/merge_request_reset_approvals_worker_spec.rb' +- './ee/spec/workers/merge_requests/stream_approval_audit_event_worker_spec.rb' +- './ee/spec/workers/merge_requests/sync_code_owner_approval_rules_worker_spec.rb' +- './ee/spec/workers/namespaces/free_user_cap/remediation_worker_spec.rb' +- './ee/spec/workers/namespaces/sync_namespace_name_worker_spec.rb' +- './ee/spec/workers/new_epic_worker_spec.rb' +- './ee/spec/workers/personal_access_tokens/groups/policy_worker_spec.rb' +- './ee/spec/workers/personal_access_tokens/instance/policy_worker_spec.rb' +- './ee/spec/workers/post_receive_spec.rb' +- './ee/spec/workers/project_cache_worker_spec.rb' +- './ee/spec/workers/project_import_schedule_worker_spec.rb' +- './ee/spec/workers/projects/disable_legacy_open_source_license_for_inactive_projects_worker_spec.rb' +- './ee/spec/workers/project_template_export_worker_spec.rb' +- './ee/spec/workers/refresh_license_compliance_checks_worker_spec.rb' +- './ee/spec/workers/repository_import_worker_spec.rb' +- './ee/spec/workers/repository_update_mirror_worker_spec.rb' +- './ee/spec/workers/requirements_management/import_requirements_csv_worker_spec.rb' +- './ee/spec/workers/requirements_management/process_requirements_reports_worker_spec.rb' +- './ee/spec/workers/sbom/ingest_reports_worker_spec.rb' +- './ee/spec/workers/scan_security_report_secrets_worker_spec.rb' +- './ee/spec/workers/security/auto_fix_worker_spec.rb' +- './ee/spec/workers/security/create_orchestration_policy_worker_spec.rb' +- './ee/spec/workers/security/findings/cleanup_worker_spec.rb' +- './ee/spec/workers/security/findings/delete_by_job_id_worker_spec.rb' +- './ee/spec/workers/security/orchestration_policy_rule_schedule_namespace_worker_spec.rb' +- './ee/spec/workers/security/orchestration_policy_rule_schedule_worker_spec.rb' +- './ee/spec/workers/security/store_scans_worker_spec.rb' +- './ee/spec/workers/security/sync_scan_policies_worker_spec.rb' +- './ee/spec/workers/security/track_secure_scans_worker_spec.rb' +- './ee/spec/workers/set_user_status_based_on_user_cap_setting_worker_spec.rb' +- './ee/spec/workers/status_page/publish_worker_spec.rb' +- './ee/spec/workers/store_security_reports_worker_spec.rb' +- './ee/spec/workers/sync_seat_link_request_worker_spec.rb' +- './ee/spec/workers/sync_seat_link_worker_spec.rb' +- './ee/spec/workers/todos_destroyer/confidential_epic_worker_spec.rb' +- './ee/spec/workers/update_all_mirrors_worker_spec.rb' +- './ee/spec/workers/update_max_seats_used_for_gitlab_com_subscriptions_worker_spec.rb' +- './ee/spec/workers/vulnerabilities/historical_statistics/deletion_worker_spec.rb' +- './ee/spec/workers/vulnerabilities/statistics/adjustment_worker_spec.rb' +- './ee/spec/workers/vulnerabilities/statistics/schedule_worker_spec.rb' +- './ee/spec/workers/vulnerability_exports/export_deletion_worker_spec.rb' +- './ee/spec/workers/vulnerability_exports/export_worker_spec.rb' +- './spec/bin/feature_flag_spec.rb' +- './spec/bin/sidekiq_cluster_spec.rb' +- './spec/channels/application_cable/connection_spec.rb' +- './spec/channels/awareness_channel_spec.rb' +- './spec/commands/metrics_server/metrics_server_spec.rb' +- './spec/commands/sidekiq_cluster/cli_spec.rb' +- './spec/components/diffs/overflow_warning_component_spec.rb' +- './spec/components/diffs/stats_component_spec.rb' +- './spec/components/layouts/horizontal_section_component_spec.rb' +- './spec/components/pajamas/alert_component_spec.rb' +- './spec/components/pajamas/avatar_component_spec.rb' +- './spec/components/pajamas/banner_component_spec.rb' +- './spec/components/pajamas/button_component_spec.rb' +- './spec/components/pajamas/card_component_spec.rb' +- './spec/components/pajamas/checkbox_component_spec.rb' +- './spec/components/pajamas/checkbox_tag_component_spec.rb' +- './spec/components/pajamas/component_spec.rb' +- './spec/components/pajamas/concerns/checkbox_radio_label_with_help_text_spec.rb' +- './spec/components/pajamas/concerns/checkbox_radio_options_spec.rb' +- './spec/components/pajamas/radio_component_spec.rb' +- './spec/components/pajamas/spinner_component_spec.rb' +- './spec/components/pajamas/toggle_component_spec.rb' +- './spec/config/application_spec.rb' +- './spec/config/inject_enterprise_edition_module_spec.rb' +- './spec/config/mail_room_spec.rb' +- './spec/config/metrics/aggregates/aggregated_metrics_spec.rb' +- './spec/config/object_store_settings_spec.rb' +- './spec/config/settings_spec.rb' +- './spec/config/smime_signature_settings_spec.rb' +- './spec/controllers/acme_challenges_controller_spec.rb' +- './spec/controllers/admin/applications_controller_spec.rb' +- './spec/controllers/admin/application_settings/appearances_controller_spec.rb' +- './spec/controllers/admin/application_settings_controller_spec.rb' +- './spec/controllers/admin/ci/variables_controller_spec.rb' +- './spec/controllers/admin/clusters_controller_spec.rb' +- './spec/controllers/admin/cohorts_controller_spec.rb' +- './spec/controllers/admin/dashboard_controller_spec.rb' +- './spec/controllers/admin/dev_ops_report_controller_spec.rb' +- './spec/controllers/admin/gitaly_servers_controller_spec.rb' +- './spec/controllers/admin/groups_controller_spec.rb' +- './spec/controllers/admin/health_check_controller_spec.rb' +- './spec/controllers/admin/hooks_controller_spec.rb' +- './spec/controllers/admin/identities_controller_spec.rb' +- './spec/controllers/admin/impersonations_controller_spec.rb' +- './spec/controllers/admin/instance_review_controller_spec.rb' +- './spec/controllers/admin/integrations_controller_spec.rb' +- './spec/controllers/admin/jobs_controller_spec.rb' +- './spec/controllers/admin/plan_limits_controller_spec.rb' +- './spec/controllers/admin/projects_controller_spec.rb' +- './spec/controllers/admin/runner_projects_controller_spec.rb' +- './spec/controllers/admin/runners_controller_spec.rb' +- './spec/controllers/admin/sessions_controller_spec.rb' +- './spec/controllers/admin/spam_logs_controller_spec.rb' +- './spec/controllers/admin/topics/avatars_controller_spec.rb' +- './spec/controllers/admin/topics_controller_spec.rb' +- './spec/controllers/admin/usage_trends_controller_spec.rb' +- './spec/controllers/admin/users_controller_spec.rb' +- './spec/controllers/application_controller_spec.rb' +- './spec/controllers/autocomplete_controller_spec.rb' +- './spec/controllers/boards/issues_controller_spec.rb' +- './spec/controllers/boards/lists_controller_spec.rb' +- './spec/controllers/chaos_controller_spec.rb' +- './spec/controllers/concerns/boards_responses_spec.rb' +- './spec/controllers/concerns/check_rate_limit_spec.rb' +- './spec/controllers/concerns/checks_collaboration_spec.rb' +- './spec/controllers/concerns/confirm_email_warning_spec.rb' +- './spec/controllers/concerns/continue_params_spec.rb' +- './spec/controllers/concerns/controller_with_cross_project_access_check_spec.rb' +- './spec/controllers/concerns/enforces_admin_authentication_spec.rb' +- './spec/controllers/concerns/graceful_timeout_handling_spec.rb' +- './spec/controllers/concerns/group_tree_spec.rb' +- './spec/controllers/concerns/harbor/artifact_spec.rb' +- './spec/controllers/concerns/harbor/repository_spec.rb' +- './spec/controllers/concerns/harbor/tag_spec.rb' +- './spec/controllers/concerns/import_url_params_spec.rb' +- './spec/controllers/concerns/internal_redirect_spec.rb' +- './spec/controllers/concerns/issuable_actions_spec.rb' +- './spec/controllers/concerns/issuable_collections_spec.rb' +- './spec/controllers/concerns/metrics_dashboard_spec.rb' +- './spec/controllers/concerns/page_limiter_spec.rb' +- './spec/controllers/concerns/product_analytics_tracking_spec.rb' +- './spec/controllers/concerns/project_unauthorized_spec.rb' +- './spec/controllers/concerns/redirects_for_missing_path_on_tree_spec.rb' +- './spec/controllers/concerns/redis_tracking_spec.rb' +- './spec/controllers/concerns/renders_commits_spec.rb' +- './spec/controllers/concerns/routable_actions_spec.rb' +- './spec/controllers/concerns/send_file_upload_spec.rb' +- './spec/controllers/concerns/sorting_preference_spec.rb' +- './spec/controllers/concerns/sourcegraph_decorator_spec.rb' +- './spec/controllers/concerns/spammable_actions/akismet_mark_as_spam_action_spec.rb' +- './spec/controllers/concerns/spammable_actions/captcha_check/html_format_actions_support_spec.rb' +- './spec/controllers/concerns/spammable_actions/captcha_check/json_format_actions_support_spec.rb' +- './spec/controllers/concerns/spammable_actions/captcha_check/rest_api_actions_support_spec.rb' +- './spec/controllers/concerns/static_object_external_storage_spec.rb' +- './spec/controllers/confirmations_controller_spec.rb' +- './spec/controllers/dashboard_controller_spec.rb' +- './spec/controllers/dashboard/groups_controller_spec.rb' +- './spec/controllers/dashboard/labels_controller_spec.rb' +- './spec/controllers/dashboard/milestones_controller_spec.rb' +- './spec/controllers/dashboard/projects_controller_spec.rb' +- './spec/controllers/dashboard/snippets_controller_spec.rb' +- './spec/controllers/dashboard/todos_controller_spec.rb' +- './spec/controllers/every_controller_spec.rb' +- './spec/controllers/explore/groups_controller_spec.rb' +- './spec/controllers/explore/projects_controller_spec.rb' +- './spec/controllers/explore/snippets_controller_spec.rb' +- './spec/controllers/google_api/authorizations_controller_spec.rb' +- './spec/controllers/graphql_controller_spec.rb' +- './spec/controllers/groups/avatars_controller_spec.rb' +- './spec/controllers/groups/boards_controller_spec.rb' +- './spec/controllers/groups/children_controller_spec.rb' +- './spec/controllers/groups/clusters_controller_spec.rb' +- './spec/controllers/groups_controller_spec.rb' +- './spec/controllers/groups/dependency_proxies_controller_spec.rb' +- './spec/controllers/groups/dependency_proxy_auth_controller_spec.rb' +- './spec/controllers/groups/dependency_proxy_for_containers_controller_spec.rb' +- './spec/controllers/groups/group_links_controller_spec.rb' +- './spec/controllers/groups/group_members_controller_spec.rb' +- './spec/controllers/groups/imports_controller_spec.rb' +- './spec/controllers/groups/labels_controller_spec.rb' +- './spec/controllers/groups/milestones_controller_spec.rb' +- './spec/controllers/groups/packages_controller_spec.rb' +- './spec/controllers/groups/registry/repositories_controller_spec.rb' +- './spec/controllers/groups/releases_controller_spec.rb' +- './spec/controllers/groups/runners_controller_spec.rb' +- './spec/controllers/groups/settings/applications_controller_spec.rb' +- './spec/controllers/groups/settings/ci_cd_controller_spec.rb' +- './spec/controllers/groups/settings/integrations_controller_spec.rb' +- './spec/controllers/groups/settings/repository_controller_spec.rb' +- './spec/controllers/groups/shared_projects_controller_spec.rb' +- './spec/controllers/groups/uploads_controller_spec.rb' +- './spec/controllers/groups/variables_controller_spec.rb' +- './spec/controllers/health_check_controller_spec.rb' +- './spec/controllers/help_controller_spec.rb' +- './spec/controllers/import/available_namespaces_controller_spec.rb' +- './spec/controllers/import/bitbucket_controller_spec.rb' +- './spec/controllers/import/bitbucket_server_controller_spec.rb' +- './spec/controllers/import/bulk_imports_controller_spec.rb' +- './spec/controllers/import/fogbugz_controller_spec.rb' +- './spec/controllers/import/gitea_controller_spec.rb' +- './spec/controllers/import/github_controller_spec.rb' +- './spec/controllers/import/gitlab_controller_spec.rb' +- './spec/controllers/import/manifest_controller_spec.rb' +- './spec/controllers/import/phabricator_controller_spec.rb' +- './spec/controllers/invites_controller_spec.rb' +- './spec/controllers/jira_connect/app_descriptor_controller_spec.rb' +- './spec/controllers/jira_connect/branches_controller_spec.rb' +- './spec/controllers/jira_connect/events_controller_spec.rb' +- './spec/controllers/jira_connect/subscriptions_controller_spec.rb' +- './spec/controllers/ldap/omniauth_callbacks_controller_spec.rb' +- './spec/controllers/metrics_controller_spec.rb' +- './spec/controllers/oauth/applications_controller_spec.rb' +- './spec/controllers/oauth/authorizations_controller_spec.rb' +- './spec/controllers/oauth/authorized_applications_controller_spec.rb' +- './spec/controllers/oauth/jira_dvcs/authorizations_controller_spec.rb' +- './spec/controllers/oauth/token_info_controller_spec.rb' +- './spec/controllers/oauth/tokens_controller_spec.rb' +- './spec/controllers/omniauth_callbacks_controller_spec.rb' +- './spec/controllers/passwords_controller_spec.rb' +- './spec/controllers/profiles/accounts_controller_spec.rb' +- './spec/controllers/profiles/active_sessions_controller_spec.rb' +- './spec/controllers/profiles/avatars_controller_spec.rb' +- './spec/controllers/profiles_controller_spec.rb' +- './spec/controllers/profiles/emails_controller_spec.rb' +- './spec/controllers/profiles/gpg_keys_controller_spec.rb' +- './spec/controllers/profiles/keys_controller_spec.rb' +- './spec/controllers/profiles/notifications_controller_spec.rb' +- './spec/controllers/profiles/personal_access_tokens_controller_spec.rb' +- './spec/controllers/profiles/preferences_controller_spec.rb' +- './spec/controllers/profiles/two_factor_auths_controller_spec.rb' +- './spec/controllers/profiles/webauthn_registrations_controller_spec.rb' +- './spec/controllers/projects/alerting/notifications_controller_spec.rb' +- './spec/controllers/projects/alert_management_controller_spec.rb' +- './spec/controllers/projects/analytics/cycle_analytics/stages_controller_spec.rb' +- './spec/controllers/projects/analytics/cycle_analytics/summary_controller_spec.rb' +- './spec/controllers/projects/analytics/cycle_analytics/value_streams_controller_spec.rb' +- './spec/controllers/projects/artifacts_controller_spec.rb' +- './spec/controllers/projects/autocomplete_sources_controller_spec.rb' +- './spec/controllers/projects/avatars_controller_spec.rb' +- './spec/controllers/projects/badges_controller_spec.rb' +- './spec/controllers/projects/blame_controller_spec.rb' +- './spec/controllers/projects/blob_controller_spec.rb' +- './spec/controllers/projects/boards_controller_spec.rb' +- './spec/controllers/projects/branches_controller_spec.rb' +- './spec/controllers/projects/ci/daily_build_group_report_results_controller_spec.rb' +- './spec/controllers/projects/ci/lints_controller_spec.rb' +- './spec/controllers/projects/ci/pipeline_editor_controller_spec.rb' +- './spec/controllers/projects/clusters_controller_spec.rb' +- './spec/controllers/projects/commit_controller_spec.rb' +- './spec/controllers/projects/commits_controller_spec.rb' +- './spec/controllers/projects/compare_controller_spec.rb' +- './spec/controllers/projects_controller_spec.rb' +- './spec/controllers/projects/cycle_analytics_controller_spec.rb' +- './spec/controllers/projects/cycle_analytics/events_controller_spec.rb' +- './spec/controllers/projects/deploy_keys_controller_spec.rb' +- './spec/controllers/projects/deployments_controller_spec.rb' +- './spec/controllers/projects/design_management/designs/raw_images_controller_spec.rb' +- './spec/controllers/projects/design_management/designs/resized_image_controller_spec.rb' +- './spec/controllers/projects/discussions_controller_spec.rb' +- './spec/controllers/projects/environments_controller_spec.rb' +- './spec/controllers/projects/environments/prometheus_api_controller_spec.rb' +- './spec/controllers/projects/environments/sample_metrics_controller_spec.rb' +- './spec/controllers/projects/error_tracking_controller_spec.rb' +- './spec/controllers/projects/error_tracking/projects_controller_spec.rb' +- './spec/controllers/projects/error_tracking/stack_traces_controller_spec.rb' +- './spec/controllers/projects/feature_flags_clients_controller_spec.rb' +- './spec/controllers/projects/feature_flags_controller_spec.rb' +- './spec/controllers/projects/feature_flags_user_lists_controller_spec.rb' +- './spec/controllers/projects/find_file_controller_spec.rb' +- './spec/controllers/projects/forks_controller_spec.rb' +- './spec/controllers/projects/grafana_api_controller_spec.rb' +- './spec/controllers/projects/graphs_controller_spec.rb' +- './spec/controllers/projects/group_links_controller_spec.rb' +- './spec/controllers/projects/hooks_controller_spec.rb' +- './spec/controllers/projects/import/jira_controller_spec.rb' +- './spec/controllers/projects/imports_controller_spec.rb' +- './spec/controllers/projects/incidents_controller_spec.rb' +- './spec/controllers/projects/issue_links_controller_spec.rb' +- './spec/controllers/projects/issues_controller_spec.rb' +- './spec/controllers/projects/jobs_controller_spec.rb' +- './spec/controllers/projects/labels_controller_spec.rb' +- './spec/controllers/projects/learn_gitlab_controller_spec.rb' +- './spec/controllers/projects/mattermosts_controller_spec.rb' +- './spec/controllers/projects/merge_requests/conflicts_controller_spec.rb' +- './spec/controllers/projects/merge_requests/content_controller_spec.rb' +- './spec/controllers/projects/merge_requests_controller_spec.rb' +- './spec/controllers/projects/merge_requests/creations_controller_spec.rb' +- './spec/controllers/projects/merge_requests/diffs_controller_spec.rb' +- './spec/controllers/projects/merge_requests/drafts_controller_spec.rb' +- './spec/controllers/projects/milestones_controller_spec.rb' +- './spec/controllers/projects/mirrors_controller_spec.rb' +- './spec/controllers/projects/notes_controller_spec.rb' +- './spec/controllers/projects/packages/infrastructure_registry_controller_spec.rb' +- './spec/controllers/projects/packages/packages_controller_spec.rb' +- './spec/controllers/projects/pages_controller_spec.rb' +- './spec/controllers/projects/pages_domains_controller_spec.rb' +- './spec/controllers/projects/performance_monitoring/dashboards_controller_spec.rb' +- './spec/controllers/projects/pipeline_schedules_controller_spec.rb' +- './spec/controllers/projects/pipelines_controller_spec.rb' +- './spec/controllers/projects/pipelines_settings_controller_spec.rb' +- './spec/controllers/projects/pipelines/stages_controller_spec.rb' +- './spec/controllers/projects/pipelines/tests_controller_spec.rb' +- './spec/controllers/projects/product_analytics_controller_spec.rb' +- './spec/controllers/projects/project_members_controller_spec.rb' +- './spec/controllers/projects/prometheus/alerts_controller_spec.rb' +- './spec/controllers/projects/prometheus/metrics_controller_spec.rb' +- './spec/controllers/projects/protected_branches_controller_spec.rb' +- './spec/controllers/projects/protected_tags_controller_spec.rb' +- './spec/controllers/projects/raw_controller_spec.rb' +- './spec/controllers/projects/refs_controller_spec.rb' +- './spec/controllers/projects/registry/repositories_controller_spec.rb' +- './spec/controllers/projects/registry/tags_controller_spec.rb' +- './spec/controllers/projects/releases_controller_spec.rb' +- './spec/controllers/projects/releases/evidences_controller_spec.rb' +- './spec/controllers/projects/repositories_controller_spec.rb' +- './spec/controllers/projects/runners_controller_spec.rb' +- './spec/controllers/projects/security/configuration_controller_spec.rb' +- './spec/controllers/projects/service_desk_controller_spec.rb' +- './spec/controllers/projects/service_ping_controller_spec.rb' +- './spec/controllers/projects/settings/ci_cd_controller_spec.rb' +- './spec/controllers/projects/settings/integration_hook_logs_controller_spec.rb' +- './spec/controllers/projects/settings/integrations_controller_spec.rb' +- './spec/controllers/projects/settings/operations_controller_spec.rb' +- './spec/controllers/projects/settings/repository_controller_spec.rb' +- './spec/controllers/projects/snippets/blobs_controller_spec.rb' +- './spec/controllers/projects/snippets_controller_spec.rb' +- './spec/controllers/projects/starrers_controller_spec.rb' +- './spec/controllers/projects/tags_controller_spec.rb' +- './spec/controllers/projects/templates_controller_spec.rb' +- './spec/controllers/projects/terraform_controller_spec.rb' +- './spec/controllers/projects/todos_controller_spec.rb' +- './spec/controllers/projects/tree_controller_spec.rb' +- './spec/controllers/projects/uploads_controller_spec.rb' +- './spec/controllers/projects/usage_quotas_controller_spec.rb' +- './spec/controllers/projects/variables_controller_spec.rb' +- './spec/controllers/projects/web_ide_schemas_controller_spec.rb' +- './spec/controllers/projects/web_ide_terminals_controller_spec.rb' +- './spec/controllers/projects/wikis_controller_spec.rb' +- './spec/controllers/registrations_controller_spec.rb' +- './spec/controllers/registrations/welcome_controller_spec.rb' +- './spec/controllers/repositories/git_http_controller_spec.rb' +- './spec/controllers/repositories/lfs_storage_controller_spec.rb' +- './spec/controllers/root_controller_spec.rb' +- './spec/controllers/search_controller_spec.rb' +- './spec/controllers/sent_notifications_controller_spec.rb' +- './spec/controllers/sessions_controller_spec.rb' +- './spec/controllers/snippets/blobs_controller_spec.rb' +- './spec/controllers/snippets_controller_spec.rb' +- './spec/controllers/snippets/notes_controller_spec.rb' +- './spec/controllers/uploads_controller_spec.rb' +- './spec/controllers/users/callouts_controller_spec.rb' +- './spec/controllers/users/terms_controller_spec.rb' +- './spec/controllers/users/unsubscribes_controller_spec.rb' +- './spec/db/development/create_base_work_item_types_spec.rb' +- './spec/db/development/import_common_metrics_spec.rb' +- './spec/db/docs_spec.rb' +- './spec/db/migration_spec.rb' +- './spec/db/production/create_base_work_item_types_spec.rb' +- './spec/db/production/import_common_metrics_spec.rb' +- './spec/db/production/settings_spec.rb' +- './spec/db/schema_spec.rb' +- './spec/dependencies/omniauth_saml_spec.rb' +- './spec/experiments/application_experiment_spec.rb' +- './spec/experiments/concerns/project_commit_count_spec.rb' +- './spec/experiments/force_company_trial_experiment_spec.rb' +- './spec/experiments/in_product_guidance_environments_webide_experiment_spec.rb' +- './spec/experiments/ios_specific_templates_experiment_spec.rb' +- './spec/experiments/require_verification_for_namespace_creation_experiment_spec.rb' +- './spec/experiments/security_reports_mr_widget_prompt_experiment_spec.rb' +- './spec/experiments/video_tutorials_continuous_onboarding_experiment_spec.rb' +- './spec/features/abuse_report_spec.rb' +- './spec/features/action_cable_logging_spec.rb' +- './spec/features/admin/admin_abuse_reports_spec.rb' +- './spec/features/admin/admin_appearance_spec.rb' +- './spec/features/admin/admin_broadcast_messages_spec.rb' +- './spec/features/admin/admin_browse_spam_logs_spec.rb' +- './spec/features/admin/admin_deploy_keys_spec.rb' +- './spec/features/admin/admin_dev_ops_reports_spec.rb' +- './spec/features/admin/admin_disables_git_access_protocol_spec.rb' +- './spec/features/admin/admin_disables_two_factor_spec.rb' +- './spec/features/admin/admin_groups_spec.rb' +- './spec/features/admin/admin_health_check_spec.rb' +- './spec/features/admin/admin_hook_logs_spec.rb' +- './spec/features/admin/admin_hooks_spec.rb' +- './spec/features/admin/admin_jobs_spec.rb' +- './spec/features/admin/admin_labels_spec.rb' +- './spec/features/admin/admin_manage_applications_spec.rb' +- './spec/features/admin/admin_mode/login_spec.rb' +- './spec/features/admin/admin_mode/logout_spec.rb' +- './spec/features/admin/admin_mode_spec.rb' +- './spec/features/admin/admin_mode/workers_spec.rb' +- './spec/features/admin/admin_projects_spec.rb' +- './spec/features/admin/admin_runners_spec.rb' +- './spec/features/admin/admin_search_settings_spec.rb' +- './spec/features/admin/admin_sees_background_migrations_spec.rb' +- './spec/features/admin/admin_sees_projects_statistics_spec.rb' +- './spec/features/admin/admin_sees_project_statistics_spec.rb' +- './spec/features/admin/admin_settings_spec.rb' +- './spec/features/admin/admin_system_info_spec.rb' +- './spec/features/admin/admin_users_impersonation_tokens_spec.rb' +- './spec/features/admin/admin_users_spec.rb' +- './spec/features/admin/admin_uses_repository_checks_spec.rb' +- './spec/features/admin/dashboard_spec.rb' +- './spec/features/admin/integrations/instance_integrations_spec.rb' +- './spec/features/admin/integrations/user_activates_mattermost_slash_command_spec.rb' +- './spec/features/admin/users/user_spec.rb' +- './spec/features/admin/users/users_spec.rb' +- './spec/features/admin_variables_spec.rb' +- './spec/features/alert_management/alert_details_spec.rb' +- './spec/features/alert_management/alert_management_list_spec.rb' +- './spec/features/alert_management_spec.rb' +- './spec/features/alert_management/user_filters_alerts_by_status_spec.rb' +- './spec/features/alert_management/user_searches_alerts_spec.rb' +- './spec/features/alert_management/user_updates_alert_status_spec.rb' +- './spec/features/alerts_settings/user_views_alerts_settings_spec.rb' +- './spec/features/atom/dashboard_issues_spec.rb' +- './spec/features/atom/dashboard_spec.rb' +- './spec/features/atom/issues_spec.rb' +- './spec/features/atom/merge_requests_spec.rb' +- './spec/features/atom/users_spec.rb' +- './spec/features/boards/board_filters_spec.rb' +- './spec/features/boards/boards_spec.rb' +- './spec/features/boards/focus_mode_spec.rb' +- './spec/features/boards/issue_ordering_spec.rb' +- './spec/features/boards/keyboard_shortcut_spec.rb' +- './spec/features/boards/multiple_boards_spec.rb' +- './spec/features/boards/multi_select_spec.rb' +- './spec/features/boards/new_issue_spec.rb' +- './spec/features/boards/reload_boards_on_browser_back_spec.rb' +- './spec/features/boards/sidebar_assignee_spec.rb' +- './spec/features/boards/sidebar_labels_in_namespaces_spec.rb' +- './spec/features/boards/sidebar_labels_spec.rb' +- './spec/features/boards/sidebar_spec.rb' +- './spec/features/boards/user_adds_lists_to_board_spec.rb' +- './spec/features/boards/user_visits_board_spec.rb' +- './spec/features/breadcrumbs_schema_markup_spec.rb' +- './spec/features/broadcast_messages_spec.rb' +- './spec/features/calendar_spec.rb' +- './spec/features/callouts/registration_enabled_spec.rb' +- './spec/features/canonical_link_spec.rb' +- './spec/features/clusters/cluster_detail_page_spec.rb' +- './spec/features/clusters/cluster_health_dashboard_spec.rb' +- './spec/features/clusters/create_agent_spec.rb' +- './spec/features/commit_spec.rb' +- './spec/features/commits_spec.rb' +- './spec/features/commits/user_uses_quick_actions_spec.rb' +- './spec/features/commits/user_view_commits_spec.rb' +- './spec/features/contextual_sidebar_spec.rb' +- './spec/features/cycle_analytics_spec.rb' +- './spec/features/dashboard/activity_spec.rb' +- './spec/features/dashboard/archived_projects_spec.rb' +- './spec/features/dashboard/datetime_on_tooltips_spec.rb' +- './spec/features/dashboard/group_dashboard_with_external_authorization_service_spec.rb' +- './spec/features/dashboard/groups_list_spec.rb' +- './spec/features/dashboard/group_spec.rb' +- './spec/features/dashboard/issuables_counter_spec.rb' +- './spec/features/dashboard/issues_filter_spec.rb' +- './spec/features/dashboard/issues_spec.rb' +- './spec/features/dashboard/label_filter_spec.rb' +- './spec/features/dashboard/merge_requests_spec.rb' +- './spec/features/dashboard/milestones_spec.rb' +- './spec/features/dashboard/project_member_activity_index_spec.rb' +- './spec/features/dashboard/projects_spec.rb' +- './spec/features/dashboard/root_explore_spec.rb' +- './spec/features/dashboard/shortcuts_spec.rb' +- './spec/features/dashboard/snippets_spec.rb' +- './spec/features/dashboard/todos/target_state_spec.rb' +- './spec/features/dashboard/todos/todos_filtering_spec.rb' +- './spec/features/dashboard/todos/todos_sorting_spec.rb' +- './spec/features/dashboard/todos/todos_spec.rb' +- './spec/features/dashboard/user_filters_projects_spec.rb' +- './spec/features/discussion_comments/commit_spec.rb' +- './spec/features/discussion_comments/issue_spec.rb' +- './spec/features/discussion_comments/merge_request_spec.rb' +- './spec/features/discussion_comments/snippets_spec.rb' +- './spec/features/display_system_header_and_footer_bar_spec.rb' +- './spec/features/error_pages_spec.rb' +- './spec/features/error_tracking/user_filters_errors_by_status_spec.rb' +- './spec/features/error_tracking/user_searches_sentry_errors_spec.rb' +- './spec/features/error_tracking/user_sees_error_details_spec.rb' +- './spec/features/error_tracking/user_sees_error_index_spec.rb' +- './spec/features/expand_collapse_diffs_spec.rb' +- './spec/features/explore/groups_list_spec.rb' +- './spec/features/explore/groups_spec.rb' +- './spec/features/explore/topics_spec.rb' +- './spec/features/explore/user_explores_projects_spec.rb' +- './spec/features/file_uploads/attachment_spec.rb' +- './spec/features/file_uploads/ci_artifact_spec.rb' +- './spec/features/file_uploads/git_lfs_spec.rb' +- './spec/features/file_uploads/graphql_add_design_spec.rb' +- './spec/features/file_uploads/group_import_spec.rb' +- './spec/features/file_uploads/maven_package_spec.rb' +- './spec/features/file_uploads/multipart_invalid_uploads_spec.rb' +- './spec/features/file_uploads/nuget_package_spec.rb' +- './spec/features/file_uploads/project_import_spec.rb' +- './spec/features/file_uploads/rubygem_package_spec.rb' +- './spec/features/file_uploads/user_avatar_spec.rb' +- './spec/features/frequently_visited_projects_and_groups_spec.rb' +- './spec/features/gitlab_experiments_spec.rb' +- './spec/features/global_search_spec.rb' +- './spec/features/graphiql_spec.rb' +- './spec/features/graphql_known_operations_spec.rb' +- './spec/features/groups/activity_spec.rb' +- './spec/features/groups/board_sidebar_spec.rb' +- './spec/features/groups/board_spec.rb' +- './spec/features/groups/clusters/user_spec.rb' +- './spec/features/groups/container_registry_spec.rb' +- './spec/features/groups/crm/contacts/create_spec.rb' +- './spec/features/groups/dependency_proxy_for_containers_spec.rb' +- './spec/features/groups/dependency_proxy_spec.rb' +- './spec/features/groups/empty_states_spec.rb' +- './spec/features/groups/group_page_with_external_authorization_service_spec.rb' +- './spec/features/groups/group_runners_spec.rb' +- './spec/features/groups/group_settings_spec.rb' +- './spec/features/groups/import_export/connect_instance_spec.rb' +- './spec/features/groups/import_export/export_file_spec.rb' +- './spec/features/groups/import_export/import_file_spec.rb' +- './spec/features/groups/import_export/migration_history_spec.rb' +- './spec/features/groups/integrations/group_integrations_spec.rb' +- './spec/features/groups/integrations/user_activates_mattermost_slash_command_spec.rb' +- './spec/features/groups/issues_spec.rb' +- './spec/features/groups/labels/create_spec.rb' +- './spec/features/groups/labels/edit_spec.rb' +- './spec/features/groups/labels/index_spec.rb' +- './spec/features/groups/labels/search_labels_spec.rb' +- './spec/features/groups/labels/sort_labels_spec.rb' +- './spec/features/groups/labels/subscription_spec.rb' +- './spec/features/groups/labels/user_sees_links_to_issuables_spec.rb' +- './spec/features/groups/members/filter_members_spec.rb' +- './spec/features/groups/members/leave_group_spec.rb' +- './spec/features/groups/members/list_members_spec.rb' +- './spec/features/groups/members/manage_groups_spec.rb' +- './spec/features/groups/members/manage_members_spec.rb' +- './spec/features/groups/members/master_adds_member_with_expiration_date_spec.rb' +- './spec/features/groups/members/master_manages_access_requests_spec.rb' +- './spec/features/groups/members/request_access_spec.rb' +- './spec/features/groups/members/search_members_spec.rb' +- './spec/features/groups/members/sort_members_spec.rb' +- './spec/features/groups/members/tabs_spec.rb' +- './spec/features/groups/merge_requests_spec.rb' +- './spec/features/groups/milestones/gfm_autocomplete_spec.rb' +- './spec/features/groups/milestone_spec.rb' +- './spec/features/groups/milestones_sorting_spec.rb' +- './spec/features/groups/navbar_spec.rb' +- './spec/features/groups/packages_spec.rb' +- './spec/features/groups/settings/access_tokens_spec.rb' +- './spec/features/groups/settings/ci_cd_spec.rb' +- './spec/features/groups/settings/group_badges_spec.rb' +- './spec/features/groups/settings/manage_applications_spec.rb' +- './spec/features/groups/settings/packages_and_registries_spec.rb' +- './spec/features/groups/settings/repository_spec.rb' +- './spec/features/groups/settings/user_searches_in_settings_spec.rb' +- './spec/features/groups/share_lock_spec.rb' +- './spec/features/groups/show_spec.rb' +- './spec/features/groups_spec.rb' +- './spec/features/groups/user_browse_projects_group_page_spec.rb' +- './spec/features/groups/user_sees_package_sidebar_spec.rb' +- './spec/features/groups/user_sees_users_dropdowns_in_issuables_list_spec.rb' +- './spec/features/group_variables_spec.rb' +- './spec/features/help_dropdown_spec.rb' +- './spec/features/help_pages_spec.rb' +- './spec/features/ics/dashboard_issues_spec.rb' +- './spec/features/ics/group_issues_spec.rb' +- './spec/features/ics/project_issues_spec.rb' +- './spec/features/ide/clientside_preview_csp_spec.rb' +- './spec/features/ide_spec.rb' +- './spec/features/ide/static_object_external_storage_csp_spec.rb' +- './spec/features/ide/user_commits_changes_spec.rb' +- './spec/features/ide/user_opens_merge_request_spec.rb' +- './spec/features/import/manifest_import_spec.rb' +- './spec/features/incidents/incident_details_spec.rb' +- './spec/features/incidents/incidents_list_spec.rb' +- './spec/features/incidents/incident_timeline_events_spec.rb' +- './spec/features/incidents/user_creates_new_incident_spec.rb' +- './spec/features/incidents/user_filters_incidents_by_status_spec.rb' +- './spec/features/incidents/user_searches_incidents_spec.rb' +- './spec/features/incidents/user_views_incident_spec.rb' +- './spec/features/invites_spec.rb' +- './spec/features/issuables/issuable_list_spec.rb' +- './spec/features/issuables/markdown_references/internal_references_spec.rb' +- './spec/features/issuables/markdown_references/jira_spec.rb' +- './spec/features/issuables/shortcuts_issuable_spec.rb' +- './spec/features/issuables/sorting_list_spec.rb' +- './spec/features/issuables/user_sees_sidebar_spec.rb' +- './spec/features/issue_rebalancing_spec.rb' +- './spec/features/issues/create_issue_for_discussions_in_merge_request_spec.rb' +- './spec/features/issues/create_issue_for_single_discussion_in_merge_request_spec.rb' +- './spec/features/issues/csv_spec.rb' +- './spec/features/issues/discussion_lock_spec.rb' +- './spec/features/issues/filtered_search/dropdown_assignee_spec.rb' +- './spec/features/issues/filtered_search/dropdown_author_spec.rb' +- './spec/features/issues/filtered_search/dropdown_base_spec.rb' +- './spec/features/issues/filtered_search/dropdown_emoji_spec.rb' +- './spec/features/issues/filtered_search/dropdown_hint_spec.rb' +- './spec/features/issues/filtered_search/dropdown_label_spec.rb' +- './spec/features/issues/filtered_search/dropdown_milestone_spec.rb' +- './spec/features/issues/filtered_search/dropdown_release_spec.rb' +- './spec/features/issues/filtered_search/filter_issues_spec.rb' +- './spec/features/issues/filtered_search/recent_searches_spec.rb' +- './spec/features/issues/filtered_search/search_bar_spec.rb' +- './spec/features/issues/filtered_search/visual_tokens_spec.rb' +- './spec/features/issues/form_spec.rb' +- './spec/features/issues/gfm_autocomplete_spec.rb' +- './spec/features/issues/group_label_sidebar_spec.rb' +- './spec/features/issues/incident_issue_spec.rb' +- './spec/features/issues/issue_detail_spec.rb' +- './spec/features/issues/issue_header_spec.rb' +- './spec/features/issues/issue_sidebar_spec.rb' +- './spec/features/issues/issue_state_spec.rb' +- './spec/features/issues/keyboard_shortcut_spec.rb' +- './spec/features/issues/markdown_toolbar_spec.rb' +- './spec/features/issues/move_spec.rb' +- './spec/features/issues/note_polling_spec.rb' +- './spec/features/issues/notes_on_issues_spec.rb' +- './spec/features/issues/related_issues_spec.rb' +- './spec/features/issues/resource_label_events_spec.rb' +- './spec/features/issues/rss_spec.rb' +- './spec/features/issues/service_desk_spec.rb' +- './spec/features/issues/spam_akismet_issue_creation_spec.rb' +- './spec/features/issues/todo_spec.rb' +- './spec/features/issues/user_bulk_edits_issues_labels_spec.rb' +- './spec/features/issues/user_bulk_edits_issues_spec.rb' +- './spec/features/issues/user_comments_on_issue_spec.rb' +- './spec/features/issues/user_creates_branch_and_merge_request_spec.rb' +- './spec/features/issues/user_creates_confidential_merge_request_spec.rb' +- './spec/features/issues/user_creates_issue_by_email_spec.rb' +- './spec/features/issues/user_creates_issue_spec.rb' +- './spec/features/issues/user_edits_issue_spec.rb' +- './spec/features/issues/user_filters_issues_spec.rb' +- './spec/features/issues/user_interacts_with_awards_spec.rb' +- './spec/features/issues/user_resets_their_incoming_email_token_spec.rb' +- './spec/features/issues/user_scrolls_to_deeplinked_note_spec.rb' +- './spec/features/issues/user_sees_breadcrumb_links_spec.rb' +- './spec/features/issues/user_sees_empty_state_spec.rb' +- './spec/features/issues/user_sees_live_update_spec.rb' +- './spec/features/issues/user_sees_sidebar_updates_in_realtime_spec.rb' +- './spec/features/issues/user_sorts_issue_comments_spec.rb' +- './spec/features/issues/user_sorts_issues_spec.rb' +- './spec/features/issues/user_toggles_subscription_spec.rb' +- './spec/features/issues/user_uses_quick_actions_spec.rb' +- './spec/features/issues/user_views_issue_spec.rb' +- './spec/features/issues/user_views_issues_spec.rb' +- './spec/features/jira_connect/branches_spec.rb' +- './spec/features/jira_connect/subscriptions_spec.rb' +- './spec/features/jira_oauth_provider_authorize_spec.rb' +- './spec/features/labels_hierarchy_spec.rb' +- './spec/features/markdown/copy_as_gfm_spec.rb' +- './spec/features/markdown/gitlab_flavored_markdown_spec.rb' +- './spec/features/markdown/json_table_spec.rb' +- './spec/features/markdown/keyboard_shortcuts_spec.rb' +- './spec/features/markdown/kroki_spec.rb' +- './spec/features/markdown/markdown_spec.rb' +- './spec/features/markdown/math_spec.rb' +- './spec/features/markdown/metrics_spec.rb' +- './spec/features/markdown/sandboxed_mermaid_spec.rb' +- './spec/features/merge_request/batch_comments_spec.rb' +- './spec/features/merge_request/close_reopen_report_toggle_spec.rb' +- './spec/features/merge_request/maintainer_edits_fork_spec.rb' +- './spec/features/merge_request/merge_request_discussion_lock_spec.rb' +- './spec/features/merge_requests/filters_generic_behavior_spec.rb' +- './spec/features/merge_requests/rss_spec.rb' +- './spec/features/merge_requests/user_exports_as_csv_spec.rb' +- './spec/features/merge_requests/user_filters_by_approvals_spec.rb' +- './spec/features/merge_requests/user_filters_by_assignees_spec.rb' +- './spec/features/merge_requests/user_filters_by_deployments_spec.rb' +- './spec/features/merge_requests/user_filters_by_draft_spec.rb' +- './spec/features/merge_requests/user_filters_by_labels_spec.rb' +- './spec/features/merge_requests/user_filters_by_milestones_spec.rb' +- './spec/features/merge_requests/user_filters_by_multiple_criteria_spec.rb' +- './spec/features/merge_requests/user_filters_by_target_branch_spec.rb' +- './spec/features/merge_requests/user_lists_merge_requests_spec.rb' +- './spec/features/merge_requests/user_mass_updates_spec.rb' +- './spec/features/merge_requests/user_sees_empty_state_spec.rb' +- './spec/features/merge_requests/user_sorts_merge_requests_spec.rb' +- './spec/features/merge_requests/user_views_all_merge_requests_spec.rb' +- './spec/features/merge_requests/user_views_closed_merge_requests_spec.rb' +- './spec/features/merge_requests/user_views_merged_merge_requests_spec.rb' +- './spec/features/merge_requests/user_views_open_merge_requests_spec.rb' +- './spec/features/merge_request/user_accepts_merge_request_spec.rb' +- './spec/features/merge_request/user_allows_commits_from_memebers_who_can_merge_spec.rb' +- './spec/features/merge_request/user_approves_spec.rb' +- './spec/features/merge_request/user_assigns_themselves_spec.rb' +- './spec/features/merge_request/user_awards_emoji_spec.rb' +- './spec/features/merge_request/user_clicks_merge_request_tabs_spec.rb' +- './spec/features/merge_request/user_closes_reopens_merge_request_state_spec.rb' +- './spec/features/merge_request/user_comments_on_commit_spec.rb' +- './spec/features/merge_request/user_comments_on_diff_spec.rb' +- './spec/features/merge_request/user_comments_on_merge_request_spec.rb' +- './spec/features/merge_request/user_creates_image_diff_notes_spec.rb' +- './spec/features/merge_request/user_creates_merge_request_spec.rb' +- './spec/features/merge_request/user_creates_mr_spec.rb' +- './spec/features/merge_request/user_customizes_merge_commit_message_spec.rb' +- './spec/features/merge_request/user_edits_assignees_sidebar_spec.rb' +- './spec/features/merge_request/user_edits_merge_request_spec.rb' +- './spec/features/merge_request/user_edits_mr_spec.rb' +- './spec/features/merge_request/user_edits_reviewers_sidebar_spec.rb' +- './spec/features/merge_request/user_expands_diff_spec.rb' +- './spec/features/merge_request/user_interacts_with_batched_mr_diffs_spec.rb' +- './spec/features/merge_request/user_jumps_to_discussion_spec.rb' +- './spec/features/merge_request/user_locks_discussion_spec.rb' +- './spec/features/merge_request/user_manages_subscription_spec.rb' +- './spec/features/merge_request/user_marks_merge_request_as_draft_spec.rb' +- './spec/features/merge_request/user_merges_immediately_spec.rb' +- './spec/features/merge_request/user_merges_merge_request_spec.rb' +- './spec/features/merge_request/user_merges_only_if_pipeline_succeeds_spec.rb' +- './spec/features/merge_request/user_merges_when_pipeline_succeeds_spec.rb' +- './spec/features/merge_request/user_opens_checkout_branch_modal_spec.rb' +- './spec/features/merge_request/user_opens_context_commits_modal_spec.rb' +- './spec/features/merge_request/user_posts_diff_notes_spec.rb' +- './spec/features/merge_request/user_posts_notes_spec.rb' +- './spec/features/merge_request/user_rebases_merge_request_spec.rb' +- './spec/features/merge_request/user_resolves_conflicts_spec.rb' +- './spec/features/merge_request/user_resolves_diff_notes_and_discussions_resolve_spec.rb' +- './spec/features/merge_request/user_resolves_outdated_diff_discussions_spec.rb' +- './spec/features/merge_request/user_resolves_wip_mr_spec.rb' +- './spec/features/merge_request/user_reverts_merge_request_spec.rb' +- './spec/features/merge_request/user_reviews_image_spec.rb' +- './spec/features/merge_request/user_scrolls_to_note_on_load_spec.rb' +- './spec/features/merge_request/user_sees_avatar_on_diff_notes_spec.rb' +- './spec/features/merge_request/user_sees_breadcrumb_links_spec.rb' +- './spec/features/merge_request/user_sees_check_out_branch_modal_spec.rb' +- './spec/features/merge_request/user_sees_cherry_pick_modal_spec.rb' +- './spec/features/merge_request/user_sees_closing_issues_message_spec.rb' +- './spec/features/merge_request/user_sees_deleted_target_branch_spec.rb' +- './spec/features/merge_request/user_sees_deployment_widget_spec.rb' +- './spec/features/merge_request/user_sees_diff_spec.rb' +- './spec/features/merge_request/user_sees_discussions_spec.rb' +- './spec/features/merge_request/user_sees_merge_button_depending_on_unresolved_discussions_spec.rb' +- './spec/features/merge_request/user_sees_merge_request_pipelines_spec.rb' +- './spec/features/merge_request/user_sees_merge_widget_spec.rb' +- './spec/features/merge_request/user_sees_mini_pipeline_graph_spec.rb' +- './spec/features/merge_request/user_sees_mr_from_deleted_forked_project_spec.rb' +- './spec/features/merge_request/user_sees_mr_with_deleted_source_branch_spec.rb' +- './spec/features/merge_request/user_sees_notes_from_forked_project_spec.rb' +- './spec/features/merge_request/user_sees_page_metadata_spec.rb' +- './spec/features/merge_request/user_sees_pipelines_from_forked_project_spec.rb' +- './spec/features/merge_request/user_sees_pipelines_spec.rb' +- './spec/features/merge_request/user_sees_suggest_pipeline_spec.rb' +- './spec/features/merge_request/user_sees_system_notes_spec.rb' +- './spec/features/merge_request/user_sees_versions_spec.rb' +- './spec/features/merge_request/user_sees_wip_help_message_spec.rb' +- './spec/features/merge_request/user_selects_branches_for_new_mr_spec.rb' +- './spec/features/merge_request/user_squashes_merge_request_spec.rb' +- './spec/features/merge_request/user_suggests_changes_on_diff_spec.rb' +- './spec/features/merge_request/user_toggles_whitespace_changes_spec.rb' +- './spec/features/merge_request/user_tries_to_access_private_project_info_through_new_mr_spec.rb' +- './spec/features/merge_request/user_uses_quick_actions_spec.rb' +- './spec/features/merge_request/user_views_auto_expanding_diff_spec.rb' +- './spec/features/merge_request/user_views_diffs_commit_spec.rb' +- './spec/features/merge_request/user_views_diffs_file_by_file_spec.rb' +- './spec/features/merge_request/user_views_diffs_spec.rb' +- './spec/features/merge_request/user_views_merge_request_from_deleted_fork_spec.rb' +- './spec/features/merge_request/user_views_open_merge_request_spec.rb' +- './spec/features/merge_request/user_views_user_status_on_merge_request_spec.rb' +- './spec/features/milestone_spec.rb' +- './spec/features/milestones/user_creates_milestone_spec.rb' +- './spec/features/milestones/user_deletes_milestone_spec.rb' +- './spec/features/milestones/user_edits_milestone_spec.rb' +- './spec/features/milestones/user_promotes_milestone_spec.rb' +- './spec/features/milestones/user_sees_breadcrumb_links_spec.rb' +- './spec/features/milestones/user_views_milestone_spec.rb' +- './spec/features/milestones/user_views_milestones_spec.rb' +- './spec/features/monitor_sidebar_link_spec.rb' +- './spec/features/nav/top_nav_responsive_spec.rb' +- './spec/features/nav/top_nav_tooltip_spec.rb' +- './spec/features/oauth_login_spec.rb' +- './spec/features/oauth_provider_authorize_spec.rb' +- './spec/features/oauth_registration_spec.rb' +- './spec/features/one_trust_spec.rb' +- './spec/features/participants_autocomplete_spec.rb' +- './spec/features/password_reset_spec.rb' +- './spec/features/populate_new_pipeline_vars_with_params_spec.rb' +- './spec/features/profiles/account_spec.rb' +- './spec/features/profiles/active_sessions_spec.rb' +- './spec/features/profiles/chat_names_spec.rb' +- './spec/features/profiles/emails_spec.rb' +- './spec/features/profiles/gpg_keys_spec.rb' +- './spec/features/profiles/keys_spec.rb' +- './spec/features/profiles/oauth_applications_spec.rb' +- './spec/features/profiles/password_spec.rb' +- './spec/features/profile_spec.rb' +- './spec/features/profiles/personal_access_tokens_spec.rb' +- './spec/features/profiles/two_factor_auths_spec.rb' +- './spec/features/profiles/user_changes_notified_of_own_activity_spec.rb' +- './spec/features/profiles/user_edit_preferences_spec.rb' +- './spec/features/profiles/user_edit_profile_spec.rb' +- './spec/features/profiles/user_manages_applications_spec.rb' +- './spec/features/profiles/user_manages_emails_spec.rb' +- './spec/features/profiles/user_search_settings_spec.rb' +- './spec/features/profiles/user_visits_notifications_tab_spec.rb' +- './spec/features/profiles/user_visits_profile_account_page_spec.rb' +- './spec/features/profiles/user_visits_profile_authentication_log_spec.rb' +- './spec/features/profiles/user_visits_profile_preferences_page_spec.rb' +- './spec/features/profiles/user_visits_profile_spec.rb' +- './spec/features/profiles/user_visits_profile_ssh_keys_page_spec.rb' +- './spec/features/project_group_variables_spec.rb' +- './spec/features/projects/active_tabs_spec.rb' +- './spec/features/projects/activity/rss_spec.rb' +- './spec/features/projects/activity/user_sees_activity_spec.rb' +- './spec/features/projects/activity/user_sees_design_activity_spec.rb' +- './spec/features/projects/activity/user_sees_design_comment_spec.rb' +- './spec/features/projects/activity/user_sees_private_activity_spec.rb' +- './spec/features/projects/artifacts/file_spec.rb' +- './spec/features/projects/artifacts/raw_spec.rb' +- './spec/features/projects/artifacts/user_browses_artifacts_spec.rb' +- './spec/features/projects/artifacts/user_downloads_artifacts_spec.rb' +- './spec/features/projects/badges/coverage_spec.rb' +- './spec/features/projects/badges/list_spec.rb' +- './spec/features/projects/badges/pipeline_badge_spec.rb' +- './spec/features/projects/blobs/blame_spec.rb' +- './spec/features/projects/blobs/blob_line_permalink_updater_spec.rb' +- './spec/features/projects/blobs/blob_show_spec.rb' +- './spec/features/projects/blobs/edit_spec.rb' +- './spec/features/projects/blobs/shortcuts_blob_spec.rb' +- './spec/features/projects/blobs/user_creates_new_blob_in_new_project_spec.rb' +- './spec/features/projects/blobs/user_follows_pipeline_suggest_nudge_spec.rb' +- './spec/features/projects/blobs/user_views_pipeline_editor_button_spec.rb' +- './spec/features/projects/branches/download_buttons_spec.rb' +- './spec/features/projects/branches/new_branch_ref_dropdown_spec.rb' +- './spec/features/projects/branches_spec.rb' +- './spec/features/projects/branches/user_creates_branch_spec.rb' +- './spec/features/projects/branches/user_deletes_branch_spec.rb' +- './spec/features/projects/branches/user_views_branches_spec.rb' +- './spec/features/projects/ci/editor_spec.rb' +- './spec/features/projects/ci/lint_spec.rb' +- './spec/features/projects/classification_label_on_project_pages_spec.rb' +- './spec/features/projects/cluster_agents_spec.rb' +- './spec/features/projects/clusters/gcp_spec.rb' +- './spec/features/projects/clusters_spec.rb' +- './spec/features/projects/clusters/user_spec.rb' +- './spec/features/projects/commit/builds_spec.rb' +- './spec/features/projects/commit/cherry_pick_spec.rb' +- './spec/features/projects/commit/comments/user_adds_comment_spec.rb' +- './spec/features/projects/commit/comments/user_deletes_comments_spec.rb' +- './spec/features/projects/commit/comments/user_edits_comments_spec.rb' +- './spec/features/projects/commit/diff_notes_spec.rb' +- './spec/features/projects/commit/mini_pipeline_graph_spec.rb' +- './spec/features/projects/commits/multi_view_diff_spec.rb' +- './spec/features/projects/commits/rss_spec.rb' +- './spec/features/projects/commits/user_browses_commits_spec.rb' +- './spec/features/projects/commit/user_comments_on_commit_spec.rb' +- './spec/features/projects/commit/user_reverts_commit_spec.rb' +- './spec/features/projects/commit/user_views_user_status_on_commit_spec.rb' +- './spec/features/projects/compare_spec.rb' +- './spec/features/projects/confluence/user_views_confluence_page_spec.rb' +- './spec/features/projects/container_registry_spec.rb' +- './spec/features/projects/deploy_keys_spec.rb' +- './spec/features/projects/diffs/diff_show_spec.rb' +- './spec/features/projects/environments/environment_metrics_spec.rb' +- './spec/features/projects/environments/environment_spec.rb' +- './spec/features/projects/environments/environments_spec.rb' +- './spec/features/projects/feature_flags/user_creates_feature_flag_spec.rb' +- './spec/features/projects/feature_flags/user_deletes_feature_flag_spec.rb' +- './spec/features/projects/feature_flags/user_sees_feature_flag_list_spec.rb' +- './spec/features/projects/feature_flags/user_updates_feature_flag_spec.rb' +- './spec/features/projects/feature_flag_user_lists/user_deletes_feature_flag_user_list_spec.rb' +- './spec/features/projects/feature_flag_user_lists/user_edits_feature_flag_user_list_spec.rb' +- './spec/features/projects/feature_flag_user_lists/user_sees_feature_flag_user_list_details_spec.rb' +- './spec/features/projects/features_visibility_spec.rb' +- './spec/features/projects/files/dockerfile_dropdown_spec.rb' +- './spec/features/projects/files/download_buttons_spec.rb' +- './spec/features/projects/files/edit_file_soft_wrap_spec.rb' +- './spec/features/projects/files/editing_a_file_spec.rb' +- './spec/features/projects/files/files_sort_submodules_with_folders_spec.rb' +- './spec/features/projects/files/find_file_keyboard_spec.rb' +- './spec/features/projects/files/gitignore_dropdown_spec.rb' +- './spec/features/projects/files/gitlab_ci_yml_dropdown_spec.rb' +- './spec/features/projects/files/project_owner_creates_license_file_spec.rb' +- './spec/features/projects/files/project_owner_sees_link_to_create_license_file_in_empty_project_spec.rb' +- './spec/features/projects/files/template_selector_menu_spec.rb' +- './spec/features/projects/files/template_type_dropdown_spec.rb' +- './spec/features/projects/files/undo_template_spec.rb' +- './spec/features/projects/files/user_browses_a_tree_with_a_folder_containing_only_a_folder_spec.rb' +- './spec/features/projects/files/user_browses_files_spec.rb' +- './spec/features/projects/files/user_browses_lfs_files_spec.rb' +- './spec/features/projects/files/user_creates_directory_spec.rb' +- './spec/features/projects/files/user_creates_files_spec.rb' +- './spec/features/projects/files/user_deletes_files_spec.rb' +- './spec/features/projects/files/user_edits_files_spec.rb' +- './spec/features/projects/files/user_find_file_spec.rb' +- './spec/features/projects/files/user_reads_pipeline_status_spec.rb' +- './spec/features/projects/files/user_replaces_files_spec.rb' +- './spec/features/projects/files/user_searches_for_files_spec.rb' +- './spec/features/projects/files/user_uploads_files_spec.rb' +- './spec/features/projects/forks/fork_list_spec.rb' +- './spec/features/projects/fork_spec.rb' +- './spec/features/projects/gfm_autocomplete_load_spec.rb' +- './spec/features/projects/graph_spec.rb' +- './spec/features/projects/hook_logs/user_reads_log_spec.rb' +- './spec/features/projects/import_export/export_file_spec.rb' +- './spec/features/projects/import_export/import_file_spec.rb' +- './spec/features/projects/infrastructure_registry_spec.rb' +- './spec/features/projects/integrations/disable_triggers_spec.rb' +- './spec/features/projects/integrations/project_integrations_spec.rb' +- './spec/features/projects/integrations/user_activates_asana_spec.rb' +- './spec/features/projects/integrations/user_activates_assembla_spec.rb' +- './spec/features/projects/integrations/user_activates_atlassian_bamboo_ci_spec.rb' +- './spec/features/projects/integrations/user_activates_emails_on_push_spec.rb' +- './spec/features/projects/integrations/user_activates_flowdock_spec.rb' +- './spec/features/projects/integrations/user_activates_irker_spec.rb' +- './spec/features/projects/integrations/user_activates_issue_tracker_spec.rb' +- './spec/features/projects/integrations/user_activates_jetbrains_teamcity_ci_spec.rb' +- './spec/features/projects/integrations/user_activates_jira_spec.rb' +- './spec/features/projects/integrations/user_activates_mattermost_slash_command_spec.rb' +- './spec/features/projects/integrations/user_activates_packagist_spec.rb' +- './spec/features/projects/integrations/user_activates_pivotaltracker_spec.rb' +- './spec/features/projects/integrations/user_activates_prometheus_spec.rb' +- './spec/features/projects/integrations/user_activates_pushover_spec.rb' +- './spec/features/projects/integrations/user_activates_slack_notifications_spec.rb' +- './spec/features/projects/integrations/user_activates_slack_slash_command_spec.rb' +- './spec/features/projects/integrations/user_uses_inherited_settings_spec.rb' +- './spec/features/projects/integrations/user_views_services_spec.rb' +- './spec/features/projects/issuable_templates_spec.rb' +- './spec/features/projects/issues/design_management/user_links_to_designs_in_issue_spec.rb' +- './spec/features/projects/issues/design_management/user_paginates_designs_spec.rb' +- './spec/features/projects/issues/design_management/user_permissions_upload_spec.rb' +- './spec/features/projects/issues/design_management/user_uploads_designs_spec.rb' +- './spec/features/projects/issues/design_management/user_views_design_images_spec.rb' +- './spec/features/projects/issues/design_management/user_views_design_spec.rb' +- './spec/features/projects/issues/design_management/user_views_designs_spec.rb' +- './spec/features/projects/issues/design_management/user_views_designs_with_svg_xss_spec.rb' +- './spec/features/projects/issues/email_participants_spec.rb' +- './spec/features/projects/issues/viewing_issues_with_external_authorization_enabled_spec.rb' +- './spec/features/projects/issues/viewing_relocated_issues_spec.rb' +- './spec/features/projects/jobs/permissions_spec.rb' +- './spec/features/projects/jobs_spec.rb' +- './spec/features/projects/jobs/user_browses_job_spec.rb' +- './spec/features/projects/jobs/user_browses_jobs_spec.rb' +- './spec/features/projects/jobs/user_triggers_manual_job_with_variables_spec.rb' +- './spec/features/projects/labels/issues_sorted_by_priority_spec.rb' +- './spec/features/projects/labels/search_labels_spec.rb' +- './spec/features/projects/labels/sort_labels_spec.rb' +- './spec/features/projects/labels/subscription_spec.rb' +- './spec/features/projects/labels/update_prioritization_spec.rb' +- './spec/features/projects/labels/user_creates_labels_spec.rb' +- './spec/features/projects/labels/user_edits_labels_spec.rb' +- './spec/features/projects/labels/user_promotes_label_spec.rb' +- './spec/features/projects/labels/user_removes_labels_spec.rb' +- './spec/features/projects/labels/user_sees_breadcrumb_links_spec.rb' +- './spec/features/projects/labels/user_sees_links_to_issuables_spec.rb' +- './spec/features/projects/labels/user_views_labels_spec.rb' +- './spec/features/projects/members/anonymous_user_sees_members_spec.rb' +- './spec/features/projects/members/group_member_cannot_leave_group_project_spec.rb' +- './spec/features/projects/members/group_member_cannot_request_access_to_his_group_project_spec.rb' +- './spec/features/projects/members/group_members_spec.rb' +- './spec/features/projects/members/group_requester_cannot_request_access_to_project_spec.rb' +- './spec/features/projects/members/groups_with_access_list_spec.rb' +- './spec/features/projects/members/manage_groups_spec.rb' +- './spec/features/projects/members/manage_members_spec.rb' +- './spec/features/projects/members/master_adds_member_with_expiration_date_spec.rb' +- './spec/features/projects/members/master_manages_access_requests_spec.rb' +- './spec/features/projects/members/member_cannot_request_access_to_his_project_spec.rb' +- './spec/features/projects/members/member_leaves_project_spec.rb' +- './spec/features/projects/members/owner_cannot_leave_project_spec.rb' +- './spec/features/projects/members/owner_cannot_request_access_to_his_project_spec.rb' +- './spec/features/projects/members/sorting_spec.rb' +- './spec/features/projects/members/tabs_spec.rb' +- './spec/features/projects/members/user_requests_access_spec.rb' +- './spec/features/projects/merge_request_button_spec.rb' +- './spec/features/projects/milestones/gfm_autocomplete_spec.rb' +- './spec/features/projects/milestones/milestone_spec.rb' +- './spec/features/projects/milestones/milestones_sorting_spec.rb' +- './spec/features/projects/milestones/new_spec.rb' +- './spec/features/projects/milestones/user_interacts_with_labels_spec.rb' +- './spec/features/projects/navbar_spec.rb' +- './spec/features/projects/network_graph_spec.rb' +- './spec/features/projects/new_project_from_template_spec.rb' +- './spec/features/projects/new_project_spec.rb' +- './spec/features/projects/package_files_spec.rb' +- './spec/features/projects/packages_spec.rb' +- './spec/features/projects/pages/user_adds_domain_spec.rb' +- './spec/features/projects/pages/user_configures_pages_pipeline_spec.rb' +- './spec/features/projects/pages/user_edits_lets_encrypt_settings_spec.rb' +- './spec/features/projects/pages/user_edits_settings_spec.rb' +- './spec/features/projects/pipeline_schedules_spec.rb' +- './spec/features/projects/pipelines/legacy_pipeline_spec.rb' +- './spec/features/projects/pipelines/legacy_pipelines_spec.rb' +- './spec/features/projects/pipelines/pipeline_spec.rb' +- './spec/features/projects/pipelines/pipelines_spec.rb' +- './spec/features/projects/product_analytics/events_spec.rb' +- './spec/features/projects/product_analytics/graphs_spec.rb' +- './spec/features/projects/product_analytics/setup_spec.rb' +- './spec/features/projects/product_analytics/test_spec.rb' +- './spec/features/projects/raw/user_interacts_with_raw_endpoint_spec.rb' +- './spec/features/projects/releases/user_creates_release_spec.rb' +- './spec/features/projects/releases/user_views_edit_release_spec.rb' +- './spec/features/projects/releases/user_views_release_spec.rb' +- './spec/features/projects/releases/user_views_releases_spec.rb' +- './spec/features/projects/remote_mirror_spec.rb' +- './spec/features/projects/settings/access_tokens_spec.rb' +- './spec/features/projects/settings/branch_rules_settings_spec.rb' +- './spec/features/projects/settings/external_authorization_service_settings_spec.rb' +- './spec/features/projects/settings/forked_project_settings_spec.rb' +- './spec/features/projects/settings/lfs_settings_spec.rb' +- './spec/features/projects/settings/monitor_settings_spec.rb' +- './spec/features/projects/settings/packages_settings_spec.rb' +- './spec/features/projects/settings/pipelines_settings_spec.rb' +- './spec/features/projects/settings/project_badges_spec.rb' +- './spec/features/projects/settings/project_settings_spec.rb' +- './spec/features/projects/settings/registry_settings_cleanup_tags_spec.rb' +- './spec/features/projects/settings/registry_settings_spec.rb' +- './spec/features/projects/settings/repository_settings_spec.rb' +- './spec/features/projects/settings/secure_files_spec.rb' +- './spec/features/projects/settings/service_desk_setting_spec.rb' +- './spec/features/projects/settings/user_archives_project_spec.rb' +- './spec/features/projects/settings/user_changes_avatar_spec.rb' +- './spec/features/projects/settings/user_changes_default_branch_spec.rb' +- './spec/features/projects/settings/user_interacts_with_deploy_keys_spec.rb' +- './spec/features/projects/settings/user_manages_merge_requests_settings_spec.rb' +- './spec/features/projects/settings/user_manages_project_members_spec.rb' +- './spec/features/projects/settings/user_renames_a_project_spec.rb' +- './spec/features/projects/settings/user_searches_in_settings_spec.rb' +- './spec/features/projects/settings/user_sees_revoke_deploy_token_modal_spec.rb' +- './spec/features/projects/settings/user_tags_project_spec.rb' +- './spec/features/projects/settings/user_transfers_a_project_spec.rb' +- './spec/features/projects/settings/visibility_settings_spec.rb' +- './spec/features/projects/settings/webhooks_settings_spec.rb' +- './spec/features/projects/show/download_buttons_spec.rb' +- './spec/features/projects/show/no_password_spec.rb' +- './spec/features/projects/show/redirects_spec.rb' +- './spec/features/projects/show/rss_spec.rb' +- './spec/features/projects/show/schema_markup_spec.rb' +- './spec/features/projects/show/user_interacts_with_auto_devops_banner_spec.rb' +- './spec/features/projects/show/user_interacts_with_stars_spec.rb' +- './spec/features/projects/show/user_manages_notifications_spec.rb' +- './spec/features/projects/show/user_sees_collaboration_links_spec.rb' +- './spec/features/projects/show/user_sees_deletion_failure_message_spec.rb' +- './spec/features/projects/show/user_sees_git_instructions_spec.rb' +- './spec/features/projects/show/user_sees_last_commit_ci_status_spec.rb' +- './spec/features/projects/show/user_sees_readme_spec.rb' +- './spec/features/projects/show/user_sees_setup_shortcut_buttons_spec.rb' +- './spec/features/projects/show/user_uploads_files_spec.rb' +- './spec/features/projects/snippets/create_snippet_spec.rb' +- './spec/features/projects/snippets/show_spec.rb' +- './spec/features/projects/snippets/user_comments_on_snippet_spec.rb' +- './spec/features/projects/snippets/user_deletes_snippet_spec.rb' +- './spec/features/projects/snippets/user_updates_snippet_spec.rb' +- './spec/features/projects/snippets/user_views_snippets_spec.rb' +- './spec/features/projects/sourcegraph_csp_spec.rb' +- './spec/features/projects_spec.rb' +- './spec/features/projects/sub_group_issuables_spec.rb' +- './spec/features/projects/tags/download_buttons_spec.rb' +- './spec/features/projects/tags/user_edits_tags_spec.rb' +- './spec/features/projects/tags/user_views_tag_spec.rb' +- './spec/features/projects/tags/user_views_tags_spec.rb' +- './spec/features/projects/terraform_spec.rb' +- './spec/features/projects/tree/create_directory_spec.rb' +- './spec/features/projects/tree/create_file_spec.rb' +- './spec/features/projects/tree/rss_spec.rb' +- './spec/features/projects/tree/tree_show_spec.rb' +- './spec/features/projects/tree/upload_file_spec.rb' +- './spec/features/projects/user_changes_project_visibility_spec.rb' +- './spec/features/projects/user_creates_project_spec.rb' +- './spec/features/projects/user_sees_sidebar_spec.rb' +- './spec/features/projects/user_sees_user_popover_spec.rb' +- './spec/features/projects/user_sorts_projects_spec.rb' +- './spec/features/projects/user_uses_shortcuts_spec.rb' +- './spec/features/projects/user_views_empty_project_spec.rb' +- './spec/features/projects/view_on_env_spec.rb' +- './spec/features/projects/wikis_spec.rb' +- './spec/features/projects/wiki/user_views_wiki_empty_spec.rb' +- './spec/features/projects/wiki/user_views_wiki_in_project_page_spec.rb' +- './spec/features/project_variables_spec.rb' +- './spec/features/promotion_spec.rb' +- './spec/features/protected_branches_spec.rb' +- './spec/features/protected_tags_spec.rb' +- './spec/features/read_only_spec.rb' +- './spec/features/reportable_note/commit_spec.rb' +- './spec/features/reportable_note/issue_spec.rb' +- './spec/features/reportable_note/merge_request_spec.rb' +- './spec/features/reportable_note/snippets_spec.rb' +- './spec/features/runners_spec.rb' +- './spec/features/search/user_searches_for_code_spec.rb' +- './spec/features/search/user_searches_for_comments_spec.rb' +- './spec/features/search/user_searches_for_commits_spec.rb' +- './spec/features/search/user_searches_for_issues_spec.rb' +- './spec/features/search/user_searches_for_merge_requests_spec.rb' +- './spec/features/search/user_searches_for_milestones_spec.rb' +- './spec/features/search/user_searches_for_projects_spec.rb' +- './spec/features/search/user_searches_for_users_spec.rb' +- './spec/features/search/user_searches_for_wiki_pages_spec.rb' +- './spec/features/search/user_uses_header_search_field_spec.rb' +- './spec/features/search/user_uses_search_filters_spec.rb' +- './spec/features/security/admin_access_spec.rb' +- './spec/features/security/dashboard_access_spec.rb' +- './spec/features/security/group/internal_access_spec.rb' +- './spec/features/security/group/private_access_spec.rb' +- './spec/features/security/group/public_access_spec.rb' +- './spec/features/security/profile_access_spec.rb' +- './spec/features/security/project/internal_access_spec.rb' +- './spec/features/security/project/private_access_spec.rb' +- './spec/features/security/project/public_access_spec.rb' +- './spec/features/security/project/snippet/internal_access_spec.rb' +- './spec/features/security/project/snippet/private_access_spec.rb' +- './spec/features/security/project/snippet/public_access_spec.rb' +- './spec/features/sentry_js_spec.rb' +- './spec/features/signed_commits_spec.rb' +- './spec/features/snippets/embedded_snippet_spec.rb' +- './spec/features/snippets/explore_spec.rb' +- './spec/features/snippets/internal_snippet_spec.rb' +- './spec/features/snippets/notes_on_personal_snippets_spec.rb' +- './spec/features/snippets/private_snippets_spec.rb' +- './spec/features/snippets/public_snippets_spec.rb' +- './spec/features/snippets/search_snippets_spec.rb' +- './spec/features/snippets/show_spec.rb' +- './spec/features/snippets/spam_snippets_spec.rb' +- './spec/features/snippets_spec.rb' +- './spec/features/snippets/user_creates_snippet_spec.rb' +- './spec/features/snippets/user_deletes_snippet_spec.rb' +- './spec/features/snippets/user_edits_snippet_spec.rb' +- './spec/features/snippets/user_snippets_spec.rb' +- './spec/features/tags/developer_creates_tag_spec.rb' +- './spec/features/tags/developer_deletes_tag_spec.rb' +- './spec/features/tags/developer_views_tags_spec.rb' +- './spec/features/tags/maintainer_deletes_protected_tag_spec.rb' +- './spec/features/task_lists_spec.rb' +- './spec/features/topic_show_spec.rb' +- './spec/features/triggers_spec.rb' +- './spec/features/u2f_spec.rb' +- './spec/features/unsubscribe_links_spec.rb' +- './spec/features/uploads/user_uploads_avatar_to_group_spec.rb' +- './spec/features/uploads/user_uploads_avatar_to_profile_spec.rb' +- './spec/features/uploads/user_uploads_file_to_note_spec.rb' +- './spec/features/usage_stats_consent_spec.rb' +- './spec/features/user_can_display_performance_bar_spec.rb' +- './spec/features/user_opens_link_to_comment_spec.rb' +- './spec/features/users/active_sessions_spec.rb' +- './spec/features/users/add_email_to_existing_account_spec.rb' +- './spec/features/users/anonymous_sessions_spec.rb' +- './spec/features/users/bizible_csp_spec.rb' +- './spec/features/users/confirmation_spec.rb' +- './spec/features/user_sees_marketing_header_spec.rb' +- './spec/features/user_sees_revert_modal_spec.rb' +- './spec/features/users/email_verification_on_login_spec.rb' +- './spec/features/users/google_analytics_csp_spec.rb' +- './spec/features/users/login_spec.rb' +- './spec/features/users/logout_spec.rb' +- './spec/features/users/one_trust_csp_spec.rb' +- './spec/features/user_sorts_things_spec.rb' +- './spec/features/users/overview_spec.rb' +- './spec/features/users/password_spec.rb' +- './spec/features/users/rss_spec.rb' +- './spec/features/users/show_spec.rb' +- './spec/features/users/signup_spec.rb' +- './spec/features/users/snippets_spec.rb' +- './spec/features/users/terms_spec.rb' +- './spec/features/users/user_browses_projects_on_user_page_spec.rb' +- './spec/features/users/zuora_csp_spec.rb' +- './spec/features/webauthn_spec.rb' +- './spec/features/whats_new_spec.rb' +- './spec/features/work_items/work_item_children_spec.rb' +- './spec/finders/abuse_reports_finder_spec.rb' +- './spec/finders/access_requests_finder_spec.rb' +- './spec/finders/admin/plans_finder_spec.rb' +- './spec/finders/admin/projects_finder_spec.rb' +- './spec/finders/alert_management/alerts_finder_spec.rb' +- './spec/finders/alert_management/http_integrations_finder_spec.rb' +- './spec/finders/analytics/cycle_analytics/stage_finder_spec.rb' +- './spec/finders/applications_finder_spec.rb' +- './spec/finders/autocomplete/acts_as_taggable_on/tags_finder_spec.rb' +- './spec/finders/autocomplete/deploy_keys_with_write_access_finder_spec.rb' +- './spec/finders/autocomplete/group_finder_spec.rb' +- './spec/finders/autocomplete/move_to_project_finder_spec.rb' +- './spec/finders/autocomplete/project_finder_spec.rb' +- './spec/finders/autocomplete/routes_finder_spec.rb' +- './spec/finders/autocomplete/users_finder_spec.rb' +- './spec/finders/award_emojis_finder_spec.rb' +- './spec/finders/boards/boards_finder_spec.rb' +- './spec/finders/boards/visits_finder_spec.rb' +- './spec/finders/branches_finder_spec.rb' +- './spec/finders/bulk_imports/entities_finder_spec.rb' +- './spec/finders/bulk_imports/imports_finder_spec.rb' +- './spec/finders/ci/auth_job_finder_spec.rb' +- './spec/finders/ci/commit_statuses_finder_spec.rb' +- './spec/finders/ci/daily_build_group_report_results_finder_spec.rb' +- './spec/finders/ci/job_artifacts_finder_spec.rb' +- './spec/finders/ci/jobs_finder_spec.rb' +- './spec/finders/ci/pipeline_schedules_finder_spec.rb' +- './spec/finders/ci/pipelines_finder_spec.rb' +- './spec/finders/ci/pipelines_for_merge_request_finder_spec.rb' +- './spec/finders/ci/runner_jobs_finder_spec.rb' +- './spec/finders/ci/runners_finder_spec.rb' +- './spec/finders/ci/variables_finder_spec.rb' +- './spec/finders/cluster_ancestors_finder_spec.rb' +- './spec/finders/clusters/agent_authorizations_finder_spec.rb' +- './spec/finders/clusters/agents_finder_spec.rb' +- './spec/finders/clusters_finder_spec.rb' +- './spec/finders/clusters/knative_services_finder_spec.rb' +- './spec/finders/clusters/kubernetes_namespace_finder_spec.rb' +- './spec/finders/concerns/finder_methods_spec.rb' +- './spec/finders/concerns/finder_with_cross_project_access_spec.rb' +- './spec/finders/concerns/finder_with_group_hierarchy_spec.rb' +- './spec/finders/concerns/packages/finder_helper_spec.rb' +- './spec/finders/container_repositories_finder_spec.rb' +- './spec/finders/context_commits_finder_spec.rb' +- './spec/finders/contributed_projects_finder_spec.rb' +- './spec/finders/crm/contacts_finder_spec.rb' +- './spec/finders/crm/organizations_finder_spec.rb' +- './spec/finders/database/batched_background_migrations_finder_spec.rb' +- './spec/finders/deployments_finder_spec.rb' +- './spec/finders/deploy_tokens/tokens_finder_spec.rb' +- './spec/finders/design_management/designs_finder_spec.rb' +- './spec/finders/design_management/versions_finder_spec.rb' +- './spec/finders/environments/environment_names_finder_spec.rb' +- './spec/finders/environments/environments_by_deployments_finder_spec.rb' +- './spec/finders/environments/environments_finder_spec.rb' +- './spec/finders/events_finder_spec.rb' +- './spec/finders/feature_flags_finder_spec.rb' +- './spec/finders/feature_flags_user_lists_finder_spec.rb' +- './spec/finders/fork_projects_finder_spec.rb' +- './spec/finders/fork_targets_finder_spec.rb' +- './spec/finders/freeze_periods_finder_spec.rb' +- './spec/finders/group_descendants_finder_spec.rb' +- './spec/finders/group_members_finder_spec.rb' +- './spec/finders/group_projects_finder_spec.rb' +- './spec/finders/groups/accepting_project_transfers_finder_spec.rb' +- './spec/finders/groups_finder_spec.rb' +- './spec/finders/groups/projects_requiring_authorizations_refresh/on_direct_membership_finder_spec.rb' +- './spec/finders/groups/projects_requiring_authorizations_refresh/on_transfer_finder_spec.rb' +- './spec/finders/groups/user_groups_finder_spec.rb' +- './spec/finders/incident_management/timeline_events_finder_spec.rb' +- './spec/finders/issuables/crm_contact_filter_spec.rb' +- './spec/finders/issuables/crm_organization_filter_spec.rb' +- './spec/finders/issues_finder_spec.rb' +- './spec/finders/joined_groups_finder_spec.rb' +- './spec/finders/keys_finder_spec.rb' +- './spec/finders/labels_finder_spec.rb' +- './spec/finders/lfs_pointers_finder_spec.rb' +- './spec/finders/license_template_finder_spec.rb' +- './spec/finders/members_finder_spec.rb' +- './spec/finders/merge_request/metrics_finder_spec.rb' +- './spec/finders/merge_requests/by_approvals_finder_spec.rb' +- './spec/finders/merge_requests_finder/params_spec.rb' +- './spec/finders/merge_requests_finder_spec.rb' +- './spec/finders/merge_requests/oldest_per_commit_finder_spec.rb' +- './spec/finders/merge_request_target_project_finder_spec.rb' +- './spec/finders/metrics/dashboards/annotations_finder_spec.rb' +- './spec/finders/metrics/users_starred_dashboards_finder_spec.rb' +- './spec/finders/milestones_finder_spec.rb' +- './spec/finders/namespaces/projects_finder_spec.rb' +- './spec/finders/notes_finder_spec.rb' +- './spec/finders/packages/build_infos_finder_spec.rb' +- './spec/finders/packages/composer/packages_finder_spec.rb' +- './spec/finders/packages/conan/package_file_finder_spec.rb' +- './spec/finders/packages/conan/package_finder_spec.rb' +- './spec/finders/packages/debian/distributions_finder_spec.rb' +- './spec/finders/packages/generic/package_finder_spec.rb' +- './spec/finders/packages/go/module_finder_spec.rb' +- './spec/finders/packages/go/package_finder_spec.rb' +- './spec/finders/packages/go/version_finder_spec.rb' +- './spec/finders/packages/group_or_project_package_finder_spec.rb' +- './spec/finders/packages/group_packages_finder_spec.rb' +- './spec/finders/packages/helm/package_files_finder_spec.rb' +- './spec/finders/packages/helm/packages_finder_spec.rb' +- './spec/finders/packages/maven/package_finder_spec.rb' +- './spec/finders/packages/npm/package_finder_spec.rb' +- './spec/finders/packages/nuget/package_finder_spec.rb' +- './spec/finders/packages/package_file_finder_spec.rb' +- './spec/finders/packages/package_finder_spec.rb' +- './spec/finders/packages/packages_finder_spec.rb' +- './spec/finders/packages/pypi/package_finder_spec.rb' +- './spec/finders/packages/pypi/packages_finder_spec.rb' +- './spec/finders/packages/tags_finder_spec.rb' +- './spec/finders/pending_todos_finder_spec.rb' +- './spec/finders/personal_access_tokens_finder_spec.rb' +- './spec/finders/personal_projects_finder_spec.rb' +- './spec/finders/projects/export_job_finder_spec.rb' +- './spec/finders/projects_finder_spec.rb' +- './spec/finders/projects/groups_finder_spec.rb' +- './spec/finders/projects/members/effective_access_level_finder_spec.rb' +- './spec/finders/projects/members/effective_access_level_per_user_finder_spec.rb' +- './spec/finders/projects/prometheus/alerts_finder_spec.rb' +- './spec/finders/projects/topics_finder_spec.rb' +- './spec/finders/prometheus_metrics_finder_spec.rb' +- './spec/finders/protected_branches_finder_spec.rb' +- './spec/finders/releases/evidence_pipeline_finder_spec.rb' +- './spec/finders/releases_finder_spec.rb' +- './spec/finders/releases/group_releases_finder_spec.rb' +- './spec/finders/repositories/branch_names_finder_spec.rb' +- './spec/finders/repositories/changelog_commits_finder_spec.rb' +- './spec/finders/repositories/changelog_tag_finder_spec.rb' +- './spec/finders/repositories/tree_finder_spec.rb' +- './spec/finders/resource_milestone_event_finder_spec.rb' +- './spec/finders/resource_state_event_finder_spec.rb' +- './spec/finders/security/jobs_finder_spec.rb' +- './spec/finders/security/license_compliance_jobs_finder_spec.rb' +- './spec/finders/security/security_jobs_finder_spec.rb' +- './spec/finders/sentry_issue_finder_spec.rb' +- './spec/finders/serverless_domain_finder_spec.rb' +- './spec/finders/snippets_finder_spec.rb' +- './spec/finders/starred_projects_finder_spec.rb' +- './spec/finders/tags_finder_spec.rb' +- './spec/finders/template_finder_spec.rb' +- './spec/finders/terraform/states_finder_spec.rb' +- './spec/finders/todos_finder_spec.rb' +- './spec/finders/uploader_finder_spec.rb' +- './spec/finders/user_finder_spec.rb' +- './spec/finders/user_group_notification_settings_finder_spec.rb' +- './spec/finders/user_groups_counter_spec.rb' +- './spec/finders/user_recent_events_finder_spec.rb' +- './spec/finders/users_finder_spec.rb' +- './spec/finders/users_star_projects_finder_spec.rb' +- './spec/finders/work_items/work_items_finder_spec.rb' +- './spec/frontend/fixtures/abuse_reports.rb' +- './spec/frontend/fixtures/admin_users.rb' +- './spec/frontend/fixtures/analytics.rb' +- './spec/frontend/fixtures/api_deploy_keys.rb' +- './spec/frontend/fixtures/api_merge_requests.rb' +- './spec/frontend/fixtures/api_projects.rb' +- './spec/frontend/fixtures/application_settings.rb' +- './spec/frontend/fixtures/autocomplete.rb' +- './spec/frontend/fixtures/autocomplete_sources.rb' +- './spec/frontend/fixtures/blob.rb' +- './spec/frontend/fixtures/branches.rb' +- './spec/frontend/fixtures/clusters.rb' +- './spec/frontend/fixtures/commit.rb' +- './spec/frontend/fixtures/deploy_keys.rb' +- './spec/frontend/fixtures/freeze_period.rb' +- './spec/frontend/fixtures/groups.rb' +- './spec/frontend/fixtures/integrations.rb' +- './spec/frontend/fixtures/issues.rb' +- './spec/frontend/fixtures/jobs.rb' +- './spec/frontend/fixtures/labels.rb' +- './spec/frontend/fixtures/listbox.rb' +- './spec/frontend/fixtures/merge_requests_diffs.rb' +- './spec/frontend/fixtures/merge_requests.rb' +- './spec/frontend/fixtures/metrics_dashboard.rb' +- './spec/frontend/fixtures/namespaces.rb' +- './spec/frontend/fixtures/pipeline_schedules.rb' +- './spec/frontend/fixtures/pipelines.rb' +- './spec/frontend/fixtures/projects_json.rb' +- './spec/frontend/fixtures/projects.rb' +- './spec/frontend/fixtures/prometheus_integration.rb' +- './spec/frontend/fixtures/raw.rb' +- './spec/frontend/fixtures/releases.rb' +- './spec/frontend/fixtures/runner.rb' +- './spec/frontend/fixtures/search.rb' +- './spec/frontend/fixtures/sessions.rb' +- './spec/frontend/fixtures/snippet.rb' +- './spec/frontend/fixtures/startup_css.rb' +- './spec/frontend/fixtures/tabs.rb' +- './spec/frontend/fixtures/tags.rb' +- './spec/frontend/fixtures/timezones.rb' +- './spec/frontend/fixtures/todos.rb' +- './spec/frontend/fixtures/u2f.rb' +- './spec/frontend/fixtures/webauthn.rb' +- './spec/graphql/features/authorization_spec.rb' +- './spec/graphql/features/feature_flag_spec.rb' +- './spec/graphql/gitlab_schema_spec.rb' +- './spec/graphql/graphql_triggers_spec.rb' +- './spec/graphql/mutations/alert_management/alerts/set_assignees_spec.rb' +- './spec/graphql/mutations/alert_management/alerts/todo/create_spec.rb' +- './spec/graphql/mutations/alert_management/create_alert_issue_spec.rb' +- './spec/graphql/mutations/alert_management/http_integration/create_spec.rb' +- './spec/graphql/mutations/alert_management/http_integration/destroy_spec.rb' +- './spec/graphql/mutations/alert_management/http_integration/reset_token_spec.rb' +- './spec/graphql/mutations/alert_management/http_integration/update_spec.rb' +- './spec/graphql/mutations/alert_management/prometheus_integration/create_spec.rb' +- './spec/graphql/mutations/alert_management/prometheus_integration/reset_token_spec.rb' +- './spec/graphql/mutations/alert_management/prometheus_integration/update_spec.rb' +- './spec/graphql/mutations/alert_management/update_alert_status_spec.rb' +- './spec/graphql/mutations/base_mutation_spec.rb' +- './spec/graphql/mutations/boards/issues/issue_move_list_spec.rb' +- './spec/graphql/mutations/boards/lists/create_spec.rb' +- './spec/graphql/mutations/boards/lists/update_spec.rb' +- './spec/graphql/mutations/boards/update_spec.rb' +- './spec/graphql/mutations/branches/create_spec.rb' +- './spec/graphql/mutations/ci/job_token_scope/add_project_spec.rb' +- './spec/graphql/mutations/ci/job_token_scope/remove_project_spec.rb' +- './spec/graphql/mutations/ci/runner/bulk_delete_spec.rb' +- './spec/graphql/mutations/ci/runner/delete_spec.rb' +- './spec/graphql/mutations/ci/runner/update_spec.rb' +- './spec/graphql/mutations/clusters/agents/create_spec.rb' +- './spec/graphql/mutations/clusters/agents/delete_spec.rb' +- './spec/graphql/mutations/clusters/agent_tokens/create_spec.rb' +- './spec/graphql/mutations/clusters/agent_tokens/revoke_spec.rb' +- './spec/graphql/mutations/commits/create_spec.rb' +- './spec/graphql/mutations/concerns/mutations/finds_by_gid_spec.rb' +- './spec/graphql/mutations/concerns/mutations/resolves_group_spec.rb' +- './spec/graphql/mutations/concerns/mutations/resolves_issuable_spec.rb' +- './spec/graphql/mutations/container_expiration_policies/update_spec.rb' +- './spec/graphql/mutations/container_repositories/destroy_spec.rb' +- './spec/graphql/mutations/container_repositories/destroy_tags_spec.rb' +- './spec/graphql/mutations/custom_emoji/create_spec.rb' +- './spec/graphql/mutations/custom_emoji/destroy_spec.rb' +- './spec/graphql/mutations/customer_relations/contacts/create_spec.rb' +- './spec/graphql/mutations/customer_relations/contacts/update_spec.rb' +- './spec/graphql/mutations/customer_relations/organizations/create_spec.rb' +- './spec/graphql/mutations/customer_relations/organizations/update_spec.rb' +- './spec/graphql/mutations/dependency_proxy/group_settings/update_spec.rb' +- './spec/graphql/mutations/dependency_proxy/image_ttl_group_policy/update_spec.rb' +- './spec/graphql/mutations/design_management/delete_spec.rb' +- './spec/graphql/mutations/design_management/move_spec.rb' +- './spec/graphql/mutations/design_management/upload_spec.rb' +- './spec/graphql/mutations/discussions/toggle_resolve_spec.rb' +- './spec/graphql/mutations/environments/canary_ingress/update_spec.rb' +- './spec/graphql/mutations/groups/update_spec.rb' +- './spec/graphql/mutations/incident_management/timeline_event/create_spec.rb' +- './spec/graphql/mutations/incident_management/timeline_event/destroy_spec.rb' +- './spec/graphql/mutations/incident_management/timeline_event/promote_from_note_spec.rb' +- './spec/graphql/mutations/incident_management/timeline_event/update_spec.rb' +- './spec/graphql/mutations/issues/create_spec.rb' +- './spec/graphql/mutations/issues/move_spec.rb' +- './spec/graphql/mutations/issues/set_assignees_spec.rb' +- './spec/graphql/mutations/issues/set_confidential_spec.rb' +- './spec/graphql/mutations/issues/set_due_date_spec.rb' +- './spec/graphql/mutations/issues/set_escalation_status_spec.rb' +- './spec/graphql/mutations/issues/set_locked_spec.rb' +- './spec/graphql/mutations/issues/set_severity_spec.rb' +- './spec/graphql/mutations/issues/set_subscription_spec.rb' +- './spec/graphql/mutations/issues/update_spec.rb' +- './spec/graphql/mutations/labels/create_spec.rb' +- './spec/graphql/mutations/merge_requests/accept_spec.rb' +- './spec/graphql/mutations/merge_requests/create_spec.rb' +- './spec/graphql/mutations/merge_requests/set_assignees_spec.rb' +- './spec/graphql/mutations/merge_requests/set_draft_spec.rb' +- './spec/graphql/mutations/merge_requests/set_labels_spec.rb' +- './spec/graphql/mutations/merge_requests/set_locked_spec.rb' +- './spec/graphql/mutations/merge_requests/set_milestone_spec.rb' +- './spec/graphql/mutations/merge_requests/set_reviewers_spec.rb' +- './spec/graphql/mutations/merge_requests/set_subscription_spec.rb' +- './spec/graphql/mutations/merge_requests/update_spec.rb' +- './spec/graphql/mutations/namespace/package_settings/update_spec.rb' +- './spec/graphql/mutations/notes/reposition_image_diff_note_spec.rb' +- './spec/graphql/mutations/pages/mark_onboarding_complete_spec.rb' +- './spec/graphql/mutations/release_asset_links/create_spec.rb' +- './spec/graphql/mutations/release_asset_links/delete_spec.rb' +- './spec/graphql/mutations/release_asset_links/update_spec.rb' +- './spec/graphql/mutations/releases/create_spec.rb' +- './spec/graphql/mutations/releases/delete_spec.rb' +- './spec/graphql/mutations/releases/update_spec.rb' +- './spec/graphql/mutations/saved_replies/create_spec.rb' +- './spec/graphql/mutations/saved_replies/destroy_spec.rb' +- './spec/graphql/mutations/saved_replies/update_spec.rb' +- './spec/graphql/mutations/security/ci_configuration/base_security_analyzer_spec.rb' +- './spec/graphql/mutations/security/ci_configuration/configure_sast_iac_spec.rb' +- './spec/graphql/mutations/security/ci_configuration/configure_sast_spec.rb' +- './spec/graphql/mutations/security/ci_configuration/configure_secret_detection_spec.rb' +- './spec/graphql/mutations/terraform/state/delete_spec.rb' +- './spec/graphql/mutations/terraform/state/lock_spec.rb' +- './spec/graphql/mutations/terraform/state/unlock_spec.rb' +- './spec/graphql/mutations/timelogs/delete_spec.rb' +- './spec/graphql/mutations/todos/create_spec.rb' +- './spec/graphql/mutations/todos/mark_all_done_spec.rb' +- './spec/graphql/mutations/todos/mark_done_spec.rb' +- './spec/graphql/mutations/todos/restore_many_spec.rb' +- './spec/graphql/mutations/todos/restore_spec.rb' +- './spec/graphql/mutations/user_callouts/create_spec.rb' +- './spec/graphql/mutations/work_items/update_task_spec.rb' +- './spec/graphql/mutations/work_items/update_widgets_spec.rb' +- './spec/graphql/resolvers/admin/analytics/usage_trends/measurements_resolver_spec.rb' +- './spec/graphql/resolvers/alert_management/alert_resolver_spec.rb' +- './spec/graphql/resolvers/alert_management/alert_status_counts_resolver_spec.rb' +- './spec/graphql/resolvers/alert_management/http_integrations_resolver_spec.rb' +- './spec/graphql/resolvers/alert_management/integrations_resolver_spec.rb' +- './spec/graphql/resolvers/base_resolver_spec.rb' +- './spec/graphql/resolvers/blobs_resolver_spec.rb' +- './spec/graphql/resolvers/board_list_issues_resolver_spec.rb' +- './spec/graphql/resolvers/board_list_resolver_spec.rb' +- './spec/graphql/resolvers/board_lists_resolver_spec.rb' +- './spec/graphql/resolvers/board_resolver_spec.rb' +- './spec/graphql/resolvers/boards_resolver_spec.rb' +- './spec/graphql/resolvers/branch_commit_resolver_spec.rb' +- './spec/graphql/resolvers/ci/config_resolver_spec.rb' +- './spec/graphql/resolvers/ci/group_runners_resolver_spec.rb' +- './spec/graphql/resolvers/ci/jobs_resolver_spec.rb' +- './spec/graphql/resolvers/ci/job_token_scope_resolver_spec.rb' +- './spec/graphql/resolvers/ci/project_pipeline_counts_resolver_spec.rb' +- './spec/graphql/resolvers/ci/runner_jobs_resolver_spec.rb' +- './spec/graphql/resolvers/ci/runner_platforms_resolver_spec.rb' +- './spec/graphql/resolvers/ci/runner_setup_resolver_spec.rb' +- './spec/graphql/resolvers/ci/runners_resolver_spec.rb' +- './spec/graphql/resolvers/ci/runner_status_resolver_spec.rb' +- './spec/graphql/resolvers/ci/template_resolver_spec.rb' +- './spec/graphql/resolvers/ci/test_report_summary_resolver_spec.rb' +- './spec/graphql/resolvers/ci/test_suite_resolver_spec.rb' +- './spec/graphql/resolvers/clusters/agent_activity_events_resolver_spec.rb' +- './spec/graphql/resolvers/clusters/agents_resolver_spec.rb' +- './spec/graphql/resolvers/clusters/agent_tokens_resolver_spec.rb' +- './spec/graphql/resolvers/commit_pipelines_resolver_spec.rb' +- './spec/graphql/resolvers/concerns/caching_array_resolver_spec.rb' +- './spec/graphql/resolvers/concerns/looks_ahead_spec.rb' +- './spec/graphql/resolvers/concerns/resolves_groups_spec.rb' +- './spec/graphql/resolvers/concerns/resolves_ids_spec.rb' +- './spec/graphql/resolvers/concerns/resolves_pipelines_spec.rb' +- './spec/graphql/resolvers/concerns/resolves_project_spec.rb' +- './spec/graphql/resolvers/container_repositories_resolver_spec.rb' +- './spec/graphql/resolvers/container_repository_tags_resolver_spec.rb' +- './spec/graphql/resolvers/crm/contacts_resolver_spec.rb' +- './spec/graphql/resolvers/crm/contact_state_counts_resolver_spec.rb' +- './spec/graphql/resolvers/crm/organizations_resolver_spec.rb' +- './spec/graphql/resolvers/crm/organization_state_counts_resolver_spec.rb' +- './spec/graphql/resolvers/design_management/design_at_version_resolver_spec.rb' +- './spec/graphql/resolvers/design_management/design_resolver_spec.rb' +- './spec/graphql/resolvers/design_management/designs_resolver_spec.rb' +- './spec/graphql/resolvers/design_management/version/design_at_version_resolver_spec.rb' +- './spec/graphql/resolvers/design_management/version/designs_at_version_resolver_spec.rb' +- './spec/graphql/resolvers/design_management/version_in_collection_resolver_spec.rb' +- './spec/graphql/resolvers/design_management/version_resolver_spec.rb' +- './spec/graphql/resolvers/design_management/versions_resolver_spec.rb' +- './spec/graphql/resolvers/echo_resolver_spec.rb' +- './spec/graphql/resolvers/environments_resolver_spec.rb' +- './spec/graphql/resolvers/error_tracking/sentry_detailed_error_resolver_spec.rb' +- './spec/graphql/resolvers/error_tracking/sentry_error_collection_resolver_spec.rb' +- './spec/graphql/resolvers/error_tracking/sentry_errors_resolver_spec.rb' +- './spec/graphql/resolvers/group_issues_resolver_spec.rb' +- './spec/graphql/resolvers/group_labels_resolver_spec.rb' +- './spec/graphql/resolvers/group_members/notification_email_resolver_spec.rb' +- './spec/graphql/resolvers/group_members_resolver_spec.rb' +- './spec/graphql/resolvers/group_milestones_resolver_spec.rb' +- './spec/graphql/resolvers/group_packages_resolver_spec.rb' +- './spec/graphql/resolvers/group_resolver_spec.rb' +- './spec/graphql/resolvers/groups_resolver_spec.rb' +- './spec/graphql/resolvers/incident_management/timeline_events_resolver_spec.rb' +- './spec/graphql/resolvers/issues_resolver_spec.rb' +- './spec/graphql/resolvers/issue_status_counts_resolver_spec.rb' +- './spec/graphql/resolvers/kas/agent_configurations_resolver_spec.rb' +- './spec/graphql/resolvers/kas/agent_connections_resolver_spec.rb' +- './spec/graphql/resolvers/labels_resolver_spec.rb' +- './spec/graphql/resolvers/last_commit_resolver_spec.rb' +- './spec/graphql/resolvers/merge_request_pipelines_resolver_spec.rb' +- './spec/graphql/resolvers/merge_requests_count_resolver_spec.rb' +- './spec/graphql/resolvers/merge_requests_resolver_spec.rb' +- './spec/graphql/resolvers/metadata_resolver_spec.rb' +- './spec/graphql/resolvers/metrics/dashboard_resolver_spec.rb' +- './spec/graphql/resolvers/metrics/dashboards/annotation_resolver_spec.rb' +- './spec/graphql/resolvers/namespace_projects_resolver_spec.rb' +- './spec/graphql/resolvers/package_details_resolver_spec.rb' +- './spec/graphql/resolvers/package_pipelines_resolver_spec.rb' +- './spec/graphql/resolvers/packages_base_resolver_spec.rb' +- './spec/graphql/resolvers/paginated_tree_resolver_spec.rb' +- './spec/graphql/resolvers/project_jobs_resolver_spec.rb' +- './spec/graphql/resolvers/project_members_resolver_spec.rb' +- './spec/graphql/resolvers/project_merge_requests_resolver_spec.rb' +- './spec/graphql/resolvers/project_milestones_resolver_spec.rb' +- './spec/graphql/resolvers/project_packages_resolver_spec.rb' +- './spec/graphql/resolvers/project_pipeline_resolver_spec.rb' +- './spec/graphql/resolvers/project_pipelines_resolver_spec.rb' +- './spec/graphql/resolvers/project_pipeline_statistics_resolver_spec.rb' +- './spec/graphql/resolvers/project_resolver_spec.rb' +- './spec/graphql/resolvers/projects/fork_targets_resolver_spec.rb' +- './spec/graphql/resolvers/projects/grafana_integration_resolver_spec.rb' +- './spec/graphql/resolvers/projects/jira_projects_resolver_spec.rb' +- './spec/graphql/resolvers/projects_resolver_spec.rb' +- './spec/graphql/resolvers/projects/services_resolver_spec.rb' +- './spec/graphql/resolvers/projects/snippets_resolver_spec.rb' +- './spec/graphql/resolvers/recent_boards_resolver_spec.rb' +- './spec/graphql/resolvers/release_milestones_resolver_spec.rb' +- './spec/graphql/resolvers/release_resolver_spec.rb' +- './spec/graphql/resolvers/releases_resolver_spec.rb' +- './spec/graphql/resolvers/repository_branch_names_resolver_spec.rb' +- './spec/graphql/resolvers/snippets/blobs_resolver_spec.rb' +- './spec/graphql/resolvers/snippets_resolver_spec.rb' +- './spec/graphql/resolvers/terraform/states_resolver_spec.rb' +- './spec/graphql/resolvers/timelog_resolver_spec.rb' +- './spec/graphql/resolvers/todos_resolver_spec.rb' +- './spec/graphql/resolvers/topics_resolver_spec.rb' +- './spec/graphql/resolvers/tree_resolver_spec.rb' +- './spec/graphql/resolvers/user_discussions_count_resolver_spec.rb' +- './spec/graphql/resolvers/user_notes_count_resolver_spec.rb' +- './spec/graphql/resolvers/user_resolver_spec.rb' +- './spec/graphql/resolvers/users/group_count_resolver_spec.rb' +- './spec/graphql/resolvers/users/groups_resolver_spec.rb' +- './spec/graphql/resolvers/users/participants_resolver_spec.rb' +- './spec/graphql/resolvers/users_resolver_spec.rb' +- './spec/graphql/resolvers/users/snippets_resolver_spec.rb' +- './spec/graphql/resolvers/work_item_resolver_spec.rb' +- './spec/graphql/resolvers/work_items_resolver_spec.rb' +- './spec/graphql/resolvers/work_items/types_resolver_spec.rb' +- './spec/graphql/subscriptions/issuable_updated_spec.rb' +- './spec/graphql/types/access_level_enum_spec.rb' +- './spec/graphql/types/access_level_type_spec.rb' +- './spec/graphql/types/admin/analytics/usage_trends/measurement_identifier_enum_spec.rb' +- './spec/graphql/types/admin/analytics/usage_trends/measurement_type_spec.rb' +- './spec/graphql/types/alert_management/alert_status_count_type_spec.rb' +- './spec/graphql/types/alert_management/alert_type_spec.rb' +- './spec/graphql/types/alert_management/domain_filter_enum_spec.rb' +- './spec/graphql/types/alert_management/http_integration_type_spec.rb' +- './spec/graphql/types/alert_management/integration_type_enum_spec.rb' +- './spec/graphql/types/alert_management/integration_type_spec.rb' +- './spec/graphql/types/alert_management/prometheus_integration_type_spec.rb' +- './spec/graphql/types/alert_management/severity_enum_spec.rb' +- './spec/graphql/types/alert_management/status_enum_spec.rb' +- './spec/graphql/types/availability_enum_spec.rb' +- './spec/graphql/types/award_emojis/award_emoji_type_spec.rb' +- './spec/graphql/types/base_argument_spec.rb' +- './spec/graphql/types/base_edge_spec.rb' +- './spec/graphql/types/base_enum_spec.rb' +- './spec/graphql/types/base_field_spec.rb' +- './spec/graphql/types/base_object_spec.rb' +- './spec/graphql/types/blob_viewers/type_enum_spec.rb' +- './spec/graphql/types/blob_viewer_type_spec.rb' +- './spec/graphql/types/board_list_type_spec.rb' +- './spec/graphql/types/boards/board_issue_input_type_spec.rb' +- './spec/graphql/types/board_type_spec.rb' +- './spec/graphql/types/branch_type_spec.rb' +- './spec/graphql/types/ci/analytics_type_spec.rb' +- './spec/graphql/types/ci/config/config_type_spec.rb' +- './spec/graphql/types/ci/config/group_type_spec.rb' +- './spec/graphql/types/ci/config/include_type_enum_spec.rb' +- './spec/graphql/types/ci/config/include_type_spec.rb' +- './spec/graphql/types/ci/config/job_restriction_type_spec.rb' +- './spec/graphql/types/ci/config/job_type_spec.rb' +- './spec/graphql/types/ci/config/need_type_spec.rb' +- './spec/graphql/types/ci/config/stage_type_spec.rb' +- './spec/graphql/types/ci_configuration/sast/analyzers_entity_input_type_spec.rb' +- './spec/graphql/types/ci_configuration/sast/analyzers_entity_type_spec.rb' +- './spec/graphql/types/ci_configuration/sast/entity_input_type_spec.rb' +- './spec/graphql/types/ci_configuration/sast/entity_type_spec.rb' +- './spec/graphql/types/ci_configuration/sast/input_type_spec.rb' +- './spec/graphql/types/ci_configuration/sast/options_entity_spec.rb' +- './spec/graphql/types/ci_configuration/sast/type_spec.rb' +- './spec/graphql/types/ci_configuration/sast/ui_component_size_enum_spec.rb' +- './spec/graphql/types/ci/detailed_status_type_spec.rb' +- './spec/graphql/types/ci/group_type_spec.rb' +- './spec/graphql/types/ci/group_variable_type_spec.rb' +- './spec/graphql/types/ci/instance_variable_type_spec.rb' +- './spec/graphql/types/ci/job_artifact_file_type_enum_spec.rb' +- './spec/graphql/types/ci/job_artifact_type_spec.rb' +- './spec/graphql/types/ci/job_kind_enum_spec.rb' +- './spec/graphql/types/ci/job_need_union_spec.rb' +- './spec/graphql/types/ci/job_status_enum_spec.rb' +- './spec/graphql/types/ci/job_token_scope_type_spec.rb' +- './spec/graphql/types/ci/job_type_spec.rb' +- './spec/graphql/types/ci/manual_variable_type_spec.rb' +- './spec/graphql/types/ci/pipeline_counts_type_spec.rb' +- './spec/graphql/types/ci/pipeline_merge_request_event_type_enum_spec.rb' +- './spec/graphql/types/ci/pipeline_message_type_spec.rb' +- './spec/graphql/types/ci/pipeline_scope_enum_spec.rb' +- './spec/graphql/types/ci/pipeline_status_enum_spec.rb' +- './spec/graphql/types/ci/pipeline_type_spec.rb' +- './spec/graphql/types/ci/project_variable_type_spec.rb' +- './spec/graphql/types/ci/recent_failures_type_spec.rb' +- './spec/graphql/types/ci/runner_architecture_type_spec.rb' +- './spec/graphql/types/ci/runner_platform_type_spec.rb' +- './spec/graphql/types/ci/runner_setup_type_spec.rb' +- './spec/graphql/types/ci/runner_type_spec.rb' +- './spec/graphql/types/ci/runner_upgrade_status_enum_spec.rb' +- './spec/graphql/types/ci/runner_web_url_edge_spec.rb' +- './spec/graphql/types/ci/stage_type_spec.rb' +- './spec/graphql/types/ci/status_action_type_spec.rb' +- './spec/graphql/types/ci/template_type_spec.rb' +- './spec/graphql/types/ci/test_case_status_enum_spec.rb' +- './spec/graphql/types/ci/test_case_type_spec.rb' +- './spec/graphql/types/ci/test_report_summary_type_spec.rb' +- './spec/graphql/types/ci/test_report_total_type_spec.rb' +- './spec/graphql/types/ci/test_suite_summary_type_spec.rb' +- './spec/graphql/types/ci/test_suite_type_spec.rb' +- './spec/graphql/types/ci/variable_input_type_spec.rb' +- './spec/graphql/types/ci/variable_interface_spec.rb' +- './spec/graphql/types/ci/variable_type_enum_spec.rb' +- './spec/graphql/types/clusters/agent_activity_event_type_spec.rb' +- './spec/graphql/types/clusters/agent_token_status_enum_spec.rb' +- './spec/graphql/types/clusters/agent_token_type_spec.rb' +- './spec/graphql/types/clusters/agent_type_spec.rb' +- './spec/graphql/types/color_type_spec.rb' +- './spec/graphql/types/commit_action_mode_enum_spec.rb' +- './spec/graphql/types/commit_encoding_enum_spec.rb' +- './spec/graphql/types/commit_type_spec.rb' +- './spec/graphql/types/container_expiration_policy_cadence_enum_spec.rb' +- './spec/graphql/types/container_expiration_policy_keep_enum_spec.rb' +- './spec/graphql/types/container_expiration_policy_older_than_enum_spec.rb' +- './spec/graphql/types/container_expiration_policy_type_spec.rb' +- './spec/graphql/types/container_repository_cleanup_status_enum_spec.rb' +- './spec/graphql/types/container_repository_details_type_spec.rb' +- './spec/graphql/types/container_repository_sort_enum_spec.rb' +- './spec/graphql/types/container_repository_status_enum_spec.rb' +- './spec/graphql/types/container_repository_tag_type_spec.rb' +- './spec/graphql/types/container_repository_type_spec.rb' +- './spec/graphql/types/container_respository_tags_sort_enum_spec.rb' +- './spec/graphql/types/countable_connection_type_spec.rb' +- './spec/graphql/types/current_user_todos_type_spec.rb' +- './spec/graphql/types/custom_emoji_type_spec.rb' +- './spec/graphql/types/customer_relations/contact_sort_enum_spec.rb' +- './spec/graphql/types/customer_relations/contact_state_counts_type_spec.rb' +- './spec/graphql/types/customer_relations/contact_type_spec.rb' +- './spec/graphql/types/customer_relations/organization_sort_enum_spec.rb' +- './spec/graphql/types/customer_relations/organization_state_counts_type_spec.rb' +- './spec/graphql/types/customer_relations/organization_type_spec.rb' +- './spec/graphql/types/dependency_proxy/blob_type_spec.rb' +- './spec/graphql/types/dependency_proxy/group_setting_type_spec.rb' +- './spec/graphql/types/dependency_proxy/image_ttl_group_policy_type_spec.rb' +- './spec/graphql/types/dependency_proxy/manifest_type_spec.rb' +- './spec/graphql/types/deployment_tier_enum_spec.rb' +- './spec/graphql/types/design_management/design_at_version_type_spec.rb' +- './spec/graphql/types/design_management/design_collection_copy_state_enum_spec.rb' +- './spec/graphql/types/design_management/design_collection_type_spec.rb' +- './spec/graphql/types/design_management/design_type_spec.rb' +- './spec/graphql/types/design_management/design_version_event_enum_spec.rb' +- './spec/graphql/types/design_management_type_spec.rb' +- './spec/graphql/types/design_management/version_type_spec.rb' +- './spec/graphql/types/diff_refs_type_spec.rb' +- './spec/graphql/types/duration_type_spec.rb' +- './spec/graphql/types/environment_type_spec.rb' +- './spec/graphql/types/error_tracking/sentry_detailed_error_type_spec.rb' +- './spec/graphql/types/error_tracking/sentry_error_collection_type_spec.rb' +- './spec/graphql/types/error_tracking/sentry_error_stack_trace_entry_type_spec.rb' +- './spec/graphql/types/error_tracking/sentry_error_stack_trace_type_spec.rb' +- './spec/graphql/types/error_tracking/sentry_error_type_spec.rb' +- './spec/graphql/types/eventable_type_spec.rb' +- './spec/graphql/types/event_type_spec.rb' +- './spec/graphql/types/evidence_type_spec.rb' +- './spec/graphql/types/global_id_type_spec.rb' +- './spec/graphql/types/grafana_integration_type_spec.rb' +- './spec/graphql/types/group_invitation_type_spec.rb' +- './spec/graphql/types/group_member_relation_enum_spec.rb' +- './spec/graphql/types/group_member_type_spec.rb' +- './spec/graphql/types/group_type_spec.rb' +- './spec/graphql/types/incident_management/escalation_status_enum_spec.rb' +- './spec/graphql/types/incident_management/timeline_event_type_spec.rb' +- './spec/graphql/types/invitation_interface_spec.rb' +- './spec/graphql/types/issuable_searchable_field_enum_spec.rb' +- './spec/graphql/types/issuable_severity_enum_spec.rb' +- './spec/graphql/types/issuable_sort_enum_spec.rb' +- './spec/graphql/types/issuable_state_enum_spec.rb' +- './spec/graphql/types/issuable_type_spec.rb' +- './spec/graphql/types/issue_sort_enum_spec.rb' +- './spec/graphql/types/issue_state_enum_spec.rb' +- './spec/graphql/types/issue_status_count_type_spec.rb' +- './spec/graphql/types/issue_type_enum_spec.rb' +- './spec/graphql/types/issue_type_spec.rb' +- './spec/graphql/types/jira_import_type_spec.rb' +- './spec/graphql/types/jira_user_type_spec.rb' +- './spec/graphql/types/kas/agent_configuration_type_spec.rb' +- './spec/graphql/types/kas/agent_connection_type_spec.rb' +- './spec/graphql/types/kas/agent_metadata_type_spec.rb' +- './spec/graphql/types/label_type_spec.rb' +- './spec/graphql/types/limited_countable_connection_type_spec.rb' +- './spec/graphql/types/member_interface_spec.rb' +- './spec/graphql/types/merge_request_connection_type_spec.rb' +- './spec/graphql/types/merge_request_review_state_enum_spec.rb' +- './spec/graphql/types/merge_requests/assignee_type_spec.rb' +- './spec/graphql/types/merge_requests/author_type_spec.rb' +- './spec/graphql/types/merge_request_sort_enum_spec.rb' +- './spec/graphql/types/merge_requests/participant_type_spec.rb' +- './spec/graphql/types/merge_requests/reviewer_type_spec.rb' +- './spec/graphql/types/merge_request_state_enum_spec.rb' +- './spec/graphql/types/merge_request_state_event_enum_spec.rb' +- './spec/graphql/types/merge_request_type_spec.rb' +- './spec/graphql/types/metadata/kas_type_spec.rb' +- './spec/graphql/types/metadata_type_spec.rb' +- './spec/graphql/types/metrics/dashboards/annotation_type_spec.rb' +- './spec/graphql/types/metrics/dashboard_type_spec.rb' +- './spec/graphql/types/milestone_stats_type_spec.rb' +- './spec/graphql/types/milestone_type_spec.rb' +- './spec/graphql/types/mutation_type_spec.rb' +- './spec/graphql/types/namespace/package_settings_type_spec.rb' +- './spec/graphql/types/namespace_type_spec.rb' +- './spec/graphql/types/notes/diff_position_type_spec.rb' +- './spec/graphql/types/notes/discussion_type_spec.rb' +- './spec/graphql/types/notes/noteable_interface_spec.rb' +- './spec/graphql/types/notes/note_type_spec.rb' +- './spec/graphql/types/packages/cleanup/keep_duplicated_package_files_enum_spec.rb' +- './spec/graphql/types/packages/cleanup/policy_type_spec.rb' +- './spec/graphql/types/packages/composer/json_type_spec.rb' +- './spec/graphql/types/packages/composer/metadatum_type_spec.rb' +- './spec/graphql/types/packages/conan/file_metadatum_type_spec.rb' +- './spec/graphql/types/packages/conan/metadatum_file_type_enum_spec.rb' +- './spec/graphql/types/packages/conan/metadatum_type_spec.rb' +- './spec/graphql/types/packages/helm/dependency_type_spec.rb' +- './spec/graphql/types/packages/helm/file_metadatum_type_spec.rb' +- './spec/graphql/types/packages/helm/maintainer_type_spec.rb' +- './spec/graphql/types/packages/helm/metadata_type_spec.rb' +- './spec/graphql/types/packages/maven/metadatum_type_spec.rb' +- './spec/graphql/types/packages/nuget/dependency_link_metdatum_type_spec.rb' +- './spec/graphql/types/packages/nuget/metadatum_type_spec.rb' +- './spec/graphql/types/packages/package_base_type_spec.rb' +- './spec/graphql/types/packages/package_dependency_link_type_spec.rb' +- './spec/graphql/types/packages/package_dependency_type_enum_spec.rb' +- './spec/graphql/types/packages/package_dependency_type_spec.rb' +- './spec/graphql/types/packages/package_details_type_spec.rb' +- './spec/graphql/types/packages/package_file_type_spec.rb' +- './spec/graphql/types/packages/package_group_sort_enum_spec.rb' +- './spec/graphql/types/packages/package_sort_enum_spec.rb' +- './spec/graphql/types/packages/package_status_enum_spec.rb' +- './spec/graphql/types/packages/package_type_enum_spec.rb' +- './spec/graphql/types/packages/package_type_spec.rb' +- './spec/graphql/types/packages/pypi/metadatum_type_spec.rb' +- './spec/graphql/types/packages/tag_type_spec.rb' +- './spec/graphql/types/permission_types/base_permission_type_spec.rb' +- './spec/graphql/types/permission_types/ci/job_spec.rb' +- './spec/graphql/types/permission_types/ci/runner_spec.rb' +- './spec/graphql/types/permission_types/issue_spec.rb' +- './spec/graphql/types/permission_types/merge_request_spec.rb' +- './spec/graphql/types/permission_types/merge_request_type_spec.rb' +- './spec/graphql/types/permission_types/note_spec.rb' +- './spec/graphql/types/permission_types/project_spec.rb' +- './spec/graphql/types/permission_types/snippet_spec.rb' +- './spec/graphql/types/permission_types/user_spec.rb' +- './spec/graphql/types/permission_types/work_item_spec.rb' +- './spec/graphql/types/project_invitation_type_spec.rb' +- './spec/graphql/types/project_member_relation_enum_spec.rb' +- './spec/graphql/types/project_member_type_spec.rb' +- './spec/graphql/types/projects/base_service_type_spec.rb' +- './spec/graphql/types/projects/jira_project_type_spec.rb' +- './spec/graphql/types/projects/jira_service_type_spec.rb' +- './spec/graphql/types/projects/service_type_enum_spec.rb' +- './spec/graphql/types/projects/service_type_spec.rb' +- './spec/graphql/types/project_statistics_type_spec.rb' +- './spec/graphql/types/projects/topic_type_spec.rb' +- './spec/graphql/types/project_type_spec.rb' +- './spec/graphql/types/prometheus_alert_type_spec.rb' +- './spec/graphql/types/query_complexity_type_spec.rb' +- './spec/graphql/types/query_type_spec.rb' +- './spec/graphql/types/range_input_type_spec.rb' +- './spec/graphql/types/release_asset_link_input_type_spec.rb' +- './spec/graphql/types/release_asset_link_type_spec.rb' +- './spec/graphql/types/release_assets_input_type_spec.rb' +- './spec/graphql/types/release_assets_type_spec.rb' +- './spec/graphql/types/release_links_type_spec.rb' +- './spec/graphql/types/release_source_type_spec.rb' +- './spec/graphql/types/release_type_spec.rb' +- './spec/graphql/types/repository/blob_type_spec.rb' +- './spec/graphql/types/repository_type_spec.rb' +- './spec/graphql/types/resolvable_interface_spec.rb' +- './spec/graphql/types/root_storage_statistics_type_spec.rb' +- './spec/graphql/types/saved_reply_type_spec.rb' +- './spec/graphql/types/security/report_types_enum_spec.rb' +- './spec/graphql/types/snippets/blob_action_enum_spec.rb' +- './spec/graphql/types/snippets/blob_action_input_type_spec.rb' +- './spec/graphql/types/snippets/blob_type_spec.rb' +- './spec/graphql/types/snippets/blob_viewer_type_spec.rb' +- './spec/graphql/types/snippet_type_spec.rb' +- './spec/graphql/types/subscription_type_spec.rb' +- './spec/graphql/types/terraform/state_type_spec.rb' +- './spec/graphql/types/terraform/state_version_type_spec.rb' +- './spec/graphql/types/timeframe_type_spec.rb' +- './spec/graphql/types/timelog_type_spec.rb' +- './spec/graphql/types/time_tracking/timelog_category_type_spec.rb' +- './spec/graphql/types/time_type_spec.rb' +- './spec/graphql/types/todoable_interface_spec.rb' +- './spec/graphql/types/todo_type_spec.rb' +- './spec/graphql/types/tree/blob_type_spec.rb' +- './spec/graphql/types/tree/submodule_type_spec.rb' +- './spec/graphql/types/tree/tree_entry_type_spec.rb' +- './spec/graphql/types/tree/tree_type_spec.rb' +- './spec/graphql/types/tree/type_enum_spec.rb' +- './spec/graphql/types/untrusted_regexp_spec.rb' +- './spec/graphql/types/upload_type_spec.rb' +- './spec/graphql/types/user_callout_feature_name_enum_spec.rb' +- './spec/graphql/types/user_callout_type_spec.rb' +- './spec/graphql/types/user_merge_request_interaction_type_spec.rb' +- './spec/graphql/types/user_preferences_type_spec.rb' +- './spec/graphql/types/user_status_type_spec.rb' +- './spec/graphql/types/user_type_spec.rb' +- './spec/graphql/types/work_item_id_type_spec.rb' +- './spec/graphql/types/work_items/widget_interface_spec.rb' +- './spec/graphql/types/work_items/widgets/assignees_input_type_spec.rb' +- './spec/graphql/types/work_items/widgets/assignees_type_spec.rb' +- './spec/graphql/types/work_items/widgets/description_input_type_spec.rb' +- './spec/graphql/types/work_items/widgets/description_type_spec.rb' +- './spec/graphql/types/work_items/widgets/hierarchy_type_spec.rb' +- './spec/graphql/types/work_items/widgets/hierarchy_update_input_type_spec.rb' +- './spec/graphql/types/work_items/widgets/labels_type_spec.rb' +- './spec/graphql/types/work_items/widgets/start_and_due_date_type_spec.rb' +- './spec/graphql/types/work_items/widgets/start_and_due_date_update_input_type_spec.rb' +- './spec/graphql/types/work_items/widget_type_enum_spec.rb' +- './spec/graphql/types/work_item_type_spec.rb' +- './spec/haml_lint/linter/documentation_links_spec.rb' +- './spec/haml_lint/linter/inline_javascript_spec.rb' +- './spec/haml_lint/linter/no_plain_nodes_spec.rb' +- './spec/helpers/access_tokens_helper_spec.rb' +- './spec/helpers/admin/application_settings/settings_helper_spec.rb' +- './spec/helpers/admin/background_migrations_helper_spec.rb' +- './spec/helpers/admin/deploy_key_helper_spec.rb' +- './spec/helpers/admin/identities_helper_spec.rb' +- './spec/helpers/admin/user_actions_helper_spec.rb' +- './spec/helpers/analytics/cycle_analytics_helper_spec.rb' +- './spec/helpers/appearances_helper_spec.rb' +- './spec/helpers/application_helper_spec.rb' +- './spec/helpers/application_settings_helper_spec.rb' +- './spec/helpers/auth_helper_spec.rb' +- './spec/helpers/auto_devops_helper_spec.rb' +- './spec/helpers/avatars_helper_spec.rb' +- './spec/helpers/award_emoji_helper_spec.rb' +- './spec/helpers/badges_helper_spec.rb' +- './spec/helpers/bizible_helper_spec.rb' +- './spec/helpers/blame_helper_spec.rb' +- './spec/helpers/blob_helper_spec.rb' +- './spec/helpers/boards_helper_spec.rb' +- './spec/helpers/branches_helper_spec.rb' +- './spec/helpers/breadcrumbs_helper_spec.rb' +- './spec/helpers/broadcast_messages_helper_spec.rb' +- './spec/helpers/button_helper_spec.rb' +- './spec/helpers/calendar_helper_spec.rb' +- './spec/helpers/ci/builds_helper_spec.rb' +- './spec/helpers/ci/jobs_helper_spec.rb' +- './spec/helpers/ci/pipeline_editor_helper_spec.rb' +- './spec/helpers/ci/pipelines_helper_spec.rb' +- './spec/helpers/ci/runners_helper_spec.rb' +- './spec/helpers/ci/secure_files_helper_spec.rb' +- './spec/helpers/ci/status_helper_spec.rb' +- './spec/helpers/ci/triggers_helper_spec.rb' +- './spec/helpers/clusters_helper_spec.rb' +- './spec/helpers/colors_helper_spec.rb' +- './spec/helpers/commits_helper_spec.rb' +- './spec/helpers/components_helper_spec.rb' +- './spec/helpers/container_expiration_policies_helper_spec.rb' +- './spec/helpers/container_registry_helper_spec.rb' +- './spec/helpers/cookies_helper_spec.rb' +- './spec/helpers/dashboard_helper_spec.rb' +- './spec/helpers/deploy_tokens_helper_spec.rb' +- './spec/helpers/dev_ops_report_helper_spec.rb' +- './spec/helpers/diff_helper_spec.rb' +- './spec/helpers/dropdowns_helper_spec.rb' +- './spec/helpers/emails_helper_spec.rb' +- './spec/helpers/emoji_helper_spec.rb' +- './spec/helpers/enable_search_settings_helper_spec.rb' +- './spec/helpers/environment_helper_spec.rb' +- './spec/helpers/environments_helper_spec.rb' +- './spec/helpers/events_helper_spec.rb' +- './spec/helpers/explore_helper_spec.rb' +- './spec/helpers/export_helper_spec.rb' +- './spec/helpers/external_link_helper_spec.rb' +- './spec/helpers/feature_flags_helper_spec.rb' +- './spec/helpers/form_helper_spec.rb' +- './spec/helpers/git_helper_spec.rb' +- './spec/helpers/gitlab_routing_helper_spec.rb' +- './spec/helpers/gitlab_script_tag_helper_spec.rb' +- './spec/helpers/graph_helper_spec.rb' +- './spec/helpers/groups/group_members_helper_spec.rb' +- './spec/helpers/groups_helper_spec.rb' +- './spec/helpers/groups/settings_helper_spec.rb' +- './spec/helpers/hooks_helper_spec.rb' +- './spec/helpers/icons_helper_spec.rb' +- './spec/helpers/ide_helper_spec.rb' +- './spec/helpers/import_helper_spec.rb' +- './spec/helpers/instance_configuration_helper_spec.rb' +- './spec/helpers/integrations_helper_spec.rb' +- './spec/helpers/invite_members_helper_spec.rb' +- './spec/helpers/issuables_description_templates_helper_spec.rb' +- './spec/helpers/issuables_helper_spec.rb' +- './spec/helpers/issues_helper_spec.rb' +- './spec/helpers/jira_connect_helper_spec.rb' +- './spec/helpers/keyset_helper_spec.rb' +- './spec/helpers/labels_helper_spec.rb' +- './spec/helpers/lazy_image_tag_helper_spec.rb' +- './spec/helpers/listbox_helper_spec.rb' +- './spec/helpers/markup_helper_spec.rb' +- './spec/helpers/members_helper_spec.rb' +- './spec/helpers/merge_requests_helper_spec.rb' +- './spec/helpers/namespaces_helper_spec.rb' +- './spec/helpers/nav_helper_spec.rb' +- './spec/helpers/nav/new_dropdown_helper_spec.rb' +- './spec/helpers/nav/top_nav_helper_spec.rb' +- './spec/helpers/notes_helper_spec.rb' +- './spec/helpers/notifications_helper_spec.rb' +- './spec/helpers/notify_helper_spec.rb' +- './spec/helpers/numbers_helper_spec.rb' +- './spec/helpers/one_trust_helper_spec.rb' +- './spec/helpers/operations_helper_spec.rb' +- './spec/helpers/packages_helper_spec.rb' +- './spec/helpers/page_layout_helper_spec.rb' +- './spec/helpers/pagination_helper_spec.rb' +- './spec/helpers/preferences_helper_spec.rb' +- './spec/helpers/profiles_helper_spec.rb' +- './spec/helpers/projects/alert_management_helper_spec.rb' +- './spec/helpers/projects/cluster_agents_helper_spec.rb' +- './spec/helpers/projects/error_tracking_helper_spec.rb' +- './spec/helpers/projects_helper_spec.rb' +- './spec/helpers/projects/incidents_helper_spec.rb' +- './spec/helpers/projects/pipeline_helper_spec.rb' +- './spec/helpers/projects/project_members_helper_spec.rb' +- './spec/helpers/projects/security/configuration_helper_spec.rb' +- './spec/helpers/projects/terraform_helper_spec.rb' +- './spec/helpers/recaptcha_helper_spec.rb' +- './spec/helpers/registrations_helper_spec.rb' +- './spec/helpers/releases_helper_spec.rb' +- './spec/helpers/routing/pseudonymization_helper_spec.rb' +- './spec/helpers/rss_helper_spec.rb' +- './spec/helpers/search_helper_spec.rb' +- './spec/helpers/sessions_helper_spec.rb' +- './spec/helpers/sidebars_helper_spec.rb' +- './spec/helpers/sidekiq_helper_spec.rb' +- './spec/helpers/snippets_helper_spec.rb' +- './spec/helpers/sorting_helper_spec.rb' +- './spec/helpers/sourcegraph_helper_spec.rb' +- './spec/helpers/ssh_keys_helper_spec.rb' +- './spec/helpers/startupjs_helper_spec.rb' +- './spec/helpers/stat_anchors_helper_spec.rb' +- './spec/helpers/storage_helper_spec.rb' +- './spec/helpers/submodule_helper_spec.rb' +- './spec/helpers/subscribable_banner_helper_spec.rb' +- './spec/helpers/tab_helper_spec.rb' +- './spec/helpers/terms_helper_spec.rb' +- './spec/helpers/timeboxes_helper_spec.rb' +- './spec/helpers/timeboxes_routing_helper_spec.rb' +- './spec/helpers/time_helper_spec.rb' +- './spec/helpers/time_zone_helper_spec.rb' +- './spec/helpers/todos_helper_spec.rb' +- './spec/helpers/tooling/visual_review_helper_spec.rb' +- './spec/helpers/tracking_helper_spec.rb' +- './spec/helpers/tree_helper_spec.rb' +- './spec/helpers/users/callouts_helper_spec.rb' +- './spec/helpers/users/group_callouts_helper_spec.rb' +- './spec/helpers/users_helper_spec.rb' +- './spec/helpers/version_check_helper_spec.rb' +- './spec/helpers/visibility_level_helper_spec.rb' +- './spec/helpers/web_hooks/web_hooks_helper_spec.rb' +- './spec/helpers/web_ide_button_helper_spec.rb' +- './spec/helpers/webpack_helper_spec.rb' +- './spec/helpers/whats_new_helper_spec.rb' +- './spec/helpers/wiki_helper_spec.rb' +- './spec/helpers/wiki_page_version_helper_spec.rb' +- './spec/helpers/x509_helper_spec.rb' +- './spec/initializers/00_deprecations_spec.rb' +- './spec/initializers/00_rails_disable_joins_spec.rb' +- './spec/initializers/0_log_deprecations_spec.rb' +- './spec/initializers/0_postgresql_types_spec.rb' +- './spec/initializers/100_patch_omniauth_oauth2_spec.rb' +- './spec/initializers/100_patch_omniauth_saml_spec.rb' +- './spec/initializers/1_acts_as_taggable_spec.rb' +- './spec/initializers/6_validations_spec.rb' +- './spec/initializers/action_cable_subscription_adapter_identifier_spec.rb' +- './spec/initializers/action_mailer_hooks_spec.rb' +- './spec/initializers/active_record_locking_spec.rb' +- './spec/initializers/asset_proxy_setting_spec.rb' +- './spec/initializers/attr_encrypted_no_db_connection_spec.rb' +- './spec/initializers/attr_encrypted_thread_safe_spec.rb' +- './spec/initializers/carrierwave_patch_spec.rb' +- './spec/initializers/cookies_serializer_spec.rb' +- './spec/initializers/database_config_spec.rb' +- './spec/initializers/diagnostic_reports_spec.rb' +- './spec/initializers/direct_upload_support_spec.rb' +- './spec/initializers/doorkeeper_spec.rb' +- './spec/initializers/enumerator_next_patch_spec.rb' +- './spec/initializers/fog_google_https_private_urls_spec.rb' +- './spec/initializers/forbid_sidekiq_in_transactions_spec.rb' +- './spec/initializers/global_id_spec.rb' +- './spec/initializers/google_api_client_spec.rb' +- './spec/initializers/hangouts_chat_http_override_spec.rb' +- './spec/initializers/lograge_spec.rb' +- './spec/initializers/mail_encoding_patch_spec.rb' +- './spec/initializers/mailer_retries_spec.rb' +- './spec/initializers/memory_watchdog_spec.rb' +- './spec/initializers/net_http_patch_spec.rb' +- './spec/initializers/net_http_response_patch_spec.rb' +- './spec/initializers/omniauth_spec.rb' +- './spec/initializers/pages_storage_check_spec.rb' +- './spec/initializers/rack_multipart_patch_spec.rb' +- './spec/initializers/rails_asset_host_spec.rb' +- './spec/initializers/rdoc_segfault_patch_spec.rb' +- './spec/initializers/remove_active_job_execute_callback_spec.rb' +- './spec/initializers/rest-client-hostname_override_spec.rb' +- './spec/initializers/secret_token_spec.rb' +- './spec/initializers/session_store_spec.rb' +- './spec/initializers/settings_spec.rb' +- './spec/initializers/sidekiq_spec.rb' +- './spec/initializers/trusted_proxies_spec.rb' +- './spec/initializers/validate_database_config_spec.rb' +- './spec/initializers/validate_puma_spec.rb' +- './spec/lib/api/api_spec.rb' +- './spec/lib/api/base_spec.rb' +- './spec/lib/api/ci/helpers/runner_helpers_spec.rb' +- './spec/lib/api/ci/helpers/runner_spec.rb' +- './spec/lib/api/entities/application_setting_spec.rb' +- './spec/lib/api/entities/basic_project_details_spec.rb' +- './spec/lib/api/entities/branch_spec.rb' +- './spec/lib/api/entities/bulk_imports/entity_failure_spec.rb' +- './spec/lib/api/entities/bulk_imports/entity_spec.rb' +- './spec/lib/api/entities/bulk_imports/export_status_spec.rb' +- './spec/lib/api/entities/bulk_import_spec.rb' +- './spec/lib/api/entities/changelog_spec.rb' +- './spec/lib/api/entities/ci/job_artifact_file_spec.rb' +- './spec/lib/api/entities/ci/job_request/dependency_spec.rb' +- './spec/lib/api/entities/ci/job_request/image_spec.rb' +- './spec/lib/api/entities/ci/job_request/port_spec.rb' +- './spec/lib/api/entities/ci/job_request/service_spec.rb' +- './spec/lib/api/entities/ci/pipeline_spec.rb' +- './spec/lib/api/entities/clusters/agent_authorization_spec.rb' +- './spec/lib/api/entities/clusters/agent_spec.rb' +- './spec/lib/api/entities/deploy_key_spec.rb' +- './spec/lib/api/entities/deploy_keys_project_spec.rb' +- './spec/lib/api/entities/deployment_extended_spec.rb' +- './spec/lib/api/entities/design_management/design_spec.rb' +- './spec/lib/api/entities/group_detail_spec.rb' +- './spec/lib/api/entities/merge_request_approvals_spec.rb' +- './spec/lib/api/entities/merge_request_basic_spec.rb' +- './spec/lib/api/entities/merge_request_changes_spec.rb' +- './spec/lib/api/entities/nuget/dependency_group_spec.rb' +- './spec/lib/api/entities/nuget/dependency_spec.rb' +- './spec/lib/api/entities/nuget/metadatum_spec.rb' +- './spec/lib/api/entities/nuget/package_metadata_catalog_entry_spec.rb' +- './spec/lib/api/entities/nuget/search_result_spec.rb' +- './spec/lib/api/entities/package_spec.rb' +- './spec/lib/api/entities/personal_access_token_spec.rb' +- './spec/lib/api/entities/personal_access_token_with_details_spec.rb' +- './spec/lib/api/entities/plan_limit_spec.rb' +- './spec/lib/api/entities/project_import_failed_relation_spec.rb' +- './spec/lib/api/entities/project_import_status_spec.rb' +- './spec/lib/api/entities/project_spec.rb' +- './spec/lib/api/entities/projects/repository_storage_move_spec.rb' +- './spec/lib/api/entities/projects/topic_spec.rb' +- './spec/lib/api/entities/public_group_details_spec.rb' +- './spec/lib/api/entities/release_spec.rb' +- './spec/lib/api/entities/snippet_spec.rb' +- './spec/lib/api/entities/snippets/repository_storage_move_spec.rb' +- './spec/lib/api/entities/ssh_key_spec.rb' +- './spec/lib/api/entities/user_spec.rb' +- './spec/lib/api/entities/wiki_page_spec.rb' +- './spec/lib/api/every_api_endpoint_spec.rb' +- './spec/lib/api/github/entities_spec.rb' +- './spec/lib/api/helpers/authentication_spec.rb' +- './spec/lib/api/helpers/caching_spec.rb' +- './spec/lib/api/helpers/common_helpers_spec.rb' +- './spec/lib/api/helpers/graphql_helpers_spec.rb' +- './spec/lib/api/helpers/label_helpers_spec.rb' +- './spec/lib/api/helpers/merge_requests_helpers_spec.rb' +- './spec/lib/api/helpers/packages/dependency_proxy_helpers_spec.rb' +- './spec/lib/api/helpers/packages_helpers_spec.rb' +- './spec/lib/api/helpers/packages_manager_clients_helpers_spec.rb' +- './spec/lib/api/helpers/pagination_spec.rb' +- './spec/lib/api/helpers/pagination_strategies_spec.rb' +- './spec/lib/api/helpers/project_stats_refresh_conflicts_helpers_spec.rb' +- './spec/lib/api/helpers/rate_limiter_spec.rb' +- './spec/lib/api/helpers/related_resources_helpers_spec.rb' +- './spec/lib/api/helpers_spec.rb' +- './spec/lib/api/helpers/variables_helpers_spec.rb' +- './spec/lib/api/helpers/version_spec.rb' +- './spec/lib/api/integrations/slack/events/url_verification_spec.rb' +- './spec/lib/api/support/git_access_actor_spec.rb' +- './spec/lib/api/validations/validators/absence_spec.rb' +- './spec/lib/api/validations/validators/array_none_any_spec.rb' +- './spec/lib/api/validations/validators/email_or_email_list_spec.rb' +- './spec/lib/api/validations/validators/file_path_spec.rb' +- './spec/lib/api/validations/validators/git_ref_spec.rb' +- './spec/lib/api/validations/validators/git_sha_spec.rb' +- './spec/lib/api/validations/validators/integer_none_any_spec.rb' +- './spec/lib/api/validations/validators/integer_or_custom_value_spec.rb' +- './spec/lib/api/validations/validators/limit_spec.rb' +- './spec/lib/api/validations/validators/project_portable_spec.rb' +- './spec/lib/api/validations/validators/untrusted_regexp_spec.rb' +- './spec/lib/atlassian/jira_connect/client_spec.rb' +- './spec/lib/atlassian/jira_connect/jwt/asymmetric_spec.rb' +- './spec/lib/atlassian/jira_connect/jwt/symmetric_spec.rb' +- './spec/lib/atlassian/jira_connect/serializers/author_entity_spec.rb' +- './spec/lib/atlassian/jira_connect/serializers/base_entity_spec.rb' +- './spec/lib/atlassian/jira_connect/serializers/branch_entity_spec.rb' +- './spec/lib/atlassian/jira_connect/serializers/build_entity_spec.rb' +- './spec/lib/atlassian/jira_connect/serializers/deployment_entity_spec.rb' +- './spec/lib/atlassian/jira_connect/serializers/feature_flag_entity_spec.rb' +- './spec/lib/atlassian/jira_connect/serializers/pull_request_entity_spec.rb' +- './spec/lib/atlassian/jira_connect/serializers/repository_entity_spec.rb' +- './spec/lib/atlassian/jira_connect_spec.rb' +- './spec/lib/atlassian/jira_issue_key_extractor_spec.rb' +- './spec/lib/backup/database_backup_error_spec.rb' +- './spec/lib/backup/database_spec.rb' +- './spec/lib/backup/file_backup_error_spec.rb' +- './spec/lib/backup/files_spec.rb' +- './spec/lib/backup/gitaly_backup_spec.rb' +- './spec/lib/backup/manager_spec.rb' +- './spec/lib/backup/repositories_spec.rb' +- './spec/lib/backup/task_spec.rb' +- './spec/lib/banzai/color_parser_spec.rb' +- './spec/lib/banzai/commit_renderer_spec.rb' +- './spec/lib/banzai/cross_project_reference_spec.rb' +- './spec/lib/banzai/filter/absolute_link_filter_spec.rb' +- './spec/lib/banzai/filter_array_spec.rb' +- './spec/lib/banzai/filter/ascii_doc_post_processing_filter_spec.rb' +- './spec/lib/banzai/filter/ascii_doc_sanitization_filter_spec.rb' +- './spec/lib/banzai/filter/asset_proxy_filter_spec.rb' +- './spec/lib/banzai/filter/audio_link_filter_spec.rb' +- './spec/lib/banzai/filter/autolink_filter_spec.rb' +- './spec/lib/banzai/filter/blockquote_fence_filter_spec.rb' +- './spec/lib/banzai/filter/broadcast_message_placeholders_filter_spec.rb' +- './spec/lib/banzai/filter/broadcast_message_sanitization_filter_spec.rb' +- './spec/lib/banzai/filter/color_filter_spec.rb' +- './spec/lib/banzai/filter/commit_trailers_filter_spec.rb' +- './spec/lib/banzai/filter/custom_emoji_filter_spec.rb' +- './spec/lib/banzai/filter/emoji_filter_spec.rb' +- './spec/lib/banzai/filter/external_link_filter_spec.rb' +- './spec/lib/banzai/filter/footnote_filter_spec.rb' +- './spec/lib/banzai/filter/front_matter_filter_spec.rb' +- './spec/lib/banzai/filter/gollum_tags_filter_spec.rb' +- './spec/lib/banzai/filter/html_entity_filter_spec.rb' +- './spec/lib/banzai/filter/image_lazy_load_filter_spec.rb' +- './spec/lib/banzai/filter/image_link_filter_spec.rb' +- './spec/lib/banzai/filter/inline_alert_metrics_filter_spec.rb' +- './spec/lib/banzai/filter/inline_cluster_metrics_filter_spec.rb' +- './spec/lib/banzai/filter/inline_diff_filter_spec.rb' +- './spec/lib/banzai/filter/inline_grafana_metrics_filter_spec.rb' +- './spec/lib/banzai/filter/inline_metrics_filter_spec.rb' +- './spec/lib/banzai/filter/inline_metrics_redactor_filter_spec.rb' +- './spec/lib/banzai/filter/issuable_reference_expansion_filter_spec.rb' +- './spec/lib/banzai/filter/jira_import/adf_to_commonmark_filter_spec.rb' +- './spec/lib/banzai/filter/kroki_filter_spec.rb' +- './spec/lib/banzai/filter/markdown_filter_spec.rb' +- './spec/lib/banzai/filter/math_filter_spec.rb' +- './spec/lib/banzai/filter/mermaid_filter_spec.rb' +- './spec/lib/banzai/filter/normalize_source_filter_spec.rb' +- './spec/lib/banzai/filter/output_safety_spec.rb' +- './spec/lib/banzai/filter/plantuml_filter_spec.rb' +- './spec/lib/banzai/filter/reference_redactor_filter_spec.rb' +- './spec/lib/banzai/filter/references/abstract_reference_filter_spec.rb' +- './spec/lib/banzai/filter/references/alert_reference_filter_spec.rb' +- './spec/lib/banzai/filter/references/commit_range_reference_filter_spec.rb' +- './spec/lib/banzai/filter/references/commit_reference_filter_spec.rb' +- './spec/lib/banzai/filter/references/design_reference_filter_spec.rb' +- './spec/lib/banzai/filter/references/external_issue_reference_filter_spec.rb' +- './spec/lib/banzai/filter/references/feature_flag_reference_filter_spec.rb' +- './spec/lib/banzai/filter/references/issue_reference_filter_spec.rb' +- './spec/lib/banzai/filter/references/label_reference_filter_spec.rb' +- './spec/lib/banzai/filter/references/merge_request_reference_filter_spec.rb' +- './spec/lib/banzai/filter/references/milestone_reference_filter_spec.rb' +- './spec/lib/banzai/filter/references/project_reference_filter_spec.rb' +- './spec/lib/banzai/filter/references/reference_cache_spec.rb' +- './spec/lib/banzai/filter/references/reference_filter_spec.rb' +- './spec/lib/banzai/filter/references/snippet_reference_filter_spec.rb' +- './spec/lib/banzai/filter/references/user_reference_filter_spec.rb' +- './spec/lib/banzai/filter/repository_link_filter_spec.rb' +- './spec/lib/banzai/filter/sanitization_filter_spec.rb' +- './spec/lib/banzai/filter/spaced_link_filter_spec.rb' +- './spec/lib/banzai/filter/suggestion_filter_spec.rb' +- './spec/lib/banzai/filter/syntax_highlight_filter_spec.rb' +- './spec/lib/banzai/filter/table_of_contents_filter_spec.rb' +- './spec/lib/banzai/filter/table_of_contents_tag_filter_spec.rb' +- './spec/lib/banzai/filter/task_list_filter_spec.rb' +- './spec/lib/banzai/filter/truncate_source_filter_spec.rb' +- './spec/lib/banzai/filter/upload_link_filter_spec.rb' +- './spec/lib/banzai/filter/video_link_filter_spec.rb' +- './spec/lib/banzai/filter/wiki_link_filter_spec.rb' +- './spec/lib/banzai/issuable_extractor_spec.rb' +- './spec/lib/banzai/object_renderer_spec.rb' +- './spec/lib/banzai/pipeline/broadcast_message_pipeline_spec.rb' +- './spec/lib/banzai/pipeline/description_pipeline_spec.rb' +- './spec/lib/banzai/pipeline/email_pipeline_spec.rb' +- './spec/lib/banzai/pipeline/emoji_pipeline_spec.rb' +- './spec/lib/banzai/pipeline/full_pipeline_spec.rb' +- './spec/lib/banzai/pipeline/gfm_pipeline_spec.rb' +- './spec/lib/banzai/pipeline/incident_management/timeline_event_pipeline_spec.rb' +- './spec/lib/banzai/pipeline/jira_import/adf_commonmark_pipeline_spec.rb' +- './spec/lib/banzai/pipeline/plain_markdown_pipeline_spec.rb' +- './spec/lib/banzai/pipeline/post_process_pipeline_spec.rb' +- './spec/lib/banzai/pipeline/pre_process_pipeline_spec.rb' +- './spec/lib/banzai/pipeline_spec.rb' +- './spec/lib/banzai/pipeline/wiki_pipeline_spec.rb' +- './spec/lib/banzai/querying_spec.rb' +- './spec/lib/banzai/reference_parser/alert_parser_spec.rb' +- './spec/lib/banzai/reference_parser/base_parser_spec.rb' +- './spec/lib/banzai/reference_parser/commit_parser_spec.rb' +- './spec/lib/banzai/reference_parser/commit_range_parser_spec.rb' +- './spec/lib/banzai/reference_parser/design_parser_spec.rb' +- './spec/lib/banzai/reference_parser/external_issue_parser_spec.rb' +- './spec/lib/banzai/reference_parser/feature_flag_parser_spec.rb' +- './spec/lib/banzai/reference_parser/issue_parser_spec.rb' +- './spec/lib/banzai/reference_parser/label_parser_spec.rb' +- './spec/lib/banzai/reference_parser/mentioned_group_parser_spec.rb' +- './spec/lib/banzai/reference_parser/mentioned_project_parser_spec.rb' +- './spec/lib/banzai/reference_parser/mentioned_user_parser_spec.rb' +- './spec/lib/banzai/reference_parser/merge_request_parser_spec.rb' +- './spec/lib/banzai/reference_parser/milestone_parser_spec.rb' +- './spec/lib/banzai/reference_parser/project_parser_spec.rb' +- './spec/lib/banzai/reference_parser/snippet_parser_spec.rb' +- './spec/lib/banzai/reference_parser/user_parser_spec.rb' +- './spec/lib/banzai/reference_redactor_spec.rb' +- './spec/lib/banzai/render_context_spec.rb' +- './spec/lib/banzai/renderer_spec.rb' +- './spec/lib/bitbucket/collection_spec.rb' +- './spec/lib/bitbucket/connection_spec.rb' +- './spec/lib/bitbucket/page_spec.rb' +- './spec/lib/bitbucket/paginator_spec.rb' +- './spec/lib/bitbucket/representation/comment_spec.rb' +- './spec/lib/bitbucket/representation/issue_spec.rb' +- './spec/lib/bitbucket/representation/pull_request_comment_spec.rb' +- './spec/lib/bitbucket/representation/pull_request_spec.rb' +- './spec/lib/bitbucket/representation/repo_spec.rb' +- './spec/lib/bitbucket/representation/user_spec.rb' +- './spec/lib/bitbucket_server/client_spec.rb' +- './spec/lib/bitbucket_server/collection_spec.rb' +- './spec/lib/bitbucket_server/connection_spec.rb' +- './spec/lib/bitbucket_server/page_spec.rb' +- './spec/lib/bitbucket_server/paginator_spec.rb' +- './spec/lib/bitbucket_server/representation/activity_spec.rb' +- './spec/lib/bitbucket_server/representation/comment_spec.rb' +- './spec/lib/bitbucket_server/representation/pull_request_comment_spec.rb' +- './spec/lib/bitbucket_server/representation/pull_request_spec.rb' +- './spec/lib/bitbucket_server/representation/repo_spec.rb' +- './spec/lib/bulk_imports/clients/graphql_spec.rb' +- './spec/lib/bulk_imports/clients/http_spec.rb' +- './spec/lib/bulk_imports/common/extractors/graphql_extractor_spec.rb' +- './spec/lib/bulk_imports/common/extractors/json_extractor_spec.rb' +- './spec/lib/bulk_imports/common/extractors/ndjson_extractor_spec.rb' +- './spec/lib/bulk_imports/common/extractors/rest_extractor_spec.rb' +- './spec/lib/bulk_imports/common/graphql/get_members_query_spec.rb' +- './spec/lib/bulk_imports/common/pipelines/badges_pipeline_spec.rb' +- './spec/lib/bulk_imports/common/pipelines/boards_pipeline_spec.rb' +- './spec/lib/bulk_imports/common/pipelines/entity_finisher_spec.rb' +- './spec/lib/bulk_imports/common/pipelines/labels_pipeline_spec.rb' +- './spec/lib/bulk_imports/common/pipelines/lfs_objects_pipeline_spec.rb' +- './spec/lib/bulk_imports/common/pipelines/members_pipeline_spec.rb' +- './spec/lib/bulk_imports/common/pipelines/milestones_pipeline_spec.rb' +- './spec/lib/bulk_imports/common/pipelines/uploads_pipeline_spec.rb' +- './spec/lib/bulk_imports/common/pipelines/wiki_pipeline_spec.rb' +- './spec/lib/bulk_imports/common/rest/get_badges_query_spec.rb' +- './spec/lib/bulk_imports/common/transformers/prohibited_attributes_transformer_spec.rb' +- './spec/lib/bulk_imports/common/transformers/user_reference_transformer_spec.rb' +- './spec/lib/bulk_imports/groups/extractors/subgroups_extractor_spec.rb' +- './spec/lib/bulk_imports/groups/graphql/get_group_query_spec.rb' +- './spec/lib/bulk_imports/groups/graphql/get_projects_query_spec.rb' +- './spec/lib/bulk_imports/groups/loaders/group_loader_spec.rb' +- './spec/lib/bulk_imports/groups/pipelines/group_attributes_pipeline_spec.rb' +- './spec/lib/bulk_imports/groups/pipelines/group_pipeline_spec.rb' +- './spec/lib/bulk_imports/groups/pipelines/namespace_settings_pipeline_spec.rb' +- './spec/lib/bulk_imports/groups/pipelines/project_entities_pipeline_spec.rb' +- './spec/lib/bulk_imports/groups/pipelines/subgroup_entities_pipeline_spec.rb' +- './spec/lib/bulk_imports/groups/stage_spec.rb' +- './spec/lib/bulk_imports/groups/transformers/group_attributes_transformer_spec.rb' +- './spec/lib/bulk_imports/groups/transformers/member_attributes_transformer_spec.rb' +- './spec/lib/bulk_imports/groups/transformers/subgroup_to_entity_transformer_spec.rb' +- './spec/lib/bulk_imports/ndjson_pipeline_spec.rb' +- './spec/lib/bulk_imports/network_error_spec.rb' +- './spec/lib/bulk_imports/pipeline/context_spec.rb' +- './spec/lib/bulk_imports/pipeline/extracted_data_spec.rb' +- './spec/lib/bulk_imports/pipeline/runner_spec.rb' +- './spec/lib/bulk_imports/pipeline_spec.rb' +- './spec/lib/bulk_imports/projects/graphql/get_project_query_spec.rb' +- './spec/lib/bulk_imports/projects/graphql/get_repository_query_spec.rb' +- './spec/lib/bulk_imports/projects/graphql/get_snippet_repository_query_spec.rb' +- './spec/lib/bulk_imports/projects/pipelines/auto_devops_pipeline_spec.rb' +- './spec/lib/bulk_imports/projects/pipelines/ci_pipelines_pipeline_spec.rb' +- './spec/lib/bulk_imports/projects/pipelines/container_expiration_policy_pipeline_spec.rb' +- './spec/lib/bulk_imports/projects/pipelines/design_bundle_pipeline_spec.rb' +- './spec/lib/bulk_imports/projects/pipelines/external_pull_requests_pipeline_spec.rb' +- './spec/lib/bulk_imports/projects/pipelines/issues_pipeline_spec.rb' +- './spec/lib/bulk_imports/projects/pipelines/merge_requests_pipeline_spec.rb' +- './spec/lib/bulk_imports/projects/pipelines/pipeline_schedules_pipeline_spec.rb' +- './spec/lib/bulk_imports/projects/pipelines/project_attributes_pipeline_spec.rb' +- './spec/lib/bulk_imports/projects/pipelines/project_feature_pipeline_spec.rb' +- './spec/lib/bulk_imports/projects/pipelines/project_pipeline_spec.rb' +- './spec/lib/bulk_imports/projects/pipelines/protected_branches_pipeline_spec.rb' +- './spec/lib/bulk_imports/projects/pipelines/releases_pipeline_spec.rb' +- './spec/lib/bulk_imports/projects/pipelines/repository_bundle_pipeline_spec.rb' +- './spec/lib/bulk_imports/projects/pipelines/repository_pipeline_spec.rb' +- './spec/lib/bulk_imports/projects/pipelines/service_desk_setting_pipeline_spec.rb' +- './spec/lib/bulk_imports/projects/pipelines/snippets_pipeline_spec.rb' +- './spec/lib/bulk_imports/projects/pipelines/snippets_repository_pipeline_spec.rb' +- './spec/lib/bulk_imports/projects/stage_spec.rb' +- './spec/lib/bulk_imports/projects/transformers/project_attributes_transformer_spec.rb' +- './spec/lib/bulk_imports/retry_pipeline_error_spec.rb' +- './spec/lib/bulk_imports/users_mapper_spec.rb' +- './spec/lib/constraints/admin_constrainer_spec.rb' +- './spec/lib/constraints/group_url_constrainer_spec.rb' +- './spec/lib/constraints/jira_encoded_url_constrainer_spec.rb' +- './spec/lib/constraints/project_url_constrainer_spec.rb' +- './spec/lib/constraints/user_url_constrainer_spec.rb' +- './spec/lib/container_registry/blob_spec.rb' +- './spec/lib/container_registry/client_spec.rb' +- './spec/lib/container_registry/gitlab_api_client_spec.rb' +- './spec/lib/container_registry/migration_spec.rb' +- './spec/lib/container_registry/path_spec.rb' +- './spec/lib/container_registry/registry_spec.rb' +- './spec/lib/container_registry/tag_spec.rb' +- './spec/lib/csv_builder_spec.rb' +- './spec/lib/csv_builders/stream_spec.rb' +- './spec/lib/declarative_enum_spec.rb' +- './spec/lib/error_tracking/collector/payload_validator_spec.rb' +- './spec/lib/error_tracking/collector/sentry_auth_parser_spec.rb' +- './spec/lib/error_tracking/collector/sentry_request_parser_spec.rb' +- './spec/lib/error_tracking/sentry_client/api_urls_spec.rb' +- './spec/lib/error_tracking/sentry_client/event_spec.rb' +- './spec/lib/error_tracking/sentry_client/issue_link_spec.rb' +- './spec/lib/error_tracking/sentry_client/issue_spec.rb' +- './spec/lib/error_tracking/sentry_client/pagination_parser_spec.rb' +- './spec/lib/error_tracking/sentry_client/projects_spec.rb' +- './spec/lib/error_tracking/sentry_client/repo_spec.rb' +- './spec/lib/error_tracking/sentry_client_spec.rb' +- './spec/lib/error_tracking/stacktrace_builder_spec.rb' +- './spec/lib/event_filter_spec.rb' +- './spec/lib/expand_variables_spec.rb' +- './spec/lib/extracts_path_spec.rb' +- './spec/lib/extracts_ref_spec.rb' +- './spec/lib/feature/definition_spec.rb' +- './spec/lib/feature/gitaly_spec.rb' +- './spec/lib/feature_spec.rb' +- './spec/lib/file_size_validator_spec.rb' +- './spec/lib/forever_spec.rb' +- './spec/lib/generators/gitlab/snowplow_event_definition_generator_spec.rb' +- './spec/lib/generators/gitlab/usage_metric_definition_generator_spec.rb' +- './spec/lib/generators/gitlab/usage_metric_definition/redis_hll_generator_spec.rb' +- './spec/lib/generators/gitlab/usage_metric_generator_spec.rb' +- './spec/lib/generators/model/model_generator_spec.rb' +- './spec/lib/gitaly/server_spec.rb' +- './spec/lib/gitlab/access/branch_protection_spec.rb' +- './spec/lib/gitlab/action_cable/request_store_callbacks_spec.rb' +- './spec/lib/gitlab/alert_management/alert_status_counts_spec.rb' +- './spec/lib/gitlab/alert_management/fingerprint_spec.rb' +- './spec/lib/gitlab/alert_management/payload/base_spec.rb' +- './spec/lib/gitlab/alert_management/payload/generic_spec.rb' +- './spec/lib/gitlab/alert_management/payload/managed_prometheus_spec.rb' +- './spec/lib/gitlab/alert_management/payload/prometheus_spec.rb' +- './spec/lib/gitlab/alert_management/payload_spec.rb' +- './spec/lib/gitlab/allowable_spec.rb' +- './spec/lib/gitlab/analytics/cycle_analytics/aggregated/base_query_builder_spec.rb' +- './spec/lib/gitlab/analytics/cycle_analytics/aggregated/records_fetcher_spec.rb' +- './spec/lib/gitlab/analytics/cycle_analytics/average_spec.rb' +- './spec/lib/gitlab/analytics/cycle_analytics/base_query_builder_spec.rb' +- './spec/lib/gitlab/analytics/cycle_analytics/median_spec.rb' +- './spec/lib/gitlab/analytics/cycle_analytics/records_fetcher_spec.rb' +- './spec/lib/gitlab/analytics/cycle_analytics/sorting_spec.rb' +- './spec/lib/gitlab/analytics/cycle_analytics/stage_events/code_stage_start_spec.rb' +- './spec/lib/gitlab/analytics/cycle_analytics/stage_events/issue_created_spec.rb' +- './spec/lib/gitlab/analytics/cycle_analytics/stage_events/issue_deployed_to_production_spec.rb' +- './spec/lib/gitlab/analytics/cycle_analytics/stage_events/issue_first_mentioned_in_commit_spec.rb' +- './spec/lib/gitlab/analytics/cycle_analytics/stage_events/issue_stage_end_spec.rb' +- './spec/lib/gitlab/analytics/cycle_analytics/stage_events/merge_request_created_spec.rb' +- './spec/lib/gitlab/analytics/cycle_analytics/stage_events/merge_request_first_deployed_to_production_spec.rb' +- './spec/lib/gitlab/analytics/cycle_analytics/stage_events/merge_request_last_build_finished_spec.rb' +- './spec/lib/gitlab/analytics/cycle_analytics/stage_events/merge_request_last_build_started_spec.rb' +- './spec/lib/gitlab/analytics/cycle_analytics/stage_events/merge_request_merged_spec.rb' +- './spec/lib/gitlab/analytics/cycle_analytics/stage_events/plan_stage_start_spec.rb' +- './spec/lib/gitlab/analytics/cycle_analytics/stage_events/stage_event_spec.rb' +- './spec/lib/gitlab/analytics/usage_trends/workers_argument_builder_spec.rb' +- './spec/lib/gitlab/anonymous_session_spec.rb' +- './spec/lib/gitlab/api_authentication/builder_spec.rb' +- './spec/lib/gitlab/api_authentication/sent_through_builder_spec.rb' +- './spec/lib/gitlab/api_authentication/token_locator_spec.rb' +- './spec/lib/gitlab/api_authentication/token_resolver_spec.rb' +- './spec/lib/gitlab/api_authentication/token_type_builder_spec.rb' +- './spec/lib/gitlab/app_json_logger_spec.rb' +- './spec/lib/gitlab/application_context_spec.rb' +- './spec/lib/gitlab/application_rate_limiter/base_strategy_spec.rb' +- './spec/lib/gitlab/application_rate_limiter/increment_per_actioned_resource_spec.rb' +- './spec/lib/gitlab/application_rate_limiter/increment_per_action_spec.rb' +- './spec/lib/gitlab/application_rate_limiter_spec.rb' +- './spec/lib/gitlab/app_logger_spec.rb' +- './spec/lib/gitlab/app_text_logger_spec.rb' +- './spec/lib/gitlab/asciidoc/html5_converter_spec.rb' +- './spec/lib/gitlab/asciidoc/include_processor_spec.rb' +- './spec/lib/gitlab/asciidoc_spec.rb' +- './spec/lib/gitlab/asset_proxy_spec.rb' +- './spec/lib/gitlab/audit/auditor_spec.rb' +- './spec/lib/gitlab/audit/ci_runner_token_author_spec.rb' +- './spec/lib/gitlab/audit/deploy_key_author_spec.rb' +- './spec/lib/gitlab/audit/deploy_token_author_spec.rb' +- './spec/lib/gitlab/audit/null_author_spec.rb' +- './spec/lib/gitlab/audit/null_target_spec.rb' +- './spec/lib/gitlab/audit/target_spec.rb' +- './spec/lib/gitlab/audit/unauthenticated_author_spec.rb' +- './spec/lib/gitlab/auth/activity_spec.rb' +- './spec/lib/gitlab/auth/atlassian/auth_hash_spec.rb' +- './spec/lib/gitlab/auth/atlassian/identity_linker_spec.rb' +- './spec/lib/gitlab/auth/atlassian/user_spec.rb' +- './spec/lib/gitlab/auth/auth_finders_spec.rb' +- './spec/lib/gitlab/auth/blocked_user_tracker_spec.rb' +- './spec/lib/gitlab/auth/crowd/authentication_spec.rb' +- './spec/lib/gitlab/auth/current_user_mode_spec.rb' +- './spec/lib/gitlab/auth/ip_rate_limiter_spec.rb' +- './spec/lib/gitlab/auth/key_status_checker_spec.rb' +- './spec/lib/gitlab/auth/ldap/access_spec.rb' +- './spec/lib/gitlab/auth/ldap/adapter_spec.rb' +- './spec/lib/gitlab/auth/ldap/authentication_spec.rb' +- './spec/lib/gitlab/auth/ldap/auth_hash_spec.rb' +- './spec/lib/gitlab/auth/ldap/config_spec.rb' +- './spec/lib/gitlab/auth/ldap/dn_spec.rb' +- './spec/lib/gitlab/auth/ldap/person_spec.rb' +- './spec/lib/gitlab/auth/ldap/user_spec.rb' +- './spec/lib/gitlab/auth/o_auth/auth_hash_spec.rb' +- './spec/lib/gitlab/auth/o_auth/identity_linker_spec.rb' +- './spec/lib/gitlab/auth/o_auth/provider_spec.rb' +- './spec/lib/gitlab/auth/o_auth/user_spec.rb' +- './spec/lib/gitlab/authorized_keys_spec.rb' +- './spec/lib/gitlab/auth/otp/strategies/devise_spec.rb' +- './spec/lib/gitlab/auth/otp/strategies/forti_authenticator/manual_otp_spec.rb' +- './spec/lib/gitlab/auth/otp/strategies/forti_authenticator/push_otp_spec.rb' +- './spec/lib/gitlab/auth/otp/strategies/forti_token_cloud_spec.rb' +- './spec/lib/gitlab/auth/request_authenticator_spec.rb' +- './spec/lib/gitlab/auth/result_spec.rb' +- './spec/lib/gitlab/auth/saml/auth_hash_spec.rb' +- './spec/lib/gitlab/auth/saml/config_spec.rb' +- './spec/lib/gitlab/auth/saml/identity_linker_spec.rb' +- './spec/lib/gitlab/auth/saml/origin_validator_spec.rb' +- './spec/lib/gitlab/auth/saml/user_spec.rb' +- './spec/lib/gitlab/auth_spec.rb' +- './spec/lib/gitlab/auth/two_factor_auth_verifier_spec.rb' +- './spec/lib/gitlab/auth/u2f_webauthn_converter_spec.rb' +- './spec/lib/gitlab/auth/unique_ips_limiter_spec.rb' +- './spec/lib/gitlab/auth/user_access_denied_reason_spec.rb' +- './spec/lib/gitlab/avatar_cache_spec.rb' +- './spec/lib/gitlab/background_migration/add_primary_email_to_emails_if_user_confirmed_spec.rb' +- './spec/lib/gitlab/background_migration/backfill_ci_queuing_tables_spec.rb' +- './spec/lib/gitlab/background_migration/backfill_draft_status_on_merge_requests_spec.rb' +- './spec/lib/gitlab/background_migration/backfill_draft_status_on_merge_requests_with_corrected_regex_spec.rb' +- './spec/lib/gitlab/background_migration/backfill_group_features_spec.rb' +- './spec/lib/gitlab/background_migration/backfill_imported_issue_search_data_spec.rb' +- './spec/lib/gitlab/background_migration/backfill_integrations_enable_ssl_verification_spec.rb' +- './spec/lib/gitlab/background_migration/backfill_integrations_type_new_spec.rb' +- './spec/lib/gitlab/background_migration/backfill_issue_search_data_spec.rb' +- './spec/lib/gitlab/background_migration/backfill_jira_tracker_deployment_type2_spec.rb' +- './spec/lib/gitlab/background_migration/backfill_member_namespace_for_group_members_spec.rb' +- './spec/lib/gitlab/background_migration/backfill_namespace_id_for_namespace_route_spec.rb' +- './spec/lib/gitlab/background_migration/backfill_namespace_id_for_project_route_spec.rb' +- './spec/lib/gitlab/background_migration/backfill_namespace_id_of_vulnerability_reads_spec.rb' +- './spec/lib/gitlab/background_migration/backfill_namespace_traversal_ids_children_spec.rb' +- './spec/lib/gitlab/background_migration/backfill_namespace_traversal_ids_roots_spec.rb' +- './spec/lib/gitlab/background_migration/backfill_note_discussion_id_spec.rb' +- './spec/lib/gitlab/background_migration/backfill_project_feature_package_registry_access_level_spec.rb' +- './spec/lib/gitlab/background_migration/backfill_project_import_level_spec.rb' +- './spec/lib/gitlab/background_migration/backfill_project_member_namespace_id_spec.rb' +- './spec/lib/gitlab/background_migration/backfill_project_repositories_spec.rb' +- './spec/lib/gitlab/background_migration/backfill_project_settings_spec.rb' +- './spec/lib/gitlab/background_migration/backfill_projects_with_coverage_spec.rb' +- './spec/lib/gitlab/background_migration/backfill_snippet_repositories_spec.rb' +- './spec/lib/gitlab/background_migration/backfill_topics_title_spec.rb' +- './spec/lib/gitlab/background_migration/backfill_upvotes_count_on_issues_spec.rb' +- './spec/lib/gitlab/background_migration/backfill_user_namespace_spec.rb' +- './spec/lib/gitlab/background_migration/backfill_vulnerability_reads_cluster_agent_spec.rb' +- './spec/lib/gitlab/background_migration/backfill_work_item_type_id_for_issues_spec.rb' +- './spec/lib/gitlab/background_migration/base_job_spec.rb' +- './spec/lib/gitlab/background_migration/batched_migration_job_spec.rb' +- './spec/lib/gitlab/background_migration/batching_strategies/backfill_issue_work_item_type_batching_strategy_spec.rb' +- './spec/lib/gitlab/background_migration/batching_strategies/backfill_project_namespace_per_group_batching_strategy_spec.rb' +- './spec/lib/gitlab/background_migration/batching_strategies/backfill_project_statistics_with_container_registry_size_batching_strategy_spec.rb' +- './spec/lib/gitlab/background_migration/batching_strategies/base_strategy_spec.rb' +- './spec/lib/gitlab/background_migration/batching_strategies/dismissed_vulnerabilities_strategy_spec.rb' +- './spec/lib/gitlab/background_migration/batching_strategies/loose_index_scan_batching_strategy_spec.rb' +- './spec/lib/gitlab/background_migration/batching_strategies/primary_key_batching_strategy_spec.rb' +- './spec/lib/gitlab/background_migration/cleanup_draft_data_from_faulty_regex_spec.rb' +- './spec/lib/gitlab/background_migration/cleanup_orphaned_lfs_objects_projects_spec.rb' +- './spec/lib/gitlab/background_migration/cleanup_orphaned_routes_spec.rb' +- './spec/lib/gitlab/background_migration/copy_column_using_background_migration_job_spec.rb' +- './spec/lib/gitlab/background_migration/delete_orphaned_deployments_spec.rb' +- './spec/lib/gitlab/background_migration/destroy_invalid_group_members_spec.rb' +- './spec/lib/gitlab/background_migration/disable_expiration_policies_linked_to_no_container_images_spec.rb' +- './spec/lib/gitlab/background_migration/disable_legacy_open_source_licence_for_recent_public_projects_spec.rb' +- './spec/lib/gitlab/background_migration/disable_legacy_open_source_license_for_inactive_public_projects_spec.rb' +- './spec/lib/gitlab/background_migration/disable_legacy_open_source_license_for_no_issues_no_repo_projects_spec.rb' +- './spec/lib/gitlab/background_migration/disable_legacy_open_source_license_for_one_member_no_repo_projects_spec.rb' +- './spec/lib/gitlab/background_migration/drop_invalid_security_findings_spec.rb' +- './spec/lib/gitlab/background_migration/drop_invalid_vulnerabilities_spec.rb' +- './spec/lib/gitlab/background_migration/encrypt_integration_properties_spec.rb' +- './spec/lib/gitlab/background_migration/encrypt_static_object_token_spec.rb' +- './spec/lib/gitlab/background_migration/expire_o_auth_tokens_spec.rb' +- './spec/lib/gitlab/background_migration/extract_project_topics_into_separate_table_spec.rb' +- './spec/lib/gitlab/background_migration/fix_duplicate_project_name_and_path_spec.rb' +- './spec/lib/gitlab/background_migration/fix_first_mentioned_in_commit_at_spec.rb' +- './spec/lib/gitlab/background_migration/fix_merge_request_diff_commit_users_spec.rb' +- './spec/lib/gitlab/background_migration/fix_vulnerability_occurrences_with_hashes_as_raw_metadata_spec.rb' +- './spec/lib/gitlab/background_migration/job_coordinator_spec.rb' +- './spec/lib/gitlab/background_migration/legacy_upload_mover_spec.rb' +- './spec/lib/gitlab/background_migration/legacy_uploads_migrator_spec.rb' +- './spec/lib/gitlab/background_migration/mailers/unconfirm_mailer_spec.rb' +- './spec/lib/gitlab/background_migration/merge_topics_with_same_name_spec.rb' +- './spec/lib/gitlab/background_migration/migrate_merge_request_diff_commit_users_spec.rb' +- './spec/lib/gitlab/background_migration/migrate_personal_namespace_project_maintainer_to_owner_spec.rb' +- './spec/lib/gitlab/background_migration/migrate_project_taggings_context_from_tags_to_topics_spec.rb' +- './spec/lib/gitlab/background_migration/migrate_shimo_confluence_integration_category_spec.rb' +- './spec/lib/gitlab/background_migration/migrate_u2f_webauthn_spec.rb' +- './spec/lib/gitlab/background_migration/move_container_registry_enabled_to_project_feature_spec.rb' +- './spec/lib/gitlab/background_migration/nullify_orphan_runner_id_on_ci_builds_spec.rb' +- './spec/lib/gitlab/background_migration/populate_container_repository_migration_plan_spec.rb' +- './spec/lib/gitlab/background_migration/populate_namespace_statistics_spec.rb' +- './spec/lib/gitlab/background_migration/populate_operation_visibility_permissions_from_operations_spec.rb' +- './spec/lib/gitlab/background_migration/populate_topics_non_private_projects_count_spec.rb' +- './spec/lib/gitlab/background_migration/populate_topics_total_projects_count_cache_spec.rb' +- './spec/lib/gitlab/background_migration/populate_vulnerability_reads_spec.rb' +- './spec/lib/gitlab/background_migration/project_namespaces/backfill_project_namespaces_spec.rb' +- './spec/lib/gitlab/background_migration/recalculate_vulnerabilities_occurrences_uuid_spec.rb' +- './spec/lib/gitlab/background_migration/remove_all_trace_expiration_dates_spec.rb' +- './spec/lib/gitlab/background_migration/remove_duplicate_vulnerabilities_findings_spec.rb' +- './spec/lib/gitlab/background_migration/remove_occurrence_pipelines_and_duplicate_vulnerabilities_findings_spec.rb' +- './spec/lib/gitlab/background_migration/remove_self_managed_wiki_notes_spec.rb' +- './spec/lib/gitlab/background_migration/remove_vulnerability_finding_links_spec.rb' +- './spec/lib/gitlab/background_migration/reset_duplicate_ci_runners_token_encrypted_values_on_projects_spec.rb' +- './spec/lib/gitlab/background_migration/reset_duplicate_ci_runners_token_values_on_projects_spec.rb' +- './spec/lib/gitlab/background_migration/reset_too_many_tags_skipped_registry_imports_spec.rb' +- './spec/lib/gitlab/background_migration/set_correct_vulnerability_state_spec.rb' +- './spec/lib/gitlab/background_migration/set_legacy_open_source_license_available_for_non_public_projects_spec.rb' +- './spec/lib/gitlab/background_migration_spec.rb' +- './spec/lib/gitlab/background_migration/steal_migrate_merge_request_diff_commit_users_spec.rb' +- './spec/lib/gitlab/background_migration/update_delayed_project_removal_to_null_for_user_namespaces_spec.rb' +- './spec/lib/gitlab/background_migration/update_jira_tracker_data_deployment_type_based_on_url_spec.rb' +- './spec/lib/gitlab/background_migration/update_timelogs_null_spent_at_spec.rb' +- './spec/lib/gitlab/background_migration/update_timelogs_project_id_spec.rb' +- './spec/lib/gitlab/background_migration/update_users_where_two_factor_auth_required_from_group_spec.rb' +- './spec/lib/gitlab/background_task_spec.rb' +- './spec/lib/gitlab/backtrace_cleaner_spec.rb' +- './spec/lib/gitlab/bare_repository_import/importer_spec.rb' +- './spec/lib/gitlab/bare_repository_import/repository_spec.rb' +- './spec/lib/gitlab/batch_pop_queueing_spec.rb' +- './spec/lib/gitlab/batch_worker_context_spec.rb' +- './spec/lib/gitlab/bitbucket_import/importer_spec.rb' +- './spec/lib/gitlab/bitbucket_import/project_creator_spec.rb' +- './spec/lib/gitlab/bitbucket_import/wiki_formatter_spec.rb' +- './spec/lib/gitlab/bitbucket_server_import/importer_spec.rb' +- './spec/lib/gitlab/blame_spec.rb' +- './spec/lib/gitlab/blob_helper_spec.rb' +- './spec/lib/gitlab/branch_push_merge_commit_analyzer_spec.rb' +- './spec/lib/gitlab/buffered_io_spec.rb' +- './spec/lib/gitlab/build_access_spec.rb' +- './spec/lib/gitlab/bullet/exclusions_spec.rb' +- './spec/lib/gitlab/bullet_spec.rb' +- './spec/lib/gitlab/cache/ci/project_pipeline_status_spec.rb' +- './spec/lib/gitlab/cache/helpers_spec.rb' +- './spec/lib/gitlab/cache/import/caching_spec.rb' +- './spec/lib/gitlab/cache/request_cache_spec.rb' +- './spec/lib/gitlab/cache_spec.rb' +- './spec/lib/gitlab/changelog/committer_spec.rb' +- './spec/lib/gitlab/changelog/config_spec.rb' +- './spec/lib/gitlab/changelog/generator_spec.rb' +- './spec/lib/gitlab/changelog/release_spec.rb' +- './spec/lib/gitlab/changes_list_spec.rb' +- './spec/lib/gitlab/chat/command_spec.rb' +- './spec/lib/gitlab/chat_name_token_spec.rb' +- './spec/lib/gitlab/chat/output_spec.rb' +- './spec/lib/gitlab/chat/responder/base_spec.rb' +- './spec/lib/gitlab/chat/responder/mattermost_spec.rb' +- './spec/lib/gitlab/chat/responder/slack_spec.rb' +- './spec/lib/gitlab/chat/responder_spec.rb' +- './spec/lib/gitlab/chat_spec.rb' +- './spec/lib/gitlab/checks/branch_check_spec.rb' +- './spec/lib/gitlab/checks/changes_access_spec.rb' +- './spec/lib/gitlab/checks/container_moved_spec.rb' +- './spec/lib/gitlab/checks/diff_check_spec.rb' +- './spec/lib/gitlab/checks/force_push_spec.rb' +- './spec/lib/gitlab/checks/lfs_check_spec.rb' +- './spec/lib/gitlab/checks/lfs_integrity_spec.rb' +- './spec/lib/gitlab/checks/matching_merge_request_spec.rb' +- './spec/lib/gitlab/checks/project_created_spec.rb' +- './spec/lib/gitlab/checks/push_check_spec.rb' +- './spec/lib/gitlab/checks/push_file_count_check_spec.rb' +- './spec/lib/gitlab/checks/single_change_access_spec.rb' +- './spec/lib/gitlab/checks/snippet_check_spec.rb' +- './spec/lib/gitlab/checks/tag_check_spec.rb' +- './spec/lib/gitlab/checks/timed_logger_spec.rb' +- './spec/lib/gitlab/ci_access_spec.rb' +- './spec/lib/gitlab/ci/ansi2html_spec.rb' +- './spec/lib/gitlab/ci/ansi2json/line_spec.rb' +- './spec/lib/gitlab/ci/ansi2json/parser_spec.rb' +- './spec/lib/gitlab/ci/ansi2json/result_spec.rb' +- './spec/lib/gitlab/ci/ansi2json_spec.rb' +- './spec/lib/gitlab/ci/ansi2json/style_spec.rb' +- './spec/lib/gitlab/ci/artifact_file_reader_spec.rb' +- './spec/lib/gitlab/ci/artifacts/logger_spec.rb' +- './spec/lib/gitlab/ci/artifacts/metrics_spec.rb' +- './spec/lib/gitlab/ci/badge/coverage/metadata_spec.rb' +- './spec/lib/gitlab/ci/badge/coverage/report_spec.rb' +- './spec/lib/gitlab/ci/badge/coverage/template_spec.rb' +- './spec/lib/gitlab/ci/badge/pipeline/metadata_spec.rb' +- './spec/lib/gitlab/ci/badge/pipeline/status_spec.rb' +- './spec/lib/gitlab/ci/badge/pipeline/template_spec.rb' +- './spec/lib/gitlab/ci/badge/release/latest_release_spec.rb' +- './spec/lib/gitlab/ci/badge/release/metadata_spec.rb' +- './spec/lib/gitlab/ci/badge/release/template_spec.rb' +- './spec/lib/gitlab/ci/build/artifacts/adapters/gzip_stream_spec.rb' +- './spec/lib/gitlab/ci/build/artifacts/adapters/raw_stream_spec.rb' +- './spec/lib/gitlab/ci/build/artifacts/adapters/zip_stream_spec.rb' +- './spec/lib/gitlab/ci/build/artifacts/metadata/entry_spec.rb' +- './spec/lib/gitlab/ci/build/artifacts/metadata_spec.rb' +- './spec/lib/gitlab/ci/build/artifacts/path_spec.rb' +- './spec/lib/gitlab/ci/build/auto_retry_spec.rb' +- './spec/lib/gitlab/ci/build/cache_spec.rb' +- './spec/lib/gitlab/ci/build/context/build_spec.rb' +- './spec/lib/gitlab/ci/build/context/global_spec.rb' +- './spec/lib/gitlab/ci/build/credentials/factory_spec.rb' +- './spec/lib/gitlab/ci/build/credentials/registry/dependency_proxy_spec.rb' +- './spec/lib/gitlab/ci/build/credentials/registry/gitlab_registry_spec.rb' +- './spec/lib/gitlab/ci/build/duration_parser_spec.rb' +- './spec/lib/gitlab/ci/build/image_spec.rb' +- './spec/lib/gitlab/ci/build/policy/changes_spec.rb' +- './spec/lib/gitlab/ci/build/policy/kubernetes_spec.rb' +- './spec/lib/gitlab/ci/build/policy/refs_spec.rb' +- './spec/lib/gitlab/ci/build/policy_spec.rb' +- './spec/lib/gitlab/ci/build/policy/variables_spec.rb' +- './spec/lib/gitlab/ci/build/port_spec.rb' +- './spec/lib/gitlab/ci/build/prerequisite/factory_spec.rb' +- './spec/lib/gitlab/ci/build/prerequisite/kubernetes_namespace_spec.rb' +- './spec/lib/gitlab/ci/build/releaser_spec.rb' +- './spec/lib/gitlab/ci/build/rules/rule/clause/changes_spec.rb' +- './spec/lib/gitlab/ci/build/rules/rule/clause/exists_spec.rb' +- './spec/lib/gitlab/ci/build/rules/rule/clause/if_spec.rb' +- './spec/lib/gitlab/ci/build/rules/rule/clause_spec.rb' +- './spec/lib/gitlab/ci/build/rules/rule_spec.rb' +- './spec/lib/gitlab/ci/build/rules_spec.rb' +- './spec/lib/gitlab/ci/build/status/reason_spec.rb' +- './spec/lib/gitlab/ci/build/step_spec.rb' +- './spec/lib/gitlab/ci/charts_spec.rb' +- './spec/lib/gitlab/ci/config/edge_stages_injector_spec.rb' +- './spec/lib/gitlab/ci/config/entry/allow_failure_spec.rb' +- './spec/lib/gitlab/ci/config/entry/artifacts_spec.rb' +- './spec/lib/gitlab/ci/config/entry/bridge_spec.rb' +- './spec/lib/gitlab/ci/config/entry/cache_spec.rb' +- './spec/lib/gitlab/ci/config/entry/caches_spec.rb' +- './spec/lib/gitlab/ci/config/entry/commands_spec.rb' +- './spec/lib/gitlab/ci/config/entry/coverage_spec.rb' +- './spec/lib/gitlab/ci/config/entry/default_spec.rb' +- './spec/lib/gitlab/ci/config/entry/environment_spec.rb' +- './spec/lib/gitlab/ci/config/entry/files_spec.rb' +- './spec/lib/gitlab/ci/config/entry/hidden_spec.rb' +- './spec/lib/gitlab/ci/config/entry/imageable_spec.rb' +- './spec/lib/gitlab/ci/config/entry/image_spec.rb' +- './spec/lib/gitlab/ci/config/entry/include/rules/rule_spec.rb' +- './spec/lib/gitlab/ci/config/entry/include/rules_spec.rb' +- './spec/lib/gitlab/ci/config/entry/include_spec.rb' +- './spec/lib/gitlab/ci/config/entry/inherit/default_spec.rb' +- './spec/lib/gitlab/ci/config/entry/inherit/variables_spec.rb' +- './spec/lib/gitlab/ci/config/entry/job_spec.rb' +- './spec/lib/gitlab/ci/config/entry/jobs_spec.rb' +- './spec/lib/gitlab/ci/config/entry/key_spec.rb' +- './spec/lib/gitlab/ci/config/entry/kubernetes_spec.rb' +- './spec/lib/gitlab/ci/config/entry/need_spec.rb' +- './spec/lib/gitlab/ci/config/entry/needs_spec.rb' +- './spec/lib/gitlab/ci/config/entry/paths_spec.rb' +- './spec/lib/gitlab/ci/config/entry/policy_spec.rb' +- './spec/lib/gitlab/ci/config/entry/port_spec.rb' +- './spec/lib/gitlab/ci/config/entry/ports_spec.rb' +- './spec/lib/gitlab/ci/config/entry/prefix_spec.rb' +- './spec/lib/gitlab/ci/config/entry/processable_spec.rb' +- './spec/lib/gitlab/ci/config/entry/product/matrix_spec.rb' +- './spec/lib/gitlab/ci/config/entry/product/parallel_spec.rb' +- './spec/lib/gitlab/ci/config/entry/product/variables_spec.rb' +- './spec/lib/gitlab/ci/config/entry/pull_policy_spec.rb' +- './spec/lib/gitlab/ci/config/entry/release/assets/link_spec.rb' +- './spec/lib/gitlab/ci/config/entry/release/assets/links_spec.rb' +- './spec/lib/gitlab/ci/config/entry/release/assets_spec.rb' +- './spec/lib/gitlab/ci/config/entry/release_spec.rb' +- './spec/lib/gitlab/ci/config/entry/reports/coverage_report_spec.rb' +- './spec/lib/gitlab/ci/config/entry/reports_spec.rb' +- './spec/lib/gitlab/ci/config/entry/retry_spec.rb' +- './spec/lib/gitlab/ci/config/entry/root_spec.rb' +- './spec/lib/gitlab/ci/config/entry/rules/rule/changes_spec.rb' +- './spec/lib/gitlab/ci/config/entry/rules/rule_spec.rb' +- './spec/lib/gitlab/ci/config/entry/rules_spec.rb' +- './spec/lib/gitlab/ci/config/entry/service_spec.rb' +- './spec/lib/gitlab/ci/config/entry/services_spec.rb' +- './spec/lib/gitlab/ci/config/entry/stage_spec.rb' +- './spec/lib/gitlab/ci/config/entry/stages_spec.rb' +- './spec/lib/gitlab/ci/config/entry/tags_spec.rb' +- './spec/lib/gitlab/ci/config/entry/trigger/forward_spec.rb' +- './spec/lib/gitlab/ci/config/entry/trigger_spec.rb' +- './spec/lib/gitlab/ci/config/entry/variables_spec.rb' +- './spec/lib/gitlab/ci/config/entry/workflow_spec.rb' +- './spec/lib/gitlab/ci/config/extendable/entry_spec.rb' +- './spec/lib/gitlab/ci/config/extendable_spec.rb' +- './spec/lib/gitlab/ci/config/external/context_spec.rb' +- './spec/lib/gitlab/ci/config/external/file/artifact_spec.rb' +- './spec/lib/gitlab/ci/config/external/file/base_spec.rb' +- './spec/lib/gitlab/ci/config/external/file/local_spec.rb' +- './spec/lib/gitlab/ci/config/external/file/project_spec.rb' +- './spec/lib/gitlab/ci/config/external/file/remote_spec.rb' +- './spec/lib/gitlab/ci/config/external/file/template_spec.rb' +- './spec/lib/gitlab/ci/config/external/mapper_spec.rb' +- './spec/lib/gitlab/ci/config/external/processor_spec.rb' +- './spec/lib/gitlab/ci/config/external/rules_spec.rb' +- './spec/lib/gitlab/ci/config/normalizer/factory_spec.rb' +- './spec/lib/gitlab/ci/config/normalizer/matrix_strategy_spec.rb' +- './spec/lib/gitlab/ci/config/normalizer/number_strategy_spec.rb' +- './spec/lib/gitlab/ci/config/normalizer_spec.rb' +- './spec/lib/gitlab/ci/config_spec.rb' +- './spec/lib/gitlab/ci/config/yaml/tags/reference_spec.rb' +- './spec/lib/gitlab/ci/config/yaml/tags/resolver_spec.rb' +- './spec/lib/gitlab/ci/cron_parser_spec.rb' +- './spec/lib/gitlab/ci/jwt_spec.rb' +- './spec/lib/gitlab/ci/jwt_v2_spec.rb' +- './spec/lib/gitlab/ci/lint_spec.rb' +- './spec/lib/gitlab/ci/mask_secret_spec.rb' +- './spec/lib/gitlab/ci/matching/build_matcher_spec.rb' +- './spec/lib/gitlab/ci/matching/runner_matcher_spec.rb' +- './spec/lib/gitlab/ci/parsers/accessibility/pa11y_spec.rb' +- './spec/lib/gitlab/ci/parsers/codequality/code_climate_spec.rb' +- './spec/lib/gitlab/ci/parsers/coverage/cobertura_spec.rb' +- './spec/lib/gitlab/ci/parsers/coverage/sax_document_spec.rb' +- './spec/lib/gitlab/ci/parsers/instrumentation_spec.rb' +- './spec/lib/gitlab/ci/parsers/sbom/cyclonedx_properties_spec.rb' +- './spec/lib/gitlab/ci/parsers/sbom/cyclonedx_spec.rb' +- './spec/lib/gitlab/ci/parsers/sbom/source/dependency_scanning_spec.rb' +- './spec/lib/gitlab/ci/parsers/sbom/validators/cyclonedx_schema_validator_spec.rb' +- './spec/lib/gitlab/ci/parsers/security/common_spec.rb' +- './spec/lib/gitlab/ci/parsers/security/sast_spec.rb' +- './spec/lib/gitlab/ci/parsers/security/secret_detection_spec.rb' +- './spec/lib/gitlab/ci/parsers/security/validators/schema_validator_spec.rb' +- './spec/lib/gitlab/ci/parsers_spec.rb' +- './spec/lib/gitlab/ci/parsers/terraform/tfplan_spec.rb' +- './spec/lib/gitlab/ci/parsers/test/junit_spec.rb' +- './spec/lib/gitlab/ci/pipeline/chain/build/associations_spec.rb' +- './spec/lib/gitlab/ci/pipeline/chain/build_spec.rb' +- './spec/lib/gitlab/ci/pipeline/chain/cancel_pending_pipelines_spec.rb' +- './spec/lib/gitlab/ci/pipeline/chain/command_spec.rb' +- './spec/lib/gitlab/ci/pipeline/chain/config/content_spec.rb' +- './spec/lib/gitlab/ci/pipeline/chain/create_deployments_spec.rb' +- './spec/lib/gitlab/ci/pipeline/chain/create_spec.rb' +- './spec/lib/gitlab/ci/pipeline/chain/ensure_environments_spec.rb' +- './spec/lib/gitlab/ci/pipeline/chain/ensure_resource_groups_spec.rb' +- './spec/lib/gitlab/ci/pipeline/chain/evaluate_workflow_rules_spec.rb' +- './spec/lib/gitlab/ci/pipeline/chain/helpers_spec.rb' +- './spec/lib/gitlab/ci/pipeline/chain/limit/deployments_spec.rb' +- './spec/lib/gitlab/ci/pipeline/chain/limit/rate_limit_spec.rb' +- './spec/lib/gitlab/ci/pipeline/chain/pipeline/process_spec.rb' +- './spec/lib/gitlab/ci/pipeline/chain/populate_spec.rb' +- './spec/lib/gitlab/ci/pipeline/chain/remove_unwanted_chat_jobs_spec.rb' +- './spec/lib/gitlab/ci/pipeline/chain/seed_block_spec.rb' +- './spec/lib/gitlab/ci/pipeline/chain/seed_spec.rb' +- './spec/lib/gitlab/ci/pipeline/chain/sequence_spec.rb' +- './spec/lib/gitlab/ci/pipeline/chain/skip_spec.rb' +- './spec/lib/gitlab/ci/pipeline/chain/template_usage_spec.rb' +- './spec/lib/gitlab/ci/pipeline/chain/validate/abilities_spec.rb' +- './spec/lib/gitlab/ci/pipeline/chain/validate/external_spec.rb' +- './spec/lib/gitlab/ci/pipeline/chain/validate/repository_spec.rb' +- './spec/lib/gitlab/ci/pipeline/duration_spec.rb' +- './spec/lib/gitlab/ci/pipeline/expression/lexeme/and_spec.rb' +- './spec/lib/gitlab/ci/pipeline/expression/lexeme/equals_spec.rb' +- './spec/lib/gitlab/ci/pipeline/expression/lexeme/matches_spec.rb' +- './spec/lib/gitlab/ci/pipeline/expression/lexeme/not_equals_spec.rb' +- './spec/lib/gitlab/ci/pipeline/expression/lexeme/not_matches_spec.rb' +- './spec/lib/gitlab/ci/pipeline/expression/lexeme/null_spec.rb' +- './spec/lib/gitlab/ci/pipeline/expression/lexeme/or_spec.rb' +- './spec/lib/gitlab/ci/pipeline/expression/lexeme/pattern_spec.rb' +- './spec/lib/gitlab/ci/pipeline/expression/lexeme/string_spec.rb' +- './spec/lib/gitlab/ci/pipeline/expression/lexeme/variable_spec.rb' +- './spec/lib/gitlab/ci/pipeline/expression/lexer_spec.rb' +- './spec/lib/gitlab/ci/pipeline/expression/parser_spec.rb' +- './spec/lib/gitlab/ci/pipeline/expression/statement_spec.rb' +- './spec/lib/gitlab/ci/pipeline/expression/token_spec.rb' +- './spec/lib/gitlab/ci/pipeline/logger_spec.rb' +- './spec/lib/gitlab/ci/pipeline/metrics_spec.rb' +- './spec/lib/gitlab/ci/pipeline_object_hierarchy_spec.rb' +- './spec/lib/gitlab/ci/pipeline/preloader_spec.rb' +- './spec/lib/gitlab/ci/pipeline/quota/deployments_spec.rb' +- './spec/lib/gitlab/ci/pipeline/seed/build/cache_spec.rb' +- './spec/lib/gitlab/ci/pipeline/seed/build_spec.rb' +- './spec/lib/gitlab/ci/pipeline/seed/deployment_spec.rb' +- './spec/lib/gitlab/ci/pipeline/seed/environment_spec.rb' +- './spec/lib/gitlab/ci/pipeline/seed/pipeline_spec.rb' +- './spec/lib/gitlab/ci/pipeline/seed/processable/resource_group_spec.rb' +- './spec/lib/gitlab/ci/pipeline/seed/stage_spec.rb' +- './spec/lib/gitlab/ci/reports/accessibility_reports_comparer_spec.rb' +- './spec/lib/gitlab/ci/reports/accessibility_reports_spec.rb' +- './spec/lib/gitlab/ci/reports/codequality_mr_diff_spec.rb' +- './spec/lib/gitlab/ci/reports/codequality_reports_comparer_spec.rb' +- './spec/lib/gitlab/ci/reports/codequality_reports_spec.rb' +- './spec/lib/gitlab/ci/reports/coverage_report_generator_spec.rb' +- './spec/lib/gitlab/ci/reports/coverage_report_spec.rb' +- './spec/lib/gitlab/ci/reports/reports_comparer_spec.rb' +- './spec/lib/gitlab/ci/reports/sbom/component_spec.rb' +- './spec/lib/gitlab/ci/reports/sbom/report_spec.rb' +- './spec/lib/gitlab/ci/reports/sbom/reports_spec.rb' +- './spec/lib/gitlab/ci/reports/sbom/source_spec.rb' +- './spec/lib/gitlab/ci/reports/security/aggregated_report_spec.rb' +- './spec/lib/gitlab/ci/reports/security/finding_key_spec.rb' +- './spec/lib/gitlab/ci/reports/security/finding_signature_spec.rb' +- './spec/lib/gitlab/ci/reports/security/flag_spec.rb' +- './spec/lib/gitlab/ci/reports/security/identifier_spec.rb' +- './spec/lib/gitlab/ci/reports/security/link_spec.rb' +- './spec/lib/gitlab/ci/reports/security/locations/sast_spec.rb' +- './spec/lib/gitlab/ci/reports/security/locations/secret_detection_spec.rb' +- './spec/lib/gitlab/ci/reports/security/report_spec.rb' +- './spec/lib/gitlab/ci/reports/security/reports_spec.rb' +- './spec/lib/gitlab/ci/reports/security/scanned_resource_spec.rb' +- './spec/lib/gitlab/ci/reports/security/scanner_spec.rb' +- './spec/lib/gitlab/ci/reports/security/scan_spec.rb' +- './spec/lib/gitlab/ci/reports/security/vulnerability_reports_comparer_spec.rb' +- './spec/lib/gitlab/ci/reports/terraform_reports_spec.rb' +- './spec/lib/gitlab/ci/reports/test_case_spec.rb' +- './spec/lib/gitlab/ci/reports/test_failure_history_spec.rb' +- './spec/lib/gitlab/ci/reports/test_reports_comparer_spec.rb' +- './spec/lib/gitlab/ci/reports/test_report_spec.rb' +- './spec/lib/gitlab/ci/reports/test_report_summary_spec.rb' +- './spec/lib/gitlab/ci/reports/test_suite_comparer_spec.rb' +- './spec/lib/gitlab/ci/reports/test_suite_spec.rb' +- './spec/lib/gitlab/ci/reports/test_suite_summary_spec.rb' +- './spec/lib/gitlab/ci/runner/backoff_spec.rb' +- './spec/lib/gitlab/ci/runner_instructions_spec.rb' +- './spec/lib/gitlab/ci/runner/metrics_spec.rb' +- './spec/lib/gitlab/ci/runner_releases_spec.rb' +- './spec/lib/gitlab/ci/runner_upgrade_check_spec.rb' +- './spec/lib/gitlab/ci/status/bridge/common_spec.rb' +- './spec/lib/gitlab/ci/status/bridge/factory_spec.rb' +- './spec/lib/gitlab/ci/status/bridge/waiting_for_resource_spec.rb' +- './spec/lib/gitlab/ci/status/build/action_spec.rb' +- './spec/lib/gitlab/ci/status/build/cancelable_spec.rb' +- './spec/lib/gitlab/ci/status/build/canceled_spec.rb' +- './spec/lib/gitlab/ci/status/build/common_spec.rb' +- './spec/lib/gitlab/ci/status/build/created_spec.rb' +- './spec/lib/gitlab/ci/status/build/erased_spec.rb' +- './spec/lib/gitlab/ci/status/build/factory_spec.rb' +- './spec/lib/gitlab/ci/status/build/failed_allowed_spec.rb' +- './spec/lib/gitlab/ci/status/build/failed_spec.rb' +- './spec/lib/gitlab/ci/status/build/failed_unmet_prerequisites_spec.rb' +- './spec/lib/gitlab/ci/status/build/manual_spec.rb' +- './spec/lib/gitlab/ci/status/build/pending_spec.rb' +- './spec/lib/gitlab/ci/status/build/play_spec.rb' +- './spec/lib/gitlab/ci/status/build/preparing_spec.rb' +- './spec/lib/gitlab/ci/status/build/retried_spec.rb' +- './spec/lib/gitlab/ci/status/build/retryable_spec.rb' +- './spec/lib/gitlab/ci/status/build/scheduled_spec.rb' +- './spec/lib/gitlab/ci/status/build/skipped_spec.rb' +- './spec/lib/gitlab/ci/status/build/stop_spec.rb' +- './spec/lib/gitlab/ci/status/build/unschedule_spec.rb' +- './spec/lib/gitlab/ci/status/build/waiting_for_approval_spec.rb' +- './spec/lib/gitlab/ci/status/build/waiting_for_resource_spec.rb' +- './spec/lib/gitlab/ci/status/canceled_spec.rb' +- './spec/lib/gitlab/ci/status/composite_spec.rb' +- './spec/lib/gitlab/ci/status/core_spec.rb' +- './spec/lib/gitlab/ci/status/created_spec.rb' +- './spec/lib/gitlab/ci/status/extended_spec.rb' +- './spec/lib/gitlab/ci/status/external/common_spec.rb' +- './spec/lib/gitlab/ci/status/external/factory_spec.rb' +- './spec/lib/gitlab/ci/status/factory_spec.rb' +- './spec/lib/gitlab/ci/status/failed_spec.rb' +- './spec/lib/gitlab/ci/status/group/common_spec.rb' +- './spec/lib/gitlab/ci/status/group/factory_spec.rb' +- './spec/lib/gitlab/ci/status/manual_spec.rb' +- './spec/lib/gitlab/ci/status/pending_spec.rb' +- './spec/lib/gitlab/ci/status/pipeline/blocked_spec.rb' +- './spec/lib/gitlab/ci/status/pipeline/common_spec.rb' +- './spec/lib/gitlab/ci/status/pipeline/delayed_spec.rb' +- './spec/lib/gitlab/ci/status/pipeline/factory_spec.rb' +- './spec/lib/gitlab/ci/status/preparing_spec.rb' +- './spec/lib/gitlab/ci/status/processable/waiting_for_resource_spec.rb' +- './spec/lib/gitlab/ci/status/running_spec.rb' +- './spec/lib/gitlab/ci/status/scheduled_spec.rb' +- './spec/lib/gitlab/ci/status/skipped_spec.rb' +- './spec/lib/gitlab/ci/status/stage/common_spec.rb' +- './spec/lib/gitlab/ci/status/stage/factory_spec.rb' +- './spec/lib/gitlab/ci/status/stage/play_manual_spec.rb' +- './spec/lib/gitlab/ci/status/success_spec.rb' +- './spec/lib/gitlab/ci/status/success_warning_spec.rb' +- './spec/lib/gitlab/ci/status/waiting_for_resource_spec.rb' +- './spec/lib/gitlab/ci/tags/bulk_insert_spec.rb' +- './spec/lib/gitlab/ci/templates/5_minute_production_app_ci_yaml_spec.rb' +- './spec/lib/gitlab/ci/templates/auto_devops_gitlab_ci_yaml_spec.rb' +- './spec/lib/gitlab/ci/templates/AWS/deploy_ecs_gitlab_ci_yaml_spec.rb' +- './spec/lib/gitlab/ci/templates/flutter_gitlab_ci_yaml_spec.rb' +- './spec/lib/gitlab/ci/templates/Jobs/build_gitlab_ci_yaml_spec.rb' +- './spec/lib/gitlab/ci/templates/Jobs/code_quality_gitlab_ci_yaml_spec.rb' +- './spec/lib/gitlab/ci/templates/Jobs/deploy_gitlab_ci_yaml_spec.rb' +- './spec/lib/gitlab/ci/templates/Jobs/sast_iac_gitlab_ci_yaml_spec.rb' +- './spec/lib/gitlab/ci/templates/Jobs/sast_iac_latest_gitlab_ci_yaml_spec.rb' +- './spec/lib/gitlab/ci/templates/Jobs/test_gitlab_ci_yaml_spec.rb' +- './spec/lib/gitlab/ci/templates/kaniko_gitlab_ci_yaml_spec.rb' +- './spec/lib/gitlab/ci/templates/MATLAB_spec.rb' +- './spec/lib/gitlab/ci/templates/npm_spec.rb' +- './spec/lib/gitlab/ci/templates/templates_spec.rb' +- './spec/lib/gitlab/ci/templates/Terraform/base_gitlab_ci_yaml_spec.rb' +- './spec/lib/gitlab/ci/templates/Terraform/base_latest_gitlab_ci_yaml_spec.rb' +- './spec/lib/gitlab/ci/templates/terraform_gitlab_ci_yaml_spec.rb' +- './spec/lib/gitlab/ci/templates/terraform_latest_gitlab_ci_yaml_spec.rb' +- './spec/lib/gitlab/ci/templates/themekit_gitlab_ci_yaml_spec.rb' +- './spec/lib/gitlab/ci/templates/Verify/load_performance_testing_gitlab_ci_yaml_spec.rb' +- './spec/lib/gitlab/ci/trace/archive_spec.rb' +- './spec/lib/gitlab/ci/trace/backoff_spec.rb' +- './spec/lib/gitlab/ci/trace/checksum_spec.rb' +- './spec/lib/gitlab/ci/trace/chunked_io_spec.rb' +- './spec/lib/gitlab/ci/trace/metrics_spec.rb' +- './spec/lib/gitlab/ci/trace/remote_checksum_spec.rb' +- './spec/lib/gitlab/ci/trace/section_parser_spec.rb' +- './spec/lib/gitlab/ci/trace_spec.rb' +- './spec/lib/gitlab/ci/trace/stream_spec.rb' +- './spec/lib/gitlab/ci/variables/builder/group_spec.rb' +- './spec/lib/gitlab/ci/variables/builder/instance_spec.rb' +- './spec/lib/gitlab/ci/variables/builder/project_spec.rb' +- './spec/lib/gitlab/ci/variables/builder_spec.rb' +- './spec/lib/gitlab/ci/variables/collection/item_spec.rb' +- './spec/lib/gitlab/ci/variables/collection/sort_spec.rb' +- './spec/lib/gitlab/ci/variables/collection_spec.rb' +- './spec/lib/gitlab/ci/variables/helpers_spec.rb' +- './spec/lib/gitlab/ci/yaml_processor/dag_spec.rb' +- './spec/lib/gitlab/ci/yaml_processor/feature_flags_spec.rb' +- './spec/lib/gitlab/ci/yaml_processor/result_spec.rb' +- './spec/lib/gitlab/ci/yaml_processor_spec.rb' +- './spec/lib/gitlab/class_attributes_spec.rb' +- './spec/lib/gitlab/cleanup/orphan_job_artifact_files_batch_spec.rb' +- './spec/lib/gitlab/cleanup/orphan_job_artifact_files_spec.rb' +- './spec/lib/gitlab/cleanup/orphan_lfs_file_references_spec.rb' +- './spec/lib/gitlab/cleanup/project_uploads_spec.rb' +- './spec/lib/gitlab/cleanup/remote_uploads_spec.rb' +- './spec/lib/gitlab/closing_issue_extractor_spec.rb' +- './spec/lib/gitlab/cluster/lifecycle_events_spec.rb' +- './spec/lib/gitlab/cluster/mixins/puma_cluster_spec.rb' +- './spec/lib/gitlab/cluster/puma_worker_killer_observer_spec.rb' +- './spec/lib/gitlab/cluster/rack_timeout_observer_spec.rb' +- './spec/lib/gitlab/code_navigation_path_spec.rb' +- './spec/lib/gitlab/color_schemes_spec.rb' +- './spec/lib/gitlab/color_spec.rb' +- './spec/lib/gitlab/composer/cache_spec.rb' +- './spec/lib/gitlab/composer/version_index_spec.rb' +- './spec/lib/gitlab/conan_token_spec.rb' +- './spec/lib/gitlab/config_checker/external_database_checker_spec.rb' +- './spec/lib/gitlab/config_checker/puma_rugged_checker_spec.rb' +- './spec/lib/gitlab/config/entry/attributable_spec.rb' +- './spec/lib/gitlab/config/entry/boolean_spec.rb' +- './spec/lib/gitlab/config/entry/composable_array_spec.rb' +- './spec/lib/gitlab/config/entry/composable_hash_spec.rb' +- './spec/lib/gitlab/config/entry/configurable_spec.rb' +- './spec/lib/gitlab/config/entry/factory_spec.rb' +- './spec/lib/gitlab/config/entry/simplifiable_spec.rb' +- './spec/lib/gitlab/config/entry/undefined_spec.rb' +- './spec/lib/gitlab/config/entry/unspecified_spec.rb' +- './spec/lib/gitlab/config/entry/validatable_spec.rb' +- './spec/lib/gitlab/config/entry/validators/nested_array_helpers_spec.rb' +- './spec/lib/gitlab/config/entry/validator_spec.rb' +- './spec/lib/gitlab/config/entry/validators_spec.rb' +- './spec/lib/gitlab/config/loader/yaml_spec.rb' +- './spec/lib/gitlab/conflict/file_collection_spec.rb' +- './spec/lib/gitlab/conflict/file_spec.rb' +- './spec/lib/gitlab/console_spec.rb' +- './spec/lib/gitlab/consul/internal_spec.rb' +- './spec/lib/gitlab/container_repository/tags/cache_spec.rb' +- './spec/lib/gitlab/content_security_policy/config_loader_spec.rb' +- './spec/lib/gitlab/contributions_calendar_spec.rb' +- './spec/lib/gitlab/cross_project_access/check_collection_spec.rb' +- './spec/lib/gitlab/cross_project_access/check_info_spec.rb' +- './spec/lib/gitlab/cross_project_access/class_methods_spec.rb' +- './spec/lib/gitlab/cross_project_access_spec.rb' +- './spec/lib/gitlab/crypto_helper_spec.rb' +- './spec/lib/gitlab/current_settings_spec.rb' +- './spec/lib/gitlab/cycle_analytics/permissions_spec.rb' +- './spec/lib/gitlab/cycle_analytics/stage_summary_spec.rb' +- './spec/lib/gitlab/cycle_analytics/summary/value_spec.rb' +- './spec/lib/gitlab/cycle_analytics/updater_spec.rb' +- './spec/lib/gitlab/daemon_spec.rb' +- './spec/lib/gitlab/database/async_indexes/index_creator_spec.rb' +- './spec/lib/gitlab/database/async_indexes/index_destructor_spec.rb' +- './spec/lib/gitlab/database/async_indexes/migration_helpers_spec.rb' +- './spec/lib/gitlab/database/async_indexes/postgres_async_index_spec.rb' +- './spec/lib/gitlab/database/async_indexes_spec.rb' +- './spec/lib/gitlab/database/background_migration/batched_job_spec.rb' +- './spec/lib/gitlab/database/background_migration/batched_job_transition_log_spec.rb' +- './spec/lib/gitlab/database/background_migration/batched_migration_runner_spec.rb' +- './spec/lib/gitlab/database/background_migration/batched_migration_spec.rb' +- './spec/lib/gitlab/database/background_migration/batched_migration_wrapper_spec.rb' +- './spec/lib/gitlab/database/background_migration/batch_metrics_spec.rb' +- './spec/lib/gitlab/database/background_migration/batch_optimizer_spec.rb' +- './spec/lib/gitlab/database/background_migration/health_status/indicators/autovacuum_active_on_table_spec.rb' +- './spec/lib/gitlab/database/background_migration/health_status/indicators/write_ahead_log_spec.rb' +- './spec/lib/gitlab/database/background_migration/health_status_spec.rb' +- './spec/lib/gitlab/database/background_migration_job_spec.rb' +- './spec/lib/gitlab/database/background_migration/prometheus_metrics_spec.rb' +- './spec/lib/gitlab/database/batch_count_spec.rb' +- './spec/lib/gitlab/database/bulk_update_spec.rb' +- './spec/lib/gitlab/database/connection_timer_spec.rb' +- './spec/lib/gitlab/database/consistency_checker_spec.rb' +- './spec/lib/gitlab/database/consistency_spec.rb' +- './spec/lib/gitlab/database/count/exact_count_strategy_spec.rb' +- './spec/lib/gitlab/database/count/reltuples_count_strategy_spec.rb' +- './spec/lib/gitlab/database/count_spec.rb' +- './spec/lib/gitlab/database/count/tablesample_count_strategy_spec.rb' +- './spec/lib/gitlab/database/dynamic_model_helpers_spec.rb' +- './spec/lib/gitlab/database/each_database_spec.rb' +- './spec/lib/gitlab/database/gitlab_schema_spec.rb' +- './spec/lib/gitlab/database/grant_spec.rb' +- './spec/lib/gitlab/database_importers/common_metrics/importer_spec.rb' +- './spec/lib/gitlab/database_importers/common_metrics/prometheus_metric_spec.rb' +- './spec/lib/gitlab/database_importers/instance_administrators/create_group_spec.rb' +- './spec/lib/gitlab/database_importers/self_monitoring/project/create_service_spec.rb' +- './spec/lib/gitlab/database_importers/self_monitoring/project/delete_service_spec.rb' +- './spec/lib/gitlab/database_importers/work_items/base_type_importer_spec.rb' +- './spec/lib/gitlab/database/load_balancing/action_cable_callbacks_spec.rb' +- './spec/lib/gitlab/database/load_balancing/configuration_spec.rb' +- './spec/lib/gitlab/database/load_balancing/connection_proxy_spec.rb' +- './spec/lib/gitlab/database/load_balancing/host_list_spec.rb' +- './spec/lib/gitlab/database/load_balancing/host_spec.rb' +- './spec/lib/gitlab/database/load_balancing/load_balancer_spec.rb' +- './spec/lib/gitlab/database/load_balancing/primary_host_spec.rb' +- './spec/lib/gitlab/database/load_balancing/rack_middleware_spec.rb' +- './spec/lib/gitlab/database/load_balancing/resolver_spec.rb' +- './spec/lib/gitlab/database/load_balancing/service_discovery_spec.rb' +- './spec/lib/gitlab/database/load_balancing/session_spec.rb' +- './spec/lib/gitlab/database/load_balancing/setup_spec.rb' +- './spec/lib/gitlab/database/load_balancing/sidekiq_client_middleware_spec.rb' +- './spec/lib/gitlab/database/load_balancing/sidekiq_server_middleware_spec.rb' +- './spec/lib/gitlab/database/load_balancing_spec.rb' +- './spec/lib/gitlab/database/load_balancing/srv_resolver_spec.rb' +- './spec/lib/gitlab/database/load_balancing/sticking_spec.rb' +- './spec/lib/gitlab/database/load_balancing/transaction_leaking_spec.rb' +- './spec/lib/gitlab/database/lock_writes_manager_spec.rb' +- './spec/lib/gitlab/database/loose_foreign_keys_spec.rb' +- './spec/lib/gitlab/database/migration_helpers/announce_database_spec.rb' +- './spec/lib/gitlab/database/migration_helpers/cascading_namespace_settings_spec.rb' +- './spec/lib/gitlab/database/migration_helpers/loose_foreign_key_helpers_spec.rb' +- './spec/lib/gitlab/database/migration_helpers/restrict_gitlab_schema_spec.rb' +- './spec/lib/gitlab/database/migration_helpers_spec.rb' +- './spec/lib/gitlab/database/migration_helpers/v2_spec.rb' +- './spec/lib/gitlab/database/migrations/background_migration_helpers_spec.rb' +- './spec/lib/gitlab/database/migrations/base_background_runner_spec.rb' +- './spec/lib/gitlab/database/migrations/batched_background_migration_helpers_spec.rb' +- './spec/lib/gitlab/database/migrations/instrumentation_spec.rb' +- './spec/lib/gitlab/database/migrations/lock_retry_mixin_spec.rb' +- './spec/lib/gitlab/database/migrations/observers/query_details_spec.rb' +- './spec/lib/gitlab/database/migrations/observers/query_log_spec.rb' +- './spec/lib/gitlab/database/migrations/observers/query_statistics_spec.rb' +- './spec/lib/gitlab/database/migrations/observers/total_database_size_change_spec.rb' +- './spec/lib/gitlab/database/migrations/observers/transaction_duration_spec.rb' +- './spec/lib/gitlab/database/migration_spec.rb' +- './spec/lib/gitlab/database/migrations/reestablished_connection_stack_spec.rb' +- './spec/lib/gitlab/database/migrations/runner_spec.rb' +- './spec/lib/gitlab/database/migrations/test_background_runner_spec.rb' +- './spec/lib/gitlab/database/migrations/test_batched_background_runner_spec.rb' +- './spec/lib/gitlab/database/no_cross_db_foreign_keys_spec.rb' +- './spec/lib/gitlab/database/obsolete_ignored_columns_spec.rb' +- './spec/lib/gitlab/database/partitioning/detached_partition_dropper_spec.rb' +- './spec/lib/gitlab/database/partitioning_migration_helpers/backfill_partitioned_table_spec.rb' +- './spec/lib/gitlab/database/partitioning_migration_helpers/foreign_key_helpers_spec.rb' +- './spec/lib/gitlab/database/partitioning_migration_helpers/index_helpers_spec.rb' +- './spec/lib/gitlab/database/partitioning_migration_helpers/table_management_helpers_spec.rb' +- './spec/lib/gitlab/database/partitioning/monthly_strategy_spec.rb' +- './spec/lib/gitlab/database/partitioning/partition_manager_spec.rb' +- './spec/lib/gitlab/database/partitioning/partition_monitoring_spec.rb' +- './spec/lib/gitlab/database/partitioning/replace_table_spec.rb' +- './spec/lib/gitlab/database/partitioning/single_numeric_list_partition_spec.rb' +- './spec/lib/gitlab/database/partitioning/sliding_list_strategy_spec.rb' +- './spec/lib/gitlab/database/partitioning_spec.rb' +- './spec/lib/gitlab/database/partitioning/time_partition_spec.rb' +- './spec/lib/gitlab/database/pg_class_spec.rb' +- './spec/lib/gitlab/database/postgres_autovacuum_activity_spec.rb' +- './spec/lib/gitlab/database/postgres_foreign_key_spec.rb' +- './spec/lib/gitlab/database/postgres_hll/batch_distinct_counter_spec.rb' +- './spec/lib/gitlab/database/postgres_hll/buckets_spec.rb' +- './spec/lib/gitlab/database/postgres_index_bloat_estimate_spec.rb' +- './spec/lib/gitlab/database/postgres_index_spec.rb' +- './spec/lib/gitlab/database/postgres_partitioned_table_spec.rb' +- './spec/lib/gitlab/database/postgres_partition_spec.rb' +- './spec/lib/gitlab/database/postgresql_adapter/dump_schema_versions_mixin_spec.rb' +- './spec/lib/gitlab/database/postgresql_adapter/empty_query_ping_spec.rb' +- './spec/lib/gitlab/database/postgresql_adapter/force_disconnectable_mixin_spec.rb' +- './spec/lib/gitlab/database/postgresql_adapter/type_map_cache_spec.rb' +- './spec/lib/gitlab/database/postgresql_database_tasks/load_schema_versions_mixin_spec.rb' +- './spec/lib/gitlab/database/query_analyzers/gitlab_schemas_metrics_spec.rb' +- './spec/lib/gitlab/database/query_analyzers/gitlab_schemas_validate_connection_spec.rb' +- './spec/lib/gitlab/database/query_analyzer_spec.rb' +- './spec/lib/gitlab/database/query_analyzers/prevent_cross_database_modification_spec.rb' +- './spec/lib/gitlab/database/query_analyzers/restrict_allowed_schemas_spec.rb' +- './spec/lib/gitlab/database/reflection_spec.rb' +- './spec/lib/gitlab/database/reindexing/coordinator_spec.rb' +- './spec/lib/gitlab/database/reindexing/grafana_notifier_spec.rb' +- './spec/lib/gitlab/database/reindexing/index_selection_spec.rb' +- './spec/lib/gitlab/database/reindexing/reindex_action_spec.rb' +- './spec/lib/gitlab/database/reindexing/reindex_concurrently_spec.rb' +- './spec/lib/gitlab/database/reindexing_spec.rb' +- './spec/lib/gitlab/database/rename_reserved_paths_migration/v1/rename_base_spec.rb' +- './spec/lib/gitlab/database/rename_reserved_paths_migration/v1/rename_namespaces_spec.rb' +- './spec/lib/gitlab/database/rename_reserved_paths_migration/v1/rename_projects_spec.rb' +- './spec/lib/gitlab/database/rename_reserved_paths_migration/v1_spec.rb' +- './spec/lib/gitlab/database/schema_cache_with_renamed_table_spec.rb' +- './spec/lib/gitlab/database/schema_cleaner_spec.rb' +- './spec/lib/gitlab/database/schema_migrations/context_spec.rb' +- './spec/lib/gitlab/database/schema_migrations/migrations_spec.rb' +- './spec/lib/gitlab/database/sha_attribute_spec.rb' +- './spec/lib/gitlab/database/shared_model_spec.rb' +- './spec/lib/gitlab/database/similarity_score_spec.rb' +- './spec/lib/gitlab/database_spec.rb' +- './spec/lib/gitlab/database/transaction/context_spec.rb' +- './spec/lib/gitlab/database/transaction/observer_spec.rb' +- './spec/lib/gitlab/database/type/color_spec.rb' +- './spec/lib/gitlab/database/type/json_pg_safe_spec.rb' +- './spec/lib/gitlab/database/unidirectional_copy_trigger_spec.rb' +- './spec/lib/gitlab/database/with_lock_retries_outside_transaction_spec.rb' +- './spec/lib/gitlab/database/with_lock_retries_spec.rb' +- './spec/lib/gitlab/data_builder/alert_spec.rb' +- './spec/lib/gitlab/data_builder/archive_trace_spec.rb' +- './spec/lib/gitlab/data_builder/build_spec.rb' +- './spec/lib/gitlab/data_builder/deployment_spec.rb' +- './spec/lib/gitlab/data_builder/feature_flag_spec.rb' +- './spec/lib/gitlab/data_builder/issuable_spec.rb' +- './spec/lib/gitlab/data_builder/note_spec.rb' +- './spec/lib/gitlab/data_builder/pipeline_spec.rb' +- './spec/lib/gitlab/data_builder/push_spec.rb' +- './spec/lib/gitlab/data_builder/wiki_page_spec.rb' +- './spec/lib/gitlab/default_branch_spec.rb' +- './spec/lib/gitlab/dependency_linker/base_linker_spec.rb' +- './spec/lib/gitlab/dependency_linker/cargo_toml_linker_spec.rb' +- './spec/lib/gitlab/dependency_linker/cartfile_linker_spec.rb' +- './spec/lib/gitlab/dependency_linker/composer_json_linker_spec.rb' +- './spec/lib/gitlab/dependency_linker/gemfile_linker_spec.rb' +- './spec/lib/gitlab/dependency_linker/gemspec_linker_spec.rb' +- './spec/lib/gitlab/dependency_linker/godeps_json_linker_spec.rb' +- './spec/lib/gitlab/dependency_linker/go_mod_linker_spec.rb' +- './spec/lib/gitlab/dependency_linker/go_sum_linker_spec.rb' +- './spec/lib/gitlab/dependency_linker/package_json_linker_spec.rb' +- './spec/lib/gitlab/dependency_linker/parser/gemfile_spec.rb' +- './spec/lib/gitlab/dependency_linker/podfile_linker_spec.rb' +- './spec/lib/gitlab/dependency_linker/podspec_json_linker_spec.rb' +- './spec/lib/gitlab/dependency_linker/podspec_linker_spec.rb' +- './spec/lib/gitlab/dependency_linker/requirements_txt_linker_spec.rb' +- './spec/lib/gitlab/dependency_linker_spec.rb' +- './spec/lib/gitlab/deploy_key_access_spec.rb' +- './spec/lib/gitlab/diff/char_diff_spec.rb' +- './spec/lib/gitlab/diff/diff_refs_spec.rb' +- './spec/lib/gitlab/diff/file_collection/base_spec.rb' +- './spec/lib/gitlab/diff/file_collection/commit_spec.rb' +- './spec/lib/gitlab/diff/file_collection/compare_spec.rb' +- './spec/lib/gitlab/diff/file_collection/merge_request_diff_base_spec.rb' +- './spec/lib/gitlab/diff/file_collection/merge_request_diff_batch_spec.rb' +- './spec/lib/gitlab/diff/file_collection/merge_request_diff_spec.rb' +- './spec/lib/gitlab/diff/file_collection_sorter_spec.rb' +- './spec/lib/gitlab/diff/file_spec.rb' +- './spec/lib/gitlab/diff/formatters/image_formatter_spec.rb' +- './spec/lib/gitlab/diff/formatters/text_formatter_spec.rb' +- './spec/lib/gitlab/diff/highlight_cache_spec.rb' +- './spec/lib/gitlab/diff/highlight_spec.rb' +- './spec/lib/gitlab/diff/inline_diff_markdown_marker_spec.rb' +- './spec/lib/gitlab/diff/inline_diff_marker_spec.rb' +- './spec/lib/gitlab/diff/inline_diff_spec.rb' +- './spec/lib/gitlab/diff/line_mapper_spec.rb' +- './spec/lib/gitlab/diff/line_spec.rb' +- './spec/lib/gitlab/diff/lines_unfolder_spec.rb' +- './spec/lib/gitlab/diff/pair_selector_spec.rb' +- './spec/lib/gitlab/diff/parallel_diff_spec.rb' +- './spec/lib/gitlab/diff/parser_spec.rb' +- './spec/lib/gitlab/diff/position_collection_spec.rb' +- './spec/lib/gitlab/diff/position_spec.rb' +- './spec/lib/gitlab/diff/position_tracer/image_strategy_spec.rb' +- './spec/lib/gitlab/diff/position_tracer/line_strategy_spec.rb' +- './spec/lib/gitlab/diff/position_tracer_spec.rb' +- './spec/lib/gitlab/diff/rendered/notebook/diff_file_helper_spec.rb' +- './spec/lib/gitlab/diff/rendered/notebook/diff_file_spec.rb' +- './spec/lib/gitlab/diff/stats_cache_spec.rb' +- './spec/lib/gitlab/diff/suggestion_diff_spec.rb' +- './spec/lib/gitlab/diff/suggestions_parser_spec.rb' +- './spec/lib/gitlab/diff/suggestion_spec.rb' +- './spec/lib/gitlab/discussions_diff/file_collection_spec.rb' +- './spec/lib/gitlab/discussions_diff/highlight_cache_spec.rb' +- './spec/lib/gitlab/doctor/secrets_spec.rb' +- './spec/lib/gitlab/doorkeeper_secret_storing/pbkdf2_sha512_spec.rb' +- './spec/lib/gitlab_edition_spec.rb' +- './spec/lib/gitlab/email/attachment_uploader_spec.rb' +- './spec/lib/gitlab/email/failure_handler_spec.rb' +- './spec/lib/gitlab/email/handler/create_issue_handler_spec.rb' +- './spec/lib/gitlab/email/handler/create_merge_request_handler_spec.rb' +- './spec/lib/gitlab/email/handler/create_note_handler_spec.rb' +- './spec/lib/gitlab/email/handler/create_note_on_issuable_handler_spec.rb' +- './spec/lib/gitlab/email/handler/service_desk_handler_spec.rb' +- './spec/lib/gitlab/email/handler_spec.rb' +- './spec/lib/gitlab/email/handler/unsubscribe_handler_spec.rb' +- './spec/lib/gitlab/email/hook/additional_headers_interceptor_spec.rb' +- './spec/lib/gitlab/email/hook/delivery_metrics_observer_spec.rb' +- './spec/lib/gitlab/email/hook/disable_email_interceptor_spec.rb' +- './spec/lib/gitlab/email/hook/smime_signature_interceptor_spec.rb' +- './spec/lib/gitlab/email/hook/validate_addresses_interceptor_spec.rb' +- './spec/lib/gitlab/email/message/build_ios_app_guide_spec.rb' +- './spec/lib/gitlab/email/message/in_product_marketing/admin_verify_spec.rb' +- './spec/lib/gitlab/email/message/in_product_marketing/base_spec.rb' +- './spec/lib/gitlab/email/message/in_product_marketing/create_spec.rb' +- './spec/lib/gitlab/email/message/in_product_marketing/helper_spec.rb' +- './spec/lib/gitlab/email/message/in_product_marketing_spec.rb' +- './spec/lib/gitlab/email/message/in_product_marketing/team_short_spec.rb' +- './spec/lib/gitlab/email/message/in_product_marketing/team_spec.rb' +- './spec/lib/gitlab/email/message/in_product_marketing/trial_short_spec.rb' +- './spec/lib/gitlab/email/message/in_product_marketing/trial_spec.rb' +- './spec/lib/gitlab/email/message/in_product_marketing/verify_spec.rb' +- './spec/lib/gitlab/email/message/repository_push_spec.rb' +- './spec/lib/gitlab/email/receiver_spec.rb' +- './spec/lib/gitlab/email/reply_parser_spec.rb' +- './spec/lib/gitlab/email/service_desk_receiver_spec.rb' +- './spec/lib/gitlab/email/smime/signer_spec.rb' +- './spec/lib/gitlab/emoji_spec.rb' +- './spec/lib/gitlab/empty_search_results_spec.rb' +- './spec/lib/gitlab/encoding_helper_spec.rb' +- './spec/lib/gitlab/encrypted_configuration_spec.rb' +- './spec/lib/gitlab/endpoint_attributes_spec.rb' +- './spec/lib/gitlab/error_tracking/context_payload_generator_spec.rb' +- './spec/lib/gitlab/error_tracking/error_repository/open_api_strategy_spec.rb' +- './spec/lib/gitlab/error_tracking/log_formatter_spec.rb' +- './spec/lib/gitlab/error_tracking/logger_spec.rb' +- './spec/lib/gitlab/error_tracking/processor/context_payload_processor_spec.rb' +- './spec/lib/gitlab/error_tracking/processor/grpc_error_processor_spec.rb' +- './spec/lib/gitlab/error_tracking/processor/sanitize_error_message_processor_spec.rb' +- './spec/lib/gitlab/error_tracking/processor/sanitizer_processor_spec.rb' +- './spec/lib/gitlab/error_tracking/processor/sidekiq_processor_spec.rb' +- './spec/lib/gitlab/error_tracking_spec.rb' +- './spec/lib/gitlab/error_tracking/stack_trace_highlight_decorator_spec.rb' +- './spec/lib/gitlab/etag_caching/middleware_spec.rb' +- './spec/lib/gitlab/etag_caching/router/graphql_spec.rb' +- './spec/lib/gitlab/etag_caching/router/rails_spec.rb' +- './spec/lib/gitlab/etag_caching/router_spec.rb' +- './spec/lib/gitlab/etag_caching/store_spec.rb' +- './spec/lib/gitlab/event_store/event_spec.rb' +- './spec/lib/gitlab/event_store/store_spec.rb' +- './spec/lib/gitlab/exception_log_formatter_spec.rb' +- './spec/lib/gitlab/exceptions_app_spec.rb' +- './spec/lib/gitlab/exclusive_lease_helpers/sleeping_lock_spec.rb' +- './spec/lib/gitlab/exclusive_lease_helpers_spec.rb' +- './spec/lib/gitlab/exclusive_lease_spec.rb' +- './spec/lib/gitlab/experimentation/controller_concern_spec.rb' +- './spec/lib/gitlab/experimentation/experiment_spec.rb' +- './spec/lib/gitlab/experimentation/group_types_spec.rb' +- './spec/lib/gitlab/experimentation_spec.rb' +- './spec/lib/gitlab/experiment/rollout/feature_spec.rb' +- './spec/lib/gitlab/external_authorization/access_spec.rb' +- './spec/lib/gitlab/external_authorization/cache_spec.rb' +- './spec/lib/gitlab/external_authorization/client_spec.rb' +- './spec/lib/gitlab/external_authorization/logger_spec.rb' +- './spec/lib/gitlab/external_authorization/response_spec.rb' +- './spec/lib/gitlab/external_authorization_spec.rb' +- './spec/lib/gitlab/fake_application_settings_spec.rb' +- './spec/lib/gitlab/faraday/error_callback_spec.rb' +- './spec/lib/gitlab/favicon_spec.rb' +- './spec/lib/gitlab/feature_categories_spec.rb' +- './spec/lib/gitlab/file_detector_spec.rb' +- './spec/lib/gitlab/file_finder_spec.rb' +- './spec/lib/gitlab/file_hook_spec.rb' +- './spec/lib/gitlab/file_markdown_link_builder_spec.rb' +- './spec/lib/gitlab/file_type_detection_spec.rb' +- './spec/lib/gitlab/fips_spec.rb' +- './spec/lib/gitlab/fogbugz_import/client_spec.rb' +- './spec/lib/gitlab/fogbugz_import/importer_spec.rb' +- './spec/lib/gitlab/fogbugz_import/project_creator_spec.rb' +- './spec/lib/gitlab/form_builders/gitlab_ui_form_builder_spec.rb' +- './spec/lib/gitlab/gfm/reference_rewriter_spec.rb' +- './spec/lib/gitlab/gfm/uploads_rewriter_spec.rb' +- './spec/lib/gitlab/git_access_design_spec.rb' +- './spec/lib/gitlab/git_access_project_spec.rb' +- './spec/lib/gitlab/git_access_snippet_spec.rb' +- './spec/lib/gitlab/git_access_spec.rb' +- './spec/lib/gitlab/git_access_wiki_spec.rb' +- './spec/lib/gitlab/gitaly_client/blob_service_spec.rb' +- './spec/lib/gitlab/gitaly_client/blobs_stitcher_spec.rb' +- './spec/lib/gitlab/gitaly_client/call_spec.rb' +- './spec/lib/gitlab/gitaly_client/cleanup_service_spec.rb' +- './spec/lib/gitlab/gitaly_client/commit_service_spec.rb' +- './spec/lib/gitlab/gitaly_client/conflict_files_stitcher_spec.rb' +- './spec/lib/gitlab/gitaly_client/conflicts_service_spec.rb' +- './spec/lib/gitlab/gitaly_client/diff_spec.rb' +- './spec/lib/gitlab/gitaly_client/diff_stitcher_spec.rb' +- './spec/lib/gitlab/gitaly_client/health_check_service_spec.rb' +- './spec/lib/gitlab/gitaly_client/object_pool_service_spec.rb' +- './spec/lib/gitlab/gitaly_client/operation_service_spec.rb' +- './spec/lib/gitlab/gitaly_client/praefect_info_service_spec.rb' +- './spec/lib/gitlab/gitaly_client/ref_service_spec.rb' +- './spec/lib/gitlab/gitaly_client/remote_service_spec.rb' +- './spec/lib/gitlab/gitaly_client/repository_service_spec.rb' +- './spec/lib/gitlab/gitaly_client/server_service_spec.rb' +- './spec/lib/gitlab/gitaly_client_spec.rb' +- './spec/lib/gitlab/gitaly_client/storage_settings_spec.rb' +- './spec/lib/gitlab/gitaly_client/util_spec.rb' +- './spec/lib/gitlab/gitaly_client/wiki_service_spec.rb' +- './spec/lib/gitlab/git/attributes_at_ref_parser_spec.rb' +- './spec/lib/gitlab/git/attributes_parser_spec.rb' +- './spec/lib/gitlab/git/base_error_spec.rb' +- './spec/lib/gitlab/git/blame_spec.rb' +- './spec/lib/gitlab/git/blob_spec.rb' +- './spec/lib/gitlab/git/branch_spec.rb' +- './spec/lib/gitlab/git/bundle_file_spec.rb' +- './spec/lib/gitlab/git/changed_path_spec.rb' +- './spec/lib/gitlab/git/changes_spec.rb' +- './spec/lib/gitlab/git/commit_spec.rb' +- './spec/lib/gitlab/git/commit_stats_spec.rb' +- './spec/lib/gitlab/git/compare_spec.rb' +- './spec/lib/gitlab/git/conflict/file_spec.rb' +- './spec/lib/gitlab/git/conflict/parser_spec.rb' +- './spec/lib/gitlab/git/conflict/resolver_spec.rb' +- './spec/lib/gitlab/git/cross_repo_comparer_spec.rb' +- './spec/lib/gitlab/git/diff_collection_spec.rb' +- './spec/lib/gitlab/git/diff_spec.rb' +- './spec/lib/gitlab/git/diff_stats_collection_spec.rb' +- './spec/lib/gitlab/git/gitmodules_parser_spec.rb' +- './spec/lib/gitlab/git/hook_env_spec.rb' +- './spec/lib/gitlab/github_import/bulk_importing_spec.rb' +- './spec/lib/gitlab/github_import/client_spec.rb' +- './spec/lib/gitlab/github_import/importer/diff_note_importer_spec.rb' +- './spec/lib/gitlab/github_import/importer/diff_notes_importer_spec.rb' +- './spec/lib/gitlab/github_import/importer/events/base_importer_spec.rb' +- './spec/lib/gitlab/github_import/importer/events/changed_assignee_spec.rb' +- './spec/lib/gitlab/github_import/importer/events/changed_label_spec.rb' +- './spec/lib/gitlab/github_import/importer/events/changed_milestone_spec.rb' +- './spec/lib/gitlab/github_import/importer/events/closed_spec.rb' +- './spec/lib/gitlab/github_import/importer/events/cross_referenced_spec.rb' +- './spec/lib/gitlab/github_import/importer/events/renamed_spec.rb' +- './spec/lib/gitlab/github_import/importer/events/reopened_spec.rb' +- './spec/lib/gitlab/github_import/importer/issue_and_label_links_importer_spec.rb' +- './spec/lib/gitlab/github_import/importer/issue_event_importer_spec.rb' +- './spec/lib/gitlab/github_import/importer/issue_events_importer_spec.rb' +- './spec/lib/gitlab/github_import/importer/issue_importer_spec.rb' +- './spec/lib/gitlab/github_import/importer/issues_importer_spec.rb' +- './spec/lib/gitlab/github_import/importer/label_links_importer_spec.rb' +- './spec/lib/gitlab/github_import/importer/labels_importer_spec.rb' +- './spec/lib/gitlab/github_import/importer/lfs_object_importer_spec.rb' +- './spec/lib/gitlab/github_import/importer/lfs_objects_importer_spec.rb' +- './spec/lib/gitlab/github_import/importer/milestones_importer_spec.rb' +- './spec/lib/gitlab/github_import/importer/note_importer_spec.rb' +- './spec/lib/gitlab/github_import/importer/notes_importer_spec.rb' +- './spec/lib/gitlab/github_import/importer/pull_request_importer_spec.rb' +- './spec/lib/gitlab/github_import/importer/pull_request_merged_by_importer_spec.rb' +- './spec/lib/gitlab/github_import/importer/pull_request_review_importer_spec.rb' +- './spec/lib/gitlab/github_import/importer/pull_requests_importer_spec.rb' +- './spec/lib/gitlab/github_import/importer/pull_requests_merged_by_importer_spec.rb' +- './spec/lib/gitlab/github_import/importer/pull_requests_reviews_importer_spec.rb' +- './spec/lib/gitlab/github_import/importer/releases_importer_spec.rb' +- './spec/lib/gitlab/github_import/importer/repository_importer_spec.rb' +- './spec/lib/gitlab/github_import/importer/single_endpoint_diff_notes_importer_spec.rb' +- './spec/lib/gitlab/github_import/importer/single_endpoint_issue_events_importer_spec.rb' +- './spec/lib/gitlab/github_import/importer/single_endpoint_issue_notes_importer_spec.rb' +- './spec/lib/gitlab/github_import/importer/single_endpoint_merge_request_notes_importer_spec.rb' +- './spec/lib/gitlab/github_import/issuable_finder_spec.rb' +- './spec/lib/gitlab/github_import/label_finder_spec.rb' +- './spec/lib/gitlab/github_import/logger_spec.rb' +- './spec/lib/gitlab/github_import/markdown_text_spec.rb' +- './spec/lib/gitlab/github_import/milestone_finder_spec.rb' +- './spec/lib/gitlab/github_import/object_counter_spec.rb' +- './spec/lib/gitlab/github_import/page_counter_spec.rb' +- './spec/lib/gitlab/github_import/parallel_importer_spec.rb' +- './spec/lib/gitlab/github_import/parallel_scheduling_spec.rb' +- './spec/lib/gitlab/github_import/representation/diff_note_spec.rb' +- './spec/lib/gitlab/github_import/representation/diff_notes/suggestion_formatter_spec.rb' +- './spec/lib/gitlab/github_import/representation/expose_attribute_spec.rb' +- './spec/lib/gitlab/github_import/representation/issue_event_spec.rb' +- './spec/lib/gitlab/github_import/representation/issue_spec.rb' +- './spec/lib/gitlab/github_import/representation/lfs_object_spec.rb' +- './spec/lib/gitlab/github_import/representation/note_spec.rb' +- './spec/lib/gitlab/github_import/representation/pull_request_review_spec.rb' +- './spec/lib/gitlab/github_import/representation/pull_request_spec.rb' +- './spec/lib/gitlab/github_import/representation_spec.rb' +- './spec/lib/gitlab/github_import/representation/to_hash_spec.rb' +- './spec/lib/gitlab/github_import/representation/user_spec.rb' +- './spec/lib/gitlab/github_import/sequential_importer_spec.rb' +- './spec/lib/gitlab/github_import/single_endpoint_notes_importing_spec.rb' +- './spec/lib/gitlab/github_import_spec.rb' +- './spec/lib/gitlab/github_import/user_finder_spec.rb' +- './spec/lib/gitlab/git/keep_around_spec.rb' +- './spec/lib/gitlab/gitlab_import/client_spec.rb' +- './spec/lib/gitlab/gitlab_import/importer_spec.rb' +- './spec/lib/gitlab/gitlab_import/project_creator_spec.rb' +- './spec/lib/gitlab/git/lfs_changes_spec.rb' +- './spec/lib/gitlab/git/lfs_pointer_file_spec.rb' +- './spec/lib/gitlab/git/merge_base_spec.rb' +- './spec/lib/gitlab/git/object_pool_spec.rb' +- './spec/lib/gitlab/git/patches/collection_spec.rb' +- './spec/lib/gitlab/git/patches/commit_patches_spec.rb' +- './spec/lib/gitlab/git/patches/patch_spec.rb' +- './spec/lib/gitlab/git_post_receive_spec.rb' +- './spec/lib/gitlab/git/pre_receive_error_spec.rb' +- './spec/lib/gitlab/git/push_spec.rb' +- './spec/lib/gitlab/git/raw_diff_change_spec.rb' +- './spec/lib/gitlab/git_ref_validator_spec.rb' +- './spec/lib/gitlab/git/remote_mirror_spec.rb' +- './spec/lib/gitlab/git/repository_cleaner_spec.rb' +- './spec/lib/gitlab/git/repository_spec.rb' +- './spec/lib/gitlab/git/rugged_impl/use_rugged_spec.rb' +- './spec/lib/gitlab/git_spec.rb' +- './spec/lib/gitlab/git/tag_spec.rb' +- './spec/lib/gitlab/git/tree_spec.rb' +- './spec/lib/gitlab/git/user_spec.rb' +- './spec/lib/gitlab/git/util_spec.rb' +- './spec/lib/gitlab/git/wiki_page_version_spec.rb' +- './spec/lib/gitlab/git/wiki_spec.rb' +- './spec/lib/gitlab/git/wraps_gitaly_errors_spec.rb' +- './spec/lib/gitlab/global_id/deprecations_spec.rb' +- './spec/lib/gitlab/global_id_spec.rb' +- './spec/lib/gitlab/gl_repository/identifier_spec.rb' +- './spec/lib/gitlab/gl_repository/repo_type_spec.rb' +- './spec/lib/gitlab/gl_repository_spec.rb' +- './spec/lib/gitlab/gon_helper_spec.rb' +- './spec/lib/gitlab/gpg/commit_spec.rb' +- './spec/lib/gitlab/gpg/invalid_gpg_signature_updater_spec.rb' +- './spec/lib/gitlab/gpg_spec.rb' +- './spec/lib/gitlab/grape_logging/formatters/lograge_with_timestamp_spec.rb' +- './spec/lib/gitlab/grape_logging/loggers/cloudflare_logger_spec.rb' +- './spec/lib/gitlab/grape_logging/loggers/exception_logger_spec.rb' +- './spec/lib/gitlab/grape_logging/loggers/perf_logger_spec.rb' +- './spec/lib/gitlab/grape_logging/loggers/queue_duration_logger_spec.rb' +- './spec/lib/gitlab/grape_logging/loggers/response_logger_spec.rb' +- './spec/lib/gitlab/grape_logging/loggers/token_logger_spec.rb' +- './spec/lib/gitlab/grape_logging/loggers/urgency_logger_spec.rb' +- './spec/lib/gitlab/graphql/authorize/authorize_resource_spec.rb' +- './spec/lib/gitlab/graphql/authorize/object_authorization_spec.rb' +- './spec/lib/gitlab/graphql/batch_key_spec.rb' +- './spec/lib/gitlab/graphql/calls_gitaly/field_extension_spec.rb' +- './spec/lib/gitlab/graphql/copy_field_description_spec.rb' +- './spec/lib/gitlab/graphql/deprecation_spec.rb' +- './spec/lib/gitlab/graphql/generic_tracing_spec.rb' +- './spec/lib/gitlab/graphql/known_operations_spec.rb' +- './spec/lib/gitlab/graphql/lazy_spec.rb' +- './spec/lib/gitlab/graphql/loaders/batch_commit_loader_spec.rb' +- './spec/lib/gitlab/graphql/loaders/batch_lfs_oid_loader_spec.rb' +- './spec/lib/gitlab/graphql/loaders/batch_model_loader_spec.rb' +- './spec/lib/gitlab/graphql/loaders/batch_project_statistics_loader_spec.rb' +- './spec/lib/gitlab/graphql/loaders/batch_root_storage_statistics_loader_spec.rb' +- './spec/lib/gitlab/graphql/loaders/issuable_loader_spec.rb' +- './spec/lib/gitlab/graphql_logger_spec.rb' +- './spec/lib/gitlab/graphql/markdown_field_spec.rb' +- './spec/lib/gitlab/graphql/mount_mutation_spec.rb' +- './spec/lib/gitlab/graphql/negatable_arguments_spec.rb' +- './spec/lib/gitlab/graphql/pagination/active_record_array_connection_spec.rb' +- './spec/lib/gitlab/graphql/pagination/array_connection_spec.rb' +- './spec/lib/gitlab/graphql/pagination/connections_spec.rb' +- './spec/lib/gitlab/graphql/pagination/externally_paginated_array_connection_spec.rb' +- './spec/lib/gitlab/graphql/pagination/keyset/connection_spec.rb' +- './spec/lib/gitlab/graphql/pagination/keyset/last_items_spec.rb' +- './spec/lib/gitlab/graphql/pagination/offset_active_record_relation_connection_spec.rb' +- './spec/lib/gitlab/graphql/present/field_extension_spec.rb' +- './spec/lib/gitlab/graphql/queries_spec.rb' +- './spec/lib/gitlab/graphql/query_analyzers/ast/logger_analyzer_spec.rb' +- './spec/lib/gitlab/graphql/query_analyzers/ast/recursion_analyzer_spec.rb' +- './spec/lib/gitlab/graphql/representation/submodule_tree_entry_spec.rb' +- './spec/lib/gitlab/graphql/representation/tree_entry_spec.rb' +- './spec/lib/gitlab/graphql/timeout_spec.rb' +- './spec/lib/gitlab/graphql/tracers/application_context_tracer_spec.rb' +- './spec/lib/gitlab/graphql/tracers/logger_tracer_spec.rb' +- './spec/lib/gitlab/graphql/tracers/metrics_tracer_spec.rb' +- './spec/lib/gitlab/graphql/tracers/timer_tracer_spec.rb' +- './spec/lib/gitlab/graphql/type_name_deprecations_spec.rb' +- './spec/lib/gitlab/graphs/commits_spec.rb' +- './spec/lib/gitlab/group_search_results_spec.rb' +- './spec/lib/gitlab/harbor/client_spec.rb' +- './spec/lib/gitlab/harbor/query_spec.rb' +- './spec/lib/gitlab/hashed_path_spec.rb' +- './spec/lib/gitlab/hashed_storage/migrator_spec.rb' +- './spec/lib/gitlab/health_checks/db_check_spec.rb' +- './spec/lib/gitlab/health_checks/gitaly_check_spec.rb' +- './spec/lib/gitlab/health_checks/master_check_spec.rb' +- './spec/lib/gitlab/health_checks/middleware_spec.rb' +- './spec/lib/gitlab/health_checks/probes/collection_spec.rb' +- './spec/lib/gitlab/health_checks/puma_check_spec.rb' +- './spec/lib/gitlab/health_checks/redis/cache_check_spec.rb' +- './spec/lib/gitlab/health_checks/redis/queues_check_spec.rb' +- './spec/lib/gitlab/health_checks/redis/rate_limiting_check_spec.rb' +- './spec/lib/gitlab/health_checks/redis/redis_check_spec.rb' +- './spec/lib/gitlab/health_checks/redis/sessions_check_spec.rb' +- './spec/lib/gitlab/health_checks/redis/shared_state_check_spec.rb' +- './spec/lib/gitlab/health_checks/redis/trace_chunks_check_spec.rb' +- './spec/lib/gitlab/health_checks/server_spec.rb' +- './spec/lib/gitlab/highlight_spec.rb' +- './spec/lib/gitlab/hook_data/base_builder_spec.rb' +- './spec/lib/gitlab/hook_data/group_builder_spec.rb' +- './spec/lib/gitlab/hook_data/group_member_builder_spec.rb' +- './spec/lib/gitlab/hook_data/issue_builder_spec.rb' +- './spec/lib/gitlab/hook_data/key_builder_spec.rb' +- './spec/lib/gitlab/hook_data/merge_request_builder_spec.rb' +- './spec/lib/gitlab/hook_data/project_builder_spec.rb' +- './spec/lib/gitlab/hook_data/project_member_builder_spec.rb' +- './spec/lib/gitlab/hook_data/release_builder_spec.rb' +- './spec/lib/gitlab/hook_data/subgroup_builder_spec.rb' +- './spec/lib/gitlab/hook_data/user_builder_spec.rb' +- './spec/lib/gitlab/hotlinking_detector_spec.rb' +- './spec/lib/gitlab/http_connection_adapter_spec.rb' +- './spec/lib/gitlab/http_io_spec.rb' +- './spec/lib/gitlab/http_spec.rb' +- './spec/lib/gitlab/i18n/metadata_entry_spec.rb' +- './spec/lib/gitlab/i18n/po_linter_spec.rb' +- './spec/lib/gitlab/i18n_spec.rb' +- './spec/lib/gitlab/i18n/translation_entry_spec.rb' +- './spec/lib/gitlab/identifier_spec.rb' +- './spec/lib/gitlab/import/database_helpers_spec.rb' +- './spec/lib/gitlab/import_export/after_export_strategies/base_after_export_strategy_spec.rb' +- './spec/lib/gitlab/import_export/after_export_strategies/web_upload_strategy_spec.rb' +- './spec/lib/gitlab/import_export/after_export_strategy_builder_spec.rb' +- './spec/lib/gitlab/import_export/attribute_cleaner_spec.rb' +- './spec/lib/gitlab/import_export/attribute_configuration_spec.rb' +- './spec/lib/gitlab/import_export/attributes_finder_spec.rb' +- './spec/lib/gitlab/import_export/attributes_permitter_spec.rb' +- './spec/lib/gitlab/import_export/avatar_restorer_spec.rb' +- './spec/lib/gitlab/import_export/avatar_saver_spec.rb' +- './spec/lib/gitlab/import_export/base/object_builder_spec.rb' +- './spec/lib/gitlab/import_export/base/relation_factory_spec.rb' +- './spec/lib/gitlab/import_export/base/relation_object_saver_spec.rb' +- './spec/lib/gitlab/import_export/command_line_util_spec.rb' +- './spec/lib/gitlab/import_export/config_spec.rb' +- './spec/lib/gitlab/import_export/decompressed_archive_size_validator_spec.rb' +- './spec/lib/gitlab/import_export/design_repo_restorer_spec.rb' +- './spec/lib/gitlab/import_export/design_repo_saver_spec.rb' +- './spec/lib/gitlab/import_export/duration_measuring_spec.rb' +- './spec/lib/gitlab/import_export/error_spec.rb' +- './spec/lib/gitlab/import_export/fast_hash_serializer_spec.rb' +- './spec/lib/gitlab/import_export/file_importer_spec.rb' +- './spec/lib/gitlab/import_export/fork_spec.rb' +- './spec/lib/gitlab/import_export/group/legacy_tree_restorer_spec.rb' +- './spec/lib/gitlab/import_export/group/legacy_tree_saver_spec.rb' +- './spec/lib/gitlab/import_export/group/object_builder_spec.rb' +- './spec/lib/gitlab/import_export/group/relation_factory_spec.rb' +- './spec/lib/gitlab/import_export/group/relation_tree_restorer_spec.rb' +- './spec/lib/gitlab/import_export/group/tree_restorer_spec.rb' +- './spec/lib/gitlab/import_export/group/tree_saver_spec.rb' +- './spec/lib/gitlab/import_export/hash_util_spec.rb' +- './spec/lib/gitlab/import_export/importer_spec.rb' +- './spec/lib/gitlab/import_export/import_export_equivalence_spec.rb' +- './spec/lib/gitlab/import_export/import_export_spec.rb' +- './spec/lib/gitlab/import_export/import_failure_service_spec.rb' +- './spec/lib/gitlab/import_export/import_test_coverage_spec.rb' +- './spec/lib/gitlab/import_export/json/legacy_reader/file_spec.rb' +- './spec/lib/gitlab/import_export/json/legacy_reader/hash_spec.rb' +- './spec/lib/gitlab/import_export/json/legacy_writer_spec.rb' +- './spec/lib/gitlab/import_export/json/ndjson_reader_spec.rb' +- './spec/lib/gitlab/import_export/json/ndjson_writer_spec.rb' +- './spec/lib/gitlab/import_export/json/streaming_serializer_spec.rb' +- './spec/lib/gitlab/import_export/legacy_relation_tree_saver_spec.rb' +- './spec/lib/gitlab/import_export/lfs_restorer_spec.rb' +- './spec/lib/gitlab/import_export/lfs_saver_spec.rb' +- './spec/lib/gitlab/import_export/log_util_spec.rb' +- './spec/lib/gitlab/import_export/members_mapper_spec.rb' +- './spec/lib/gitlab/import_export/merge_request_parser_spec.rb' +- './spec/lib/gitlab/import_export/model_configuration_spec.rb' +- './spec/lib/gitlab/import_export/project/export_task_spec.rb' +- './spec/lib/gitlab/import_export/project/import_task_spec.rb' +- './spec/lib/gitlab/import_export/project/object_builder_spec.rb' +- './spec/lib/gitlab/import_export/project/relation_factory_spec.rb' +- './spec/lib/gitlab/import_export/project/relation_saver_spec.rb' +- './spec/lib/gitlab/import_export/project/relation_tree_restorer_spec.rb' +- './spec/lib/gitlab/import_export/project/sample/date_calculator_spec.rb' +- './spec/lib/gitlab/import_export/project/sample/relation_factory_spec.rb' +- './spec/lib/gitlab/import_export/project/sample/relation_tree_restorer_spec.rb' +- './spec/lib/gitlab/import_export/project/tree_restorer_spec.rb' +- './spec/lib/gitlab/import_export/project/tree_saver_spec.rb' +- './spec/lib/gitlab/import_export/reader_spec.rb' +- './spec/lib/gitlab/import_export/references_configuration_spec.rb' +- './spec/lib/gitlab/import_export/remote_stream_upload_spec.rb' +- './spec/lib/gitlab/import_export/repo_restorer_spec.rb' +- './spec/lib/gitlab/import_export/repo_saver_spec.rb' +- './spec/lib/gitlab/import_export/saver_spec.rb' +- './spec/lib/gitlab/import_export/shared_spec.rb' +- './spec/lib/gitlab/import_export/snippet_repo_restorer_spec.rb' +- './spec/lib/gitlab/import_export/snippet_repo_saver_spec.rb' +- './spec/lib/gitlab/import_export/snippets_repo_restorer_spec.rb' +- './spec/lib/gitlab/import_export/snippets_repo_saver_spec.rb' +- './spec/lib/gitlab/import_export/uploads_manager_spec.rb' +- './spec/lib/gitlab/import_export/uploads_restorer_spec.rb' +- './spec/lib/gitlab/import_export/uploads_saver_spec.rb' +- './spec/lib/gitlab/import_export/version_checker_spec.rb' +- './spec/lib/gitlab/import_export/wiki_repo_saver_spec.rb' +- './spec/lib/gitlab/import_formatter_spec.rb' +- './spec/lib/gitlab/import/import_failure_service_spec.rb' +- './spec/lib/gitlab/import/logger_spec.rb' +- './spec/lib/gitlab/import/merge_request_creator_spec.rb' +- './spec/lib/gitlab/import/merge_request_helpers_spec.rb' +- './spec/lib/gitlab/import/metrics_spec.rb' +- './spec/lib/gitlab/import/set_async_jid_spec.rb' +- './spec/lib/gitlab/import_sources_spec.rb' +- './spec/lib/gitlab/inactive_projects_deletion_warning_tracker_spec.rb' +- './spec/lib/gitlab/incident_management/pager_duty/incident_issue_description_spec.rb' +- './spec/lib/gitlab/incoming_email_spec.rb' +- './spec/lib/gitlab/insecure_key_fingerprint_spec.rb' +- './spec/lib/gitlab/instrumentation_helper_spec.rb' +- './spec/lib/gitlab/instrumentation/rate_limiting_gates_spec.rb' +- './spec/lib/gitlab/instrumentation/redis_base_spec.rb' +- './spec/lib/gitlab/instrumentation/redis_cluster_validator_spec.rb' +- './spec/lib/gitlab/instrumentation/redis_interceptor_spec.rb' +- './spec/lib/gitlab/instrumentation/redis_spec.rb' +- './spec/lib/gitlab/internal_post_receive/response_spec.rb' +- './spec/lib/gitlab/issuable/clone/attributes_rewriter_spec.rb' +- './spec/lib/gitlab/issuable/clone/copy_resource_events_service_spec.rb' +- './spec/lib/gitlab/issuable_metadata_spec.rb' +- './spec/lib/gitlab/issuables_count_for_state_spec.rb' +- './spec/lib/gitlab/issuable_sorter_spec.rb' +- './spec/lib/gitlab/issues/rebalancing/state_spec.rb' +- './spec/lib/gitlab/jira/dvcs_spec.rb' +- './spec/lib/gitlab/jira_import/base_importer_spec.rb' +- './spec/lib/gitlab/jira_import/handle_labels_service_spec.rb' +- './spec/lib/gitlab/jira_import/issue_serializer_spec.rb' +- './spec/lib/gitlab/jira_import/issues_importer_spec.rb' +- './spec/lib/gitlab/jira_import/labels_importer_spec.rb' +- './spec/lib/gitlab/jira_import/metadata_collector_spec.rb' +- './spec/lib/gitlab/jira_import_spec.rb' +- './spec/lib/gitlab/jira/middleware_spec.rb' +- './spec/lib/gitlab/job_waiter_spec.rb' +- './spec/lib/gitlab/json_cache_spec.rb' +- './spec/lib/gitlab/json_logger_spec.rb' +- './spec/lib/gitlab/json_spec.rb' +- './spec/lib/gitlab/jwt_authenticatable_spec.rb' +- './spec/lib/gitlab/jwt_token_spec.rb' +- './spec/lib/gitlab/kas/client_spec.rb' +- './spec/lib/gitlab/kas_spec.rb' +- './spec/lib/gitlab/kroki_spec.rb' +- './spec/lib/gitlab/kubernetes/cluster_role_binding_spec.rb' +- './spec/lib/gitlab/kubernetes/config_maps/aws_node_auth_spec.rb' +- './spec/lib/gitlab/kubernetes/config_map_spec.rb' +- './spec/lib/gitlab/kubernetes/default_namespace_spec.rb' +- './spec/lib/gitlab/kubernetes/deployment_spec.rb' +- './spec/lib/gitlab/kubernetes/generic_secret_spec.rb' +- './spec/lib/gitlab/kubernetes/helm/api_spec.rb' +- './spec/lib/gitlab/kubernetes/helm/pod_spec.rb' +- './spec/lib/gitlab/kubernetes/helm/v2/base_command_spec.rb' +- './spec/lib/gitlab/kubernetes/helm/v2/certificate_spec.rb' +- './spec/lib/gitlab/kubernetes/helm/v2/delete_command_spec.rb' +- './spec/lib/gitlab/kubernetes/helm/v2/init_command_spec.rb' +- './spec/lib/gitlab/kubernetes/helm/v2/install_command_spec.rb' +- './spec/lib/gitlab/kubernetes/helm/v2/patch_command_spec.rb' +- './spec/lib/gitlab/kubernetes/helm/v2/reset_command_spec.rb' +- './spec/lib/gitlab/kubernetes/helm/v3/base_command_spec.rb' +- './spec/lib/gitlab/kubernetes/helm/v3/delete_command_spec.rb' +- './spec/lib/gitlab/kubernetes/helm/v3/install_command_spec.rb' +- './spec/lib/gitlab/kubernetes/helm/v3/patch_command_spec.rb' +- './spec/lib/gitlab/kubernetes/ingress_spec.rb' +- './spec/lib/gitlab/kubernetes/kube_client_spec.rb' +- './spec/lib/gitlab/kubernetes/kubeconfig/entry/cluster_spec.rb' +- './spec/lib/gitlab/kubernetes/kubeconfig/entry/context_spec.rb' +- './spec/lib/gitlab/kubernetes/kubeconfig/entry/user_spec.rb' +- './spec/lib/gitlab/kubernetes/kubeconfig/template_spec.rb' +- './spec/lib/gitlab/kubernetes/kubectl_cmd_spec.rb' +- './spec/lib/gitlab/kubernetes/namespace_spec.rb' +- './spec/lib/gitlab/kubernetes/node_spec.rb' +- './spec/lib/gitlab/kubernetes/pod_cmd_spec.rb' +- './spec/lib/gitlab/kubernetes/role_binding_spec.rb' +- './spec/lib/gitlab/kubernetes/role_spec.rb' +- './spec/lib/gitlab/kubernetes/rollout_instances_spec.rb' +- './spec/lib/gitlab/kubernetes/rollout_status_spec.rb' +- './spec/lib/gitlab/kubernetes/service_account_spec.rb' +- './spec/lib/gitlab/kubernetes/service_account_token_spec.rb' +- './spec/lib/gitlab/kubernetes_spec.rb' +- './spec/lib/gitlab/kubernetes/tls_secret_spec.rb' +- './spec/lib/gitlab/language_data_spec.rb' +- './spec/lib/gitlab/language_detection_spec.rb' +- './spec/lib/gitlab/lazy_spec.rb' +- './spec/lib/gitlab/legacy_github_import/branch_formatter_spec.rb' +- './spec/lib/gitlab/legacy_github_import/client_spec.rb' +- './spec/lib/gitlab/legacy_github_import/comment_formatter_spec.rb' +- './spec/lib/gitlab/legacy_github_import/importer_spec.rb' +- './spec/lib/gitlab/legacy_github_import/issuable_formatter_spec.rb' +- './spec/lib/gitlab/legacy_github_import/issue_formatter_spec.rb' +- './spec/lib/gitlab/legacy_github_import/label_formatter_spec.rb' +- './spec/lib/gitlab/legacy_github_import/milestone_formatter_spec.rb' +- './spec/lib/gitlab/legacy_github_import/project_creator_spec.rb' +- './spec/lib/gitlab/legacy_github_import/pull_request_formatter_spec.rb' +- './spec/lib/gitlab/legacy_github_import/release_formatter_spec.rb' +- './spec/lib/gitlab/legacy_github_import/user_formatter_spec.rb' +- './spec/lib/gitlab/legacy_github_import/wiki_formatter_spec.rb' +- './spec/lib/gitlab/lets_encrypt/challenge_spec.rb' +- './spec/lib/gitlab/lets_encrypt/client_spec.rb' +- './spec/lib/gitlab/lets_encrypt/order_spec.rb' +- './spec/lib/gitlab/lets_encrypt_spec.rb' +- './spec/lib/gitlab/lfs/client_spec.rb' +- './spec/lib/gitlab/lfs_token_spec.rb' +- './spec/lib/gitlab/local_and_remote_storage_migration/artifact_migrater_spec.rb' +- './spec/lib/gitlab/local_and_remote_storage_migration/pages_deployment_migrater_spec.rb' +- './spec/lib/gitlab/logger_spec.rb' +- './spec/lib/gitlab/logging/cloudflare_helper_spec.rb' +- './spec/lib/gitlab/lograge/custom_options_spec.rb' +- './spec/lib/gitlab/log_timestamp_formatter_spec.rb' +- './spec/lib/gitlab/loop_helpers_spec.rb' +- './spec/lib/gitlab/mailgun/webhook_processors/failure_logger_spec.rb' +- './spec/lib/gitlab/mailgun/webhook_processors/member_invites_spec.rb' +- './spec/lib/gitlab/mail_room/authenticator_spec.rb' +- './spec/lib/gitlab/mail_room/mail_room_spec.rb' +- './spec/lib/gitlab/manifest_import/manifest_spec.rb' +- './spec/lib/gitlab/manifest_import/metadata_spec.rb' +- './spec/lib/gitlab/manifest_import/project_creator_spec.rb' +- './spec/lib/gitlab/markdown_cache/active_record/extension_spec.rb' +- './spec/lib/gitlab/markdown_cache/field_data_spec.rb' +- './spec/lib/gitlab/markdown_cache/redis/extension_spec.rb' +- './spec/lib/gitlab/markdown_cache/redis/store_spec.rb' +- './spec/lib/gitlab/marker_range_spec.rb' +- './spec/lib/gitlab/markup_helper_spec.rb' +- './spec/lib/gitlab/memory/instrumentation_spec.rb' +- './spec/lib/gitlab/memory/jemalloc_spec.rb' +- './spec/lib/gitlab/memory/reports_daemon_spec.rb' +- './spec/lib/gitlab/memory/reports/jemalloc_stats_spec.rb' +- './spec/lib/gitlab/memory/watchdog_spec.rb' +- './spec/lib/gitlab/merge_requests/commit_message_generator_spec.rb' +- './spec/lib/gitlab/merge_requests/mergeability/check_result_spec.rb' +- './spec/lib/gitlab/merge_requests/mergeability/redis_interface_spec.rb' +- './spec/lib/gitlab/merge_requests/mergeability/results_store_spec.rb' +- './spec/lib/gitlab/metrics/background_transaction_spec.rb' +- './spec/lib/gitlab/metrics/boot_time_tracker_spec.rb' +- './spec/lib/gitlab/metrics/dashboard/cache_spec.rb' +- './spec/lib/gitlab/metrics/dashboard/defaults_spec.rb' +- './spec/lib/gitlab/metrics/dashboard/finder_spec.rb' +- './spec/lib/gitlab/metrics/dashboard/importer_spec.rb' +- './spec/lib/gitlab/metrics/dashboard/importers/prometheus_metrics_spec.rb' +- './spec/lib/gitlab/metrics/dashboard/processor_spec.rb' +- './spec/lib/gitlab/metrics/dashboard/repo_dashboard_finder_spec.rb' +- './spec/lib/gitlab/metrics/dashboard/service_selector_spec.rb' +- './spec/lib/gitlab/metrics/dashboard/stages/grafana_formatter_spec.rb' +- './spec/lib/gitlab/metrics/dashboard/stages/metric_endpoint_inserter_spec.rb' +- './spec/lib/gitlab/metrics/dashboard/stages/panel_ids_inserter_spec.rb' +- './spec/lib/gitlab/metrics/dashboard/stages/track_panel_type_spec.rb' +- './spec/lib/gitlab/metrics/dashboard/stages/url_validator_spec.rb' +- './spec/lib/gitlab/metrics/dashboard/stages/variable_endpoint_inserter_spec.rb' +- './spec/lib/gitlab/metrics/dashboard/transformers/yml/v1/prometheus_metrics_spec.rb' +- './spec/lib/gitlab/metrics/dashboard/url_spec.rb' +- './spec/lib/gitlab/metrics/dashboard/validator/client_spec.rb' +- './spec/lib/gitlab/metrics/dashboard/validator/custom_formats_spec.rb' +- './spec/lib/gitlab/metrics/dashboard/validator/errors_spec.rb' +- './spec/lib/gitlab/metrics/dashboard/validator/post_schema_validator_spec.rb' +- './spec/lib/gitlab/metrics/dashboard/validator_spec.rb' +- './spec/lib/gitlab/metrics/delta_spec.rb' +- './spec/lib/gitlab/metrics/elasticsearch_rack_middleware_spec.rb' +- './spec/lib/gitlab/metrics/exporter/base_exporter_spec.rb' +- './spec/lib/gitlab/metrics/exporter/gc_request_middleware_spec.rb' +- './spec/lib/gitlab/metrics/exporter/metrics_middleware_spec.rb' +- './spec/lib/gitlab/metrics/memory_spec.rb' +- './spec/lib/gitlab/metrics/method_call_spec.rb' +- './spec/lib/gitlab/metrics/methods_spec.rb' +- './spec/lib/gitlab/metrics/prometheus_spec.rb' +- './spec/lib/gitlab/metrics/rack_middleware_spec.rb' +- './spec/lib/gitlab/metrics/rails_slis_spec.rb' +- './spec/lib/gitlab/metrics/requests_rack_middleware_spec.rb' +- './spec/lib/gitlab/metrics/samplers/action_cable_sampler_spec.rb' +- './spec/lib/gitlab/metrics/samplers/database_sampler_spec.rb' +- './spec/lib/gitlab/metrics/samplers/puma_sampler_spec.rb' +- './spec/lib/gitlab/metrics/samplers/ruby_sampler_spec.rb' +- './spec/lib/gitlab/metrics/samplers/threads_sampler_spec.rb' +- './spec/lib/gitlab/metrics/sli_spec.rb' +- './spec/lib/gitlab/metrics_spec.rb' +- './spec/lib/gitlab/metrics/subscribers/action_cable_spec.rb' +- './spec/lib/gitlab/metrics/subscribers/action_view_spec.rb' +- './spec/lib/gitlab/metrics/subscribers/active_record_spec.rb' +- './spec/lib/gitlab/metrics/subscribers/external_http_spec.rb' +- './spec/lib/gitlab/metrics/subscribers/load_balancing_spec.rb' +- './spec/lib/gitlab/metrics/subscribers/rack_attack_spec.rb' +- './spec/lib/gitlab/metrics/subscribers/rails_cache_spec.rb' +- './spec/lib/gitlab/metrics/system_spec.rb' +- './spec/lib/gitlab/metrics/transaction_spec.rb' +- './spec/lib/gitlab/metrics/web_transaction_spec.rb' +- './spec/lib/gitlab/middleware/basic_health_check_spec.rb' +- './spec/lib/gitlab/middleware/compressed_json_spec.rb' +- './spec/lib/gitlab/middleware/go_spec.rb' +- './spec/lib/gitlab/middleware/handle_ip_spoof_attack_error_spec.rb' +- './spec/lib/gitlab/middleware/handle_malformed_strings_spec.rb' +- './spec/lib/gitlab/middleware/memory_report_spec.rb' +- './spec/lib/gitlab/middleware/multipart/handler_spec.rb' +- './spec/lib/gitlab/middleware/multipart_spec.rb' +- './spec/lib/gitlab/middleware/query_analyzer_spec.rb' +- './spec/lib/gitlab/middleware/rack_multipart_tempfile_factory_spec.rb' +- './spec/lib/gitlab/middleware/rails_queue_duration_spec.rb' +- './spec/lib/gitlab/middleware/read_only_spec.rb' +- './spec/lib/gitlab/middleware/release_env_spec.rb' +- './spec/lib/gitlab/middleware/request_context_spec.rb' +- './spec/lib/gitlab/middleware/same_site_cookies_spec.rb' +- './spec/lib/gitlab/middleware/sidekiq_web_static_spec.rb' +- './spec/lib/gitlab/middleware/speedscope_spec.rb' +- './spec/lib/gitlab/middleware/webhook_recursion_detection_spec.rb' +- './spec/lib/gitlab/monitor/demo_projects_spec.rb' +- './spec/lib/gitlab/multi_collection_paginator_spec.rb' +- './spec/lib/gitlab/multi_destination_logger_spec.rb' +- './spec/lib/gitlab/namespaced_session_store_spec.rb' +- './spec/lib/gitlab/nav/top_nav_menu_item_spec.rb' +- './spec/lib/gitlab/net_http_adapter_spec.rb' +- './spec/lib/gitlab/no_cache_headers_spec.rb' +- './spec/lib/gitlab/noteable_metadata_spec.rb' +- './spec/lib/gitlab/null_request_store_spec.rb' +- './spec/lib/gitlab/object_hierarchy_spec.rb' +- './spec/lib/gitlab/octokit/middleware_spec.rb' +- './spec/lib/gitlab/omniauth_initializer_spec.rb' +- './spec/lib/gitlab/optimistic_locking_spec.rb' +- './spec/lib/gitlab/other_markup_spec.rb' +- './spec/lib/gitlab/otp_key_rotator_spec.rb' +- './spec/lib/gitlab/pages/cache_control_spec.rb' +- './spec/lib/gitlab/pages/deployment_update_spec.rb' +- './spec/lib/gitlab/pages/settings_spec.rb' +- './spec/lib/gitlab/pages_spec.rb' +- './spec/lib/gitlab/pagination/cursor_based_keyset_spec.rb' +- './spec/lib/gitlab/pagination/gitaly_keyset_pager_spec.rb' +- './spec/lib/gitlab/pagination/keyset/column_order_definition_spec.rb' +- './spec/lib/gitlab/pagination/keyset/cursor_based_request_context_spec.rb' +- './spec/lib/gitlab/pagination/keyset/cursor_pager_spec.rb' +- './spec/lib/gitlab/pagination/keyset/in_operator_optimization/array_scope_columns_spec.rb' +- './spec/lib/gitlab/pagination/keyset/in_operator_optimization/column_data_spec.rb' +- './spec/lib/gitlab/pagination/keyset/in_operator_optimization/order_by_column_data_spec.rb' +- './spec/lib/gitlab/pagination/keyset/in_operator_optimization/order_by_columns_spec.rb' +- './spec/lib/gitlab/pagination/keyset/in_operator_optimization/query_builder_spec.rb' +- './spec/lib/gitlab/pagination/keyset/in_operator_optimization/strategies/order_values_loader_strategy_spec.rb' +- './spec/lib/gitlab/pagination/keyset/in_operator_optimization/strategies/record_loader_strategy_spec.rb' +- './spec/lib/gitlab/pagination/keyset/iterator_spec.rb' +- './spec/lib/gitlab/pagination/keyset/order_spec.rb' +- './spec/lib/gitlab/pagination/keyset/pager_spec.rb' +- './spec/lib/gitlab/pagination/keyset/page_spec.rb' +- './spec/lib/gitlab/pagination/keyset/paginator_spec.rb' +- './spec/lib/gitlab/pagination/keyset/request_context_spec.rb' +- './spec/lib/gitlab/pagination/keyset/simple_order_builder_spec.rb' +- './spec/lib/gitlab/pagination/keyset_spec.rb' +- './spec/lib/gitlab/pagination/offset_header_builder_spec.rb' +- './spec/lib/gitlab/pagination/offset_header_builder_with_controller_spec.rb' +- './spec/lib/gitlab/pagination/offset_pagination_spec.rb' +- './spec/lib/gitlab/patch/action_cable_redis_listener_spec.rb' +- './spec/lib/gitlab/patch/database_config_spec.rb' +- './spec/lib/gitlab/patch/draw_route_spec.rb' +- './spec/lib/gitlab/patch/prependable_spec.rb' +- './spec/lib/gitlab/path_regex_spec.rb' +- './spec/lib/gitlab/performance_bar/redis_adapter_when_peek_enabled_spec.rb' +- './spec/lib/gitlab/performance_bar_spec.rb' +- './spec/lib/gitlab/performance_bar/stats_spec.rb' +- './spec/lib/gitlab/performance_bar/with_top_level_warnings_spec.rb' +- './spec/lib/gitlab/phabricator_import/cache/map_spec.rb' +- './spec/lib/gitlab/phabricator_import/conduit/client_spec.rb' +- './spec/lib/gitlab/phabricator_import/conduit/maniphest_spec.rb' +- './spec/lib/gitlab/phabricator_import/conduit/response_spec.rb' +- './spec/lib/gitlab/phabricator_import/conduit/tasks_response_spec.rb' +- './spec/lib/gitlab/phabricator_import/conduit/user_spec.rb' +- './spec/lib/gitlab/phabricator_import/conduit/users_response_spec.rb' +- './spec/lib/gitlab/phabricator_import/importer_spec.rb' +- './spec/lib/gitlab/phabricator_import/issues/importer_spec.rb' +- './spec/lib/gitlab/phabricator_import/issues/task_importer_spec.rb' +- './spec/lib/gitlab/phabricator_import/project_creator_spec.rb' +- './spec/lib/gitlab/phabricator_import/representation/task_spec.rb' +- './spec/lib/gitlab/phabricator_import/representation/user_spec.rb' +- './spec/lib/gitlab/phabricator_import/user_finder_spec.rb' +- './spec/lib/gitlab/phabricator_import/worker_state_spec.rb' +- './spec/lib/gitlab/pipeline_scope_counts_spec.rb' +- './spec/lib/gitlab/polling_interval_spec.rb' +- './spec/lib/gitlab/popen/runner_spec.rb' +- './spec/lib/gitlab/popen_spec.rb' +- './spec/lib/gitlab/private_commit_email_spec.rb' +- './spec/lib/gitlab/process_management_spec.rb' +- './spec/lib/gitlab/process_memory_cache/helper_spec.rb' +- './spec/lib/gitlab/process_supervisor_spec.rb' +- './spec/lib/gitlab/profiler_spec.rb' +- './spec/lib/gitlab/project_authorizations_spec.rb' +- './spec/lib/gitlab/project_search_results_spec.rb' +- './spec/lib/gitlab/project_stats_refresh_conflicts_logger_spec.rb' +- './spec/lib/gitlab/project_template_spec.rb' +- './spec/lib/gitlab/project_transfer_spec.rb' +- './spec/lib/gitlab/prometheus/adapter_spec.rb' +- './spec/lib/gitlab/prometheus/additional_metrics_parser_spec.rb' +- './spec/lib/gitlab/prometheus_client_spec.rb' +- './spec/lib/gitlab/prometheus/internal_spec.rb' +- './spec/lib/gitlab/prometheus/metric_group_spec.rb' +- './spec/lib/gitlab/prometheus/queries/additional_metrics_deployment_query_spec.rb' +- './spec/lib/gitlab/prometheus/queries/additional_metrics_environment_query_spec.rb' +- './spec/lib/gitlab/prometheus/queries/deployment_query_spec.rb' +- './spec/lib/gitlab/prometheus/queries/knative_invocation_query_spec.rb' +- './spec/lib/gitlab/prometheus/queries/matched_metric_query_spec.rb' +- './spec/lib/gitlab/prometheus/queries/validate_query_spec.rb' +- './spec/lib/gitlab/prometheus/query_variables_spec.rb' +- './spec/lib/gitlab/protocol_access_spec.rb' +- './spec/lib/gitlab/puma_logging/json_formatter_spec.rb' +- './spec/lib/gitlab/push_options_spec.rb' +- './spec/lib/gitlab/query_limiting/active_support_subscriber_spec.rb' +- './spec/lib/gitlab/query_limiting/middleware_spec.rb' +- './spec/lib/gitlab/query_limiting_spec.rb' +- './spec/lib/gitlab/query_limiting/transaction_spec.rb' +- './spec/lib/gitlab/quick_actions/command_definition_spec.rb' +- './spec/lib/gitlab/quick_actions/dsl_spec.rb' +- './spec/lib/gitlab/quick_actions/extractor_spec.rb' +- './spec/lib/gitlab/quick_actions/spend_time_and_date_separator_spec.rb' +- './spec/lib/gitlab/quick_actions/substitution_definition_spec.rb' +- './spec/lib/gitlab/quick_actions/users_extractor_spec.rb' +- './spec/lib/gitlab/rack_attack/instrumented_cache_store_spec.rb' +- './spec/lib/gitlab/rack_attack/request_spec.rb' +- './spec/lib/gitlab/rack_attack_spec.rb' +- './spec/lib/gitlab/rack_attack/user_allowlist_spec.rb' +- './spec/lib/gitlab/reactive_cache_set_cache_spec.rb' +- './spec/lib/gitlab/redis/boolean_spec.rb' +- './spec/lib/gitlab/redis/cache_spec.rb' +- './spec/lib/gitlab/redis/duplicate_jobs_spec.rb' +- './spec/lib/gitlab/redis/hll_spec.rb' +- './spec/lib/gitlab/redis/multi_store_spec.rb' +- './spec/lib/gitlab/redis/queues_spec.rb' +- './spec/lib/gitlab/redis/rate_limiting_spec.rb' +- './spec/lib/gitlab/redis/sessions_spec.rb' +- './spec/lib/gitlab/redis/shared_state_spec.rb' +- './spec/lib/gitlab/redis/sidekiq_status_spec.rb' +- './spec/lib/gitlab/redis/trace_chunks_spec.rb' +- './spec/lib/gitlab/redis/wrapper_spec.rb' +- './spec/lib/gitlab/reference_counter_spec.rb' +- './spec/lib/gitlab/reference_extractor_spec.rb' +- './spec/lib/gitlab/regex_requires_app_spec.rb' +- './spec/lib/gitlab/regex_spec.rb' +- './spec/lib/gitlab/relative_positioning/item_context_spec.rb' +- './spec/lib/gitlab/relative_positioning/mover_spec.rb' +- './spec/lib/gitlab/relative_positioning/range_spec.rb' +- './spec/lib/gitlab/render_timeout_spec.rb' +- './spec/lib/gitlab/repo_path_spec.rb' +- './spec/lib/gitlab/repository_archive_rate_limiter_spec.rb' +- './spec/lib/gitlab/repository_cache_adapter_spec.rb' +- './spec/lib/gitlab/repository_cache/preloader_spec.rb' +- './spec/lib/gitlab/repository_cache_spec.rb' +- './spec/lib/gitlab/repository_hash_cache_spec.rb' +- './spec/lib/gitlab/repository_set_cache_spec.rb' +- './spec/lib/gitlab/repository_size_checker_spec.rb' +- './spec/lib/gitlab/repository_size_error_message_spec.rb' +- './spec/lib/gitlab/repository_url_builder_spec.rb' +- './spec/lib/gitlab/request_context_spec.rb' +- './spec/lib/gitlab/request_endpoints_spec.rb' +- './spec/lib/gitlab/request_forgery_protection_spec.rb' +- './spec/lib/gitlab/robots_txt/parser_spec.rb' +- './spec/lib/gitlab/route_map_spec.rb' +- './spec/lib/gitlab/routing_spec.rb' +- './spec/lib/gitlab/rugged_instrumentation_spec.rb' +- './spec/lib/gitlab/runtime_spec.rb' +- './spec/lib/gitlab/saas_spec.rb' +- './spec/lib/gitlab/safe_request_loader_spec.rb' +- './spec/lib/gitlab/safe_request_purger_spec.rb' +- './spec/lib/gitlab/safe_request_store_spec.rb' +- './spec/lib/gitlab/sample_data_template_spec.rb' +- './spec/lib/gitlab/sanitizers/exception_message_spec.rb' +- './spec/lib/gitlab/sanitizers/exif_spec.rb' +- './spec/lib/gitlab/sanitizers/svg_spec.rb' +- './spec/lib/gitlab/search/abuse_detection_spec.rb' +- './spec/lib/gitlab/search/abuse_validators/no_abusive_coercion_from_string_validator_spec.rb' +- './spec/lib/gitlab/search/abuse_validators/no_abusive_term_length_validator_spec.rb' +- './spec/lib/gitlab/search_context/builder_spec.rb' +- './spec/lib/gitlab/search_context/controller_concern_spec.rb' +- './spec/lib/gitlab/search/found_blob_spec.rb' +- './spec/lib/gitlab/search/found_wiki_page_spec.rb' +- './spec/lib/gitlab/search/params_spec.rb' +- './spec/lib/gitlab/search/query_spec.rb' +- './spec/lib/gitlab/search/recent_issues_spec.rb' +- './spec/lib/gitlab/search/recent_merge_requests_spec.rb' +- './spec/lib/gitlab/search_results_spec.rb' +- './spec/lib/gitlab/search/sort_options_spec.rb' +- './spec/lib/gitlab/security/scan_configuration_spec.rb' +- './spec/lib/gitlab/seeders/ci/daily_build_group_report_result_spec.rb' +- './spec/lib/gitlab/seeder_spec.rb' +- './spec/lib/gitlab/serializer/ci/variables_spec.rb' +- './spec/lib/gitlab/serializer/pagination_spec.rb' +- './spec/lib/gitlab/serverless/service_spec.rb' +- './spec/lib/gitlab/service_desk_email_spec.rb' +- './spec/lib/gitlab/service_desk_spec.rb' +- './spec/lib/gitlab/session_spec.rb' +- './spec/lib/gitlab/setup_helper/praefect_spec.rb' +- './spec/lib/gitlab/setup_helper/workhorse_spec.rb' +- './spec/lib/gitlab/shard_health_cache_spec.rb' +- './spec/lib/gitlab/shell_spec.rb' +- './spec/lib/gitlab/sidekiq_config/cli_methods_spec.rb' +- './spec/lib/gitlab/sidekiq_config_spec.rb' +- './spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb' +- './spec/lib/gitlab/sidekiq_config/worker_router_spec.rb' +- './spec/lib/gitlab/sidekiq_config/worker_spec.rb' +- './spec/lib/gitlab/sidekiq_daemon/memory_killer_spec.rb' +- './spec/lib/gitlab/sidekiq_daemon/monitor_spec.rb' +- './spec/lib/gitlab/sidekiq_death_handler_spec.rb' +- './spec/lib/gitlab/sidekiq_logging/deduplication_logger_spec.rb' +- './spec/lib/gitlab/sidekiq_logging/json_formatter_spec.rb' +- './spec/lib/gitlab/sidekiq_logging/structured_logger_spec.rb' +- './spec/lib/gitlab/sidekiq_middleware/admin_mode/client_spec.rb' +- './spec/lib/gitlab/sidekiq_middleware/admin_mode/server_spec.rb' +- './spec/lib/gitlab/sidekiq_middleware/client_metrics_spec.rb' +- './spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/client_spec.rb' +- './spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/duplicate_job_spec.rb' +- './spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/server_spec.rb' +- './spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/strategies/none_spec.rb' +- './spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/strategies_spec.rb' +- './spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/strategies/until_executed_spec.rb' +- './spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/strategies/until_executing_spec.rb' +- './spec/lib/gitlab/sidekiq_middleware/extra_done_log_metadata_spec.rb' +- './spec/lib/gitlab/sidekiq_middleware/instrumentation_logger_spec.rb' +- './spec/lib/gitlab/sidekiq_middleware/memory_killer_spec.rb' +- './spec/lib/gitlab/sidekiq_middleware/monitor_spec.rb' +- './spec/lib/gitlab/sidekiq_middleware/query_analyzer_spec.rb' +- './spec/lib/gitlab/sidekiq_middleware/server_metrics_spec.rb' +- './spec/lib/gitlab/sidekiq_middleware/size_limiter/client_spec.rb' +- './spec/lib/gitlab/sidekiq_middleware/size_limiter/compressor_spec.rb' +- './spec/lib/gitlab/sidekiq_middleware/size_limiter/exceed_limit_error_spec.rb' +- './spec/lib/gitlab/sidekiq_middleware/size_limiter/server_spec.rb' +- './spec/lib/gitlab/sidekiq_middleware/size_limiter/validator_spec.rb' +- './spec/lib/gitlab/sidekiq_middleware_spec.rb' +- './spec/lib/gitlab/sidekiq_middleware/worker_context/client_spec.rb' +- './spec/lib/gitlab/sidekiq_middleware/worker_context/server_spec.rb' +- './spec/lib/gitlab/sidekiq_migrate_jobs_spec.rb' +- './spec/lib/gitlab/sidekiq_queue_spec.rb' +- './spec/lib/gitlab/sidekiq_signals_spec.rb' +- './spec/lib/gitlab/sidekiq_status/client_middleware_spec.rb' +- './spec/lib/gitlab/sidekiq_status/server_middleware_spec.rb' +- './spec/lib/gitlab/sidekiq_status_spec.rb' +- './spec/lib/gitlab/sidekiq_versioning/middleware_spec.rb' +- './spec/lib/gitlab/sidekiq_versioning_spec.rb' +- './spec/lib/gitlab/sidekiq_versioning/worker_spec.rb' +- './spec/lib/gitlab/slash_commands/application_help_spec.rb' +- './spec/lib/gitlab/slash_commands/command_spec.rb' +- './spec/lib/gitlab/slash_commands/deploy_spec.rb' +- './spec/lib/gitlab/slash_commands/issue_close_spec.rb' +- './spec/lib/gitlab/slash_commands/issue_comment_spec.rb' +- './spec/lib/gitlab/slash_commands/issue_move_spec.rb' +- './spec/lib/gitlab/slash_commands/issue_new_spec.rb' +- './spec/lib/gitlab/slash_commands/issue_search_spec.rb' +- './spec/lib/gitlab/slash_commands/issue_show_spec.rb' +- './spec/lib/gitlab/slash_commands/presenters/access_spec.rb' +- './spec/lib/gitlab/slash_commands/presenters/deploy_spec.rb' +- './spec/lib/gitlab/slash_commands/presenters/error_spec.rb' +- './spec/lib/gitlab/slash_commands/presenters/issue_close_spec.rb' +- './spec/lib/gitlab/slash_commands/presenters/issue_comment_spec.rb' +- './spec/lib/gitlab/slash_commands/presenters/issue_move_spec.rb' +- './spec/lib/gitlab/slash_commands/presenters/issue_new_spec.rb' +- './spec/lib/gitlab/slash_commands/presenters/issue_search_spec.rb' +- './spec/lib/gitlab/slash_commands/presenters/issue_show_spec.rb' +- './spec/lib/gitlab/slash_commands/presenters/run_spec.rb' +- './spec/lib/gitlab/slash_commands/run_spec.rb' +- './spec/lib/gitlab/slug/environment_spec.rb' +- './spec/lib/gitlab/snippet_search_results_spec.rb' +- './spec/lib/gitlab/sourcegraph_spec.rb' +- './spec/lib/gitlab/spamcheck/client_spec.rb' +- './spec/lib/gitlab_spec.rb' +- './spec/lib/gitlab/sql/cte_spec.rb' +- './spec/lib/gitlab/sql/except_spec.rb' +- './spec/lib/gitlab/sql/glob_spec.rb' +- './spec/lib/gitlab/sql/intersect_spec.rb' +- './spec/lib/gitlab/sql/pattern_spec.rb' +- './spec/lib/gitlab/sql/recursive_cte_spec.rb' +- './spec/lib/gitlab/sql/union_spec.rb' +- './spec/lib/gitlab/ssh/commit_spec.rb' +- './spec/lib/gitlab/ssh_public_key_spec.rb' +- './spec/lib/gitlab/ssh/signature_spec.rb' +- './spec/lib/gitlab/string_placeholder_replacer_spec.rb' +- './spec/lib/gitlab/string_range_marker_spec.rb' +- './spec/lib/gitlab/string_regex_marker_spec.rb' +- './spec/lib/gitlab/submodule_links_spec.rb' +- './spec/lib/gitlab/subscription_portal_spec.rb' +- './spec/lib/gitlab/suggestions/commit_message_spec.rb' +- './spec/lib/gitlab/suggestions/file_suggestion_spec.rb' +- './spec/lib/gitlab/suggestions/suggestion_set_spec.rb' +- './spec/lib/gitlab/tab_width_spec.rb' +- './spec/lib/gitlab/tcp_checker_spec.rb' +- './spec/lib/gitlab/template/finders/global_template_finder_spec.rb' +- './spec/lib/gitlab/template/finders/repo_template_finders_spec.rb' +- './spec/lib/gitlab/template/gitignore_template_spec.rb' +- './spec/lib/gitlab/template/gitlab_ci_yml_template_spec.rb' +- './spec/lib/gitlab/template/issue_template_spec.rb' +- './spec/lib/gitlab/template/merge_request_template_spec.rb' +- './spec/lib/gitlab/template/metrics_dashboard_template_spec.rb' +- './spec/lib/gitlab/template_parser/ast_spec.rb' +- './spec/lib/gitlab/template_parser/parser_spec.rb' +- './spec/lib/gitlab/terraform_registry_token_spec.rb' +- './spec/lib/gitlab/terraform/state_migration_helper_spec.rb' +- './spec/lib/gitlab/themes_spec.rb' +- './spec/lib/gitlab/throttle_spec.rb' +- './spec/lib/gitlab/time_tracking_formatter_spec.rb' +- './spec/lib/gitlab/tracking/destinations/snowplow_micro_spec.rb' +- './spec/lib/gitlab/tracking/destinations/snowplow_spec.rb' +- './spec/lib/gitlab/tracking/event_definition_spec.rb' +- './spec/lib/gitlab/tracking/incident_management_spec.rb' +- './spec/lib/gitlab/tracking/snowplow_schema_validation_spec.rb' +- './spec/lib/gitlab/tracking_spec.rb' +- './spec/lib/gitlab/tracking/standard_context_spec.rb' +- './spec/lib/gitlab/tree_summary_spec.rb' +- './spec/lib/gitlab/unicode_spec.rb' +- './spec/lib/gitlab/untrusted_regexp/ruby_syntax_spec.rb' +- './spec/lib/gitlab/untrusted_regexp_spec.rb' +- './spec/lib/gitlab/uploads_transfer_spec.rb' +- './spec/lib/gitlab/url_blockers/domain_allowlist_entry_spec.rb' +- './spec/lib/gitlab/url_blockers/ip_allowlist_entry_spec.rb' +- './spec/lib/gitlab/url_blocker_spec.rb' +- './spec/lib/gitlab/url_blockers/url_allowlist_spec.rb' +- './spec/lib/gitlab/url_builder_spec.rb' +- './spec/lib/gitlab/url_sanitizer_spec.rb' +- './spec/lib/gitlab/usage_data_counters/base_counter_spec.rb' +- './spec/lib/gitlab/usage_data_counters/ci_template_unique_counter_spec.rb' +- './spec/lib/gitlab/usage_data_counters/code_review_events_spec.rb' +- './spec/lib/gitlab/usage_data_counters/cycle_analytics_counter_spec.rb' +- './spec/lib/gitlab/usage_data_counters/designs_counter_spec.rb' +- './spec/lib/gitlab/usage_data_counters/editor_unique_counter_spec.rb' +- './spec/lib/gitlab/usage_data_counters/gitlab_cli_activity_unique_counter_spec.rb' +- './spec/lib/gitlab/usage_data_counters/hll_redis_counter_spec.rb' +- './spec/lib/gitlab/usage_data_counters/ipynb_diff_activity_counter_spec.rb' +- './spec/lib/gitlab/usage_data_counters/issue_activity_unique_counter_spec.rb' +- './spec/lib/gitlab/usage_data_counters/jetbrains_plugin_activity_unique_counter_spec.rb' +- './spec/lib/gitlab/usage_data_counters/kubernetes_agent_counter_spec.rb' +- './spec/lib/gitlab/usage_data_counters/merge_request_activity_unique_counter_spec.rb' +- './spec/lib/gitlab/usage_data_counters/merge_request_counter_spec.rb' +- './spec/lib/gitlab/usage_data_counters/merge_request_widget_extension_counter_spec.rb' +- './spec/lib/gitlab/usage_data_counters/note_counter_spec.rb' +- './spec/lib/gitlab/usage_data_counters/package_event_counter_spec.rb' +- './spec/lib/gitlab/usage_data_counters/productivity_analytics_counter_spec.rb' +- './spec/lib/gitlab/usage_data_counters/quick_action_activity_unique_counter_spec.rb' +- './spec/lib/gitlab/usage_data_counters/redis_counter_spec.rb' +- './spec/lib/gitlab/usage_data_counters/search_counter_spec.rb' +- './spec/lib/gitlab/usage_data_counters/service_usage_data_counter_spec.rb' +- './spec/lib/gitlab/usage_data_counters/snippet_counter_spec.rb' +- './spec/lib/gitlab/usage_data_counters/source_code_counter_spec.rb' +- './spec/lib/gitlab/usage_data_counters_spec.rb' +- './spec/lib/gitlab/usage_data_counters/track_unique_events_spec.rb' +- './spec/lib/gitlab/usage_data_counters/vscode_extension_activity_unique_counter_spec.rb' +- './spec/lib/gitlab/usage_data_counters/web_ide_counter_spec.rb' +- './spec/lib/gitlab/usage_data_counters/wiki_page_counter_spec.rb' +- './spec/lib/gitlab/usage_data_counters/work_item_activity_unique_counter_spec.rb' +- './spec/lib/gitlab/usage_data_metrics_spec.rb' +- './spec/lib/gitlab/usage_data_non_sql_metrics_spec.rb' +- './spec/lib/gitlab/usage_data_queries_spec.rb' +- './spec/lib/gitlab/usage_data_spec.rb' +- './spec/lib/gitlab/usage_data/topology_spec.rb' +- './spec/lib/gitlab/usage/metric_definition_spec.rb' +- './spec/lib/gitlab/usage/metrics/aggregates/aggregate_spec.rb' +- './spec/lib/gitlab/usage/metrics/aggregates/sources/calculations/intersection_spec.rb' +- './spec/lib/gitlab/usage/metrics/aggregates/sources/postgres_hll_spec.rb' +- './spec/lib/gitlab/usage/metrics/aggregates/sources/redis_hll_spec.rb' +- './spec/lib/gitlab/usage/metrics/instrumentations/active_user_count_metric_spec.rb' +- './spec/lib/gitlab/usage/metrics/instrumentations/cert_based_clusters_ff_metric_spec.rb' +- './spec/lib/gitlab/usage/metrics/instrumentations/collected_data_categories_metric_spec.rb' +- './spec/lib/gitlab/usage/metrics/instrumentations/count_boards_metric_spec.rb' +- './spec/lib/gitlab/usage/metrics/instrumentations/count_bulk_imports_entities_metric_spec.rb' +- './spec/lib/gitlab/usage/metrics/instrumentations/count_imported_projects_metric_spec.rb' +- './spec/lib/gitlab/usage/metrics/instrumentations/count_imported_projects_total_metric_spec.rb' +- './spec/lib/gitlab/usage/metrics/instrumentations/count_issues_metric_spec.rb' +- './spec/lib/gitlab/usage/metrics/instrumentations/count_users_associating_milestones_to_releases_metric_spec.rb' +- './spec/lib/gitlab/usage/metrics/instrumentations/count_users_creating_issues_metric_spec.rb' +- './spec/lib/gitlab/usage/metrics/instrumentations/database_metric_spec.rb' +- './spec/lib/gitlab/usage/metrics/instrumentations/generic_metric_spec.rb' +- './spec/lib/gitlab/usage/metrics/instrumentations/hostname_metric_spec.rb' +- './spec/lib/gitlab/usage/metrics/instrumentations/jira_imports_total_imported_issues_count_metric_spec.rb' +- './spec/lib/gitlab/usage/metrics/instrumentations/numbers_metric_spec.rb' +- './spec/lib/gitlab/usage/metrics/instrumentations/redis_hll_metric_spec.rb' +- './spec/lib/gitlab/usage/metrics/instrumentations/redis_metric_spec.rb' +- './spec/lib/gitlab/usage/metrics/instrumentations/service_ping_features_metric_spec.rb' +- './spec/lib/gitlab/usage/metrics/instrumentations/snowplow_configured_to_gitlab_collector_metric_spec.rb' +- './spec/lib/gitlab/usage/metrics/instrumentations/snowplow_enabled_metric_spec.rb' +- './spec/lib/gitlab/usage/metrics/instrumentations/uuid_metric_spec.rb' +- './spec/lib/gitlab/usage/metrics/key_path_processor_spec.rb' +- './spec/lib/gitlab/usage/metrics/names_suggestions/generator_spec.rb' +- './spec/lib/gitlab/usage/metrics/names_suggestions/relation_parsers/constraints_spec.rb' +- './spec/lib/gitlab/usage/metrics/names_suggestions/relation_parsers/joins_spec.rb' +- './spec/lib/gitlab/usage/metrics/name_suggestion_spec.rb' +- './spec/lib/gitlab/usage/metric_spec.rb' +- './spec/lib/gitlab/usage/metrics/query_spec.rb' +- './spec/lib/gitlab/usage/service_ping/instrumented_payload_spec.rb' +- './spec/lib/gitlab/usage/service_ping/legacy_metric_timing_decorator_spec.rb' +- './spec/lib/gitlab/usage/service_ping/payload_keys_processor_spec.rb' +- './spec/lib/gitlab/usage/service_ping_report_spec.rb' +- './spec/lib/gitlab/user_access_snippet_spec.rb' +- './spec/lib/gitlab/user_access_spec.rb' +- './spec/lib/gitlab/uuid_spec.rb' +- './spec/lib/gitlab/verify/job_artifacts_spec.rb' +- './spec/lib/gitlab/verify/lfs_objects_spec.rb' +- './spec/lib/gitlab/verify/uploads_spec.rb' +- './spec/lib/gitlab/version_info_spec.rb' +- './spec/lib/gitlab/view/presenter/base_spec.rb' +- './spec/lib/gitlab/view/presenter/delegated_spec.rb' +- './spec/lib/gitlab/view/presenter/factory_spec.rb' +- './spec/lib/gitlab/view/presenter/simple_spec.rb' +- './spec/lib/gitlab/visibility_level_checker_spec.rb' +- './spec/lib/gitlab/visibility_level_spec.rb' +- './spec/lib/gitlab/web_hooks/rate_limiter_spec.rb' +- './spec/lib/gitlab/web_hooks/recursion_detection_spec.rb' +- './spec/lib/gitlab/web_ide/config/entry/global_spec.rb' +- './spec/lib/gitlab/web_ide/config/entry/terminal_spec.rb' +- './spec/lib/gitlab/web_ide/config_spec.rb' +- './spec/lib/gitlab/webpack/file_loader_spec.rb' +- './spec/lib/gitlab/webpack/graphql_known_operations_spec.rb' +- './spec/lib/gitlab/webpack/manifest_spec.rb' +- './spec/lib/gitlab/wiki_file_finder_spec.rb' +- './spec/lib/gitlab/wiki_pages/front_matter_parser_spec.rb' +- './spec/lib/gitlab/with_request_store_spec.rb' +- './spec/lib/gitlab/word_diff/chunk_collection_spec.rb' +- './spec/lib/gitlab/word_diff/line_processor_spec.rb' +- './spec/lib/gitlab/word_diff/parser_spec.rb' +- './spec/lib/gitlab/word_diff/positions_counter_spec.rb' +- './spec/lib/gitlab/word_diff/segments/chunk_spec.rb' +- './spec/lib/gitlab/word_diff/segments/diff_hunk_spec.rb' +- './spec/lib/gitlab/word_diff/segments/newline_spec.rb' +- './spec/lib/gitlab/workhorse_spec.rb' +- './spec/lib/gitlab/x509/certificate_spec.rb' +- './spec/lib/gitlab/x509/commit_spec.rb' +- './spec/lib/gitlab/x509/signature_spec.rb' +- './spec/lib/gitlab/x509/tag_spec.rb' +- './spec/lib/gitlab/zentao/client_spec.rb' +- './spec/lib/gitlab/zentao/query_spec.rb' +- './spec/lib/gitlab/zoom_link_extractor_spec.rb' +- './spec/lib/google_api/auth_spec.rb' +- './spec/lib/google_api/cloud_platform/client_spec.rb' +- './spec/lib/grafana/client_spec.rb' +- './spec/lib/grafana/time_window_spec.rb' +- './spec/lib/grafana/validator_spec.rb' +- './spec/lib/initializer_connections_spec.rb' +- './spec/lib/json_web_token/hmac_token_spec.rb' +- './spec/lib/json_web_token/rsa_token_spec.rb' +- './spec/lib/json_web_token/token_spec.rb' +- './spec/lib/kramdown/kramdown_spec.rb' +- './spec/lib/kramdown/parser/atlassian_document_format_spec.rb' +- './spec/lib/marginalia_spec.rb' +- './spec/lib/mattermost/client_spec.rb' +- './spec/lib/mattermost/command_spec.rb' +- './spec/lib/mattermost/session_spec.rb' +- './spec/lib/mattermost/team_spec.rb' +- './spec/lib/microsoft_teams/activity_spec.rb' +- './spec/lib/microsoft_teams/notifier_spec.rb' +- './spec/lib/object_storage/config_spec.rb' +- './spec/lib/object_storage/direct_upload_spec.rb' +- './spec/lib/omni_auth/strategies/jwt_spec.rb' +- './spec/lib/pager_duty/webhook_payload_parser_spec.rb' +- './spec/lib/peek/views/active_record_spec.rb' +- './spec/lib/peek/views/bullet_detailed_spec.rb' +- './spec/lib/peek/views/detailed_view_spec.rb' +- './spec/lib/peek/views/external_http_spec.rb' +- './spec/lib/peek/views/memory_spec.rb' +- './spec/lib/peek/views/redis_detailed_spec.rb' +- './spec/lib/peek/views/rugged_spec.rb' +- './spec/lib/product_analytics/event_params_spec.rb' +- './spec/lib/product_analytics/tracker_spec.rb' +- './spec/lib/prometheus/cleanup_multiproc_dir_service_spec.rb' +- './spec/lib/prometheus/pid_provider_spec.rb' +- './spec/lib/quality/seeders/issues_spec.rb' +- './spec/lib/release_highlights/validator/entry_spec.rb' +- './spec/lib/release_highlights/validator_spec.rb' +- './spec/lib/rouge/formatters/html_gitlab_spec.rb' +- './spec/lib/safe_zip/entry_spec.rb' +- './spec/lib/safe_zip/extract_params_spec.rb' +- './spec/lib/safe_zip/extract_spec.rb' +- './spec/lib/security/ci_configuration/container_scanning_build_action_spec.rb' +- './spec/lib/security/ci_configuration/sast_build_action_spec.rb' +- './spec/lib/security/ci_configuration/sast_iac_build_action_spec.rb' +- './spec/lib/security/ci_configuration/secret_detection_build_action_spec.rb' +- './spec/lib/security/report_schema_version_matcher_spec.rb' +- './spec/lib/serializers/json_spec.rb' +- './spec/lib/serializers/symbolized_json_spec.rb' +- './spec/lib/serializers/unsafe_json_spec.rb' +- './spec/lib/service_ping/build_payload_spec.rb' +- './spec/lib/service_ping/devops_report_spec.rb' +- './spec/lib/service_ping/permit_data_categories_spec.rb' +- './spec/lib/service_ping/service_ping_settings_spec.rb' +- './spec/lib/sidebars/concerns/container_with_html_options_spec.rb' +- './spec/lib/sidebars/concerns/link_with_html_options_spec.rb' +- './spec/lib/sidebars/groups/menus/ci_cd_menu_spec.rb' +- './spec/lib/sidebars/groups/menus/group_information_menu_spec.rb' +- './spec/lib/sidebars/groups/menus/invite_team_members_menu_spec.rb' +- './spec/lib/sidebars/groups/menus/issues_menu_spec.rb' +- './spec/lib/sidebars/groups/menus/kubernetes_menu_spec.rb' +- './spec/lib/sidebars/groups/menus/merge_requests_menu_spec.rb' +- './spec/lib/sidebars/groups/menus/packages_registries_menu_spec.rb' +- './spec/lib/sidebars/groups/menus/scope_menu_spec.rb' +- './spec/lib/sidebars/groups/menus/settings_menu_spec.rb' +- './spec/lib/sidebars/menu_item_spec.rb' +- './spec/lib/sidebars/menu_spec.rb' +- './spec/lib/sidebars/panel_spec.rb' +- './spec/lib/sidebars/projects/context_spec.rb' +- './spec/lib/sidebars/projects/menus/analytics_menu_spec.rb' +- './spec/lib/sidebars/projects/menus/ci_cd_menu_spec.rb' +- './spec/lib/sidebars/projects/menus/confluence_menu_spec.rb' +- './spec/lib/sidebars/projects/menus/deployments_menu_spec.rb' +- './spec/lib/sidebars/projects/menus/external_issue_tracker_menu_spec.rb' +- './spec/lib/sidebars/projects/menus/external_wiki_menu_spec.rb' +- './spec/lib/sidebars/projects/menus/hidden_menu_spec.rb' +- './spec/lib/sidebars/projects/menus/infrastructure_menu_spec.rb' +- './spec/lib/sidebars/projects/menus/invite_team_members_menu_spec.rb' +- './spec/lib/sidebars/projects/menus/issues_menu_spec.rb' +- './spec/lib/sidebars/projects/menus/merge_requests_menu_spec.rb' +- './spec/lib/sidebars/projects/menus/monitor_menu_spec.rb' +- './spec/lib/sidebars/projects/menus/packages_registries_menu_spec.rb' +- './spec/lib/sidebars/projects/menus/project_information_menu_spec.rb' +- './spec/lib/sidebars/projects/menus/repository_menu_spec.rb' +- './spec/lib/sidebars/projects/menus/scope_menu_spec.rb' +- './spec/lib/sidebars/projects/menus/security_compliance_menu_spec.rb' +- './spec/lib/sidebars/projects/menus/settings_menu_spec.rb' +- './spec/lib/sidebars/projects/menus/shimo_menu_spec.rb' +- './spec/lib/sidebars/projects/menus/snippets_menu_spec.rb' +- './spec/lib/sidebars/projects/menus/wiki_menu_spec.rb' +- './spec/lib/sidebars/projects/menus/zentao_menu_spec.rb' +- './spec/lib/sidebars/projects/panel_spec.rb' +- './spec/lib/system_check/app/authorized_keys_permission_check_spec.rb' +- './spec/lib/system_check/app/git_user_default_ssh_config_check_spec.rb' +- './spec/lib/system_check/app/hashed_storage_all_projects_check_spec.rb' +- './spec/lib/system_check/app/hashed_storage_enabled_check_spec.rb' +- './spec/lib/system_check/base_check_spec.rb' +- './spec/lib/system_check/incoming_email_check_spec.rb' +- './spec/lib/system_check/incoming_email/imap_authentication_check_spec.rb' +- './spec/lib/system_check/orphans/namespace_check_spec.rb' +- './spec/lib/system_check/orphans/repository_check_spec.rb' +- './spec/lib/system_check/sidekiq_check_spec.rb' +- './spec/lib/system_check/simple_executor_spec.rb' +- './spec/lib/system_check_spec.rb' +- './spec/lib/tasks/gitlab/metrics_exporter_task_spec.rb' +- './spec/lib/unnested_in_filters/dsl_spec.rb' +- './spec/lib/unnested_in_filters/rewriter_spec.rb' +- './spec/lib/uploaded_file_spec.rb' +- './spec/lib/version_check_spec.rb' +- './spec/mailers/abuse_report_mailer_spec.rb' +- './spec/mailers/devise_mailer_spec.rb' +- './spec/mailers/email_rejection_mailer_spec.rb' +- './spec/mailers/emails/admin_notification_spec.rb' +- './spec/mailers/emails/auto_devops_spec.rb' +- './spec/mailers/emails/groups_spec.rb' +- './spec/mailers/emails/in_product_marketing_spec.rb' +- './spec/mailers/emails/issues_spec.rb' +- './spec/mailers/emails/merge_requests_spec.rb' +- './spec/mailers/emails/pages_domains_spec.rb' +- './spec/mailers/emails/pipelines_spec.rb' +- './spec/mailers/emails/profile_spec.rb' +- './spec/mailers/emails/projects_spec.rb' +- './spec/mailers/emails/releases_spec.rb' +- './spec/mailers/emails/service_desk_spec.rb' +- './spec/mailers/notify_spec.rb' +- './spec/mailers/repository_check_mailer_spec.rb' +- './spec/metrics_server/metrics_server_spec.rb' +- './spec/migrations/20210406144743_backfill_total_tuple_count_for_batched_migrations_spec.rb' +- './spec/migrations/20210423160427_schedule_drop_invalid_vulnerabilities_spec.rb' +- './spec/migrations/20210430134202_copy_adoption_snapshot_namespace_spec.rb' +- './spec/migrations/20210430135954_copy_adoption_segments_namespace_spec.rb' +- './spec/migrations/20210503105845_add_project_value_stream_id_to_project_stages_spec.rb' +- './spec/migrations/20210511142748_schedule_drop_invalid_vulnerabilities2_spec.rb' +- './spec/migrations/20210514063252_schedule_cleanup_orphaned_lfs_objects_projects_spec.rb' +- './spec/migrations/20210601073400_fix_total_stage_in_vsa_spec.rb' +- './spec/migrations/20210601080039_group_protected_environments_add_index_and_constraint_spec.rb' +- './spec/migrations/20210603222333_remove_builds_email_service_from_services_spec.rb' +- './spec/migrations/20210610153556_delete_legacy_operations_feature_flags_spec.rb' +- './spec/migrations/2021061716138_cascade_delete_freeze_periods_spec.rb' +- './spec/migrations/20210708130419_reschedule_merge_request_diff_users_background_migration_spec.rb' +- './spec/migrations/20210713042000_fix_ci_sources_pipelines_index_names_spec.rb' +- './spec/migrations/20210722042939_update_issuable_slas_where_issue_closed_spec.rb' +- './spec/migrations/20210722150102_operations_feature_flags_correct_flexible_rollout_values_spec.rb' +- './spec/migrations/20210804150320_create_base_work_item_types_spec.rb' +- './spec/migrations/20210805192450_update_trial_plans_ci_daily_pipeline_schedule_triggers_spec.rb' +- './spec/migrations/20210811122206_update_external_project_bots_spec.rb' +- './spec/migrations/20210812013042_remove_duplicate_project_authorizations_spec.rb' +- './spec/migrations/20210818185845_backfill_projects_with_coverage_spec.rb' +- './spec/migrations/20210819145000_drop_temporary_columns_and_triggers_for_ci_builds_runner_session_spec.rb' +- './spec/migrations/20210831203408_upsert_base_work_item_types_spec.rb' +- './spec/migrations/20210902144144_drop_temporary_columns_and_triggers_for_ci_build_needs_spec.rb' +- './spec/migrations/20210906100316_drop_temporary_columns_and_triggers_for_ci_build_trace_chunks_spec.rb' +- './spec/migrations/20210906130643_drop_temporary_columns_and_triggers_for_taggings_spec.rb' +- './spec/migrations/20210907013944_cleanup_bigint_conversion_for_ci_builds_metadata_spec.rb' +- './spec/migrations/20210907211557_finalize_ci_builds_bigint_conversion_spec.rb' +- './spec/migrations/20210910194952_update_report_type_for_existing_approval_project_rules_spec.rb' +- './spec/migrations/20210914095310_cleanup_orphan_project_access_tokens_spec.rb' +- './spec/migrations/20210915022415_cleanup_bigint_conversion_for_ci_builds_spec.rb' +- './spec/migrations/20210918201050_remove_old_pending_jobs_for_recalculate_vulnerabilities_occurrences_uuid_spec.rb' +- './spec/migrations/20210922021816_drop_int4_columns_for_ci_job_artifacts_spec.rb' +- './spec/migrations/20210922025631_drop_int4_column_for_ci_sources_pipelines_spec.rb' +- './spec/migrations/20210922082019_drop_int4_column_for_events_spec.rb' +- './spec/migrations/20210922091402_drop_int4_column_for_push_event_payloads_spec.rb' +- './spec/migrations/20211006060436_schedule_populate_topics_total_projects_count_cache_spec.rb' +- './spec/migrations/20211012134316_clean_up_migrate_merge_request_diff_commit_users_spec.rb' +- './spec/migrations/20211018152654_schedule_remove_duplicate_vulnerabilities_findings3_spec.rb' +- './spec/migrations/20211028155449_schedule_fix_merge_request_diff_commit_users_migration_spec.rb' +- './spec/migrations/20211101222614_consume_remaining_user_namespace_jobs_spec.rb' +- './spec/migrations/20211110143306_add_not_null_constraint_to_security_findings_uuid_spec.rb' +- './spec/migrations/20211110151350_schedule_drop_invalid_security_findings_spec.rb' +- './spec/migrations/20211116091751_change_namespace_type_default_to_user_spec.rb' +- './spec/migrations/20211116111644_schedule_remove_occurrence_pipelines_and_duplicate_vulnerabilities_findings_spec.rb' +- './spec/migrations/20211117084814_migrate_remaining_u2f_registrations_spec.rb' +- './spec/migrations/20211126115449_encrypt_static_objects_external_storage_auth_token_spec.rb' +- './spec/migrations/20211126204445_add_task_to_work_item_types_spec.rb' +- './spec/migrations/20211130165043_backfill_sequence_column_for_sprints_table_spec.rb' +- './spec/migrations/20211203091642_add_index_to_projects_on_marked_for_deletion_at_spec.rb' +- './spec/migrations/20211207125331_remove_jobs_for_recalculate_vulnerabilities_occurrences_uuid_spec.rb' +- './spec/migrations/20211207135331_schedule_recalculate_uuid_on_vulnerabilities_occurrences4_spec.rb' +- './spec/migrations/20211210140629_encrypt_static_object_token_spec.rb' +- './spec/migrations/20211214012507_backfill_incident_issue_escalation_statuses_spec.rb' +- './spec/migrations/20211217174331_mark_recalculate_finding_signatures_as_completed_spec.rb' +- './spec/migrations/20220106111958_add_insert_or_update_vulnerability_reads_trigger_spec.rb' +- './spec/migrations/20220106112043_add_update_vulnerability_reads_trigger_spec.rb' +- './spec/migrations/20220106112085_add_update_vulnerability_reads_location_trigger_spec.rb' +- './spec/migrations/20220106163326_add_has_issues_on_vulnerability_reads_trigger_spec.rb' +- './spec/migrations/20220107064845_populate_vulnerability_reads_spec.rb' +- './spec/migrations/20220120094340_drop_position_from_security_findings_spec.rb' +- './spec/migrations/20220124130028_dedup_runner_projects_spec.rb' +- './spec/migrations/20220128155251_remove_dangling_running_builds_spec.rb' +- './spec/migrations/20220128155814_fix_approval_rules_code_owners_rule_type_index_spec.rb' +- './spec/migrations/20220202105733_delete_service_template_records_spec.rb' +- './spec/migrations/20220204095121_backfill_namespace_statistics_with_dependency_proxy_size_spec.rb' +- './spec/migrations/20220204194347_encrypt_integration_properties_spec.rb' +- './spec/migrations/20220208080921_schedule_migrate_personal_namespace_project_maintainer_to_owner_spec.rb' +- './spec/migrations/20220211214605_update_integrations_trigger_type_new_on_insert_null_safe_spec.rb' +- './spec/migrations/20220213103859_remove_integrations_type_spec.rb' +- './spec/migrations/20220222192524_create_not_null_constraint_releases_tag_spec.rb' +- './spec/migrations/20220222192525_remove_null_releases_spec.rb' +- './spec/migrations/20220223124428_schedule_merge_topics_with_same_name_spec.rb' +- './spec/migrations/20220305223212_add_security_training_providers_spec.rb' +- './spec/migrations/20220307192610_remove_duplicate_project_tag_releases_spec.rb' +- './spec/migrations/20220309084954_remove_leftover_external_pull_request_deletions_spec.rb' +- './spec/migrations/20220310141349_remove_dependency_list_usage_data_from_redis_spec.rb' +- './spec/migrations/20220315171129_cleanup_draft_data_from_faulty_regex_spec.rb' +- './spec/migrations/20220316202640_populate_container_repositories_migration_plan_spec.rb' +- './spec/migrations/20220321234317_remove_all_issuable_escalation_statuses_spec.rb' +- './spec/migrations/20220322132242_update_pages_onboarding_state_spec.rb' +- './spec/migrations/20220324032250_migrate_shimo_confluence_service_category_spec.rb' +- './spec/migrations/20220324165436_schedule_backfill_project_settings_spec.rb' +- './spec/migrations/20220329175119_remove_leftover_ci_job_artifact_deletions_spec.rb' +- './spec/migrations/20220331133802_schedule_backfill_topics_title_spec.rb' +- './spec/migrations/20220412143552_consume_remaining_encrypt_integration_property_jobs_spec.rb' +- './spec/migrations/20220416054011_schedule_backfill_project_member_namespace_id_spec.rb' +- './spec/migrations/20220420135946_update_batched_background_migration_arguments_spec.rb' +- './spec/migrations/20220426185933_backfill_deployments_finished_at_spec.rb' +- './spec/migrations/20220502015011_clean_up_fix_merge_request_diff_commit_users_spec.rb' +- './spec/migrations/20220502173045_reset_too_many_tags_skipped_registry_imports_spec.rb' +- './spec/migrations/20220503035221_add_gitlab_schema_to_batched_background_migrations_spec.rb' +- './spec/migrations/20220505044348_fix_automatic_iterations_cadences_start_date_spec.rb' +- './spec/migrations/20220505174658_update_index_on_alerts_to_exclude_null_fingerprints_spec.rb' +- './spec/migrations/20220506154054_create_sync_namespace_details_trigger_spec.rb' +- './spec/migrations/20220512190659_remove_web_hooks_web_hook_logs_web_hook_id_fk_spec.rb' +- './spec/migrations/20220513043344_reschedule_expire_o_auth_tokens_spec.rb' +- './spec/migrations/20220523171107_drop_deploy_tokens_token_column_spec.rb' +- './spec/migrations/20220524074947_finalize_backfill_null_note_discussion_ids_spec.rb' +- './spec/migrations/20220524184149_create_sync_project_namespace_details_trigger_spec.rb' +- './spec/migrations/20220525221133_schedule_backfill_vulnerability_reads_cluster_agent_spec.rb' +- './spec/migrations/20220601110011_schedule_remove_self_managed_wiki_notes_spec.rb' +- './spec/migrations/20220601152916_add_user_id_and_ip_address_success_index_to_authentication_events_spec.rb' +- './spec/migrations/20220606082910_add_tmp_index_for_potentially_misassociated_vulnerability_occurrences_spec.rb' +- './spec/migrations/20220607082910_add_sync_tmp_index_for_potentially_misassociated_vulnerability_occurrences_spec.rb' +- './spec/migrations/20220620132300_update_last_run_date_for_iterations_cadences_spec.rb' +- './spec/migrations/20220622080547_backfill_project_statistics_with_container_registry_size_spec.rb' +- './spec/migrations/20220627090231_schedule_disable_legacy_open_source_license_for_inactive_public_projects_spec.rb' +- './spec/migrations/20220627152642_queue_update_delayed_project_removal_to_null_for_user_namespace_spec.rb' +- './spec/migrations/20220628012902_finalise_project_namespace_members_spec.rb' +- './spec/migrations/20220629184402_unset_escalation_policies_for_alert_incidents_spec.rb' +- './spec/migrations/20220715163254_update_notes_in_past_spec.rb' +- './spec/migrations/20220721031446_schedule_disable_legacy_open_source_license_for_one_member_no_repo_projects_spec.rb' +- './spec/migrations/20220722084543_schedule_disable_legacy_open_source_license_for_no_issues_no_repo_projects_spec.rb' +- './spec/migrations/20220722110026_reschedule_set_legacy_open_source_license_available_for_non_public_projects_spec.rb' +- './spec/migrations/20220725150127_update_jira_tracker_data_deployment_type_based_on_url_spec.rb' +- './spec/migrations/20220801155858_schedule_disable_legacy_open_source_licence_for_recent_public_projects_spec.rb' +- './spec/migrations/20220802114351_reschedule_backfill_container_registry_size_into_project_statistics_spec.rb' +- './spec/migrations/20220802204737_remove_deactivated_user_highest_role_stats_spec.rb' +- './spec/migrations/20220809002011_schedule_destroy_invalid_group_members_spec.rb' +- './spec/migrations/active_record/schema_spec.rb' +- './spec/migrations/add_default_project_approval_rules_vuln_allowed_spec.rb' +- './spec/migrations/add_epics_relative_position_spec.rb' +- './spec/migrations/add_new_trail_plans_spec.rb' +- './spec/migrations/add_open_source_plan_spec.rb' +- './spec/migrations/add_premium_and_ultimate_plan_limits_spec.rb' +- './spec/migrations/add_triggers_to_integrations_type_new_spec.rb' +- './spec/migrations/add_upvotes_count_index_to_issues_spec.rb' +- './spec/migrations/add_web_hook_calls_to_plan_limits_paid_tiers_spec.rb' +- './spec/migrations/associate_existing_dast_builds_with_variables_spec.rb' +- './spec/migrations/backfill_all_project_namespaces_spec.rb' +- './spec/migrations/backfill_cadence_id_for_boards_scoped_to_iteration_spec.rb' +- './spec/migrations/backfill_clusters_integration_prometheus_enabled_spec.rb' +- './spec/migrations/backfill_cycle_analytics_aggregations_spec.rb' +- './spec/migrations/backfill_escalation_policies_for_oncall_schedules_spec.rb' +- './spec/migrations/backfill_group_features_spec.rb' +- './spec/migrations/backfill_integrations_enable_ssl_verification_spec.rb' +- './spec/migrations/backfill_integrations_type_new_spec.rb' +- './spec/migrations/backfill_issues_upvotes_count_spec.rb' +- './spec/migrations/backfill_member_namespace_id_for_group_members_spec.rb' +- './spec/migrations/backfill_namespace_id_for_namespace_routes_spec.rb' +- './spec/migrations/backfill_namespace_id_for_project_routes_spec.rb' +- './spec/migrations/backfill_nuget_temporary_packages_to_processing_status_spec.rb' +- './spec/migrations/backfill_project_import_level_spec.rb' +- './spec/migrations/backfill_project_namespaces_for_group_spec.rb' +- './spec/migrations/backfill_stage_event_hash_spec.rb' +- './spec/migrations/backfill_user_namespace_spec.rb' +- './spec/migrations/bulk_insert_cluster_enabled_grants_spec.rb' +- './spec/migrations/change_public_projects_cost_factor_spec.rb' +- './spec/migrations/change_web_hook_events_default_spec.rb' +- './spec/migrations/cleanup_after_add_primary_email_to_emails_if_user_confirmed_spec.rb' +- './spec/migrations/cleanup_after_fixing_issue_when_admin_changed_primary_email_spec.rb' +- './spec/migrations/cleanup_after_fixing_regression_with_new_users_emails_spec.rb' +- './spec/migrations/cleanup_backfill_integrations_enable_ssl_verification_spec.rb' +- './spec/migrations/cleanup_move_container_registry_enabled_to_project_feature_spec.rb' +- './spec/migrations/cleanup_mr_attention_request_todos_spec.rb' +- './spec/migrations/cleanup_orphaned_routes_spec.rb' +- './spec/migrations/clean_up_pending_builds_table_spec.rb' +- './spec/migrations/cleanup_remaining_orphan_invites_spec.rb' +- './spec/migrations/confirm_security_bot_spec.rb' +- './spec/migrations/confirm_support_bot_user_spec.rb' +- './spec/migrations/delete_security_findings_without_uuid_spec.rb' +- './spec/migrations/disable_expiration_policies_linked_to_no_container_images_spec.rb' +- './spec/migrations/disable_job_token_scope_when_unused_spec.rb' +- './spec/migrations/finalize_orphaned_routes_cleanup_spec.rb' +- './spec/migrations/finalize_project_namespaces_backfill_spec.rb' +- './spec/migrations/finalize_routes_backfilling_for_projects_spec.rb' +- './spec/migrations/finalize_traversal_ids_background_migrations_spec.rb' +- './spec/migrations/fix_and_backfill_project_namespaces_for_projects_with_duplicate_name_spec.rb' +- './spec/migrations/fix_batched_migrations_old_format_job_arguments_spec.rb' +- './spec/migrations/generate_customers_dot_jwt_signing_key_spec.rb' +- './spec/migrations/insert_ci_daily_pipeline_schedule_triggers_plan_limits_spec.rb' +- './spec/migrations/migrate_elastic_index_settings_spec.rb' +- './spec/migrations/migrate_protected_attribute_to_pending_builds_spec.rb' +- './spec/migrations/move_container_registry_enabled_to_project_features3_spec.rb' +- './spec/migrations/orphaned_invite_tokens_cleanup_spec.rb' +- './spec/migrations/populate_audit_event_streaming_verification_token_spec.rb' +- './spec/migrations/populate_dismissal_information_for_vulnerabilities_spec.rb' +- './spec/migrations/populate_operation_visibility_permissions_spec.rb' +- './spec/migrations/queue_backfill_project_feature_package_registry_access_level_spec.rb' +- './spec/migrations/recreate_index_security_ci_builds_on_name_and_id_parser_features_spec.rb' +- './spec/migrations/recreate_index_security_ci_builds_on_name_and_id_parser_with_new_features_spec.rb' +- './spec/migrations/remove_duplicate_dast_site_tokens_spec.rb' +- './spec/migrations/remove_duplicate_dast_site_tokens_with_same_token_spec.rb' +- './spec/migrations/remove_hipchat_service_records_spec.rb' +- './spec/migrations/remove_invalid_integrations_spec.rb' +- './spec/migrations/remove_not_null_contraint_on_title_from_sprints_spec.rb' +- './spec/migrations/remove_records_without_group_from_webhooks_table_spec.rb' +- './spec/migrations/remove_schedule_and_status_from_pending_alert_escalations_spec.rb' +- './spec/migrations/remove_wiki_notes_spec.rb' +- './spec/migrations/rename_services_to_integrations_spec.rb' +- './spec/migrations/replace_external_wiki_triggers_spec.rb' +- './spec/migrations/reschedule_backfill_imported_issue_search_data_spec.rb' +- './spec/migrations/reschedule_delete_orphaned_deployments_spec.rb' +- './spec/migrations/re_schedule_latest_pipeline_id_population_with_all_security_related_artifact_types_spec.rb' +- './spec/migrations/reset_job_token_scope_enabled_again_spec.rb' +- './spec/migrations/reset_job_token_scope_enabled_spec.rb' +- './spec/migrations/reset_severity_levels_to_new_default_spec.rb' +- './spec/migrations/retry_backfill_traversal_ids_spec.rb' +- './spec/migrations/schedule_add_primary_email_to_emails_if_user_confirmed_spec.rb' +- './spec/migrations/schedule_backfill_draft_status_on_merge_requests_corrected_regex_spec.rb' +- './spec/migrations/schedule_backfilling_the_namespace_id_for_vulnerability_reads_spec.rb' +- './spec/migrations/schedule_copy_ci_builds_columns_to_security_scans2_spec.rb' +- './spec/migrations/schedule_disable_expiration_policies_linked_to_no_container_images_spec.rb' +- './spec/migrations/schedule_fix_incorrect_max_seats_used2_spec.rb' +- './spec/migrations/schedule_fix_incorrect_max_seats_used_spec.rb' +- './spec/migrations/schedule_migrate_shared_vulnerability_scanners_spec.rb' +- './spec/migrations/schedule_populate_requirements_issue_id_spec.rb' +- './spec/migrations/schedule_purging_stale_security_scans_spec.rb' +- './spec/migrations/schedule_recalculate_vulnerability_finding_signatures_for_findings_spec.rb' +- './spec/migrations/schedule_security_setting_creation_spec.rb' +- './spec/migrations/schedule_set_correct_vulnerability_state_spec.rb' +- './spec/migrations/schedule_update_timelogs_null_spent_at_spec.rb' +- './spec/migrations/schedule_update_timelogs_project_id_spec.rb' +- './spec/migrations/schedule_update_users_where_two_factor_auth_required_from_group_spec.rb' +- './spec/migrations/set_default_job_token_scope_true_spec.rb' +- './spec/migrations/slice_merge_request_diff_commit_migrations_spec.rb' +- './spec/migrations/start_backfill_ci_queuing_tables_spec.rb' +- './spec/migrations/steal_merge_request_diff_commit_users_migration_spec.rb' +- './spec/migrations/toggle_vsa_aggregations_enable_spec.rb' +- './spec/migrations/update_application_settings_container_registry_exp_pol_worker_capacity_default_spec.rb' +- './spec/migrations/update_application_settings_protected_paths_spec.rb' +- './spec/migrations/update_default_scan_method_of_dast_site_profile_spec.rb' +- './spec/migrations/update_integrations_trigger_type_new_on_insert_spec.rb' +- './spec/migrations/update_invalid_member_states_spec.rb' +- './spec/migrations/update_invalid_web_hooks_spec.rb' +- './spec/models/ability_spec.rb' +- './spec/models/abuse_report_spec.rb' +- './spec/models/active_session_spec.rb' +- './spec/models/acts_as_taggable_on/tagging_spec.rb' +- './spec/models/acts_as_taggable_on/tag_spec.rb' +- './spec/models/alerting/project_alerting_setting_spec.rb' +- './spec/models/alert_management/alert_assignee_spec.rb' +- './spec/models/alert_management/alert_spec.rb' +- './spec/models/alert_management/alert_user_mention_spec.rb' +- './spec/models/alert_management/http_integration_spec.rb' +- './spec/models/alert_management/metric_image_spec.rb' +- './spec/models/analytics/cycle_analytics/aggregation_spec.rb' +- './spec/models/analytics/cycle_analytics/issue_stage_event_spec.rb' +- './spec/models/analytics/cycle_analytics/merge_request_stage_event_spec.rb' +- './spec/models/analytics/cycle_analytics/project_stage_spec.rb' +- './spec/models/analytics/cycle_analytics/project_value_stream_spec.rb' +- './spec/models/analytics/cycle_analytics/stage_event_hash_spec.rb' +- './spec/models/analytics/usage_trends/measurement_spec.rb' +- './spec/models/appearance_spec.rb' +- './spec/models/application_record_spec.rb' +- './spec/models/application_setting_spec.rb' +- './spec/models/application_setting/term_spec.rb' +- './spec/models/approval_spec.rb' +- './spec/models/atlassian/identity_spec.rb' +- './spec/models/audit_event_spec.rb' +- './spec/models/authentication_event_spec.rb' +- './spec/models/award_emoji_spec.rb' +- './spec/models/awareness_session_spec.rb' +- './spec/models/aws/role_spec.rb' +- './spec/models/badges/group_badge_spec.rb' +- './spec/models/badge_spec.rb' +- './spec/models/badges/project_badge_spec.rb' +- './spec/models/blob_spec.rb' +- './spec/models/blob_viewer/base_spec.rb' +- './spec/models/blob_viewer/changelog_spec.rb' +- './spec/models/blob_viewer/composer_json_spec.rb' +- './spec/models/blob_viewer/gemspec_spec.rb' +- './spec/models/blob_viewer/gitlab_ci_yml_spec.rb' +- './spec/models/blob_viewer/go_mod_spec.rb' +- './spec/models/blob_viewer/license_spec.rb' +- './spec/models/blob_viewer/markup_spec.rb' +- './spec/models/blob_viewer/metrics_dashboard_yml_spec.rb' +- './spec/models/blob_viewer/package_json_spec.rb' +- './spec/models/blob_viewer/podspec_json_spec.rb' +- './spec/models/blob_viewer/podspec_spec.rb' +- './spec/models/blob_viewer/readme_spec.rb' +- './spec/models/blob_viewer/route_map_spec.rb' +- './spec/models/blob_viewer/server_side_spec.rb' +- './spec/models/board_group_recent_visit_spec.rb' +- './spec/models/board_project_recent_visit_spec.rb' +- './spec/models/board_spec.rb' +- './spec/models/broadcast_message_spec.rb' +- './spec/models/bulk_imports/configuration_spec.rb' +- './spec/models/bulk_imports/entity_spec.rb' +- './spec/models/bulk_imports/export_spec.rb' +- './spec/models/bulk_imports/export_status_spec.rb' +- './spec/models/bulk_imports/export_upload_spec.rb' +- './spec/models/bulk_imports/failure_spec.rb' +- './spec/models/bulk_imports/file_transfer/group_config_spec.rb' +- './spec/models/bulk_imports/file_transfer/project_config_spec.rb' +- './spec/models/bulk_imports/file_transfer_spec.rb' +- './spec/models/bulk_import_spec.rb' +- './spec/models/bulk_imports/tracker_spec.rb' +- './spec/models/chat_name_spec.rb' +- './spec/models/chat_team_spec.rb' +- './spec/models/ci/artifact_blob_spec.rb' +- './spec/models/ci/bridge_spec.rb' +- './spec/models/ci/build_dependencies_spec.rb' +- './spec/models/ci/build_metadata_spec.rb' +- './spec/models/ci/build_need_spec.rb' +- './spec/models/ci/build_pending_state_spec.rb' +- './spec/models/ci/build_report_result_spec.rb' +- './spec/models/ci/build_runner_session_spec.rb' +- './spec/models/ci/build_spec.rb' +- './spec/models/ci/build_trace_chunks/database_spec.rb' +- './spec/models/ci/build_trace_chunks/fog_spec.rb' +- './spec/models/ci/build_trace_chunk_spec.rb' +- './spec/models/ci/build_trace_chunks/redis_spec.rb' +- './spec/models/ci/build_trace_metadata_spec.rb' +- './spec/models/ci/build_trace_spec.rb' +- './spec/models/ci/commit_with_pipeline_spec.rb' +- './spec/models/ci/daily_build_group_report_result_spec.rb' +- './spec/models/ci/deleted_object_spec.rb' +- './spec/models/ci/freeze_period_spec.rb' +- './spec/models/ci/freeze_period_status_spec.rb' +- './spec/models/ci/group_spec.rb' +- './spec/models/ci/group_variable_spec.rb' +- './spec/models/ci/instance_variable_spec.rb' +- './spec/models/ci/job_artifact_spec.rb' +- './spec/models/ci/job_token/project_scope_link_spec.rb' +- './spec/models/ci/job_token/scope_spec.rb' +- './spec/models/ci/job_variable_spec.rb' +- './spec/models/ci/namespace_mirror_spec.rb' +- './spec/models/ci/pending_build_spec.rb' +- './spec/models/ci/persistent_ref_spec.rb' +- './spec/models/ci/pipeline_artifact_spec.rb' +- './spec/models/ci/pipeline_config_spec.rb' +- './spec/models/ci/pipeline_message_spec.rb' +- './spec/models/ci/pipeline_schedule_spec.rb' +- './spec/models/ci/pipeline_schedule_variable_spec.rb' +- './spec/models/ci/pipeline_spec.rb' +- './spec/models/ci/pipeline_variable_spec.rb' +- './spec/models/ci_platform_metric_spec.rb' +- './spec/models/ci/processable_spec.rb' +- './spec/models/ci/project_mirror_spec.rb' +- './spec/models/ci/ref_spec.rb' +- './spec/models/ci/resource_group_spec.rb' +- './spec/models/ci/resource_spec.rb' +- './spec/models/ci/runner_namespace_spec.rb' +- './spec/models/ci/runner_project_spec.rb' +- './spec/models/ci/runner_spec.rb' +- './spec/models/ci/runner_version_spec.rb' +- './spec/models/ci/running_build_spec.rb' +- './spec/models/ci/secure_file_spec.rb' +- './spec/models/ci/sources/pipeline_spec.rb' +- './spec/models/ci/stage_spec.rb' +- './spec/models/ci/trigger_request_spec.rb' +- './spec/models/ci/trigger_spec.rb' +- './spec/models/ci/unit_test_failure_spec.rb' +- './spec/models/ci/unit_test_spec.rb' +- './spec/models/ci/variable_spec.rb' +- './spec/models/clusters/agents/activity_event_spec.rb' +- './spec/models/clusters/agents/group_authorization_spec.rb' +- './spec/models/clusters/agents/implicit_authorization_spec.rb' +- './spec/models/clusters/agent_spec.rb' +- './spec/models/clusters/agents/project_authorization_spec.rb' +- './spec/models/clusters/agent_token_spec.rb' +- './spec/models/clusters/applications/cert_manager_spec.rb' +- './spec/models/clusters/applications/cilium_spec.rb' +- './spec/models/clusters/applications/crossplane_spec.rb' +- './spec/models/clusters/applications/helm_spec.rb' +- './spec/models/clusters/applications/ingress_spec.rb' +- './spec/models/clusters/applications/jupyter_spec.rb' +- './spec/models/clusters/applications/knative_spec.rb' +- './spec/models/clusters/applications/prometheus_spec.rb' +- './spec/models/clusters/applications/runner_spec.rb' +- './spec/models/clusters/cluster_enabled_grant_spec.rb' +- './spec/models/clusters/clusters_hierarchy_spec.rb' +- './spec/models/clusters/cluster_spec.rb' +- './spec/models/clusters/group_spec.rb' +- './spec/models/clusters/integrations/prometheus_spec.rb' +- './spec/models/clusters/kubernetes_namespace_spec.rb' +- './spec/models/clusters/platforms/kubernetes_spec.rb' +- './spec/models/clusters/project_spec.rb' +- './spec/models/clusters/providers/aws_spec.rb' +- './spec/models/clusters/providers/gcp_spec.rb' +- './spec/models/commit_collection_spec.rb' +- './spec/models/commit_range_spec.rb' +- './spec/models/commit_signatures/gpg_signature_spec.rb' +- './spec/models/commit_signatures/ssh_signature_spec.rb' +- './spec/models/commit_signatures/x509_commit_signature_spec.rb' +- './spec/models/commit_spec.rb' +- './spec/models/commit_status_spec.rb' +- './spec/models/compare_spec.rb' +- './spec/models/concerns/access_requestable_spec.rb' +- './spec/models/concerns/after_commit_queue_spec.rb' +- './spec/models/concerns/approvable_base_spec.rb' +- './spec/models/concerns/as_cte_spec.rb' +- './spec/models/concerns/atomic_internal_id_spec.rb' +- './spec/models/concerns/avatarable_spec.rb' +- './spec/models/concerns/awardable_spec.rb' +- './spec/models/concerns/awareness_spec.rb' +- './spec/models/concerns/batch_destroy_dependent_associations_spec.rb' +- './spec/models/concerns/batch_nullify_dependent_associations_spec.rb' +- './spec/models/concerns/blob_language_from_git_attributes_spec.rb' +- './spec/models/concerns/blocks_unsafe_serialization_spec.rb' +- './spec/models/concerns/bulk_insertable_associations_spec.rb' +- './spec/models/concerns/bulk_insert_safe_spec.rb' +- './spec/models/concerns/cacheable_attributes_spec.rb' +- './spec/models/concerns/cache_markdown_field_spec.rb' +- './spec/models/concerns/cascading_namespace_setting_attribute_spec.rb' +- './spec/models/concerns/case_sensitivity_spec.rb' +- './spec/models/concerns/checksummable_spec.rb' +- './spec/models/concerns/chronic_duration_attribute_spec.rb' +- './spec/models/concerns/ci/artifactable_spec.rb' +- './spec/models/concerns/ci/bulk_insertable_tags_spec.rb' +- './spec/models/concerns/ci/has_deployment_name_spec.rb' +- './spec/models/concerns/ci/has_ref_spec.rb' +- './spec/models/concerns/ci/has_status_spec.rb' +- './spec/models/concerns/ci/has_variable_spec.rb' +- './spec/models/concerns/ci/maskable_spec.rb' +- './spec/models/concerns/clusters/agents/authorization_config_scopes_spec.rb' +- './spec/models/concerns/counter_attribute_spec.rb' +- './spec/models/concerns/cron_schedulable_spec.rb' +- './spec/models/concerns/cross_database_modification_spec.rb' +- './spec/models/concerns/database_event_tracking_spec.rb' +- './spec/models/concerns/database_reflection_spec.rb' +- './spec/models/concerns/delete_with_limit_spec.rb' +- './spec/models/concerns/deployment_platform_spec.rb' +- './spec/models/concerns/deprecated_assignee_spec.rb' +- './spec/models/concerns/discussion_on_diff_spec.rb' +- './spec/models/concerns/each_batch_spec.rb' +- './spec/models/concerns/editable_spec.rb' +- './spec/models/concerns/expirable_spec.rb' +- './spec/models/concerns/faster_cache_keys_spec.rb' +- './spec/models/concerns/featurable_spec.rb' +- './spec/models/concerns/feature_gate_spec.rb' +- './spec/models/concerns/from_except_spec.rb' +- './spec/models/concerns/from_intersect_spec.rb' +- './spec/models/concerns/from_set_operator_spec.rb' +- './spec/models/concerns/from_union_spec.rb' +- './spec/models/concerns/group_descendant_spec.rb' +- './spec/models/concerns/has_environment_scope_spec.rb' +- './spec/models/concerns/has_user_type_spec.rb' +- './spec/models/concerns/id_in_ordered_spec.rb' +- './spec/models/concerns/ignorable_columns_spec.rb' +- './spec/models/concerns/integrations/enable_ssl_verification_spec.rb' +- './spec/models/concerns/integrations/has_data_fields_spec.rb' +- './spec/models/concerns/integrations/reset_secret_fields_spec.rb' +- './spec/models/concerns/issuable_link_spec.rb' +- './spec/models/concerns/issuable_spec.rb' +- './spec/models/concerns/legacy_bulk_insert_spec.rb' +- './spec/models/concerns/limitable_spec.rb' +- './spec/models/concerns/loaded_in_group_list_spec.rb' +- './spec/models/concerns/loose_index_scan_spec.rb' +- './spec/models/concerns/manual_inverse_association_spec.rb' +- './spec/models/concerns/mentionable_spec.rb' +- './spec/models/concerns/milestoneable_spec.rb' +- './spec/models/concerns/milestoneish_spec.rb' +- './spec/models/concerns/noteable_spec.rb' +- './spec/models/concerns/nullify_if_blank_spec.rb' +- './spec/models/concerns/optionally_search_spec.rb' +- './spec/models/concerns/participable_spec.rb' +- './spec/models/concerns/partitioned_table_spec.rb' +- './spec/models/concerns/pg_full_text_searchable_spec.rb' +- './spec/models/concerns/presentable_spec.rb' +- './spec/models/concerns/project_api_compatibility_spec.rb' +- './spec/models/concerns/project_features_compatibility_spec.rb' +- './spec/models/concerns/prometheus_adapter_spec.rb' +- './spec/models/concerns/protected_ref_access_spec.rb' +- './spec/models/concerns/reactive_caching_spec.rb' +- './spec/models/concerns/redactable_spec.rb' +- './spec/models/concerns/redis_cacheable_spec.rb' +- './spec/models/concerns/require_email_verification_spec.rb' +- './spec/models/concerns/resolvable_discussion_spec.rb' +- './spec/models/concerns/resolvable_note_spec.rb' +- './spec/models/concerns/routable_spec.rb' +- './spec/models/concerns/runners_token_prefixable_spec.rb' +- './spec/models/concerns/safe_url_spec.rb' +- './spec/models/concerns/sanitizable_spec.rb' +- './spec/models/concerns/schedulable_spec.rb' +- './spec/models/concerns/sensitive_serializable_hash_spec.rb' +- './spec/models/concerns/sha_attribute_spec.rb' +- './spec/models/concerns/sortable_spec.rb' +- './spec/models/concerns/spammable_spec.rb' +- './spec/models/concerns/stepable_spec.rb' +- './spec/models/concerns/strip_attribute_spec.rb' +- './spec/models/concerns/subscribable_spec.rb' +- './spec/models/concerns/taggable_queries_spec.rb' +- './spec/models/concerns/taskable_spec.rb' +- './spec/models/concerns/token_authenticatable_spec.rb' +- './spec/models/concerns/token_authenticatable_strategies/base_spec.rb' +- './spec/models/concerns/token_authenticatable_strategies/digest_spec.rb' +- './spec/models/concerns/token_authenticatable_strategies/encrypted_spec.rb' +- './spec/models/concerns/token_authenticatable_strategies/encryption_helper_spec.rb' +- './spec/models/concerns/transactions_spec.rb' +- './spec/models/concerns/triggerable_hooks_spec.rb' +- './spec/models/concerns/uniquify_spec.rb' +- './spec/models/concerns/usage_statistics_spec.rb' +- './spec/models/concerns/vulnerability_finding_helpers_spec.rb' +- './spec/models/concerns/vulnerability_finding_signature_helpers_spec.rb' +- './spec/models/concerns/where_composite_spec.rb' +- './spec/models/concerns/x509_serial_number_attribute_spec.rb' +- './spec/models/container_expiration_policy_spec.rb' +- './spec/models/container_registry/event_spec.rb' +- './spec/models/container_repository_spec.rb' +- './spec/models/context_commits_diff_spec.rb' +- './spec/models/custom_emoji_spec.rb' +- './spec/models/customer_relations/contact_spec.rb' +- './spec/models/customer_relations/contact_state_counts_spec.rb' +- './spec/models/customer_relations/issue_contact_spec.rb' +- './spec/models/customer_relations/organization_spec.rb' +- './spec/models/cycle_analytics/project_level_stage_adapter_spec.rb' +- './spec/models/data_list_spec.rb' +- './spec/models/dependency_proxy/blob_spec.rb' +- './spec/models/dependency_proxy/group_setting_spec.rb' +- './spec/models/dependency_proxy/image_ttl_group_policy_spec.rb' +- './spec/models/dependency_proxy/manifest_spec.rb' +- './spec/models/dependency_proxy/registry_spec.rb' +- './spec/models/deploy_key_spec.rb' +- './spec/models/deploy_keys_project_spec.rb' +- './spec/models/deployment_cluster_spec.rb' +- './spec/models/deployment_merge_request_spec.rb' +- './spec/models/deployment_metrics_spec.rb' +- './spec/models/deployment_spec.rb' +- './spec/models/deploy_token_spec.rb' +- './spec/models/description_version_spec.rb' +- './spec/models/design_management/action_spec.rb' +- './spec/models/design_management/design_action_spec.rb' +- './spec/models/design_management/design_at_version_spec.rb' +- './spec/models/design_management/design_collection_spec.rb' +- './spec/models/design_management/design_spec.rb' +- './spec/models/design_management/repository_spec.rb' +- './spec/models/design_management/version_spec.rb' +- './spec/models/design_user_mention_spec.rb' +- './spec/models/dev_ops_report/metric_spec.rb' +- './spec/models/diff_discussion_spec.rb' +- './spec/models/diff_note_position_spec.rb' +- './spec/models/diff_note_spec.rb' +- './spec/models/diff_viewer/base_spec.rb' +- './spec/models/diff_viewer/image_spec.rb' +- './spec/models/diff_viewer/server_side_spec.rb' +- './spec/models/discussion_note_spec.rb' +- './spec/models/discussion_spec.rb' +- './spec/models/draft_note_spec.rb' +- './spec/models/email_spec.rb' +- './spec/models/environment_spec.rb' +- './spec/models/environment_status_spec.rb' +- './spec/models/error_tracking/client_key_spec.rb' +- './spec/models/error_tracking/error_event_spec.rb' +- './spec/models/error_tracking/error_spec.rb' +- './spec/models/error_tracking/project_error_tracking_setting_spec.rb' +- './spec/models/event_collection_spec.rb' +- './spec/models/event_spec.rb' +- './spec/models/experiment_spec.rb' +- './spec/models/experiment_subject_spec.rb' +- './spec/models/experiment_user_spec.rb' +- './spec/models/exported_protected_branch_spec.rb' +- './spec/models/external_issue_spec.rb' +- './spec/models/external_pull_request_spec.rb' +- './spec/models/factories_spec.rb' +- './spec/models/fork_network_member_spec.rb' +- './spec/models/fork_network_spec.rb' +- './spec/models/generic_commit_status_spec.rb' +- './spec/models/gpg_key_spec.rb' +- './spec/models/gpg_key_subkey_spec.rb' +- './spec/models/grafana_integration_spec.rb' +- './spec/models/group/crm_settings_spec.rb' +- './spec/models/group_custom_attribute_spec.rb' +- './spec/models/group_deploy_keys_group_spec.rb' +- './spec/models/group_deploy_key_spec.rb' +- './spec/models/group_deploy_token_spec.rb' +- './spec/models/group_group_link_spec.rb' +- './spec/models/group_import_state_spec.rb' +- './spec/models/group_label_spec.rb' +- './spec/models/groups/feature_setting_spec.rb' +- './spec/models/group_spec.rb' +- './spec/models/guest_spec.rb' +- './spec/models/hooks/active_hook_filter_spec.rb' +- './spec/models/hooks/project_hook_spec.rb' +- './spec/models/hooks/service_hook_spec.rb' +- './spec/models/hooks/system_hook_spec.rb' +- './spec/models/hooks/web_hook_log_spec.rb' +- './spec/models/hooks/web_hook_spec.rb' +- './spec/models/identity_spec.rb' +- './spec/models/import_export_upload_spec.rb' +- './spec/models/import_failure_spec.rb' +- './spec/models/incident_management/issuable_escalation_status_spec.rb' +- './spec/models/incident_management/project_incident_management_setting_spec.rb' +- './spec/models/incident_management/timeline_event_spec.rb' +- './spec/models/instance_configuration_spec.rb' +- './spec/models/instance_metadata/kas_spec.rb' +- './spec/models/instance_metadata_spec.rb' +- './spec/models/integrations/asana_spec.rb' +- './spec/models/integrations/assembla_spec.rb' +- './spec/models/integrations/bamboo_spec.rb' +- './spec/models/integrations/base_chat_notification_spec.rb' +- './spec/models/integrations/base_issue_tracker_spec.rb' +- './spec/models/integrations/base_third_party_wiki_spec.rb' +- './spec/models/integrations/bugzilla_spec.rb' +- './spec/models/integrations/buildkite_spec.rb' +- './spec/models/integrations/campfire_spec.rb' +- './spec/models/integrations/chat_message/alert_message_spec.rb' +- './spec/models/integrations/chat_message/base_message_spec.rb' +- './spec/models/integrations/chat_message/deployment_message_spec.rb' +- './spec/models/integrations/chat_message/issue_message_spec.rb' +- './spec/models/integrations/chat_message/merge_message_spec.rb' +- './spec/models/integrations/chat_message/note_message_spec.rb' +- './spec/models/integrations/chat_message/pipeline_message_spec.rb' +- './spec/models/integrations/chat_message/push_message_spec.rb' +- './spec/models/integrations/chat_message/wiki_page_message_spec.rb' +- './spec/models/integrations/confluence_spec.rb' +- './spec/models/integrations/custom_issue_tracker_spec.rb' +- './spec/models/integrations/datadog_spec.rb' +- './spec/models/integrations/discord_spec.rb' +- './spec/models/integrations/drone_ci_spec.rb' +- './spec/models/integrations/emails_on_push_spec.rb' +- './spec/models/integrations/every_integration_spec.rb' +- './spec/models/integrations/ewm_spec.rb' +- './spec/models/integrations/external_wiki_spec.rb' +- './spec/models/integrations/field_spec.rb' +- './spec/models/integrations/flowdock_spec.rb' +- './spec/models/integrations/hangouts_chat_spec.rb' +- './spec/models/integrations/harbor_spec.rb' +- './spec/models/integrations/irker_spec.rb' +- './spec/models/integrations/issue_tracker_data_spec.rb' +- './spec/models/integrations/jenkins_spec.rb' +- './spec/models/integrations/jira_spec.rb' +- './spec/models/integrations/jira_tracker_data_spec.rb' +- './spec/models/integrations/mattermost_slash_commands_spec.rb' +- './spec/models/integrations/mattermost_spec.rb' +- './spec/models/integrations/microsoft_teams_spec.rb' +- './spec/models/integrations/mock_ci_spec.rb' +- './spec/models/integrations/packagist_spec.rb' +- './spec/models/integration_spec.rb' +- './spec/models/integrations/pipelines_email_spec.rb' +- './spec/models/integrations/pivotaltracker_spec.rb' +- './spec/models/integrations/prometheus_spec.rb' +- './spec/models/integrations/pumble_spec.rb' +- './spec/models/integrations/pushover_spec.rb' +- './spec/models/integrations/redmine_spec.rb' +- './spec/models/integrations/shimo_spec.rb' +- './spec/models/integrations/slack_slash_commands_spec.rb' +- './spec/models/integrations/slack_spec.rb' +- './spec/models/integrations/teamcity_spec.rb' +- './spec/models/integrations/unify_circuit_spec.rb' +- './spec/models/integrations/webex_teams_spec.rb' +- './spec/models/integrations/youtrack_spec.rb' +- './spec/models/integrations/zentao_spec.rb' +- './spec/models/integrations/zentao_tracker_data_spec.rb' +- './spec/models/internal_id_spec.rb' +- './spec/models/issuable_severity_spec.rb' +- './spec/models/issue_assignee_spec.rb' +- './spec/models/issue_collection_spec.rb' +- './spec/models/issue_email_participant_spec.rb' +- './spec/models/issue/email_spec.rb' +- './spec/models/issue_link_spec.rb' +- './spec/models/issue/metrics_spec.rb' +- './spec/models/issues/csv_import_spec.rb' +- './spec/models/issue_spec.rb' +- './spec/models/jira_connect_installation_spec.rb' +- './spec/models/jira_connect_subscription_spec.rb' +- './spec/models/jira_import_state_spec.rb' +- './spec/models/key_spec.rb' +- './spec/models/label_link_spec.rb' +- './spec/models/label_note_spec.rb' +- './spec/models/label_priority_spec.rb' +- './spec/models/label_spec.rb' +- './spec/models/legacy_diff_discussion_spec.rb' +- './spec/models/legacy_diff_note_spec.rb' +- './spec/models/lfs_download_object_spec.rb' +- './spec/models/lfs_file_lock_spec.rb' +- './spec/models/lfs_object_spec.rb' +- './spec/models/lfs_objects_project_spec.rb' +- './spec/models/license_template_spec.rb' +- './spec/models/list_spec.rb' +- './spec/models/list_user_preference_spec.rb' +- './spec/models/loose_foreign_keys/deleted_record_spec.rb' +- './spec/models/loose_foreign_keys/modification_tracker_spec.rb' +- './spec/models/members/group_member_spec.rb' +- './spec/models/members/last_group_owner_assigner_spec.rb' +- './spec/models/members/member_role_spec.rb' +- './spec/models/members/member_task_spec.rb' +- './spec/models/member_spec.rb' +- './spec/models/members/project_member_spec.rb' +- './spec/models/merge_request/approval_removal_settings_spec.rb' +- './spec/models/merge_request_assignee_spec.rb' +- './spec/models/merge_request/cleanup_schedule_spec.rb' +- './spec/models/merge_request_context_commit_diff_file_spec.rb' +- './spec/models/merge_request_context_commit_spec.rb' +- './spec/models/merge_request_diff_commit_spec.rb' +- './spec/models/merge_request/diff_commit_user_spec.rb' +- './spec/models/merge_request_diff_file_spec.rb' +- './spec/models/merge_request_diff_spec.rb' +- './spec/models/merge_request/metrics_spec.rb' +- './spec/models/merge_request_reviewer_spec.rb' +- './spec/models/merge_request_spec.rb' +- './spec/models/metrics/dashboard/annotation_spec.rb' +- './spec/models/metrics/users_starred_dashboard_spec.rb' +- './spec/models/milestone_note_spec.rb' +- './spec/models/milestone_release_spec.rb' +- './spec/models/milestone_spec.rb' +- './spec/models/ml/candidate_metric_spec.rb' +- './spec/models/ml/candidate_param_spec.rb' +- './spec/models/ml/candidate_spec.rb' +- './spec/models/ml/experiment_spec.rb' +- './spec/models/namespace/admin_note_spec.rb' +- './spec/models/namespace/aggregation_schedule_spec.rb' +- './spec/models/namespace_ci_cd_setting_spec.rb' +- './spec/models/namespace/detail_spec.rb' +- './spec/models/namespace/package_setting_spec.rb' +- './spec/models/namespace/root_storage_statistics_spec.rb' +- './spec/models/namespace_setting_spec.rb' +- './spec/models/namespace_spec.rb' +- './spec/models/namespaces/project_namespace_spec.rb' +- './spec/models/namespace_statistics_spec.rb' +- './spec/models/namespaces/user_namespace_spec.rb' +- './spec/models/namespace/traversal_hierarchy_spec.rb' +- './spec/models/network/graph_spec.rb' +- './spec/models/note_diff_file_spec.rb' +- './spec/models/note_spec.rb' +- './spec/models/notification_recipient_spec.rb' +- './spec/models/notification_setting_spec.rb' +- './spec/models/oauth_access_grant_spec.rb' +- './spec/models/oauth_access_token_spec.rb' +- './spec/models/onboarding_progress_spec.rb' +- './spec/models/operations/feature_flags_client_spec.rb' +- './spec/models/operations/feature_flag_spec.rb' +- './spec/models/operations/feature_flags/strategy_spec.rb' +- './spec/models/operations/feature_flags/user_list_spec.rb' +- './spec/models/packages/build_info_spec.rb' +- './spec/models/packages/cleanup/policy_spec.rb' +- './spec/models/packages/composer/cache_file_spec.rb' +- './spec/models/packages/composer/metadatum_spec.rb' +- './spec/models/packages/conan/file_metadatum_spec.rb' +- './spec/models/packages/conan/metadatum_spec.rb' +- './spec/models/packages/debian/file_entry_spec.rb' +- './spec/models/packages/debian/file_metadatum_spec.rb' +- './spec/models/packages/debian/group_architecture_spec.rb' +- './spec/models/packages/debian/group_component_file_spec.rb' +- './spec/models/packages/debian/group_component_spec.rb' +- './spec/models/packages/debian/group_distribution_key_spec.rb' +- './spec/models/packages/debian/group_distribution_spec.rb' +- './spec/models/packages/debian/project_architecture_spec.rb' +- './spec/models/packages/debian/project_component_file_spec.rb' +- './spec/models/packages/debian/project_component_spec.rb' +- './spec/models/packages/debian/project_distribution_key_spec.rb' +- './spec/models/packages/debian/project_distribution_spec.rb' +- './spec/models/packages/debian/publication_spec.rb' +- './spec/models/packages/dependency_link_spec.rb' +- './spec/models/packages/dependency_spec.rb' +- './spec/models/packages/go/module_spec.rb' +- './spec/models/packages/go/module_version_spec.rb' +- './spec/models/packages/helm/file_metadatum_spec.rb' +- './spec/models/packages/maven/metadatum_spec.rb' +- './spec/models/packages/npm/metadatum_spec.rb' +- './spec/models/packages/npm_spec.rb' +- './spec/models/packages/nuget/dependency_link_metadatum_spec.rb' +- './spec/models/packages/nuget/metadatum_spec.rb' +- './spec/models/packages/package_file_build_info_spec.rb' +- './spec/models/packages/package_file_spec.rb' +- './spec/models/packages/package_spec.rb' +- './spec/models/packages/pypi/metadatum_spec.rb' +- './spec/models/packages/rubygems/metadatum_spec.rb' +- './spec/models/packages/sem_ver_spec.rb' +- './spec/models/packages/tag_spec.rb' +- './spec/models/pages_deployment_spec.rb' +- './spec/models/pages_domain_acme_order_spec.rb' +- './spec/models/pages_domain_spec.rb' +- './spec/models/pages/lookup_path_spec.rb' +- './spec/models/pages/virtual_domain_spec.rb' +- './spec/models/performance_monitoring/prometheus_dashboard_spec.rb' +- './spec/models/performance_monitoring/prometheus_metric_spec.rb' +- './spec/models/performance_monitoring/prometheus_panel_group_spec.rb' +- './spec/models/performance_monitoring/prometheus_panel_spec.rb' +- './spec/models/personal_access_token_spec.rb' +- './spec/models/personal_snippet_spec.rb' +- './spec/models/plan_limits_spec.rb' +- './spec/models/plan_spec.rb' +- './spec/models/pool_repository_spec.rb' +- './spec/models/postgresql/detached_partition_spec.rb' +- './spec/models/postgresql/replication_slot_spec.rb' +- './spec/models/preloaders/commit_status_preloader_spec.rb' +- './spec/models/preloaders/environments/deployment_preloader_spec.rb' +- './spec/models/preloaders/group_policy_preloader_spec.rb' +- './spec/models/preloaders/group_root_ancestor_preloader_spec.rb' +- './spec/models/preloaders/labels_preloader_spec.rb' +- './spec/models/preloaders/merge_request_diff_preloader_spec.rb' +- './spec/models/preloaders/user_max_access_level_in_groups_preloader_spec.rb' +- './spec/models/preloaders/user_max_access_level_in_projects_preloader_spec.rb' +- './spec/models/preloaders/users_max_access_level_in_projects_preloader_spec.rb' +- './spec/models/product_analytics_event_spec.rb' +- './spec/models/programming_language_spec.rb' +- './spec/models/project_authorization_spec.rb' +- './spec/models/project_auto_devops_spec.rb' +- './spec/models/project_ci_cd_setting_spec.rb' +- './spec/models/project_custom_attribute_spec.rb' +- './spec/models/project_daily_statistic_spec.rb' +- './spec/models/project_deploy_token_spec.rb' +- './spec/models/project_export_job_spec.rb' +- './spec/models/project_feature_spec.rb' +- './spec/models/project_feature_usage_spec.rb' +- './spec/models/project_group_link_spec.rb' +- './spec/models/project_import_data_spec.rb' +- './spec/models/project_import_state_spec.rb' +- './spec/models/project_label_spec.rb' +- './spec/models/project_metrics_setting_spec.rb' +- './spec/models/project_pages_metadatum_spec.rb' +- './spec/models/project_repository_spec.rb' +- './spec/models/projects/build_artifacts_size_refresh_spec.rb' +- './spec/models/projects/ci_feature_usage_spec.rb' +- './spec/models/project_setting_spec.rb' +- './spec/models/projects/import_export/relation_export_spec.rb' +- './spec/models/projects/import_export/relation_export_upload_spec.rb' +- './spec/models/project_snippet_spec.rb' +- './spec/models/project_spec.rb' +- './spec/models/projects/project_topic_spec.rb' +- './spec/models/projects/repository_storage_move_spec.rb' +- './spec/models/project_statistics_spec.rb' +- './spec/models/projects/topic_spec.rb' +- './spec/models/projects/triggered_hooks_spec.rb' +- './spec/models/project_team_spec.rb' +- './spec/models/project_wiki_spec.rb' +- './spec/models/prometheus_alert_event_spec.rb' +- './spec/models/prometheus_alert_spec.rb' +- './spec/models/prometheus_metric_spec.rb' +- './spec/models/protectable_dropdown_spec.rb' +- './spec/models/protected_branch/merge_access_level_spec.rb' +- './spec/models/protected_branch/push_access_level_spec.rb' +- './spec/models/protected_branch_spec.rb' +- './spec/models/protected_tag_spec.rb' +- './spec/models/push_event_payload_spec.rb' +- './spec/models/push_event_spec.rb' +- './spec/models/raw_usage_data_spec.rb' +- './spec/models/redirect_route_spec.rb' +- './spec/models/ref_matcher_spec.rb' +- './spec/models/release_highlight_spec.rb' +- './spec/models/releases/evidence_spec.rb' +- './spec/models/releases/link_spec.rb' +- './spec/models/release_spec.rb' +- './spec/models/releases/source_spec.rb' +- './spec/models/remote_mirror_spec.rb' +- './spec/models/repository_language_spec.rb' +- './spec/models/repository_spec.rb' +- './spec/models/resource_label_event_spec.rb' +- './spec/models/resource_milestone_event_spec.rb' +- './spec/models/resource_state_event_spec.rb' +- './spec/models/review_spec.rb' +- './spec/models/route_spec.rb' +- './spec/models/sent_notification_spec.rb' +- './spec/models/sentry_issue_spec.rb' +- './spec/models/serverless/domain_cluster_spec.rb' +- './spec/models/serverless/domain_spec.rb' +- './spec/models/serverless/function_spec.rb' +- './spec/models/service_desk_setting_spec.rb' +- './spec/models/shard_spec.rb' +- './spec/models/snippet_blob_spec.rb' +- './spec/models/snippet_input_action_collection_spec.rb' +- './spec/models/snippet_input_action_spec.rb' +- './spec/models/snippet_repository_spec.rb' +- './spec/models/snippet_spec.rb' +- './spec/models/snippets/repository_storage_move_spec.rb' +- './spec/models/snippet_statistics_spec.rb' +- './spec/models/spam_log_spec.rb' +- './spec/models/ssh_host_key_spec.rb' +- './spec/models/state_note_spec.rb' +- './spec/models/subscription_spec.rb' +- './spec/models/suggestion_spec.rb' +- './spec/models/synthetic_note_spec.rb' +- './spec/models/system_note_metadata_spec.rb' +- './spec/models/term_agreement_spec.rb' +- './spec/models/terraform/state_spec.rb' +- './spec/models/terraform/state_version_spec.rb' +- './spec/models/timelog_spec.rb' +- './spec/models/time_tracking/timelog_category_spec.rb' +- './spec/models/todo_spec.rb' +- './spec/models/token_with_iv_spec.rb' +- './spec/models/tree_spec.rb' +- './spec/models/trending_project_spec.rb' +- './spec/models/u2f_registration_spec.rb' +- './spec/models/uploads/fog_spec.rb' +- './spec/models/uploads/local_spec.rb' +- './spec/models/upload_spec.rb' +- './spec/models/user_agent_detail_spec.rb' +- './spec/models/user_canonical_email_spec.rb' +- './spec/models/user_custom_attribute_spec.rb' +- './spec/models/user_detail_spec.rb' +- './spec/models/user_highest_role_spec.rb' +- './spec/models/user_interacted_project_spec.rb' +- './spec/models/user_mentions/commit_user_mention_spec.rb' +- './spec/models/user_mentions/issue_user_mention_spec.rb' +- './spec/models/user_mentions/merge_request_user_mention_spec.rb' +- './spec/models/user_mentions/snippet_user_mention_spec.rb' +- './spec/models/user_preference_spec.rb' +- './spec/models/users/banned_user_spec.rb' +- './spec/models/users/calloutable_spec.rb' +- './spec/models/users/callout_spec.rb' +- './spec/models/users/credit_card_validation_spec.rb' +- './spec/models/users/group_callout_spec.rb' +- './spec/models/users/in_product_marketing_email_spec.rb' +- './spec/models/users/merge_request_interaction_spec.rb' +- './spec/models/users/namespace_callout_spec.rb' +- './spec/models/user_spec.rb' +- './spec/models/users/project_callout_spec.rb' +- './spec/models/users/saved_reply_spec.rb' +- './spec/models/users_star_project_spec.rb' +- './spec/models/users_statistics_spec.rb' +- './spec/models/user_status_spec.rb' +- './spec/models/webauthn_registration_spec.rb' +- './spec/models/web_ide_terminal_spec.rb' +- './spec/models/wiki_directory_spec.rb' +- './spec/models/wiki_page/meta_spec.rb' +- './spec/models/wiki_page/slug_spec.rb' +- './spec/models/wiki_page_spec.rb' +- './spec/models/work_items/parent_link_spec.rb' +- './spec/models/work_item_spec.rb' +- './spec/models/work_items/type_spec.rb' +- './spec/models/work_items/widgets/assignees_spec.rb' +- './spec/models/work_items/widgets/base_spec.rb' +- './spec/models/work_items/widgets/description_spec.rb' +- './spec/models/work_items/widgets/hierarchy_spec.rb' +- './spec/models/work_items/widgets/labels_spec.rb' +- './spec/models/work_items/widgets/start_and_due_date_spec.rb' +- './spec/models/x509_certificate_spec.rb' +- './spec/models/x509_issuer_spec.rb' +- './spec/models/zoom_meeting_spec.rb' +- './spec/policies/alert_management/alert_policy_spec.rb' +- './spec/policies/alert_management/http_integration_policy_spec.rb' +- './spec/policies/application_setting_policy_spec.rb' +- './spec/policies/application_setting/term_policy_spec.rb' +- './spec/policies/award_emoji_policy_spec.rb' +- './spec/policies/base_policy_spec.rb' +- './spec/policies/blob_policy_spec.rb' +- './spec/policies/board_policy_spec.rb' +- './spec/policies/ci/bridge_policy_spec.rb' +- './spec/policies/ci/build_policy_spec.rb' +- './spec/policies/ci/pipeline_policy_spec.rb' +- './spec/policies/ci/pipeline_schedule_policy_spec.rb' +- './spec/policies/ci/trigger_policy_spec.rb' +- './spec/policies/clusters/agent_policy_spec.rb' +- './spec/policies/clusters/agents/activity_event_policy_spec.rb' +- './spec/policies/clusters/agent_token_policy_spec.rb' +- './spec/policies/clusters/cluster_policy_spec.rb' +- './spec/policies/clusters/instance_policy_spec.rb' +- './spec/policies/commit_policy_spec.rb' +- './spec/policies/concerns/crud_policy_helpers_spec.rb' +- './spec/policies/concerns/policy_actor_spec.rb' +- './spec/policies/concerns/readonly_abilities_spec.rb' +- './spec/policies/container_expiration_policy_policy_spec.rb' +- './spec/policies/custom_emoji_policy_spec.rb' +- './spec/policies/deploy_key_policy_spec.rb' +- './spec/policies/deploy_keys_project_policy_spec.rb' +- './spec/policies/deploy_token_policy_spec.rb' +- './spec/policies/design_management/design_policy_spec.rb' +- './spec/policies/environment_policy_spec.rb' +- './spec/policies/global_policy_spec.rb' +- './spec/policies/group_deploy_key_policy_spec.rb' +- './spec/policies/group_deploy_keys_group_policy_spec.rb' +- './spec/policies/group_member_policy_spec.rb' +- './spec/policies/group_policy_spec.rb' +- './spec/policies/identity_provider_policy_spec.rb' +- './spec/policies/incident_management/timeline_event_policy_spec.rb' +- './spec/policies/instance_metadata_policy_spec.rb' +- './spec/policies/integration_policy_spec.rb' +- './spec/policies/issuable_policy_spec.rb' +- './spec/policies/issue_policy_spec.rb' +- './spec/policies/merge_request_policy_spec.rb' +- './spec/policies/metrics/dashboard/annotation_policy_spec.rb' +- './spec/policies/namespace/root_storage_statistics_policy_spec.rb' +- './spec/policies/namespaces/project_namespace_policy_spec.rb' +- './spec/policies/namespaces/user_namespace_policy_spec.rb' +- './spec/policies/note_policy_spec.rb' +- './spec/policies/packages/package_policy_spec.rb' +- './spec/policies/packages/policies/group_policy_spec.rb' +- './spec/policies/packages/policies/project_policy_spec.rb' +- './spec/policies/personal_access_token_policy_spec.rb' +- './spec/policies/personal_snippet_policy_spec.rb' +- './spec/policies/project_hook_policy_spec.rb' +- './spec/policies/project_member_policy_spec.rb' +- './spec/policies/project_policy_spec.rb' +- './spec/policies/project_snippet_policy_spec.rb' +- './spec/policies/project_statistics_policy_spec.rb' +- './spec/policies/protected_branch_policy_spec.rb' +- './spec/policies/release_policy_spec.rb' +- './spec/policies/resource_label_event_policy_spec.rb' +- './spec/policies/system_hook_policy_spec.rb' +- './spec/policies/terraform/state_policy_spec.rb' +- './spec/policies/terraform/state_version_policy_spec.rb' +- './spec/policies/timelog_policy_spec.rb' +- './spec/policies/todo_policy_spec.rb' +- './spec/policies/upload_policy_spec.rb' +- './spec/policies/user_policy_spec.rb' +- './spec/policies/wiki_page_policy_spec.rb' +- './spec/policies/work_item_policy_spec.rb' +- './spec/presenters/alert_management/alert_presenter_spec.rb' +- './spec/presenters/award_emoji_presenter_spec.rb' +- './spec/presenters/blob_presenter_spec.rb' +- './spec/presenters/blobs/notebook_presenter_spec.rb' +- './spec/presenters/blobs/unfold_presenter_spec.rb' +- './spec/presenters/ci/bridge_presenter_spec.rb' +- './spec/presenters/ci/build_presenter_spec.rb' +- './spec/presenters/ci/build_runner_presenter_spec.rb' +- './spec/presenters/ci/group_variable_presenter_spec.rb' +- './spec/presenters/ci/pipeline_artifacts/code_coverage_presenter_spec.rb' +- './spec/presenters/ci/pipeline_artifacts/code_quality_mr_diff_presenter_spec.rb' +- './spec/presenters/ci/pipeline_presenter_spec.rb' +- './spec/presenters/ci/stage_presenter_spec.rb' +- './spec/presenters/ci/trigger_presenter_spec.rb' +- './spec/presenters/ci/variable_presenter_spec.rb' +- './spec/presenters/clusterable_presenter_spec.rb' +- './spec/presenters/clusters/cluster_presenter_spec.rb' +- './spec/presenters/commit_presenter_spec.rb' +- './spec/presenters/commit_status_presenter_spec.rb' +- './spec/presenters/dev_ops_report/metric_presenter_spec.rb' +- './spec/presenters/event_presenter_spec.rb' +- './spec/presenters/gitlab/blame_presenter_spec.rb' +- './spec/presenters/group_clusterable_presenter_spec.rb' +- './spec/presenters/group_member_presenter_spec.rb' +- './spec/presenters/instance_clusterable_presenter_spec.rb' +- './spec/presenters/issue_presenter_spec.rb' +- './spec/presenters/label_presenter_spec.rb' +- './spec/presenters/merge_request_presenter_spec.rb' +- './spec/presenters/milestone_presenter_spec.rb' +- './spec/presenters/packages/composer/packages_presenter_spec.rb' +- './spec/presenters/packages/conan/package_presenter_spec.rb' +- './spec/presenters/packages/detail/package_presenter_spec.rb' +- './spec/presenters/packages/helm/index_presenter_spec.rb' +- './spec/presenters/packages/npm/package_presenter_spec.rb' +- './spec/presenters/packages/nuget/package_metadata_presenter_spec.rb' +- './spec/presenters/packages/nuget/packages_metadata_presenter_spec.rb' +- './spec/presenters/packages/nuget/packages_versions_presenter_spec.rb' +- './spec/presenters/packages/nuget/search_results_presenter_spec.rb' +- './spec/presenters/packages/nuget/service_index_presenter_spec.rb' +- './spec/presenters/packages/pypi/simple_index_presenter_spec.rb' +- './spec/presenters/packages/pypi/simple_package_versions_presenter_spec.rb' +- './spec/presenters/pages_domain_presenter_spec.rb' +- './spec/presenters/project_clusterable_presenter_spec.rb' +- './spec/presenters/project_hook_presenter_spec.rb' +- './spec/presenters/project_member_presenter_spec.rb' +- './spec/presenters/project_presenter_spec.rb' +- './spec/presenters/projects/import_export/project_export_presenter_spec.rb' +- './spec/presenters/projects/security/configuration_presenter_spec.rb' +- './spec/presenters/projects/settings/deploy_keys_presenter_spec.rb' +- './spec/presenters/prometheus_alert_presenter_spec.rb' +- './spec/presenters/release_presenter_spec.rb' +- './spec/presenters/releases/link_presenter_spec.rb' +- './spec/presenters/search_service_presenter_spec.rb' +- './spec/presenters/sentry_error_presenter_spec.rb' +- './spec/presenters/service_hook_presenter_spec.rb' +- './spec/presenters/snippet_blob_presenter_spec.rb' +- './spec/presenters/snippet_presenter_spec.rb' +- './spec/presenters/terraform/modules_presenter_spec.rb' +- './spec/presenters/tree_entry_presenter_spec.rb' +- './spec/presenters/user_presenter_spec.rb' +- './spec/presenters/web_hook_log_presenter_spec.rb' +- './spec/rack_servers/puma_spec.rb' +- './spec/requests/abuse_reports_controller_spec.rb' +- './spec/requests/admin/applications_controller_spec.rb' +- './spec/requests/admin/background_migrations_controller_spec.rb' +- './spec/requests/admin/batched_jobs_controller_spec.rb' +- './spec/requests/admin/broadcast_messages_controller_spec.rb' +- './spec/requests/admin/clusters/integrations_controller_spec.rb' +- './spec/requests/admin/impersonation_tokens_controller_spec.rb' +- './spec/requests/admin/integrations_controller_spec.rb' +- './spec/requests/admin/version_check_controller_spec.rb' +- './spec/requests/api/access_requests_spec.rb' +- './spec/requests/api/admin/batched_background_migrations_spec.rb' +- './spec/requests/api/admin/ci/variables_spec.rb' +- './spec/requests/api/admin/instance_clusters_spec.rb' +- './spec/requests/api/admin/plan_limits_spec.rb' +- './spec/requests/api/admin/sidekiq_spec.rb' +- './spec/requests/api/alert_management_alerts_spec.rb' +- './spec/requests/api/api_guard/admin_mode_middleware_spec.rb' +- './spec/requests/api/api_guard/response_coercer_middleware_spec.rb' +- './spec/requests/api/api_spec.rb' +- './spec/requests/api/appearance_spec.rb' +- './spec/requests/api/applications_spec.rb' +- './spec/requests/api/avatar_spec.rb' +- './spec/requests/api/award_emoji_spec.rb' +- './spec/requests/api/badges_spec.rb' +- './spec/requests/api/boards_spec.rb' +- './spec/requests/api/branches_spec.rb' +- './spec/requests/api/broadcast_messages_spec.rb' +- './spec/requests/api/bulk_imports_spec.rb' +- './spec/requests/api/ci/job_artifacts_spec.rb' +- './spec/requests/api/ci/jobs_spec.rb' +- './spec/requests/api/ci/pipeline_schedules_spec.rb' +- './spec/requests/api/ci/pipelines_spec.rb' +- './spec/requests/api/ci/resource_groups_spec.rb' +- './spec/requests/api/ci/runner/jobs_artifacts_spec.rb' +- './spec/requests/api/ci/runner/jobs_put_spec.rb' +- './spec/requests/api/ci/runner/jobs_request_post_spec.rb' +- './spec/requests/api/ci/runner/jobs_trace_spec.rb' +- './spec/requests/api/ci/runner/runners_delete_spec.rb' +- './spec/requests/api/ci/runner/runners_post_spec.rb' +- './spec/requests/api/ci/runner/runners_reset_spec.rb' +- './spec/requests/api/ci/runner/runners_verify_post_spec.rb' +- './spec/requests/api/ci/runners_reset_registration_token_spec.rb' +- './spec/requests/api/ci/runners_spec.rb' +- './spec/requests/api/ci/secure_files_spec.rb' +- './spec/requests/api/ci/triggers_spec.rb' +- './spec/requests/api/ci/variables_spec.rb' +- './spec/requests/api/clusters/agents_spec.rb' +- './spec/requests/api/clusters/agent_tokens_spec.rb' +- './spec/requests/api/commits_spec.rb' +- './spec/requests/api/commit_statuses_spec.rb' +- './spec/requests/api/composer_packages_spec.rb' +- './spec/requests/api/conan_instance_packages_spec.rb' +- './spec/requests/api/conan_project_packages_spec.rb' +- './spec/requests/api/container_registry_event_spec.rb' +- './spec/requests/api/container_repositories_spec.rb' +- './spec/requests/api/debian_group_packages_spec.rb' +- './spec/requests/api/debian_project_packages_spec.rb' +- './spec/requests/api/dependency_proxy_spec.rb' +- './spec/requests/api/deploy_keys_spec.rb' +- './spec/requests/api/deployments_spec.rb' +- './spec/requests/api/deploy_tokens_spec.rb' +- './spec/requests/api/discussions_spec.rb' +- './spec/requests/api/doorkeeper_access_spec.rb' +- './spec/requests/api/environments_spec.rb' +- './spec/requests/api/error_tracking/client_keys_spec.rb' +- './spec/requests/api/error_tracking/collector_spec.rb' +- './spec/requests/api/error_tracking/project_settings_spec.rb' +- './spec/requests/api/events_spec.rb' +- './spec/requests/api/feature_flags_spec.rb' +- './spec/requests/api/feature_flags_user_lists_spec.rb' +- './spec/requests/api/features_spec.rb' +- './spec/requests/api/files_spec.rb' +- './spec/requests/api/freeze_periods_spec.rb' +- './spec/requests/api/generic_packages_spec.rb' +- './spec/requests/api/geo_spec.rb' +- './spec/requests/api/go_proxy_spec.rb' +- './spec/requests/api/graphql/boards/board_list_issues_query_spec.rb' +- './spec/requests/api/graphql/boards/board_list_query_spec.rb' +- './spec/requests/api/graphql/boards/board_lists_query_spec.rb' +- './spec/requests/api/graphql/boards/boards_query_spec.rb' +- './spec/requests/api/graphql/ci/application_setting_spec.rb' +- './spec/requests/api/graphql/ci/ci_cd_setting_spec.rb' +- './spec/requests/api/graphql/ci/config_spec.rb' +- './spec/requests/api/graphql/ci/groups_spec.rb' +- './spec/requests/api/graphql/ci/group_variables_spec.rb' +- './spec/requests/api/graphql/ci/instance_variables_spec.rb' +- './spec/requests/api/graphql/ci/job_artifacts_spec.rb' +- './spec/requests/api/graphql/ci/job_spec.rb' +- './spec/requests/api/graphql/ci/jobs_spec.rb' +- './spec/requests/api/graphql/ci/manual_variables_spec.rb' +- './spec/requests/api/graphql/ci/pipelines_spec.rb' +- './spec/requests/api/graphql/ci/project_variables_spec.rb' +- './spec/requests/api/graphql/ci/runner_spec.rb' +- './spec/requests/api/graphql/ci/runners_spec.rb' +- './spec/requests/api/graphql/ci/runner_web_url_edge_spec.rb' +- './spec/requests/api/graphql/ci/stages_spec.rb' +- './spec/requests/api/graphql/ci/template_spec.rb' +- './spec/requests/api/graphql/container_repository/container_repository_details_spec.rb' +- './spec/requests/api/graphql/crm/contacts_spec.rb' +- './spec/requests/api/graphql/current_user/groups_query_spec.rb' +- './spec/requests/api/graphql/current_user_query_spec.rb' +- './spec/requests/api/graphql/current_user/todos_query_spec.rb' +- './spec/requests/api/graphql/current_user_todos_spec.rb' +- './spec/requests/api/graphql/custom_emoji_query_spec.rb' +- './spec/requests/api/graphql/gitlab_schema_spec.rb' +- './spec/requests/api/graphql/group/container_repositories_spec.rb' +- './spec/requests/api/graphql/group/dependency_proxy_blobs_spec.rb' +- './spec/requests/api/graphql/group/dependency_proxy_group_setting_spec.rb' +- './spec/requests/api/graphql/group/dependency_proxy_image_ttl_policy_spec.rb' +- './spec/requests/api/graphql/group/dependency_proxy_manifests_spec.rb' +- './spec/requests/api/graphql/group/group_members_spec.rb' +- './spec/requests/api/graphql/group/issues_spec.rb' +- './spec/requests/api/graphql/group/labels_query_spec.rb' +- './spec/requests/api/graphql/group/merge_requests_spec.rb' +- './spec/requests/api/graphql/group/milestones_spec.rb' +- './spec/requests/api/graphql/group/packages_spec.rb' +- './spec/requests/api/graphql/group_query_spec.rb' +- './spec/requests/api/graphql/group/recent_issue_boards_query_spec.rb' +- './spec/requests/api/graphql/group/timelogs_spec.rb' +- './spec/requests/api/graphql/group/work_item_types_spec.rb' +- './spec/requests/api/graphql/issue/issue_spec.rb' +- './spec/requests/api/graphql/issue_status_counts_spec.rb' +- './spec/requests/api/graphql/merge_request/merge_request_spec.rb' +- './spec/requests/api/graphql/metadata_query_spec.rb' +- './spec/requests/api/graphql/metrics/dashboard/annotations_spec.rb' +- './spec/requests/api/graphql/metrics/dashboard_query_spec.rb' +- './spec/requests/api/graphql/milestone_spec.rb' +- './spec/requests/api/graphql/multiplexed_queries_spec.rb' +- './spec/requests/api/graphql/mutations/admin/sidekiq_queues/delete_jobs_spec.rb' +- './spec/requests/api/graphql/mutations/alert_management/alerts/create_alert_issue_spec.rb' +- './spec/requests/api/graphql/mutations/alert_management/alerts/set_assignees_spec.rb' +- './spec/requests/api/graphql/mutations/alert_management/alerts/todo/create_spec.rb' +- './spec/requests/api/graphql/mutations/alert_management/alerts/update_alert_status_spec.rb' +- './spec/requests/api/graphql/mutations/alert_management/http_integration/create_spec.rb' +- './spec/requests/api/graphql/mutations/alert_management/http_integration/destroy_spec.rb' +- './spec/requests/api/graphql/mutations/alert_management/http_integration/reset_token_spec.rb' +- './spec/requests/api/graphql/mutations/alert_management/http_integration/update_spec.rb' +- './spec/requests/api/graphql/mutations/alert_management/prometheus_integration/create_spec.rb' +- './spec/requests/api/graphql/mutations/alert_management/prometheus_integration/reset_token_spec.rb' +- './spec/requests/api/graphql/mutations/alert_management/prometheus_integration/update_spec.rb' +- './spec/requests/api/graphql/mutations/award_emojis/add_spec.rb' +- './spec/requests/api/graphql/mutations/award_emojis/remove_spec.rb' +- './spec/requests/api/graphql/mutations/award_emojis/toggle_spec.rb' +- './spec/requests/api/graphql/mutations/boards/create_spec.rb' +- './spec/requests/api/graphql/mutations/boards/destroy_spec.rb' +- './spec/requests/api/graphql/mutations/boards/issues/issue_move_list_spec.rb' +- './spec/requests/api/graphql/mutations/boards/lists/create_spec.rb' +- './spec/requests/api/graphql/mutations/boards/lists/destroy_spec.rb' +- './spec/requests/api/graphql/mutations/boards/lists/update_spec.rb' +- './spec/requests/api/graphql/mutations/branches/create_spec.rb' +- './spec/requests/api/graphql/mutations/ci/job_cancel_spec.rb' +- './spec/requests/api/graphql/mutations/ci/job_play_spec.rb' +- './spec/requests/api/graphql/mutations/ci/job_retry_spec.rb' +- './spec/requests/api/graphql/mutations/ci/job_token_scope/add_project_spec.rb' +- './spec/requests/api/graphql/mutations/ci/job_token_scope/remove_project_spec.rb' +- './spec/requests/api/graphql/mutations/ci/job_unschedule_spec.rb' +- './spec/requests/api/graphql/mutations/ci/pipeline_cancel_spec.rb' +- './spec/requests/api/graphql/mutations/ci/pipeline_destroy_spec.rb' +- './spec/requests/api/graphql/mutations/ci/pipeline_retry_spec.rb' +- './spec/requests/api/graphql/mutations/ci/project_ci_cd_settings_update_spec.rb' +- './spec/requests/api/graphql/mutations/ci/runners_registration_token/reset_spec.rb' +- './spec/requests/api/graphql/mutations/clusters/agents/create_spec.rb' +- './spec/requests/api/graphql/mutations/clusters/agents/delete_spec.rb' +- './spec/requests/api/graphql/mutations/clusters/agent_tokens/agent_tokens/create_spec.rb' +- './spec/requests/api/graphql/mutations/commits/create_spec.rb' +- './spec/requests/api/graphql/mutations/container_expiration_policy/update_spec.rb' +- './spec/requests/api/graphql/mutations/container_repository/destroy_spec.rb' +- './spec/requests/api/graphql/mutations/container_repository/destroy_tags_spec.rb' +- './spec/requests/api/graphql/mutations/custom_emoji/create_spec.rb' +- './spec/requests/api/graphql/mutations/custom_emoji/destroy_spec.rb' +- './spec/requests/api/graphql/mutations/dependency_proxy/group_settings/update_spec.rb' +- './spec/requests/api/graphql/mutations/dependency_proxy/image_ttl_group_policy/update_spec.rb' +- './spec/requests/api/graphql/mutations/design_management/delete_spec.rb' +- './spec/requests/api/graphql/mutations/design_management/move_spec.rb' +- './spec/requests/api/graphql/mutations/design_management/upload_spec.rb' +- './spec/requests/api/graphql/mutations/discussions/toggle_resolve_spec.rb' +- './spec/requests/api/graphql/mutations/environments/canary_ingress/update_spec.rb' +- './spec/requests/api/graphql/mutations/groups/update_spec.rb' +- './spec/requests/api/graphql/mutations/incident_management/timeline_event/create_spec.rb' +- './spec/requests/api/graphql/mutations/incident_management/timeline_event/destroy_spec.rb' +- './spec/requests/api/graphql/mutations/incident_management/timeline_event/promote_from_note_spec.rb' +- './spec/requests/api/graphql/mutations/incident_management/timeline_event/update_spec.rb' +- './spec/requests/api/graphql/mutations/issues/create_spec.rb' +- './spec/requests/api/graphql/mutations/issues/move_spec.rb' +- './spec/requests/api/graphql/mutations/issues/set_confidential_spec.rb' +- './spec/requests/api/graphql/mutations/issues/set_crm_contacts_spec.rb' +- './spec/requests/api/graphql/mutations/issues/set_due_date_spec.rb' +- './spec/requests/api/graphql/mutations/issues/set_escalation_status_spec.rb' +- './spec/requests/api/graphql/mutations/issues/set_locked_spec.rb' +- './spec/requests/api/graphql/mutations/issues/set_severity_spec.rb' +- './spec/requests/api/graphql/mutations/issues/set_subscription_spec.rb' +- './spec/requests/api/graphql/mutations/issues/update_spec.rb' +- './spec/requests/api/graphql/mutations/jira_import/import_users_spec.rb' +- './spec/requests/api/graphql/mutations/jira_import/start_spec.rb' +- './spec/requests/api/graphql/mutations/labels/create_spec.rb' +- './spec/requests/api/graphql/mutations/merge_requests/accept_spec.rb' +- './spec/requests/api/graphql/mutations/merge_requests/create_spec.rb' +- './spec/requests/api/graphql/mutations/merge_requests/reviewer_rereview_spec.rb' +- './spec/requests/api/graphql/mutations/merge_requests/set_assignees_spec.rb' +- './spec/requests/api/graphql/mutations/merge_requests/set_draft_spec.rb' +- './spec/requests/api/graphql/mutations/merge_requests/set_labels_spec.rb' +- './spec/requests/api/graphql/mutations/merge_requests/set_locked_spec.rb' +- './spec/requests/api/graphql/mutations/merge_requests/set_milestone_spec.rb' +- './spec/requests/api/graphql/mutations/merge_requests/set_reviewers_spec.rb' +- './spec/requests/api/graphql/mutations/merge_requests/set_subscription_spec.rb' +- './spec/requests/api/graphql/mutations/metrics/dashboard/annotations/create_spec.rb' +- './spec/requests/api/graphql/mutations/metrics/dashboard/annotations/delete_spec.rb' +- './spec/requests/api/graphql/mutations/namespace/package_settings/update_spec.rb' +- './spec/requests/api/graphql/mutations/notes/create/diff_note_spec.rb' +- './spec/requests/api/graphql/mutations/notes/create/image_diff_note_spec.rb' +- './spec/requests/api/graphql/mutations/notes/create/note_spec.rb' +- './spec/requests/api/graphql/mutations/notes/destroy_spec.rb' +- './spec/requests/api/graphql/mutations/notes/reposition_image_diff_note_spec.rb' +- './spec/requests/api/graphql/mutations/notes/update/image_diff_note_spec.rb' +- './spec/requests/api/graphql/mutations/notes/update/note_spec.rb' +- './spec/requests/api/graphql/mutations/packages/cleanup/policy/update_spec.rb' +- './spec/requests/api/graphql/mutations/packages/destroy_file_spec.rb' +- './spec/requests/api/graphql/mutations/packages/destroy_files_spec.rb' +- './spec/requests/api/graphql/mutations/packages/destroy_spec.rb' +- './spec/requests/api/graphql/mutations/release_asset_links/create_spec.rb' +- './spec/requests/api/graphql/mutations/release_asset_links/delete_spec.rb' +- './spec/requests/api/graphql/mutations/release_asset_links/update_spec.rb' +- './spec/requests/api/graphql/mutations/releases/create_spec.rb' +- './spec/requests/api/graphql/mutations/releases/delete_spec.rb' +- './spec/requests/api/graphql/mutations/releases/update_spec.rb' +- './spec/requests/api/graphql/mutations/security/ci_configuration/configure_sast_iac_spec.rb' +- './spec/requests/api/graphql/mutations/security/ci_configuration/configure_secret_detection_spec.rb' +- './spec/requests/api/graphql/mutations/snippets/create_spec.rb' +- './spec/requests/api/graphql/mutations/snippets/destroy_spec.rb' +- './spec/requests/api/graphql/mutations/snippets/mark_as_spam_spec.rb' +- './spec/requests/api/graphql/mutations/snippets/update_spec.rb' +- './spec/requests/api/graphql/mutations/timelogs/create_spec.rb' +- './spec/requests/api/graphql/mutations/timelogs/delete_spec.rb' +- './spec/requests/api/graphql/mutations/todos/create_spec.rb' +- './spec/requests/api/graphql/mutations/todos/mark_all_done_spec.rb' +- './spec/requests/api/graphql/mutations/todos/mark_done_spec.rb' +- './spec/requests/api/graphql/mutations/todos/restore_many_spec.rb' +- './spec/requests/api/graphql/mutations/todos/restore_spec.rb' +- './spec/requests/api/graphql/mutations/uploads/delete_spec.rb' +- './spec/requests/api/graphql/mutations/user_callouts/create_spec.rb' +- './spec/requests/api/graphql/mutations/user_preferences/update_spec.rb' +- './spec/requests/api/graphql/mutations/work_items/create_from_task_spec.rb' +- './spec/requests/api/graphql/mutations/work_items/create_spec.rb' +- './spec/requests/api/graphql/mutations/work_items/delete_spec.rb' +- './spec/requests/api/graphql/mutations/work_items/delete_task_spec.rb' +- './spec/requests/api/graphql/mutations/work_items/update_spec.rb' +- './spec/requests/api/graphql/mutations/work_items/update_task_spec.rb' +- './spec/requests/api/graphql/mutations/work_items/update_widgets_spec.rb' +- './spec/requests/api/graphql/namespace/package_settings_spec.rb' +- './spec/requests/api/graphql/namespace/projects_spec.rb' +- './spec/requests/api/graphql/namespace_query_spec.rb' +- './spec/requests/api/graphql/namespace/root_storage_statistics_spec.rb' +- './spec/requests/api/graphql/packages/composer_spec.rb' +- './spec/requests/api/graphql/packages/conan_spec.rb' +- './spec/requests/api/graphql/packages/helm_spec.rb' +- './spec/requests/api/graphql/packages/maven_spec.rb' +- './spec/requests/api/graphql/packages/nuget_spec.rb' +- './spec/requests/api/graphql/packages/package_spec.rb' +- './spec/requests/api/graphql/packages/pypi_spec.rb' +- './spec/requests/api/graphql/project/alert_management/alert/assignees_spec.rb' +- './spec/requests/api/graphql/project/alert_management/alert/issue_spec.rb' +- './spec/requests/api/graphql/project/alert_management/alert/metrics_dashboard_url_spec.rb' +- './spec/requests/api/graphql/project/alert_management/alert/notes_spec.rb' +- './spec/requests/api/graphql/project/alert_management/alerts_spec.rb' +- './spec/requests/api/graphql/project/alert_management/alert_status_counts_spec.rb' +- './spec/requests/api/graphql/project/alert_management/alert/todos_spec.rb' +- './spec/requests/api/graphql/project/alert_management/integrations_spec.rb' +- './spec/requests/api/graphql/project/base_service_spec.rb' +- './spec/requests/api/graphql/project/cluster_agents_spec.rb' +- './spec/requests/api/graphql/project/container_expiration_policy_spec.rb' +- './spec/requests/api/graphql/project/container_repositories_spec.rb' +- './spec/requests/api/graphql/project/error_tracking/sentry_detailed_error_request_spec.rb' +- './spec/requests/api/graphql/project/error_tracking/sentry_errors_request_spec.rb' +- './spec/requests/api/graphql/project/fork_targets_spec.rb' +- './spec/requests/api/graphql/project/grafana_integration_spec.rb' +- './spec/requests/api/graphql/project/incident_management/timeline_events_spec.rb' +- './spec/requests/api/graphql/project/issue/design_collection/version_spec.rb' +- './spec/requests/api/graphql/project/issue/design_collection/versions_spec.rb' +- './spec/requests/api/graphql/project/issue/designs/designs_spec.rb' +- './spec/requests/api/graphql/project/issue/designs/notes_spec.rb' +- './spec/requests/api/graphql/project/issue/notes_spec.rb' +- './spec/requests/api/graphql/project/issue_spec.rb' +- './spec/requests/api/graphql/project/issues_spec.rb' +- './spec/requests/api/graphql/project/jira_import_spec.rb' +- './spec/requests/api/graphql/project/jira_projects_spec.rb' +- './spec/requests/api/graphql/project/jira_service_spec.rb' +- './spec/requests/api/graphql/project/jobs_spec.rb' +- './spec/requests/api/graphql/project/labels_query_spec.rb' +- './spec/requests/api/graphql/project/merge_request/diff_notes_spec.rb' +- './spec/requests/api/graphql/project/merge_request/pipelines_spec.rb' +- './spec/requests/api/graphql/project/merge_request_spec.rb' +- './spec/requests/api/graphql/project/merge_requests_spec.rb' +- './spec/requests/api/graphql/project/milestones_spec.rb' +- './spec/requests/api/graphql/project/packages_cleanup_policy_spec.rb' +- './spec/requests/api/graphql/project/packages_spec.rb' +- './spec/requests/api/graphql/project/pipeline_spec.rb' +- './spec/requests/api/graphql/project/project_members_spec.rb' +- './spec/requests/api/graphql/project/project_pipeline_statistics_spec.rb' +- './spec/requests/api/graphql/project/project_statistics_spec.rb' +- './spec/requests/api/graphql/project_query_spec.rb' +- './spec/requests/api/graphql/project/recent_issue_boards_query_spec.rb' +- './spec/requests/api/graphql/project/release_spec.rb' +- './spec/requests/api/graphql/project/releases_spec.rb' +- './spec/requests/api/graphql/project/repository/blobs_spec.rb' +- './spec/requests/api/graphql/project/repository_spec.rb' +- './spec/requests/api/graphql/project/terraform/state_spec.rb' +- './spec/requests/api/graphql/project/terraform/states_spec.rb' +- './spec/requests/api/graphql/project/tree/tree_spec.rb' +- './spec/requests/api/graphql/project/work_items_spec.rb' +- './spec/requests/api/graphql/project/work_item_types_spec.rb' +- './spec/requests/api/graphql/query_spec.rb' +- './spec/requests/api/graphql/read_only_spec.rb' +- './spec/requests/api/graphql/snippets_spec.rb' +- './spec/requests/api/graphql_spec.rb' +- './spec/requests/api/graphql/tasks/task_completion_status_spec.rb' +- './spec/requests/api/graphql/terraform/state/delete_spec.rb' +- './spec/requests/api/graphql/terraform/state/lock_spec.rb' +- './spec/requests/api/graphql/terraform/state/unlock_spec.rb' +- './spec/requests/api/graphql/todo_query_spec.rb' +- './spec/requests/api/graphql/usage_trends_measurements_spec.rb' +- './spec/requests/api/graphql/user/group_member_query_spec.rb' +- './spec/requests/api/graphql/user/project_member_query_spec.rb' +- './spec/requests/api/graphql/user_query_spec.rb' +- './spec/requests/api/graphql/user_spec.rb' +- './spec/requests/api/graphql/users_spec.rb' +- './spec/requests/api/graphql/user/starred_projects_query_spec.rb' +- './spec/requests/api/graphql/work_item_spec.rb' +- './spec/requests/api/group_avatar_spec.rb' +- './spec/requests/api/group_boards_spec.rb' +- './spec/requests/api/group_clusters_spec.rb' +- './spec/requests/api/group_container_repositories_spec.rb' +- './spec/requests/api/group_debian_distributions_spec.rb' +- './spec/requests/api/group_export_spec.rb' +- './spec/requests/api/group_import_spec.rb' +- './spec/requests/api/group_labels_spec.rb' +- './spec/requests/api/group_milestones_spec.rb' +- './spec/requests/api/group_packages_spec.rb' +- './spec/requests/api/groups_spec.rb' +- './spec/requests/api/group_variables_spec.rb' +- './spec/requests/api/helm_packages_spec.rb' +- './spec/requests/api/helpers_spec.rb' +- './spec/requests/api/import_bitbucket_server_spec.rb' +- './spec/requests/api/import_github_spec.rb' +- './spec/requests/api/integrations/jira_connect/subscriptions_spec.rb' +- './spec/requests/api/integrations/slack/events_spec.rb' +- './spec/requests/api/integrations_spec.rb' +- './spec/requests/api/internal/base_spec.rb' +- './spec/requests/api/internal/container_registry/migration_spec.rb' +- './spec/requests/api/internal/error_tracking_spec.rb' +- './spec/requests/api/internal/kubernetes_spec.rb' +- './spec/requests/api/internal/lfs_spec.rb' +- './spec/requests/api/internal/mail_room_spec.rb' +- './spec/requests/api/internal/pages_spec.rb' +- './spec/requests/api/internal/workhorse_spec.rb' +- './spec/requests/api/invitations_spec.rb' +- './spec/requests/api/issue_links_spec.rb' +- './spec/requests/api/issues/get_group_issues_spec.rb' +- './spec/requests/api/issues/get_project_issues_spec.rb' +- './spec/requests/api/issues/issues_spec.rb' +- './spec/requests/api/issues/post_projects_issues_spec.rb' +- './spec/requests/api/issues/put_projects_issues_spec.rb' +- './spec/requests/api/keys_spec.rb' +- './spec/requests/api/labels_spec.rb' +- './spec/requests/api/lint_spec.rb' +- './spec/requests/api/markdown_golden_master_spec.rb' +- './spec/requests/api/markdown_snapshot_spec.rb' +- './spec/requests/api/markdown_spec.rb' +- './spec/requests/api/maven_packages_spec.rb' +- './spec/requests/api/members_spec.rb' +- './spec/requests/api/merge_request_approvals_spec.rb' +- './spec/requests/api/merge_request_diffs_spec.rb' +- './spec/requests/api/merge_requests_spec.rb' +- './spec/requests/api/metadata_spec.rb' +- './spec/requests/api/metrics/dashboard/annotations_spec.rb' +- './spec/requests/api/metrics/user_starred_dashboards_spec.rb' +- './spec/requests/api/namespaces_spec.rb' +- './spec/requests/api/notes_spec.rb' +- './spec/requests/api/notification_settings_spec.rb' +- './spec/requests/api/npm_instance_packages_spec.rb' +- './spec/requests/api/npm_project_packages_spec.rb' +- './spec/requests/api/nuget_group_packages_spec.rb' +- './spec/requests/api/nuget_project_packages_spec.rb' +- './spec/requests/api/oauth_tokens_spec.rb' +- './spec/requests/api/package_files_spec.rb' +- './spec/requests/api/pages_domains_spec.rb' +- './spec/requests/api/pages/internal_access_spec.rb' +- './spec/requests/api/pages/pages_spec.rb' +- './spec/requests/api/pages/private_access_spec.rb' +- './spec/requests/api/pages/public_access_spec.rb' +- './spec/requests/api/performance_bar_spec.rb' +- './spec/requests/api/personal_access_tokens_spec.rb' +- './spec/requests/api/project_clusters_spec.rb' +- './spec/requests/api/project_container_repositories_spec.rb' +- './spec/requests/api/project_debian_distributions_spec.rb' +- './spec/requests/api/project_events_spec.rb' +- './spec/requests/api/project_export_spec.rb' +- './spec/requests/api/project_hooks_spec.rb' +- './spec/requests/api/project_import_spec.rb' +- './spec/requests/api/project_milestones_spec.rb' +- './spec/requests/api/project_packages_spec.rb' +- './spec/requests/api/project_repository_storage_moves_spec.rb' +- './spec/requests/api/project_snapshots_spec.rb' +- './spec/requests/api/project_snippets_spec.rb' +- './spec/requests/api/projects_spec.rb' +- './spec/requests/api/project_statistics_spec.rb' +- './spec/requests/api/project_templates_spec.rb' +- './spec/requests/api/protected_branches_spec.rb' +- './spec/requests/api/protected_tags_spec.rb' +- './spec/requests/api/pypi_packages_spec.rb' +- './spec/requests/api/release/links_spec.rb' +- './spec/requests/api/releases_spec.rb' +- './spec/requests/api/remote_mirrors_spec.rb' +- './spec/requests/api/repositories_spec.rb' +- './spec/requests/api/resource_access_tokens_spec.rb' +- './spec/requests/api/resource_label_events_spec.rb' +- './spec/requests/api/resource_milestone_events_spec.rb' +- './spec/requests/api/resource_state_events_spec.rb' +- './spec/requests/api/rubygem_packages_spec.rb' +- './spec/requests/api/search_spec.rb' +- './spec/requests/api/settings_spec.rb' +- './spec/requests/api/sidekiq_metrics_spec.rb' +- './spec/requests/api/snippet_repository_storage_moves_spec.rb' +- './spec/requests/api/snippets_spec.rb' +- './spec/requests/api/statistics_spec.rb' +- './spec/requests/api/submodules_spec.rb' +- './spec/requests/api/suggestions_spec.rb' +- './spec/requests/api/system_hooks_spec.rb' +- './spec/requests/api/tags_spec.rb' +- './spec/requests/api/task_completion_status_spec.rb' +- './spec/requests/api/templates_spec.rb' +- './spec/requests/api/terraform/modules/v1/packages_spec.rb' +- './spec/requests/api/terraform/state_spec.rb' +- './spec/requests/api/terraform/state_version_spec.rb' +- './spec/requests/api/todos_spec.rb' +- './spec/requests/api/topics_spec.rb' +- './spec/requests/api/unleash_spec.rb' +- './spec/requests/api/usage_data_non_sql_metrics_spec.rb' +- './spec/requests/api/usage_data_queries_spec.rb' +- './spec/requests/api/usage_data_spec.rb' +- './spec/requests/api/user_counts_spec.rb' +- './spec/requests/api/users_preferences_spec.rb' +- './spec/requests/api/users_spec.rb' +- './spec/requests/api/v3/github_spec.rb' +- './spec/requests/api/version_spec.rb' +- './spec/requests/api/wikis_spec.rb' +- './spec/requests/boards/lists_controller_spec.rb' +- './spec/requests/concerns/planning_hierarchy_spec.rb' +- './spec/requests/content_security_policy_spec.rb' +- './spec/requests/dashboard_controller_spec.rb' +- './spec/requests/dashboard/projects_controller_spec.rb' +- './spec/requests/git_http_spec.rb' +- './spec/requests/groups/autocomplete_sources_spec.rb' +- './spec/requests/groups/clusters/integrations_controller_spec.rb' +- './spec/requests/groups_controller_spec.rb' +- './spec/requests/groups/crm/contacts_controller_spec.rb' +- './spec/requests/groups/crm/organizations_controller_spec.rb' +- './spec/requests/groups/deploy_tokens_controller_spec.rb' +- './spec/requests/groups/email_campaigns_controller_spec.rb' +- './spec/requests/groups/harbor/artifacts_controller_spec.rb' +- './spec/requests/groups/harbor/repositories_controller_spec.rb' +- './spec/requests/groups/harbor/tags_controller_spec.rb' +- './spec/requests/groups/milestones_controller_spec.rb' +- './spec/requests/groups/registry/repositories_controller_spec.rb' +- './spec/requests/groups/settings/access_tokens_controller_spec.rb' +- './spec/requests/groups/settings/applications_controller_spec.rb' +- './spec/requests/health_controller_spec.rb' +- './spec/requests/ide_controller_spec.rb' +- './spec/requests/import/gitlab_groups_controller_spec.rb' +- './spec/requests/import/gitlab_projects_controller_spec.rb' +- './spec/requests/import/url_controller_spec.rb' +- './spec/requests/jira_authorizations_spec.rb' +- './spec/requests/jira_connect/installations_controller_spec.rb' +- './spec/requests/jira_connect/oauth_application_ids_controller_spec.rb' +- './spec/requests/jira_connect/oauth_callbacks_controller_spec.rb' +- './spec/requests/jira_connect/subscriptions_controller_spec.rb' +- './spec/requests/jira_connect/users_controller_spec.rb' +- './spec/requests/jira_routing_spec.rb' +- './spec/requests/jwks_controller_spec.rb' +- './spec/requests/jwt_controller_spec.rb' +- './spec/requests/lfs_http_spec.rb' +- './spec/requests/lfs_locks_api_spec.rb' +- './spec/requests/mailgun/webhooks_controller_spec.rb' +- './spec/requests/oauth/applications_controller_spec.rb' +- './spec/requests/oauth/authorizations_controller_spec.rb' +- './spec/requests/oauth/tokens_controller_spec.rb' +- './spec/requests/oauth_tokens_spec.rb' +- './spec/requests/openid_connect_spec.rb' +- './spec/requests/product_analytics/collector_app_attack_spec.rb' +- './spec/requests/product_analytics/collector_app_spec.rb' +- './spec/requests/profiles/notifications_controller_spec.rb' +- './spec/requests/projects/ci/promeheus_metrics/histograms_controller_spec.rb' +- './spec/requests/projects/cluster_agents_controller_spec.rb' +- './spec/requests/projects/clusters/integrations_controller_spec.rb' +- './spec/requests/projects/commits_controller_spec.rb' +- './spec/requests/projects_controller_spec.rb' +- './spec/requests/projects/cycle_analytics_events_spec.rb' +- './spec/requests/projects/environments_controller_spec.rb' +- './spec/requests/projects/google_cloud/configuration_controller_spec.rb' +- './spec/requests/projects/google_cloud/databases_controller_spec.rb' +- './spec/requests/projects/google_cloud/deployments_controller_spec.rb' +- './spec/requests/projects/google_cloud/gcp_regions_controller_spec.rb' +- './spec/requests/projects/google_cloud/revoke_oauth_controller_spec.rb' +- './spec/requests/projects/google_cloud/service_accounts_controller_spec.rb' +- './spec/requests/projects/harbor/artifacts_controller_spec.rb' +- './spec/requests/projects/harbor/repositories_controller_spec.rb' +- './spec/requests/projects/harbor/tags_controller_spec.rb' +- './spec/requests/projects/incident_management/pagerduty_incidents_spec.rb' +- './spec/requests/projects/integrations/shimos_controller_spec.rb' +- './spec/requests/projects/issue_links_controller_spec.rb' +- './spec/requests/projects/issues_controller_spec.rb' +- './spec/requests/projects/issues/discussions_spec.rb' +- './spec/requests/projects/merge_requests/content_spec.rb' +- './spec/requests/projects/merge_requests/context_commit_diffs_spec.rb' +- './spec/requests/projects/merge_requests_controller_spec.rb' +- './spec/requests/projects/merge_requests/creations_spec.rb' +- './spec/requests/projects/merge_requests/diffs_spec.rb' +- './spec/requests/projects/merge_requests_discussions_spec.rb' +- './spec/requests/projects/merge_requests_spec.rb' +- './spec/requests/projects/metrics/dashboards/builder_spec.rb' +- './spec/requests/projects/metrics_dashboard_spec.rb' +- './spec/requests/projects/noteable_notes_spec.rb' +- './spec/requests/projects/pipelines_controller_spec.rb' +- './spec/requests/projects/redirect_controller_spec.rb' +- './spec/requests/projects/releases_controller_spec.rb' +- './spec/requests/projects/settings/access_tokens_controller_spec.rb' +- './spec/requests/projects/settings/packages_and_registries_controller_spec.rb' +- './spec/requests/projects/tags_controller_spec.rb' +- './spec/requests/projects/uploads_spec.rb' +- './spec/requests/projects/usage_quotas_spec.rb' +- './spec/requests/projects/work_items_spec.rb' +- './spec/requests/pwa_controller_spec.rb' +- './spec/requests/rack_attack_global_spec.rb' +- './spec/requests/recursive_webhook_detection_spec.rb' +- './spec/requests/robots_txt_spec.rb' +- './spec/requests/runner_setup_controller_spec.rb' +- './spec/requests/sandbox_controller_spec.rb' +- './spec/requests/search_controller_spec.rb' +- './spec/requests/self_monitoring_project_spec.rb' +- './spec/requests/sessions_spec.rb' +- './spec/requests/terraform/services_controller_spec.rb' +- './spec/requests/user_activity_spec.rb' +- './spec/requests/user_avatar_spec.rb' +- './spec/requests/users_controller_spec.rb' +- './spec/requests/user_sends_malformed_strings_spec.rb' +- './spec/requests/users/group_callouts_spec.rb' +- './spec/requests/users/namespace_callouts_spec.rb' +- './spec/requests/user_spoofs_ip_spec.rb' +- './spec/requests/users/project_callouts_spec.rb' +- './spec/requests/verifies_with_email_spec.rb' +- './spec/requests/whats_new_controller_spec.rb' +- './spec/routing/admin_routing_spec.rb' +- './spec/routing/environments_spec.rb' +- './spec/routing/git_http_routing_spec.rb' +- './spec/routing/group_routing_spec.rb' +- './spec/routing/import_routing_spec.rb' +- './spec/routing/notifications_routing_spec.rb' +- './spec/routing/openid_connect_spec.rb' +- './spec/routing/project_routing_spec.rb' +- './spec/routing/projects/security/configuration_controller_routing_spec.rb' +- './spec/routing/routing_spec.rb' +- './spec/routing/uploads_routing_spec.rb' +- './spec/scripts/changed-feature-flags_spec.rb' +- './spec/scripts/determine-qa-tests_spec.rb' +- './spec/scripts/failed_tests_spec.rb' +- './spec/scripts/lib/glfm/parse_examples_spec.rb' +- './spec/scripts/lib/glfm/shared_spec.rb' +- './spec/scripts/lib/glfm/update_example_snapshots_spec.rb' +- './spec/scripts/lib/glfm/update_specification_spec.rb' +- './spec/scripts/pipeline_test_report_builder_spec.rb' +- './spec/scripts/setup/find_jh_branch_spec.rb' +- './spec/scripts/trigger-build_spec.rb' +- './spec/serializers/accessibility_error_entity_spec.rb' +- './spec/serializers/accessibility_reports_comparer_entity_spec.rb' +- './spec/serializers/accessibility_reports_comparer_serializer_spec.rb' +- './spec/serializers/admin/user_entity_spec.rb' +- './spec/serializers/admin/user_serializer_spec.rb' +- './spec/serializers/analytics_build_entity_spec.rb' +- './spec/serializers/analytics_build_serializer_spec.rb' +- './spec/serializers/analytics/cycle_analytics/stage_entity_spec.rb' +- './spec/serializers/analytics_issue_entity_spec.rb' +- './spec/serializers/analytics_issue_serializer_spec.rb' +- './spec/serializers/analytics_merge_request_serializer_spec.rb' +- './spec/serializers/analytics_summary_serializer_spec.rb' +- './spec/serializers/base_discussion_entity_spec.rb' +- './spec/serializers/blob_entity_spec.rb' +- './spec/serializers/board_serializer_spec.rb' +- './spec/serializers/board_simple_entity_spec.rb' +- './spec/serializers/build_action_entity_spec.rb' +- './spec/serializers/build_artifact_entity_spec.rb' +- './spec/serializers/build_details_entity_spec.rb' +- './spec/serializers/build_trace_entity_spec.rb' +- './spec/serializers/ci/codequality_mr_diff_entity_spec.rb' +- './spec/serializers/ci/codequality_mr_diff_report_serializer_spec.rb' +- './spec/serializers/ci/dag_job_entity_spec.rb' +- './spec/serializers/ci/dag_job_group_entity_spec.rb' +- './spec/serializers/ci/dag_pipeline_entity_spec.rb' +- './spec/serializers/ci/dag_pipeline_serializer_spec.rb' +- './spec/serializers/ci/dag_stage_entity_spec.rb' +- './spec/serializers/ci/daily_build_group_report_result_entity_spec.rb' +- './spec/serializers/ci/daily_build_group_report_result_serializer_spec.rb' +- './spec/serializers/ci/downloadable_artifact_entity_spec.rb' +- './spec/serializers/ci/downloadable_artifact_serializer_spec.rb' +- './spec/serializers/ci/group_variable_entity_spec.rb' +- './spec/serializers/ci/job_entity_spec.rb' +- './spec/serializers/ci/job_serializer_spec.rb' +- './spec/serializers/ci/lint/job_entity_spec.rb' +- './spec/serializers/ci/lint/result_entity_spec.rb' +- './spec/serializers/ci/lint/result_serializer_spec.rb' +- './spec/serializers/ci/pipeline_entity_spec.rb' +- './spec/serializers/ci/trigger_entity_spec.rb' +- './spec/serializers/ci/trigger_serializer_spec.rb' +- './spec/serializers/ci/variable_entity_spec.rb' +- './spec/serializers/cluster_application_entity_spec.rb' +- './spec/serializers/cluster_entity_spec.rb' +- './spec/serializers/cluster_serializer_spec.rb' +- './spec/serializers/clusters/kubernetes_error_entity_spec.rb' +- './spec/serializers/codequality_degradation_entity_spec.rb' +- './spec/serializers/codequality_reports_comparer_entity_spec.rb' +- './spec/serializers/codequality_reports_comparer_serializer_spec.rb' +- './spec/serializers/commit_entity_spec.rb' +- './spec/serializers/container_repositories_serializer_spec.rb' +- './spec/serializers/container_repository_entity_spec.rb' +- './spec/serializers/container_tag_entity_spec.rb' +- './spec/serializers/context_commits_diff_entity_spec.rb' +- './spec/serializers/deploy_keys/basic_deploy_key_entity_spec.rb' +- './spec/serializers/deploy_keys/deploy_key_entity_spec.rb' +- './spec/serializers/deployment_cluster_entity_spec.rb' +- './spec/serializers/deployment_entity_spec.rb' +- './spec/serializers/deployment_serializer_spec.rb' +- './spec/serializers/detailed_status_entity_spec.rb' +- './spec/serializers/diff_file_base_entity_spec.rb' +- './spec/serializers/diff_file_entity_spec.rb' +- './spec/serializers/diff_file_metadata_entity_spec.rb' +- './spec/serializers/diff_line_entity_spec.rb' +- './spec/serializers/diff_line_serializer_spec.rb' +- './spec/serializers/diffs_entity_spec.rb' +- './spec/serializers/diffs_metadata_entity_spec.rb' +- './spec/serializers/diff_viewer_entity_spec.rb' +- './spec/serializers/discussion_diff_file_entity_spec.rb' +- './spec/serializers/discussion_entity_spec.rb' +- './spec/serializers/entity_date_helper_spec.rb' +- './spec/serializers/entity_request_spec.rb' +- './spec/serializers/environment_entity_spec.rb' +- './spec/serializers/environment_serializer_spec.rb' +- './spec/serializers/environment_status_entity_spec.rb' +- './spec/serializers/evidences/evidence_entity_spec.rb' +- './spec/serializers/evidences/evidence_serializer_spec.rb' +- './spec/serializers/evidences/issue_entity_spec.rb' +- './spec/serializers/evidences/milestone_entity_spec.rb' +- './spec/serializers/evidences/project_entity_spec.rb' +- './spec/serializers/evidences/release_entity_spec.rb' +- './spec/serializers/evidences/release_serializer_spec.rb' +- './spec/serializers/feature_flag_entity_spec.rb' +- './spec/serializers/feature_flags_client_serializer_spec.rb' +- './spec/serializers/feature_flag_serializer_spec.rb' +- './spec/serializers/feature_flag_summary_entity_spec.rb' +- './spec/serializers/feature_flag_summary_serializer_spec.rb' +- './spec/serializers/fork_namespace_entity_spec.rb' +- './spec/serializers/fork_namespace_serializer_spec.rb' +- './spec/serializers/group_access_token_entity_spec.rb' +- './spec/serializers/group_access_token_serializer_spec.rb' +- './spec/serializers/group_child_entity_spec.rb' +- './spec/serializers/group_child_serializer_spec.rb' +- './spec/serializers/group_deploy_key_entity_spec.rb' +- './spec/serializers/group_issuable_autocomplete_entity_spec.rb' +- './spec/serializers/group_link/group_group_link_entity_spec.rb' +- './spec/serializers/group_link/group_group_link_serializer_spec.rb' +- './spec/serializers/group_link/group_link_entity_spec.rb' +- './spec/serializers/group_link/project_group_link_entity_spec.rb' +- './spec/serializers/group_link/project_group_link_serializer_spec.rb' +- './spec/serializers/import/bitbucket_provider_repo_entity_spec.rb' +- './spec/serializers/import/bitbucket_server_provider_repo_entity_spec.rb' +- './spec/serializers/import/bulk_import_entity_spec.rb' +- './spec/serializers/import/fogbugz_provider_repo_entity_spec.rb' +- './spec/serializers/import/githubish_provider_repo_entity_spec.rb' +- './spec/serializers/import/gitlab_provider_repo_entity_spec.rb' +- './spec/serializers/import/manifest_provider_repo_entity_spec.rb' +- './spec/serializers/import/provider_repo_serializer_spec.rb' +- './spec/serializers/integrations/event_entity_spec.rb' +- './spec/serializers/integrations/field_entity_spec.rb' +- './spec/serializers/integrations/harbor_serializers/artifact_entity_spec.rb' +- './spec/serializers/integrations/harbor_serializers/artifact_serializer_spec.rb' +- './spec/serializers/integrations/harbor_serializers/repository_entity_spec.rb' +- './spec/serializers/integrations/harbor_serializers/repository_serializer_spec.rb' +- './spec/serializers/integrations/harbor_serializers/tag_entity_spec.rb' +- './spec/serializers/integrations/harbor_serializers/tag_serializer_spec.rb' +- './spec/serializers/integrations/project_entity_spec.rb' +- './spec/serializers/integrations/project_serializer_spec.rb' +- './spec/serializers/issuable_sidebar_extras_entity_spec.rb' +- './spec/serializers/issue_board_entity_spec.rb' +- './spec/serializers/issue_entity_spec.rb' +- './spec/serializers/issue_serializer_spec.rb' +- './spec/serializers/issue_sidebar_basic_entity_spec.rb' +- './spec/serializers/jira_connect/app_data_serializer_spec.rb' +- './spec/serializers/jira_connect/group_entity_spec.rb' +- './spec/serializers/jira_connect/subscription_entity_spec.rb' +- './spec/serializers/job_artifact_report_entity_spec.rb' +- './spec/serializers/label_serializer_spec.rb' +- './spec/serializers/lfs_file_lock_entity_spec.rb' +- './spec/serializers/linked_project_issue_entity_spec.rb' +- './spec/serializers/member_entity_spec.rb' +- './spec/serializers/member_serializer_spec.rb' +- './spec/serializers/member_user_entity_spec.rb' +- './spec/serializers/merge_request_basic_entity_spec.rb' +- './spec/serializers/merge_request_current_user_entity_spec.rb' +- './spec/serializers/merge_request_diff_entity_spec.rb' +- './spec/serializers/merge_request_for_pipeline_entity_spec.rb' +- './spec/serializers/merge_request_metrics_helper_spec.rb' +- './spec/serializers/merge_request_poll_cached_widget_entity_spec.rb' +- './spec/serializers/merge_request_poll_widget_entity_spec.rb' +- './spec/serializers/merge_request_serializer_spec.rb' +- './spec/serializers/merge_request_sidebar_basic_entity_spec.rb' +- './spec/serializers/merge_request_sidebar_extras_entity_spec.rb' +- './spec/serializers/merge_requests/pipeline_entity_spec.rb' +- './spec/serializers/merge_request_user_entity_spec.rb' +- './spec/serializers/merge_request_widget_commit_entity_spec.rb' +- './spec/serializers/merge_request_widget_entity_spec.rb' +- './spec/serializers/move_to_project_entity_spec.rb' +- './spec/serializers/move_to_project_serializer_spec.rb' +- './spec/serializers/namespace_basic_entity_spec.rb' +- './spec/serializers/namespace_serializer_spec.rb' +- './spec/serializers/note_entity_spec.rb' +- './spec/serializers/paginated_diff_entity_spec.rb' +- './spec/serializers/personal_access_token_entity_spec.rb' +- './spec/serializers/personal_access_token_serializer_spec.rb' +- './spec/serializers/pipeline_details_entity_spec.rb' +- './spec/serializers/pipeline_serializer_spec.rb' +- './spec/serializers/project_access_token_entity_spec.rb' +- './spec/serializers/project_access_token_serializer_spec.rb' +- './spec/serializers/project_import_entity_spec.rb' +- './spec/serializers/project_mirror_entity_spec.rb' +- './spec/serializers/project_mirror_serializer_spec.rb' +- './spec/serializers/project_note_entity_spec.rb' +- './spec/serializers/project_serializer_spec.rb' +- './spec/serializers/prometheus_alert_entity_spec.rb' +- './spec/serializers/release_serializer_spec.rb' +- './spec/serializers/remote_mirror_entity_spec.rb' +- './spec/serializers/request_aware_entity_spec.rb' +- './spec/serializers/review_app_setup_entity_spec.rb' +- './spec/serializers/rollout_status_entity_spec.rb' +- './spec/serializers/rollout_statuses/ingress_entity_spec.rb' +- './spec/serializers/runner_entity_spec.rb' +- './spec/serializers/serverless/domain_entity_spec.rb' +- './spec/serializers/stage_entity_spec.rb' +- './spec/serializers/stage_serializer_spec.rb' +- './spec/serializers/suggestion_entity_spec.rb' +- './spec/serializers/test_case_entity_spec.rb' +- './spec/serializers/test_report_entity_spec.rb' +- './spec/serializers/test_reports_comparer_entity_spec.rb' +- './spec/serializers/test_reports_comparer_serializer_spec.rb' +- './spec/serializers/test_report_summary_entity_spec.rb' +- './spec/serializers/test_suite_comparer_entity_spec.rb' +- './spec/serializers/test_suite_entity_spec.rb' +- './spec/serializers/test_suite_summary_entity_spec.rb' +- './spec/serializers/trigger_variable_entity_spec.rb' +- './spec/serializers/user_entity_spec.rb' +- './spec/serializers/user_serializer_spec.rb' +- './spec/serializers/web_ide_terminal_entity_spec.rb' +- './spec/serializers/web_ide_terminal_serializer_spec.rb' +- './spec/services/access_token_validation_service_spec.rb' +- './spec/services/alert_management/alerts/todo/create_service_spec.rb' +- './spec/services/alert_management/alerts/update_service_spec.rb' +- './spec/services/alert_management/create_alert_issue_service_spec.rb' +- './spec/services/alert_management/http_integrations/create_service_spec.rb' +- './spec/services/alert_management/http_integrations/destroy_service_spec.rb' +- './spec/services/alert_management/http_integrations/update_service_spec.rb' +- './spec/services/alert_management/metric_images/upload_service_spec.rb' +- './spec/services/alert_management/process_prometheus_alert_service_spec.rb' +- './spec/services/analytics/cycle_analytics/stages/list_service_spec.rb' +- './spec/services/applications/create_service_spec.rb' +- './spec/services/application_settings/update_service_spec.rb' +- './spec/services/audit_events/build_service_spec.rb' +- './spec/services/audit_event_service_spec.rb' +- './spec/services/auth/container_registry_authentication_service_spec.rb' +- './spec/services/auth/dependency_proxy_authentication_service_spec.rb' +- './spec/services/authorized_project_update/find_records_due_for_refresh_service_spec.rb' +- './spec/services/authorized_project_update/periodic_recalculate_service_spec.rb' +- './spec/services/authorized_project_update/project_access_changed_service_spec.rb' +- './spec/services/authorized_project_update/project_recalculate_per_user_service_spec.rb' +- './spec/services/authorized_project_update/project_recalculate_service_spec.rb' +- './spec/services/auto_merge/base_service_spec.rb' +- './spec/services/auto_merge/merge_when_pipeline_succeeds_service_spec.rb' +- './spec/services/auto_merge_service_spec.rb' +- './spec/services/award_emojis/add_service_spec.rb' +- './spec/services/award_emojis/base_service_spec.rb' +- './spec/services/award_emojis/collect_user_emoji_service_spec.rb' +- './spec/services/award_emojis/copy_service_spec.rb' +- './spec/services/award_emojis/destroy_service_spec.rb' +- './spec/services/award_emojis/toggle_service_spec.rb' +- './spec/services/base_container_service_spec.rb' +- './spec/services/base_count_service_spec.rb' +- './spec/services/boards/create_service_spec.rb' +- './spec/services/boards/destroy_service_spec.rb' +- './spec/services/boards/issues/create_service_spec.rb' +- './spec/services/boards/issues/list_service_spec.rb' +- './spec/services/boards/issues/move_service_spec.rb' +- './spec/services/boards/lists/create_service_spec.rb' +- './spec/services/boards/lists/destroy_service_spec.rb' +- './spec/services/boards/lists/generate_service_spec.rb' +- './spec/services/boards/lists/list_service_spec.rb' +- './spec/services/boards/lists/move_service_spec.rb' +- './spec/services/boards/lists/update_service_spec.rb' +- './spec/services/boards/visits/create_service_spec.rb' +- './spec/services/branches/create_service_spec.rb' +- './spec/services/branches/delete_merged_service_spec.rb' +- './spec/services/branches/delete_service_spec.rb' +- './spec/services/branches/diverging_commit_counts_service_spec.rb' +- './spec/services/branches/validate_new_service_spec.rb' +- './spec/services/bulk_create_integration_service_spec.rb' +- './spec/services/bulk_imports/archive_extraction_service_spec.rb' +- './spec/services/bulk_imports/create_pipeline_trackers_service_spec.rb' +- './spec/services/bulk_imports/create_service_spec.rb' +- './spec/services/bulk_imports/export_service_spec.rb' +- './spec/services/bulk_imports/file_decompression_service_spec.rb' +- './spec/services/bulk_imports/file_download_service_spec.rb' +- './spec/services/bulk_imports/file_export_service_spec.rb' +- './spec/services/bulk_imports/get_importable_data_service_spec.rb' +- './spec/services/bulk_imports/lfs_objects_export_service_spec.rb' +- './spec/services/bulk_imports/relation_export_service_spec.rb' +- './spec/services/bulk_imports/repository_bundle_export_service_spec.rb' +- './spec/services/bulk_imports/tree_export_service_spec.rb' +- './spec/services/bulk_imports/uploads_export_service_spec.rb' +- './spec/services/bulk_push_event_payload_service_spec.rb' +- './spec/services/bulk_update_integration_service_spec.rb' +- './spec/services/captcha/captcha_verification_service_spec.rb' +- './spec/services/chat_names/authorize_user_service_spec.rb' +- './spec/services/chat_names/find_user_service_spec.rb' +- './spec/services/ci/abort_pipelines_service_spec.rb' +- './spec/services/ci/after_requeue_job_service_spec.rb' +- './spec/services/ci/append_build_trace_service_spec.rb' +- './spec/services/ci/archive_trace_service_spec.rb' +- './spec/services/ci/build_cancel_service_spec.rb' +- './spec/services/ci/build_report_result_service_spec.rb' +- './spec/services/ci/build_unschedule_service_spec.rb' +- './spec/services/ci/change_variable_service_spec.rb' +- './spec/services/ci/change_variables_service_spec.rb' +- './spec/services/ci/compare_accessibility_reports_service_spec.rb' +- './spec/services/ci/compare_codequality_reports_service_spec.rb' +- './spec/services/ci/compare_reports_base_service_spec.rb' +- './spec/services/ci/compare_test_reports_service_spec.rb' +- './spec/services/ci/copy_cross_database_associations_service_spec.rb' +- './spec/services/ci/create_downstream_pipeline_service_spec.rb' +- './spec/services/ci/create_pipeline_service/artifacts_spec.rb' +- './spec/services/ci/create_pipeline_service/cache_spec.rb' +- './spec/services/ci/create_pipeline_service/creation_errors_and_warnings_spec.rb' +- './spec/services/ci/create_pipeline_service/cross_project_pipeline_spec.rb' +- './spec/services/ci/create_pipeline_service/custom_config_content_spec.rb' +- './spec/services/ci/create_pipeline_service/custom_yaml_tags_spec.rb' +- './spec/services/ci/create_pipeline_service/dry_run_spec.rb' +- './spec/services/ci/create_pipeline_service/environment_spec.rb' +- './spec/services/ci/create_pipeline_service/evaluate_runner_tags_spec.rb' +- './spec/services/ci/create_pipeline_service/include_spec.rb' +- './spec/services/ci/create_pipeline_service/logger_spec.rb' +- './spec/services/ci/create_pipeline_service/merge_requests_spec.rb' +- './spec/services/ci/create_pipeline_service/needs_spec.rb' +- './spec/services/ci/create_pipeline_service/parallel_spec.rb' +- './spec/services/ci/create_pipeline_service/parameter_content_spec.rb' +- './spec/services/ci/create_pipeline_service/parent_child_pipeline_spec.rb' +- './spec/services/ci/create_pipeline_service/pre_post_stages_spec.rb' +- './spec/services/ci/create_pipeline_service/rate_limit_spec.rb' +- './spec/services/ci/create_pipeline_service/rules_spec.rb' +- './spec/services/ci/create_pipeline_service_spec.rb' +- './spec/services/ci/create_pipeline_service/tags_spec.rb' +- './spec/services/ci/create_web_ide_terminal_service_spec.rb' +- './spec/services/ci/daily_build_group_report_result_service_spec.rb' +- './spec/services/ci/delete_objects_service_spec.rb' +- './spec/services/ci/delete_unit_tests_service_spec.rb' +- './spec/services/ci/deployments/destroy_service_spec.rb' +- './spec/services/ci/destroy_pipeline_service_spec.rb' +- './spec/services/ci/destroy_secure_file_service_spec.rb' +- './spec/services/ci/disable_user_pipeline_schedules_service_spec.rb' +- './spec/services/ci/drop_pipeline_service_spec.rb' +- './spec/services/ci/ensure_stage_service_spec.rb' +- './spec/services/ci/expire_pipeline_cache_service_spec.rb' +- './spec/services/ci/external_pull_requests/create_pipeline_service_spec.rb' +- './spec/services/ci/find_exposed_artifacts_service_spec.rb' +- './spec/services/ci/generate_codequality_mr_diff_report_service_spec.rb' +- './spec/services/ci/generate_coverage_reports_service_spec.rb' +- './spec/services/ci/generate_kubeconfig_service_spec.rb' +- './spec/services/ci/generate_terraform_reports_service_spec.rb' +- './spec/services/ci/job_artifacts/create_service_spec.rb' +- './spec/services/ci/job_artifacts/delete_project_artifacts_service_spec.rb' +- './spec/services/ci/job_artifacts/destroy_all_expired_service_spec.rb' +- './spec/services/ci/job_artifacts/destroy_associations_service_spec.rb' +- './spec/services/ci/job_artifacts/destroy_batch_service_spec.rb' +- './spec/services/ci/job_artifacts/expire_project_build_artifacts_service_spec.rb' +- './spec/services/ci/job_artifacts/update_unknown_locked_status_service_spec.rb' +- './spec/services/ci/job_token_scope/add_project_service_spec.rb' +- './spec/services/ci/job_token_scope/remove_project_service_spec.rb' +- './spec/services/ci/list_config_variables_service_spec.rb' +- './spec/services/ci/parse_dotenv_artifact_service_spec.rb' +- './spec/services/ci/pipeline_artifacts/coverage_report_service_spec.rb' +- './spec/services/ci/pipeline_artifacts/create_code_quality_mr_diff_report_service_spec.rb' +- './spec/services/ci/pipeline_artifacts/destroy_all_expired_service_spec.rb' +- './spec/services/ci/pipeline_bridge_status_service_spec.rb' +- './spec/services/ci/pipeline_creation/start_pipeline_service_spec.rb' +- './spec/services/ci/pipeline_processing/atomic_processing_service_spec.rb' +- './spec/services/ci/pipeline_processing/atomic_processing_service/status_collection_spec.rb' +- './spec/services/ci/pipelines/add_job_service_spec.rb' +- './spec/services/ci/pipeline_schedule_service_spec.rb' +- './spec/services/ci/pipelines/hook_service_spec.rb' +- './spec/services/ci/pipeline_trigger_service_spec.rb' +- './spec/services/ci/play_bridge_service_spec.rb' +- './spec/services/ci/play_build_service_spec.rb' +- './spec/services/ci/play_manual_stage_service_spec.rb' +- './spec/services/ci/prepare_build_service_spec.rb' +- './spec/services/ci/process_build_service_spec.rb' +- './spec/services/ci/process_pipeline_service_spec.rb' +- './spec/services/ci/process_sync_events_service_spec.rb' +- './spec/services/ci/prometheus_metrics/observe_histograms_service_spec.rb' +- './spec/services/ci/register_job_service_spec.rb' +- './spec/services/ci/resource_groups/assign_resource_from_resource_group_service_spec.rb' +- './spec/services/ci/retry_job_service_spec.rb' +- './spec/services/ci/retry_pipeline_service_spec.rb' +- './spec/services/ci/runners/assign_runner_service_spec.rb' +- './spec/services/ci/runners/bulk_delete_runners_service_spec.rb' +- './spec/services/ci/runners/process_runner_version_update_service_spec.rb' +- './spec/services/ci/runners/reconcile_existing_runner_versions_service_spec.rb' +- './spec/services/ci/runners/register_runner_service_spec.rb' +- './spec/services/ci/runners/reset_registration_token_service_spec.rb' +- './spec/services/ci/runners/unassign_runner_service_spec.rb' +- './spec/services/ci/runners/unregister_runner_service_spec.rb' +- './spec/services/ci/runners/update_runner_service_spec.rb' +- './spec/services/ci/run_scheduled_build_service_spec.rb' +- './spec/services/ci/stuck_builds/drop_pending_service_spec.rb' +- './spec/services/ci/stuck_builds/drop_running_service_spec.rb' +- './spec/services/ci/stuck_builds/drop_scheduled_service_spec.rb' +- './spec/services/ci/test_failure_history_service_spec.rb' +- './spec/services/ci/track_failed_build_service_spec.rb' +- './spec/services/ci/unlock_artifacts_service_spec.rb' +- './spec/services/ci/update_build_queue_service_spec.rb' +- './spec/services/ci/update_build_state_service_spec.rb' +- './spec/services/ci/update_instance_variables_service_spec.rb' +- './spec/services/ci/update_pending_build_service_spec.rb' +- './spec/services/clusters/agents/create_activity_event_service_spec.rb' +- './spec/services/clusters/agents/create_service_spec.rb' +- './spec/services/clusters/agents/delete_expired_events_service_spec.rb' +- './spec/services/clusters/agents/delete_service_spec.rb' +- './spec/services/clusters/agents/refresh_authorization_service_spec.rb' +- './spec/services/clusters/agent_tokens/create_service_spec.rb' +- './spec/services/clusters/agent_tokens/track_usage_service_spec.rb' +- './spec/services/clusters/applications/check_ingress_ip_address_service_spec.rb' +- './spec/services/clusters/applications/check_installation_progress_service_spec.rb' +- './spec/services/clusters/applications/check_uninstall_progress_service_spec.rb' +- './spec/services/clusters/applications/check_upgrade_progress_service_spec.rb' +- './spec/services/clusters/applications/create_service_spec.rb' +- './spec/services/clusters/applications/destroy_service_spec.rb' +- './spec/services/clusters/applications/install_service_spec.rb' +- './spec/services/clusters/applications/patch_service_spec.rb' +- './spec/services/clusters/applications/prometheus_config_service_spec.rb' +- './spec/services/clusters/applications/prometheus_update_service_spec.rb' +- './spec/services/clusters/applications/uninstall_service_spec.rb' +- './spec/services/clusters/applications/update_service_spec.rb' +- './spec/services/clusters/applications/upgrade_service_spec.rb' +- './spec/services/clusters/aws/authorize_role_service_spec.rb' +- './spec/services/clusters/aws/fetch_credentials_service_spec.rb' +- './spec/services/clusters/aws/finalize_creation_service_spec.rb' +- './spec/services/clusters/aws/provision_service_spec.rb' +- './spec/services/clusters/aws/verify_provision_status_service_spec.rb' +- './spec/services/clusters/build_kubernetes_namespace_service_spec.rb' +- './spec/services/clusters/build_service_spec.rb' +- './spec/services/clusters/cleanup/project_namespace_service_spec.rb' +- './spec/services/clusters/cleanup/service_account_service_spec.rb' +- './spec/services/clusters/create_service_spec.rb' +- './spec/services/clusters/destroy_service_spec.rb' +- './spec/services/clusters/gcp/fetch_operation_service_spec.rb' +- './spec/services/clusters/gcp/finalize_creation_service_spec.rb' +- './spec/services/clusters/gcp/provision_service_spec.rb' +- './spec/services/clusters/gcp/verify_provision_status_service_spec.rb' +- './spec/services/clusters/integrations/create_service_spec.rb' +- './spec/services/clusters/integrations/prometheus_health_check_service_spec.rb' +- './spec/services/clusters/kubernetes/configure_istio_ingress_service_spec.rb' +- './spec/services/clusters/kubernetes/create_or_update_namespace_service_spec.rb' +- './spec/services/clusters/kubernetes/create_or_update_service_account_service_spec.rb' +- './spec/services/clusters/kubernetes/fetch_kubernetes_token_service_spec.rb' +- './spec/services/clusters/kubernetes_spec.rb' +- './spec/services/clusters/management/validate_management_project_permissions_service_spec.rb' +- './spec/services/clusters/update_service_spec.rb' +- './spec/services/cohorts_service_spec.rb' +- './spec/services/commits/cherry_pick_service_spec.rb' +- './spec/services/commits/commit_patch_service_spec.rb' +- './spec/services/commits/tag_service_spec.rb' +- './spec/services/compare_service_spec.rb' +- './spec/services/concerns/audit_event_save_type_spec.rb' +- './spec/services/concerns/exclusive_lease_guard_spec.rb' +- './spec/services/concerns/merge_requests/assigns_merge_params_spec.rb' +- './spec/services/concerns/rate_limited_service_spec.rb' +- './spec/services/container_expiration_policies/cleanup_service_spec.rb' +- './spec/services/container_expiration_policies/update_service_spec.rb' +- './spec/services/customer_relations/contacts/create_service_spec.rb' +- './spec/services/customer_relations/contacts/update_service_spec.rb' +- './spec/services/customer_relations/organizations/create_service_spec.rb' +- './spec/services/customer_relations/organizations/update_service_spec.rb' +- './spec/services/database/consistency_check_service_spec.rb' +- './spec/services/database/consistency_fix_service_spec.rb' +- './spec/services/dependency_proxy/auth_token_service_spec.rb' +- './spec/services/dependency_proxy/find_cached_manifest_service_spec.rb' +- './spec/services/dependency_proxy/group_settings/update_service_spec.rb' +- './spec/services/dependency_proxy/head_manifest_service_spec.rb' +- './spec/services/dependency_proxy/image_ttl_group_policies/update_service_spec.rb' +- './spec/services/dependency_proxy/request_token_service_spec.rb' +- './spec/services/deploy_keys/create_service_spec.rb' +- './spec/services/deployments/archive_in_project_service_spec.rb' +- './spec/services/deployments/create_for_build_service_spec.rb' +- './spec/services/deployments/create_service_spec.rb' +- './spec/services/deployments/link_merge_requests_service_spec.rb' +- './spec/services/deployments/older_deployments_drop_service_spec.rb' +- './spec/services/deployments/update_environment_service_spec.rb' +- './spec/services/deployments/update_service_spec.rb' +- './spec/services/design_management/copy_design_collection/copy_service_spec.rb' +- './spec/services/design_management/copy_design_collection/queue_service_spec.rb' +- './spec/services/design_management/delete_designs_service_spec.rb' +- './spec/services/design_management/design_user_notes_count_service_spec.rb' +- './spec/services/design_management/generate_image_versions_service_spec.rb' +- './spec/services/design_management/move_designs_service_spec.rb' +- './spec/services/design_management/save_designs_service_spec.rb' +- './spec/services/discussions/capture_diff_note_position_service_spec.rb' +- './spec/services/discussions/capture_diff_note_positions_service_spec.rb' +- './spec/services/discussions/resolve_service_spec.rb' +- './spec/services/discussions/unresolve_service_spec.rb' +- './spec/services/discussions/update_diff_position_service_spec.rb' +- './spec/services/draft_notes/create_service_spec.rb' +- './spec/services/draft_notes/destroy_service_spec.rb' +- './spec/services/draft_notes/publish_service_spec.rb' +- './spec/services/emails/confirm_service_spec.rb' +- './spec/services/emails/create_service_spec.rb' +- './spec/services/emails/destroy_service_spec.rb' +- './spec/services/environments/auto_stop_service_spec.rb' +- './spec/services/environments/canary_ingress/update_service_spec.rb' +- './spec/services/environments/reset_auto_stop_service_spec.rb' +- './spec/services/environments/schedule_to_delete_review_apps_service_spec.rb' +- './spec/services/environments/stop_service_spec.rb' +- './spec/services/error_tracking/base_service_spec.rb' +- './spec/services/error_tracking/collect_error_service_spec.rb' +- './spec/services/error_tracking/issue_details_service_spec.rb' +- './spec/services/error_tracking/issue_latest_event_service_spec.rb' +- './spec/services/error_tracking/issue_update_service_spec.rb' +- './spec/services/error_tracking/list_issues_service_spec.rb' +- './spec/services/error_tracking/list_projects_service_spec.rb' +- './spec/services/event_create_service_spec.rb' +- './spec/services/events/destroy_service_spec.rb' +- './spec/services/events/render_service_spec.rb' +- './spec/services/feature_flags/create_service_spec.rb' +- './spec/services/feature_flags/destroy_service_spec.rb' +- './spec/services/feature_flags/hook_service_spec.rb' +- './spec/services/feature_flags/update_service_spec.rb' +- './spec/services/files/create_service_spec.rb' +- './spec/services/files/delete_service_spec.rb' +- './spec/services/files/multi_service_spec.rb' +- './spec/services/files/update_service_spec.rb' +- './spec/services/git/base_hooks_service_spec.rb' +- './spec/services/git/branch_hooks_service_spec.rb' +- './spec/services/git/branch_push_service_spec.rb' +- './spec/services/git/process_ref_changes_service_spec.rb' +- './spec/services/git/tag_hooks_service_spec.rb' +- './spec/services/git/tag_push_service_spec.rb' +- './spec/services/git/wiki_push_service/change_spec.rb' +- './spec/services/git/wiki_push_service_spec.rb' +- './spec/services/google_cloud/create_cloudsql_instance_service_spec.rb' +- './spec/services/google_cloud/create_service_accounts_service_spec.rb' +- './spec/services/google_cloud/enable_cloud_run_service_spec.rb' +- './spec/services/google_cloud/enable_cloudsql_service_spec.rb' +- './spec/services/google_cloud/gcp_region_add_or_replace_service_spec.rb' +- './spec/services/google_cloud/generate_pipeline_service_spec.rb' +- './spec/services/google_cloud/get_cloudsql_instances_service_spec.rb' +- './spec/services/google_cloud/service_accounts_service_spec.rb' +- './spec/services/google_cloud/setup_cloudsql_instance_service_spec.rb' +- './spec/services/gpg_keys/create_service_spec.rb' +- './spec/services/gpg_keys/destroy_service_spec.rb' +- './spec/services/grafana/proxy_service_spec.rb' +- './spec/services/gravatar_service_spec.rb' +- './spec/services/groups/autocomplete_service_spec.rb' +- './spec/services/groups/auto_devops_service_spec.rb' +- './spec/services/groups/create_service_spec.rb' +- './spec/services/groups/deploy_tokens/create_service_spec.rb' +- './spec/services/groups/deploy_tokens/destroy_service_spec.rb' +- './spec/services/groups/deploy_tokens/revoke_service_spec.rb' +- './spec/services/groups/destroy_service_spec.rb' +- './spec/services/groups/group_links/create_service_spec.rb' +- './spec/services/groups/group_links/destroy_service_spec.rb' +- './spec/services/groups/group_links/update_service_spec.rb' +- './spec/services/groups/import_export/export_service_spec.rb' +- './spec/services/groups/import_export/import_service_spec.rb' +- './spec/services/groups/merge_requests_count_service_spec.rb' +- './spec/services/groups/nested_create_service_spec.rb' +- './spec/services/groups/open_issues_count_service_spec.rb' +- './spec/services/groups/participants_service_spec.rb' +- './spec/services/groups/transfer_service_spec.rb' +- './spec/services/groups/update_service_spec.rb' +- './spec/services/groups/update_shared_runners_service_spec.rb' +- './spec/services/groups/update_statistics_service_spec.rb' +- './spec/services/ide/base_config_service_spec.rb' +- './spec/services/ide/schemas_config_service_spec.rb' +- './spec/services/ide/terminal_config_service_spec.rb' +- './spec/services/import/bitbucket_server_service_spec.rb' +- './spec/services/import_export_clean_up_service_spec.rb' +- './spec/services/import/fogbugz_service_spec.rb' +- './spec/services/import/github/notes/create_service_spec.rb' +- './spec/services/import/github_service_spec.rb' +- './spec/services/import/gitlab_projects/create_project_service_spec.rb' +- './spec/services/import/gitlab_projects/file_acquisition_strategies/file_upload_spec.rb' +- './spec/services/import/gitlab_projects/file_acquisition_strategies/remote_file_s3_spec.rb' +- './spec/services/import/gitlab_projects/file_acquisition_strategies/remote_file_spec.rb' +- './spec/services/import/prepare_service_spec.rb' +- './spec/services/import/validate_remote_git_endpoint_service_spec.rb' +- './spec/services/incident_management/incidents/create_service_spec.rb' +- './spec/services/incident_management/issuable_escalation_statuses/after_update_service_spec.rb' +- './spec/services/incident_management/issuable_escalation_statuses/build_service_spec.rb' +- './spec/services/incident_management/issuable_escalation_statuses/create_service_spec.rb' +- './spec/services/incident_management/issuable_escalation_statuses/prepare_update_service_spec.rb' +- './spec/services/incident_management/pager_duty/create_incident_issue_service_spec.rb' +- './spec/services/incident_management/pager_duty/process_webhook_service_spec.rb' +- './spec/services/incident_management/timeline_events/create_service_spec.rb' +- './spec/services/incident_management/timeline_events/destroy_service_spec.rb' +- './spec/services/incident_management/timeline_events/update_service_spec.rb' +- './spec/services/integrations/propagate_service_spec.rb' +- './spec/services/integrations/test/project_service_spec.rb' +- './spec/services/issuable/bulk_update_service_spec.rb' +- './spec/services/issuable/common_system_notes_service_spec.rb' +- './spec/services/issuable/destroy_label_links_service_spec.rb' +- './spec/services/issuable/destroy_service_spec.rb' +- './spec/services/issuable/process_assignees_spec.rb' +- './spec/services/issue_links/create_service_spec.rb' +- './spec/services/issue_links/destroy_service_spec.rb' +- './spec/services/issue_links/list_service_spec.rb' +- './spec/services/issues/after_create_service_spec.rb' +- './spec/services/issues/build_service_spec.rb' +- './spec/services/issues/clone_service_spec.rb' +- './spec/services/issues/close_service_spec.rb' +- './spec/services/issues/create_service_spec.rb' +- './spec/services/issues/duplicate_service_spec.rb' +- './spec/services/issues/export_csv_service_spec.rb' +- './spec/services/issues/import_csv_service_spec.rb' +- './spec/services/issues/move_service_spec.rb' +- './spec/services/issues/prepare_import_csv_service_spec.rb' +- './spec/services/issues/referenced_merge_requests_service_spec.rb' +- './spec/services/issues/related_branches_service_spec.rb' +- './spec/services/issues/relative_position_rebalancing_service_spec.rb' +- './spec/services/issues/reopen_service_spec.rb' +- './spec/services/issues/reorder_service_spec.rb' +- './spec/services/issues/resolve_discussions_spec.rb' +- './spec/services/issues/set_crm_contacts_service_spec.rb' +- './spec/services/issues/update_service_spec.rb' +- './spec/services/issues/zoom_link_service_spec.rb' +- './spec/services/jira_connect_installations/destroy_service_spec.rb' +- './spec/services/jira_connect_subscriptions/create_service_spec.rb' +- './spec/services/jira_connect/sync_service_spec.rb' +- './spec/services/jira_import/cloud_users_mapper_service_spec.rb' +- './spec/services/jira_import/server_users_mapper_service_spec.rb' +- './spec/services/jira_import/start_import_service_spec.rb' +- './spec/services/jira_import/users_importer_spec.rb' +- './spec/services/jira/requests/projects/list_service_spec.rb' +- './spec/services/keys/create_service_spec.rb' +- './spec/services/keys/destroy_service_spec.rb' +- './spec/services/keys/expiry_notification_service_spec.rb' +- './spec/services/keys/last_used_service_spec.rb' +- './spec/services/labels/available_labels_service_spec.rb' +- './spec/services/labels/create_service_spec.rb' +- './spec/services/labels/find_or_create_service_spec.rb' +- './spec/services/labels/promote_service_spec.rb' +- './spec/services/labels/transfer_service_spec.rb' +- './spec/services/labels/update_service_spec.rb' +- './spec/services/lfs/file_transformer_spec.rb' +- './spec/services/lfs/lock_file_service_spec.rb' +- './spec/services/lfs/locks_finder_service_spec.rb' +- './spec/services/lfs/push_service_spec.rb' +- './spec/services/lfs/unlock_file_service_spec.rb' +- './spec/services/loose_foreign_keys/batch_cleaner_service_spec.rb' +- './spec/services/loose_foreign_keys/cleaner_service_spec.rb' +- './spec/services/markdown_content_rewriter_service_spec.rb' +- './spec/services/members/approve_access_request_service_spec.rb' +- './spec/services/members/create_service_spec.rb' +- './spec/services/members/creator_service_spec.rb' +- './spec/services/members/destroy_service_spec.rb' +- './spec/services/members/groups/creator_service_spec.rb' +- './spec/services/members/import_project_team_service_spec.rb' +- './spec/services/members/invitation_reminder_email_service_spec.rb' +- './spec/services/members/invite_member_builder_spec.rb' +- './spec/services/members/invite_service_spec.rb' +- './spec/services/members/projects/creator_service_spec.rb' +- './spec/services/members/request_access_service_spec.rb' +- './spec/services/members/standard_member_builder_spec.rb' +- './spec/services/members/unassign_issuables_service_spec.rb' +- './spec/services/members/update_service_spec.rb' +- './spec/services/merge_requests/add_context_service_spec.rb' +- './spec/services/merge_requests/add_spent_time_service_spec.rb' +- './spec/services/merge_requests/add_todo_when_build_fails_service_spec.rb' +- './spec/services/merge_requests/after_create_service_spec.rb' +- './spec/services/merge_requests/approval_service_spec.rb' +- './spec/services/merge_requests/assign_issues_service_spec.rb' +- './spec/services/merge_requests/base_service_spec.rb' +- './spec/services/merge_requests/build_service_spec.rb' +- './spec/services/merge_requests/cleanup_refs_service_spec.rb' +- './spec/services/merge_requests/close_service_spec.rb' +- './spec/services/merge_requests/conflicts/list_service_spec.rb' +- './spec/services/merge_requests/conflicts/resolve_service_spec.rb' +- './spec/services/merge_requests/create_approval_event_service_spec.rb' +- './spec/services/merge_requests/create_from_issue_service_spec.rb' +- './spec/services/merge_requests/create_pipeline_service_spec.rb' +- './spec/services/merge_requests/create_service_spec.rb' +- './spec/services/merge_requests/delete_non_latest_diffs_service_spec.rb' +- './spec/services/merge_requests/execute_approval_hooks_service_spec.rb' +- './spec/services/merge_requests/export_csv_service_spec.rb' +- './spec/services/merge_requests/ff_merge_service_spec.rb' +- './spec/services/merge_requests/get_urls_service_spec.rb' +- './spec/services/merge_requests/handle_assignees_change_service_spec.rb' +- './spec/services/merge_requests/link_lfs_objects_service_spec.rb' +- './spec/services/merge_requests/mark_reviewer_reviewed_service_spec.rb' +- './spec/services/merge_requests/mergeability/check_base_service_spec.rb' +- './spec/services/merge_requests/mergeability/check_broken_status_service_spec.rb' +- './spec/services/merge_requests/mergeability/check_ci_status_service_spec.rb' +- './spec/services/merge_requests/mergeability/check_discussions_status_service_spec.rb' +- './spec/services/merge_requests/mergeability/check_draft_status_service_spec.rb' +- './spec/services/merge_requests/mergeability/check_open_status_service_spec.rb' +- './spec/services/merge_requests/mergeability_check_service_spec.rb' +- './spec/services/merge_requests/mergeability/run_checks_service_spec.rb' +- './spec/services/merge_requests/merge_orchestration_service_spec.rb' +- './spec/services/merge_requests/merge_service_spec.rb' +- './spec/services/merge_requests/merge_to_ref_service_spec.rb' +- './spec/services/merge_requests/migrate_external_diffs_service_spec.rb' +- './spec/services/merge_requests/post_merge_service_spec.rb' +- './spec/services/merge_requests/pushed_branches_service_spec.rb' +- './spec/services/merge_requests/push_options_handler_service_spec.rb' +- './spec/services/merge_requests/rebase_service_spec.rb' +- './spec/services/merge_requests/refresh_service_spec.rb' +- './spec/services/merge_requests/reload_diffs_service_spec.rb' +- './spec/services/merge_requests/reload_merge_head_diff_service_spec.rb' +- './spec/services/merge_requests/remove_approval_service_spec.rb' +- './spec/services/merge_requests/reopen_service_spec.rb' +- './spec/services/merge_requests/request_review_service_spec.rb' +- './spec/services/merge_requests/resolved_discussion_notification_service_spec.rb' +- './spec/services/merge_requests/resolve_todos_service_spec.rb' +- './spec/services/merge_requests/retarget_chain_service_spec.rb' +- './spec/services/merge_requests/squash_service_spec.rb' +- './spec/services/merge_requests/update_assignees_service_spec.rb' +- './spec/services/merge_requests/update_reviewers_service_spec.rb' +- './spec/services/merge_requests/update_service_spec.rb' +- './spec/services/metrics/dashboard/annotations/create_service_spec.rb' +- './spec/services/metrics/dashboard/annotations/delete_service_spec.rb' +- './spec/services/metrics/dashboard/clone_dashboard_service_spec.rb' +- './spec/services/metrics/dashboard/cluster_dashboard_service_spec.rb' +- './spec/services/metrics/dashboard/cluster_metrics_embed_service_spec.rb' +- './spec/services/metrics/dashboard/custom_dashboard_service_spec.rb' +- './spec/services/metrics/dashboard/custom_metric_embed_service_spec.rb' +- './spec/services/metrics/dashboard/default_embed_service_spec.rb' +- './spec/services/metrics/dashboard/dynamic_embed_service_spec.rb' +- './spec/services/metrics/dashboard/gitlab_alert_embed_service_spec.rb' +- './spec/services/metrics/dashboard/grafana_metric_embed_service_spec.rb' +- './spec/services/metrics/dashboard/panel_preview_service_spec.rb' +- './spec/services/metrics/dashboard/pod_dashboard_service_spec.rb' +- './spec/services/metrics/dashboard/self_monitoring_dashboard_service_spec.rb' +- './spec/services/metrics/dashboard/system_dashboard_service_spec.rb' +- './spec/services/metrics/dashboard/transient_embed_service_spec.rb' +- './spec/services/metrics/dashboard/update_dashboard_service_spec.rb' +- './spec/services/metrics/sample_metrics_service_spec.rb' +- './spec/services/metrics/users_starred_dashboards/create_service_spec.rb' +- './spec/services/metrics/users_starred_dashboards/delete_service_spec.rb' +- './spec/services/milestones/closed_issues_count_service_spec.rb' +- './spec/services/milestones/close_service_spec.rb' +- './spec/services/milestones/create_service_spec.rb' +- './spec/services/milestones/destroy_service_spec.rb' +- './spec/services/milestones/find_or_create_service_spec.rb' +- './spec/services/milestones/issues_count_service_spec.rb' +- './spec/services/milestones/merge_requests_count_service_spec.rb' +- './spec/services/milestones/promote_service_spec.rb' +- './spec/services/milestones/transfer_service_spec.rb' +- './spec/services/milestones/update_service_spec.rb' +- './spec/services/namespace_settings/update_service_spec.rb' +- './spec/services/namespaces/in_product_marketing_emails_service_spec.rb' +- './spec/services/namespaces/package_settings/update_service_spec.rb' +- './spec/services/namespaces/statistics_refresher_service_spec.rb' +- './spec/services/notes/build_service_spec.rb' +- './spec/services/notes/copy_service_spec.rb' +- './spec/services/notes/create_service_spec.rb' +- './spec/services/notes/destroy_service_spec.rb' +- './spec/services/notes/post_process_service_spec.rb' +- './spec/services/notes/quick_actions_service_spec.rb' +- './spec/services/notes/render_service_spec.rb' +- './spec/services/notes/resolve_service_spec.rb' +- './spec/services/note_summary_spec.rb' +- './spec/services/notes/update_service_spec.rb' +- './spec/services/notification_recipients/builder/default_spec.rb' +- './spec/services/notification_recipients/builder/new_note_spec.rb' +- './spec/services/notification_recipients/build_service_spec.rb' +- './spec/services/notification_service_spec.rb' +- './spec/services/packages/cleanup/execute_policy_service_spec.rb' +- './spec/services/packages/cleanup/update_policy_service_spec.rb' +- './spec/services/packages/composer/composer_json_service_spec.rb' +- './spec/services/packages/composer/create_package_service_spec.rb' +- './spec/services/packages/composer/version_parser_service_spec.rb' +- './spec/services/packages/conan/create_package_file_service_spec.rb' +- './spec/services/packages/conan/create_package_service_spec.rb' +- './spec/services/packages/conan/search_service_spec.rb' +- './spec/services/packages/create_dependency_service_spec.rb' +- './spec/services/packages/create_event_service_spec.rb' +- './spec/services/packages/create_package_file_service_spec.rb' +- './spec/services/packages/create_temporary_package_service_spec.rb' +- './spec/services/packages/debian/create_distribution_service_spec.rb' +- './spec/services/packages/debian/create_package_file_service_spec.rb' +- './spec/services/packages/debian/extract_changes_metadata_service_spec.rb' +- './spec/services/packages/debian/extract_deb_metadata_service_spec.rb' +- './spec/services/packages/debian/extract_metadata_service_spec.rb' +- './spec/services/packages/debian/find_or_create_incoming_service_spec.rb' +- './spec/services/packages/debian/find_or_create_package_service_spec.rb' +- './spec/services/packages/debian/generate_distribution_key_service_spec.rb' +- './spec/services/packages/debian/generate_distribution_service_spec.rb' +- './spec/services/packages/debian/parse_debian822_service_spec.rb' +- './spec/services/packages/debian/process_changes_service_spec.rb' +- './spec/services/packages/debian/sign_distribution_service_spec.rb' +- './spec/services/packages/debian/update_distribution_service_spec.rb' +- './spec/services/packages/generic/create_package_file_service_spec.rb' +- './spec/services/packages/generic/find_or_create_package_service_spec.rb' +- './spec/services/packages/go/create_package_service_spec.rb' +- './spec/services/packages/go/sync_packages_service_spec.rb' +- './spec/services/packages/helm/extract_file_metadata_service_spec.rb' +- './spec/services/packages/helm/process_file_service_spec.rb' +- './spec/services/packages/mark_package_files_for_destruction_service_spec.rb' +- './spec/services/packages/mark_package_for_destruction_service_spec.rb' +- './spec/services/packages/maven/create_package_service_spec.rb' +- './spec/services/packages/maven/find_or_create_package_service_spec.rb' +- './spec/services/packages/maven/metadata/append_package_file_service_spec.rb' +- './spec/services/packages/maven/metadata/create_plugins_xml_service_spec.rb' +- './spec/services/packages/maven/metadata/create_versions_xml_service_spec.rb' +- './spec/services/packages/maven/metadata/sync_service_spec.rb' +- './spec/services/packages/npm/create_package_service_spec.rb' +- './spec/services/packages/npm/create_tag_service_spec.rb' +- './spec/services/packages/nuget/create_dependency_service_spec.rb' +- './spec/services/packages/nuget/metadata_extraction_service_spec.rb' +- './spec/services/packages/nuget/search_service_spec.rb' +- './spec/services/packages/nuget/sync_metadatum_service_spec.rb' +- './spec/services/packages/nuget/update_package_from_metadata_service_spec.rb' +- './spec/services/packages/pypi/create_package_service_spec.rb' +- './spec/services/packages/remove_tag_service_spec.rb' +- './spec/services/packages/rubygems/create_dependencies_service_spec.rb' +- './spec/services/packages/rubygems/create_gemspec_service_spec.rb' +- './spec/services/packages/rubygems/dependency_resolver_service_spec.rb' +- './spec/services/packages/rubygems/metadata_extraction_service_spec.rb' +- './spec/services/packages/rubygems/process_gem_service_spec.rb' +- './spec/services/packages/terraform_module/create_package_service_spec.rb' +- './spec/services/packages/update_package_file_service_spec.rb' +- './spec/services/packages/update_tags_service_spec.rb' +- './spec/services/pages/delete_service_spec.rb' +- './spec/services/pages/destroy_deployments_service_spec.rb' +- './spec/services/pages_domains/create_acme_order_service_spec.rb' +- './spec/services/pages_domains/obtain_lets_encrypt_certificate_service_spec.rb' +- './spec/services/pages_domains/retry_acme_order_service_spec.rb' +- './spec/services/pages/migrate_from_legacy_storage_service_spec.rb' +- './spec/services/pages/migrate_legacy_storage_to_deployment_service_spec.rb' +- './spec/services/pages/zip_directory_service_spec.rb' +- './spec/services/personal_access_tokens/create_service_spec.rb' +- './spec/services/personal_access_tokens/last_used_service_spec.rb' +- './spec/services/personal_access_tokens/revoke_service_spec.rb' +- './spec/services/post_receive_service_spec.rb' +- './spec/services/preview_markdown_service_spec.rb' +- './spec/services/product_analytics/build_activity_graph_service_spec.rb' +- './spec/services/product_analytics/build_graph_service_spec.rb' +- './spec/services/projects/after_rename_service_spec.rb' +- './spec/services/projects/alerting/notify_service_spec.rb' +- './spec/services/projects/all_issues_count_service_spec.rb' +- './spec/services/projects/all_merge_requests_count_service_spec.rb' +- './spec/services/projects/android_target_platform_detector_service_spec.rb' +- './spec/services/projects/apple_target_platform_detector_service_spec.rb' +- './spec/services/projects/autocomplete_service_spec.rb' +- './spec/services/projects/auto_devops/disable_service_spec.rb' +- './spec/services/projects/batch_open_issues_count_service_spec.rb' +- './spec/services/projects/blame_service_spec.rb' +- './spec/services/projects/branches_by_mode_service_spec.rb' +- './spec/services/projects/cleanup_service_spec.rb' +- './spec/services/projects/container_repository/cleanup_tags_service_spec.rb' +- './spec/services/projects/container_repository/delete_tags_service_spec.rb' +- './spec/services/projects/container_repository/destroy_service_spec.rb' +- './spec/services/projects/container_repository/gitlab/delete_tags_service_spec.rb' +- './spec/services/projects/container_repository/third_party/delete_tags_service_spec.rb' +- './spec/services/projects/count_service_spec.rb' +- './spec/services/projects/create_from_template_service_spec.rb' +- './spec/services/projects/create_service_spec.rb' +- './spec/services/projects/deploy_tokens/create_service_spec.rb' +- './spec/services/projects/deploy_tokens/destroy_service_spec.rb' +- './spec/services/projects/destroy_service_spec.rb' +- './spec/services/projects/detect_repository_languages_service_spec.rb' +- './spec/services/projects/download_service_spec.rb' +- './spec/services/projects/enable_deploy_key_service_spec.rb' +- './spec/services/projects/fetch_statistics_increment_service_spec.rb' +- './spec/services/projects/forks_count_service_spec.rb' +- './spec/services/projects/fork_service_spec.rb' +- './spec/services/projects/git_deduplication_service_spec.rb' +- './spec/services/projects/gitlab_projects_import_service_spec.rb' +- './spec/services/projects/group_links/create_service_spec.rb' +- './spec/services/projects/group_links/destroy_service_spec.rb' +- './spec/services/projects/group_links/update_service_spec.rb' +- './spec/services/projects/hashed_storage/base_attachment_service_spec.rb' +- './spec/services/projects/hashed_storage/migrate_attachments_service_spec.rb' +- './spec/services/projects/hashed_storage/migrate_repository_service_spec.rb' +- './spec/services/projects/hashed_storage/migration_service_spec.rb' +- './spec/services/projects/hashed_storage/rollback_attachments_service_spec.rb' +- './spec/services/projects/hashed_storage/rollback_repository_service_spec.rb' +- './spec/services/projects/hashed_storage/rollback_service_spec.rb' +- './spec/services/projects/import_error_filter_spec.rb' +- './spec/services/projects/import_export/export_service_spec.rb' +- './spec/services/projects/import_export/relation_export_service_spec.rb' +- './spec/services/projects/import_service_spec.rb' +- './spec/services/projects/in_product_marketing_campaign_emails_service_spec.rb' +- './spec/services/projects/lfs_pointers/lfs_download_link_list_service_spec.rb' +- './spec/services/projects/lfs_pointers/lfs_download_service_spec.rb' +- './spec/services/projects/lfs_pointers/lfs_import_service_spec.rb' +- './spec/services/projects/lfs_pointers/lfs_link_service_spec.rb' +- './spec/services/projects/lfs_pointers/lfs_object_download_list_service_spec.rb' +- './spec/services/projects/move_access_service_spec.rb' +- './spec/services/projects/move_deploy_keys_projects_service_spec.rb' +- './spec/services/projects/move_forks_service_spec.rb' +- './spec/services/projects/move_lfs_objects_projects_service_spec.rb' +- './spec/services/projects/move_notification_settings_service_spec.rb' +- './spec/services/projects/move_project_authorizations_service_spec.rb' +- './spec/services/projects/move_project_group_links_service_spec.rb' +- './spec/services/projects/move_project_members_service_spec.rb' +- './spec/services/projects/move_users_star_projects_service_spec.rb' +- './spec/services/projects/open_issues_count_service_spec.rb' +- './spec/services/projects/open_merge_requests_count_service_spec.rb' +- './spec/services/projects/operations/update_service_spec.rb' +- './spec/services/projects/overwrite_project_service_spec.rb' +- './spec/services/projects/participants_service_spec.rb' +- './spec/services/projects/prometheus/alerts/notify_service_spec.rb' +- './spec/services/projects/prometheus/metrics/destroy_service_spec.rb' +- './spec/services/projects/protect_default_branch_service_spec.rb' +- './spec/services/projects/readme_renderer_service_spec.rb' +- './spec/services/projects/record_target_platforms_service_spec.rb' +- './spec/services/projects/refresh_build_artifacts_size_statistics_service_spec.rb' +- './spec/services/projects/repository_languages_service_spec.rb' +- './spec/services/projects/schedule_bulk_repository_shard_moves_service_spec.rb' +- './spec/services/projects/transfer_service_spec.rb' +- './spec/services/projects/unlink_fork_service_spec.rb' +- './spec/services/projects/update_pages_service_spec.rb' +- './spec/services/projects/update_remote_mirror_service_spec.rb' +- './spec/services/projects/update_repository_storage_service_spec.rb' +- './spec/services/projects/update_service_spec.rb' +- './spec/services/projects/update_statistics_service_spec.rb' +- './spec/services/prometheus/proxy_service_spec.rb' +- './spec/services/prometheus/proxy_variable_substitution_service_spec.rb' +- './spec/services/protected_branches/cache_service_spec.rb' +- './spec/services/protected_branches/create_service_spec.rb' +- './spec/services/protected_branches/destroy_service_spec.rb' +- './spec/services/protected_branches/update_service_spec.rb' +- './spec/services/protected_tags/create_service_spec.rb' +- './spec/services/protected_tags/destroy_service_spec.rb' +- './spec/services/protected_tags/update_service_spec.rb' +- './spec/services/push_event_payload_service_spec.rb' +- './spec/services/quick_actions/interpret_service_spec.rb' +- './spec/services/quick_actions/target_service_spec.rb' +- './spec/services/releases/create_evidence_service_spec.rb' +- './spec/services/releases/create_service_spec.rb' +- './spec/services/releases/destroy_service_spec.rb' +- './spec/services/releases/update_service_spec.rb' +- './spec/services/repositories/changelog_service_spec.rb' +- './spec/services/repositories/destroy_service_spec.rb' +- './spec/services/repositories/housekeeping_service_spec.rb' +- './spec/services/repository_archive_clean_up_service_spec.rb' +- './spec/services/reset_project_cache_service_spec.rb' +- './spec/services/resource_access_tokens/create_service_spec.rb' +- './spec/services/resource_access_tokens/revoke_service_spec.rb' +- './spec/services/resource_events/change_labels_service_spec.rb' +- './spec/services/resource_events/change_milestone_service_spec.rb' +- './spec/services/resource_events/change_state_service_spec.rb' +- './spec/services/resource_events/merge_into_notes_service_spec.rb' +- './spec/services/resource_events/synthetic_label_notes_builder_service_spec.rb' +- './spec/services/resource_events/synthetic_milestone_notes_builder_service_spec.rb' +- './spec/services/resource_events/synthetic_state_notes_builder_service_spec.rb' +- './spec/services/search/global_service_spec.rb' +- './spec/services/search/group_service_spec.rb' +- './spec/services/search_service_spec.rb' +- './spec/services/search/snippet_service_spec.rb' +- './spec/services/security/ci_configuration/container_scanning_create_service_spec.rb' +- './spec/services/security/ci_configuration/sast_create_service_spec.rb' +- './spec/services/security/ci_configuration/sast_iac_create_service_spec.rb' +- './spec/services/security/ci_configuration/sast_parser_service_spec.rb' +- './spec/services/security/ci_configuration/secret_detection_create_service_spec.rb' +- './spec/services/security/merge_reports_service_spec.rb' +- './spec/services/serverless/associate_domain_service_spec.rb' +- './spec/services/service_desk_settings/update_service_spec.rb' +- './spec/services/service_ping/submit_service_ping_service_spec.rb' +- './spec/services/service_response_spec.rb' +- './spec/services/snippets/bulk_destroy_service_spec.rb' +- './spec/services/snippets/count_service_spec.rb' +- './spec/services/snippets/create_service_spec.rb' +- './spec/services/snippets/destroy_service_spec.rb' +- './spec/services/snippets/repository_validation_service_spec.rb' +- './spec/services/snippets/schedule_bulk_repository_shard_moves_service_spec.rb' +- './spec/services/snippets/update_repository_storage_service_spec.rb' +- './spec/services/snippets/update_service_spec.rb' +- './spec/services/snippets/update_statistics_service_spec.rb' +- './spec/services/spam/akismet_mark_as_spam_service_spec.rb' +- './spec/services/spam/akismet_service_spec.rb' +- './spec/services/spam/ham_service_spec.rb' +- './spec/services/spam/spam_action_service_spec.rb' +- './spec/services/spam/spam_params_spec.rb' +- './spec/services/spam/spam_verdict_service_spec.rb' +- './spec/services/submodules/update_service_spec.rb' +- './spec/services/suggestions/apply_service_spec.rb' +- './spec/services/suggestions/create_service_spec.rb' +- './spec/services/suggestions/outdate_service_spec.rb' +- './spec/services/system_hooks_service_spec.rb' +- './spec/services/system_notes/alert_management_service_spec.rb' +- './spec/services/system_notes/base_service_spec.rb' +- './spec/services/system_notes/commit_service_spec.rb' +- './spec/services/system_notes/design_management_service_spec.rb' +- './spec/services/system_note_service_spec.rb' +- './spec/services/system_notes/incident_service_spec.rb' +- './spec/services/system_notes/incidents_service_spec.rb' +- './spec/services/system_notes/issuables_service_spec.rb' +- './spec/services/system_notes/merge_requests_service_spec.rb' +- './spec/services/system_notes/time_tracking_service_spec.rb' +- './spec/services/system_notes/zoom_service_spec.rb' +- './spec/services/tags/create_service_spec.rb' +- './spec/services/tags/destroy_service_spec.rb' +- './spec/services/task_list_toggle_service_spec.rb' +- './spec/services/tasks_to_be_done/base_service_spec.rb' +- './spec/services/terraform/remote_state_handler_spec.rb' +- './spec/services/terraform/states/destroy_service_spec.rb' +- './spec/services/terraform/states/trigger_destroy_service_spec.rb' +- './spec/services/test_hooks/project_service_spec.rb' +- './spec/services/test_hooks/system_service_spec.rb' +- './spec/services/timelogs/create_service_spec.rb' +- './spec/services/timelogs/delete_service_spec.rb' +- './spec/services/todos/allowed_target_filter_service_spec.rb' +- './spec/services/todos/destroy/confidential_issue_service_spec.rb' +- './spec/services/todos/destroy/design_service_spec.rb' +- './spec/services/todos/destroy/destroyed_issuable_service_spec.rb' +- './spec/services/todos/destroy/entity_leave_service_spec.rb' +- './spec/services/todos/destroy/group_private_service_spec.rb' +- './spec/services/todos/destroy/project_private_service_spec.rb' +- './spec/services/todos/destroy/unauthorized_features_service_spec.rb' +- './spec/services/todo_service_spec.rb' +- './spec/services/topics/merge_service_spec.rb' +- './spec/services/two_factor/destroy_service_spec.rb' +- './spec/services/update_container_registry_info_service_spec.rb' +- './spec/services/update_merge_request_metrics_service_spec.rb' +- './spec/services/uploads/destroy_service_spec.rb' +- './spec/services/upload_service_spec.rb' +- './spec/services/user_preferences/update_service_spec.rb' +- './spec/services/user_project_access_changed_service_spec.rb' +- './spec/services/users/activity_service_spec.rb' +- './spec/services/users/approve_service_spec.rb' +- './spec/services/users/authorized_build_service_spec.rb' +- './spec/services/users/banned_user_base_service_spec.rb' +- './spec/services/users/ban_service_spec.rb' +- './spec/services/users/batch_status_cleaner_service_spec.rb' +- './spec/services/users/block_service_spec.rb' +- './spec/services/users/build_service_spec.rb' +- './spec/services/users/create_service_spec.rb' +- './spec/services/users/destroy_service_spec.rb' +- './spec/services/users/dismiss_callout_service_spec.rb' +- './spec/services/users/dismiss_group_callout_service_spec.rb' +- './spec/services/users/dismiss_namespace_callout_service_spec.rb' +- './spec/services/users/dismiss_project_callout_service_spec.rb' +- './spec/services/users/email_verification/generate_token_service_spec.rb' +- './spec/services/users/email_verification/validate_token_service_spec.rb' +- './spec/services/users/in_product_marketing_email_records_spec.rb' +- './spec/services/users/keys_count_service_spec.rb' +- './spec/services/users/last_push_event_service_spec.rb' +- './spec/services/users/migrate_to_ghost_user_service_spec.rb' +- './spec/services/users/refresh_authorized_projects_service_spec.rb' +- './spec/services/users/registrations_build_service_spec.rb' +- './spec/services/users/reject_service_spec.rb' +- './spec/services/users/repair_ldap_blocked_service_spec.rb' +- './spec/services/users/respond_to_terms_service_spec.rb' +- './spec/services/users/saved_replies/create_service_spec.rb' +- './spec/services/users/saved_replies/destroy_service_spec.rb' +- './spec/services/users/saved_replies/update_service_spec.rb' +- './spec/services/users/set_status_service_spec.rb' +- './spec/services/users/signup_service_spec.rb' +- './spec/services/users/unban_service_spec.rb' +- './spec/services/users/update_canonical_email_service_spec.rb' +- './spec/services/users/update_highest_member_role_service_spec.rb' +- './spec/services/users/update_service_spec.rb' +- './spec/services/users/update_todo_count_cache_service_spec.rb' +- './spec/services/users/upsert_credit_card_validation_service_spec.rb' +- './spec/services/users/validate_manual_otp_service_spec.rb' +- './spec/services/users/validate_push_otp_service_spec.rb' +- './spec/services/verify_pages_domain_service_spec.rb' +- './spec/services/webauthn/authenticate_service_spec.rb' +- './spec/services/webauthn/register_service_spec.rb' +- './spec/services/web_hooks/destroy_service_spec.rb' +- './spec/services/web_hook_service_spec.rb' +- './spec/services/web_hooks/log_destroy_service_spec.rb' +- './spec/services/web_hooks/log_execution_service_spec.rb' +- './spec/services/wiki_pages/base_service_spec.rb' +- './spec/services/wiki_pages/create_service_spec.rb' +- './spec/services/wiki_pages/destroy_service_spec.rb' +- './spec/services/wiki_pages/event_create_service_spec.rb' +- './spec/services/wiki_pages/update_service_spec.rb' +- './spec/services/wikis/create_attachment_service_spec.rb' +- './spec/services/work_items/build_service_spec.rb' +- './spec/services/work_items/create_and_link_service_spec.rb' +- './spec/services/work_items/create_from_task_service_spec.rb' +- './spec/services/work_items/create_service_spec.rb' +- './spec/services/work_items/delete_service_spec.rb' +- './spec/services/work_items/delete_task_service_spec.rb' +- './spec/services/work_items/parent_links/create_service_spec.rb' +- './spec/services/work_items/parent_links/destroy_service_spec.rb' +- './spec/services/work_items/task_list_reference_removal_service_spec.rb' +- './spec/services/work_items/task_list_reference_replacement_service_spec.rb' +- './spec/services/work_items/update_service_spec.rb' +- './spec/services/work_items/widgets/assignees_service/update_service_spec.rb' +- './spec/services/work_items/widgets/description_service/update_service_spec.rb' +- './spec/services/work_items/widgets/hierarchy_service/update_service_spec.rb' +- './spec/services/work_items/widgets/start_and_due_date_service/update_service_spec.rb' +- './spec/services/x509_certificate_revoke_service_spec.rb' +- './spec/sidekiq_cluster/sidekiq_cluster_spec.rb' +- './spec/sidekiq/cron/job_gem_dependency_spec.rb' +- './spec/spam/concerns/has_spam_action_response_fields_spec.rb' +- './spec/support_specs/database/multiple_databases_spec.rb' +- './spec/support_specs/database/prevent_cross_joins_spec.rb' +- './spec/support_specs/graphql/arguments_spec.rb' +- './spec/support_specs/graphql/field_selection_spec.rb' +- './spec/support_specs/graphql/var_spec.rb' +- './spec/support_specs/helpers/active_record/query_recorder_spec.rb' +- './spec/support_specs/helpers/graphql_helpers_spec.rb' +- './spec/support_specs/helpers/migrations_helpers_spec.rb' +- './spec/support_specs/helpers/redis_commands/recorder_spec.rb' +- './spec/support_specs/helpers/stub_feature_flags_spec.rb' +- './spec/support_specs/helpers/stub_method_calls_spec.rb' +- './spec/support_specs/matchers/be_sorted_spec.rb' +- './spec/support_specs/matchers/exceed_query_limit_helpers_spec.rb' +- './spec/support_specs/time_travel_spec.rb' +- './spec/tasks/admin_mode_spec.rb' +- './spec/tasks/cache/clear/redis_spec.rb' +- './spec/tasks/config_lint_spec.rb' +- './spec/tasks/dev_rake_spec.rb' +- './spec/tasks/gettext_rake_spec.rb' +- './spec/tasks/gitlab/artifacts/check_rake_spec.rb' +- './spec/tasks/gitlab/artifacts/migrate_rake_spec.rb' +- './spec/tasks/gitlab/background_migrations_rake_spec.rb' +- './spec/tasks/gitlab/backup_rake_spec.rb' +- './spec/tasks/gitlab/check_rake_spec.rb' +- './spec/tasks/gitlab/cleanup_rake_spec.rb' +- './spec/tasks/gitlab/container_registry_rake_spec.rb' +- './spec/tasks/gitlab/db/decomposition/rollback/bump_ci_sequences_rake_spec.rb' +- './spec/tasks/gitlab/db/lock_writes_rake_spec.rb' +- './spec/tasks/gitlab/db_rake_spec.rb' +- './spec/tasks/gitlab/db/validate_config_rake_spec.rb' +- './spec/tasks/gitlab/dependency_proxy/migrate_rake_spec.rb' +- './spec/tasks/gitlab/external_diffs_rake_spec.rb' +- './spec/tasks/gitlab/generate_sample_prometheus_data_spec.rb' +- './spec/tasks/gitlab/gitaly_rake_spec.rb' +- './spec/tasks/gitlab/git_rake_spec.rb' +- './spec/tasks/gitlab/ldap_rake_spec.rb' +- './spec/tasks/gitlab/lfs/check_rake_spec.rb' +- './spec/tasks/gitlab/lfs/migrate_rake_spec.rb' +- './spec/tasks/gitlab/packages/events_rake_spec.rb' +- './spec/tasks/gitlab/packages/migrate_rake_spec.rb' +- './spec/tasks/gitlab/pages_rake_spec.rb' +- './spec/tasks/gitlab/password_rake_spec.rb' +- './spec/tasks/gitlab/praefect_rake_spec.rb' +- './spec/tasks/gitlab/refresh_project_statistics_build_artifacts_size_rake_spec.rb' +- './spec/tasks/gitlab/seed/group_seed_rake_spec.rb' +- './spec/tasks/gitlab/setup_rake_spec.rb' +- './spec/tasks/gitlab/shell_rake_spec.rb' +- './spec/tasks/gitlab/sidekiq_rake_spec.rb' +- './spec/tasks/gitlab/smtp_rake_spec.rb' +- './spec/tasks/gitlab/snippets_rake_spec.rb' +- './spec/tasks/gitlab/storage_rake_spec.rb' +- './spec/tasks/gitlab/task_helpers_spec.rb' +- './spec/tasks/gitlab/terraform/migrate_rake_spec.rb' +- './spec/tasks/gitlab/update_templates_rake_spec.rb' +- './spec/tasks/gitlab/uploads/check_rake_spec.rb' +- './spec/tasks/gitlab/uploads/migrate_rake_spec.rb' +- './spec/tasks/gitlab/usage_data_rake_spec.rb' +- './spec/tasks/gitlab/user_management_rake_spec.rb' +- './spec/tasks/gitlab/web_hook_rake_spec.rb' +- './spec/tasks/gitlab/workhorse_rake_spec.rb' +- './spec/tasks/gitlab/x509/update_rake_spec.rb' +- './spec/tasks/migrate/schema_check_rake_spec.rb' +- './spec/tasks/rubocop_rake_spec.rb' +- './spec/tasks/tokens_spec.rb' +- './spec/tooling/danger/customer_success_spec.rb' +- './spec/tooling/danger/datateam_spec.rb' +- './spec/tooling/danger/feature_flag_spec.rb' +- './spec/tooling/danger/product_intelligence_spec.rb' +- './spec/tooling/danger/project_helper_spec.rb' +- './spec/tooling/danger/sidekiq_queues_spec.rb' +- './spec/tooling/danger/specs_spec.rb' +- './spec/tooling/docs/deprecation_handling_spec.rb' +- './spec/tooling/graphql/docs/renderer_spec.rb' +- './spec/tooling/lib/tooling/crystalball/coverage_lines_execution_detector_spec.rb' +- './spec/tooling/lib/tooling/crystalball/coverage_lines_strategy_spec.rb' +- './spec/tooling/lib/tooling/find_codeowners_spec.rb' +- './spec/tooling/lib/tooling/helm3_client_spec.rb' +- './spec/tooling/lib/tooling/kubernetes_client_spec.rb' +- './spec/tooling/lib/tooling/parallel_rspec_runner_spec.rb' +- './spec/tooling/lib/tooling/test_map_generator_spec.rb' +- './spec/tooling/lib/tooling/test_map_packer_spec.rb' +- './spec/tooling/merge_request_spec.rb' +- './spec/tooling/quality/test_level_spec.rb' +- './spec/tooling/rspec_flaky/config_spec.rb' +- './spec/tooling/rspec_flaky/example_spec.rb' +- './spec/tooling/rspec_flaky/flaky_examples_collection_spec.rb' +- './spec/tooling/rspec_flaky/flaky_example_spec.rb' +- './spec/tooling/rspec_flaky/listener_spec.rb' +- './spec/tooling/rspec_flaky/report_spec.rb' +- './spec/uploaders/attachment_uploader_spec.rb' +- './spec/uploaders/avatar_uploader_spec.rb' +- './spec/uploaders/ci/pipeline_artifact_uploader_spec.rb' +- './spec/uploaders/ci/secure_file_uploader_spec.rb' +- './spec/uploaders/content_type_whitelist_spec.rb' +- './spec/uploaders/dependency_proxy/file_uploader_spec.rb' +- './spec/uploaders/design_management/design_v432x230_uploader_spec.rb' +- './spec/uploaders/external_diff_uploader_spec.rb' +- './spec/uploaders/favicon_uploader_spec.rb' +- './spec/uploaders/file_mover_spec.rb' +- './spec/uploaders/file_uploader_spec.rb' +- './spec/uploaders/gitlab_uploader_spec.rb' +- './spec/uploaders/import_export_uploader_spec.rb' +- './spec/uploaders/job_artifact_uploader_spec.rb' +- './spec/uploaders/lfs_object_uploader_spec.rb' +- './spec/uploaders/metric_image_uploader_spec.rb' +- './spec/uploaders/namespace_file_uploader_spec.rb' +- './spec/uploaders/object_storage_spec.rb' +- './spec/uploaders/packages/composer/cache_uploader_spec.rb' +- './spec/uploaders/packages/debian/component_file_uploader_spec.rb' +- './spec/uploaders/packages/debian/distribution_release_file_uploader_spec.rb' +- './spec/uploaders/packages/package_file_uploader_spec.rb' +- './spec/uploaders/pages/deployment_uploader_spec.rb' +- './spec/uploaders/personal_file_uploader_spec.rb' +- './spec/uploaders/records_uploads_spec.rb' +- './spec/uploaders/terraform/state_uploader_spec.rb' +- './spec/uploaders/uploader_helper_spec.rb' +- './spec/uploaders/workers/object_storage/background_move_worker_spec.rb' +- './spec/uploaders/workers/object_storage/migrate_uploads_worker_spec.rb' +- './spec/validators/addressable_url_validator_spec.rb' +- './spec/validators/any_field_validator_spec.rb' +- './spec/validators/array_members_validator_spec.rb' +- './spec/validators/branch_filter_validator_spec.rb' +- './spec/validators/color_validator_spec.rb' +- './spec/validators/cron_freeze_period_timezone_validator_spec.rb' +- './spec/validators/cron_validator_spec.rb' +- './spec/validators/devise_email_validator_spec.rb' +- './spec/validators/future_date_validator_spec.rb' +- './spec/validators/gitlab/zoom_url_validator_spec.rb' +- './spec/validators/html_safety_validator_spec.rb' +- './spec/validators/import/gitlab_projects/remote_file_validator_spec.rb' +- './spec/validators/ip_address_validator_spec.rb' +- './spec/validators/json_schema_validator_spec.rb' +- './spec/validators/js_regex_validator_spec.rb' +- './spec/validators/named_ecdsa_key_validator_spec.rb' +- './spec/validators/namespace_path_validator_spec.rb' +- './spec/validators/nested_attributes_duplicates_validator_spec.rb' +- './spec/validators/project_path_validator_spec.rb' +- './spec/validators/public_url_validator_spec.rb' +- './spec/validators/qualified_domain_array_validator_spec.rb' +- './spec/validators/rsa_key_validator_spec.rb' +- './spec/validators/sha_validator_spec.rb' +- './spec/validators/system_hook_url_validator_spec.rb' +- './spec/validators/x509_certificate_credentials_validator_spec.rb' +- './spec/views/admin/application_settings/_ci_cd.html.haml_spec.rb' +- './spec/views/admin/application_settings/ci_cd.html.haml_spec.rb' +- './spec/views/admin/application_settings/_eks.html.haml_spec.rb' +- './spec/views/admin/application_settings/general.html.haml_spec.rb' +- './spec/views/admin/application_settings/_package_registry.html.haml_spec.rb' +- './spec/views/admin/application_settings/_repository_check.html.haml_spec.rb' +- './spec/views/admin/application_settings/repository.html.haml_spec.rb' +- './spec/views/admin/application_settings/_repository_storage.html.haml_spec.rb' +- './spec/views/admin/broadcast_messages/index.html.haml_spec.rb' +- './spec/views/admin/dashboard/index.html.haml_spec.rb' +- './spec/views/admin/identities/index.html.haml_spec.rb' +- './spec/views/admin/sessions/new.html.haml_spec.rb' +- './spec/views/admin/sessions/two_factor.html.haml_spec.rb' +- './spec/views/ci/status/_badge.html.haml_spec.rb' +- './spec/views/ci/status/_icon.html.haml_spec.rb' +- './spec/views/dashboard/milestones/index.html.haml_spec.rb' +- './spec/views/dashboard/projects/_blank_state_admin_welcome.haml_spec.rb' +- './spec/views/dashboard/projects/_blank_state_welcome.html.haml_spec.rb' +- './spec/views/dashboard/projects/index.html.haml_spec.rb' +- './spec/views/dashboard/projects/_nav.html.haml_spec.rb' +- './spec/views/devise/sessions/new.html.haml_spec.rb' +- './spec/views/devise/shared/_signin_box.html.haml_spec.rb' +- './spec/views/devise/shared/_signup_box.html.haml_spec.rb' +- './spec/views/errors/access_denied.html.haml_spec.rb' +- './spec/views/errors/omniauth_error.html.haml_spec.rb' +- './spec/views/events/event/_push.html.haml_spec.rb' +- './spec/views/groups/edit.html.haml_spec.rb' +- './spec/views/groups/group_members/index.html.haml_spec.rb' +- './spec/views/groups/_home_panel.html.haml_spec.rb' +- './spec/views/groups/milestones/index.html.haml_spec.rb' +- './spec/views/groups/new.html.haml_spec.rb' +- './spec/views/groups/settings/_remove.html.haml_spec.rb' +- './spec/views/help/index.html.haml_spec.rb' +- './spec/views/help/instance_configuration.html.haml_spec.rb' +- './spec/views/help/show.html.haml_spec.rb' +- './spec/views/import/gitlab_projects/new.html.haml_spec.rb' +- './spec/views/layouts/application.html.haml_spec.rb' +- './spec/views/layouts/devise_empty.html.haml_spec.rb' +- './spec/views/layouts/devise.html.haml_spec.rb' +- './spec/views/layouts/_flash.html.haml_spec.rb' +- './spec/views/layouts/fullscreen.html.haml_spec.rb' +- './spec/views/layouts/header/_gitlab_version.html.haml_spec.rb' +- './spec/views/layouts/header/_new_dropdown.haml_spec.rb' +- './spec/views/layouts/_header_search.html.haml_spec.rb' +- './spec/views/layouts/_head.html.haml_spec.rb' +- './spec/views/layouts/nav/sidebar/_admin.html.haml_spec.rb' +- './spec/views/layouts/nav/sidebar/_group.html.haml_spec.rb' +- './spec/views/layouts/nav/sidebar/_profile.html.haml_spec.rb' +- './spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb' +- './spec/views/layouts/profile.html.haml_spec.rb' +- './spec/views/layouts/_published_experiments.html.haml_spec.rb' +- './spec/views/layouts/_search.html.haml_spec.rb' +- './spec/views/layouts/signup_onboarding.html.haml_spec.rb' +- './spec/views/layouts/simple_registration.html.haml_spec.rb' +- './spec/views/layouts/terms.html.haml_spec.rb' +- './spec/views/notify/autodevops_disabled_email.text.erb_spec.rb' +- './spec/views/notify/changed_milestone_email.html.haml_spec.rb' +- './spec/views/notify/change_in_merge_request_draft_status_email.html.haml_spec.rb' +- './spec/views/notify/change_in_merge_request_draft_status_email.text.erb_spec.rb' +- './spec/views/notify/pipeline_failed_email.html.haml_spec.rb' +- './spec/views/notify/pipeline_failed_email.text.erb_spec.rb' +- './spec/views/notify/pipeline_fixed_email.html.haml_spec.rb' +- './spec/views/notify/pipeline_fixed_email.text.erb_spec.rb' +- './spec/views/notify/pipeline_success_email.html.haml_spec.rb' +- './spec/views/notify/pipeline_success_email.text.erb_spec.rb' +- './spec/views/notify/push_to_merge_request_email.text.haml_spec.rb' +- './spec/views/profiles/audit_log.html.haml_spec.rb' +- './spec/views/profiles/keys/_form.html.haml_spec.rb' +- './spec/views/profiles/keys/_key.html.haml_spec.rb' +- './spec/views/profiles/notifications/show.html.haml_spec.rb' +- './spec/views/profiles/preferences/show.html.haml_spec.rb' +- './spec/views/profiles/show.html.haml_spec.rb' +- './spec/views/projects/artifacts/_artifact.html.haml_spec.rb' +- './spec/views/projects/blob/_viewer.html.haml_spec.rb' +- './spec/views/projects/branches/index.html.haml_spec.rb' +- './spec/views/projects/commit/branches.html.haml_spec.rb' +- './spec/views/projects/commit/_commit_box.html.haml_spec.rb' +- './spec/views/projects/commits/_commit.html.haml_spec.rb' +- './spec/views/projects/commit/show.html.haml_spec.rb' +- './spec/views/projects/commits/show.html.haml_spec.rb' +- './spec/views/projects/diffs/_viewer.html.haml_spec.rb' +- './spec/views/projects/edit.html.haml_spec.rb' +- './spec/views/projects/empty.html.haml_spec.rb' +- './spec/views/projects/environments/terminal.html.haml_spec.rb' +- './spec/views/projects/_flash_messages.html.haml_spec.rb' +- './spec/views/projects/_home_panel.html.haml_spec.rb' +- './spec/views/projects/hooks/edit.html.haml_spec.rb' +- './spec/views/projects/hooks/index.html.haml_spec.rb' +- './spec/views/projects/imports/new.html.haml_spec.rb' +- './spec/views/projects/issues/_issue.html.haml_spec.rb' +- './spec/views/projects/issues/_related_branches.html.haml_spec.rb' +- './spec/views/projects/issues/_service_desk_info_content.html.haml_spec.rb' +- './spec/views/projects/issues/show.html.haml_spec.rb' +- './spec/views/projects/jobs/_build.html.haml_spec.rb' +- './spec/views/projects/jobs/_generic_commit_status.html.haml_spec.rb' +- './spec/views/projects/jobs/show.html.haml_spec.rb' +- './spec/views/projects/merge_requests/_commits.html.haml_spec.rb' +- './spec/views/projects/merge_requests/creations/_new_submit.html.haml_spec.rb' +- './spec/views/projects/merge_requests/edit.html.haml_spec.rb' +- './spec/views/projects/merge_requests/show.html.haml_spec.rb' +- './spec/views/projects/milestones/index.html.haml_spec.rb' +- './spec/views/projects/notes/_more_actions_dropdown.html.haml_spec.rb' +- './spec/views/projects/pages_domains/show.html.haml_spec.rb' +- './spec/views/projects/pages/new.html.haml_spec.rb' +- './spec/views/projects/pages/show.html.haml_spec.rb' +- './spec/views/projects/pipeline_schedules/_pipeline_schedule.html.haml_spec.rb' +- './spec/views/projects/pipelines/show.html.haml_spec.rb' +- './spec/views/projects/project_members/index.html.haml_spec.rb' +- './spec/views/projects/runners/_specific_runners.html.haml_spec.rb' +- './spec/views/projects/settings/ci_cd/_autodevops_form.html.haml_spec.rb' +- './spec/views/projects/settings/integrations/edit.html.haml_spec.rb' +- './spec/views/projects/settings/operations/show.html.haml_spec.rb' +- './spec/views/projects/tags/index.html.haml_spec.rb' +- './spec/views/projects/tree/show.html.haml_spec.rb' +- './spec/views/registrations/welcome/show.html.haml_spec.rb' +- './spec/views/search/_results.html.haml_spec.rb' +- './spec/views/search/show.html.haml_spec.rb' +- './spec/views/shared/access_tokens/_table.html.haml_spec.rb' +- './spec/views/shared/deploy_tokens/_form.html.haml_spec.rb' +- './spec/views/shared/groups/_dropdown.html.haml_spec.rb' +- './spec/views/shared/issuable/_sidebar.html.haml_spec.rb' +- './spec/views/shared/_label_row.html.haml_spec.rb' +- './spec/views/shared/milestones/_issuable.html.haml_spec.rb' +- './spec/views/shared/milestones/_issuables.html.haml_spec.rb' +- './spec/views/shared/_milestones_sort_dropdown.html.haml_spec.rb' +- './spec/views/shared/milestones/_top.html.haml_spec.rb' +- './spec/views/shared/nav/_sidebar.html.haml_spec.rb' +- './spec/views/shared/notes/_form.html.haml_spec.rb' +- './spec/views/shared/projects/_inactive_project_deletion_alert.html.haml_spec.rb' +- './spec/views/shared/projects/_list.html.haml_spec.rb' +- './spec/views/shared/projects/_project.html.haml_spec.rb' +- './spec/views/shared/runners/_runner_details.html.haml_spec.rb' +- './spec/views/shared/snippets/_snippet.html.haml_spec.rb' +- './spec/views/shared/ssh_keys/_key_details.html.haml_spec.rb' +- './spec/views/shared/wikis/_sidebar.html.haml_spec.rb' +- './spec/workers/admin_email_worker_spec.rb' +- './spec/workers/analytics/usage_trends/counter_job_worker_spec.rb' +- './spec/workers/analytics/usage_trends/count_job_trigger_worker_spec.rb' +- './spec/workers/approve_blocked_pending_approval_users_worker_spec.rb' +- './spec/workers/authorized_keys_worker_spec.rb' +- './spec/workers/authorized_projects_worker_spec.rb' +- './spec/workers/authorized_project_update/periodic_recalculate_worker_spec.rb' +- './spec/workers/authorized_project_update/project_recalculate_per_user_worker_spec.rb' +- './spec/workers/authorized_project_update/project_recalculate_worker_spec.rb' +- './spec/workers/authorized_project_update/user_refresh_from_replica_worker_spec.rb' +- './spec/workers/authorized_project_update/user_refresh_over_user_range_worker_spec.rb' +- './spec/workers/authorized_project_update/user_refresh_with_low_urgency_worker_spec.rb' +- './spec/workers/auto_devops/disable_worker_spec.rb' +- './spec/workers/auto_merge_process_worker_spec.rb' +- './spec/workers/background_migration/ci_database_worker_spec.rb' +- './spec/workers/background_migration_worker_spec.rb' +- './spec/workers/build_hooks_worker_spec.rb' +- './spec/workers/build_queue_worker_spec.rb' +- './spec/workers/build_success_worker_spec.rb' +- './spec/workers/bulk_imports/entity_worker_spec.rb' +- './spec/workers/bulk_imports/export_request_worker_spec.rb' +- './spec/workers/bulk_imports/pipeline_worker_spec.rb' +- './spec/workers/bulk_imports/relation_export_worker_spec.rb' +- './spec/workers/bulk_imports/stuck_import_worker_spec.rb' +- './spec/workers/bulk_import_worker_spec.rb' +- './spec/workers/chat_notification_worker_spec.rb' +- './spec/workers/ci/archive_traces_cron_worker_spec.rb' +- './spec/workers/ci/archive_trace_worker_spec.rb' +- './spec/workers/ci/build_finished_worker_spec.rb' +- './spec/workers/ci/build_prepare_worker_spec.rb' +- './spec/workers/ci/build_schedule_worker_spec.rb' +- './spec/workers/ci/build_trace_chunk_flush_worker_spec.rb' +- './spec/workers/ci/cancel_pipeline_worker_spec.rb' +- './spec/workers/ci/create_cross_project_pipeline_worker_spec.rb' +- './spec/workers/ci/create_downstream_pipeline_worker_spec.rb' +- './spec/workers/ci/daily_build_group_report_results_worker_spec.rb' +- './spec/workers/ci/delete_objects_worker_spec.rb' +- './spec/workers/ci/delete_unit_tests_worker_spec.rb' +- './spec/workers/ci/drop_pipeline_worker_spec.rb' +- './spec/workers/ci/external_pull_requests/create_pipeline_worker_spec.rb' +- './spec/workers/ci/initial_pipeline_process_worker_spec.rb' +- './spec/workers/ci/job_artifacts/expire_project_build_artifacts_worker_spec.rb' +- './spec/workers/ci/merge_requests/add_todo_when_build_fails_worker_spec.rb' +- './spec/workers/ci/pending_builds/update_group_worker_spec.rb' +- './spec/workers/ci/pending_builds/update_project_worker_spec.rb' +- './spec/workers/ci/pipeline_artifacts/coverage_report_worker_spec.rb' +- './spec/workers/ci/pipeline_artifacts/create_quality_report_worker_spec.rb' +- './spec/workers/ci/pipeline_artifacts/expire_artifacts_worker_spec.rb' +- './spec/workers/ci/pipeline_bridge_status_worker_spec.rb' +- './spec/workers/ci/pipeline_success_unlock_artifacts_worker_spec.rb' +- './spec/workers/ci_platform_metrics_update_cron_worker_spec.rb' +- './spec/workers/ci/ref_delete_unlock_artifacts_worker_spec.rb' +- './spec/workers/ci/resource_groups/assign_resource_from_resource_group_worker_spec.rb' +- './spec/workers/ci/retry_pipeline_worker_spec.rb' +- './spec/workers/ci/runners/process_runner_version_update_worker_spec.rb' +- './spec/workers/ci/runners/reconcile_existing_runner_versions_cron_worker_spec.rb' +- './spec/workers/ci/schedule_delete_objects_cron_worker_spec.rb' +- './spec/workers/ci/stuck_builds/drop_running_worker_spec.rb' +- './spec/workers/ci/stuck_builds/drop_scheduled_worker_spec.rb' +- './spec/workers/ci/test_failure_history_worker_spec.rb' +- './spec/workers/ci/track_failed_build_worker_spec.rb' +- './spec/workers/ci/update_locked_unknown_artifacts_worker_spec.rb' +- './spec/workers/cleanup_container_repository_worker_spec.rb' +- './spec/workers/cluster_configure_istio_worker_spec.rb' +- './spec/workers/cluster_provision_worker_spec.rb' +- './spec/workers/clusters/agents/delete_expired_events_worker_spec.rb' +- './spec/workers/clusters/applications/activate_integration_worker_spec.rb' +- './spec/workers/clusters/applications/deactivate_integration_worker_spec.rb' +- './spec/workers/clusters/applications/wait_for_uninstall_app_worker_spec.rb' +- './spec/workers/clusters/cleanup/project_namespace_worker_spec.rb' +- './spec/workers/clusters/cleanup/service_account_worker_spec.rb' +- './spec/workers/clusters/integrations/check_prometheus_health_worker_spec.rb' +- './spec/workers/cluster_update_app_worker_spec.rb' +- './spec/workers/cluster_wait_for_app_update_worker_spec.rb' +- './spec/workers/cluster_wait_for_ingress_ip_address_worker_spec.rb' +- './spec/workers/concerns/application_worker_spec.rb' +- './spec/workers/concerns/cluster_agent_queue_spec.rb' +- './spec/workers/concerns/cronjob_queue_spec.rb' +- './spec/workers/concerns/gitlab/github_import/object_importer_spec.rb' +- './spec/workers/concerns/gitlab/github_import/rescheduling_methods_spec.rb' +- './spec/workers/concerns/gitlab/github_import/stage_methods_spec.rb' +- './spec/workers/concerns/gitlab/notify_upon_death_spec.rb' +- './spec/workers/concerns/limited_capacity/job_tracker_spec.rb' +- './spec/workers/concerns/limited_capacity/worker_spec.rb' +- './spec/workers/concerns/packages/cleanup_artifact_worker_spec.rb' +- './spec/workers/concerns/project_import_options_spec.rb' +- './spec/workers/concerns/reenqueuer_spec.rb' +- './spec/workers/concerns/repository_check_queue_spec.rb' +- './spec/workers/concerns/waitable_worker_spec.rb' +- './spec/workers/concerns/worker_attributes_spec.rb' +- './spec/workers/concerns/worker_context_spec.rb' +- './spec/workers/container_expiration_policies/cleanup_container_repository_worker_spec.rb' +- './spec/workers/container_expiration_policy_worker_spec.rb' +- './spec/workers/container_registry/migration/enqueuer_worker_spec.rb' +- './spec/workers/container_registry/migration/guard_worker_spec.rb' +- './spec/workers/container_registry/migration/observer_worker_spec.rb' +- './spec/workers/create_commit_signature_worker_spec.rb' +- './spec/workers/create_note_diff_file_worker_spec.rb' +- './spec/workers/create_pipeline_worker_spec.rb' +- './spec/workers/database/batched_background_migration/ci_database_worker_spec.rb' +- './spec/workers/database/batched_background_migration_worker_spec.rb' +- './spec/workers/database/ci_namespace_mirrors_consistency_check_worker_spec.rb' +- './spec/workers/database/ci_project_mirrors_consistency_check_worker_spec.rb' +- './spec/workers/database/drop_detached_partitions_worker_spec.rb' +- './spec/workers/database/partition_management_worker_spec.rb' +- './spec/workers/delete_container_repository_worker_spec.rb' +- './spec/workers/delete_diff_files_worker_spec.rb' +- './spec/workers/delete_merged_branches_worker_spec.rb' +- './spec/workers/delete_user_worker_spec.rb' +- './spec/workers/dependency_proxy/cleanup_blob_worker_spec.rb' +- './spec/workers/dependency_proxy/cleanup_dependency_proxy_worker_spec.rb' +- './spec/workers/dependency_proxy/cleanup_manifest_worker_spec.rb' +- './spec/workers/dependency_proxy/image_ttl_group_policy_worker_spec.rb' +- './spec/workers/deployments/archive_in_project_worker_spec.rb' +- './spec/workers/deployments/drop_older_deployments_worker_spec.rb' +- './spec/workers/deployments/hooks_worker_spec.rb' +- './spec/workers/deployments/link_merge_request_worker_spec.rb' +- './spec/workers/deployments/update_environment_worker_spec.rb' +- './spec/workers/design_management/copy_design_collection_worker_spec.rb' +- './spec/workers/design_management/new_version_worker_spec.rb' +- './spec/workers/destroy_pages_deployments_worker_spec.rb' +- './spec/workers/detect_repository_languages_worker_spec.rb' +- './spec/workers/disallow_two_factor_for_group_worker_spec.rb' +- './spec/workers/disallow_two_factor_for_subgroups_worker_spec.rb' +- './spec/workers/email_receiver_worker_spec.rb' +- './spec/workers/emails_on_push_worker_spec.rb' +- './spec/workers/environments/auto_delete_cron_worker_spec.rb' +- './spec/workers/environments/auto_stop_cron_worker_spec.rb' +- './spec/workers/environments/auto_stop_worker_spec.rb' +- './spec/workers/environments/canary_ingress/update_worker_spec.rb' +- './spec/workers/error_tracking_issue_link_worker_spec.rb' +- './spec/workers/every_sidekiq_worker_spec.rb' +- './spec/workers/experiments/record_conversion_event_worker_spec.rb' +- './spec/workers/expire_build_artifacts_worker_spec.rb' +- './spec/workers/export_csv_worker_spec.rb' +- './spec/workers/external_service_reactive_caching_worker_spec.rb' +- './spec/workers/file_hook_worker_spec.rb' +- './spec/workers/flush_counter_increments_worker_spec.rb' +- './spec/workers/gitlab/github_import/advance_stage_worker_spec.rb' +- './spec/workers/gitlab/github_import/import_diff_note_worker_spec.rb' +- './spec/workers/gitlab/github_import/import_issue_event_worker_spec.rb' +- './spec/workers/gitlab/github_import/import_issue_worker_spec.rb' +- './spec/workers/gitlab/github_import/import_note_worker_spec.rb' +- './spec/workers/gitlab/github_import/import_pull_request_merged_by_worker_spec.rb' +- './spec/workers/gitlab/github_import/import_pull_request_review_worker_spec.rb' +- './spec/workers/gitlab/github_import/import_pull_request_worker_spec.rb' +- './spec/workers/gitlab/github_import/refresh_import_jid_worker_spec.rb' +- './spec/workers/gitlab/github_import/stage/finish_import_worker_spec.rb' +- './spec/workers/gitlab/github_import/stage/import_base_data_worker_spec.rb' +- './spec/workers/gitlab/github_import/stage/import_issue_events_worker_spec.rb' +- './spec/workers/gitlab/github_import/stage/import_issues_and_diff_notes_worker_spec.rb' +- './spec/workers/gitlab/github_import/stage/import_lfs_objects_worker_spec.rb' +- './spec/workers/gitlab/github_import/stage/import_notes_worker_spec.rb' +- './spec/workers/gitlab/github_import/stage/import_pull_requests_merged_by_worker_spec.rb' +- './spec/workers/gitlab/github_import/stage/import_pull_requests_reviews_worker_spec.rb' +- './spec/workers/gitlab/github_import/stage/import_pull_requests_worker_spec.rb' +- './spec/workers/gitlab/github_import/stage/import_repository_worker_spec.rb' +- './spec/workers/gitlab/import/stuck_import_job_spec.rb' +- './spec/workers/gitlab/import/stuck_project_import_jobs_worker_spec.rb' +- './spec/workers/gitlab/jira_import/import_issue_worker_spec.rb' +- './spec/workers/gitlab/jira_import/stage/finish_import_worker_spec.rb' +- './spec/workers/gitlab/jira_import/stage/import_attachments_worker_spec.rb' +- './spec/workers/gitlab/jira_import/stage/import_issues_worker_spec.rb' +- './spec/workers/gitlab/jira_import/stage/import_labels_worker_spec.rb' +- './spec/workers/gitlab/jira_import/stage/import_notes_worker_spec.rb' +- './spec/workers/gitlab/jira_import/stage/start_import_worker_spec.rb' +- './spec/workers/gitlab/jira_import/stuck_jira_import_jobs_worker_spec.rb' +- './spec/workers/gitlab_performance_bar_stats_worker_spec.rb' +- './spec/workers/gitlab/phabricator_import/base_worker_spec.rb' +- './spec/workers/gitlab/phabricator_import/import_tasks_worker_spec.rb' +- './spec/workers/gitlab_service_ping_worker_spec.rb' +- './spec/workers/gitlab_shell_worker_spec.rb' +- './spec/workers/google_cloud/create_cloudsql_instance_worker_spec.rb' +- './spec/workers/group_destroy_worker_spec.rb' +- './spec/workers/group_export_worker_spec.rb' +- './spec/workers/group_import_worker_spec.rb' +- './spec/workers/groups/update_statistics_worker_spec.rb' +- './spec/workers/hashed_storage/migrator_worker_spec.rb' +- './spec/workers/hashed_storage/project_migrate_worker_spec.rb' +- './spec/workers/hashed_storage/project_rollback_worker_spec.rb' +- './spec/workers/hashed_storage/rollbacker_worker_spec.rb' +- './spec/workers/import_issues_csv_worker_spec.rb' +- './spec/workers/incident_management/add_severity_system_note_worker_spec.rb' +- './spec/workers/incident_management/close_incident_worker_spec.rb' +- './spec/workers/incident_management/pager_duty/process_incident_worker_spec.rb' +- './spec/workers/incident_management/process_alert_worker_v2_spec.rb' +- './spec/workers/integrations/create_external_cross_reference_worker_spec.rb' +- './spec/workers/integrations/execute_worker_spec.rb' +- './spec/workers/integrations/irker_worker_spec.rb' +- './spec/workers/invalid_gpg_signature_update_worker_spec.rb' +- './spec/workers/issuable_export_csv_worker_spec.rb' +- './spec/workers/issuable/label_links_destroy_worker_spec.rb' +- './spec/workers/issuables/clear_groups_issue_counter_worker_spec.rb' +- './spec/workers/issue_due_scheduler_worker_spec.rb' +- './spec/workers/issues/placement_worker_spec.rb' +- './spec/workers/issues/rebalancing_worker_spec.rb' +- './spec/workers/issues/reschedule_stuck_issue_rebalances_worker_spec.rb' +- './spec/workers/jira_connect/forward_event_worker_spec.rb' +- './spec/workers/jira_connect/retry_request_worker_spec.rb' +- './spec/workers/jira_connect/sync_branch_worker_spec.rb' +- './spec/workers/jira_connect/sync_builds_worker_spec.rb' +- './spec/workers/jira_connect/sync_deployments_worker_spec.rb' +- './spec/workers/jira_connect/sync_feature_flags_worker_spec.rb' +- './spec/workers/jira_connect/sync_merge_request_worker_spec.rb' +- './spec/workers/jira_connect/sync_project_worker_spec.rb' +- './spec/workers/loose_foreign_keys/cleanup_worker_spec.rb' +- './spec/workers/mail_scheduler/issue_due_worker_spec.rb' +- './spec/workers/mail_scheduler/notification_service_worker_spec.rb' +- './spec/workers/member_invitation_reminder_emails_worker_spec.rb' +- './spec/workers/members_destroyer/unassign_issuables_worker_spec.rb' +- './spec/workers/merge_request_cleanup_refs_worker_spec.rb' +- './spec/workers/merge_request_mergeability_check_worker_spec.rb' +- './spec/workers/merge_requests/close_issue_worker_spec.rb' +- './spec/workers/merge_requests/create_approval_event_worker_spec.rb' +- './spec/workers/merge_requests/create_approval_note_worker_spec.rb' +- './spec/workers/merge_requests/create_pipeline_worker_spec.rb' +- './spec/workers/merge_requests/delete_source_branch_worker_spec.rb' +- './spec/workers/merge_requests/execute_approval_hooks_worker_spec.rb' +- './spec/workers/merge_requests/handle_assignees_change_worker_spec.rb' +- './spec/workers/merge_requests/resolve_todos_after_approval_worker_spec.rb' +- './spec/workers/merge_requests/resolve_todos_worker_spec.rb' +- './spec/workers/merge_requests/update_head_pipeline_worker_spec.rb' +- './spec/workers/merge_worker_spec.rb' +- './spec/workers/metrics/dashboard/prune_old_annotations_worker_spec.rb' +- './spec/workers/metrics/dashboard/schedule_annotations_prune_worker_spec.rb' +- './spec/workers/metrics/dashboard/sync_dashboards_worker_spec.rb' +- './spec/workers/migrate_external_diffs_worker_spec.rb' +- './spec/workers/namespaces/in_product_marketing_emails_worker_spec.rb' +- './spec/workers/namespaces/onboarding_issue_created_worker_spec.rb' +- './spec/workers/namespaces/onboarding_pipeline_created_worker_spec.rb' +- './spec/workers/namespaces/onboarding_progress_worker_spec.rb' +- './spec/workers/namespaces/onboarding_user_added_worker_spec.rb' +- './spec/workers/namespaces/process_sync_events_worker_spec.rb' +- './spec/workers/namespaces/prune_aggregation_schedules_worker_spec.rb' +- './spec/workers/namespaces/root_statistics_worker_spec.rb' +- './spec/workers/namespaces/schedule_aggregation_worker_spec.rb' +- './spec/workers/namespaces/update_root_statistics_worker_spec.rb' +- './spec/workers/new_issue_worker_spec.rb' +- './spec/workers/new_merge_request_worker_spec.rb' +- './spec/workers/new_note_worker_spec.rb' +- './spec/workers/object_pool/create_worker_spec.rb' +- './spec/workers/object_pool/destroy_worker_spec.rb' +- './spec/workers/object_pool/join_worker_spec.rb' +- './spec/workers/packages/cleanup/execute_policy_worker_spec.rb' +- './spec/workers/packages/cleanup_package_file_worker_spec.rb' +- './spec/workers/packages/cleanup_package_registry_worker_spec.rb' +- './spec/workers/packages/composer/cache_cleanup_worker_spec.rb' +- './spec/workers/packages/composer/cache_update_worker_spec.rb' +- './spec/workers/packages/debian/generate_distribution_worker_spec.rb' +- './spec/workers/packages/debian/process_changes_worker_spec.rb' +- './spec/workers/packages/go/sync_packages_worker_spec.rb' +- './spec/workers/packages/helm/extraction_worker_spec.rb' +- './spec/workers/packages/mark_package_files_for_destruction_worker_spec.rb' +- './spec/workers/packages/maven/metadata/sync_worker_spec.rb' +- './spec/workers/packages/nuget/extraction_worker_spec.rb' +- './spec/workers/packages/rubygems/extraction_worker_spec.rb' +- './spec/workers/pages_domain_removal_cron_worker_spec.rb' +- './spec/workers/pages_domain_ssl_renewal_cron_worker_spec.rb' +- './spec/workers/pages_domain_ssl_renewal_worker_spec.rb' +- './spec/workers/pages_domain_verification_cron_worker_spec.rb' +- './spec/workers/pages_domain_verification_worker_spec.rb' +- './spec/workers/pages/invalidate_domain_cache_worker_spec.rb' +- './spec/workers/pages_worker_spec.rb' +- './spec/workers/partition_creation_worker_spec.rb' +- './spec/workers/personal_access_tokens/expired_notification_worker_spec.rb' +- './spec/workers/personal_access_tokens/expiring_worker_spec.rb' +- './spec/workers/pipeline_hooks_worker_spec.rb' +- './spec/workers/pipeline_metrics_worker_spec.rb' +- './spec/workers/pipeline_notification_worker_spec.rb' +- './spec/workers/pipeline_process_worker_spec.rb' +- './spec/workers/pipeline_schedule_worker_spec.rb' +- './spec/workers/post_receive_spec.rb' +- './spec/workers/process_commit_worker_spec.rb' +- './spec/workers/project_cache_worker_spec.rb' +- './spec/workers/project_destroy_worker_spec.rb' +- './spec/workers/project_export_worker_spec.rb' +- './spec/workers/projects/after_import_worker_spec.rb' +- './spec/workers/projects/git_garbage_collect_worker_spec.rb' +- './spec/workers/projects/import_export/relation_export_worker_spec.rb' +- './spec/workers/projects/inactive_projects_deletion_cron_worker_spec.rb' +- './spec/workers/projects/inactive_projects_deletion_notification_worker_spec.rb' +- './spec/workers/projects/post_creation_worker_spec.rb' +- './spec/workers/projects/process_sync_events_worker_spec.rb' +- './spec/workers/projects/record_target_platforms_worker_spec.rb' +- './spec/workers/projects/refresh_build_artifacts_size_statistics_worker_spec.rb' +- './spec/workers/projects/schedule_bulk_repository_shard_moves_worker_spec.rb' +- './spec/workers/projects/schedule_refresh_build_artifacts_size_statistics_worker_spec.rb' +- './spec/workers/projects/update_repository_storage_worker_spec.rb' +- './spec/workers/propagate_integration_group_worker_spec.rb' +- './spec/workers/propagate_integration_inherit_descendant_worker_spec.rb' +- './spec/workers/propagate_integration_inherit_worker_spec.rb' +- './spec/workers/propagate_integration_project_worker_spec.rb' +- './spec/workers/propagate_integration_worker_spec.rb' +- './spec/workers/prune_old_events_worker_spec.rb' +- './spec/workers/purge_dependency_proxy_cache_worker_spec.rb' +- './spec/workers/reactive_caching_worker_spec.rb' +- './spec/workers/rebase_worker_spec.rb' +- './spec/workers/releases/create_evidence_worker_spec.rb' +- './spec/workers/releases/manage_evidence_worker_spec.rb' +- './spec/workers/remote_mirror_notification_worker_spec.rb' +- './spec/workers/remove_expired_group_links_worker_spec.rb' +- './spec/workers/remove_expired_members_worker_spec.rb' +- './spec/workers/remove_unaccepted_member_invites_worker_spec.rb' +- './spec/workers/remove_unreferenced_lfs_objects_worker_spec.rb' +- './spec/workers/repository_check/batch_worker_spec.rb' +- './spec/workers/repository_check/clear_worker_spec.rb' +- './spec/workers/repository_check/dispatch_worker_spec.rb' +- './spec/workers/repository_check/single_repository_worker_spec.rb' +- './spec/workers/repository_cleanup_worker_spec.rb' +- './spec/workers/repository_fork_worker_spec.rb' +- './spec/workers/repository_import_worker_spec.rb' +- './spec/workers/repository_update_remote_mirror_worker_spec.rb' +- './spec/workers/run_pipeline_schedule_worker_spec.rb' +- './spec/workers/schedule_merge_request_cleanup_refs_worker_spec.rb' +- './spec/workers/schedule_migrate_external_diffs_worker_spec.rb' +- './spec/workers/self_monitoring_project_create_worker_spec.rb' +- './spec/workers/self_monitoring_project_delete_worker_spec.rb' +- './spec/workers/service_desk_email_receiver_worker_spec.rb' +- './spec/workers/snippets/schedule_bulk_repository_shard_moves_worker_spec.rb' +- './spec/workers/snippets/update_repository_storage_worker_spec.rb' +- './spec/workers/ssh_keys/expired_notification_worker_spec.rb' +- './spec/workers/ssh_keys/expiring_soon_notification_worker_spec.rb' +- './spec/workers/stage_update_worker_spec.rb' +- './spec/workers/stuck_ci_jobs_worker_spec.rb' +- './spec/workers/stuck_export_jobs_worker_spec.rb' +- './spec/workers/stuck_merge_jobs_worker_spec.rb' +- './spec/workers/system_hook_push_worker_spec.rb' +- './spec/workers/tasks_to_be_done/create_worker_spec.rb' +- './spec/workers/terraform/states/destroy_worker_spec.rb' +- './spec/workers/todos_destroyer/confidential_issue_worker_spec.rb' +- './spec/workers/todos_destroyer/destroyed_designs_worker_spec.rb' +- './spec/workers/todos_destroyer/destroyed_issuable_worker_spec.rb' +- './spec/workers/todos_destroyer/entity_leave_worker_spec.rb' +- './spec/workers/todos_destroyer/group_private_worker_spec.rb' +- './spec/workers/todos_destroyer/private_features_worker_spec.rb' +- './spec/workers/todos_destroyer/project_private_worker_spec.rb' +- './spec/workers/trending_projects_worker_spec.rb' +- './spec/workers/update_container_registry_info_worker_spec.rb' +- './spec/workers/update_external_pull_requests_worker_spec.rb' +- './spec/workers/update_head_pipeline_for_merge_request_worker_spec.rb' +- './spec/workers/update_highest_role_worker_spec.rb' +- './spec/workers/update_merge_requests_worker_spec.rb' +- './spec/workers/update_project_statistics_worker_spec.rb' +- './spec/workers/upload_checksum_worker_spec.rb' +- './spec/workers/users/create_statistics_worker_spec.rb' +- './spec/workers/users/deactivate_dormant_users_worker_spec.rb' +- './spec/workers/user_status_cleanup/batch_worker_spec.rb' +- './spec/workers/wait_for_cluster_creation_worker_spec.rb' +- './spec/workers/web_hooks/log_destroy_worker_spec.rb' +- './spec/workers/web_hook_worker_spec.rb' +- './spec/workers/wikis/git_garbage_collect_worker_spec.rb' +- './spec/workers/x509_certificate_revoke_worker_spec.rb' +- './spec/workers/x509_issuer_crl_check_worker_spec.rb' diff --git a/spec/support/seed.rb b/spec/support/seed.rb deleted file mode 100644 index 36cb819763b..00000000000 --- a/spec/support/seed.rb +++ /dev/null @@ -1,9 +0,0 @@ -# frozen_string_literal: true - -RSpec.configure do |config| - config.include SeedHelper, :seed_helper - - config.before(:all, :seed_helper) do - ensure_seeds - end -end diff --git a/spec/support/shared_contexts/bulk_imports_requests_shared_context.rb b/spec/support/shared_contexts/bulk_imports_requests_shared_context.rb index 5fcb14e075a..2f74d3131ab 100644 --- a/spec/support/shared_contexts/bulk_imports_requests_shared_context.rb +++ b/spec/support/shared_contexts/bulk_imports_requests_shared_context.rb @@ -25,15 +25,15 @@ RSpec.shared_context 'bulk imports requests context' do |url| stub_request(:get, "https://gitlab.example.com/api/v4/groups?min_access_level=50&page=1&per_page=20&private_token=demo-pat&search=test&top_level_only=true") .with(headers: request_headers) .to_return(status: 200, - body: [{ - id: 2595440, - web_url: 'https://gitlab.com/groups/test', - name: 'Test', - path: 'stub-test-group', - full_name: 'Test', - full_path: 'stub-test-group' - }].to_json, - headers: page_response_headers) + body: [{ + id: 2595440, + web_url: 'https://gitlab.com/groups/test', + name: 'Test', + path: 'stub-test-group', + full_name: 'Test', + full_path: 'stub-test-group' + }].to_json, + headers: page_response_headers) stub_request(:get, "%{url}/api/v4/groups?min_access_level=50&page=1&per_page=20&private_token=demo-pat&search=&top_level_only=true" % { url: url }) .to_return( diff --git a/spec/support/shared_contexts/design_management_shared_contexts.rb b/spec/support/shared_contexts/design_management_shared_contexts.rb index e6ae7e03664..d89bcada1df 100644 --- a/spec/support/shared_contexts/design_management_shared_contexts.rb +++ b/spec/support/shared_contexts/design_management_shared_contexts.rb @@ -14,23 +14,23 @@ RSpec.shared_context 'four designs in three versions' do let_it_be(:first_version) do create(:design_version, issue: issue, - created_designs: [design_a], - modified_designs: [], - deleted_designs: []) + created_designs: [design_a], + modified_designs: [], + deleted_designs: []) end let_it_be(:second_version) do create(:design_version, issue: issue, - created_designs: [design_b, design_c, design_d], - modified_designs: [design_a], - deleted_designs: []) + created_designs: [design_b, design_c, design_d], + modified_designs: [design_a], + deleted_designs: []) end let_it_be(:third_version) do create(:design_version, issue: issue, - created_designs: [], - modified_designs: [design_a], - deleted_designs: [design_d]) + created_designs: [], + modified_designs: [design_a], + deleted_designs: [design_d]) end before do diff --git a/spec/support/shared_contexts/finders/merge_requests_finder_shared_contexts.rb b/spec/support/shared_contexts/finders/merge_requests_finder_shared_contexts.rb index 4c003dff947..91b6baac610 100644 --- a/spec/support/shared_contexts/finders/merge_requests_finder_shared_contexts.rb +++ b/spec/support/shared_contexts/finders/merge_requests_finder_shared_contexts.rb @@ -55,33 +55,33 @@ RSpec.shared_context 'MergeRequestsFinder multiple projects with merge requests let!(:merge_request1) do create(:merge_request, assignees: [user], author: user, reviewers: [user2], - source_project: project2, target_project: project1, - target_branch: 'merged-target') + source_project: project2, target_project: project1, + target_branch: 'merged-target') end let!(:merge_request2) do create(:merge_request, :conflict, assignees: [user], author: user, reviewers: [user2], - source_project: project2, target_project: project1, - state: 'closed') + source_project: project2, target_project: project1, + state: 'closed') end let!(:merge_request3) do create(:merge_request, :simple, author: user, assignees: [user2], reviewers: [user], - source_project: project2, target_project: project2, - state: 'locked', - title: 'thing WIP thing') + source_project: project2, target_project: project2, + state: 'locked', + title: 'thing WIP thing') end let!(:merge_request4) do create(:merge_request, :simple, author: user, - source_project: project3, target_project: project3, - title: 'WIP thing') + source_project: project3, target_project: project3, + title: 'WIP thing') end let_it_be(:merge_request5) do create(:merge_request, :simple, author: user, - source_project: project4, target_project: project4, - title: '[WIP]') + source_project: project4, target_project: project4, + title: '[WIP]') end let!(:label_link) { create(:label_link, label: label, target: merge_request2) } diff --git a/spec/support/shared_contexts/markdown_snapshot_shared_examples.rb b/spec/support/shared_contexts/glfm/api_markdown_snapshot_shared_context.rb index 040b2da9f37..3623fa0850d 100644 --- a/spec/support/shared_contexts/markdown_snapshot_shared_examples.rb +++ b/spec/support/shared_contexts/glfm/api_markdown_snapshot_shared_context.rb @@ -1,31 +1,28 @@ # frozen_string_literal: true -require 'spec_helper' +require_relative '../../../../scripts/lib/glfm/constants' # See https://docs.gitlab.com/ee/development/gitlab_flavored_markdown/specification_guide/#markdown-snapshot-testing # for documentation on this spec. -# rubocop:disable Layout/LineLength -RSpec.shared_context 'with API::Markdown Snapshot shared context' do |glfm_specification_dir| - # rubocop:enable Layout/LineLength - include ApiHelpers - - let_it_be(:user) { create(:user) } - let_it_be(:api_url) { api('/markdown', user) } +RSpec.shared_context 'with API::Markdown Snapshot shared context' do |ee_only: false| + include_context 'with GLFM example snapshot fixtures' - markdown_examples, html_examples = %w[markdown.yml html.yml].map do |file_name| - yaml = File.read("#{glfm_specification_dir}/example_snapshots/#{file_name}") - YAML.safe_load(yaml, symbolize_names: true, aliases: true) - end + include ApiHelpers - normalizations_yaml = File.read( - "#{glfm_specification_dir}/input/gitlab_flavored_markdown/glfm_example_normalizations.yml") - normalizations_by_example_name = YAML.safe_load(normalizations_yaml, symbolize_names: true, aliases: true) + markdown_examples, html_examples, normalizations_by_example_name, metadata_by_example_name = [ + Glfm::Constants::ES_MARKDOWN_YML_PATH, + Glfm::Constants::ES_HTML_YML_PATH, + Glfm::Constants::GLFM_EXAMPLE_NORMALIZATIONS_YML_PATH, + Glfm::Constants::GLFM_EXAMPLE_METADATA_YML_PATH + ].map { |path| YAML.safe_load(File.open(path), symbolize_names: true, aliases: true) } if (focused_markdown_examples_string = ENV['FOCUSED_MARKDOWN_EXAMPLES']) focused_markdown_examples = focused_markdown_examples_string.split(',').map(&:strip).map(&:to_sym) markdown_examples.select! { |example_name| focused_markdown_examples.include?(example_name) } end + markdown_examples.select! { |example_name| !!metadata_by_example_name&.dig(example_name, :ee) == ee_only } + markdown_examples.each do |name, markdown| context "for #{name}" do let(:html) { html_examples.fetch(name).fetch(:static) } @@ -34,13 +31,13 @@ RSpec.shared_context 'with API::Markdown Snapshot shared context' do |glfm_speci it "verifies conversion of GLFM to HTML", :unlimited_max_formatted_output_length do # noinspection RubyResolve normalized_html = normalize_html(html, normalizations) + api_url = metadata_by_example_name&.dig(name, :api_request_override_path) || (api "/markdown") post api_url, params: { text: markdown, gfm: true } expect(response).to be_successful - response_body = Gitlab::Json.parse(response.body) - # Some requests have the HTML in the `html` key, others in the `body` key. - response_html = response_body['body'] ? response_body.fetch('body') : response_body.fetch('html') - # noinspection RubyResolve + parsed_response = Gitlab::Json.parse(response.body, symbolize_names: true) + # Some responses have the HTML in the `html` key, others in the `body` key. + response_html = parsed_response[:body] || parsed_response[:html] normalized_response_html = normalize_html(response_html, normalizations) expect(normalized_response_html).to eq(normalized_html) diff --git a/spec/support/shared_contexts/glfm/example_snapshot_fixtures.rb b/spec/support/shared_contexts/glfm/example_snapshot_fixtures.rb new file mode 100644 index 00000000000..22b401bc841 --- /dev/null +++ b/spec/support/shared_contexts/glfm/example_snapshot_fixtures.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +RSpec.shared_context 'with GLFM example snapshot fixtures' do + let_it_be(:user) { create(:user) } + let_it_be(:group) { create(:group, name: 'glfm_group').tap { |group| group.add_owner(user) } } + + let_it_be(:project) do + # NOTE: We hardcode the IDs on all fixtures to prevent variability in the + # rendered HTML/Prosemirror JSON, and to minimize the need for normalization: + # https://docs.gitlab.com/ee/development/gitlab_flavored_markdown/specification_guide/#normalization + create(:project, :repository, creator: user, group: group, name: 'glfm_project', id: 77777) + end + + let_it_be(:project_snippet) { create(:project_snippet, title: 'glfm_project_snippet', id: 88888, project: project) } + let_it_be(:personal_snippet) { create(:snippet, id: 99999) } + + before do + # Set 'GITLAB_TEST_FOOTNOTE_ID' in order to override random number generation in + # Banzai::Filter::FootnoteFilter#random_number, and thus avoid the need to + # perform normalization on the value. See: + # https://docs.gitlab.com/ee/development/gitlab_flavored_markdown/specification_guide/#normalization + stub_env('GITLAB_TEST_FOOTNOTE_ID', 42) + + stub_licensed_features(group_wikis: true) + sign_in(user) + end +end diff --git a/spec/support/shared_contexts/graphql/requests/packages_shared_context.rb b/spec/support/shared_contexts/graphql/requests/packages_shared_context.rb index b29a231f3a6..d7cfdc09732 100644 --- a/spec/support/shared_contexts/graphql/requests/packages_shared_context.rb +++ b/spec/support/shared_contexts/graphql/requests/packages_shared_context.rb @@ -16,8 +16,8 @@ RSpec.shared_context 'package details setup' do let(:metadata_response) { graphql_data_at(:package, :metadata) } let(:first_file) { package.package_files.find { |f| a_graphql_entity_for(f).matches?(first_file_response) } } let(:package_files_response) { graphql_data_at(:package, :package_files, :nodes) } - let(:first_file_response) { graphql_data_at(:package, :package_files, :nodes, 0)} - let(:first_file_response_metadata) { graphql_data_at(:package, :package_files, :nodes, 0, :file_metadata)} + let(:first_file_response) { graphql_data_at(:package, :package_files, :nodes, 0) } + let(:first_file_response_metadata) { graphql_data_at(:package, :package_files, :nodes, 0, :file_metadata) } let(:query) do graphql_query_for(:package, { id: package_global_id }, <<~FIELDS) diff --git a/spec/support/shared_contexts/markdown_golden_master_shared_examples.rb b/spec/support/shared_contexts/markdown_golden_master_shared_examples.rb index dea03af2248..168aef0f174 100644 --- a/spec/support/shared_contexts/markdown_golden_master_shared_examples.rb +++ b/spec/support/shared_contexts/markdown_golden_master_shared_examples.rb @@ -42,7 +42,7 @@ RSpec.shared_context 'API::Markdown Golden Master shared context' do |markdown_y if focused_markdown_examples_string = ENV['FOCUSED_MARKDOWN_EXAMPLES'] focused_markdown_examples = focused_markdown_examples_string.split(',').map(&:strip) || [] - markdown_examples.reject! {|markdown_example| !focused_markdown_examples.include?(markdown_example.fetch(:name)) } + markdown_examples.reject! { |markdown_example| !focused_markdown_examples.include?(markdown_example.fetch(:name)) } end markdown_examples.each do |markdown_example| diff --git a/spec/support/shared_contexts/navbar_structure_context.rb b/spec/support/shared_contexts/navbar_structure_context.rb index 6c2ed79b343..064e40287be 100644 --- a/spec/support/shared_contexts/navbar_structure_context.rb +++ b/spec/support/shared_contexts/navbar_structure_context.rb @@ -109,8 +109,9 @@ RSpec.shared_context 'project navbar structure' do _('Webhooks'), _('Access Tokens'), _('Repository'), + _('Merge requests'), _('CI/CD'), - _('Packages & Registries'), + _('Packages and registries'), _('Monitor'), s_('UsageQuota|Usage Quotas') ] @@ -139,7 +140,17 @@ RSpec.shared_context 'group navbar structure' do _('Repository'), _('CI/CD'), _('Applications'), - _('Packages & Registries') + _('Packages and registries'), + _('Domain Verification') + ] + } + end + + let(:settings_for_maintainer_nav_item) do + { + nav_item: _('Settings'), + nav_sub_items: [ + _('Repository') ] } end @@ -162,13 +173,6 @@ RSpec.shared_context 'group navbar structure' do } end - let(:push_rules_nav_item) do - { - nav_item: _('Push Rules'), - nav_sub_items: [] - } - end - let(:ci_cd_nav_item) do { nav_item: _('CI/CD'), @@ -210,7 +214,6 @@ RSpec.shared_context 'group navbar structure' do nav_sub_items: [] }, (security_and_compliance_nav_item if Gitlab.ee?), - (push_rules_nav_item if Gitlab.ee?), { nav_item: _('Kubernetes'), nav_sub_items: [] diff --git a/spec/support/shared_contexts/policies/project_policy_shared_context.rb b/spec/support/shared_contexts/policies/project_policy_shared_context.rb index 1d4731d9b39..fc7255a4a20 100644 --- a/spec/support/shared_contexts/policies/project_policy_shared_context.rb +++ b/spec/support/shared_contexts/policies/project_policy_shared_context.rb @@ -6,13 +6,19 @@ RSpec.shared_context 'ProjectPolicy context' do let_it_be(:reporter) { create(:user) } let_it_be(:developer) { create(:user) } let_it_be(:maintainer) { create(:user) } + let_it_be(:inherited_guest) { create(:user) } + let_it_be(:inherited_reporter) { create(:user) } + let_it_be(:inherited_developer) { create(:user) } + let_it_be(:inherited_maintainer) { create(:user) } let_it_be(:owner) { create(:user) } let_it_be(:admin) { create(:admin) } let_it_be(:non_member) { create(:user) } + let_it_be_with_refind(:group) { create(:group, :public) } let_it_be_with_refind(:private_project) { create(:project, :private, namespace: owner.namespace) } let_it_be_with_refind(:internal_project) { create(:project, :internal, namespace: owner.namespace) } let_it_be_with_refind(:public_project) { create(:project, :public, namespace: owner.namespace) } - let_it_be_with_refind(:public_project_in_group) { create(:project, :public, namespace: create(:group, :public)) } + let_it_be_with_refind(:public_project_in_group) { create(:project, :public, namespace: group) } + let_it_be_with_refind(:private_project_in_group) { create(:project, :private, namespace: group) } let(:base_guest_permissions) do %i[ @@ -95,6 +101,11 @@ RSpec.shared_context 'ProjectPolicy context' do let(:owner_permissions) { base_owner_permissions + additional_owner_permissions } before_all do + group.add_guest(inherited_guest) + group.add_reporter(inherited_reporter) + group.add_developer(inherited_developer) + group.add_maintainer(inherited_maintainer) + [private_project, internal_project, public_project, public_project_in_group].each do |project| project.add_guest(guest) project.add_reporter(reporter) diff --git a/spec/support/shared_contexts/projects/container_repository/cleanup_tags_service_shared_context.rb b/spec/support/shared_contexts/projects/container_repository/cleanup_tags_service_shared_context.rb new file mode 100644 index 00000000000..c976bbe9212 --- /dev/null +++ b/spec/support/shared_contexts/projects/container_repository/cleanup_tags_service_shared_context.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +RSpec.shared_context 'for a cleanup tags service' do + def expected_service_response(status: :success, deleted: [], original_size: tags.size) + { + status: status, + deleted: deleted, + original_size: original_size, + before_delete_size: deleted&.size + }.compact.merge(deleted_size: deleted&.size) + end + + def expect_delete(tags, container_expiration_policy: nil) + service = instance_double('Projects::ContainerRepository::DeleteTagsService') + + expect(Projects::ContainerRepository::DeleteTagsService) + .to receive(:new) + .with(repository.project, user, tags: tags, container_expiration_policy: container_expiration_policy) + .and_return(service) + + expect(service).to receive(:execute) + .with(repository) { { status: :success, deleted: tags } } + end + + def expect_no_caching + expect(::Gitlab::Redis::Cache).not_to receive(:with) + end +end diff --git a/spec/support/shared_contexts/requests/api/conan_packages_shared_context.rb b/spec/support/shared_contexts/requests/api/conan_packages_shared_context.rb index b90270356f8..3974338238a 100644 --- a/spec/support/shared_contexts/requests/api/conan_packages_shared_context.rb +++ b/spec/support/shared_contexts/requests/api/conan_packages_shared_context.rb @@ -64,5 +64,5 @@ RSpec.shared_context 'conan file upload endpoints' do let(:jwt) { build_jwt(personal_access_token) } let(:headers_with_token) { build_token_auth_header(jwt.encoded).merge(workhorse_headers) } - let(:recipe_path) { "foo/bar/#{project.full_path.tr('/', '+')}/baz"} + let(:recipe_path) { "foo/bar/#{project.full_path.tr('/', '+')}/baz" } end diff --git a/spec/support/shared_contexts/requests/api/debian_repository_shared_context.rb b/spec/support/shared_contexts/requests/api/debian_repository_shared_context.rb index 95b8b7ed9f8..cf090c7a185 100644 --- a/spec/support/shared_contexts/requests/api/debian_repository_shared_context.rb +++ b/spec/support/shared_contexts/requests/api/debian_repository_shared_context.rb @@ -18,6 +18,11 @@ RSpec.shared_context 'Debian repository shared context' do |container_type, can_ let_it_be(:private_architecture_all, freeze: true) { create("debian_#{container_type}_architecture", distribution: private_distribution, name: 'all') } let_it_be(:private_architecture, freeze: true) { create("debian_#{container_type}_architecture", distribution: private_distribution, name: 'existing-arch') } let_it_be(:private_component_file) { create("debian_#{container_type}_component_file", component: private_component, architecture: private_architecture) } + let_it_be(:private_component_file_sources) { create("debian_#{container_type}_component_file", :sources, component: private_component) } + let_it_be(:private_component_file_di) { create("debian_#{container_type}_component_file", :di_packages, component: private_component, architecture: private_architecture) } + let_it_be(:private_component_file_older_sha256) { create("debian_#{container_type}_component_file", :older_sha256, component: private_component, architecture: private_architecture) } + let_it_be(:private_component_file_sources_older_sha256) { create("debian_#{container_type}_component_file", :sources, :older_sha256, component: private_component) } + let_it_be(:private_component_file_di_older_sha256) { create("debian_#{container_type}_component_file", :di_packages, :older_sha256, component: private_component, architecture: private_architecture) } let_it_be(:public_distribution, freeze: true) { create("debian_#{container_type}_distribution", :with_file, container: public_container, codename: 'existing-codename') } let_it_be(:public_distribution_key, freeze: true) { create("debian_#{container_type}_distribution_key", distribution: public_distribution) } @@ -25,6 +30,11 @@ RSpec.shared_context 'Debian repository shared context' do |container_type, can_ let_it_be(:public_architecture_all, freeze: true) { create("debian_#{container_type}_architecture", distribution: public_distribution, name: 'all') } let_it_be(:public_architecture, freeze: true) { create("debian_#{container_type}_architecture", distribution: public_distribution, name: 'existing-arch') } let_it_be(:public_component_file) { create("debian_#{container_type}_component_file", component: public_component, architecture: public_architecture) } + let_it_be(:public_component_file_sources) { create("debian_#{container_type}_component_file", :sources, component: public_component) } + let_it_be(:public_component_file_di) { create("debian_#{container_type}_component_file", :di_packages, component: public_component, architecture: public_architecture) } + let_it_be(:public_component_file_older_sha256) { create("debian_#{container_type}_component_file", :older_sha256, component: public_component, architecture: public_architecture) } + let_it_be(:public_component_file_sources_older_sha256) { create("debian_#{container_type}_component_file", :sources, :older_sha256, component: public_component) } + let_it_be(:public_component_file_di_older_sha256) { create("debian_#{container_type}_component_file", :di_packages, :older_sha256, component: public_component, architecture: public_architecture) } if container_type == :group let_it_be(:private_project) { create(:project, :private, group: private_container) } @@ -48,7 +58,9 @@ RSpec.shared_context 'Debian repository shared context' do |container_type, can_ let(:distribution) { { private: private_distribution, public: public_distribution }[visibility_level] } let(:architecture) { { private: private_architecture, public: public_architecture }[visibility_level] } let(:component) { { private: private_component, public: public_component }[visibility_level] } - let(:component_file) { { private: private_component_file, public: public_component_file }[visibility_level] } + let(:component_file_older_sha256) { { private: private_component_file_older_sha256, public: public_component_file_older_sha256 }[visibility_level] } + let(:component_file_sources_older_sha256) { { private: private_component_file_sources_older_sha256, public: public_component_file_sources_older_sha256 }[visibility_level] } + let(:component_file_di_older_sha256) { { private: private_component_file_di_older_sha256, public: public_component_file_di_older_sha256 }[visibility_level] } let(:package) { { private: private_package, public: public_package }[visibility_level] } let(:letter) { package.name[0..2] == 'lib' ? package.name[0..3] : package.name[0] } diff --git a/spec/support/shared_contexts/views/html_safe_render_shared_context.rb b/spec/support/shared_contexts/views/html_safe_render_shared_context.rb new file mode 100644 index 00000000000..3acca60c901 --- /dev/null +++ b/spec/support/shared_contexts/views/html_safe_render_shared_context.rb @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +RSpec.shared_context 'when rendered view has no HTML escapes', type: :view do + # Check once per example if `rendered` contains HTML escapes. + let(:rendered) do |example| + super().tap do |rendered| + next if example.metadata[:skip_html_escaped_tags_check] + + ensure_no_html_escaped_tags!(rendered, example) + end + end + + def ensure_no_html_escaped_tags!(content, example) + match_data = HtmlEscapedHelpers.match_html_escaped_tags(content) + return unless match_data + + # Truncate + pre_match = match_data.pre_match.last(50) + match = match_data[0] + post_match = match_data.post_match.first(50) + + string = "#{pre_match}«#{match}»#{post_match}" + + raise <<~MESSAGE + The following string contains HTML escaped tags: + + #{string} + + Please consider using `.html_safe`. + + This check can be disabled via: + + it #{example.description.inspect}, :skip_html_escaped_tags_check do + ... + end + + MESSAGE + end +end diff --git a/spec/support/shared_examples/boards/multiple_issue_boards_shared_examples.rb b/spec/support/shared_examples/boards/multiple_issue_boards_shared_examples.rb index 0e6f6f12c3f..fa048b76e18 100644 --- a/spec/support/shared_examples/boards/multiple_issue_boards_shared_examples.rb +++ b/spec/support/shared_examples/boards/multiple_issue_boards_shared_examples.rb @@ -125,6 +125,31 @@ RSpec.shared_examples 'multiple issue boards' do wait_for_requests end + it 'shows current board name' do + page.within('.boards-switcher') do + expect(page).to have_content(board.name) + end + end + + it 'shows a list of boards' do + in_boards_switcher_dropdown do + expect(page).to have_content(board.name) + expect(page).to have_content(board2.name) + end + end + + it 'switches current board' do + in_boards_switcher_dropdown do + click_button board2.name + end + + wait_for_requests + + page.within('.boards-switcher') do + expect(page).to have_content(board2.name) + end + end + it 'does not show action links' do in_boards_switcher_dropdown do expect(page).not_to have_content('Create new board') diff --git a/spec/support/shared_examples/ci/edit_job_token_scope_shared_examples.rb b/spec/support/shared_examples/ci/edit_job_token_scope_shared_examples.rb index 05b2b5f5de1..d8333ae25ad 100644 --- a/spec/support/shared_examples/ci/edit_job_token_scope_shared_examples.rb +++ b/spec/support/shared_examples/ci/edit_job_token_scope_shared_examples.rb @@ -8,14 +8,6 @@ RSpec.shared_examples 'editable job token scope' do end end - context 'when job token scope is disabled for the given project' do - before do - allow(project).to receive(:ci_job_token_scope_enabled?).and_return(false) - end - - it_behaves_like 'returns error', 'Job token scope is disabled for this project' - end - context 'when user does not have permissions to edit the job token scope' do it_behaves_like 'returns error', 'Insufficient permissions to modify the job token scope' end diff --git a/spec/support/shared_examples/controllers/concerns/web_hooks/integrations_hook_log_actions_shared_examples.rb b/spec/support/shared_examples/controllers/concerns/web_hooks/integrations_hook_log_actions_shared_examples.rb new file mode 100644 index 00000000000..62c9c3508a8 --- /dev/null +++ b/spec/support/shared_examples/controllers/concerns/web_hooks/integrations_hook_log_actions_shared_examples.rb @@ -0,0 +1,47 @@ +# frozen_string_literal: true + +RSpec.shared_examples WebHooks::HookLogActions do + let!(:show_path) { web_hook_log.present.details_path } + let!(:retry_path) { web_hook_log.present.retry_path } + + before do + sign_in(user) + end + + describe 'GET #show' do + it 'renders a 200 if the hook exists' do + get show_path + + expect(response).to have_gitlab_http_status(:ok) + expect(response).to render_template('hook_logs/show') + end + + it 'renders a 404 if the hook does not exist' do + web_hook.destroy! + get show_path + + expect(response).to have_gitlab_http_status(:not_found) + end + end + + describe 'POST #retry' do + it 'executes the hook and redirects to the service form' do + stub_request(:post, web_hook.url) + + expect_next_found_instance_of(web_hook.class) do |hook| + expect(hook).to receive(:execute).and_call_original + end + + post retry_path + + expect(response).to redirect_to(edit_hook_path) + end + + it 'renders a 404 if the hook does not exist' do + web_hook.destroy! + post retry_path + + expect(response).to have_gitlab_http_status(:not_found) + end + end +end diff --git a/spec/support/shared_examples/controllers/error_tracking_shared_examples.rb b/spec/support/shared_examples/controllers/error_tracking_shared_examples.rb index 08e5efcf63c..1bf2f158504 100644 --- a/spec/support/shared_examples/controllers/error_tracking_shared_examples.rb +++ b/spec/support/shared_examples/controllers/error_tracking_shared_examples.rb @@ -3,5 +3,5 @@ RSpec.shared_examples 'sets the polling header' do subject { response.headers[Gitlab::PollingInterval::HEADER_NAME] } - it { is_expected.to eq '1000'} + it { is_expected.to eq '1000' } end diff --git a/spec/support/shared_examples/controllers/githubish_import_controller_shared_examples.rb b/spec/support/shared_examples/controllers/githubish_import_controller_shared_examples.rb index 5faf462c23c..bbbe93a644f 100644 --- a/spec/support/shared_examples/controllers/githubish_import_controller_shared_examples.rb +++ b/spec/support/shared_examples/controllers/githubish_import_controller_shared_examples.rb @@ -241,12 +241,11 @@ RSpec.shared_examples 'a GitHub-ish import controller: POST create' do let(:provider_user) { double('user', login: provider_username) } let(:project) { create(:project, import_type: provider, import_status: :finished, import_source: "#{provider_username}/vim") } let(:provider_repo) do - double( - 'provider', + { name: 'vim', full_name: "#{provider_username}/vim", owner: double('owner', login: provider_username) - ) + } end before do @@ -256,7 +255,7 @@ RSpec.shared_examples 'a GitHub-ish import controller: POST create' do it 'returns 200 response when the project is imported successfully' do allow(Gitlab::LegacyGithubImport::ProjectCreator) - .to receive(:new).with(provider_repo, provider_repo.name, user.namespace, user, type: provider, **access_params) + .to receive(:new).with(provider_repo, provider_repo[:name], user.namespace, user, type: provider, **access_params) .and_return(double(execute: project)) post :create, format: :json @@ -270,7 +269,7 @@ RSpec.shared_examples 'a GitHub-ish import controller: POST create' do project.errors.add(:path, 'is old') allow(Gitlab::LegacyGithubImport::ProjectCreator) - .to receive(:new).with(provider_repo, provider_repo.name, user.namespace, user, type: provider, **access_params) + .to receive(:new).with(provider_repo, provider_repo[:name], user.namespace, user, type: provider, **access_params) .and_return(double(execute: project)) post :create, format: :json @@ -281,7 +280,7 @@ RSpec.shared_examples 'a GitHub-ish import controller: POST create' do it "touches the etag cache store" do allow(Gitlab::LegacyGithubImport::ProjectCreator) - .to receive(:new).with(provider_repo, provider_repo.name, user.namespace, user, type: provider, **access_params) + .to receive(:new).with(provider_repo, provider_repo[:name], user.namespace, user, type: provider, **access_params) .and_return(double(execute: project)) expect_next_instance_of(Gitlab::EtagCaching::Store) do |store| expect(store).to receive(:touch) { "realtime_changes_import_#{provider}_path" } @@ -294,7 +293,7 @@ RSpec.shared_examples 'a GitHub-ish import controller: POST create' do context "when the provider user and GitLab user's usernames match" do it "takes the current user's namespace" do expect(Gitlab::LegacyGithubImport::ProjectCreator) - .to receive(:new).with(provider_repo, provider_repo.name, user.namespace, user, type: provider, **access_params) + .to receive(:new).with(provider_repo, provider_repo[:name], user.namespace, user, type: provider, **access_params) .and_return(double(execute: project)) post :create, format: :json @@ -306,7 +305,7 @@ RSpec.shared_examples 'a GitHub-ish import controller: POST create' do it "takes the current user's namespace" do expect(Gitlab::LegacyGithubImport::ProjectCreator) - .to receive(:new).with(provider_repo, provider_repo.name, user.namespace, user, type: provider, **access_params) + .to receive(:new).with(provider_repo, provider_repo[:name], user.namespace, user, type: provider, **access_params) .and_return(double(execute: project)) post :create, format: :json @@ -331,7 +330,7 @@ RSpec.shared_examples 'a GitHub-ish import controller: POST create' do it "takes the existing namespace" do expect(Gitlab::LegacyGithubImport::ProjectCreator) - .to receive(:new).with(provider_repo, provider_repo.name, existing_namespace, user, type: provider, **access_params) + .to receive(:new).with(provider_repo, provider_repo[:name], existing_namespace, user, type: provider, **access_params) .and_return(double(execute: project)) post :create, format: :json @@ -343,7 +342,7 @@ RSpec.shared_examples 'a GitHub-ish import controller: POST create' do create(:user, username: provider_username) expect(Gitlab::LegacyGithubImport::ProjectCreator) - .to receive(:new).with(provider_repo, provider_repo.name, user.namespace, user, type: provider, **access_params) + .to receive(:new).with(provider_repo, provider_repo[:name], user.namespace, user, type: provider, **access_params) .and_return(double(execute: project)) post :create, format: :json @@ -357,15 +356,15 @@ RSpec.shared_examples 'a GitHub-ish import controller: POST create' do expect(Gitlab::LegacyGithubImport::ProjectCreator) .to receive(:new).and_return(double(execute: project)) - expect { post :create, params: { target_namespace: provider_repo.name }, format: :json }.to change(Namespace, :count).by(1) + expect { post :create, params: { target_namespace: provider_repo[:name] }, format: :json }.to change(Namespace, :count).by(1) end it "takes the new namespace" do expect(Gitlab::LegacyGithubImport::ProjectCreator) - .to receive(:new).with(provider_repo, provider_repo.name, an_instance_of(Group), user, type: provider, **access_params) + .to receive(:new).with(provider_repo, provider_repo[:name], an_instance_of(Group), user, type: provider, **access_params) .and_return(double(execute: project)) - post :create, params: { target_namespace: provider_repo.name }, format: :json + post :create, params: { target_namespace: provider_repo[:name] }, format: :json end end @@ -383,7 +382,7 @@ RSpec.shared_examples 'a GitHub-ish import controller: POST create' do it "takes the current user's namespace" do expect(Gitlab::LegacyGithubImport::ProjectCreator) - .to receive(:new).with(provider_repo, provider_repo.name, user.namespace, user, type: provider, **access_params) + .to receive(:new).with(provider_repo, provider_repo[:name], user.namespace, user, type: provider, **access_params) .and_return(double(execute: project)) post :create, format: :json diff --git a/spec/support/shared_examples/controllers/snippets_sort_order_shared_examples.rb b/spec/support/shared_examples/controllers/snippets_sort_order_shared_examples.rb index aa4d78b23f4..112b9cbb204 100644 --- a/spec/support/shared_examples/controllers/snippets_sort_order_shared_examples.rb +++ b/spec/support/shared_examples/controllers/snippets_sort_order_shared_examples.rb @@ -3,7 +3,7 @@ RSpec.shared_examples 'snippets sort order' do let(:params) { {} } let(:sort_argument) { {} } - let(:sort_params) { params.merge(sort_argument)} + let(:sort_params) { params.merge(sort_argument) } before do sign_in(user) diff --git a/spec/support/shared_examples/controllers/snowplow_event_tracking_examples.rb b/spec/support/shared_examples/controllers/snowplow_event_tracking_examples.rb index 2e691d1b36f..4af3c0cc6cc 100644 --- a/spec/support/shared_examples/controllers/snowplow_event_tracking_examples.rb +++ b/spec/support/shared_examples/controllers/snowplow_event_tracking_examples.rb @@ -13,7 +13,7 @@ # - label # - **extra -shared_examples 'Snowplow event tracking' do |overrides: {}| +RSpec.shared_examples 'Snowplow event tracking' do |overrides: {}| let(:extra) { {} } it 'is not emitted if FF is disabled' do diff --git a/spec/support/shared_examples/features/board_sidebar_labels_examples.rb b/spec/support/shared_examples/features/board_sidebar_labels_examples.rb index 520980c2615..4e5b371c18d 100644 --- a/spec/support/shared_examples/features/board_sidebar_labels_examples.rb +++ b/spec/support/shared_examples/features/board_sidebar_labels_examples.rb @@ -17,7 +17,7 @@ RSpec.shared_context 'labels from nested groups and projects' do let_it_be(:maintainer) { create(:user) } let(:labels_select) { find("[data-testid='sidebar-labels']") } - let(:labels_dropdown) { labels_select.find('[data-testid="dropdown-content"]')} + let(:labels_dropdown) { labels_select.find('[data-testid="dropdown-content"]') } before do group.add_maintainer(maintainer) diff --git a/spec/support/shared_examples/features/comments_on_merge_request_files_shared_examples.rb b/spec/support/shared_examples/features/comments_on_merge_request_files_shared_examples.rb index 8a07e52019c..f7cdc4c61ec 100644 --- a/spec/support/shared_examples/features/comments_on_merge_request_files_shared_examples.rb +++ b/spec/support/shared_examples/features/comments_on_merge_request_files_shared_examples.rb @@ -1,6 +1,10 @@ # frozen_string_literal: true RSpec.shared_examples 'comment on merge request file' do + before do + stub_feature_flags(remove_user_attributes_projects: false) + end + it 'adds a comment' do click_diff_line(find_by_scrolling("[id='#{sample_commit.line_code}']")) diff --git a/spec/support/shared_examples/features/content_editor_shared_examples.rb b/spec/support/shared_examples/features/content_editor_shared_examples.rb index 3fa7beea97e..21f264a8b6a 100644 --- a/spec/support/shared_examples/features/content_editor_shared_examples.rb +++ b/spec/support/shared_examples/features/content_editor_shared_examples.rb @@ -1,22 +1,87 @@ # frozen_string_literal: true RSpec.shared_examples 'edits content using the content editor' do - content_editor_testid = '[data-testid="content-editor"] [contenteditable].ProseMirror' + let(:content_editor_testid) { '[data-testid="content-editor"] [contenteditable].ProseMirror' } + + def switch_to_content_editor + find('[data-testid="toggle-editing-mode-button"] label', text: 'Rich text').click + end + + def type_in_content_editor(keys) + find(content_editor_testid).send_keys keys + end + + def open_insert_media_dropdown + page.find('svg[data-testid="media-icon"]').click + end + + def set_source_editor_content(content) + find('.js-gfm-input').set content + end + + def expect_formatting_menu_to_be_visible + expect(page).to have_css('[data-testid="formatting-bubble-menu"]') + end + + def expect_formatting_menu_to_be_hidden + expect(page).not_to have_css('[data-testid="formatting-bubble-menu"]') + end + + def expect_media_bubble_menu_to_be_visible + expect(page).to have_css('[data-testid="media-bubble-menu"]') + end + + def upload_asset(fixture_name) + attach_file('content_editor_image', Rails.root.join('spec', 'fixtures', fixture_name), make_visible: true) + end describe 'formatting bubble menu' do - it 'shows a formatting bubble menu for a regular paragraph' do + it 'shows a formatting bubble menu for a regular paragraph and headings' do + switch_to_content_editor + expect(page).to have_css(content_editor_testid) - find(content_editor_testid).send_keys 'Typing text in the content editor' - find(content_editor_testid).send_keys [:shift, :left] + type_in_content_editor 'Typing text in the content editor' + type_in_content_editor [:shift, :left] + + expect_formatting_menu_to_be_visible + + type_in_content_editor [:right, :right, :enter, '## Heading'] - expect(page).to have_css('[data-testid="formatting-bubble-menu"]') + expect_formatting_menu_to_be_hidden + + type_in_content_editor [:shift, :left] + + expect_formatting_menu_to_be_visible + end + end + + describe 'media elements bubble menu' do + before do + switch_to_content_editor + + open_insert_media_dropdown + end + + def test_displays_media_bubble_menu(media_element_selector, fixture_file) + upload_asset fixture_file + + wait_for_requests + + expect(page).to have_css(media_element_selector) + + page.find(media_element_selector).click + + expect_formatting_menu_to_be_hidden + expect_media_bubble_menu_to_be_visible end - it 'does not show a formatting bubble menu for code blocks' do - find(content_editor_testid).send_keys '```js ' + it 'displays correct media bubble menu for images', :js do + test_displays_media_bubble_menu '[data-testid="content_editor_editablebox"] img[src]', 'dk.png' + end - expect(page).not_to have_css('[data-testid="formatting-bubble-menu"]') + it 'displays correct media bubble menu for video', :js do + test_displays_media_bubble_menu '[data-testid="content_editor_editablebox"] video', 'video_sample.mp4' end end @@ -30,45 +95,50 @@ RSpec.shared_examples 'edits content using the content editor' do page.go_back refresh + switch_to_content_editor end it 'applies theme classes to code blocks' do expect(page).not_to have_css('.content-editor-code-block.code.highlight.dark') - find(content_editor_testid).send_keys [:enter, :enter] - find(content_editor_testid).send_keys '```js ' # trigger input rule - find(content_editor_testid).send_keys 'var a = 0' + type_in_content_editor [:enter, :enter] + type_in_content_editor '```js ' # trigger input rule + type_in_content_editor 'var a = 0' expect(page).to have_css('.content-editor-code-block.code.highlight.dark') end end describe 'code block bubble menu' do + before do + switch_to_content_editor + end + it 'shows a code block bubble menu for a code block' do - find(content_editor_testid).send_keys [:enter, :enter] + type_in_content_editor [:enter, :enter] - find(content_editor_testid).send_keys '```js ' # trigger input rule - find(content_editor_testid).send_keys 'var a = 0' - find(content_editor_testid).send_keys [:shift, :left] + type_in_content_editor '```js ' # trigger input rule + type_in_content_editor 'var a = 0' + type_in_content_editor [:shift, :left] - expect(page).not_to have_css('[data-testid="formatting-bubble-menu"]') + expect_formatting_menu_to_be_hidden expect(page).to have_css('[data-testid="code-block-bubble-menu"]') end it 'sets code block type to "javascript" for `js`' do - find(content_editor_testid).send_keys [:enter, :enter] + type_in_content_editor [:enter, :enter] - find(content_editor_testid).send_keys '```js ' - find(content_editor_testid).send_keys 'var a = 0' + type_in_content_editor '```js ' + type_in_content_editor 'var a = 0' expect(find('[data-testid="code-block-bubble-menu"]')).to have_text('Javascript') end it 'sets code block type to "Custom (nomnoml)" for `nomnoml`' do - find(content_editor_testid).send_keys [:enter, :enter] + type_in_content_editor [:enter, :enter] - find(content_editor_testid).send_keys '```nomnoml ' - find(content_editor_testid).send_keys 'test' + type_in_content_editor '```nomnoml ' + type_in_content_editor 'test' expect(find('[data-testid="code-block-bubble-menu"]')).to have_text('Custom (nomnoml)') end @@ -76,10 +146,11 @@ RSpec.shared_examples 'edits content using the content editor' do describe 'mermaid diagram' do before do - find(content_editor_testid).send_keys [:enter, :enter] + switch_to_content_editor - find(content_editor_testid).send_keys '```mermaid ' - find(content_editor_testid).send_keys ['graph TD;', :enter, ' JohnDoe12 --> HelloWorld34'] + type_in_content_editor [:enter, :enter] + type_in_content_editor '```mermaid ' + type_in_content_editor ['graph TD;', :enter, ' JohnDoe12 --> HelloWorld34'] end it 'renders and updates the diagram correctly in a sandboxed iframe' do diff --git a/spec/support/shared_examples/features/deploy_token_shared_examples.rb b/spec/support/shared_examples/features/deploy_token_shared_examples.rb index 25dfe089f51..79ad5bd6c7f 100644 --- a/spec/support/shared_examples/features/deploy_token_shared_examples.rb +++ b/spec/support/shared_examples/features/deploy_token_shared_examples.rb @@ -30,6 +30,27 @@ RSpec.shared_examples 'a deploy token in settings' do expect(page).to have_selector("input[name='deploy-token-user'][value='deployer']") expect(page).to have_selector("input[name='deploy-token'][readonly='readonly']") end + + expect(find("input#deploy_token_name").value).to eq nil + expect(find("input#deploy_token_read_repository").checked?).to eq false + end + + context "with form errors" do + before do + visit page_path + fill_in "deploy_token_name", with: "new_deploy_key" + fill_in "deploy_token_username", with: "deployer" + click_button "Create deploy token" + end + + it "shows form errors" do + expect(page).to have_text("Scopes can't be blank") + end + + it "keeps form inputs" do + expect(find("input#deploy_token_name").value).to eq "new_deploy_key" + expect(find("input#deploy_token_username").value).to eq "deployer" + end end context 'when User#time_display_relative is false', :js do diff --git a/spec/support/shared_examples/features/discussion_comments_shared_example.rb b/spec/support/shared_examples/features/discussion_comments_shared_example.rb index 24dc4bcfc59..f209070d82a 100644 --- a/spec/support/shared_examples/features/discussion_comments_shared_example.rb +++ b/spec/support/shared_examples/features/discussion_comments_shared_example.rb @@ -304,7 +304,7 @@ RSpec.shared_examples 'thread comments for issue, epic and merge request' do |re let(:reply_id) { find("#{comments_selector} .note:last-of-type", match: :first)['data-note-id'] } it 'can be replied to after resolving' do - find('button[data-qa-selector="resolve_discussion_button"]').click # rubocop:disable QA/SelectorUsage + find('button[data-testid="resolve-discussion-button"]').click wait_for_requests refresh @@ -316,7 +316,7 @@ RSpec.shared_examples 'thread comments for issue, epic and merge request' do |re it 'shows resolved thread when toggled' do submit_reply('a') - find('button[data-qa-selector="resolve_discussion_button"]').click # rubocop:disable QA/SelectorUsage + find('button[data-testid="resolve-discussion-button"]').click wait_for_requests expect(page).to have_selector(".note-row-#{note_id}", visible: true) diff --git a/spec/support/shared_examples/features/manage_applications_shared_examples.rb b/spec/support/shared_examples/features/manage_applications_shared_examples.rb index 442264e7ae4..b59f3f1e27b 100644 --- a/spec/support/shared_examples/features/manage_applications_shared_examples.rb +++ b/spec/support/shared_examples/features/manage_applications_shared_examples.rb @@ -5,39 +5,87 @@ RSpec.shared_examples 'manage applications' do let_it_be(:application_name_changed) { "#{application_name} changed" } let_it_be(:application_redirect_uri) { 'https://foo.bar' } - it 'allows user to manage applications', :js do - visit new_application_path + context 'when hash_oauth_secrets flag set' do + before do + stub_feature_flags(hash_oauth_secrets: true) + end + + it 'allows user to manage applications', :js do + visit new_application_path - expect(page).to have_content 'Add new application' + expect(page).to have_content 'Add new application' - fill_in :doorkeeper_application_name, with: application_name - fill_in :doorkeeper_application_redirect_uri, with: application_redirect_uri - check :doorkeeper_application_scopes_read_user - click_on 'Save application' + fill_in :doorkeeper_application_name, with: application_name + fill_in :doorkeeper_application_redirect_uri, with: application_redirect_uri + check :doorkeeper_application_scopes_read_user + click_on 'Save application' - validate_application(application_name, 'Yes') - expect(page).to have_link('Continue', href: index_path) + validate_application(application_name, 'Yes') + expect(page).to have_content _('This is the only time the secret is accessible. Copy the secret and store it securely') + expect(page).to have_link('Continue', href: index_path) - application = Doorkeeper::Application.find_by(name: application_name) - expect(page).to have_css("button[title=\"Copy secret\"][data-clipboard-text=\"#{application.secret}\"]", text: 'Copy') + expect(page).to have_css("button[title=\"Copy secret\"]", text: 'Copy') - click_on 'Edit' + click_on 'Edit' - application_name_changed = "#{application_name} changed" + application_name_changed = "#{application_name} changed" - fill_in :doorkeeper_application_name, with: application_name_changed - uncheck :doorkeeper_application_confidential - click_on 'Save application' + fill_in :doorkeeper_application_name, with: application_name_changed + uncheck :doorkeeper_application_confidential + click_on 'Save application' + + validate_application(application_name_changed, 'No') + expect(page).not_to have_link('Continue') + expect(page).to have_content _('The secret is only available when you first create the application') + + visit_applications_path + + page.within '.oauth-applications' do + click_on 'Destroy' + end + expect(page.find('.oauth-applications')).not_to have_content 'test_changed' + end + end + + context 'when hash_oauth_secrets flag not set' do + before do + stub_feature_flags(hash_oauth_secrets: false) + end + + it 'allows user to manage applications', :js do + visit new_application_path + + expect(page).to have_content 'Add new application' + + fill_in :doorkeeper_application_name, with: application_name + fill_in :doorkeeper_application_redirect_uri, with: application_redirect_uri + check :doorkeeper_application_scopes_read_user + click_on 'Save application' + + validate_application(application_name, 'Yes') + expect(page).to have_link('Continue', href: index_path) + + application = Doorkeeper::Application.find_by(name: application_name) + expect(page).to have_css("button[title=\"Copy secret\"][data-clipboard-text=\"#{application.secret}\"]", text: 'Copy') + + click_on 'Edit' + + application_name_changed = "#{application_name} changed" + + fill_in :doorkeeper_application_name, with: application_name_changed + uncheck :doorkeeper_application_confidential + click_on 'Save application' - validate_application(application_name_changed, 'No') - expect(page).not_to have_link('Continue') + validate_application(application_name_changed, 'No') + expect(page).not_to have_link('Continue') - visit_applications_path + visit_applications_path - page.within '.oauth-applications' do - click_on 'Destroy' + page.within '.oauth-applications' do + click_on 'Destroy' + end + expect(page.find('.oauth-applications')).not_to have_content 'test_changed' end - expect(page.find('.oauth-applications')).not_to have_content 'test_changed' end context 'when scopes are blank' do diff --git a/spec/support/shared_examples/features/packages_shared_examples.rb b/spec/support/shared_examples/features/packages_shared_examples.rb index 323bd4f5171..7aad5e2de80 100644 --- a/spec/support/shared_examples/features/packages_shared_examples.rb +++ b/spec/support/shared_examples/features/packages_shared_examples.rb @@ -14,7 +14,7 @@ RSpec.shared_examples 'packages list' do |check_project_name: false| end def package_table_row(index) - page.all("#{packages_table_selector} > [data-qa-selector=\"package_row\"]")[index].text # rubocop:disable QA/SelectorUsage + page.all("#{packages_table_selector} > [data-testid=\"package-row\"]")[index].text end end @@ -84,7 +84,7 @@ RSpec.shared_examples 'shared package sorting' do end def packages_table_selector - '[data-qa-selector="packages-table"]' # rubocop:disable QA/SelectorUsage + '[data-testid="packages-table"]' end def click_sort_option(option, ascending) diff --git a/spec/support/shared_examples/features/protected_branches_access_control_ce_shared_examples.rb b/spec/support/shared_examples/features/protected_branches_access_control_ce_shared_examples.rb index 8212f14d6be..81d548e000a 100644 --- a/spec/support/shared_examples/features/protected_branches_access_control_ce_shared_examples.rb +++ b/spec/support/shared_examples/features/protected_branches_access_control_ce_shared_examples.rb @@ -8,7 +8,7 @@ RSpec.shared_examples "protected branches > access control > CE" do set_protected_branch_name('master') find(".js-allowed-to-merge").click - within('.rspec-allowed-to-merge-dropdown') do + within('[data-testid="allowed-to-merge-dropdown"]') do expect(first("li")).to have_content("Roles") find(:link, 'No one').click end @@ -35,13 +35,13 @@ RSpec.shared_examples "protected branches > access control > CE" do set_protected_branch_name('master') find(".js-allowed-to-merge").click - within('.rspec-allowed-to-merge-dropdown') do + within('[data-testid="allowed-to-merge-dropdown"]') do expect(first("li")).to have_content("Roles") find(:link, 'No one').click end find(".js-allowed-to-push").click - within('.rspec-allowed-to-push-dropdown') do + within('[data-testid="allowed-to-push-dropdown"]') do expect(first("li")).to have_content("Roles") find(:link, 'No one').click end @@ -83,7 +83,7 @@ RSpec.shared_examples "protected branches > access control > CE" do end find(".js-allowed-to-push").click - within('.rspec-allowed-to-push-dropdown') do + within('[data-testid="allowed-to-push-dropdown"]') do expect(first("li")).to have_content("Roles") find(:link, 'No one').click end @@ -100,13 +100,13 @@ RSpec.shared_examples "protected branches > access control > CE" do set_protected_branch_name('master') find(".js-allowed-to-merge").click - within('.rspec-allowed-to-merge-dropdown') do + within('[data-testid="allowed-to-merge-dropdown"]') do expect(first("li")).to have_content("Roles") find(:link, 'No one').click end find(".js-allowed-to-push").click - within('.rspec-allowed-to-push-dropdown') do + within('[data-testid="allowed-to-push-dropdown"]') do expect(first("li")).to have_content("Roles") find(:link, 'No one').click end diff --git a/spec/support/shared_examples/features/protected_branches_with_deploy_keys_examples.rb b/spec/support/shared_examples/features/protected_branches_with_deploy_keys_examples.rb index 14142793a0d..90b0e600228 100644 --- a/spec/support/shared_examples/features/protected_branches_with_deploy_keys_examples.rb +++ b/spec/support/shared_examples/features/protected_branches_with_deploy_keys_examples.rb @@ -23,7 +23,7 @@ RSpec.shared_examples 'Deploy keys with protected branches' do find(".js-allowed-to-push").click wait_for_requests - within('.qa-allowed-to-push-dropdown') do # rubocop:disable QA/SelectorUsage + within('[data-testid="allowed-to-push-dropdown"]') do dropdown_headers = page.all('.dropdown-header').map(&:text) expect(dropdown_headers).to contain_exactly(*all_dropdown_sections) @@ -38,7 +38,7 @@ RSpec.shared_examples 'Deploy keys with protected branches' do find(".js-allowed-to-merge").click wait_for_requests - within('.qa-allowed-to-merge-dropdown') do # rubocop:disable QA/SelectorUsage + within('[data-testid="allowed-to-merge-dropdown"]') do dropdown_headers = page.all('.dropdown-header').map(&:text) expect(dropdown_headers).to contain_exactly(*dropdown_sections_minus_deploy_keys) @@ -68,7 +68,7 @@ RSpec.shared_examples 'Deploy keys with protected branches' do find(".js-allowed-to-push").click wait_for_requests - within('.qa-allowed-to-push-dropdown') do # rubocop:disable QA/SelectorUsage + within('[data-testid="allowed-to-push-dropdown"]') do dropdown_headers = page.all('.dropdown-header').map(&:text) expect(dropdown_headers).to contain_exactly(*dropdown_sections_minus_deploy_keys) diff --git a/spec/support/shared_examples/features/rss_shared_examples.rb b/spec/support/shared_examples/features/rss_shared_examples.rb index 0991de21d8d..ad865b084e1 100644 --- a/spec/support/shared_examples/features/rss_shared_examples.rb +++ b/spec/support/shared_examples/features/rss_shared_examples.rb @@ -9,7 +9,7 @@ end RSpec.shared_examples "it has an RSS button with current_user's feed token" do it "shows the RSS button with current_user's feed token" do expect(page) - .to have_css("a:has(.qa-rss-icon)[href*='feed_token=#{user.feed_token}']") # rubocop:disable QA/SelectorUsage + .to have_css("a:has([data-testid='rss-icon'])[href*='feed_token=#{user.feed_token}']") end end @@ -22,7 +22,7 @@ end RSpec.shared_examples "it has an RSS button without a feed token" do it "shows the RSS button without a feed token" do expect(page) - .to have_css("a:has(.qa-rss-icon):not([href*='feed_token'])") # rubocop:disable QA/SelectorUsage + .to have_css("a:has([data-testid='rss-icon']):not([href*='feed_token'])") end end diff --git a/spec/support/shared_examples/features/runners_shared_examples.rb b/spec/support/shared_examples/features/runners_shared_examples.rb index 52f3fd60c07..31ee08ea9db 100644 --- a/spec/support/shared_examples/features/runners_shared_examples.rb +++ b/spec/support/shared_examples/features/runners_shared_examples.rb @@ -64,9 +64,9 @@ end RSpec.shared_examples 'shows no runners registered' do it 'shows counts with 0' do - expect(page).to have_text "Online runners 0" - expect(page).to have_text "Offline runners 0" - expect(page).to have_text "Stale runners 0" + expect(page).to have_text "#{s_('Runners|Online')} 0" + expect(page).to have_text "#{s_('Runners|Offline')} 0" + expect(page).to have_text "#{s_('Runners|Stale')} 0" end it 'shows "no runners" message' do @@ -101,7 +101,7 @@ RSpec.shared_examples 'pauses, resumes and deletes a runner' do within_runner_row(runner.id) do click_button "Pause" - expect(page).to have_text 'paused' + expect(page).to have_text s_('Runners|Paused') expect(page).to have_button 'Resume' expect(page).not_to have_button 'Pause' @@ -145,3 +145,39 @@ RSpec.shared_examples 'pauses, resumes and deletes a runner' do end end end + +RSpec.shared_examples 'submits edit runner form' do + it 'breadcrumb contains runner id and token' do + page.within '[data-testid="breadcrumb-links"]' do + expect(page).to have_link("##{runner.id} (#{runner.short_sha})") + expect(page.find('[data-testid="breadcrumb-current-link"]')).to have_content("Edit") + end + end + + describe 'runner header', :js do + it 'contains the runner id' do + expect(page).to have_content("Runner ##{runner.id} created") + end + end + + context 'when a runner is updated', :js do + before do + find('[data-testid="runner-field-description"] input').set('new-runner-description') + + click_on _('Save changes') + wait_for_requests + end + + it 'redirects to runner page' do + expect(current_url).to match(runner_page_path) + end + + it 'show success alert' do + expect(page.find('[data-testid="alert-success"]')).to have_content('saved') + end + + it 'shows updated information' do + expect(page).to have_content("#{s_('Runners|Description')} new-runner-description") + end + end +end diff --git a/spec/support/shared_examples/features/snippets_shared_examples.rb b/spec/support/shared_examples/features/snippets_shared_examples.rb index c402333107c..bf870b3ce66 100644 --- a/spec/support/shared_examples/features/snippets_shared_examples.rb +++ b/spec/support/shared_examples/features/snippets_shared_examples.rb @@ -194,7 +194,7 @@ end RSpec.shared_examples 'personal snippet with references' do let_it_be(:project) { create(:project, :repository) } let_it_be(:merge_request) { create(:merge_request, source_project: project) } - let_it_be(:project_snippet) { create(:project_snippet, :repository, project: project)} + let_it_be(:project_snippet) { create(:project_snippet, :repository, project: project) } let_it_be(:issue) { create(:issue, project: project) } let_it_be(:commit) { project.commit } diff --git a/spec/support/shared_examples/features/variable_list_shared_examples.rb b/spec/support/shared_examples/features/variable_list_shared_examples.rb index 9d81c0e9a3e..d1e5046a39e 100644 --- a/spec/support/shared_examples/features/variable_list_shared_examples.rb +++ b/spec/support/shared_examples/features/variable_list_shared_examples.rb @@ -91,7 +91,7 @@ RSpec.shared_examples 'variable list' do |is_admin| end page.within('#add-ci-variable') do - find('[data-qa-selector="ci_variable_key_field"] input').set('new_key') # rubocop:disable QA/SelectorUsage + find('[data-testid="pipeline-form-ci-variable-key"] input').set('new_key') click_button('Update variable') end @@ -173,7 +173,7 @@ RSpec.shared_examples 'variable list' do |is_admin| click_button('Add variable') page.within('#add-ci-variable') do - find('[data-qa-selector="ci_variable_key_field"] input').set('empty_mask_key') # rubocop:disable QA/SelectorUsage + find('[data-testid="pipeline-form-ci-variable-key"] input').set('empty_mask_key') find('[data-testid="ci-variable-protected-checkbox"]').click find('[data-testid="ci-variable-masked-checkbox"]').click @@ -290,8 +290,8 @@ RSpec.shared_examples 'variable list' do |is_admin| wait_for_requests page.within('#add-ci-variable') do - find('[data-qa-selector="ci_variable_key_field"] input').set(key) # rubocop:disable QA/SelectorUsage - find('[data-qa-selector="ci_variable_value_field"]').set(value) if value.present? # rubocop:disable QA/SelectorUsage + find('[data-testid="pipeline-form-ci-variable-key"] input').set(key) + find('[data-testid="pipeline-form-ci-variable-value"]').set(value) if value.present? find('[data-testid="ci-variable-protected-checkbox"]').click if protected find('[data-testid="ci-variable-masked-checkbox"]').click if masked diff --git a/spec/support/shared_examples/features/wiki/user_previews_wiki_changes_shared_examples.rb b/spec/support/shared_examples/features/wiki/user_previews_wiki_changes_shared_examples.rb index 2285d9a17e2..3e285bb8ad7 100644 --- a/spec/support/shared_examples/features/wiki/user_previews_wiki_changes_shared_examples.rb +++ b/spec/support/shared_examples/features/wiki/user_previews_wiki_changes_shared_examples.rb @@ -64,7 +64,7 @@ RSpec.shared_examples 'User previews wiki changes' do end it_behaves_like 'relative links' do - let(:element) { page.find('[data-testid="wiki_page_content"]') } + let(:element) { page.find('[data-testid="wiki-page-content"]') } end end diff --git a/spec/support/shared_examples/features/wiki/user_updates_wiki_page_shared_examples.rb b/spec/support/shared_examples/features/wiki/user_updates_wiki_page_shared_examples.rb index 87067336a36..5c63d6a973d 100644 --- a/spec/support/shared_examples/features/wiki/user_updates_wiki_page_shared_examples.rb +++ b/spec/support/shared_examples/features/wiki/user_updates_wiki_page_shared_examples.rb @@ -137,16 +137,7 @@ RSpec.shared_examples 'User updates wiki page' do end end - context 'when using the content editor' do - context 'with feature flag on' do - before do - find('[data-testid="toggle-editing-mode-button"] label', text: 'Rich text').click - end - - it_behaves_like 'edits content using the content editor' - end - end - + it_behaves_like 'edits content using the content editor' it_behaves_like 'autocompletes items' end diff --git a/spec/support/shared_examples/features/wiki/user_views_asciidoc_page_with_includes_shared_examples.rb b/spec/support/shared_examples/features/wiki/user_views_asciidoc_page_with_includes_shared_examples.rb index 6fdc5ecae73..fde38df558f 100644 --- a/spec/support/shared_examples/features/wiki/user_views_asciidoc_page_with_includes_shared_examples.rb +++ b/spec/support/shared_examples/features/wiki/user_views_asciidoc_page_with_includes_shared_examples.rb @@ -1,8 +1,8 @@ # frozen_string_literal: true RSpec.shared_examples 'User views AsciiDoc page with includes' do - let_it_be(:wiki_content_selector) { '[data-qa-selector=wiki_page_content]' } # rubocop:disable QA/SelectorUsage - let!(:included_wiki_page) { create_wiki_page('included_page', content: 'Content from the included page')} + let_it_be(:wiki_content_selector) { '[data-testid=wiki-page-content]' } + let!(:included_wiki_page) { create_wiki_page('included_page', content: 'Content from the included page') } let!(:wiki_page) { create_wiki_page('home', content: "Content from the main page.\ninclude::included_page.asciidoc[]") } def create_wiki_page(title, content:) diff --git a/spec/support/shared_examples/finders/issues_finder_shared_examples.rb b/spec/support/shared_examples/finders/issues_finder_shared_examples.rb index 049ead9fb89..f62c9c00006 100644 --- a/spec/support/shared_examples/finders/issues_finder_shared_examples.rb +++ b/spec/support/shared_examples/finders/issues_finder_shared_examples.rb @@ -365,7 +365,7 @@ RSpec.shared_examples 'issues or work items finder' do |factory, execute_context let!(:created_items) do milestones.map do |milestone| create(factory, project: milestone.project || project_in_group, - milestone: milestone, author: user, assignees: [user]) + milestone: milestone, author: user, assignees: [user]) end end diff --git a/spec/support/shared_examples/graphql/members_shared_examples.rb b/spec/support/shared_examples/graphql/members_shared_examples.rb index 110706c730b..5cba8baa829 100644 --- a/spec/support/shared_examples/graphql/members_shared_examples.rb +++ b/spec/support/shared_examples/graphql/members_shared_examples.rb @@ -40,7 +40,7 @@ RSpec.shared_examples 'querying members with a group' do subject do resolve(described_class, obj: resource, args: base_args.merge(args), - ctx: { current_user: user_4 }, arg_style: :internal) + ctx: { current_user: user_4 }, arg_style: :internal) end describe '#resolve' do @@ -52,6 +52,15 @@ RSpec.shared_examples 'querying members with a group' do expect(subject).to contain_exactly(resource_member, group_1_member, root_group_member) end + context 'with sort options' do + let(:args) { { sort: 'name_asc' } } + + it 'searches users by user name' do + # the order is important here + expect(subject.items).to eq([root_group_member, resource_member, group_1_member]) + end + end + context 'with search' do context 'when the search term matches a user' do let(:args) { { search: 'test' } } @@ -75,7 +84,7 @@ RSpec.shared_examples 'querying members with a group' do subject do resolve(described_class, obj: resource, args: base_args.merge(args), - ctx: { current_user: other_user }, arg_style: :internal) + ctx: { current_user: other_user }, arg_style: :internal) end it 'generates an error' do diff --git a/spec/support/shared_examples/graphql/n_plus_one_query_examples.rb b/spec/support/shared_examples/graphql/n_plus_one_query_examples.rb index 738edd43c92..faf1bb204c9 100644 --- a/spec/support/shared_examples/graphql/n_plus_one_query_examples.rb +++ b/spec/support/shared_examples/graphql/n_plus_one_query_examples.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true -shared_examples 'N+1 query check' do +RSpec.shared_examples 'N+1 query check' do it 'prevents N+1 queries' do execute_query # "warm up" to prevent undeterministic counts expect(graphql_errors).to be_blank # Sanity check - ex falso quodlibet! diff --git a/spec/support/shared_examples/graphql/resolvers/issuable_resolvers_shared_examples.rb b/spec/support/shared_examples/graphql/resolvers/issuable_resolvers_shared_examples.rb new file mode 100644 index 00000000000..25008bca619 --- /dev/null +++ b/spec/support/shared_examples/graphql/resolvers/issuable_resolvers_shared_examples.rb @@ -0,0 +1,99 @@ +# frozen_string_literal: true + +# Requires `parent`, issuable1`, `issuable2`, `issuable3`, `issuable4`, +# `finder_class` and `optimization_param` bindings. +RSpec.shared_examples 'graphql query for searching issuables' do + it 'uses search optimization' do + expected_arguments = a_hash_including( + search: 'text', + optimization_param => true + ) + expect(finder_class).to receive(:new).with(anything, expected_arguments).and_call_original + + resolve_issuables(search: 'text') + end + + it 'filters issuables by title' do + issuables = resolve_issuables(search: 'created') + + expect(issuables).to contain_exactly(issuable1, issuable2) + end + + it 'filters issuables by description' do + issuables = resolve_issuables(search: 'text') + + expect(issuables).to contain_exactly(issuable2, issuable3) + end + + context 'with in param' do + it 'generates an error if param search is missing' do + error_message = "`search` should be present when including the `in` argument" + + expect_graphql_error_to_be_created(Gitlab::Graphql::Errors::ArgumentError, error_message) do + resolve_issuables(in: ['title']) + end + end + + it 'filters issuables by title and description' do + issuable4.update!(title: 'fourth text') + issuables = resolve_issuables(search: 'text', in: %w[title description]) + + expect(issuables).to contain_exactly(issuable2, issuable3, issuable4) + end + + it 'filters issuables by description only' do + with_text = resolve_issuables(search: 'text', in: ['description']) + with_created = resolve_issuables(search: 'created', in: ['description']) + + expect(with_created).to be_empty + expect(with_text).to contain_exactly(issuable2, issuable3) + end + + it 'filters issuables by title only' do + with_text = resolve_issuables(search: 'text', in: ['title']) + with_created = resolve_issuables(search: 'created', in: ['title']) + + expect(with_created).to contain_exactly(issuable1, issuable2) + expect(with_text).to be_empty + end + end + + context 'with anonymous user' do + let_it_be(:current_user) { nil } + + context 'with disable_anonymous_search as `true`' do + before do + stub_feature_flags(disable_anonymous_search: true) + end + + it 'returns an error' do + error_message = "User must be authenticated to include the `search` argument." + + expect_graphql_error_to_be_created(Gitlab::Graphql::Errors::ArgumentError, error_message) do + resolve_issuables(search: 'created') + end + end + + it 'does not return error if search term is not present' do + expect(resolve_issuables).not_to be_instance_of(Gitlab::Graphql::Errors::ArgumentError) + end + end + + context 'with disable_anonymous_search as `false`' do + before do + stub_feature_flags(disable_anonymous_search: false) + parent.update!(visibility_level: Gitlab::VisibilityLevel::PUBLIC) + end + + it 'filters issuables by search term' do + issuables = resolve_issuables(search: 'created') + + expect(issuables).to contain_exactly(issuable1, issuable2) + end + end + end + + def resolve_issuables(args = {}, obj = parent, context = { current_user: current_user }) + resolve(described_class, obj: obj, args: args, ctx: context, arg_style: :internal) + end +end diff --git a/spec/support/shared_examples/lib/banzai/filters/sanitization_filter_shared_examples.rb b/spec/support/shared_examples/lib/banzai/filters/sanitization_filter_shared_examples.rb index b5c07f45d59..47655f86558 100644 --- a/spec/support/shared_examples/lib/banzai/filters/sanitization_filter_shared_examples.rb +++ b/spec/support/shared_examples/lib/banzai/filters/sanitization_filter_shared_examples.rb @@ -45,62 +45,62 @@ RSpec.shared_examples 'XSS prevention' do # Adapted from the Sanitize test suite: http://git.io/vczrM protocols = { 'protocol-based JS injection: simple, no spaces' => { - input: '<a href="javascript:alert(\'XSS\');">foo</a>', + input: '<a href="javascript:alert(\'XSS\');">foo</a>', output: '<a>foo</a>' }, 'protocol-based JS injection: simple, spaces before' => { - input: '<a href="javascript :alert(\'XSS\');">foo</a>', + input: '<a href="javascript :alert(\'XSS\');">foo</a>', output: '<a>foo</a>' }, 'protocol-based JS injection: simple, spaces after' => { - input: '<a href="javascript: alert(\'XSS\');">foo</a>', + input: '<a href="javascript: alert(\'XSS\');">foo</a>', output: '<a>foo</a>' }, 'protocol-based JS injection: simple, spaces before and after' => { - input: '<a href="javascript : alert(\'XSS\');">foo</a>', + input: '<a href="javascript : alert(\'XSS\');">foo</a>', output: '<a>foo</a>' }, 'protocol-based JS injection: preceding colon' => { - input: '<a href=":javascript:alert(\'XSS\');">foo</a>', + input: '<a href=":javascript:alert(\'XSS\');">foo</a>', output: '<a>foo</a>' }, 'protocol-based JS injection: UTF-8 encoding' => { - input: '<a href="javascript:">foo</a>', + input: '<a href="javascript:">foo</a>', output: '<a>foo</a>' }, 'protocol-based JS injection: long UTF-8 encoding' => { - input: '<a href="javascript:">foo</a>', + input: '<a href="javascript:">foo</a>', output: '<a>foo</a>' }, 'protocol-based JS injection: long UTF-8 encoding without semicolons' => { - input: '<a href=javascript:alert('XSS')>foo</a>', + input: '<a href=javascript:alert('XSS')>foo</a>', output: '<a>foo</a>' }, 'protocol-based JS injection: hex encoding' => { - input: '<a href="javascript:">foo</a>', + input: '<a href="javascript:">foo</a>', output: '<a>foo</a>' }, 'protocol-based JS injection: long hex encoding' => { - input: '<a href="javascript:">foo</a>', + input: '<a href="javascript:">foo</a>', output: '<a>foo</a>' }, 'protocol-based JS injection: hex encoding without semicolons' => { - input: '<a href=javascript:alert('XSS')>foo</a>', + input: '<a href=javascript:alert('XSS')>foo</a>', output: '<a>foo</a>' }, 'protocol-based JS injection: null char' => { - input: "<a href=java\0script:alert(\"XSS\")>foo</a>", + input: "<a href=java\0script:alert(\"XSS\")>foo</a>", output: '<a href="java"></a>' }, @@ -115,7 +115,7 @@ RSpec.shared_examples 'XSS prevention' do }, 'protocol-based JS injection: spaces and entities' => { - input: '<a href="  javascript:alert(\'XSS\');">foo</a>', + input: '<a href="  javascript:alert(\'XSS\');">foo</a>', output: '<a href="">foo</a>' }, diff --git a/spec/support/shared_examples/lib/cache_helpers_shared_examples.rb b/spec/support/shared_examples/lib/cache_helpers_shared_examples.rb index 845fa78a827..82a9e8130f7 100644 --- a/spec/support/shared_examples/lib/cache_helpers_shared_examples.rb +++ b/spec/support/shared_examples/lib/cache_helpers_shared_examples.rb @@ -43,6 +43,54 @@ RSpec.shared_examples_for 'object cache helper' do subject end end + + context 'when a caller id is present' do + let(:transaction) { Gitlab::Metrics::WebTransaction.new({}) } + let(:caller_id) { 'caller_id' } + + before do + allow(::Gitlab::Metrics::WebTransaction).to receive(:current).and_return(transaction) + allow(transaction).to receive(:increment) + allow(Gitlab::ApplicationContext).to receive(:current_context_attribute).with(:caller_id).and_return(caller_id) + end + + context 'when feature flag is off' do + before do + stub_feature_flags(add_timing_to_certain_cache_actions: false) + end + + it 'does not call increment' do + expect(transaction).not_to receive(:increment).with(:cached_object_operations_total, any_args) + + subject + end + + it 'does not call histogram' do + expect(Gitlab::Metrics).not_to receive(:histogram) + + subject + end + + it "is valid JSON" do + parsed = Gitlab::Json.parse(subject.to_s) + + expect(parsed).to be_a(Hash) + expect(parsed["id"]).to eq(presentable.id) + end + end + + it 'increments the counter' do + expect(transaction) + .to receive(:increment) + .with(:cached_object_operations_total, 1, { caller_id: caller_id, render_type: :object, cache_hit: false }).once + + expect(transaction) + .to receive(:increment) + .with(:cached_object_operations_total, 0, { caller_id: caller_id, render_type: :object, cache_hit: true }).once + + subject + end + end end RSpec.shared_examples_for 'collection cache helper' do @@ -98,4 +146,95 @@ RSpec.shared_examples_for 'collection cache helper' do subject end end + + context 'when a caller id is present' do + let(:transaction) { Gitlab::Metrics::WebTransaction.new({}) } + let(:caller_id) { 'caller_id' } + + before do + allow(::Gitlab::Metrics::WebTransaction).to receive(:current).and_return(transaction) + allow(transaction).to receive(:increment) + allow(Gitlab::ApplicationContext).to receive(:current_context_attribute).with(:caller_id).and_return(caller_id) + end + + context 'when feature flag is off' do + before do + stub_feature_flags(add_timing_to_certain_cache_actions: false) + end + + it 'does not call increment' do + expect(transaction).not_to receive(:increment).with(:cached_object_operations_total, any_args) + + subject + end + + it 'does not call histogram' do + expect(Gitlab::Metrics).not_to receive(:histogram) + + subject + end + + it "is valid JSON" do + parsed = Gitlab::Json.parse(subject.to_s) + + expect(parsed).to be_an(Array) + + presentable.each_with_index do |item, i| + expect(parsed[i]["id"]).to eq(item.id) + end + end + end + + context 'when presentable has a group by clause' do + let(:presentable) { MergeRequest.group(:id) } + + it "returns the presentables" do + expect(transaction) + .to receive(:increment) + .with(:cached_object_operations_total, 0, { caller_id: caller_id, render_type: :collection, cache_hit: true }).once + + expect(transaction) + .to receive(:increment) + .with(:cached_object_operations_total, MergeRequest.count, { caller_id: caller_id, render_type: :collection, cache_hit: false }).once + + parsed = Gitlab::Json.parse(subject.to_s) + + expect(parsed).to be_an(Array) + + presentable.each_with_index do |item, i| + expect(parsed[i]["id"]).to eq(item.id) + end + end + end + + context 'when the presentables all miss' do + it 'increments the counters' do + expect(transaction) + .to receive(:increment) + .with(:cached_object_operations_total, 0, { caller_id: caller_id, render_type: :collection, cache_hit: true }).once + + expect(transaction) + .to receive(:increment) + .with(:cached_object_operations_total, presentable.size, { caller_id: caller_id, render_type: :collection, cache_hit: false }).once + + subject + end + end + + context 'when the presents hit' do + it 'increments the counters' do + subject + + expect(transaction) + .to receive(:increment) + .with(:cached_object_operations_total, presentable.size, { caller_id: caller_id, render_type: :collection, cache_hit: true }).once + + expect(transaction) + .to receive(:increment) + .with(:cached_object_operations_total, 0, { caller_id: caller_id, render_type: :collection, cache_hit: false }).once + + instance.public_send(method, presentable, **kwargs) + end + end + end end diff --git a/spec/support/shared_examples/lib/gitlab/ci/ci_trace_shared_examples.rb b/spec/support/shared_examples/lib/gitlab/ci/ci_trace_shared_examples.rb index b786d7e5527..10f58748698 100644 --- a/spec/support/shared_examples/lib/gitlab/ci/ci_trace_shared_examples.rb +++ b/spec/support/shared_examples/lib/gitlab/ci/ci_trace_shared_examples.rb @@ -131,7 +131,7 @@ RSpec.shared_examples 'common trace features' do end context 'logs contains "section_start"' do - let(:log) { "section_start:1506417476:a_section\r\033[0Klooks like a section_start:invalid\nsection_end:1506417477:a_section\r\033[0K"} + let(:log) { "section_start:1506417476:a_section\r\033[0Klooks like a section_start:invalid\nsection_end:1506417477:a_section\r\033[0K" } it "returns only one section" do expect(sections).not_to be_empty @@ -144,7 +144,7 @@ RSpec.shared_examples 'common trace features' do end context 'missing section_end' do - let(:log) { "section_start:1506417476:a_section\r\033[0KSome logs\nNo section_end\n"} + let(:log) { "section_start:1506417476:a_section\r\033[0KSome logs\nNo section_end\n" } it "returns no sections" do expect(sections).to be_empty @@ -152,7 +152,7 @@ RSpec.shared_examples 'common trace features' do end context 'missing section_start' do - let(:log) { "Some logs\nNo section_start\nsection_end:1506417476:a_section\r\033[0K"} + let(:log) { "Some logs\nNo section_start\nsection_end:1506417476:a_section\r\033[0K" } it "returns no sections" do expect(sections).to be_empty @@ -160,7 +160,7 @@ RSpec.shared_examples 'common trace features' do end context 'inverted section_start section_end' do - let(:log) { "section_end:1506417476:a_section\r\033[0Klooks like a section_start:invalid\nsection_start:1506417477:a_section\r\033[0K"} + let(:log) { "section_end:1506417476:a_section\r\033[0Klooks like a section_start:invalid\nsection_start:1506417477:a_section\r\033[0K" } it "returns no sections" do expect(sections).to be_empty @@ -169,7 +169,7 @@ RSpec.shared_examples 'common trace features' do end describe '#write' do - subject { trace.send(:write, mode) { } } + subject { trace.send(:write, mode) {} } let(:mode) { 'wb' } @@ -370,15 +370,6 @@ RSpec.shared_examples 'trace with disabled live trace feature' do end end - shared_examples 'read successfully with StringIO' do - it 'yields with source' do - trace.read do |stream| - expect(stream).to be_a(Gitlab::Ci::Trace::Stream) - expect(stream.stream).to be_a(StringIO) - end - end - end - shared_examples 'failed to read' do it 'yields without source' do trace.read do |stream| @@ -404,14 +395,6 @@ RSpec.shared_examples 'trace with disabled live trace feature' do it_behaves_like 'read successfully with IO' end - context 'when db trace exists' do - before do - build.send(:write_attribute, :trace, "data") - end - - it_behaves_like 'read successfully with StringIO' - end - context 'when no sources exist' do it_behaves_like 'failed to read' end @@ -462,25 +445,6 @@ RSpec.shared_examples 'trace with disabled live trace feature' do expect(trace.exist?).to be(false) end end - - context 'stored in database' do - before do - build.send(:write_attribute, :trace, "data") - end - - it "trace exist" do - expect(trace.exist?).to be(true) - end - - it "can be erased" do - trace.erase! - expect(trace.exist?).to be(false) - end - - it "returns database data" do - expect(trace.raw).to eq("data") - end - end end describe '#archive!' do @@ -520,24 +484,12 @@ RSpec.shared_examples 'trace with disabled live trace feature' do expect(build.trace.exist?).to be_truthy expect(build.job_artifacts_trace.file.exists?).to be_truthy expect(build.job_artifacts_trace.file.filename).to eq('job.log') - expect(build.old_trace).to be_nil expect(src_checksum) .to eq(described_class.sha256_hexdigest(build.job_artifacts_trace.file.path)) expect(build.job_artifacts_trace.file_sha256).to eq(src_checksum) end end - shared_examples 'source trace in database stays intact' do |error:| - it do - expect { subject }.to raise_error(error) - - build.reload - expect(build.trace.exist?).to be_truthy - expect(build.job_artifacts_trace).to be_nil - expect(build.old_trace).to eq(trace_content) - end - end - context 'when job does not have trace artifact' do context 'when trace file stored in default path' do let!(:build) { create(:ci_build, :success, :trace_live) } @@ -564,58 +516,6 @@ RSpec.shared_examples 'trace with disabled live trace feature' do it_behaves_like 'source trace file stays intact', error: ActiveRecord::RecordInvalid end end - - context 'when trace is stored in database' do - let(:build) { create(:ci_build, :success) } - let(:trace_content) { 'Sample trace' } - let(:src_checksum) { Digest::SHA256.hexdigest(trace_content) } - - before do - build.update_column(:trace, trace_content) - end - - it_behaves_like 'archive trace in database' - - context 'when failed to create clone file' do - before do - allow(IO).to receive(:copy_stream).and_return(0) - end - - it_behaves_like 'source trace in database stays intact', error: Gitlab::Ci::Trace::ArchiveError - end - - context 'when failed to create job artifact record' do - before do - allow_any_instance_of(Ci::JobArtifact).to receive(:save).and_return(false) - allow_any_instance_of(Ci::JobArtifact).to receive_message_chain(:errors, :full_messages) - .and_return(%w[Error Error]) - end - - it_behaves_like 'source trace in database stays intact', error: ActiveRecord::RecordInvalid - end - - context 'when there is a validation error on Ci::Build' do - before do - allow_any_instance_of(Ci::Build).to receive(:save).and_return(false) - allow_any_instance_of(Ci::Build).to receive_message_chain(:errors, :full_messages) - .and_return(%w[Error Error]) - end - - context "when erase old trace with 'save'" do - before do - build.send(:write_attribute, :trace, nil) - build.save # rubocop:disable Rails/SaveBang - end - - it 'old trace is not deleted' do - build.reload - expect(build.trace.raw).to eq(trace_content) - end - end - - it_behaves_like 'archive trace in database' - end - end end context 'when job has trace artifact' do @@ -645,22 +545,6 @@ RSpec.shared_examples 'trace with disabled live trace feature' do subject { trace.erase! } context 'when it is a live trace' do - context 'when trace is stored in database' do - let(:build) { create(:ci_build) } - - before do - build.update_column(:trace, 'sample trace') - end - - it { expect(trace.raw).not_to be_nil } - - it "removes trace" do - subject - - expect(trace.raw).to be_nil - end - end - context 'when trace is stored in file storage' do let(:build) { create(:ci_build, :trace_live) } diff --git a/spec/support/shared_examples/lib/gitlab/cycle_analytics/deployment_metrics.rb b/spec/support/shared_examples/lib/gitlab/cycle_analytics/deployment_metrics.rb index beec072e474..9ffc55f7e7e 100644 --- a/spec/support/shared_examples/lib/gitlab/cycle_analytics/deployment_metrics.rb +++ b/spec/support/shared_examples/lib/gitlab/cycle_analytics/deployment_metrics.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -shared_examples 'deployment metrics examples' do +RSpec.shared_examples 'deployment metrics examples' do def create_deployment(args) project = args[:project] environment = project.environments.production.first || create(:environment, :production, project: project) diff --git a/spec/support/shared_examples/lib/gitlab/database/background_migration_job_shared_examples.rb b/spec/support/shared_examples/lib/gitlab/database/background_migration_job_shared_examples.rb index 771ab89972c..a28fefcfc58 100644 --- a/spec/support/shared_examples/lib/gitlab/database/background_migration_job_shared_examples.rb +++ b/spec/support/shared_examples/lib/gitlab/database/background_migration_job_shared_examples.rb @@ -3,7 +3,7 @@ RSpec.shared_examples 'marks background migration job records' do it 'marks each job record as succeeded after processing' do create(:background_migration_job, class_name: "::#{described_class.name.demodulize}", - arguments: arguments) + arguments: arguments) expect(::Gitlab::Database::BackgroundMigrationJob).to receive(:mark_all_as_succeeded).and_call_original @@ -14,7 +14,7 @@ RSpec.shared_examples 'marks background migration job records' do it 'returns the number of job records marked as succeeded' do create(:background_migration_job, class_name: "::#{described_class.name.demodulize}", - arguments: arguments) + arguments: arguments) jobs_updated = subject.perform(*arguments) diff --git a/spec/support/shared_examples/lib/gitlab/diff_file_collections_shared_examples.rb b/spec/support/shared_examples/lib/gitlab/diff_file_collections_shared_examples.rb index 1f7325df11a..243dc1d195b 100644 --- a/spec/support/shared_examples/lib/gitlab/diff_file_collections_shared_examples.rb +++ b/spec/support/shared_examples/lib/gitlab/diff_file_collections_shared_examples.rb @@ -144,7 +144,7 @@ RSpec.shared_examples 'cacheable diff collection' do end end -shared_examples_for 'sortable diff files' do +RSpec.shared_examples_for 'sortable diff files' do subject { described_class.new(diffable, **collection_default_args) } describe '#raw_diff_files' do @@ -170,7 +170,7 @@ shared_examples_for 'sortable diff files' do end end -shared_examples_for 'unsortable diff files' do +RSpec.shared_examples_for 'unsortable diff files' do subject { described_class.new(diffable, **collection_default_args) } describe '#raw_diff_files' do diff --git a/spec/support/shared_examples/lib/gitlab/sql/set_operator_shared_examples.rb b/spec/support/shared_examples/lib/gitlab/sql/set_operator_shared_examples.rb index ead8b174d46..ec7b2794703 100644 --- a/spec/support/shared_examples/lib/gitlab/sql/set_operator_shared_examples.rb +++ b/spec/support/shared_examples/lib/gitlab/sql/set_operator_shared_examples.rb @@ -25,7 +25,7 @@ RSpec.shared_examples 'SQL set operator' do |operator_keyword| empty_relation = User.none.select(:id) set_operator = described_class.new([empty_relation, relation_1, relation_2]) - expect {User.where("users.id IN (#{set_operator.to_sql})").to_a}.not_to raise_error + expect { User.where("users.id IN (#{set_operator.to_sql})").to_a }.not_to raise_error expect(set_operator.to_sql).to eq("(#{to_sql(relation_1)})\n#{operator_keyword}\n(#{to_sql(relation_2)})") end diff --git a/spec/support/shared_examples/lib/sentry/client_shared_examples.rb b/spec/support/shared_examples/lib/sentry/client_shared_examples.rb index d73c7b6848d..1c0e0061385 100644 --- a/spec/support/shared_examples/lib/sentry/client_shared_examples.rb +++ b/spec/support/shared_examples/lib/sentry/client_shared_examples.rb @@ -43,7 +43,7 @@ RSpec.shared_examples 'maps Sentry exceptions' do |http_method| } exceptions.each do |exception, message| - context "#{exception}" do + context exception do before do stub_request( http_method || :get, @@ -58,3 +58,50 @@ RSpec.shared_examples 'maps Sentry exceptions' do |http_method| end end end + +# Expects to following variables: +# - subject +# - sentry_api_response +# - sentry_url, token - only if enabled_by_default: false +RSpec.shared_examples 'Sentry API response size limit' do |enabled_by_default: false| + let(:invalid_deep_size) { instance_double(Gitlab::Utils::DeepSize, valid?: false) } + + before do + allow(Gitlab::Utils::DeepSize) + .to receive(:new) + .with(sentry_api_response, any_args) + .and_return(invalid_deep_size) + end + + if enabled_by_default + it 'raises an exception when response is too large' do + expect { subject }.to raise_error(ErrorTracking::SentryClient::ResponseInvalidSizeError, + 'Sentry API response is too big. Limit is 1 MB.') + end + else + context 'when guarded by feature flag' do + let(:client) do + ErrorTracking::SentryClient.new(sentry_url, token, validate_size_guarded_by_feature_flag: feature_flag) + end + + context 'with feature flag enabled' do + let(:feature_flag) { true } + + it 'raises an exception when response is too large' do + expect { subject }.to raise_error(ErrorTracking::SentryClient::ResponseInvalidSizeError, + 'Sentry API response is too big. Limit is 1 MB.') + end + end + + context 'with feature flag disabled' do + let(:feature_flag) { false } + + it 'does not check the limit and thus not raise' do + expect { subject }.not_to raise_error + + expect(Gitlab::Utils::DeepSize).not_to have_received(:new) + end + end + end + end +end diff --git a/spec/support/shared_examples/models/chat_integration_shared_examples.rb b/spec/support/shared_examples/models/chat_integration_shared_examples.rb index fb08784f34f..6cfeeabc952 100644 --- a/spec/support/shared_examples/models/chat_integration_shared_examples.rb +++ b/spec/support/shared_examples/models/chat_integration_shared_examples.rb @@ -32,9 +32,11 @@ RSpec.shared_examples "chat integration" do |integration_name| end describe "#execute" do - let(:user) { create(:user) } - let(:project) { create(:project, :repository) } + let_it_be(:user) { create(:user) } + let_it_be_with_reload(:project) { create(:project, :repository) } + let(:webhook_url) { "https://example.gitlab.com/" } + let(:webhook_url_regex) { /\A#{webhook_url}.*/ } before do allow(subject).to receive_messages( @@ -44,7 +46,7 @@ RSpec.shared_examples "chat integration" do |integration_name| webhook: webhook_url ) - WebMock.stub_request(:post, webhook_url) + WebMock.stub_request(:post, webhook_url_regex) end shared_examples "triggered #{integration_name} integration" do |branches_to_be_notified: nil| @@ -56,7 +58,7 @@ RSpec.shared_examples "chat integration" do |integration_name| result = subject.execute(sample_data) expect(result).to be(true) - expect(WebMock).to have_requested(:post, webhook_url).once.with { |req| + expect(WebMock).to have_requested(:post, webhook_url_regex).once.with { |req| json_body = Gitlab::Json.parse(req.body).with_indifferent_access expect(json_body).to include(payload) } @@ -72,7 +74,7 @@ RSpec.shared_examples "chat integration" do |integration_name| result = subject.execute(sample_data) expect(result).to be_falsy - expect(WebMock).not_to have_requested(:post, webhook_url) + expect(WebMock).not_to have_requested(:post, webhook_url_regex) end end @@ -112,14 +114,14 @@ RSpec.shared_examples "chat integration" do |integration_name| end context "with protected branch" do - before do - create(:protected_branch, :create_branch_on_repository, project: project, name: "a-protected-branch") - end - let(:sample_data) do Gitlab::DataBuilder::Push.build(project: project, user: user, ref: "a-protected-branch") end + before_all do + create(:protected_branch, :create_branch_on_repository, project: project, name: "a-protected-branch") + end + context "when only default branch are to be notified" do it_behaves_like "untriggered #{integration_name} integration", branches_to_be_notified: "default" end @@ -214,7 +216,7 @@ RSpec.shared_examples "chat integration" do |integration_name| let(:sample_data) { Gitlab::DataBuilder::Note.build(note, user) } context "with commit comment" do - let(:note) do + let_it_be(:note) do create(:note_on_commit, author: user, project: project, @@ -226,7 +228,7 @@ RSpec.shared_examples "chat integration" do |integration_name| end context "with merge request comment" do - let(:note) do + let_it_be(:note) do create(:note_on_merge_request, project: project, note: "merge request note") end @@ -234,7 +236,7 @@ RSpec.shared_examples "chat integration" do |integration_name| end context "with issue comment" do - let(:note) do + let_it_be(:note) do create(:note_on_issue, project: project, note: "issue note") end @@ -242,7 +244,7 @@ RSpec.shared_examples "chat integration" do |integration_name| end context "with snippet comment" do - let(:note) do + let_it_be(:note) do create(:note_on_project_snippet, project: project, note: "snippet note") end @@ -251,22 +253,24 @@ RSpec.shared_examples "chat integration" do |integration_name| end context "with pipeline events" do - let(:pipeline) do - create(:ci_pipeline, - project: project, status: status, - sha: project.commit.sha, ref: project.default_branch) - end - let(:sample_data) { Gitlab::DataBuilder::Pipeline.build(pipeline) } context "with failed pipeline" do - let(:status) { "failed" } + let_it_be(:pipeline) do + create(:ci_pipeline, + project: project, status: "failed", + sha: project.commit.sha, ref: project.default_branch) + end it_behaves_like "triggered #{integration_name} integration" end context "with succeeded pipeline" do - let(:status) { "success" } + let_it_be(:pipeline) do + create(:ci_pipeline, + project: project, status: "success", + sha: project.commit.sha, ref: project.default_branch) + end context "with default notify_only_broken_pipelines" do it "does not call #{integration_name} API" do @@ -308,7 +312,7 @@ RSpec.shared_examples "chat integration" do |integration_name| end context "with protected branch" do - before do + before_all do create(:protected_branch, :create_branch_on_repository, project: project, name: "a-protected-branch") end @@ -357,7 +361,8 @@ RSpec.shared_examples "chat integration" do |integration_name| end context 'deployment events' do - let(:deployment) { create(:deployment) } + let_it_be(:deployment) { create(:deployment) } + let(:sample_data) { Gitlab::DataBuilder::Deployment.build(deployment, deployment.status, Time.now) } it_behaves_like "untriggered #{integration_name} integration" diff --git a/spec/support/shared_examples/models/cluster_application_core_shared_examples.rb b/spec/support/shared_examples/models/cluster_application_core_shared_examples.rb index 51071ae47c3..ca9122bf61f 100644 --- a/spec/support/shared_examples/models/cluster_application_core_shared_examples.rb +++ b/spec/support/shared_examples/models/cluster_application_core_shared_examples.rb @@ -37,7 +37,7 @@ RSpec.shared_examples 'cluster application core specs' do |application_name| with_them do subject { described_class.new(cluster: cluster).helm_command_module } - let(:cluster) { build(:cluster, helm_major_version: helm_major_version)} + let(:cluster) { build(:cluster, helm_major_version: helm_major_version) } it { is_expected.to eq(expected_helm_command_module) } end diff --git a/spec/support/shared_examples/models/concerns/analytics/cycle_analytics/stage_event_model_examples.rb b/spec/support/shared_examples/models/concerns/analytics/cycle_analytics/stage_event_model_examples.rb index 8ff30021d6e..6f104f400bc 100644 --- a/spec/support/shared_examples/models/concerns/analytics/cycle_analytics/stage_event_model_examples.rb +++ b/spec/support/shared_examples/models/concerns/analytics/cycle_analytics/stage_event_model_examples.rb @@ -89,7 +89,7 @@ RSpec.shared_examples 'StageEventModel' do let_it_be(:user) { create(:user) } let_it_be(:project) { create(:user) } let_it_be(:milestone) { create(:milestone) } - let_it_be(:issuable_with_assignee) { create(issuable_factory, assignees: [user])} + let_it_be(:issuable_with_assignee) { create(issuable_factory, assignees: [user]) } let_it_be(:record) { create(stage_event_factory, start_event_timestamp: 3.years.ago.to_date, end_event_timestamp: 2.years.ago.to_date) } let_it_be(:record_with_author) { create(stage_event_factory, author_id: user.id) } diff --git a/spec/support/shared_examples/models/concerns/counter_attribute_shared_examples.rb b/spec/support/shared_examples/models/concerns/counter_attribute_shared_examples.rb index f4d5ab3d5c6..f3a12578912 100644 --- a/spec/support/shared_examples/models/concerns/counter_attribute_shared_examples.rb +++ b/spec/support/shared_examples/models/concerns/counter_attribute_shared_examples.rb @@ -75,9 +75,9 @@ RSpec.shared_examples_for CounterAttribute do |counter_attributes| end context 'when attribute is not a counter attribute' do - it 'delegates to ActiveRecord update!' do + it 'raises ArgumentError' do expect { model.delayed_increment_counter(:unknown_attribute, 10) } - .to raise_error(ActiveModel::MissingAttributeError) + .to raise_error(ArgumentError, 'unknown_attribute is not a counter attribute') end end end diff --git a/spec/support/shared_examples/models/concerns/has_repository_shared_examples.rb b/spec/support/shared_examples/models/concerns/has_repository_shared_examples.rb index a403a27adef..0a07c9d677b 100644 --- a/spec/support/shared_examples/models/concerns/has_repository_shared_examples.rb +++ b/spec/support/shared_examples/models/concerns/has_repository_shared_examples.rb @@ -125,17 +125,17 @@ RSpec.shared_examples 'model with repository' do end describe '#valid_repo?' do - it { expect(stubbed_container.valid_repo?).to be(false)} + it { expect(stubbed_container.valid_repo?).to be(false) } it { expect(container.valid_repo?).to be(true) } end describe '#repository_exists?' do - it { expect(stubbed_container.repository_exists?).to be(false)} + it { expect(stubbed_container.repository_exists?).to be(false) } it { expect(container.repository_exists?).to be(true) } end describe '#repo_exists?' do - it { expect(stubbed_container.repo_exists?).to be(false)} + it { expect(stubbed_container.repo_exists?).to be(false) } it { expect(container.repo_exists?).to be(true) } end diff --git a/spec/support/shared_examples/models/concerns/incident_management/escalatable_shared_examples.rb b/spec/support/shared_examples/models/concerns/incident_management/escalatable_shared_examples.rb index 8ee76efc896..a5970f134d9 100644 --- a/spec/support/shared_examples/models/concerns/incident_management/escalatable_shared_examples.rb +++ b/spec/support/shared_examples/models/concerns/incident_management/escalatable_shared_examples.rb @@ -77,7 +77,7 @@ RSpec.shared_examples 'a model including Escalatable' do end context 'scopes' do - let(:all_escalatables) { described_class.where(id: [triggered_escalatable, acknowledged_escalatable, ignored_escalatable, resolved_escalatable])} + let(:all_escalatables) { described_class.where(id: [triggered_escalatable, acknowledged_escalatable, ignored_escalatable, resolved_escalatable]) } describe '.order_status' do subject { all_escalatables.order_status(order) } diff --git a/spec/support/shared_examples/models/label_note_shared_examples.rb b/spec/support/shared_examples/models/label_note_shared_examples.rb index 73066fb631a..f61007f57fd 100644 --- a/spec/support/shared_examples/models/label_note_shared_examples.rb +++ b/spec/support/shared_examples/models/label_note_shared_examples.rb @@ -12,7 +12,7 @@ RSpec.shared_examples 'label note created from events' do def label_refs(events) labels = events.map(&:label).compact - labels.map { |l| l.to_reference}.sort.join(' ') + labels.map { |l| l.to_reference }.sort.join(' ') end let(:time) { Time.now } diff --git a/spec/support/shared_examples/models/members_notifications_shared_example.rb b/spec/support/shared_examples/models/members_notifications_shared_example.rb index 75eed0203a7..e74aab95e46 100644 --- a/spec/support/shared_examples/models/members_notifications_shared_example.rb +++ b/spec/support/shared_examples/models/members_notifications_shared_example.rb @@ -8,7 +8,7 @@ RSpec.shared_examples 'members notifications' do |entity_type| end describe "#after_create" do - let(:member) { build(:"#{entity_type}_member") } + let(:member) { build(:"#{entity_type}_member", "#{entity_type}": create(entity_type.to_s)) } it "sends email to user" do expect(notification_service).to receive(:"new_#{entity_type}_member").with(member) @@ -35,7 +35,7 @@ RSpec.shared_examples 'members notifications' do |entity_type| describe '#after_commit' do context 'on creation of a member requesting access' do - let(:member) { build(:"#{entity_type}_member", :access_request) } + let(:member) { build(:"#{entity_type}_member", :access_request, "#{entity_type}": create(entity_type.to_s)) } it "calls NotificationService.new_access_request" do expect(notification_service).to receive(:new_access_request).with(member) diff --git a/spec/support/shared_examples/models/packages/debian/distribution_shared_examples.rb b/spec/support/shared_examples/models/packages/debian/distribution_shared_examples.rb index 6b0ae589efb..3d7d97bbeae 100644 --- a/spec/support/shared_examples/models/packages/debian/distribution_shared_examples.rb +++ b/spec/support/shared_examples/models/packages/debian/distribution_shared_examples.rb @@ -202,17 +202,17 @@ RSpec.shared_examples 'Debian Distribution' do |factory, container, can_freeze| end else describe 'group distribution specifics' do - let_it_be(:public_project) { create(:project, :public, group: distribution_with_suite.container)} + let_it_be(:public_project) { create(:project, :public, group: distribution_with_suite.container) } let_it_be(:public_distribution_with_same_codename) { create(:debian_project_distribution, container: public_project, codename: distribution_with_suite.codename) } - let_it_be(:public_package_with_same_codename) { create(:debian_package, project: public_project, published_in: public_distribution_with_same_codename)} + let_it_be(:public_package_with_same_codename) { create(:debian_package, project: public_project, published_in: public_distribution_with_same_codename) } let_it_be(:public_distribution_with_same_suite) { create(:debian_project_distribution, container: public_project, suite: distribution_with_suite.suite) } - let_it_be(:public_package_with_same_suite) { create(:debian_package, project: public_project, published_in: public_distribution_with_same_suite)} + let_it_be(:public_package_with_same_suite) { create(:debian_package, project: public_project, published_in: public_distribution_with_same_suite) } - let_it_be(:private_project) { create(:project, :private, group: distribution_with_suite.container)} + let_it_be(:private_project) { create(:project, :private, group: distribution_with_suite.container) } let_it_be(:private_distribution_with_same_codename) { create(:debian_project_distribution, container: private_project, codename: distribution_with_suite.codename) } - let_it_be(:private_package_with_same_codename) { create(:debian_package, project: private_project, published_in: private_distribution_with_same_codename)} + let_it_be(:private_package_with_same_codename) { create(:debian_package, project: private_project, published_in: private_distribution_with_same_codename) } let_it_be(:private_distribution_with_same_suite) { create(:debian_project_distribution, container: private_project, suite: distribution_with_suite.suite) } - let_it_be(:private_package_with_same_suite) { create(:debian_package, project: private_project, published_in: private_distribution_with_same_codename)} + let_it_be(:private_package_with_same_suite) { create(:debian_package, project: private_project, published_in: private_distribution_with_same_codename) } describe '#packages' do subject { distribution_with_suite.packages } diff --git a/spec/support/shared_examples/models/project_latest_successful_build_for_shared_examples.rb b/spec/support/shared_examples/models/project_latest_successful_build_for_shared_examples.rb index 66cd8d1df12..9093b386a5d 100644 --- a/spec/support/shared_examples/models/project_latest_successful_build_for_shared_examples.rb +++ b/spec/support/shared_examples/models/project_latest_successful_build_for_shared_examples.rb @@ -64,7 +64,7 @@ RSpec.shared_examples 'latest successful build for sha or ref' do context 'with build belonging to a child pipeline' do let(:child_pipeline) { create_pipeline(project) } let(:parent_bridge) { create(:ci_bridge, pipeline: pipeline, project: pipeline.project) } - let!(:pipeline_source) { create(:ci_sources_pipeline, source_job: parent_bridge, pipeline: child_pipeline)} + let!(:pipeline_source) { create(:ci_sources_pipeline, source_job: parent_bridge, pipeline: child_pipeline) } let!(:child_build) { create_build(child_pipeline, 'child-build') } let(:build_name) { child_build.name } diff --git a/spec/support/shared_examples/models/synthetic_note_shared_examples.rb b/spec/support/shared_examples/models/synthetic_note_shared_examples.rb index a41ade2950a..12e865b1312 100644 --- a/spec/support/shared_examples/models/synthetic_note_shared_examples.rb +++ b/spec/support/shared_examples/models/synthetic_note_shared_examples.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true RSpec.shared_examples 'a synthetic note' do |action| - it_behaves_like 'a system note', exclude_project: true do + it_behaves_like 'a system note', exclude_project: true, skip_persistence_check: true do let(:action) { action } end diff --git a/spec/support/shared_examples/models/update_project_statistics_shared_examples.rb b/spec/support/shared_examples/models/update_project_statistics_shared_examples.rb index ad0bbc0aeff..b81bd514d0a 100644 --- a/spec/support/shared_examples/models/update_project_statistics_shared_examples.rb +++ b/spec/support/shared_examples/models/update_project_statistics_shared_examples.rb @@ -26,9 +26,6 @@ RSpec.shared_examples 'UpdateProjectStatistics' do |with_counter_attribute| expect(FlushCounterIncrementsWorker) .to receive(:perform_in) .with(CounterAttribute::WORKER_DELAY, project.statistics.class.name, project.statistics.id, project_statistics_name) - expect(FlushCounterIncrementsWorker) - .to receive(:perform_in) - .with(CounterAttribute::WORKER_DELAY, project.statistics.class.name, project.statistics.id, :storage_size) yield diff --git a/spec/support/shared_examples/models/wiki_shared_examples.rb b/spec/support/shared_examples/models/wiki_shared_examples.rb index 604c57768fe..5f6a10bd754 100644 --- a/spec/support/shared_examples/models/wiki_shared_examples.rb +++ b/spec/support/shared_examples/models/wiki_shared_examples.rb @@ -286,67 +286,134 @@ RSpec.shared_examples 'wiki model' do end describe '#find_page' do - before do - subject.create_page('index page', 'This is an awesome Gollum Wiki') - end + shared_examples 'wiki model #find_page' do + before do + subject.create_page('index page', 'This is an awesome Gollum Wiki') + end - it 'returns the latest version of the page if it exists' do - page = subject.find_page('index page') + it 'returns the latest version of the page if it exists' do + page = subject.find_page('index page') - expect(page.title).to eq('index page') - end + expect(page.title).to eq('index page') + end - it 'returns nil if the page or version does not exist' do - expect(subject.find_page('non-existent')).to be_nil - expect(subject.find_page('index page', 'non-existent')).to be_nil - end + it 'returns nil if the page or version does not exist' do + expect(subject.find_page('non-existent')).to be_nil + expect(subject.find_page('index page', 'non-existent')).to be_nil + end - it 'can find a page by slug' do - page = subject.find_page('index-page') + it 'can find a page by slug' do + page = subject.find_page('index-page') - expect(page.title).to eq('index page') - end + expect(page.title).to eq('index page') + end - it 'returns a WikiPage instance' do - page = subject.find_page('index page') + it 'returns a WikiPage instance' do + page = subject.find_page('index page') - expect(page).to be_a WikiPage - end + expect(page).to be_a WikiPage + end - context 'pages with multibyte-character title' do - before do - subject.create_page('autre pagé', "C'est un génial Gollum Wiki") + context 'pages with multibyte-character title' do + before do + subject.create_page('autre pagé', "C'est un génial Gollum Wiki") + end + + it 'can find a page by slug' do + page = subject.find_page('autre pagé') + + expect(page.title).to eq('autre pagé') + end end - it 'can find a page by slug' do - page = subject.find_page('autre pagé') + context 'pages with invalidly-encoded content' do + before do + subject.create_page('encoding is fun', "f\xFCr".b) + end + + it 'can find the page' do + page = subject.find_page('encoding is fun') + + expect(page.content).to eq('fr') + end + end + + context 'pages with different file extensions' do + where(:extension, :path, :title) do + [ + [:md, "wiki-markdown.md", "wiki markdown"], + [:markdown, "wiki-markdown-2.md", "wiki markdown 2"], + [:rdoc, "wiki-rdoc.rdoc", "wiki rdoc"], + [:asciidoc, "wiki-asciidoc.asciidoc", "wiki asciidoc"], + [:adoc, "wiki-asciidoc-2.adoc", "wiki asciidoc 2"], + [:org, "wiki-org.org", "wiki org"], + [:textile, "wiki-textile.textile", "wiki textile"], + [:creole, "wiki-creole.creole", "wiki creole"], + [:rest, "wiki-rest.rest", "wiki rest"], + [:rst, "wiki-rest-2.rst", "wiki rest 2"], + [:mediawiki, "wiki-mediawiki.mediawiki", "wiki mediawiki"], + [:wiki, "wiki-mediawiki-2.wiki", "wiki mediawiki 2"], + [:pod, "wiki-pod.pod", "wiki pod"], + [:text, "wiki-text.txt", "wiki text"] + ] + end - expect(page.title).to eq('autre pagé') + with_them do + before do + wiki.repository.create_file( + user, path, "content of wiki file", + branch_name: wiki.default_branch, + message: "created page #{path}", + author_email: user.email, + author_name: user.name + ) + end + + it "can find page with #{params[:extension]} extension" do + page = subject.find_page(title) + + expect(page.content).to eq("content of wiki file") + end + end end end - context 'pages with invalidly-encoded content' do + context 'find page with legacy wiki service' do before do - subject.create_page('encoding is fun', "f\xFCr".b) + stub_feature_flags(wiki_find_page_with_normal_repository_rpcs: false) end - it 'can find the page' do - page = subject.find_page('encoding is fun') + it_behaves_like 'wiki model #find_page' + end - expect(page.content).to eq('fr') - end + context 'find page with normal repository RPCs' do + it_behaves_like 'wiki model #find_page' end end describe '#find_sidebar' do - before do - subject.create_page(described_class::SIDEBAR, 'This is an awesome Sidebar') + shared_examples 'wiki model #find_sidebar' do + before do + subject.create_page(described_class::SIDEBAR, 'This is an awesome Sidebar') + end + + it 'finds the page defined as _sidebar' do + page = subject.find_sidebar + + expect(page.content).to eq('This is an awesome Sidebar') + end end - it 'finds the page defined as _sidebar' do - page = subject.find_sidebar + context 'find sidebar with legacy wiki service' do + before do + stub_feature_flags(wiki_find_page_with_normal_repository_rpcs: false) + end - expect(page.content).to eq('This is an awesome Sidebar') + it_behaves_like 'wiki model #find_sidebar' + end + + context 'find sidebar with normal repository RPCs' do + it_behaves_like 'wiki model #find_sidebar' end end @@ -450,9 +517,7 @@ RSpec.shared_examples 'wiki model' do expect(subject.error_message).to match(/Duplicate page:/) end - end - it_behaves_like 'create_page tests' do it 'returns false if a page exists already in the repository', :aggregate_failures do subject.create_page('test page', 'content') @@ -540,6 +605,16 @@ RSpec.shared_examples 'wiki model' do end end end + + it_behaves_like 'create_page tests' + + context 'create page with legacy find_page wiki service' do + it_behaves_like 'create_page tests' do + before do + stub_feature_flags(wiki_find_page_with_normal_repository_rpcs: false) + end + end + end end describe '#update_page' do @@ -636,6 +711,17 @@ RSpec.shared_examples 'wiki model' do include_context 'extended examples' end + context 'update page with legacy find_page wiki service' do + it_behaves_like 'update_page tests' do + before do + stub_feature_flags(wiki_find_page_with_normal_repository_rpcs: false) + end + + include_context 'common examples' + include_context 'extended examples' + end + end + context 'when format is invalid' do let!(:page) { create(:wiki_page, wiki: subject, title: 'test page') } diff --git a/spec/support/shared_examples/namespaces/traversal_scope_examples.rb b/spec/support/shared_examples/namespaces/traversal_scope_examples.rb index 807295f8442..4afed5139d8 100644 --- a/spec/support/shared_examples/namespaces/traversal_scope_examples.rb +++ b/spec/support/shared_examples/namespaces/traversal_scope_examples.rb @@ -265,14 +265,6 @@ RSpec.shared_examples 'namespace traversal scopes' do describe '.self_and_descendants' do include_examples '.self_and_descendants' - - context 'with traversal_ids_btree feature flag disabled' do - before do - stub_feature_flags(traversal_ids_btree: false) - end - - include_examples '.self_and_descendants' - end end shared_examples '.self_and_descendant_ids' do @@ -308,14 +300,6 @@ RSpec.shared_examples 'namespace traversal scopes' do describe '.self_and_descendant_ids' do include_examples '.self_and_descendant_ids' - - context 'with traversal_ids_btree feature flag disabled' do - before do - stub_feature_flags(traversal_ids_btree: false) - end - - include_examples '.self_and_descendant_ids' - end end shared_examples '.self_and_hierarchy' do diff --git a/spec/support/shared_examples/policies/project_policy_shared_examples.rb b/spec/support/shared_examples/policies/project_policy_shared_examples.rb index c4083df47e2..cfcc3615e13 100644 --- a/spec/support/shared_examples/policies/project_policy_shared_examples.rb +++ b/spec/support/shared_examples/policies/project_policy_shared_examples.rb @@ -107,70 +107,88 @@ RSpec.shared_examples 'deploy token does not get confused with user' do end RSpec.shared_examples 'project policies as guest' do - context 'abilities for public projects' do - let(:project) { public_project } - let(:current_user) { guest } - - it do - expect_allowed(*guest_permissions) - expect_allowed(*public_permissions) - expect_disallowed(*developer_permissions) - expect_disallowed(*maintainer_permissions) - expect_disallowed(*owner_permissions) - end + let(:reporter_public_build_permissions) do + reporter_permissions - [:read_build, :read_pipeline] end - context 'abilities for non-public projects' do - let(:project) { private_project } - let(:current_user) { guest } + context 'as a direct project member' do + context 'abilities for public projects' do + let(:project) { public_project } + let(:current_user) { guest } - let(:reporter_public_build_permissions) do - reporter_permissions - [:read_build, :read_pipeline] + specify do + expect_allowed(*guest_permissions) + expect_allowed(*public_permissions) + expect_disallowed(*developer_permissions) + expect_disallowed(*maintainer_permissions) + expect_disallowed(*owner_permissions) + end end - it do - expect_allowed(*guest_permissions) - expect_disallowed(*reporter_public_build_permissions) - expect_disallowed(*team_member_reporter_permissions) - expect_disallowed(*developer_permissions) - expect_disallowed(*maintainer_permissions) - expect_disallowed(*owner_permissions) - end + context 'abilities for non-public projects' do + let(:project) { private_project } + let(:current_user) { guest } - it_behaves_like 'deploy token does not get confused with user' do - let(:user_id) { guest.id } - end + specify do + expect_allowed(*guest_permissions) + expect_disallowed(*reporter_public_build_permissions) + expect_disallowed(*team_member_reporter_permissions) + expect_disallowed(*developer_permissions) + expect_disallowed(*maintainer_permissions) + expect_disallowed(*owner_permissions) + end - it_behaves_like 'archived project policies' do - let(:regular_abilities) { guest_permissions } - end + it_behaves_like 'deploy token does not get confused with user' do + let(:user_id) { guest.id } + end - context 'public builds enabled' do - it do - expect_allowed(*guest_permissions) - expect_allowed(:read_build, :read_pipeline) + it_behaves_like 'archived project policies' do + let(:regular_abilities) { guest_permissions } end - end - context 'when public builds disabled' do - before do - project.update!(public_builds: false) + context 'public builds enabled' do + specify do + expect_allowed(*guest_permissions) + expect_allowed(:read_build, :read_pipeline) + end end - it do - expect_allowed(*guest_permissions) - expect_disallowed(:read_build, :read_pipeline) + context 'when public builds disabled' do + before do + project.update!(public_builds: false) + end + + specify do + expect_allowed(*guest_permissions) + expect_disallowed(:read_build, :read_pipeline) + end end - end - context 'when builds are disabled' do - before do - project.project_feature.update!(builds_access_level: ProjectFeature::DISABLED) + context 'when builds are disabled' do + before do + project.project_feature.update!(builds_access_level: ProjectFeature::DISABLED) + end + + specify do + expect_disallowed(:read_build) + expect_allowed(:read_pipeline) + end end + end + end - it do - expect_disallowed(:read_build) - expect_allowed(:read_pipeline) + context 'as an inherited member from the group' do + context 'abilities for private projects' do + let(:project) { private_project_in_group } + let(:current_user) { inherited_guest } + + specify do + expect_allowed(*guest_permissions) + expect_disallowed(*reporter_public_build_permissions) + expect_disallowed(*team_member_reporter_permissions) + expect_disallowed(*developer_permissions) + expect_disallowed(*maintainer_permissions) + expect_disallowed(*owner_permissions) end end end @@ -181,7 +199,7 @@ RSpec.shared_examples 'project policies as reporter' do let(:project) { private_project } let(:current_user) { reporter } - it do + specify do expect_allowed(*guest_permissions) expect_allowed(*reporter_permissions) expect_allowed(*team_member_reporter_permissions) @@ -198,6 +216,22 @@ RSpec.shared_examples 'project policies as reporter' do let(:regular_abilities) { reporter_permissions } end end + + context 'as an inherited member from the group' do + context 'abilities for private projects' do + let(:project) { private_project_in_group } + let(:current_user) { inherited_reporter } + + specify do + expect_allowed(*guest_permissions) + expect_allowed(*reporter_permissions) + expect_allowed(*team_member_reporter_permissions) + expect_disallowed(*developer_permissions) + expect_disallowed(*maintainer_permissions) + expect_disallowed(*owner_permissions) + end + end + end end RSpec.shared_examples 'project policies as developer' do @@ -205,7 +239,7 @@ RSpec.shared_examples 'project policies as developer' do let(:project) { private_project } let(:current_user) { developer } - it do + specify do expect_allowed(*guest_permissions) expect_allowed(*reporter_permissions) expect_allowed(*team_member_reporter_permissions) @@ -222,6 +256,22 @@ RSpec.shared_examples 'project policies as developer' do let(:regular_abilities) { developer_permissions } end end + + context 'as an inherited member from the group' do + context 'abilities for private projects' do + let(:project) { private_project_in_group } + let(:current_user) { inherited_developer } + + specify do + expect_allowed(*guest_permissions) + expect_allowed(*reporter_permissions) + expect_allowed(*team_member_reporter_permissions) + expect_allowed(*developer_permissions) + expect_disallowed(*maintainer_permissions) + expect_disallowed(*owner_permissions) + end + end + end end RSpec.shared_examples 'project policies as maintainer' do diff --git a/spec/support/shared_examples/projects/container_repository/cleanup_tags_service_shared_examples.rb b/spec/support/shared_examples/projects/container_repository/cleanup_tags_service_shared_examples.rb new file mode 100644 index 00000000000..9c2d30a9c8c --- /dev/null +++ b/spec/support/shared_examples/projects/container_repository/cleanup_tags_service_shared_examples.rb @@ -0,0 +1,263 @@ +# frozen_string_literal: true + +RSpec.shared_examples 'handling invalid params' do |service_response_extra: {}, supports_caching: false| + context 'when no params are specified' do + let(:params) { {} } + + it_behaves_like 'not removing anything', + service_response_extra: service_response_extra, + supports_caching: supports_caching + end + + context 'with invalid regular expressions' do + shared_examples 'handling an invalid regex' do + it 'keeps all tags' do + expect(Projects::ContainerRepository::DeleteTagsService) + .not_to receive(:new) + expect_no_caching unless supports_caching + + subject + end + + it { is_expected.to eq(status: :error, message: 'invalid regex') } + + it 'calls error tracking service' do + expect(Gitlab::ErrorTracking).to receive(:log_exception).and_call_original + + subject + end + end + + context 'when name_regex_delete is invalid' do + let(:params) { { 'name_regex_delete' => '*test*' } } + + it_behaves_like 'handling an invalid regex' + end + + context 'when name_regex is invalid' do + let(:params) { { 'name_regex' => '*test*' } } + + it_behaves_like 'handling an invalid regex' + end + + context 'when name_regex_keep is invalid' do + let(:params) { { 'name_regex_keep' => '*test*' } } + + it_behaves_like 'handling an invalid regex' + end + end +end + +RSpec.shared_examples 'when regex matching everything is specified' do + |service_response_extra: {}, supports_caching: false, delete_expectations:| + let(:params) do + { 'name_regex_delete' => '.*' } + end + + it_behaves_like 'removing the expected tags', + service_response_extra: service_response_extra, + supports_caching: supports_caching, + delete_expectations: delete_expectations + + context 'with deprecated name_regex param' do + let(:params) do + { 'name_regex' => '.*' } + end + + it_behaves_like 'removing the expected tags', + service_response_extra: service_response_extra, + supports_caching: supports_caching, + delete_expectations: delete_expectations + end +end + +RSpec.shared_examples 'when delete regex matching specific tags is used' do + |service_response_extra: {}, supports_caching: false| + let(:params) do + { 'name_regex_delete' => 'C|D' } + end + + it_behaves_like 'removing the expected tags', + service_response_extra: service_response_extra, + supports_caching: supports_caching, + delete_expectations: [%w[C D]] +end + +RSpec.shared_examples 'when delete regex matching specific tags is used with overriding allow regex' do + |service_response_extra: {}, supports_caching: false| + let(:params) do + { + 'name_regex_delete' => 'C|D', + 'name_regex_keep' => 'C' + } + end + + it_behaves_like 'removing the expected tags', + service_response_extra: service_response_extra, + supports_caching: supports_caching, + delete_expectations: [%w[D]] + + context 'with name_regex_delete overriding deprecated name_regex' do + let(:params) do + { + 'name_regex' => 'C|D', + 'name_regex_delete' => 'D' + } + end + + it_behaves_like 'removing the expected tags', + service_response_extra: service_response_extra, + supports_caching: supports_caching, + delete_expectations: [%w[D]] + end +end + +RSpec.shared_examples 'with allow regex value' do + |service_response_extra: {}, supports_caching: false, delete_expectations:| + let(:params) do + { + 'name_regex_delete' => '.*', + 'name_regex_keep' => 'B.*' + } + end + + it_behaves_like 'removing the expected tags', + service_response_extra: service_response_extra, + supports_caching: supports_caching, + delete_expectations: delete_expectations +end + +RSpec.shared_examples 'when keeping only N tags' do + |service_response_extra: {}, supports_caching: false, delete_expectations:| + let(:params) do + { + 'name_regex' => 'A|B.*|C', + 'keep_n' => 1 + } + end + + it 'sorts tags by date' do + delete_expectations.each { |expectation| expect_delete(expectation) } + expect_no_caching unless supports_caching + + expect(service).to receive(:order_by_date_desc).at_least(:once).and_call_original + + is_expected.to eq(expected_service_response(deleted: delete_expectations.flatten).merge(service_response_extra)) + end +end + +RSpec.shared_examples 'when not keeping N tags' do + |service_response_extra: {}, supports_caching: false, delete_expectations:| + let(:params) do + { 'name_regex' => 'A|B.*|C' } + end + + it 'does not sort tags by date' do + delete_expectations.each { |expectation| expect_delete(expectation) } + expect_no_caching unless supports_caching + + expect(service).not_to receive(:order_by_date_desc) + + is_expected.to eq(expected_service_response(deleted: delete_expectations.flatten).merge(service_response_extra)) + end +end + +RSpec.shared_examples 'when removing keeping only 3' do + |service_response_extra: {}, supports_caching: false, delete_expectations:| + let(:params) do + { 'name_regex_delete' => '.*', + 'keep_n' => 3 } + end + + it_behaves_like 'removing the expected tags', + service_response_extra: service_response_extra, + supports_caching: supports_caching, + delete_expectations: delete_expectations +end + +RSpec.shared_examples 'when removing older than 1 day' do + |service_response_extra: {}, supports_caching: false, delete_expectations:| + let(:params) do + { + 'name_regex_delete' => '.*', + 'older_than' => '1 day' + } + end + + it_behaves_like 'removing the expected tags', + service_response_extra: service_response_extra, + supports_caching: supports_caching, + delete_expectations: delete_expectations +end + +RSpec.shared_examples 'when combining all parameters' do + |service_response_extra: {}, supports_caching: false, delete_expectations:| + let(:params) do + { + 'name_regex_delete' => '.*', + 'keep_n' => 1, + 'older_than' => '1 day' + } + end + + it_behaves_like 'removing the expected tags', + service_response_extra: service_response_extra, + supports_caching: supports_caching, + delete_expectations: delete_expectations +end + +RSpec.shared_examples 'when running a container_expiration_policy' do + |service_response_extra: {}, supports_caching: false, delete_expectations:| + let(:user) { nil } + + context 'with valid container_expiration_policy param' do + let(:params) do + { + 'name_regex_delete' => '.*', + 'keep_n' => 1, + 'older_than' => '1 day', + 'container_expiration_policy' => true + } + end + + it 'removes the expected tags' do + delete_expectations.each { |expectation| expect_delete(expectation, container_expiration_policy: true) } + expect_no_caching unless supports_caching + + is_expected.to eq(expected_service_response(deleted: delete_expectations.flatten).merge(service_response_extra)) + end + end + + context 'without container_expiration_policy param' do + let(:params) do + { + 'name_regex_delete' => '.*', + 'keep_n' => 1, + 'older_than' => '1 day' + } + end + + it 'fails' do + is_expected.to eq(status: :error, message: 'access denied') + end + end +end + +RSpec.shared_examples 'not removing anything' do |service_response_extra: {}, supports_caching: false| + it 'does not remove anything' do + expect(Projects::ContainerRepository::DeleteTagsService).not_to receive(:new) + expect_no_caching unless supports_caching + + is_expected.to eq(expected_service_response(deleted: []).merge(service_response_extra)) + end +end + +RSpec.shared_examples 'removing the expected tags' do + |service_response_extra: {}, supports_caching: false, delete_expectations:| + it 'removes the expected tags' do + delete_expectations.each { |expectation| expect_delete(expectation) } + expect_no_caching unless supports_caching + + is_expected.to eq(expected_service_response(deleted: delete_expectations.flatten).merge(service_response_extra)) + end +end diff --git a/spec/support/shared_examples/quick_actions/incident/timeline_quick_action_shared_examples.rb b/spec/support/shared_examples/quick_actions/incident/timeline_quick_action_shared_examples.rb new file mode 100644 index 00000000000..ae7e511a739 --- /dev/null +++ b/spec/support/shared_examples/quick_actions/incident/timeline_quick_action_shared_examples.rb @@ -0,0 +1,82 @@ +# frozen_string_literal: true + +RSpec.shared_examples 'timeline quick action' do + describe '/timeline' do + context 'with valid args' do + where(:timeline_text, :date_time_arg) do + [ + ['timeline comment', '2022-09-09 09:30'], + ['new timeline comment', '09:30'], + ['another timeline comment', ' 2022-09-09 09:15'] + ] + end + + with_them do + it 'adds a timeline event' do + add_note("/timeline #{timeline_text} | #{date_time_arg}") + + expect(page).to have_content('Timeline event added successfully.') + expect(issue.incident_management_timeline_events.first.note).to eq(timeline_text) + expect(issue.incident_management_timeline_events.first.occurred_at).to eq(DateTime.parse(date_time_arg)) + end + end + + it 'adds a timeline event when no date is passed' do + freeze_time do + add_note('/timeline timeline event with not date') + + expect(page).to have_content('Timeline event added successfully.') + expect(issue.incident_management_timeline_events.first.note).to eq('timeline event with not date') + expect(issue.incident_management_timeline_events.first.occurred_at).to eq(DateTime + .current.strftime("%Y-%m-%d %H:%M:00 UTC")) + end + end + + it 'adds a timeline event when only date is passed' do + freeze_time do + add_note('/timeline timeline event with not date | 2022-10-11') + + expect(page).to have_content('Timeline event added successfully.') + expect(issue.incident_management_timeline_events.first.note).to eq('timeline event with not date') + expect(issue.incident_management_timeline_events.first.occurred_at).to eq(DateTime + .current.strftime("%Y-%m-%d %H:%M:00 UTC")) + end + end + end + + context 'with invalid args' do + where(:timeline_text, :date_time_arg) do + [ + ['timeline comment', '2022-13-13 09:30'], + ['timeline comment 2', '2022-09-06 24:30'] + ] + end + + with_them do + it 'does not add a timeline event' do + add_note("/timeline #{timeline_text} | #{date_time_arg}") + + expect(page).to have_content('Failed to apply commands.') + expect(issue.incident_management_timeline_events.length).to eq(0) + end + end + end + + context 'when create service fails' do + before do + allow_next_instance_of(::IncidentManagement::TimelineEvents::CreateService) do |service| + allow(service).to receive(:execute).and_return( + ServiceResponse.error(payload: { timeline_event: nil }, message: 'Some error') + ) + end + end + + it 'does not add a timeline event' do + add_note('/timeline text | 2022-09-10 09:30') + + expect(page).to have_content('Something went wrong while adding timeline event.') + expect(issue.incident_management_timeline_events.length).to eq(0) + end + end + end +end diff --git a/spec/support/shared_examples/quick_actions/issuable/time_tracking_quick_action_shared_examples.rb b/spec/support/shared_examples/quick_actions/issuable/time_tracking_quick_action_shared_examples.rb index f414500f202..18304951e41 100644 --- a/spec/support/shared_examples/quick_actions/issuable/time_tracking_quick_action_shared_examples.rb +++ b/spec/support/shared_examples/quick_actions/issuable/time_tracking_quick_action_shared_examples.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true RSpec.shared_examples 'issuable time tracker' do |issuable_type| + let_it_be(:time_tracker_selector) { '[data-testid="time-tracker"]' } + before do project.add_maintainer(maintainer) gitlab_sign_in(maintainer) @@ -12,6 +14,14 @@ RSpec.shared_examples 'issuable time tracker' do |issuable_type| wait_for_requests end + def open_time_tracking_report + page.within time_tracker_selector do + click_link 'Time tracking report' + + wait_for_requests + end + end + it 'renders the sidebar component empty state' do page.within '[data-testid="noTrackingPane"]' do expect(page).to have_content 'No estimate or time spent' @@ -50,7 +60,7 @@ RSpec.shared_examples 'issuable time tracker' do |issuable_type| submit_time('/estimate 3w 1d 1h') submit_time('/remove_estimate') - page.within '.time-tracking-component-wrap' do + page.within time_tracker_selector do expect(page).to have_content 'No estimate or time spent' end end @@ -59,13 +69,13 @@ RSpec.shared_examples 'issuable time tracker' do |issuable_type| submit_time('/spend 3w 1d 1h') submit_time('/remove_time_spent') - page.within '.time-tracking-component-wrap' do + page.within time_tracker_selector do expect(page).to have_content 'No estimate or time spent' end end it 'shows the help state when icon is clicked' do - page.within '.time-tracking-component-wrap' do + page.within time_tracker_selector do find('[data-testid="helpButton"]').click expect(page).to have_content 'Track time with quick actions' expect(page).to have_content 'Learn more' @@ -78,11 +88,7 @@ RSpec.shared_examples 'issuable time tracker' do |issuable_type| wait_for_requests - page.within '.time-tracking-component-wrap' do - click_link 'Time tracking report' - - wait_for_requests - end + open_time_tracking_report page.within '#time-tracking-report' do expect(find('tbody')).to have_content maintainer.name @@ -90,8 +96,36 @@ RSpec.shared_examples 'issuable time tracker' do |issuable_type| end end + it 'removes time log when delete is clicked in time tracking report' do + submit_time('/estimate 1w') + submit_time('/spend 1d') + submit_time('/spend 3d') + + wait_for_requests + + open_time_tracking_report + + page.within '#time-tracking-report tbody tr:nth-child(2)' do + click_button test_id: 'deleteButton' + + wait_for_requests + end + + # Assert that 2nd row was removed + expect(all('#time-tracking-report tbody tr').length).to eq(1) + expect(find('#time-tracking-report tbody')).not_to have_content('3d') + + # Assert that summary line was updated + expect(find('#time-tracking-report tfoot')).to have_content('1d', exact: true) + + # Assert that the time tracking widget was reactively updated + page.within '[data-testid="timeTrackingComparisonPane"]' do + expect(page).to have_content '1d' + end + end + it 'hides the help state when close icon is clicked' do - page.within '.time-tracking-component-wrap' do + page.within time_tracker_selector do find('[data-testid="helpButton"]').click find('[data-testid="closeHelpButton"]').click @@ -101,7 +135,7 @@ RSpec.shared_examples 'issuable time tracker' do |issuable_type| end it 'displays the correct help url' do - page.within '.time-tracking-component-wrap' do + page.within time_tracker_selector do find('[data-testid="helpButton"]').click expect(find_link('Learn more')[:href]).to have_content('/help/user/project/time_tracking.md') diff --git a/spec/support/shared_examples/quick_actions/merge_request/rebase_quick_action_shared_examples.rb b/spec/support/shared_examples/quick_actions/merge_request/rebase_quick_action_shared_examples.rb index 2258bdd2c79..92705fc1b4d 100644 --- a/spec/support/shared_examples/quick_actions/merge_request/rebase_quick_action_shared_examples.rb +++ b/spec/support/shared_examples/quick_actions/merge_request/rebase_quick_action_shared_examples.rb @@ -75,7 +75,16 @@ RSpec.shared_examples 'rebase quick action' do end context 'when the merge request branch is protected from force push' do - let!(:protected_branch) { create(:protected_branch, project: project, name: merge_request.source_branch, allow_force_push: false) } + let!(:protected_branch) do + ProtectedBranches::CreateService.new( + project, + user, + name: merge_request.source_branch, + allow_force_push: false, + push_access_levels_attributes: [{ access_level: Gitlab::Access::DEVELOPER }], + merge_access_levels_attributes: [{ access_level: Gitlab::Access::DEVELOPER }] + ).execute + end it 'does not rebase the MR' do add_note("/rebase") diff --git a/spec/support/shared_examples/requests/access_tokens_controller_shared_examples.rb b/spec/support/shared_examples/requests/access_tokens_controller_shared_examples.rb index 6cd871d354c..017e6274cb0 100644 --- a/spec/support/shared_examples/requests/access_tokens_controller_shared_examples.rb +++ b/spec/support/shared_examples/requests/access_tokens_controller_shared_examples.rb @@ -108,18 +108,31 @@ RSpec.shared_examples 'PUT resource access tokens available' do expect(resource.reload.bots).not_to include(bot_user) end - it 'converts issuables of the bot user to ghost user' do - issue = create(:issue, author: bot_user) + context 'when user_destroy_with_limited_execution_time_worker is enabled' do + it 'creates GhostUserMigration records to handle migration in a worker' do + expect { subject }.to( + change { Users::GhostUserMigration.count }.from(0).to(1)) + end + end - subject + context 'when user_destroy_with_limited_execution_time_worker is disabled' do + before do + stub_feature_flags(user_destroy_with_limited_execution_time_worker: false) + end - expect(issue.reload.author.ghost?).to be true - end + it 'converts issuables of the bot user to ghost user' do + issue = create(:issue, author: bot_user) - it 'deletes project bot user' do - subject + subject + + expect(issue.reload.author.ghost?).to be true + end - expect(User.exists?(bot_user.id)).to be_falsy + it 'deletes project bot user' do + subject + + expect(User.exists?(bot_user.id)).to be_falsy + end end context 'when unsuccessful' do diff --git a/spec/support/shared_examples/requests/api/composer_packages_shared_examples.rb b/spec/support/shared_examples/requests/api/composer_packages_shared_examples.rb index dc2c4f890b1..6a77de4266f 100644 --- a/spec/support/shared_examples/requests/api/composer_packages_shared_examples.rb +++ b/spec/support/shared_examples/requests/api/composer_packages_shared_examples.rb @@ -108,6 +108,7 @@ RSpec.shared_examples 'process Composer api request' do |user_type, status, add_ end it_behaves_like 'returning response status', status + it_behaves_like 'bumping the package last downloaded at field' if status == :success end end diff --git a/spec/support/shared_examples/requests/api/conan_packages_shared_examples.rb b/spec/support/shared_examples/requests/api/conan_packages_shared_examples.rb index bb2f8965294..629d93676eb 100644 --- a/spec/support/shared_examples/requests/api/conan_packages_shared_examples.rb +++ b/spec/support/shared_examples/requests/api/conan_packages_shared_examples.rb @@ -355,7 +355,7 @@ RSpec.shared_examples 'recipe download_urls' do it 'returns the download_urls for the recipe files' do expected_response = { - 'conanfile.py' => "#{url_prefix}/packages/conan/v1/files/#{package.conan_recipe_path}/0/export/conanfile.py", + 'conanfile.py' => "#{url_prefix}/packages/conan/v1/files/#{package.conan_recipe_path}/0/export/conanfile.py", 'conanmanifest.txt' => "#{url_prefix}/packages/conan/v1/files/#{package.conan_recipe_path}/0/export/conanmanifest.txt" } @@ -372,7 +372,7 @@ RSpec.shared_examples 'package download_urls' do it 'returns the download_urls for the package files' do expected_response = { - 'conaninfo.txt' => "#{url_prefix}/packages/conan/v1/files/#{package.conan_recipe_path}/0/package/123456789/0/conaninfo.txt", + 'conaninfo.txt' => "#{url_prefix}/packages/conan/v1/files/#{package.conan_recipe_path}/0/package/123456789/0/conaninfo.txt", 'conanmanifest.txt' => "#{url_prefix}/packages/conan/v1/files/#{package.conan_recipe_path}/0/package/123456789/0/conanmanifest.txt", 'conan_package.tgz' => "#{url_prefix}/packages/conan/v1/files/#{package.conan_recipe_path}/0/package/123456789/0/conan_package.tgz" } @@ -412,7 +412,7 @@ RSpec.shared_examples 'recipe snapshot endpoint' do conan_manifest_file = package.package_files.find_by(file_name: 'conanmanifest.txt') expected_response = { - 'conanfile.py' => conan_file_file.file_md5, + 'conanfile.py' => conan_file_file.file_md5, 'conanmanifest.txt' => conan_manifest_file.file_md5 } @@ -435,7 +435,7 @@ RSpec.shared_examples 'package snapshot endpoint' do context 'with existing package' do it 'returns a hash of md5 values for the files' do expected_response = { - 'conaninfo.txt' => "12345abcde", + 'conaninfo.txt' => "12345abcde", 'conanmanifest.txt' => "12345abcde", 'conan_package.tgz' => "12345abcde" } @@ -486,7 +486,7 @@ RSpec.shared_examples 'recipe upload_urls endpoint' do subject expected_response = { - 'conanfile.py': "#{url_prefix}/packages/conan/v1/files/#{package.conan_recipe_path}/0/export/conanfile.py", + 'conanfile.py': "#{url_prefix}/packages/conan/v1/files/#{package.conan_recipe_path}/0/export/conanfile.py", 'conanmanifest.txt': "#{url_prefix}/packages/conan/v1/files/#{package.conan_recipe_path}/0/export/conanmanifest.txt" } @@ -505,7 +505,7 @@ RSpec.shared_examples 'recipe upload_urls endpoint' do expected_response = { 'conan_sources.tgz': "#{url_prefix}/packages/conan/v1/files/#{package.conan_recipe_path}/0/export/conan_sources.tgz", - 'conan_export.tgz': "#{url_prefix}/packages/conan/v1/files/#{package.conan_recipe_path}/0/export/conan_export.tgz", + 'conan_export.tgz': "#{url_prefix}/packages/conan/v1/files/#{package.conan_recipe_path}/0/export/conan_export.tgz", 'conanmanifest.txt': "#{url_prefix}/packages/conan/v1/files/#{package.conan_recipe_path}/0/export/conanmanifest.txt" } @@ -547,7 +547,7 @@ RSpec.shared_examples 'package upload_urls endpoint' do it 'returns a set of upload urls for the files requested' do expected_response = { - 'conaninfo.txt': "#{url_prefix}/packages/conan/v1/files/#{package.conan_recipe_path}/0/package/123456789/0/conaninfo.txt", + 'conaninfo.txt': "#{url_prefix}/packages/conan/v1/files/#{package.conan_recipe_path}/0/package/123456789/0/conaninfo.txt", 'conanmanifest.txt': "#{url_prefix}/packages/conan/v1/files/#{package.conan_recipe_path}/0/package/123456789/0/conanmanifest.txt", 'conan_package.tgz': "#{url_prefix}/packages/conan/v1/files/#{package.conan_recipe_path}/0/package/123456789/0/conan_package.tgz" } @@ -631,6 +631,7 @@ RSpec.shared_examples 'a public project with packages' do end it_behaves_like 'allows download with no token' + it_behaves_like 'bumping the package last downloaded at field' it 'returns the file' do subject @@ -647,6 +648,7 @@ RSpec.shared_examples 'an internal project with packages' do end it_behaves_like 'denies download with no token' + it_behaves_like 'bumping the package last downloaded at field' it 'returns the file' do subject @@ -662,6 +664,7 @@ RSpec.shared_examples 'a private project with packages' do end it_behaves_like 'denies download with no token' + it_behaves_like 'bumping the package last downloaded at field' it 'returns the file' do subject diff --git a/spec/support/shared_examples/requests/api/graphql/issuable_search_shared_examples.rb b/spec/support/shared_examples/requests/api/graphql/issuable_search_shared_examples.rb new file mode 100644 index 00000000000..22805cf7aed --- /dev/null +++ b/spec/support/shared_examples/requests/api/graphql/issuable_search_shared_examples.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +# Requires `query(params)` , `user`, `issuable_data` and `issuable` bindings +RSpec.shared_examples 'query with a search term' do + it 'returns only matching issuables' do + filter_params = { search: 'bar', in: [:DESCRIPTION] } + graphql_query = query(filter_params) + + post_graphql(graphql_query, current_user: user) + ids = graphql_dig_at(issuable_data, :node, :id) + + expect(ids).to contain_exactly(issuable.to_global_id.to_s) + end +end diff --git a/spec/support/shared_examples/requests/api/graphql/packages/group_and_project_packages_list_shared_examples.rb b/spec/support/shared_examples/requests/api/graphql/packages/group_and_project_packages_list_shared_examples.rb index 9f7ec6e90e9..1b609915f32 100644 --- a/spec/support/shared_examples/requests/api/graphql/packages/group_and_project_packages_list_shared_examples.rb +++ b/spec/support/shared_examples/requests/api/graphql/packages/group_and_project_packages_list_shared_examples.rb @@ -9,9 +9,10 @@ RSpec.shared_examples 'group and project packages query' do let_it_be(:composer_package) { create(:composer_package, project: project2, name: 'dab', version: '4.0.0', created_at: 3.days.ago) } let_it_be(:debian_package) { create(:debian_package, project: project2, name: 'aab', version: '5.0.0', created_at: 2.days.ago) } let_it_be(:composer_metadatum) do - create(:composer_metadatum, package: composer_package, - target_sha: 'afdeh', - composer_json: { name: 'x', type: 'y', license: 'z', version: 1 }) + create(:composer_metadatum, + package: composer_package, + target_sha: 'afdeh', + composer_json: { name: 'x', type: 'y', license: 'z', version: 1 }) end let(:package_names) { graphql_data_at(resource_type, :packages, :nodes, :name) } diff --git a/spec/support/shared_examples/requests/api/helm_packages_shared_examples.rb b/spec/support/shared_examples/requests/api/helm_packages_shared_examples.rb index acbcf4f7f3d..06ed0448b50 100644 --- a/spec/support/shared_examples/requests/api/helm_packages_shared_examples.rb +++ b/spec/support/shared_examples/requests/api/helm_packages_shared_examples.rb @@ -191,14 +191,15 @@ RSpec.shared_examples 'process helm download content request' do |user_type, sta end end - it_behaves_like 'a package tracking event', 'API::HelmPackages', 'pull_package' - it 'returns expected status and a valid package archive' do subject expect(response).to have_gitlab_http_status(status) expect(response.media_type).to eq('application/octet-stream') end + + it_behaves_like 'a package tracking event', 'API::HelmPackages', 'pull_package' + it_behaves_like 'bumping the package last downloaded at field' end end @@ -278,7 +279,6 @@ RSpec.shared_examples 'handling helm chart index requests' do end it_behaves_like 'deploy token for package GET requests' - it_behaves_like 'rejects helm access with unknown project id' do subject { get api(url) } end diff --git a/spec/support/shared_examples/requests/api/issues/merge_requests_count_shared_examples.rb b/spec/support/shared_examples/requests/api/issues/merge_requests_count_shared_examples.rb index 971b21b5b32..8c4ff120471 100644 --- a/spec/support/shared_examples/requests/api/issues/merge_requests_count_shared_examples.rb +++ b/spec/support/shared_examples/requests/api/issues/merge_requests_count_shared_examples.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true def get_issue - json_response.is_a?(Array) ? json_response.detect {|issue| issue['id'] == target_issue.id} : json_response + json_response.is_a?(Array) ? json_response.detect { |issue| issue['id'] == target_issue.id } : json_response end RSpec.shared_examples 'accessible merge requests count' do diff --git a/spec/support/shared_examples/requests/api/labels_api_shared_examples.rb b/spec/support/shared_examples/requests/api/labels_api_shared_examples.rb index 02e50b789cc..41d21490343 100644 --- a/spec/support/shared_examples/requests/api/labels_api_shared_examples.rb +++ b/spec/support/shared_examples/requests/api/labels_api_shared_examples.rb @@ -9,6 +9,6 @@ RSpec.shared_examples 'fetches labels' do expect(json_response).to be_an Array expect(json_response).to all(match_schema('public_api/v4/labels/label')) expect(json_response.size).to eq(expected_labels.size) - expect(json_response.map {|r| r['name'] }).to match_array(expected_labels) + expect(json_response.map { |r| r['name'] }).to match_array(expected_labels) end end diff --git a/spec/support/shared_examples/requests/api/nuget_packages_shared_examples.rb b/spec/support/shared_examples/requests/api/nuget_packages_shared_examples.rb index 6568d51b90e..fdd55893deb 100644 --- a/spec/support/shared_examples/requests/api/nuget_packages_shared_examples.rb +++ b/spec/support/shared_examples/requests/api/nuget_packages_shared_examples.rb @@ -293,6 +293,8 @@ RSpec.shared_examples 'process nuget download content request' do |user_type, st it_behaves_like 'a package tracking event', 'API::NugetPackages', 'pull_package' + it_behaves_like 'bumping the package last downloaded at field' + it 'returns a valid package archive' do subject @@ -315,6 +317,8 @@ RSpec.shared_examples 'process nuget download content request' do |user_type, st end it_behaves_like 'a package tracking event', 'API::NugetPackages', 'pull_symbol_package' + + it_behaves_like 'bumping the package last downloaded at field' end context 'with lower case package name' do diff --git a/spec/support/shared_examples/requests/api/packages_shared_examples.rb b/spec/support/shared_examples/requests/api/packages_shared_examples.rb index eb650b7a09f..860cb1b1d86 100644 --- a/spec/support/shared_examples/requests/api/packages_shared_examples.rb +++ b/spec/support/shared_examples/requests/api/packages_shared_examples.rb @@ -165,3 +165,10 @@ RSpec.shared_examples 'not a package tracking event' do expect_no_snowplow_event end end + +RSpec.shared_examples 'bumping the package last downloaded at field' do + it 'bumps last_downloaded_at' do + expect { subject } + .to change { package.reload.last_downloaded_at }.from(nil).to(instance_of(ActiveSupport::TimeWithZone)) + end +end diff --git a/spec/support/shared_examples/requests/api/pypi_packages_shared_examples.rb b/spec/support/shared_examples/requests/api/pypi_packages_shared_examples.rb index ba8311bf0be..f411b5699a9 100644 --- a/spec/support/shared_examples/requests/api/pypi_packages_shared_examples.rb +++ b/spec/support/shared_examples/requests/api/pypi_packages_shared_examples.rb @@ -167,6 +167,7 @@ RSpec.shared_examples 'PyPI package download' do |user_type, status, add_member it_behaves_like 'returning response status', status it_behaves_like 'a package tracking event', described_class.name, 'pull_package' + it_behaves_like 'bumping the package last downloaded at field' end end diff --git a/spec/support/shared_examples/requests/api/repository_storage_moves_shared_examples.rb b/spec/support/shared_examples/requests/api/repository_storage_moves_shared_examples.rb index 3ca2b9fa6de..2d036cb2aa3 100644 --- a/spec/support/shared_examples/requests/api/repository_storage_moves_shared_examples.rb +++ b/spec/support/shared_examples/requests/api/repository_storage_moves_shared_examples.rb @@ -70,7 +70,7 @@ RSpec.shared_examples 'repository_storage_moves API' do |container_type| get_container_repository_storage_moves - json_ids = json_response.map {|storage_move| storage_move['id'] } + json_ids = json_response.map { |storage_move| storage_move['id'] } expect(json_ids).to eq([ storage_move.id, storage_move_middle.id, diff --git a/spec/support/shared_examples/requests/api/resource_state_events_api_shared_examples.rb b/spec/support/shared_examples/requests/api/resource_state_events_api_shared_examples.rb new file mode 100644 index 00000000000..c1850a0d0c9 --- /dev/null +++ b/spec/support/shared_examples/requests/api/resource_state_events_api_shared_examples.rb @@ -0,0 +1,82 @@ +# frozen_string_literal: true + +RSpec.shared_examples 'resource_state_events API' do |parent_type, eventable_type, id_name| + let(:base_path) { "/#{parent_type}/#{parent.id}/#{eventable_type}/#{eventable[id_name]}" } + + describe "GET /#{parent_type}/:id/#{eventable_type}/:noteable_id/resource_state_events" do + let!(:event) { create_event } + + it "returns an array of resource state events" do + url = "#{base_path}/resource_state_events" + get api(url, user) + + expect(response).to have_gitlab_http_status(:ok) + expect(response).to include_pagination_headers + expect(json_response).to be_an Array + expect(json_response.first['id']).to eq(event.id) + expect(json_response.first['state']).to eq(event.state.to_s) + end + + it "returns a 404 error when eventable id not found" do + get api("/#{parent_type}/#{parent.id}/#{eventable_type}/#{non_existing_record_id}/resource_state_events", user) + + expect(response).to have_gitlab_http_status(:not_found) + end + + it "returns 404 when not authorized" do + parent.update!(visibility_level: Gitlab::VisibilityLevel::PRIVATE) + private_user = create(:user) + + get api("#{base_path}/resource_state_events", private_user) + + expect(response).to have_gitlab_http_status(:not_found) + end + end + + describe "GET /#{parent_type}/:id/#{eventable_type}/:noteable_id/resource_state_events/:event_id" do + let!(:event) { create_event } + + it "returns a resource state event by id" do + get api("#{base_path}/resource_state_events/#{event.id}", user) + + expect(response).to have_gitlab_http_status(:ok) + expect(json_response['id']).to eq(event.id) + expect(json_response['state']).to eq(event.state.to_s) + end + + it "returns 404 when not authorized" do + parent.update!(visibility_level: Gitlab::VisibilityLevel::PRIVATE) + private_user = create(:user) + + get api("#{base_path}/resource_state_events/#{event.id}", private_user) + + expect(response).to have_gitlab_http_status(:not_found) + end + + it "returns a 404 error if resource state event not found" do + get api("#{base_path}/resource_state_events/#{non_existing_record_id}", user) + + expect(response).to have_gitlab_http_status(:not_found) + end + end + + describe 'pagination' do + # https://gitlab.com/gitlab-org/gitlab/-/issues/220192 + it 'returns the second page' do + create_event + event2 = create_event + + get api("#{base_path}/resource_state_events?page=2&per_page=1", user) + + expect(response).to have_gitlab_http_status(:ok) + expect(response).to include_pagination_headers + expect(response.headers['X-Total']).to eq '2' + expect(json_response.count).to eq(1) + expect(json_response.first['id']).to eq(event2.id) + end + end + + def create_event(state: :opened) + create(:resource_state_event, eventable.class.name.underscore => eventable, state: state) + end +end diff --git a/spec/support/shared_examples/requests/api/rubygems_packages_shared_examples.rb b/spec/support/shared_examples/requests/api/rubygems_packages_shared_examples.rb index abdb468353a..f075927e7bf 100644 --- a/spec/support/shared_examples/requests/api/rubygems_packages_shared_examples.rb +++ b/spec/support/shared_examples/requests/api/rubygems_packages_shared_examples.rb @@ -203,5 +203,6 @@ RSpec.shared_examples 'Rubygems gem download' do |user_type, status, add_member end it_behaves_like 'a package tracking event', described_class.name, 'pull_package' + it_behaves_like 'bumping the package last downloaded at field' end end diff --git a/spec/support/shared_examples/requests/api/snippets_shared_examples.rb b/spec/support/shared_examples/requests/api/snippets_shared_examples.rb index 2b72c69cb37..1b92eb56f54 100644 --- a/spec/support/shared_examples/requests/api/snippets_shared_examples.rb +++ b/spec/support/shared_examples/requests/api/snippets_shared_examples.rb @@ -133,7 +133,7 @@ RSpec.shared_examples 'snippet file updates' do context 'when save fails due to a repository commit error' do before do allow_next_instance_of(Repository) do |instance| - allow(instance).to receive(:multi_action).and_raise(Gitlab::Git::CommitError) + allow(instance).to receive(:commit_files).and_raise(Gitlab::Git::CommitError) end update_snippet(params: { files: [create_action] }) diff --git a/spec/support/shared_examples/requests/applications_controller_shared_examples.rb b/spec/support/shared_examples/requests/applications_controller_shared_examples.rb index 8f852d42c2c..642930dd982 100644 --- a/spec/support/shared_examples/requests/applications_controller_shared_examples.rb +++ b/spec/support/shared_examples/requests/applications_controller_shared_examples.rb @@ -11,6 +11,7 @@ RSpec.shared_examples 'applications controller - GET #show' do context 'when application is viewed after being created' do before do create_application + stub_feature_flags(hash_oauth_secrets: false) end it 'sets `@created` instance variable to `true`' do @@ -21,6 +22,10 @@ RSpec.shared_examples 'applications controller - GET #show' do end context 'when application is reviewed' do + before do + stub_feature_flags(hash_oauth_secrets: false) + end + it 'sets `@created` instance variable to `false`' do get show_path @@ -32,6 +37,7 @@ end RSpec.shared_examples 'applications controller - POST #create' do it "sets `#{OauthApplications::CREATED_SESSION_KEY}` session key to `true`" do + stub_feature_flags(hash_oauth_secrets: false) create_application expect(session[OauthApplications::CREATED_SESSION_KEY]).to eq(true) diff --git a/spec/support/shared_examples/requests/lfs_http_shared_examples.rb b/spec/support/shared_examples/requests/lfs_http_shared_examples.rb index 294ceffd77b..83be0cc1fe3 100644 --- a/spec/support/shared_examples/requests/lfs_http_shared_examples.rb +++ b/spec/support/shared_examples/requests/lfs_http_shared_examples.rb @@ -49,7 +49,7 @@ RSpec.shared_examples 'LFS http 404 response' do end RSpec.shared_examples 'LFS http expected response code and message' do - let(:response_code) { } + let(:response_code) {} let(:response_headers) { {} } let(:content_type) { LfsRequest::CONTENT_TYPE } let(:message) {} diff --git a/spec/support/shared_examples/requests/projects/google_cloud/google_cloud_ff_examples.rb b/spec/support/shared_examples/requests/projects/google_cloud/google_cloud_ff_examples.rb new file mode 100644 index 00000000000..d49fe517c60 --- /dev/null +++ b/spec/support/shared_examples/requests/projects/google_cloud/google_cloud_ff_examples.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +RSpec.shared_examples 'requires feature flag `incubation_5mp_google_cloud` enabled' do + context 'when feature flag is disabled' do + before do + project.add_maintainer(user) + stub_feature_flags(incubation_5mp_google_cloud: false) + end + + it 'renders not found' do + sign_in(user) + + subject + + expect(response).to have_gitlab_http_status(:not_found) + end + end +end diff --git a/spec/support/shared_examples/requests/projects/google_cloud/google_cloud_role_examples.rb b/spec/support/shared_examples/requests/projects/google_cloud/google_cloud_role_examples.rb new file mode 100644 index 00000000000..4c616b59be0 --- /dev/null +++ b/spec/support/shared_examples/requests/projects/google_cloud/google_cloud_role_examples.rb @@ -0,0 +1,55 @@ +# frozen_string_literal: true + +RSpec.shared_examples 'requires `admin_project_google_cloud` role' do + shared_examples 'returns not_found' do + it 'returns not found' do + sign_in(user) + + subject + + expect(response).to have_gitlab_http_status(:not_found) + end + end + + shared_examples 'redirects to authorize url' do + it 'redirects to authorize url' do + sign_in(user) + + subject + + expect(response).to redirect_to(assigns(:authorize_url)) + end + end + + context 'when requested by users with different roles' do + let_it_be(:guest) { create(:user) } + let_it_be(:developer) { create(:user) } + let_it_be(:maintainer) { create(:user) } + + before do + project.add_guest(guest) + project.add_developer(developer) + project.add_maintainer(maintainer) + end + + context 'for unauthorized users' do + include_examples 'returns not_found' do + let(:user) { guest } + end + + include_examples 'returns not_found' do + let(:user) { developer } + end + end + + context 'for authorized users' do + include_examples 'redirects to authorize url' do + let(:user) { maintainer } + end + + include_examples 'redirects to authorize url' do + let(:user) { project.owner } + end + end + end +end diff --git a/spec/support/shared_examples/requests/projects/google_cloud/google_oauth2_config_examples.rb b/spec/support/shared_examples/requests/projects/google_cloud/google_oauth2_config_examples.rb new file mode 100644 index 00000000000..63f6cffb3a0 --- /dev/null +++ b/spec/support/shared_examples/requests/projects/google_cloud/google_oauth2_config_examples.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +RSpec.shared_examples 'requires valid Google OAuth2 configuration' do + context 'when GitLab instance does not have valid Google OAuth2 configuration ' do + before do + project.add_maintainer(user) + unconfigured_google_oauth2 = Struct.new(:app_id, :app_secret) + .new('', '') + allow(Gitlab::Auth::OAuth::Provider).to receive(:config_for) + .with('google_oauth2') + .and_return(unconfigured_google_oauth2) + end + + it 'renders forbidden' do + sign_in(user) + + subject + + expect(response).to have_gitlab_http_status(:forbidden) + end + end +end diff --git a/spec/support/shared_examples/requests/projects/google_cloud/google_oauth2_token_examples.rb b/spec/support/shared_examples/requests/projects/google_cloud/google_oauth2_token_examples.rb new file mode 100644 index 00000000000..379327be0db --- /dev/null +++ b/spec/support/shared_examples/requests/projects/google_cloud/google_oauth2_token_examples.rb @@ -0,0 +1,47 @@ +# frozen_string_literal: true + +RSpec.shared_examples 'requires valid Google Oauth2 token' do + context 'when a valid Google OAuth2 token does not exist' do + before do + project.add_maintainer(user) + sign_in(user) + end + + it 'triggers Google OAuth2 flow on request' do + subject + + expect(response).to redirect_to(assigns(:authorize_url)) + end + + context 'and a valid Google OAuth2 token gets created' do + before do + allow_next_instance_of(GoogleApi::CloudPlatform::Client) do |client| + allow(client).to receive(:validate_token).and_return(true) + allow(client).to receive(:list_projects).and_return(mock_gcp_projects) if mock_gcp_projects + end + + allow_next_instance_of(BranchesFinder) do |finder| + allow(finder).to receive(:execute).and_return(mock_branches) if mock_branches + end + + allow_next_instance_of(TagsFinder) do |finder| + allow(finder).to receive(:execute).and_return(mock_branches) if mock_branches + end + end + + it 'renders template as expected' do + if renders_template + subject + expect(response).to render_template(renders_template) + end + end + + it 'redirects as expected' do + if redirects_to + subject + expect(response).to redirect_to(redirects_to) + end + end + end + end +end diff --git a/spec/support/shared_examples/requests/rack_attack_shared_examples.rb b/spec/support/shared_examples/requests/rack_attack_shared_examples.rb index d4417b23a5f..11759b6671f 100644 --- a/spec/support/shared_examples/requests/rack_attack_shared_examples.rb +++ b/spec/support/shared_examples/requests/rack_attack_shared_examples.rb @@ -518,7 +518,7 @@ RSpec.shared_examples 'rate-limited unauthenticated requests' do context 'when the request is to the api internal endpoints' do it 'allows requests over the rate limit' do (1 + requests_per_period).times do - get '/api/v4/internal/check', params: { secret_token: Gitlab::Shell.secret_token } + get '/api/v4/internal/check', headers: GitlabShellHelpers.gitlab_shell_internal_api_request_header expect(response).to have_gitlab_http_status(:ok) end end diff --git a/spec/support/shared_examples/routing/resource_routing_shared_examples.rb b/spec/support/shared_examples/routing/resource_routing_shared_examples.rb index b98901a57ea..d7a674f3522 100644 --- a/spec/support/shared_examples/routing/resource_routing_shared_examples.rb +++ b/spec/support/shared_examples/routing/resource_routing_shared_examples.rb @@ -43,12 +43,12 @@ RSpec.shared_examples 'resource routing' do let(:default_actions) do { - index: [:get, ''], - show: [:get, '/:id'], - new: [:get, '/new'], - create: [:post, ''], - edit: [:get, '/:id/edit'], - update: [:put, '/:id'], + index: [:get, ''], + show: [:get, '/:id'], + new: [:get, '/new'], + create: [:post, ''], + edit: [:get, '/:id/edit'], + update: [:put, '/:id'], destroy: [:delete, '/:id'] } end diff --git a/spec/support/shared_examples/routing/wiki_routing_shared_examples.rb b/spec/support/shared_examples/routing/wiki_routing_shared_examples.rb index 9289934677e..64f237f0d4d 100644 --- a/spec/support/shared_examples/routing/wiki_routing_shared_examples.rb +++ b/spec/support/shared_examples/routing/wiki_routing_shared_examples.rb @@ -6,9 +6,9 @@ RSpec.shared_examples 'wiki routing' do let(:actions) { %i[show new create edit update destroy] } let(:additional_actions) do { - pages: [:get, '/pages'], - history: [:get, '/:id/history'], - git_access: [:get, '/git_access'], + pages: [:get, '/pages'], + history: [:get, '/:id/history'], + git_access: [:get, '/git_access'], preview_markdown: [:post, '/:id/preview_markdown'] } end diff --git a/spec/support/shared_examples/security_training_providers_importer.rb b/spec/support/shared_examples/security_training_providers_importer.rb new file mode 100644 index 00000000000..568e3e1a4f2 --- /dev/null +++ b/spec/support/shared_examples/security_training_providers_importer.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +RSpec.shared_examples 'security training providers importer' do + let(:security_training_providers) do + Class.new(ApplicationRecord) do + self.table_name = 'security_training_providers' + end + end + + it 'upserts security training providers' do + expect { 2.times { subject } }.to change(security_training_providers, :count).from(0).to(2) + expect(security_training_providers.all.map(&:name)).to match_array(['Kontra', 'Secure Code Warrior']) + end +end diff --git a/spec/support/shared_examples/serializers/environment_serializer_shared_examples.rb b/spec/support/shared_examples/serializers/environment_serializer_shared_examples.rb index 6d59943d91c..9eaad541df7 100644 --- a/spec/support/shared_examples/serializers/environment_serializer_shared_examples.rb +++ b/spec/support/shared_examples/serializers/environment_serializer_shared_examples.rb @@ -9,7 +9,8 @@ RSpec.shared_examples 'avoid N+1 on environments serialization' do create_environment_with_associations(project) # See issue: https://gitlab.com/gitlab-org/gitlab/-/issues/363317 - relax_count = 1 + # See also: https://gitlab.com/gitlab-org/gitlab/-/issues/373151 + relax_count = 4 expect { serialize(grouping: true) }.not_to exceed_query_limit(control.count + relax_count) end @@ -23,7 +24,8 @@ RSpec.shared_examples 'avoid N+1 on environments serialization' do create_environment_with_associations(project) # See issue: https://gitlab.com/gitlab-org/gitlab/-/issues/363317 - relax_count = 1 + # See also: https://gitlab.com/gitlab-org/gitlab/-/issues/373151 + relax_count = 5 expect { serialize(grouping: false) }.not_to exceed_query_limit(control.count + relax_count) end diff --git a/spec/support/shared_examples/services/alert_management/alert_processing/alert_firing_shared_examples.rb b/spec/support/shared_examples/services/alert_management/alert_processing/alert_firing_shared_examples.rb index 6cae7d8e00f..0db9519f760 100644 --- a/spec/support/shared_examples/services/alert_management/alert_processing/alert_firing_shared_examples.rb +++ b/spec/support/shared_examples/services/alert_management/alert_processing/alert_firing_shared_examples.rb @@ -23,12 +23,10 @@ RSpec.shared_examples 'creates an alert management alert or errors' do end context 'and fails to save' do - let(:errors) { double(messages: { hosts: ['hosts array is over 255 chars'] }, '[]': [] )} - before do - allow(service).to receive(:alert).and_call_original - allow(service).to receive_message_chain(:alert, :save).and_return(false) - allow(service).to receive_message_chain(:alert, :errors).and_return(errors) + allow(AlertManagement::Alert).to receive(:new).and_wrap_original do |m, **args| + m.call(**args, hosts: ['a' * 256]) # hosts should be 255 + end end it_behaves_like 'alerts service responds with an error', :bad_request diff --git a/spec/support/shared_examples/services/boards/issues_move_service_shared_examples.rb b/spec/support/shared_examples/services/boards/issues_move_service_shared_examples.rb index a46c2f0ac5c..162be24fe8f 100644 --- a/spec/support/shared_examples/services/boards/issues_move_service_shared_examples.rb +++ b/spec/support/shared_examples/services/boards/issues_move_service_shared_examples.rb @@ -3,8 +3,8 @@ RSpec.shared_examples 'issues move service' do |group| shared_examples 'updating timestamps' do it 'updates updated_at' do - expect {described_class.new(parent, user, params).execute(issue)} - .to change {issue.reload.updated_at} + expect { described_class.new(parent, user, params).execute(issue) } + .to change { issue.reload.updated_at } end end @@ -140,6 +140,40 @@ RSpec.shared_examples 'issues move service' do |group| expect(issue2.reload.updated_at.change(usec: 0)).to eq updated_at2.change(usec: 0) end + context 'when moving to a specific list position' do + before do + [issue1, issue2, issue].each do |issue| + issue.move_to_end && issue.save! + end + end + + it 'moves issue to the top of the list' do + described_class.new(parent, user, params.merge({ position_in_list: 0 })).execute(issue) + + expect(issue.relative_position).to be < issue1.relative_position + end + + it 'moves issue to a position in the middle of the list' do + described_class.new(parent, user, params.merge({ position_in_list: 1 })).execute(issue) + + expect(issue.relative_position).to be_between(issue1.relative_position, issue2.relative_position) + end + + it 'moves issue to the bottom of the list' do + described_class.new(parent, user, params.merge({ position_in_list: -1 })).execute(issue1) + + expect(issue1.relative_position).to be > issue.relative_position + end + + context 'when given position is greater than number of issues in the list' do + it 'moves the issue to the bottom of the list' do + described_class.new(parent, user, params.merge({ position_in_list: 5 })).execute(issue1) + + expect(issue1.relative_position).to be > issue.relative_position + end + end + end + def reorder_issues(params, issues: []) issues.each do |issue| issue.move_to_end && issue.save! diff --git a/spec/support/shared_examples/services/common_system_notes_shared_examples.rb b/spec/support/shared_examples/services/common_system_notes_shared_examples.rb index ce412ef55de..1887b38b50e 100644 --- a/spec/support/shared_examples/services/common_system_notes_shared_examples.rb +++ b/spec/support/shared_examples/services/common_system_notes_shared_examples.rb @@ -42,6 +42,7 @@ RSpec.shared_examples 'a system note' do |params| it 'has the correct attributes', :aggregate_failures do exclude_project = !params.nil? && params[:exclude_project] + skip_persistence_check = !params.nil? && params[:skip_persistence_check] expect(subject).to be_valid expect(subject).to be_system @@ -50,6 +51,7 @@ RSpec.shared_examples 'a system note' do |params| expect(subject.project).to eq project unless exclude_project expect(subject.author).to eq author + expect(subject.system_note_metadata).to be_persisted unless skip_persistence_check expect(subject.system_note_metadata.action).to eq(action) expect(subject.system_note_metadata.commit_count).to eq(commit_count) end diff --git a/spec/support/shared_examples/services/container_registry_auth_service_shared_examples.rb b/spec/support/shared_examples/services/container_registry_auth_service_shared_examples.rb index 3be59af6a37..58659775d8c 100644 --- a/spec/support/shared_examples/services/container_registry_auth_service_shared_examples.rb +++ b/spec/support/shared_examples/services/container_registry_auth_service_shared_examples.rb @@ -54,6 +54,12 @@ RSpec.shared_examples 'a valid token' do end end +RSpec.shared_examples 'with auth_type' do + let(:current_params) { super().merge(auth_type: :foo) } + + it { expect(payload['auth_type']).to eq('foo') } +end + RSpec.shared_examples 'a browsable' do let(:access) do [{ 'type' => 'registry', @@ -199,8 +205,8 @@ RSpec.shared_examples 'a container registry auth service' do describe '.import_access_token' do let(:access) do [{ 'type' => 'registry', - 'name' => 'import', - 'actions' => ['*'] }] + 'name' => 'import', + 'actions' => ['*'] }] end let(:token) { described_class.import_access_token } @@ -286,6 +292,7 @@ RSpec.shared_examples 'a container registry auth service' do shared_examples 'private project' do context 'allow to use scope-less authentication' do it_behaves_like 'a valid token' + it_behaves_like 'with auth_type' end context 'allow developer to push images' do @@ -299,6 +306,7 @@ RSpec.shared_examples 'a container registry auth service' do it_behaves_like 'a pushable' it_behaves_like 'container repository factory' + it_behaves_like 'with auth_type' end context 'disallow developer to delete images' do @@ -341,6 +349,7 @@ RSpec.shared_examples 'a container registry auth service' do it_behaves_like 'a pullable' it_behaves_like 'not a container repository factory' + it_behaves_like 'with auth_type' end end @@ -381,6 +390,7 @@ RSpec.shared_examples 'a container registry auth service' do it_behaves_like 'a pullable' it_behaves_like 'not a container repository factory' + it_behaves_like 'with auth_type' end context 'disallow guest to pull or push images' do @@ -445,6 +455,7 @@ RSpec.shared_examples 'a container registry auth service' do it_behaves_like 'a pullable' it_behaves_like 'not a container repository factory' + it_behaves_like 'with auth_type' end context 'disallow anyone to push images' do @@ -495,6 +506,7 @@ RSpec.shared_examples 'a container registry auth service' do it_behaves_like 'a pullable' it_behaves_like 'not a container repository factory' + it_behaves_like 'with auth_type' end context 'disallow anyone to push images' do @@ -600,6 +612,7 @@ RSpec.shared_examples 'a container registry auth service' do end it_behaves_like 'a valid token' + it_behaves_like 'with auth_type' context 'allow to pull and push images' do let(:current_params) do @@ -944,10 +957,11 @@ RSpec.shared_examples 'a container registry auth service' do shared_examples 'able to login' do context 'registry provides read_container_image authentication_abilities' do - let(:current_params) { { deploy_token: deploy_token } } + let(:current_params) { { deploy_token: deploy_token, auth_type: :deploy_token } } let(:authentication_abilities) { [:read_container_image] } it_behaves_like 'an authenticated' + it { expect(payload['auth_type']).to eq('deploy_token') } end end diff --git a/spec/support/shared_examples/services/feature_flags/client_shared_examples.rb b/spec/support/shared_examples/services/feature_flags/client_shared_examples.rb index a62cffc0e1b..73a02905914 100644 --- a/spec/support/shared_examples/services/feature_flags/client_shared_examples.rb +++ b/spec/support/shared_examples/services/feature_flags/client_shared_examples.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -shared_examples_for 'update feature flag client' do +RSpec.shared_examples_for 'update feature flag client' do let!(:client) { create(:operations_feature_flags_client, project: project) } it 'updates last feature flag updated at' do @@ -10,7 +10,7 @@ shared_examples_for 'update feature flag client' do end end -shared_examples_for 'does not update feature flag client' do +RSpec.shared_examples_for 'does not update feature flag client' do let!(:client) { create(:operations_feature_flags_client, project: project) } it 'does not update last feature flag updated at' do diff --git a/spec/support/shared_examples/services/gitlab_projects_import_service_shared_examples.rb b/spec/support/shared_examples/services/gitlab_projects_import_service_shared_examples.rb index 2aac7e328f0..366fa4763e1 100644 --- a/spec/support/shared_examples/services/gitlab_projects_import_service_shared_examples.rb +++ b/spec/support/shared_examples/services/gitlab_projects_import_service_shared_examples.rb @@ -33,7 +33,7 @@ RSpec.shared_examples 'gitlab projects import validations' do context 'when there is a project with the same path' do let(:existing_project) { create(:project, namespace: namespace) } - let(:path) { existing_project.path} + let(:path) { existing_project.path } it 'does not create the project' do project = subject.execute diff --git a/spec/support/shared_examples/services/issuable/destroy_service_shared_examples.rb b/spec/support/shared_examples/services/issuable/destroy_service_shared_examples.rb index 31571b1ffb9..92681b8ba79 100644 --- a/spec/support/shared_examples/services/issuable/destroy_service_shared_examples.rb +++ b/spec/support/shared_examples/services/issuable/destroy_service_shared_examples.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -shared_examples_for 'service scheduling async deletes' do +RSpec.shared_examples_for 'service scheduling async deletes' do it 'destroys associated todos asynchronously' do expect(worker_class) .to receive(:perform_async) @@ -20,13 +20,13 @@ shared_examples_for 'service scheduling async deletes' do end end -shared_examples_for 'service deleting todos' do +RSpec.shared_examples_for 'service deleting todos' do it_behaves_like 'service scheduling async deletes' do let(:worker_class) { TodosDestroyer::DestroyedIssuableWorker } end end -shared_examples_for 'service deleting label links' do +RSpec.shared_examples_for 'service deleting label links' do it_behaves_like 'service scheduling async deletes' do let(:worker_class) { Issuable::LabelLinksDestroyWorker } end diff --git a/spec/support/shared_examples/services/issuable/update_service_shared_examples.rb b/spec/support/shared_examples/services/issuable/update_service_shared_examples.rb new file mode 100644 index 00000000000..3d90885dd6f --- /dev/null +++ b/spec/support/shared_examples/services/issuable/update_service_shared_examples.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +RSpec.shared_examples_for 'issuable update service updating last_edited_at values' do + context 'when updating the title of the issuable' do + let(:update_params) { { title: 'updated title' } } + + it 'does not update last_edited values' do + expect { update_issuable }.to change(issuable, :title).from(issuable.title).to('updated title').and( + not_change(issuable, :last_edited_at) + ).and( + not_change(issuable, :last_edited_by) + ) + end + end + + context 'when updating the description of the issuable' do + let(:update_params) { { description: 'updated description' } } + + it 'updates last_edited values' do + expect do + update_issuable + end.to change(issuable, :description).from(issuable.description).to('updated description').and( + change(issuable, :last_edited_at) + ).and( + change(issuable, :last_edited_by) + ) + end + end +end diff --git a/spec/support/shared_examples/services/issuable_links/create_links_shared_examples.rb b/spec/support/shared_examples/services/issuable_links/create_links_shared_examples.rb index 9610cdd18a3..65351ac94ab 100644 --- a/spec/support/shared_examples/services/issuable_links/create_links_shared_examples.rb +++ b/spec/support/shared_examples/services/issuable_links/create_links_shared_examples.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -shared_examples 'issuable link creation' do +RSpec.shared_examples 'issuable link creation' do describe '#execute' do subject { described_class.new(issuable, user, params).execute } diff --git a/spec/support/shared_examples/services/issuable_links/destroyable_issuable_links_shared_examples.rb b/spec/support/shared_examples/services/issuable_links/destroyable_issuable_links_shared_examples.rb index 53d637a9094..5e80014da1d 100644 --- a/spec/support/shared_examples/services/issuable_links/destroyable_issuable_links_shared_examples.rb +++ b/spec/support/shared_examples/services/issuable_links/destroyable_issuable_links_shared_examples.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -shared_examples 'a destroyable issuable link' do +RSpec.shared_examples 'a destroyable issuable link' do context 'when successfully removes an issuable link' do before do issuable_link.source.resource_parent.add_reporter(user) diff --git a/spec/support/shared_examples/services/merge_request_shared_examples.rb b/spec/support/shared_examples/services/merge_request_shared_examples.rb index d2595b92cbc..b3ba0a1be93 100644 --- a/spec/support/shared_examples/services/merge_request_shared_examples.rb +++ b/spec/support/shared_examples/services/merge_request_shared_examples.rb @@ -123,7 +123,7 @@ end RSpec.shared_examples 'with an existing branch that has a merge request open' do |count| let(:changes) { existing_branch_changes } - let!(:merge_request) { create(:merge_request, source_project: project, source_branch: source_branch)} + let!(:merge_request) { create(:merge_request, source_project: project, source_branch: source_branch) } it_behaves_like 'a service that does not create a merge request' it_behaves_like 'a service that can change assignees of a merge request', count diff --git a/spec/support/shared_examples/services/onboarding_progress_shared_examples.rb b/spec/support/shared_examples/services/onboarding_progress_shared_examples.rb index 8c6c2271af3..07025dac689 100644 --- a/spec/support/shared_examples/services/onboarding_progress_shared_examples.rb +++ b/spec/support/shared_examples/services/onboarding_progress_shared_examples.rb @@ -4,7 +4,7 @@ RSpec.shared_examples 'records an onboarding progress action' do |action| include AfterNextHelpers it do - expect_next(OnboardingProgressService, namespace) + expect_next(Onboarding::ProgressService, namespace) .to receive(:execute).with(action: action).and_call_original subject @@ -13,7 +13,7 @@ end RSpec.shared_examples 'does not record an onboarding progress action' do it do - expect(OnboardingProgressService).not_to receive(:new) + expect(Onboarding::ProgressService).not_to receive(:new) subject end diff --git a/spec/support/shared_examples/services/packages/debian/generate_distribution_shared_examples.rb b/spec/support/shared_examples/services/packages/debian/generate_distribution_shared_examples.rb index 7fd20fc3909..ea79dc674a1 100644 --- a/spec/support/shared_examples/services/packages/debian/generate_distribution_shared_examples.rb +++ b/spec/support/shared_examples/services/packages/debian/generate_distribution_shared_examples.rb @@ -190,6 +190,7 @@ RSpec.shared_examples 'Generate Debian Distribution and component files' do Codename: unstable Date: Sat, 25 Jan 2020 15:17:18 +0000 Valid-Until: Mon, 27 Jan 2020 15:17:18 +0000 + Acquire-By-Hash: yes Architectures: all amd64 arm64 Components: contrib main MD5Sum: @@ -249,6 +250,7 @@ RSpec.shared_examples 'Generate Debian Distribution and component files' do Codename: unstable Date: Sat, 25 Jan 2020 15:17:18 +0000 Valid-Until: Mon, 27 Jan 2020 15:17:18 +0000 + Acquire-By-Hash: yes MD5Sum: SHA256: EOF diff --git a/spec/support/shared_examples/services/packages_shared_examples.rb b/spec/support/shared_examples/services/packages_shared_examples.rb index 704a4bbe0b8..ca4dea90c55 100644 --- a/spec/support/shared_examples/services/packages_shared_examples.rb +++ b/spec/support/shared_examples/services/packages_shared_examples.rb @@ -227,6 +227,7 @@ RSpec.shared_examples 'filters on each package_type' do |is_project: false| let_it_be(:package10) { create(:rubygems_package, project: project) } let_it_be(:package11) { create(:helm_package, project: project) } let_it_be(:package12) { create(:terraform_module_package, project: project) } + let_it_be(:package13) { create(:rpm_package, project: project) } Packages::Package.package_types.keys.each do |package_type| context "for package type #{package_type}" do diff --git a/spec/support/shared_examples/services/resource_events/synthetic_notes_builder_shared_examples.rb b/spec/support/shared_examples/services/resource_events/synthetic_notes_builder_shared_examples.rb index 716bee39fca..a7e51408032 100644 --- a/spec/support/shared_examples/services/resource_events/synthetic_notes_builder_shared_examples.rb +++ b/spec/support/shared_examples/services/resource_events/synthetic_notes_builder_shared_examples.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true RSpec.shared_examples 'filters by paginated notes' do |event_type| - let(:event) { create(event_type) } # rubocop:disable Rails/SaveBang + let(:event) { create(event_type, issue: create(:issue)) } before do create(event_type, issue: event.issue) diff --git a/spec/support/shared_examples/services/snippets_shared_examples.rb b/spec/support/shared_examples/services/snippets_shared_examples.rb index 5a44f739b27..65893d84798 100644 --- a/spec/support/shared_examples/services/snippets_shared_examples.rb +++ b/spec/support/shared_examples/services/snippets_shared_examples.rb @@ -14,7 +14,8 @@ RSpec.shared_examples 'checking spam' do spammable: kind_of(Snippet), spam_params: spam_params, user: an_instance_of(User), - action: action + action: action, + extra_features: { files: an_instance_of(Array) } } ) do |instance| expect(instance).to receive(:execute) @@ -24,7 +25,7 @@ RSpec.shared_examples 'checking spam' do end end -shared_examples 'invalid params error response' do +RSpec.shared_examples 'invalid params error response' do before do allow_next_instance_of(described_class) do |service| allow(service).to receive(:valid_params?).and_return false diff --git a/spec/support/shared_examples/services/snowplow_tracking_shared_examples.rb b/spec/support/shared_examples/services/snowplow_tracking_shared_examples.rb index 0687be6f429..31919a4263d 100644 --- a/spec/support/shared_examples/services/snowplow_tracking_shared_examples.rb +++ b/spec/support/shared_examples/services/snowplow_tracking_shared_examples.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -shared_examples 'issue_edit snowplow tracking' do +RSpec.shared_examples 'issue_edit snowplow tracking' do let(:category) { Gitlab::UsageDataCounters::IssueActivityUniqueCounter::ISSUE_CATEGORY } let(:action) { Gitlab::UsageDataCounters::IssueActivityUniqueCounter::ISSUE_ACTION } let(:label) { Gitlab::UsageDataCounters::IssueActivityUniqueCounter::ISSUE_LABEL } diff --git a/spec/support/shared_examples/tasks/gitlab/uploads/migration_shared_examples.rb b/spec/support/shared_examples/tasks/gitlab/uploads/migration_shared_examples.rb deleted file mode 100644 index b37a8059574..00000000000 --- a/spec/support/shared_examples/tasks/gitlab/uploads/migration_shared_examples.rb +++ /dev/null @@ -1,31 +0,0 @@ -# frozen_string_literal: true - -# Expects the calling spec to define: -# - uploader_class -# - model_class -# - mounted_as -RSpec.shared_examples 'enqueue upload migration jobs in batch' do |batch:| - def run(task) - args = [uploader_class.to_s, model_class.to_s, mounted_as].compact - run_rake_task(task, *args) - end - - it 'migrates local storage to remote object storage' do - expect(ObjectStorage::MigrateUploadsWorker) - .to receive(:perform_async).exactly(batch).times - .and_return("A fake job.") - - run('gitlab:uploads:migrate') - end - - it 'migrates remote object storage to local storage' do - expect(Upload).to receive(:where).exactly(batch + 1).times { Upload.all } - expect(ObjectStorage::MigrateUploadsWorker) - .to receive(:perform_async) - .with(anything, model_class.name, mounted_as, ObjectStorage::Store::LOCAL) - .exactly(batch).times - .and_return("A fake job.") - - run('gitlab:uploads:migrate_to_local') - end -end diff --git a/spec/support/shared_examples/uploaders/object_storage_shared_examples.rb b/spec/support/shared_examples/uploaders/object_storage_shared_examples.rb index f8b00d1e4c0..3c977e62a10 100644 --- a/spec/support/shared_examples/uploaders/object_storage_shared_examples.rb +++ b/spec/support/shared_examples/uploaders/object_storage_shared_examples.rb @@ -56,8 +56,8 @@ RSpec.shared_examples "migrates" do |to_store:, from_store: nil| it 'can access to the original file during migration' do file = subject.file - allow(subject).to receive(:delete_migrated_file) { } # Remove as a callback of :migrate - allow(subject).to receive(:record_upload) { } # Remove as a callback of :store (:record_upload) + allow(subject).to receive(:delete_migrated_file) {} # Remove as a callback of :migrate + allow(subject).to receive(:record_upload) {} # Remove as a callback of :store (:record_upload) expect(file.exists?).to be_truthy expect { migrate(to) }.not_to change { file.exists? } diff --git a/spec/support/shared_examples/users/migrate_records_to_ghost_user_service_shared_examples.rb b/spec/support/shared_examples/users/migrate_records_to_ghost_user_service_shared_examples.rb new file mode 100644 index 00000000000..eb03f0888b9 --- /dev/null +++ b/spec/support/shared_examples/users/migrate_records_to_ghost_user_service_shared_examples.rb @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +RSpec.shared_examples 'migrating records to the ghost user' do |record_class, fields| + record_class_name = record_class.to_s.titleize.downcase + + let(:project) do + case record_class + when MergeRequest + create(:project, :repository) + else + create(:project) + end + end + + before do + project.add_developer(user) + end + + context "for a #{record_class_name} the user has created" do + let!(:record) { created_record } + let(:migrated_fields) { fields || [:author] } + + it "does not delete the #{record_class_name}" do + service.execute + + expect(record_class.find_by_id(record.id)).to be_present + end + + it 'migrates all associated fields to the "Ghost user"' do + service.execute + + migrated_record = record_class.find_by_id(record.id) + + migrated_fields.each do |field| + expect(migrated_record.public_send(field)).to eq(User.ghost) + end + end + end +end |