diff options
127 files changed, 4874 insertions, 541 deletions
diff --git a/.rubocop.yml b/.rubocop.yml index 23f4ee435bb..adc796f1332 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -316,6 +316,11 @@ Rails/ActiveRecordCallbacksOrder: - app/models/**/*.rb - ee/app/models/**/*.rb +# We disable this since network latency isn't an issue and schema changes execute in a few milliseconds. +# See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/136251#note_1638949892. +Rails/BulkChangeTable: + Enabled: false + Cop/DefaultScope: Enabled: true diff --git a/.rubocop_todo/gemspec/deprecated_attribute_assignment.yml b/.rubocop_todo/gemspec/deprecated_attribute_assignment.yml new file mode 100644 index 00000000000..32d493c3741 --- /dev/null +++ b/.rubocop_todo/gemspec/deprecated_attribute_assignment.yml @@ -0,0 +1,6 @@ +--- +# Cop supports --autocorrect. +Gemspec/DeprecatedAttributeAssignment: + Details: grace period + Exclude: + - 'spec/fixtures/packages/rubygems/package.gemspec' diff --git a/.rubocop_todo/layout/line_length.yml b/.rubocop_todo/layout/line_length.yml index f109fe253dd..1173c41c188 100644 --- a/.rubocop_todo/layout/line_length.yml +++ b/.rubocop_todo/layout/line_length.yml @@ -841,7 +841,6 @@ Layout/LineLength: - 'ee/app/helpers/vulnerabilities_helper.rb' - 'ee/app/mailers/ee/emails/profile.rb' - 'ee/app/mailers/ee/preview/notify_preview.rb' - - 'ee/app/mailers/emails/namespace_storage_usage_mailer.rb' - 'ee/app/models/approval_merge_request_rule.rb' - 'ee/app/models/approval_project_rule.rb' - 'ee/app/models/approval_state.rb' diff --git a/.rubocop_todo/performance/string_include.yml b/.rubocop_todo/performance/string_include.yml new file mode 100644 index 00000000000..c84976d55bf --- /dev/null +++ b/.rubocop_todo/performance/string_include.yml @@ -0,0 +1,6 @@ +--- +# Cop supports --autocorrect. +Performance/StringInclude: + Details: grace period + Exclude: + - 'spec/support/helpers/query_recorder.rb' diff --git a/.rubocop_todo/performance/string_replacement.yml b/.rubocop_todo/performance/string_replacement.yml new file mode 100644 index 00000000000..db22bba0897 --- /dev/null +++ b/.rubocop_todo/performance/string_replacement.yml @@ -0,0 +1,8 @@ +--- +# Cop supports --autocorrect. +Performance/StringReplacement: + Details: grace period + Exclude: + - 'ee/app/models/saml_provider.rb' + - 'lib/gitlab/uploads/migration_helper.rb' + - 'lib/kramdown/parser/atlassian_document_format.rb' diff --git a/.rubocop_todo/rails/find_each.yml b/.rubocop_todo/rails/find_each.yml new file mode 100644 index 00000000000..4e2bbb62439 --- /dev/null +++ b/.rubocop_todo/rails/find_each.yml @@ -0,0 +1,48 @@ +--- +# Cop supports --autocorrect. +Rails/FindEach: + Details: grace period + Exclude: + - 'app/finders/projects/members/effective_access_level_finder.rb' + - 'app/services/ci/expire_pipeline_cache_service.rb' + - 'app/services/design_management/generate_image_versions_service.rb' + - 'app/services/groups/destroy_service.rb' + - 'app/services/merge_requests/refresh_service.rb' + - 'app/views/issues/_issues_calendar.ics.ruby' + - 'db/post_migrate/20220411173544_cleanup_orphans_approval_project_rules.rb' + - 'db/post_migrate/20231003045342_migrate_sidekiq_namespaced_jobs.rb' + - 'ee/app/workers/compliance_management/merge_requests/compliance_violations_consistency_worker.rb' + - 'ee/lib/ee/gitlab/background_migration/backfill_compliance_violations.rb' + - 'ee/lib/ee/gitlab/background_migration/create_compliance_standards_adherence.rb' + - 'ee/spec/elastic/migrate/20230901120542_force_reindex_commits_from_main_index_spec.rb' + - 'ee/spec/elastic/migrate/20231004124852_reindex_and_remove_leftover_notes_from_main_index_spec.rb' + - 'ee/spec/elastic/migrate/20231005103449_reindex_and_remove_leftover_merge_request_in_main_index_spec.rb' + - 'ee/spec/frontend/fixtures/runner.rb' + - 'ee/spec/lib/ee/gitlab/usage_data_spec.rb' + - 'ee/spec/requests/api/graphql/ci/jobs_spec.rb' + - 'ee/spec/services/package_metadata/ingestion/advisory/advisory_ingestion_task_spec.rb' + - 'ee/spec/services/vulnerabilities/starboard_vulnerability_resolve_service_spec.rb' + - 'ee/spec/workers/concerns/update_orchestration_policy_configuration_spec.rb' + - 'lib/banzai/reference_parser/base_parser.rb' + - 'lib/gitlab/background_migration/populate_vulnerability_dismissal_fields.rb' + - 'lib/gitlab/internal_events/event_definitions.rb' + - 'lib/tasks/tanuki_emoji.rake' + - 'qa/qa/ee/page/group/settings/general.rb' + - 'spec/features/admin/admin_labels_spec.rb' + - 'spec/features/issues/user_interacts_with_awards_spec.rb' + - 'spec/features/merge_request/user_creates_image_diff_notes_spec.rb' + - 'spec/features/merge_request/user_resolves_diff_notes_and_discussions_resolve_spec.rb' + - 'spec/features/projects/show/download_buttons_spec.rb' + - 'spec/features/projects/show/user_sees_git_instructions_spec.rb' + - 'spec/features/search/user_searches_for_merge_requests_spec.rb' + - 'spec/frontend/fixtures/analytics.rb' + - 'spec/lib/gitlab/background_migration/backfill_missing_ci_cd_settings_spec.rb' + - 'spec/lib/gitlab/background_migration/backfill_note_discussion_id_spec.rb' + - 'spec/lib/gitlab/database/reindexing/index_selection_spec.rb' + - 'spec/lib/gitlab/import_export/project/tree_restorer_spec.rb' + - 'spec/lib/gitlab/project_template_spec.rb' + - 'spec/lib/gitlab/sample_data_template_spec.rb' + - 'spec/lib/gitlab/usage/metric_definition_spec.rb' + - 'spec/migrations/20231003045342_migrate_sidekiq_namespaced_jobs_spec.rb' + - 'spec/models/ci_platform_metric_spec.rb' + - 'spec/workers/authorized_project_update/user_refresh_over_user_range_worker_spec.rb' diff --git a/.rubocop_todo/rails/require_dependency.yml b/.rubocop_todo/rails/require_dependency.yml new file mode 100644 index 00000000000..345fe997744 --- /dev/null +++ b/.rubocop_todo/rails/require_dependency.yml @@ -0,0 +1,40 @@ +--- +Rails/RequireDependency: + Details: grace period + Exclude: + - 'app/models/alert_management/alert.rb' + - 'app/models/design_management/action.rb' + - 'config/application.rb' + - 'config/initializers/8_devise.rb' + - 'config/initializers/query_limiting.rb' + - 'config/initializers/zz_metrics.rb' + - 'ee/app/finders/status_page/incident_comments_finder.rb' + - 'ee/app/models/compliance_management/compliance_framework/project_settings.rb' + - 'ee/app/services/group_saml/saml_provider/create_service.rb' + - 'ee/app/services/group_saml/saml_provider/update_service.rb' + - 'ee/app/services/vulnerabilities/confirm_service.rb' + - 'ee/app/services/vulnerabilities/destroy_dismissal_feedback_service.rb' + - 'ee/app/services/vulnerabilities/dismiss_service.rb' + - 'ee/app/services/vulnerabilities/resolve_service.rb' + - 'ee/app/services/vulnerabilities/revert_to_detected_service.rb' + - 'ee/spec/lib/gitlab/insights/validators/params_validator_spec.rb' + - 'lib/api/terraform/state.rb' + - 'lib/gitlab/ci/pipeline/expression/lexeme/pattern/regular_expression.rb' + - 'lib/gitlab/email/receiver.rb' + - 'lib/gitlab/omniauth_initializer.rb' + - 'lib/gitlab/patch/prependable.rb' + - 'lib/gitlab/untrusted_regexp.rb' + - 'lib/gitlab/utils/merge_hash.rb' + - 'lib/gitlab/utils/sanitize_node_link.rb' + - 'lib/tasks/gitlab/assets.rake' + - '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/includes_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/rules_spec.rb' + - 'spec/lib/gitlab/memory/watchdog/configuration_spec.rb' + - 'spec/lib/gitlab/memory/watchdog/monitor/unique_memory_growth_spec.rb' + - 'spec/support/helpers/stub_configuration.rb' diff --git a/.rubocop_todo/rails/time_zone.yml b/.rubocop_todo/rails/time_zone.yml index a345dcc5594..faa3cb5ecfb 100644 --- a/.rubocop_todo/rails/time_zone.yml +++ b/.rubocop_todo/rails/time_zone.yml @@ -1,11 +1,11 @@ --- # Cop supports --autocorrect. Rails/TimeZone: + Details: grace period Exclude: - 'ee/lib/delay.rb' - 'ee/lib/gitlab/elastic/indexer.rb' - 'ee/lib/gitlab/geo/event_gap_tracking.rb' - - 'ee/lib/gitlab/geo/log_cursor/events/repository_updated_event.rb' - 'ee/lib/gitlab/geo/log_cursor/logger.rb' - 'ee/lib/gitlab/geo/oauth/login_state.rb' - 'ee/spec/lib/gitlab/geo/base_request_spec.rb' @@ -36,13 +36,11 @@ Rails/TimeZone: - 'lib/gitlab/popen.rb' - 'lib/gitlab/prometheus_client.rb' - 'lib/gitlab/task_helpers.rb' - - 'lib/gitlab/x509/tag.rb' - 'lib/grafana/time_window.rb' - 'lib/json_web_token/token.rb' - 'lib/object_storage/direct_upload.rb' - 'lib/quality/seeders/issues.rb' - 'lib/tasks/gitlab/assets.rake' - - 'lib/tasks/gitlab/backup.rake' - 'lib/tasks/gitlab/cleanup.rake' - 'lib/tasks/gitlab/list_repos.rake' - 'spec/lib/api/helpers_spec.rb' @@ -78,7 +76,6 @@ Rails/TimeZone: - 'spec/lib/gitlab/graphql_logger_spec.rb' - 'spec/lib/gitlab/graphs/commits_spec.rb' - 'spec/lib/gitlab/import_export/project/relation_factory_spec.rb' - - 'spec/lib/gitlab/json_logger_spec.rb' - 'spec/lib/gitlab/lfs_token_spec.rb' - 'spec/lib/gitlab/log_timestamp_formatter_spec.rb' - 'spec/lib/gitlab/middleware/rails_queue_duration_spec.rb' @@ -87,3 +84,4 @@ Rails/TimeZone: - 'spec/lib/gitlab/x509/signature_spec.rb' - 'spec/lib/grafana/time_window_spec.rb' - 'spec/lib/json_web_token/hmac_token_spec.rb' + - 'spec/models/merge_request_diff_commit_spec.rb' diff --git a/.rubocop_todo/rspec/named_subject.yml b/.rubocop_todo/rspec/named_subject.yml new file mode 100644 index 00000000000..642a0cd45d6 --- /dev/null +++ b/.rubocop_todo/rspec/named_subject.yml @@ -0,0 +1,3857 @@ +--- +RSpec/NamedSubject: + Details: grace period + Exclude: + - 'ee/spec/controllers/admin/audit_log_reports_controller_spec.rb' + - 'ee/spec/controllers/admin/emails_controller_spec.rb' + - 'ee/spec/controllers/admin/geo/settings_controller_spec.rb' + - 'ee/spec/controllers/admin/groups_controller_spec.rb' + - 'ee/spec/controllers/admin/identities_controller_spec.rb' + - 'ee/spec/controllers/admin/projects_controller_spec.rb' + - 'ee/spec/controllers/admin/users_controller_spec.rb' + - 'ee/spec/controllers/autocomplete_controller_spec.rb' + - 'ee/spec/controllers/concerns/ee/routable_actions/sso_enforcement_redirect_spec.rb' + - 'ee/spec/controllers/ee/dashboard/projects_controller_spec.rb' + - 'ee/spec/controllers/ee/groups/settings/ci_cd_controller_spec.rb' + - 'ee/spec/controllers/ee/groups/variables_controller_spec.rb' + - 'ee/spec/controllers/ee/groups_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/registrations_controller_spec.rb' + - 'ee/spec/controllers/ee/root_controller_spec.rb' + - 'ee/spec/controllers/groups/analytics/cycle_analytics/summary_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/epic_issues_controller_spec.rb' + - 'ee/spec/controllers/groups/epics_controller_spec.rb' + - 'ee/spec/controllers/groups/group_members_controller_spec.rb' + - 'ee/spec/controllers/groups/groups_controller_spec.rb' + - 'ee/spec/controllers/groups/insights_controller_spec.rb' + - 'ee/spec/controllers/groups/issues_controller_spec.rb' + - 'ee/spec/controllers/groups/iterations_controller_spec.rb' + - 'ee/spec/controllers/groups/ldaps_controller_spec.rb' + - 'ee/spec/controllers/groups/merge_requests_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/security/merge_commit_reports_controller_spec.rb' + - 'ee/spec/controllers/groups/security/policies_controller_spec.rb' + - 'ee/spec/controllers/groups/sso_controller_spec.rb' + - 'ee/spec/controllers/operations_controller_spec.rb' + - 'ee/spec/controllers/passwords_controller_spec.rb' + - 'ee/spec/controllers/profiles/usage_quotas_controller_spec.rb' + - 'ee/spec/controllers/profiles_controller_spec.rb' + - 'ee/spec/controllers/projects/analytics/cycle_analytics/summary_controller_spec.rb' + - 'ee/spec/controllers/projects/environments_controller_spec.rb' + - 'ee/spec/controllers/projects/issues_controller_spec.rb' + - 'ee/spec/controllers/projects/iterations_controller_spec.rb' + - 'ee/spec/controllers/projects/merge_requests/creations_controller_spec.rb' + - 'ee/spec/controllers/projects/merge_requests_controller_spec.rb' + - 'ee/spec/controllers/projects/protected_environments_controller_spec.rb' + - 'ee/spec/controllers/projects/quality/test_cases_controller_spec.rb' + - 'ee/spec/controllers/projects/requirements_management/requirements_controller_spec.rb' + - 'ee/spec/controllers/projects/security/scanned_resources_controller_spec.rb' + - 'ee/spec/controllers/projects/settings/ci_cd_controller_spec.rb' + - 'ee/spec/controllers/projects/settings/repository_controller_spec.rb' + - 'ee/spec/controllers/projects/vulnerability_feedback_controller_spec.rb' + - 'ee/spec/controllers/projects_controller_spec.rb' + - 'ee/spec/controllers/registrations/groups_controller_spec.rb' + - 'ee/spec/controllers/registrations/welcome_controller_spec.rb' + - 'ee/spec/controllers/security/projects_controller_spec.rb' + - 'ee/spec/controllers/sitemap_controller_spec.rb' + - 'ee/spec/controllers/subscriptions_controller_spec.rb' + - 'ee/spec/db/production/license_spec.rb' + - 'ee/spec/elastic/migrate/20230724070100_backfill_epics_spec.rb' + - 'ee/spec/features/projects/pipelines/pipeline_spec.rb' + - 'ee/spec/features/user_sees_marketing_header_spec.rb' + - 'ee/spec/features/users/login_spec.rb' + - 'ee/spec/finders/analytics/cycle_analytics/stage_finder_spec.rb' + - 'ee/spec/finders/app_sec/fuzzing/coverage/corpuses_finder_spec.rb' + - 'ee/spec/finders/approval_rules/group_finder_spec.rb' + - 'ee/spec/finders/audit_event_finder_spec.rb' + - 'ee/spec/finders/auth/group_saml_identity_finder_spec.rb' + - 'ee/spec/finders/autocomplete/group_subgroups_finder_spec.rb' + - 'ee/spec/finders/boards/users_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/gpg_keys_finder_spec.rb' + - 'ee/spec/finders/group_saml_identity_finder_spec.rb' + - 'ee/spec/finders/groups_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/notes_finder_spec.rb' + - 'ee/spec/finders/okrs/checkin_reminder_key_result_finder_spec.rb' + - 'ee/spec/finders/productivity_analytics_finder_spec.rb' + - 'ee/spec/finders/projects/integrations/jira/issues_finder_spec.rb' + - 'ee/spec/finders/remote_development/workspaces_finder_spec.rb' + - 'ee/spec/finders/security/approval_groups_finder_spec.rb' + - 'ee/spec/finders/security/pipeline_vulnerabilities_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/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/job_token_scope/add_project_spec.rb' + - 'ee/spec/graphql/ee/mutations/ci/job_token_scope/remove_project_spec.rb' + - 'ee/spec/graphql/ee/mutations/ci/project_ci_cd_settings_update_spec.rb' + - 'ee/spec/graphql/ee/types/group_type_spec.rb' + - 'ee/spec/graphql/ee/types/namespace_type_spec.rb' + - 'ee/spec/graphql/graphql_triggers_spec.rb' + - 'ee/spec/graphql/mutations/ai/action_spec.rb' + - 'ee/spec/graphql/mutations/audit_events/streaming/event_type_filters/create_spec.rb' + - 'ee/spec/graphql/mutations/audit_events/streaming/event_type_filters/destroy_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/destroy_spec.rb' + - 'ee/spec/graphql/mutations/boards/epic_boards/epic_move_list_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_spec.rb' + - 'ee/spec/graphql/mutations/compliance_management/frameworks/create_spec.rb' + - 'ee/spec/graphql/mutations/compliance_management/frameworks/update_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_on_demand_scans/create_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/deployments/deployment_approve_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/forecasting/build_forecast_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/promote_to_epic_spec.rb' + - 'ee/spec/graphql/mutations/issues/set_epic_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/set_reviewers_spec.rb' + - 'ee/spec/graphql/mutations/merge_requests/update_approval_rules_spec.rb' + - 'ee/spec/graphql/mutations/namespaces/increase_storage_temporarily_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/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/vulnerabilities/bulk_dismiss_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/revert_to_detected_spec.rb' + - 'ee/spec/graphql/resolvers/app_sec/fuzzing/coverage/corpuses_resolver_spec.rb' + - 'ee/spec/graphql/resolvers/boards/epic_list_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/incident_management/oncall_shifts_resolver_spec.rb' + - 'ee/spec/graphql/resolvers/incident_management/oncall_users_resolver_spec.rb' + - 'ee/spec/graphql/resolvers/product_analytics/dashboards_resolver_spec.rb' + - 'ee/spec/graphql/resolvers/product_analytics/state_resolver_spec.rb' + - 'ee/spec/graphql/resolvers/product_analytics/visualization_resolver_spec.rb' + - 'ee/spec/graphql/resolvers/requirements_management/requirements_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/issue_links_resolver_spec.rb' + - 'ee/spec/graphql/resolvers/vulnerabilities_grade_resolver_spec.rb' + - 'ee/spec/graphql/resolvers/vulnerabilities_resolver_spec.rb' + - 'ee/spec/graphql/types/asset_type_spec.rb' + - 'ee/spec/graphql/types/ci/pipeline_type_spec.rb' + - 'ee/spec/graphql/types/incident_management/escalation_rule_input_type_spec.rb' + - 'ee/spec/graphql/types/pipeline_security_report_finding_type_spec.rb' + - 'ee/spec/graphql/types/project_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_location/coverage_fuzzing_type_spec.rb' + - 'ee/spec/graphql/types/vulnerability_location_type_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_type_spec.rb' + - 'ee/spec/graphql/types/vulnerability_type_spec.rb' + - 'ee/spec/helpers/admin/emails_helper_spec.rb' + - 'ee/spec/helpers/billing_plans_helper_spec.rb' + - 'ee/spec/helpers/compliance_management/compliance_framework/group_settings_helper_spec.rb' + - 'ee/spec/helpers/ee/auth_helper_spec.rb' + - 'ee/spec/helpers/ee/branches_helper_spec.rb' + - 'ee/spec/helpers/ee/ci/catalog/resources_helper_spec.rb' + - 'ee/spec/helpers/ee/ci/runners_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/gitlab_routing_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/lock_helper_spec.rb' + - 'ee/spec/helpers/ee/operations_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/subscribable_banner_helper_spec.rb' + - 'ee/spec/helpers/groups/ldap_sync_helper_spec.rb' + - 'ee/spec/helpers/groups/sso_helper_spec.rb' + - 'ee/spec/helpers/kerberos_helper_spec.rb' + - 'ee/spec/helpers/license_helper_spec.rb' + - 'ee/spec/helpers/merge_requests_helper_spec.rb' + - 'ee/spec/helpers/nav/new_dropdown_helper_spec.rb' + - 'ee/spec/helpers/projects/security/dast_profiles_helper_spec.rb' + - 'ee/spec/helpers/projects_helper_spec.rb' + - 'ee/spec/helpers/search_helper_spec.rb' + - 'ee/spec/helpers/secrets_helper_spec.rb' + - 'ee/spec/helpers/sidebars_helper_spec.rb' + - 'ee/spec/helpers/trials_helper_spec.rb' + - 'ee/spec/helpers/users/group_callouts_helper_spec.rb' + - 'ee/spec/helpers/users_helper_spec.rb' + - 'ee/spec/helpers/vulnerabilities_helper_spec.rb' + - 'ee/spec/initializers/database_config_spec.rb' + - 'ee/spec/initializers/session_store_spec.rb' + - 'ee/spec/lib/analytics/devops_adoption/snapshot_calculator_spec.rb' + - 'ee/spec/lib/analytics/dora_metrics_aggregator_spec.rb' + - 'ee/spec/lib/analytics/forecasting/holt_winters_optimizer_spec.rb' + - 'ee/spec/lib/analytics/forecasting/holt_winters_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_comments_data_spec.rb' + - 'ee/spec/lib/api/entities/code_suggestions_access_token_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/epic_board_spec.rb' + - 'ee/spec/lib/api/entities/epic_boards/list_details_spec.rb' + - 'ee/spec/lib/api/entities/epic_boards/list_spec.rb' + - 'ee/spec/lib/api/entities/merge_request_approval_setting_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/audit/base_changes_auditor_spec.rb' + - 'ee/spec/lib/audit/compliance_framework_changes_auditor_spec.rb' + - 'ee/spec/lib/audit/group_merge_request_approval_setting_changes_auditor_spec.rb' + - 'ee/spec/lib/audit/merge_request_before_destroy_auditor_spec.rb' + - 'ee/spec/lib/audit/merge_request_destroy_auditor_spec.rb' + - 'ee/spec/lib/audit/project_changes_auditor_spec.rb' + - 'ee/spec/lib/audit/protected_environment_authorization_rule_changes_auditor_spec.rb' + - 'ee/spec/lib/audit/push_rules/group_push_rules_changes_auditor_spec.rb' + - 'ee/spec/lib/audit/push_rules/project_push_rules_changes_auditor_spec.rb' + - 'ee/spec/lib/audit_events/external_destination_streamer_spec.rb' + - 'ee/spec/lib/audit_events/strategies/amazon_s3_destination_strategy_spec.rb' + - 'ee/spec/lib/audit_events/strategies/external_destination_strategy_spec.rb' + - 'ee/spec/lib/audit_events/strategies/google_cloud_logging_destination_strategy_spec.rb' + - 'ee/spec/lib/audit_events/strategies/group_external_destination_strategy_spec.rb' + - 'ee/spec/lib/audit_events/strategies/instance/google_cloud_logging_destination_strategy_spec.rb' + - 'ee/spec/lib/audit_events/strategies/instance_external_destination_strategy_spec.rb' + - 'ee/spec/lib/banzai/reference_parser/epic_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/groups/pipelines/epics_pipeline_spec.rb' + - 'ee/spec/lib/bulk_imports/groups/pipelines/iterations_cadences_pipeline_spec.rb' + - 'ee/spec/lib/bulk_imports/groups/pipelines/iterations_pipeline_spec.rb' + - 'ee/spec/lib/code_suggestions/prompts/code_completion/vertex_ai_spec.rb' + - 'ee/spec/lib/code_suggestions/prompts/code_generation/anthropic_spec.rb' + - 'ee/spec/lib/code_suggestions/task_factory_spec.rb' + - 'ee/spec/lib/code_suggestions/tasks/base_spec.rb' + - 'ee/spec/lib/ee/api/entities/dependency_list_export_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/geo_site_spec.rb' + - 'ee/spec/lib/ee/api/entities/geo_site_status_spec.rb' + - 'ee/spec/lib/ee/api/entities/group_detail_spec.rb' + - 'ee/spec/lib/ee/api/entities/member_role_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/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/backup/repositories_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/feature_spec.rb' + - 'ee/spec/lib/ee/gitlab/auth/auth_finders_spec.rb' + - 'ee/spec/lib/ee/gitlab/auth/current_user_mode_spec.rb' + - 'ee/spec/lib/ee/gitlab/auth/request_authenticator_spec.rb' + - 'ee/spec/lib/ee/gitlab/background_migration/backfill_dismissal_reason_in_vulnerability_reads_spec.rb' + - 'ee/spec/lib/ee/gitlab/background_migration/backfill_epic_cache_counts_spec.rb' + - 'ee/spec/lib/ee/gitlab/background_migration/backfill_iteration_cadence_id_for_boards_spec.rb' + - 'ee/spec/lib/ee/gitlab/background_migration/delete_approval_rules_with_vulnerability_spec.rb' + - 'ee/spec/lib/ee/gitlab/background_migration/delete_invalid_epic_issues_spec.rb' + - 'ee/spec/lib/ee/gitlab/background_migration/delete_orphaned_transferred_project_approval_rules_spec.rb' + - 'ee/spec/lib/ee/gitlab/background_migration/fix_approval_project_rules_without_protected_branches_spec.rb' + - 'ee/spec/lib/ee/gitlab/background_migration/migrate_shared_vulnerability_identifiers_spec.rb' + - 'ee/spec/lib/ee/gitlab/background_migration/migrate_shared_vulnerability_scanners_spec.rb' + - 'ee/spec/lib/ee/gitlab/background_migration/migrate_vulnerabilities_feedback_to_vulnerabilities_state_transition_spec.rb' + - 'ee/spec/lib/ee/gitlab/background_migration/populate_approval_merge_request_rules_with_security_orchestration_spec.rb' + - 'ee/spec/lib/ee/gitlab/background_migration/populate_approval_project_rules_with_security_orchestration_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/secrets_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/parsers/security/validators/schema_validator_spec.rb' + - 'ee/spec/lib/ee/gitlab/ci/pipeline/quota/size_spec.rb' + - 'ee/spec/lib/ee/gitlab/ci/templates/templates_spec.rb' + - 'ee/spec/lib/ee/gitlab/elastic/helper_spec.rb' + - 'ee/spec/lib/ee/gitlab/group_search_results_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/wiki_repo_saver_spec.rb' + - 'ee/spec/lib/ee/gitlab/issuable/clone/copy_resource_events_service_spec.rb' + - 'ee/spec/lib/ee/gitlab/metrics/samplers/database_sampler_spec.rb' + - 'ee/spec/lib/ee/gitlab/pages/deployment_update_spec.rb' + - 'ee/spec/lib/ee/gitlab/repository_size_checker_spec.rb' + - 'ee/spec/lib/ee/gitlab/snippet_search_results_spec.rb' + - 'ee/spec/lib/ee/gitlab/url_builder_spec.rb' + - 'ee/spec/lib/ee/gitlab/usage_data_spec.rb' + - 'ee/spec/lib/ee/sidebars/groups/menus/issues_menu_spec.rb' + - 'ee/spec/lib/ee/sidebars/projects/menus/issues_menu_spec.rb' + - 'ee/spec/lib/ee/sidebars/projects/menus/security_compliance_menu_spec.rb' + - 'ee/spec/lib/ee/sidebars/projects/menus/settings_menu_spec.rb' + - 'ee/spec/lib/elastic/latest/application_instance_proxy_spec.rb' + - 'ee/spec/lib/elastic/latest/epic_class_proxy_spec.rb' + - 'ee/spec/lib/elastic/latest/epic_instance_proxy_spec.rb' + - 'ee/spec/lib/elastic/latest/git_class_proxy_add_suffix_project_in_wiki_rid_running_wiki_search_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_class_proxy_spec.rb' + - 'ee/spec/lib/elastic/latest/note_class_proxy_spec.rb' + - 'ee/spec/lib/elastic/latest/project_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/latest/user_class_proxy_spec.rb' + - 'ee/spec/lib/elastic/latest/user_instance_proxy_spec.rb' + - 'ee/spec/lib/elastic/latest/wiki_class_proxy_spec.rb' + - 'ee/spec/lib/elastic/latest/wiki_instance_proxy_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/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/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/applied_ml/suggested_reviewers/client_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/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_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/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/adapter_spec.rb' + - 'ee/spec/lib/gitlab/auth/ldap/person_spec.rb' + - 'ee/spec/lib/gitlab/auth/o_auth/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/session_enforcer_spec.rb' + - 'ee/spec/lib/gitlab/auth/smartcard/session_spec.rb' + - 'ee/spec/lib/gitlab/auth_spec.rb' + - 'ee/spec/lib/gitlab/background_migration/create_vulnerability_links_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/required/processor_spec.rb' + - 'ee/spec/lib/gitlab/ci/config/security_orchestration_policies/processor_spec.rb' + - 'ee/spec/lib/gitlab/ci/minutes/cached_quota_spec.rb' + - 'ee/spec/lib/gitlab/ci/minutes/consumption_spec.rb' + - 'ee/spec/lib/gitlab/ci/minutes/cost_factor_spec.rb' + - 'ee/spec/lib/gitlab/ci/minutes/pipeline_consumption_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/pipeline/chain/create_cross_database_associations_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/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/report_spec.rb' + - 'ee/spec/lib/gitlab/ci/reports/license_scanning/reports_comparer_spec.rb' + - 'ee/spec/lib/gitlab/ci/reports/metrics/report_spec.rb' + - 'ee/spec/lib/gitlab/ci/reports/metrics/reports_comparer_spec.rb' + - 'ee/spec/lib/gitlab/ci/reports/security/finding_spec.rb' + - 'ee/spec/lib/gitlab/ci/reports/security/locations/container_scanning_spec.rb' + - 'ee/spec/lib/gitlab/ci/reports/security/vulnerability_reports_comparer_spec.rb' + - 'ee/spec/lib/gitlab/ci/yaml_processor_spec.rb' + - 'ee/spec/lib/gitlab/circuit_breaker/notifier_spec.rb' + - 'ee/spec/lib/gitlab/code_owners/file_spec.rb' + - 'ee/spec/lib/gitlab/code_owners/loader_spec.rb' + - 'ee/spec/lib/gitlab/code_owners/validator_spec.rb' + - 'ee/spec/lib/gitlab/code_owners_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/email/feature_flag_wrapper_spec.rb' + - 'ee/spec/lib/gitlab/expiring_subscription_message_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/jwt_request_decoder_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/event_spec.rb' + - 'ee/spec/lib/gitlab/geo/log_cursor/events/hashed_storage_attachments_event_spec.rb' + - 'ee/spec/lib/gitlab/geo/oauth/session_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/git_access_wiki_spec.rb' + - 'ee/spec/lib/gitlab/git_audit_event_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/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/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/project/deploy_keys_restorer_spec.rb' + - 'ee/spec/lib/gitlab/import_export/project/project_hooks_restorer_spec.rb' + - 'ee/spec/lib/gitlab/insights/configuration_filter_spec.rb' + - 'ee/spec/lib/gitlab/insights/finders/issuable_finder_spec.rb' + - 'ee/spec/lib/gitlab/insights/project_insights_config_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/label_count_per_period_reducer_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_helper_spec.rb' + - 'ee/spec/lib/gitlab/items_collection_spec.rb' + - 'ee/spec/lib/gitlab/llm/ai_message_spec.rb' + - 'ee/spec/lib/gitlab/llm/anthropic/response_modifiers/tanuki_bot_spec.rb' + - 'ee/spec/lib/gitlab/llm/base_response_modifier_spec.rb' + - 'ee/spec/lib/gitlab/llm/chain/agents/zero_shot/prompts/anthropic_spec.rb' + - 'ee/spec/lib/gitlab/llm/chain/parsers/output_parser_spec.rb' + - 'ee/spec/lib/gitlab/llm/chain/response_modifier_spec.rb' + - 'ee/spec/lib/gitlab/llm/chain/tools/tool_spec.rb' + - 'ee/spec/lib/gitlab/llm/chain/utils/authorizer_spec.rb' + - 'ee/spec/lib/gitlab/llm/chat_message_spec.rb' + - 'ee/spec/lib/gitlab/llm/chat_storage_spec.rb' + - 'ee/spec/lib/gitlab/llm/completions/chat_spec.rb' + - 'ee/spec/lib/gitlab/llm/concerns/circuit_breaker_spec.rb' + - 'ee/spec/lib/gitlab/llm/concerns/exponential_backoff_spec.rb' + - 'ee/spec/lib/gitlab/llm/graphql_subscription_response_service_spec.rb' + - 'ee/spec/lib/gitlab/llm/open_ai/completions/generate_commit_message_spec.rb' + - 'ee/spec/lib/gitlab/llm/open_ai/templates/generate_description_spec.rb' + - 'ee/spec/lib/gitlab/llm/templates/categorize_question_spec.rb' + - 'ee/spec/lib/gitlab/llm/templates/explain_vulnerability_spec.rb' + - 'ee/spec/lib/gitlab/llm/templates/fill_in_merge_request_template_spec.rb' + - 'ee/spec/lib/gitlab/llm/templates/generate_commit_message_spec.rb' + - 'ee/spec/lib/gitlab/llm/templates/generate_test_file_spec.rb' + - 'ee/spec/lib/gitlab/llm/templates/summarize_merge_request_spec.rb' + - 'ee/spec/lib/gitlab/llm/templates/summarize_review_spec.rb' + - 'ee/spec/lib/gitlab/llm/templates/summarize_submitted_review_spec.rb' + - 'ee/spec/lib/gitlab/llm/vertex_ai/completions/analyze_ci_job_failure_spec.rb' + - 'ee/spec/lib/gitlab/llm/vertex_ai/completions/fill_in_merge_request_template_spec.rb' + - 'ee/spec/lib/gitlab/llm/vertex_ai/completions/generate_commit_message_spec.rb' + - 'ee/spec/lib/gitlab/llm/vertex_ai/completions/generate_test_file_spec.rb' + - 'ee/spec/lib/gitlab/llm/vertex_ai/completions/summarize_merge_request_spec.rb' + - 'ee/spec/lib/gitlab/llm/vertex_ai/completions/summarize_review_spec.rb' + - 'ee/spec/lib/gitlab/llm/vertex_ai/completions/summarize_submitted_review_spec.rb' + - 'ee/spec/lib/gitlab/llm/vertex_ai/model_configurations/base_spec.rb' + - 'ee/spec/lib/gitlab/llm/vertex_ai/model_configurations/chat_spec.rb' + - 'ee/spec/lib/gitlab/llm/vertex_ai/model_configurations/code_chat_spec.rb' + - 'ee/spec/lib/gitlab/llm/vertex_ai/model_configurations/code_completion_spec.rb' + - 'ee/spec/lib/gitlab/llm/vertex_ai/model_configurations/code_spec.rb' + - 'ee/spec/lib/gitlab/llm/vertex_ai/model_configurations/text_embeddings_spec.rb' + - 'ee/spec/lib/gitlab/llm/vertex_ai/model_configurations/text_spec.rb' + - 'ee/spec/lib/gitlab/metrics/samplers/global_search_sampler_spec.rb' + - 'ee/spec/lib/gitlab/mirror_spec.rb' + - 'ee/spec/lib/gitlab/package_metadata/connector/base_data_file_spec.rb' + - 'ee/spec/lib/gitlab/patch/additional_database_tasks_spec.rb' + - 'ee/spec/lib/gitlab/patch/draw_route_spec.rb' + - 'ee/spec/lib/gitlab/proxy_spec.rb' + - 'ee/spec/lib/gitlab/reference_extractor_spec.rb' + - 'ee/spec/lib/gitlab/search/aggregation_parser_spec.rb' + - 'ee/spec/lib/gitlab/search/aggregation_spec.rb' + - 'ee/spec/lib/gitlab/search/client_spec.rb' + - 'ee/spec/lib/gitlab/search/zoekt/client_spec.rb' + - 'ee/spec/lib/gitlab/search_context/builder_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/spdx/catalogue_spec.rb' + - 'ee/spec/lib/gitlab/status_page/filter/image_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/subscription_portal/clients/graphql_spec.rb' + - 'ee/spec/lib/gitlab/tree_summary_spec.rb' + - 'ee/spec/lib/gitlab/usage_data_metrics_spec.rb' + - 'ee/spec/lib/gitlab/vulnerabilities/parser_spec.rb' + - 'ee/spec/lib/gitlab/vulnerability_scanning/track_cvs_service_spec.rb' + - 'ee/spec/lib/gitlab_subscriptions/upcoming_reconciliation_entity_spec.rb' + - 'ee/spec/lib/omni_auth/strategies/kerberos_spec.rb' + - 'ee/spec/lib/product_analytics/settings_spec.rb' + - 'ee/spec/lib/remote_development/agent_config/main_integration_spec.rb' + - 'ee/spec/lib/remote_development/agent_config/updater_spec.rb' + - 'ee/spec/lib/remote_development/workspaces/create/creator_spec.rb' + - 'ee/spec/lib/remote_development/workspaces/create/devfile_flattener_spec.rb' + - 'ee/spec/lib/remote_development/workspaces/create/editor_component_injector_spec.rb' + - 'ee/spec/lib/remote_development/workspaces/create/main_integration_spec.rb' + - 'ee/spec/lib/remote_development/workspaces/create/personal_access_token_creator_spec.rb' + - 'ee/spec/lib/remote_development/workspaces/create/project_cloner_component_injector_spec.rb' + - 'ee/spec/lib/remote_development/workspaces/create/volume_component_injector_spec.rb' + - 'ee/spec/lib/remote_development/workspaces/create/volume_definer_spec.rb' + - 'ee/spec/lib/remote_development/workspaces/create/workspace_creator_spec.rb' + - 'ee/spec/lib/remote_development/workspaces/create/workspace_variables_creator_spec.rb' + - 'ee/spec/lib/remote_development/workspaces/reconcile/input/actual_state_calculator_spec.rb' + - 'ee/spec/lib/remote_development/workspaces/reconcile/input/agent_info_spec.rb' + - 'ee/spec/lib/remote_development/workspaces/reconcile/input/agent_infos_observer_spec.rb' + - 'ee/spec/lib/remote_development/workspaces/reconcile/input/factory_spec.rb' + - 'ee/spec/lib/remote_development/workspaces/reconcile/input/params_extractor_spec.rb' + - 'ee/spec/lib/remote_development/workspaces/reconcile/input/params_to_infos_converter_spec.rb' + - 'ee/spec/lib/remote_development/workspaces/reconcile/main_integration_spec.rb' + - 'ee/spec/lib/remote_development/workspaces/reconcile/output/desired_config_generator_prev1_spec.rb' + - 'ee/spec/lib/remote_development/workspaces/reconcile/output/desired_config_generator_spec.rb' + - 'ee/spec/lib/remote_development/workspaces/reconcile/output/devfile_parser_prev1_spec.rb' + - 'ee/spec/lib/remote_development/workspaces/reconcile/output/devfile_parser_spec.rb' + - 'ee/spec/lib/remote_development/workspaces/reconcile/output/rails_infos_observer_spec.rb' + - 'ee/spec/lib/remote_development/workspaces/reconcile/persistence/orphaned_workspaces_observer_spec.rb' + - 'ee/spec/lib/remote_development/workspaces/reconcile/persistence/workspaces_from_agent_infos_updater_spec.rb' + - 'ee/spec/lib/remote_development/workspaces/reconcile/persistence/workspaces_to_be_returned_finder_spec.rb' + - 'ee/spec/lib/remote_development/workspaces/reconcile/persistence/workspaces_to_be_returned_updater_spec.rb' + - 'ee/spec/lib/remote_development/workspaces/update/main_integration_spec.rb' + - 'ee/spec/lib/remote_development/workspaces/update/updater_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/projects/menus/learn_gitlab_menu_spec.rb' + - 'ee/spec/lib/sidebars/user_settings/menus/profile_billing_menu_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/clocks_synchronization_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_connection_check_spec.rb' + - 'ee/spec/lib/system_check/geo/license_check_spec.rb' + - 'ee/spec/lib/system_check/geo/ssh_port_check_spec.rb' + - 'ee/spec/lib/telesign/transaction_callback_spec.rb' + - 'ee/spec/mailers/ee/emails/issues_spec.rb' + - 'ee/spec/mailers/emails/enterprise_users_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/merge_requests_spec.rb' + - 'ee/spec/mailers/emails/requirements_spec.rb' + - 'ee/spec/mailers/license_mailer_spec.rb' + - 'ee/spec/mailers/notify_spec.rb' + - 'ee/spec/models/ai/job_failure_analysis_spec.rb' + - 'ee/spec/models/ai/project/conversations_spec.rb' + - 'ee/spec/models/allowed_email_domain_spec.rb' + - 'ee/spec/models/analytics/cycle_analytics/group_level_spec.rb' + - 'ee/spec/models/analytics/forecasting/deployment_frequency_forecast_spec.rb' + - 'ee/spec/models/analytics/forecasting/forecast_spec.rb' + - 'ee/spec/models/analytics/issues_analytics_spec.rb' + - 'ee/spec/models/application_setting_spec.rb' + - 'ee/spec/models/approval_merge_request_rule_spec.rb' + - 'ee/spec/models/approval_project_rule_spec.rb' + - 'ee/spec/models/approval_state_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/approvals/scan_finding_wrapped_rule_set_spec.rb' + - 'ee/spec/models/approvals/wrapped_rule_set_spec.rb' + - 'ee/spec/models/audit_events/external_audit_event_destination_spec.rb' + - 'ee/spec/models/audit_events/instance_external_audit_event_destination_spec.rb' + - 'ee/spec/models/audit_events/streaming/event_type_filter_spec.rb' + - 'ee/spec/models/audit_events/streaming/instance_event_type_filter_spec.rb' + - 'ee/spec/models/boards/epic_board_position_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/editor/ai_conversation/message_spec.rb' + - 'ee/spec/models/ci/minutes/cost_setting_spec.rb' + - 'ee/spec/models/ci/minutes/namespace_monthly_usage_spec.rb' + - 'ee/spec/models/ci/minutes/project_monthly_usage_spec.rb' + - 'ee/spec/models/ci/minutes/quota_spec.rb' + - 'ee/spec/models/ci/pipeline_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/ee/packages/downloadable_spec.rb' + - 'ee/spec/models/concerns/ee/weight_eventable_spec.rb' + - 'ee/spec/models/concerns/elastic/projects_search_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/identity_verifiable_spec.rb' + - 'ee/spec/models/concerns/mirror_configuration_spec.rb' + - 'ee/spec/models/concerns/projects/custom_branch_rule_spec.rb' + - 'ee/spec/models/concerns/timebox_spec.rb' + - 'ee/spec/models/dast/branch_spec.rb' + - 'ee/spec/models/dast/pre_scan_verification_spec.rb' + - 'ee/spec/models/dast/pre_scan_verification_step_spec.rb' + - 'ee/spec/models/dast/profile_schedule_spec.rb' + - 'ee/spec/models/dast/profile_spec.rb' + - 'ee/spec/models/dast/scanner_profiles_build_spec.rb' + - 'ee/spec/models/dast/site_profile_secret_variable_spec.rb' + - 'ee/spec/models/dast/site_profiles_build_spec.rb' + - 'ee/spec/models/dast_scanner_profile_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/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/time_to_restore_service_metric_spec.rb' + - 'ee/spec/models/dora/watchers/deployment_watcher_spec.rb' + - 'ee/spec/models/dora/watchers/issue_watcher_spec.rb' + - 'ee/spec/models/ee/alert_management/alert_spec.rb' + - 'ee/spec/models/ee/approvable_spec.rb' + - 'ee/spec/models/ee/audit_event_spec.rb' + - 'ee/spec/models/ee/ci/build_dependencies_spec.rb' + - 'ee/spec/models/ee/event_collection_spec.rb' + - 'ee/spec/models/ee/group_spec.rb' + - 'ee/spec/models/ee/groups/feature_setting_spec.rb' + - 'ee/spec/models/ee/list_spec.rb' + - 'ee/spec/models/ee/merge_request/metrics_spec.rb' + - 'ee/spec/models/ee/namespace/root_storage_statistics_spec.rb' + - 'ee/spec/models/ee/namespace_spec.rb' + - 'ee/spec/models/ee/namespaces/namespace_ban_spec.rb' + - 'ee/spec/models/ee/notification_setting_spec.rb' + - 'ee/spec/models/ee/pages_domain_spec.rb' + - 'ee/spec/models/ee/personal_access_token_spec.rb' + - 'ee/spec/models/ee/project_spec.rb' + - 'ee/spec/models/ee/project_wiki_spec.rb' + - 'ee/spec/models/ee/projects/branch_rule_spec.rb' + - 'ee/spec/models/ee/protected_branch_spec.rb' + - 'ee/spec/models/ee/resource_label_event_spec.rb' + - 'ee/spec/models/ee/resource_state_event_spec.rb' + - 'ee/spec/models/ee/user_detail_spec.rb' + - 'ee/spec/models/ee/user_spec.rb' + - 'ee/spec/models/ee/vulnerability_spec.rb' + - 'ee/spec/models/ee/work_items/parent_link_spec.rb' + - 'ee/spec/models/embedding/application_record_spec.rb' + - 'ee/spec/models/embedding/schema_migration_spec.rb' + - 'ee/spec/models/environment_spec.rb' + - 'ee/spec/models/epic_issue_spec.rb' + - 'ee/spec/models/epic_spec.rb' + - 'ee/spec/models/geo/deleted_project_spec.rb' + - 'ee/spec/models/geo/event_log_spec.rb' + - 'ee/spec/models/geo/every_geo_event_spec.rb' + - 'ee/spec/models/geo/package_file_registry_spec.rb' + - 'ee/spec/models/geo/push_user_spec.rb' + - 'ee/spec/models/geo/repository_updated_event_spec.rb' + - 'ee/spec/models/geo/secondary_usage_data_spec.rb' + - 'ee/spec/models/geo_node_spec.rb' + - 'ee/spec/models/geo_node_status_spec.rb' + - 'ee/spec/models/gitlab/seat_link_data_spec.rb' + - 'ee/spec/models/gitlab_subscription_spec.rb' + - 'ee/spec/models/gitlab_subscriptions/features_spec.rb' + - 'ee/spec/models/group_wiki_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/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/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/status_message_spec.rb' + - 'ee/spec/models/integrations/github/status_notifier_spec.rb' + - 'ee/spec/models/integrations/github_spec.rb' + - 'ee/spec/models/ip_restriction_spec.rb' + - 'ee/spec/models/issuable_metric_image_spec.rb' + - 'ee/spec/models/issue_spec.rb' + - 'ee/spec/models/iteration_note_spec.rb' + - 'ee/spec/models/iteration_spec.rb' + - 'ee/spec/models/label_note_spec.rb' + - 'ee/spec/models/license_spec.rb' + - 'ee/spec/models/merge_request_spec.rb' + - 'ee/spec/models/merge_requests/external_status_check_spec.rb' + - 'ee/spec/models/merge_trains/car_spec.rb' + - 'ee/spec/models/merge_trains/train_spec.rb' + - 'ee/spec/models/namespace_limit_spec.rb' + - 'ee/spec/models/namespace_setting_spec.rb' + - 'ee/spec/models/namespaces/free_user_cap/root_size_spec.rb' + - 'ee/spec/models/namespaces/storage/root_size_spec.rb' + - 'ee/spec/models/packages/package_file_spec.rb' + - 'ee/spec/models/product_analytics/dashboard_spec.rb' + - 'ee/spec/models/product_analytics/panel_spec.rb' + - 'ee/spec/models/product_analytics/visualization_spec.rb' + - 'ee/spec/models/project_feature_spec.rb' + - 'ee/spec/models/projects/all_branches_rule_spec.rb' + - 'ee/spec/models/projects/all_protected_branches_rule_spec.rb' + - 'ee/spec/models/projects/target_branch_rule_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_development/remote_development_agent_config_spec.rb' + - 'ee/spec/models/remote_development/workspace_spec.rb' + - 'ee/spec/models/remote_development/workspace_variable_spec.rb' + - 'ee/spec/models/requirements_management/requirement_spec.rb' + - 'ee/spec/models/requirements_management/test_report_spec.rb' + - 'ee/spec/models/saml_provider_spec.rb' + - 'ee/spec/models/sbom/occurrence_spec.rb' + - 'ee/spec/models/sca/license_policy_spec.rb' + - 'ee/spec/models/security/orchestration_policy_configuration_spec.rb' + - 'ee/spec/models/security/training_provider_spec.rb' + - 'ee/spec/models/security/training_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/published_incident_spec.rb' + - 'ee/spec/models/upload_spec.rb' + - 'ee/spec/models/vulnerabilities/finding_spec.rb' + - 'ee/spec/models/vulnerabilities/state_transition_spec.rb' + - 'ee/spec/models/weight_note_spec.rb' + - 'ee/spec/models/zoekt/indexed_namespace_spec.rb' + - 'ee/spec/policies/epic_policy_spec.rb' + - 'ee/spec/policies/group_policy_spec.rb' + - 'ee/spec/policies/merge_request_policy_spec.rb' + - 'ee/spec/policies/project_policy_spec.rb' + - 'ee/spec/presenters/approval_rule_presenter_spec.rb' + - 'ee/spec/presenters/ci/build_runner_presenter_spec.rb' + - 'ee/spec/presenters/ci/pipeline_presenter_spec.rb' + - 'ee/spec/presenters/merge_request_approver_presenter_spec.rb' + - 'ee/spec/presenters/merge_request_presenter_spec.rb' + - 'ee/spec/presenters/subscription_presenter_spec.rb' + - 'ee/spec/presenters/vulnerabilities/scanner_presenter_spec.rb' + - 'ee/spec/presenters/vulnerability_presenter_spec.rb' + - 'ee/spec/replicators/geo/pipeline_replicator_spec.rb' + - 'ee/spec/requests/admin/user_permission_exports_controller_spec.rb' + - 'ee/spec/requests/api/audit_events_spec.rb' + - 'ee/spec/requests/api/ci/jobs_spec.rb' + - 'ee/spec/requests/api/ci/triggers_spec.rb' + - 'ee/spec/requests/api/epic_links_spec.rb' + - 'ee/spec/requests/api/geo_spec.rb' + - 'ee/spec/requests/api/graphql/ai_messages_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/audit_events/streaming/instance_headers/create_spec.rb' + - 'ee/spec/requests/api/graphql/audit_events/streaming/instance_headers/destroy_spec.rb' + - 'ee/spec/requests/api/graphql/audit_events/streaming/instance_headers/update_spec.rb' + - 'ee/spec/requests/api/graphql/boards/epic_list_query_spec.rb' + - 'ee/spec/requests/api/graphql/ci/minutes/usage_spec.rb' + - 'ee/spec/requests/api/graphql/environments/deployments_spec.rb' + - 'ee/spec/requests/api/graphql/explain_vulnerability_prompt_spec.rb' + - 'ee/spec/requests/api/graphql/member_role/group_member_role_spec.rb' + - 'ee/spec/requests/api/graphql/member_role/permissions_list_spec.rb' + - 'ee/spec/requests/api/graphql/member_role/project_member_role_spec.rb' + - 'ee/spec/requests/api/graphql/member_role/single_member_role_spec.rb' + - 'ee/spec/requests/api/graphql/milestone_spec.rb' + - 'ee/spec/requests/api/graphql/mutations/audit_events/amazon_s3_configurations/update_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/google_cloud_logging_configurations/destroy_spec.rb' + - 'ee/spec/requests/api/graphql/mutations/audit_events/instance/google_cloud_logging_configurations/destroy_spec.rb' + - 'ee/spec/requests/api/graphql/mutations/audit_events/instance_external_audit_event_destinations/create_spec.rb' + - 'ee/spec/requests/api/graphql/mutations/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/epics/create_spec.rb' + - 'ee/spec/requests/api/graphql/mutations/ci/project_subscriptions/delete_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/profiles/create_spec.rb' + - 'ee/spec/requests/api/graphql/mutations/dast/profiles/delete_spec.rb' + - 'ee/spec/requests/api/graphql/mutations/dast/profiles/update_spec.rb' + - 'ee/spec/requests/api/graphql/mutations/dast_on_demand_scans/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/dependency_proxy/packages/settings/update_spec.rb' + - 'ee/spec/requests/api/graphql/mutations/security_policy/assign_security_policy_project_spec.rb' + - 'ee/spec/requests/api/graphql/pipeline_security_report_finding_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_profiles_spec.rb' + - 'ee/spec/requests/api/graphql/project/dast_site_validations_spec.rb' + - 'ee/spec/requests/api/graphql/project/deployment_spec.rb' + - 'ee/spec/requests/api/graphql/project/environments_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/product_analytics/events_stored_spec.rb' + - 'ee/spec/requests/api/graphql/project/product_analytics/product_analytics_spec.rb' + - 'ee/spec/requests/api/graphql/project/sbom/dependencies_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/projects/compliance_frameworks_spec.rb' + - 'ee/spec/requests/api/graphql/vulnerabilities/details_spec.rb' + - 'ee/spec/requests/api/graphql/vulnerabilities/fields_spec.rb' + - 'ee/spec/requests/api/graphql/vulnerabilities/identifiers_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/group_push_rule_spec.rb' + - 'ee/spec/requests/api/group_variables_spec.rb' + - 'ee/spec/requests/api/groups_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/suggested_reviewers_spec.rb' + - 'ee/spec/requests/api/issues_spec.rb' + - 'ee/spec/requests/api/member_roles_spec.rb' + - 'ee/spec/requests/api/members_spec.rb' + - 'ee/spec/requests/api/merge_trains_spec.rb' + - 'ee/spec/requests/api/namespaces_spec.rb' + - 'ee/spec/requests/api/project_import_spec.rb' + - 'ee/spec/requests/api/projects_spec.rb' + - 'ee/spec/requests/api/releases_spec.rb' + - 'ee/spec/requests/api/remote_mirrors_spec.rb' + - 'ee/spec/requests/api/saml_group_links_spec.rb' + - 'ee/spec/requests/api/status_checks_spec.rb' + - 'ee/spec/requests/api/todos_spec.rb' + - 'ee/spec/requests/api/vulnerabilities_spec.rb' + - 'ee/spec/requests/git_http_geo_spec.rb' + - 'ee/spec/requests/groups/analytics/devops_adoption_controller_spec.rb' + - 'ee/spec/requests/groups/dependencies_controller_spec.rb' + - 'ee/spec/requests/groups/epics/epic_links_controller_spec.rb' + - 'ee/spec/requests/groups/group_members_controller_spec.rb' + - 'ee/spec/requests/groups/protected_branches_controller_spec.rb' + - 'ee/spec/requests/groups/protected_environments_controller_spec.rb' + - 'ee/spec/requests/groups/security/credentials_controller_spec.rb' + - 'ee/spec/requests/groups/settings/domain_verification_controller_spec.rb' + - 'ee/spec/requests/groups/settings/merge_requests_controller_spec.rb' + - 'ee/spec/requests/groups_controller_spec.rb' + - 'ee/spec/requests/projects/analytics/cycle_analytics/stages_controller_spec.rb' + - 'ee/spec/requests/projects/metrics_controller_spec.rb' + - 'ee/spec/requests/projects/pipelines_controller_spec.rb' + - 'ee/spec/requests/projects/requirements_management/requirements_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/analytics_controller_spec.rb' + - 'ee/spec/requests/projects/tracing_controller_spec.rb' + - 'ee/spec/requests/repositories/git_http_controller_spec.rb' + - 'ee/spec/requests/smartcard_controller_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/autocomplete/group_entity_spec.rb' + - 'ee/spec/serializers/autocomplete/iteration_entity_spec.rb' + - 'ee/spec/serializers/clusters/deployment_entity_spec.rb' + - 'ee/spec/serializers/clusters/environment_entity_spec.rb' + - 'ee/spec/serializers/dashboard_operations_project_entity_spec.rb' + - 'ee/spec/serializers/dependency_entity_spec.rb' + - 'ee/spec/serializers/ee/blob_entity_spec.rb' + - 'ee/spec/serializers/ee/build_details_entity_spec.rb' + - 'ee/spec/serializers/ee/ci/pipeline_entity_spec.rb' + - 'ee/spec/serializers/ee/deployment_entity_spec.rb' + - 'ee/spec/serializers/ee/evidences/release_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_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/environment_entity_spec.rb' + - 'ee/spec/serializers/epic_entity_spec.rb' + - 'ee/spec/serializers/epic_note_entity_spec.rb' + - 'ee/spec/serializers/evidences/build_artifact_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/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/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/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/sbom/dependency_license_list_entity_spec.rb' + - 'ee/spec/serializers/sbom/sbom_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/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/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/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/ai/service_access_tokens_storage_service_spec.rb' + - 'ee/spec/services/analytics/cycle_analytics/stages/list_service_spec.rb' + - 'ee/spec/services/analytics/cycle_analytics/value_streams/update_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/analytics/forecasting/build_forecast_service_spec.rb' + - 'ee/spec/services/app_sec/dast/pipelines/find_latest_service_spec.rb' + - 'ee/spec/services/app_sec/dast/pre_scan_verification_steps/create_or_update_service_spec.rb' + - 'ee/spec/services/app_sec/dast/pre_scan_verification_steps/find_or_create_service_spec.rb' + - 'ee/spec/services/app_sec/dast/profiles/build_config_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/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/associate_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_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/create_service_spec.rb' + - 'ee/spec/services/app_sec/dast/site_profiles/destroy_service_spec.rb' + - 'ee/spec/services/app_sec/dast/site_profiles/update_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/dast/sites/find_or_create_service_spec.rb' + - 'ee/spec/services/applications/create_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/project_rule_destroy_service_spec.rb' + - 'ee/spec/services/approval_rules/update_service_spec.rb' + - 'ee/spec/services/arkose/blocked_users_report_service_spec.rb' + - 'ee/spec/services/arkose/status_service_spec.rb' + - 'ee/spec/services/audit_events/register_runner_audit_event_service_spec.rb' + - 'ee/spec/services/audit_events/streaming/event_type_filters/create_service_spec.rb' + - 'ee/spec/services/audit_events/streaming/event_type_filters/destroy_service_spec.rb' + - 'ee/spec/services/audit_events/streaming/headers/update_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/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/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/create_pipeline_service/dast_configuration_spec.rb' + - 'ee/spec/services/ci/delete_project_subscription_service_spec.rb' + - 'ee/spec/services/ci/external_pull_requests/process_github_event_service_spec.rb' + - 'ee/spec/services/ci/llm/async_generate_config_service_spec.rb' + - 'ee/spec/services/ci/llm/generate_config_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/process_build_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_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/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/dashboard/operations/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/dora/aggregate_scores_service_spec.rb' + - 'ee/spec/services/ee/admin/set_feature_flag_service_spec.rb' + - 'ee/spec/services/ee/alert_management/alerts/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/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/deployments/update_environment_service_spec.rb' + - 'ee/spec/services/ee/git/branch_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/group_links/create_service_spec.rb' + - 'ee/spec/services/ee/groups/group_links/destroy_service_spec.rb' + - 'ee/spec/services/ee/groups/group_links/update_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/clone_service_spec.rb' + - 'ee/spec/services/ee/issues/move_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/members/create_service_spec.rb' + - 'ee/spec/services/ee/members/creator_service_spec.rb' + - 'ee/spec/services/ee/members/destroy_service_spec.rb' + - 'ee/spec/services/ee/merge_request_metrics_service_spec.rb' + - 'ee/spec/services/ee/merge_requests/base_service_spec.rb' + - 'ee/spec/services/ee/merge_requests/create_pipeline_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/namespace_settings/update_service_spec.rb' + - 'ee/spec/services/ee/notes/post_process_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/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/projects/unlink_fork_service_spec.rb' + - 'ee/spec/services/ee/resource_events/change_labels_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/users/build_service_spec.rb' + - 'ee/spec/services/ee/work_items/import_csv_service_spec.rb' + - 'ee/spec/services/elastic/data_migration_service_spec.rb' + - 'ee/spec/services/elastic/index_projects_service_spec.rb' + - 'ee/spec/services/elastic/indexing_control_service_spec.rb' + - 'ee/spec/services/elastic/metrics_update_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/epic_links/create_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/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/tree_reorder_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/retry_service_spec.rb' + - 'ee/spec/services/external_status_checks/update_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/event_service_spec.rb' + - 'ee/spec/services/geo/file_registry_removal_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/metrics_update_service_spec.rb' + - 'ee/spec/services/geo/replication_toggle_request_service_spec.rb' + - 'ee/spec/services/gitlab_subscriptions/activate_service_spec.rb' + - 'ee/spec/services/gitlab_subscriptions/reconciliations/calculate_seat_count_data_service_spec.rb' + - 'ee/spec/services/gitlab_subscriptions/user_add_on_assignments/create_service_spec.rb' + - 'ee/spec/services/group_saml/identity/destroy_service_spec.rb' + - 'ee/spec/services/groups/compliance_report_csv_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/restore_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/ide/schemas_config_service_spec.rb' + - 'ee/spec/services/incident_management/incidents/create_sla_service_spec.rb' + - 'ee/spec/services/incident_management/oncall_rotations/edit_service_spec.rb' + - 'ee/spec/services/issue_feature_flags/list_service_spec.rb' + - 'ee/spec/services/issues/duplicate_service_spec.rb' + - 'ee/spec/services/iterations/cadences/create_iterations_in_advance_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/lfs/lock_file_service_spec.rb' + - 'ee/spec/services/lfs/unlock_file_service_spec.rb' + - 'ee/spec/services/llm/analyze_ci_job_failure_service_spec.rb' + - 'ee/spec/services/llm/chat_service_spec.rb' + - 'ee/spec/services/llm/execute_method_service_spec.rb' + - 'ee/spec/services/llm/explain_code_service_spec.rb' + - 'ee/spec/services/llm/explain_vulnerability_service_spec.rb' + - 'ee/spec/services/llm/generate_commit_message_service_spec.rb' + - 'ee/spec/services/llm/generate_test_file_service_spec.rb' + - 'ee/spec/services/llm/git_command_service_spec.rb' + - 'ee/spec/services/llm/tanuki_bot_service_spec.rb' + - 'ee/spec/services/member_roles/create_service_spec.rb' + - 'ee/spec/services/merge_request_approval_settings/update_service_spec.rb' + - 'ee/spec/services/merge_requests/merge_service_spec.rb' + - 'ee/spec/services/merge_requests/mergeability/check_external_status_checks_passed_service_spec.rb' + - 'ee/spec/services/merge_requests/reload_merge_head_diff_service_spec.rb' + - 'ee/spec/services/merge_trains/add_merge_request_service_spec.rb' + - 'ee/spec/services/merge_trains/check_status_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/notes/create_visual_review_service_spec.rb' + - 'ee/spec/services/onboarding/create_iterable_trigger_service_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_service_audit_log_spec.rb' + - 'ee/spec/services/product_analytics/initialize_stack_service_spec.rb' + - 'ee/spec/services/projects/alerting/notify_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_legacy_inactive_projects_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/hashed_storage/migrate_attachments_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/mark_for_deletion_service_spec.rb' + - 'ee/spec/services/projects/restore_service_spec.rb' + - 'ee/spec/services/projects/setup_ci_cd_spec.rb' + - 'ee/spec/services/projects/transfer_service_spec.rb' + - 'ee/spec/services/projects/update_mirror_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/requirements_management/export_csv_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/resource_access_tokens/revoke_service_spec.rb' + - 'ee/spec/services/resource_events/change_weight_service_spec.rb' + - 'ee/spec/services/search/reindexing_service_spec.rb' + - 'ee/spec/services/security/dependency_list_service_spec.rb' + - 'ee/spec/services/security/ingestion/tasks/ingest_vulnerabilities/create_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/process_scan_result_policy_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_scan_result_policies_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/training_providers/base_url_service_spec.rb' + - 'ee/spec/services/security/training_urls_service_spec.rb' + - 'ee/spec/services/security/vulnerability_scanning/finding_map_spec.rb' + - 'ee/spec/services/sitemap/create_service_spec.rb' + - 'ee/spec/services/software_license_policies/create_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/trigger_publish_service_spec.rb' + - 'ee/spec/services/system_notes/epics_service_spec.rb' + - 'ee/spec/services/system_notes/escalations_service_spec.rb' + - 'ee/spec/services/system_notes/merge_requests_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/todos/destroy/confidential_epic_service_spec.rb' + - 'ee/spec/services/users/email_verification/send_custom_confirmation_instructions_service_spec.rb' + - 'ee/spec/services/vulnerabilities/create_service_spec.rb' + - 'ee/spec/services/vulnerabilities/find_or_create_from_security_finding_service_spec.rb' + - 'ee/spec/services/vulnerabilities/findings/find_or_create_from_security_finding_service_spec.rb' + - 'ee/spec/services/vulnerabilities/manually_create_service_spec.rb' + - 'ee/spec/services/vulnerabilities/security_finding/create_issue_service_spec.rb' + - 'ee/spec/services/vulnerabilities/security_finding/create_merge_request_service_spec.rb' + - 'ee/spec/services/vulnerabilities/starboard_vulnerability_create_service_spec.rb' + - 'ee/spec/services/vulnerabilities/update_service_spec.rb' + - 'ee/spec/services/vulnerability_external_issue_links/create_service_spec.rb' + - 'ee/spec/services/vulnerability_feedback/create_service_spec.rb' + - 'ee/spec/services/work_items/update_service_spec.rb' + - 'ee/spec/services/work_items/widgets/health_status_service/update_service_spec.rb' + - 'ee/spec/services/work_items/widgets/iteration_service/update_service_spec.rb' + - 'ee/spec/services/work_items/widgets/progress_service/update_service_spec.rb' + - 'ee/spec/services/work_items/widgets/status_service/update_service_spec.rb' + - 'ee/spec/services/work_items/widgets/weight_service/update_service_spec.rb' + - 'ee/spec/support/shared_contexts/audit_event_not_licensed_shared_context.rb' + - 'ee/spec/support/shared_examples/controllers/analytics/cycle_analytics/shared_stage_shared_examples.rb' + - 'ee/spec/tasks/gitlab/elastic_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/validators/user_existence_validator_spec.rb' + - 'ee/spec/validators/user_id_existence_validator_spec.rb' + - 'ee/spec/views/devise/registrations/new.html.haml_spec.rb' + - 'ee/spec/views/layouts/header/_current_user_dropdown.html.haml_spec.rb' + - 'ee/spec/workers/active_user_count_threshold_worker_spec.rb' + - 'ee/spec/workers/admin_emails_worker_spec.rb' + - 'ee/spec/workers/app_sec/dast/profile_schedule_worker_spec.rb' + - 'ee/spec/workers/approval_rules/external_approval_rule_payload_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/ci/initial_pipeline_process_worker_spec.rb' + - 'ee/spec/workers/ci/llm/generate_config_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/compliance_management/chain_of_custody_report_worker_spec.rb' + - 'ee/spec/workers/concerns/elastic/migration_helper_spec.rb' + - 'ee/spec/workers/concerns/elastic/migration_obsolete_spec.rb' + - 'ee/spec/workers/concerns/elastic/migration_options_spec.rb' + - 'ee/spec/workers/concerns/elastic/migration_remove_fields_helper_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/issuable/related_links_create_worker_spec.rb' + - 'ee/spec/workers/ee/issuable_export_csv_worker_spec.rb' + - 'ee/spec/workers/ee/repository_check/batch_worker_spec.rb' + - 'ee/spec/workers/elastic/migration_worker_spec.rb' + - 'ee/spec/workers/elastic/namespace_update_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_indexing_control_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_remove_expired_namespace_subscriptions_from_index_cron_worker_spec.rb' + - 'ee/spec/workers/geo/create_repository_updated_event_worker_spec.rb' + - 'ee/spec/workers/geo/destroy_worker_spec.rb' + - 'ee/spec/workers/geo/registry_sync_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/sync_timeout_cron_worker_spec.rb' + - 'ee/spec/workers/geo/verification_cron_worker_spec.rb' + - 'ee/spec/workers/geo/verification_state_backfill_worker_spec.rb' + - 'ee/spec/workers/geo/verification_timeout_worker_spec.rb' + - 'ee/spec/workers/gitlab_subscriptions/add_on_purchases/bulk_refresh_user_assignments_worker_spec.rb' + - 'ee/spec/workers/gitlab_subscriptions/add_on_purchases/cleanup_user_add_on_assignment_worker_spec.rb' + - 'ee/spec/workers/gitlab_subscriptions/add_on_purchases/refresh_user_assignments_worker_spec.rb' + - 'ee/spec/workers/gitlab_subscriptions/add_on_purchases/schedule_bulk_refresh_user_assignments_worker_spec.rb' + - 'ee/spec/workers/gitlab_subscriptions/schedule_refresh_seats_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/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/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/llm/completion_worker_spec.rb' + - 'ee/spec/workers/members_destroyer/clean_up_group_protected_branch_rules_worker_spec.rb' + - 'ee/spec/workers/merge_requests/capture_suggested_reviewers_accepted_worker_spec.rb' + - 'ee/spec/workers/merge_requests/fetch_suggested_reviewers_worker_spec.rb' + - 'ee/spec/workers/merge_requests/sync_code_owner_approval_rules_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/product_analytics/initialize_snowplow_product_analytics_worker_spec.rb' + - 'ee/spec/workers/project_import_schedule_worker_spec.rb' + - 'ee/spec/workers/projects/deregister_suggested_reviewers_project_worker_spec.rb' + - 'ee/spec/workers/projects/disable_legacy_open_source_license_for_inactive_projects_worker_spec.rb' + - 'ee/spec/workers/projects/register_suggested_reviewers_project_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/search/index_curation_worker_spec.rb' + - 'ee/spec/workers/search/zoekt/delete_project_worker_spec.rb' + - 'ee/spec/workers/search/zoekt/namespace_indexer_worker_spec.rb' + - 'ee/spec/workers/security/scan_execution_policies/rule_schedule_worker_spec.rb' + - 'ee/spec/workers/security/scans/purge_by_job_id_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/sync_seat_link_worker_spec.rb' + - 'ee/spec/workers/update_all_mirrors_worker_spec.rb' + - 'ee/spec/workers/vulnerabilities/mark_dropped_as_resolved_worker_spec.rb' + - 'ee/spec/workers/vulnerabilities/update_namespace_ids_of_vulnerability_reads_worker_spec.rb' + - 'ee/spec/workers/zoekt/indexer_worker_spec.rb' + - 'qa/spec/ee/runtime/geo_spec.rb' + - 'qa/spec/factory/resource/user_spec.rb' + - 'qa/spec/page/base_spec.rb' + - 'qa/spec/page/element_spec.rb' + - 'qa/spec/page/logging_spec.rb' + - 'qa/spec/page/validator_spec.rb' + - 'qa/spec/page/view_spec.rb' + - 'qa/spec/resource/api_fabricator_spec.rb' + - 'qa/spec/resource/base_spec.rb' + - 'qa/spec/resource/events/base_spec.rb' + - 'qa/spec/resource/events/project_spec.rb' + - 'qa/spec/resource/repository/push_spec.rb' + - 'qa/spec/resource/ssh_key_spec.rb' + - 'qa/spec/resource/user_spec.rb' + - 'qa/spec/runtime/api/client_spec.rb' + - 'qa/spec/runtime/key/ed25519_spec.rb' + - 'qa/spec/runtime/key/rsa_spec.rb' + - 'qa/spec/runtime/release_spec.rb' + - 'qa/spec/runtime/scenario_spec.rb' + - 'qa/spec/scenario/actable_spec.rb' + - 'qa/spec/scenario/bootable_spec.rb' + - 'qa/spec/scenario/template_spec.rb' + - 'qa/spec/service/docker_run/gitlab_runner_spec.rb' + - 'qa/spec/service/docker_run/k3s_spec.rb' + - 'qa/spec/service/shellout_spec.rb' + - 'qa/spec/specs/parallel_runner_spec.rb' + - 'qa/spec/specs/runner_spec.rb' + - 'qa/spec/support/helpers/masker_spec.rb' + - 'qa/spec/support/repeater_spec.rb' + - 'qa/spec/support/retrier_spec.rb' + - 'qa/spec/support/system_logs/sentry_spec.rb' + - 'qa/spec/support/wait_for_requests_spec.rb' + - 'qa/spec/support/waiter_spec.rb' + - 'qa/spec/vendor/smocker_api_spec.rb' + - 'spec/bin/feature_flag_spec.rb' + - 'spec/components/diffs/overflow_warning_component_spec.rb' + - 'spec/components/diffs/stats_component_spec.rb' + - 'spec/components/pajamas/banner_component_spec.rb' + - 'spec/components/pajamas/component_spec.rb' + - 'spec/config/object_store_settings_spec.rb' + - 'spec/contracts/provider_specs/helpers/provider/contract_source_helper_spec.rb' + - 'spec/controllers/admin/application_settings_controller_spec.rb' + - 'spec/controllers/admin/applications_controller_spec.rb' + - 'spec/controllers/admin/ci/variables_controller_spec.rb' + - 'spec/controllers/admin/instance_review_controller_spec.rb' + - 'spec/controllers/admin/integrations_controller_spec.rb' + - 'spec/controllers/admin/users_controller_spec.rb' + - 'spec/controllers/application_controller_spec.rb' + - 'spec/controllers/concerns/check_rate_limit_spec.rb' + - 'spec/controllers/concerns/graceful_timeout_handling_spec.rb' + - 'spec/controllers/concerns/page_limiter_spec.rb' + - 'spec/controllers/concerns/preferred_language_switcher_spec.rb' + - 'spec/controllers/concerns/product_analytics_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/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/dashboard/labels_controller_spec.rb' + - 'spec/controllers/dashboard/projects_controller_spec.rb' + - 'spec/controllers/google_api/authorizations_controller_spec.rb' + - 'spec/controllers/graphql_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/milestones_controller_spec.rb' + - 'spec/controllers/groups/releases_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/variables_controller_spec.rb' + - 'spec/controllers/groups_controller_spec.rb' + - 'spec/controllers/help_controller_spec.rb' + - 'spec/controllers/import/bitbucket_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/oauth/applications_controller_spec.rb' + - 'spec/controllers/oauth/authorizations_controller_spec.rb' + - 'spec/controllers/omniauth_callbacks_controller_spec.rb' + - 'spec/controllers/passwords_controller_spec.rb' + - 'spec/controllers/profiles/emails_controller_spec.rb' + - 'spec/controllers/profiles/preferences_controller_spec.rb' + - 'spec/controllers/profiles/slacks_controller_spec.rb' + - 'spec/controllers/profiles/two_factor_auths_controller_spec.rb' + - 'spec/controllers/profiles/webauthn_registrations_controller_spec.rb' + - 'spec/controllers/projects/analytics/cycle_analytics/summary_controller_spec.rb' + - 'spec/controllers/projects/artifacts_controller_spec.rb' + - 'spec/controllers/projects/avatars_controller_spec.rb' + - 'spec/controllers/projects/blob_controller_spec.rb' + - 'spec/controllers/projects/branches_controller_spec.rb' + - 'spec/controllers/projects/ci/lints_controller_spec.rb' + - 'spec/controllers/projects/deploy_keys_controller_spec.rb' + - 'spec/controllers/projects/design_management/designs/raw_images_controller_spec.rb' + - 'spec/controllers/projects/environments_controller_spec.rb' + - 'spec/controllers/projects/feature_flags_controller_spec.rb' + - 'spec/controllers/projects/forks_controller_spec.rb' + - 'spec/controllers/projects/graphs_controller_spec.rb' + - 'spec/controllers/projects/issues_controller_spec.rb' + - 'spec/controllers/projects/jobs_controller_spec.rb' + - 'spec/controllers/projects/mattermosts_controller_spec.rb' + - 'spec/controllers/projects/merge_requests/diffs_controller_spec.rb' + - 'spec/controllers/projects/merge_requests_controller_spec.rb' + - 'spec/controllers/projects/milestones_controller_spec.rb' + - 'spec/controllers/projects/notes_controller_spec.rb' + - 'spec/controllers/projects/pages_controller_spec.rb' + - 'spec/controllers/projects/pages_domains_controller_spec.rb' + - 'spec/controllers/projects/pipelines_controller_spec.rb' + - 'spec/controllers/projects/protected_branches_controller_spec.rb' + - 'spec/controllers/projects/raw_controller_spec.rb' + - 'spec/controllers/projects/refs_controller_spec.rb' + - 'spec/controllers/projects/releases/evidences_controller_spec.rb' + - 'spec/controllers/projects/releases_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/repository_controller_spec.rb' + - 'spec/controllers/projects/snippets/blobs_controller_spec.rb' + - 'spec/controllers/projects/snippets_controller_spec.rb' + - 'spec/controllers/projects/tags_controller_spec.rb' + - 'spec/controllers/projects/terraform_controller_spec.rb' + - 'spec/controllers/projects/tree_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/work_items_controller_spec.rb' + - 'spec/controllers/projects_controller_spec.rb' + - 'spec/controllers/registrations_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/sessions_controller_spec.rb' + - 'spec/controllers/snippets/blobs_controller_spec.rb' + - 'spec/controllers/snippets/notes_controller_spec.rb' + - 'spec/controllers/snippets_controller_spec.rb' + - 'spec/controllers/uploads_controller_spec.rb' + - 'spec/controllers/users/callouts_controller_spec.rb' + - 'spec/experiments/application_experiment_spec.rb' + - 'spec/experiments/in_product_guidance_environments_webide_experiment_spec.rb' + - 'spec/features/admin/users/user_spec.rb' + - 'spec/features/groups/clusters/user_spec.rb' + - 'spec/features/merge_request/user_sees_merge_widget_spec.rb' + - 'spec/features/profiles/password_spec.rb' + - 'spec/features/projects/clusters/user_spec.rb' + - 'spec/features/projects/pipelines/pipeline_spec.rb' + - 'spec/features/projects/settings/registry_settings_cleanup_tags_spec.rb' + - 'spec/features/projects/settings/registry_settings_spec.rb' + - 'spec/features/users/show_spec.rb' + - 'spec/finders/abuse_reports_finder_spec.rb' + - 'spec/finders/achievements/achievements_finder_spec.rb' + - 'spec/finders/analytics/cycle_analytics/stage_finder_spec.rb' + - 'spec/finders/autocomplete/users_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/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/runners_finder_spec.rb' + - 'spec/finders/ci/triggers_finder_spec.rb' + - 'spec/finders/clusters/agents/authorizations/ci_access/finder_spec.rb' + - 'spec/finders/clusters/agents/authorizations/user_access/finder_spec.rb' + - 'spec/finders/clusters/knative_services_finder_spec.rb' + - 'spec/finders/container_repositories_finder_spec.rb' + - 'spec/finders/crm/contacts_finder_spec.rb' + - 'spec/finders/crm/organizations_finder_spec.rb' + - 'spec/finders/data_transfer/group_data_transfer_finder_spec.rb' + - 'spec/finders/data_transfer/project_data_transfer_finder_spec.rb' + - 'spec/finders/deploy_tokens/tokens_finder_spec.rb' + - 'spec/finders/deployments_finder_spec.rb' + - 'spec/finders/feature_flags_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/environment_scopes_finder_spec.rb' + - 'spec/finders/keys_finder_spec.rb' + - 'spec/finders/notes_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/go/package_finder_spec.rb' + - 'spec/finders/packages/group_packages_finder_spec.rb' + - 'spec/finders/packages/maven/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/pipelines_finder_spec.rb' + - 'spec/finders/packages/pypi/packages_finder_spec.rb' + - 'spec/finders/personal_access_tokens_finder_spec.rb' + - 'spec/finders/projects/export_job_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/ml/candidate_finder_spec.rb' + - 'spec/finders/projects/ml/model_finder_spec.rb' + - 'spec/finders/projects/prometheus/alerts_finder_spec.rb' + - 'spec/finders/prometheus_metrics_finder_spec.rb' + - 'spec/finders/releases/evidence_pipeline_finder_spec.rb' + - 'spec/finders/releases_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/tags_finder_spec.rb' + - 'spec/finders/uploader_finder_spec.rb' + - 'spec/finders/user_group_notification_settings_finder_spec.rb' + - 'spec/finders/user_groups_counter_spec.rb' + - 'spec/finders/vs_code/settings/settings_finder_spec.rb' + - 'spec/frontend/fixtures/project.rb' + - 'spec/graphql/features/authorization_spec.rb' + - 'spec/graphql/mutations/alert_management/alerts/set_assignees_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/boards/issues/issue_move_list_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/delete_spec.rb' + - 'spec/graphql/mutations/clusters/agent_tokens/create_spec.rb' + - 'spec/graphql/mutations/clusters/agent_tokens/revoke_spec.rb' + - 'spec/graphql/mutations/clusters/agents/create_spec.rb' + - 'spec/graphql/mutations/clusters/agents/delete_spec.rb' + - 'spec/graphql/mutations/commits/create_spec.rb' + - 'spec/graphql/mutations/container_repositories/destroy_tags_spec.rb' + - 'spec/graphql/mutations/environments/canary_ingress/update_spec.rb' + - 'spec/graphql/mutations/environments/create_spec.rb' + - 'spec/graphql/mutations/environments/delete_spec.rb' + - 'spec/graphql/mutations/environments/stop_spec.rb' + - 'spec/graphql/mutations/environments/update_spec.rb' + - 'spec/graphql/mutations/issues/create_spec.rb' + - 'spec/graphql/mutations/issues/set_confidential_spec.rb' + - 'spec/graphql/mutations/issues/set_due_date_spec.rb' + - 'spec/graphql/mutations/issues/set_locked_spec.rb' + - 'spec/graphql/mutations/issues/set_severity_spec.rb' + - 'spec/graphql/mutations/issues/update_spec.rb' + - 'spec/graphql/mutations/labels/create_spec.rb' + - 'spec/graphql/mutations/merge_requests/create_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/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/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/resolvers/admin/analytics/usage_trends/measurements_resolver_spec.rb' + - 'spec/graphql/resolvers/alert_management/alert_status_counts_resolver_spec.rb' + - 'spec/graphql/resolvers/blame_resolver_spec.rb' + - 'spec/graphql/resolvers/ci/runner_projects_resolver_spec.rb' + - 'spec/graphql/resolvers/clusters/agent_activity_events_resolver_spec.rb' + - 'spec/graphql/resolvers/clusters/agent_tokens_resolver_spec.rb' + - 'spec/graphql/resolvers/clusters/agents/authorizations/ci_access_resolver_spec.rb' + - 'spec/graphql/resolvers/clusters/agents/authorizations/user_access_resolver_spec.rb' + - 'spec/graphql/resolvers/clusters/agents_resolver_spec.rb' + - 'spec/graphql/resolvers/container_repositories_resolver_spec.rb' + - 'spec/graphql/resolvers/group_members/notification_email_resolver_spec.rb' + - 'spec/graphql/resolvers/groups_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/merge_requests_count_resolver_spec.rb' + - 'spec/graphql/resolvers/packages_base_resolver_spec.rb' + - 'spec/graphql/resolvers/paginated_tree_resolver_spec.rb' + - 'spec/graphql/resolvers/terraform/states_resolver_spec.rb' + - 'spec/graphql/resolvers/user_discussions_count_resolver_spec.rb' + - 'spec/graphql/resolvers/user_notes_count_resolver_spec.rb' + - 'spec/graphql/subscriptions/issuable_updated_spec.rb' + - 'spec/graphql/types/admin/analytics/usage_trends/measurement_type_spec.rb' + - 'spec/graphql/types/ci/job_token_scope_type_spec.rb' + - 'spec/graphql/types/environment_type_spec.rb' + - 'spec/graphql/types/invitation_interface_spec.rb' + - 'spec/graphql/types/issue_type_spec.rb' + - 'spec/graphql/types/member_interface_spec.rb' + - 'spec/graphql/types/project_type_spec.rb' + - 'spec/graphql/types/todo_type_spec.rb' + - 'spec/graphql/types/untrusted_regexp_spec.rb' + - 'spec/graphql/types/user_type_spec.rb' + - 'spec/graphql/types/users/autocompleted_user_type_spec.rb' + - 'spec/helpers/admin/background_migrations_helper_spec.rb' + - 'spec/helpers/admin/components_helper_spec.rb' + - 'spec/helpers/appearances_helper_spec.rb' + - 'spec/helpers/application_helper_spec.rb' + - 'spec/helpers/artifacts_helper_spec.rb' + - 'spec/helpers/avatars_helper_spec.rb' + - 'spec/helpers/award_emoji_helper_spec.rb' + - 'spec/helpers/badges_helper_spec.rb' + - 'spec/helpers/branches_helper_spec.rb' + - 'spec/helpers/breadcrumbs_helper_spec.rb' + - 'spec/helpers/ci/builds_helper_spec.rb' + - 'spec/helpers/ci/catalog/resources_helper_spec.rb' + - 'spec/helpers/ci/pipeline_editor_helper_spec.rb' + - 'spec/helpers/ci/pipelines_helper_spec.rb' + - 'spec/helpers/ci/triggers_helper_spec.rb' + - 'spec/helpers/clusters_helper_spec.rb' + - 'spec/helpers/commits_helper_spec.rb' + - 'spec/helpers/diff_helper_spec.rb' + - 'spec/helpers/environment_helper_spec.rb' + - 'spec/helpers/environments_helper_spec.rb' + - 'spec/helpers/events_helper_spec.rb' + - 'spec/helpers/gitlab_routing_helper_spec.rb' + - 'spec/helpers/groups/group_members_helper_spec.rb' + - 'spec/helpers/groups_helper_spec.rb' + - 'spec/helpers/hooks_helper_spec.rb' + - 'spec/helpers/integrations_helper_spec.rb' + - 'spec/helpers/jira_connect_helper_spec.rb' + - 'spec/helpers/json_helper_spec.rb' + - 'spec/helpers/labels_helper_spec.rb' + - 'spec/helpers/listbox_helper_spec.rb' + - 'spec/helpers/markup_helper_spec.rb' + - 'spec/helpers/merge_requests_helper_spec.rb' + - 'spec/helpers/namespaces_helper_spec.rb' + - 'spec/helpers/nav/top_nav_helper_spec.rb' + - 'spec/helpers/nav_helper_spec.rb' + - 'spec/helpers/operations_helper_spec.rb' + - 'spec/helpers/page_layout_helper_spec.rb' + - 'spec/helpers/projects/cluster_agents_helper_spec.rb' + - 'spec/helpers/projects/ml/experiments_helper_spec.rb' + - 'spec/helpers/projects/project_members_helper_spec.rb' + - 'spec/helpers/projects/terraform_helper_spec.rb' + - 'spec/helpers/projects_helper_spec.rb' + - 'spec/helpers/routing/pseudonymization_helper_spec.rb' + - 'spec/helpers/search_helper_spec.rb' + - 'spec/helpers/sessions_helper_spec.rb' + - 'spec/helpers/sidebars_helper_spec.rb' + - 'spec/helpers/snippets_helper_spec.rb' + - 'spec/helpers/stat_anchors_helper_spec.rb' + - 'spec/helpers/tree_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/initializers/00_deprecations_spec.rb' + - 'spec/initializers/carrierwave_s3_encryption_headers_patch_spec.rb' + - 'spec/initializers/cookies_serializer_spec.rb' + - 'spec/initializers/direct_upload_support_spec.rb' + - 'spec/initializers/doorkeeper_spec.rb' + - 'spec/initializers/enumerator_next_patch_spec.rb' + - 'spec/initializers/lograge_spec.rb' + - 'spec/initializers/pages_storage_check_spec.rb' + - 'spec/initializers/rails_asset_host_spec.rb' + - 'spec/initializers/session_store_spec.rb' + - 'spec/initializers/settings_spec.rb' + - 'spec/initializers/sidekiq_spec.rb' + - 'spec/initializers/validate_database_config_spec.rb' + - 'spec/initializers/validate_puma_spec.rb' + - 'spec/lib/api/ci/helpers/runner_spec.rb' + - 'spec/lib/api/entities/application_setting_spec.rb' + - 'spec/lib/api/entities/bulk_import_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_batch_status_spec.rb' + - 'spec/lib/api/entities/bulk_imports/export_status_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_spec.rb' + - 'spec/lib/api/entities/design_management/design_spec.rb' + - 'spec/lib/api/entities/ml/mlflow/get_run_spec.rb' + - 'spec/lib/api/entities/ml/mlflow/run_info_spec.rb' + - 'spec/lib/api/entities/ml/mlflow/run_spec.rb' + - 'spec/lib/api/entities/ml/mlflow/search_runs_spec.rb' + - 'spec/lib/api/entities/package_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_job_token_scope_spec.rb' + - 'spec/lib/api/entities/projects/topic_spec.rb' + - 'spec/lib/api/entities/snippet_spec.rb' + - 'spec/lib/api/entities/user_spec.rb' + - 'spec/lib/api/entities/wiki_page_spec.rb' + - 'spec/lib/api/helpers/authentication_spec.rb' + - 'spec/lib/api/helpers/caching_spec.rb' + - 'spec/lib/api/helpers/import_github_helpers_spec.rb' + - 'spec/lib/api/helpers/packages/dependency_proxy_helpers_spec.rb' + - 'spec/lib/api/helpers/packages/npm_spec.rb' + - 'spec/lib/api/helpers/packages_helpers_spec.rb' + - 'spec/lib/api/helpers/pagination_spec.rb' + - 'spec/lib/api/helpers/pagination_strategies_spec.rb' + - 'spec/lib/api/helpers/rate_limiter_spec.rb' + - 'spec/lib/api/helpers/variables_helpers_spec.rb' + - 'spec/lib/api/helpers_spec.rb' + - 'spec/lib/api/support/git_access_actor_spec.rb' + - 'spec/lib/atlassian/jira_connect/client_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/serializers/reviewer_entity_spec.rb' + - 'spec/lib/backup/database_backup_error_spec.rb' + - 'spec/lib/backup/database_model_spec.rb' + - 'spec/lib/backup/database_spec.rb' + - 'spec/lib/backup/dump/postgres_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/filter/broadcast_message_placeholders_filter_spec.rb' + - 'spec/lib/banzai/filter/math_filter_spec.rb' + - 'spec/lib/banzai/filter/output_safety_spec.rb' + - 'spec/lib/banzai/filter/references/project_reference_filter_spec.rb' + - 'spec/lib/banzai/filter/references/reference_cache_spec.rb' + - 'spec/lib/banzai/pipeline/post_process_pipeline_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_parser/work_item_parser_spec.rb' + - 'spec/lib/banzai/renderer_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/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/pipelines/badges_pipeline_spec.rb' + - 'spec/lib/bulk_imports/common/pipelines/boards_pipeline_spec.rb' + - 'spec/lib/bulk_imports/common/pipelines/labels_pipeline_spec.rb' + - 'spec/lib/bulk_imports/common/pipelines/milestones_pipeline_spec.rb' + - 'spec/lib/bulk_imports/common/transformers/prohibited_attributes_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_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/transformers/subgroup_to_entity_transformer_spec.rb' + - 'spec/lib/bulk_imports/ndjson_pipeline_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/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/references_pipeline_spec.rb' + - 'spec/lib/bulk_imports/projects/stage_spec.rb' + - 'spec/lib/bulk_imports/source_url_builder_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/project_url_constrainer_spec.rb' + - 'spec/lib/constraints/user_url_constrainer_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/error_tracking/sentry_client/event_spec.rb' + - 'spec/lib/error_tracking/sentry_client/issue_spec.rb' + - 'spec/lib/error_tracking/sentry_client/projects_spec.rb' + - 'spec/lib/error_tracking/sentry_client/repo_spec.rb' + - 'spec/lib/extracts_ref/requested_ref_spec.rb' + - 'spec/lib/feature/definition_spec.rb' + - 'spec/lib/feature/gitaly_spec.rb' + - 'spec/lib/feature_spec.rb' + - 'spec/lib/generators/gitlab/usage_metric_definition_generator_spec.rb' + - 'spec/lib/generators/model/model_generator_spec.rb' + - 'spec/lib/gitaly/server_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_spec.rb' + - 'spec/lib/gitlab/allowable_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/stage_events/code_stage_start_spec.rb' + - 'spec/lib/gitlab/analytics/cycle_analytics/stage_events/plan_stage_start_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/token_locator_spec.rb' + - 'spec/lib/gitlab/app_json_logger_spec.rb' + - 'spec/lib/gitlab/app_logger_spec.rb' + - 'spec/lib/gitlab/app_text_logger_spec.rb' + - 'spec/lib/gitlab/application_rate_limiter/base_strategy_spec.rb' + - 'spec/lib/gitlab/application_rate_limiter_spec.rb' + - 'spec/lib/gitlab/audit/ci_runner_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/type/definition_spec.rb' + - 'spec/lib/gitlab/auth/atlassian/identity_linker_spec.rb' + - 'spec/lib/gitlab/auth/auth_finders_spec.rb' + - 'spec/lib/gitlab/auth/current_user_mode_spec.rb' + - 'spec/lib/gitlab/auth/ip_rate_limiter_spec.rb' + - 'spec/lib/gitlab/auth/ldap/dn_spec.rb' + - 'spec/lib/gitlab/auth/ldap/person_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/request_authenticator_spec.rb' + - 'spec/lib/gitlab/auth/result_spec.rb' + - 'spec/lib/gitlab/auth/saml/identity_linker_spec.rb' + - 'spec/lib/gitlab/auth/saml/origin_validator_spec.rb' + - 'spec/lib/gitlab/auth/two_factor_auth_verifier_spec.rb' + - 'spec/lib/gitlab/auth_spec.rb' + - 'spec/lib/gitlab/authorized_keys_spec.rb' + - 'spec/lib/gitlab/avatar_cache_spec.rb' + - 'spec/lib/gitlab/background_migration/backfill_admin_mode_scope_for_personal_access_tokens_spec.rb' + - 'spec/lib/gitlab/background_migration/backfill_missing_ci_cd_settings_spec.rb' + - 'spec/lib/gitlab/background_migration/backfill_project_repositories_spec.rb' + - 'spec/lib/gitlab/background_migration/backfill_topics_title_spec.rb' + - 'spec/lib/gitlab/background_migration/backfill_user_details_fields_spec.rb' + - 'spec/lib/gitlab/background_migration/delete_invalid_protected_branch_merge_access_levels_spec.rb' + - 'spec/lib/gitlab/background_migration/delete_invalid_protected_branch_push_access_levels_spec.rb' + - 'spec/lib/gitlab/background_migration/delete_invalid_protected_tag_create_access_levels_spec.rb' + - 'spec/lib/gitlab/background_migration/delete_orphans_approval_merge_request_rules2_spec.rb' + - 'spec/lib/gitlab/background_migration/delete_orphans_approval_merge_request_rules_spec.rb' + - 'spec/lib/gitlab/background_migration/delete_orphans_approval_project_rules2_spec.rb' + - 'spec/lib/gitlab/background_migration/delete_orphans_approval_project_rules_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/nullify_creator_id_column_of_orphaned_projects_spec.rb' + - 'spec/lib/gitlab/background_migration/populate_vulnerability_dismissal_fields_spec.rb' + - 'spec/lib/gitlab/background_migration/redis/backfill_project_pipeline_status_ttl_spec.rb' + - 'spec/lib/gitlab/background_migration/remove_backfilled_job_artifacts_expire_at_spec.rb' + - 'spec/lib/gitlab/background_migration/remove_project_group_link_with_missing_groups_spec.rb' + - 'spec/lib/gitlab/background_migration/truncate_overlong_vulnerability_html_titles_spec.rb' + - 'spec/lib/gitlab/background_migration/update_ci_pipeline_artifacts_unknown_locked_status_spec.rb' + - 'spec/lib/gitlab/background_task_spec.rb' + - 'spec/lib/gitlab/bitbucket_import/importer_spec.rb' + - 'spec/lib/gitlab/bitbucket_import/parallel_importer_spec.rb' + - 'spec/lib/gitlab/bitbucket_server_import/importers/pull_request_notes_importer_spec.rb' + - 'spec/lib/gitlab/blame_spec.rb' + - 'spec/lib/gitlab/branch_push_merge_commit_analyzer_spec.rb' + - 'spec/lib/gitlab/bullet/exclusions_spec.rb' + - 'spec/lib/gitlab/cache/ci/project_pipeline_status_spec.rb' + - 'spec/lib/gitlab/cache/helpers_spec.rb' + - 'spec/lib/gitlab/cache/metrics_spec.rb' + - 'spec/lib/gitlab/cache_spec.rb' + - 'spec/lib/gitlab/chat_name_token_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/file_size_check/any_oversized_blobs_spec.rb' + - 'spec/lib/gitlab/checks/file_size_check/hook_environment_aware_any_oversized_blobs_spec.rb' + - 'spec/lib/gitlab/checks/global_file_size_check_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/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/style_spec.rb' + - 'spec/lib/gitlab/ci/ansi2json_spec.rb' + - 'spec/lib/gitlab/ci/artifact_file_reader_spec.rb' + - 'spec/lib/gitlab/ci/artifacts/decompressed_artifact_size_validator_spec.rb' + - 'spec/lib/gitlab/ci/artifacts/metrics_spec.rb' + - 'spec/lib/gitlab/ci/badge/release/latest_release_spec.rb' + - 'spec/lib/gitlab/ci/build/artifacts/metadata/entry_spec.rb' + - 'spec/lib/gitlab/ci/build/auto_retry_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/image_spec.rb' + - 'spec/lib/gitlab/ci/build/policy/refs_spec.rb' + - 'spec/lib/gitlab/ci/build/port_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_spec.rb' + - 'spec/lib/gitlab/ci/build/step_spec.rb' + - 'spec/lib/gitlab/ci/config/entry/bridge_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/rules/rule_spec.rb' + - 'spec/lib/gitlab/ci/config/entry/trigger_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/component_spec.rb' + - 'spec/lib/gitlab/ci/config/external/file/remote_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/interpolation/access_spec.rb' + - 'spec/lib/gitlab/ci/config/interpolation/block_spec.rb' + - 'spec/lib/gitlab/ci/config/interpolation/config_spec.rb' + - 'spec/lib/gitlab/ci/config/interpolation/context_spec.rb' + - 'spec/lib/gitlab/ci/config/interpolation/functions_stack_spec.rb' + - 'spec/lib/gitlab/ci/config/interpolation/interpolator_spec.rb' + - 'spec/lib/gitlab/ci/config/interpolation/template_spec.rb' + - 'spec/lib/gitlab/ci/config/normalizer/matrix_strategy_spec.rb' + - 'spec/lib/gitlab/ci/config/normalizer_spec.rb' + - 'spec/lib/gitlab/ci/config/yaml/tags/reference_spec.rb' + - 'spec/lib/gitlab/ci/cron_parser_spec.rb' + - 'spec/lib/gitlab/ci/decompressed_gzip_size_validator_spec.rb' + - 'spec/lib/gitlab/ci/environment_matcher_spec.rb' + - 'spec/lib/gitlab/ci/lint_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/security/validators/schema_validator_spec.rb' + - 'spec/lib/gitlab/ci/parsers/terraform/tfplan_spec.rb' + - 'spec/lib/gitlab/ci/parsers/test/junit_spec.rb' + - 'spec/lib/gitlab/ci/parsers_spec.rb' + - 'spec/lib/gitlab/ci/pipeline/chain/assign_partition_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/ensure_environments_spec.rb' + - 'spec/lib/gitlab/ci/pipeline/chain/ensure_resource_groups_spec.rb' + - 'spec/lib/gitlab/ci/pipeline/chain/helpers_spec.rb' + - 'spec/lib/gitlab/ci/pipeline/chain/limit/active_jobs_spec.rb' + - 'spec/lib/gitlab/ci/pipeline/chain/remove_unwanted_chat_jobs_spec.rb' + - 'spec/lib/gitlab/ci/pipeline/chain/sequence_spec.rb' + - 'spec/lib/gitlab/ci/pipeline/expression/lexeme/pattern/regular_expression_spec.rb' + - 'spec/lib/gitlab/ci/pipeline/expression/parser_spec.rb' + - 'spec/lib/gitlab/ci/pipeline/expression/token_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/processable/resource_group_spec.rb' + - 'spec/lib/gitlab/ci/pipeline/seed/stage_spec.rb' + - 'spec/lib/gitlab/ci/queue/metrics_spec.rb' + - 'spec/lib/gitlab/ci/reports/accessibility_reports_spec.rb' + - 'spec/lib/gitlab/ci/reports/coverage_report_generator_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_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/report_spec.rb' + - 'spec/lib/gitlab/ci/reports/security/reports_spec.rb' + - 'spec/lib/gitlab/ci/reports/security/scan_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/terraform_reports_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_reports_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/metrics_spec.rb' + - 'spec/lib/gitlab/ci/runner_instructions_spec.rb' + - 'spec/lib/gitlab/ci/runner_releases_spec.rb' + - 'spec/lib/gitlab/ci/secure_files/cer_spec.rb' + - 'spec/lib/gitlab/ci/secure_files/migration_helper_spec.rb' + - 'spec/lib/gitlab/ci/secure_files/mobile_provision_spec.rb' + - 'spec/lib/gitlab/ci/secure_files/p12_spec.rb' + - 'spec/lib/gitlab/ci/status/bridge/common_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/failed_allowed_spec.rb' + - 'spec/lib/gitlab/ci/status/build/failed_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/canceled_spec.rb' + - 'spec/lib/gitlab/ci/status/created_spec.rb' + - 'spec/lib/gitlab/ci/status/external/common_spec.rb' + - 'spec/lib/gitlab/ci/status/failed_spec.rb' + - 'spec/lib/gitlab/ci/status/group/common_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/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/success_spec.rb' + - 'spec/lib/gitlab/ci/status/success_warning_spec.rb' + - 'spec/lib/gitlab/ci/status/waiting_for_callback_spec.rb' + - 'spec/lib/gitlab/ci/status/waiting_for_resource_spec.rb' + - 'spec/lib/gitlab/ci/trace/archive_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/variables/builder/group_spec.rb' + - 'spec/lib/gitlab/ci/variables/builder/pipeline_spec.rb' + - 'spec/lib/gitlab/ci/variables/builder/project_spec.rb' + - 'spec/lib/gitlab/ci/variables/builder/release_spec.rb' + - 'spec/lib/gitlab/ci/variables/builder_spec.rb' + - 'spec/lib/gitlab/ci/variables/collection/sort_spec.rb' + - 'spec/lib/gitlab/ci/variables/collection_spec.rb' + - 'spec/lib/gitlab/ci/yaml_processor_spec.rb' + - 'spec/lib/gitlab/cleanup/personal_access_tokens_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/rack_timeout_observer_spec.rb' + - 'spec/lib/gitlab/code_navigation_path_spec.rb' + - 'spec/lib/gitlab/composer/cache_spec.rb' + - 'spec/lib/gitlab/container_repository/tags/cache_spec.rb' + - 'spec/lib/gitlab/content_security_policy/config_loader_spec.rb' + - 'spec/lib/gitlab/cycle_analytics/permissions_spec.rb' + - 'spec/lib/gitlab/cycle_analytics/stage_summary_spec.rb' + - 'spec/lib/gitlab/daemon_spec.rb' + - 'spec/lib/gitlab/data_builder/push_spec.rb' + - 'spec/lib/gitlab/database/async_constraints/postgres_async_constraint_validation_spec.rb' + - 'spec/lib/gitlab/database/async_constraints/validators/foreign_key_spec.rb' + - 'spec/lib/gitlab/database/async_constraints_spec.rb' + - 'spec/lib/gitlab/database/async_indexes/index_base_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/postgres_async_index_spec.rb' + - 'spec/lib/gitlab/database/async_indexes_spec.rb' + - 'spec/lib/gitlab/database/background_migration/batch_optimizer_spec.rb' + - 'spec/lib/gitlab/database/background_migration/batched_job_spec.rb' + - 'spec/lib/gitlab/database/background_migration/batched_migration_spec.rb' + - 'spec/lib/gitlab/database/batch_average_counter_spec.rb' + - 'spec/lib/gitlab/database/bump_sequences_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/tablesample_count_strategy_spec.rb' + - 'spec/lib/gitlab/database/count_spec.rb' + - 'spec/lib/gitlab/database/database_connection_info_spec.rb' + - 'spec/lib/gitlab/database/dynamic_model_helpers_spec.rb' + - 'spec/lib/gitlab/database/gitlab_schema_spec.rb' + - 'spec/lib/gitlab/database/health_status/indicators/autovacuum_active_on_table_spec.rb' + - 'spec/lib/gitlab/database/load_balancing/load_balancer_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/srv_resolver_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/wraparound_vacuum_helpers_spec.rb' + - 'spec/lib/gitlab/database/migration_helpers_spec.rb' + - 'spec/lib/gitlab/database/migration_spec.rb' + - 'spec/lib/gitlab/database/migrations/base_background_runner_spec.rb' + - 'spec/lib/gitlab/database/migrations/extension_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_statistics_spec.rb' + - 'spec/lib/gitlab/database/migrations/observers/total_database_size_change_spec.rb' + - 'spec/lib/gitlab/database/migrations/redis_helpers_spec.rb' + - 'spec/lib/gitlab/database/migrations/runner_backoff/active_record_mixin_spec.rb' + - 'spec/lib/gitlab/database/migrations/runner_backoff/communicator_spec.rb' + - 'spec/lib/gitlab/database/migrations/test_batched_background_runner_spec.rb' + - 'spec/lib/gitlab/database/migrations/version_spec.rb' + - 'spec/lib/gitlab/database/obsolete_ignored_columns_spec.rb' + - 'spec/lib/gitlab/database/partitioning/list/locking_configuration_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/time_partition_spec.rb' + - 'spec/lib/gitlab/database/partitioning_migration_helpers/backfill_partitioned_table_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/pg_class_spec.rb' + - 'spec/lib/gitlab/database/pg_depend_spec.rb' + - 'spec/lib/gitlab/database/postgres_autovacuum_activity_spec.rb' + - 'spec/lib/gitlab/database/postgres_index_bloat_estimate_spec.rb' + - 'spec/lib/gitlab/database/postgres_index_spec.rb' + - 'spec/lib/gitlab/database/query_analyzers/prevent_set_operator_mismatch/columns_spec.rb' + - 'spec/lib/gitlab/database/query_analyzers/prevent_set_operator_mismatch/common_table_expressions_spec.rb' + - 'spec/lib/gitlab/database/query_analyzers/prevent_set_operator_mismatch/targets_spec.rb' + - 'spec/lib/gitlab/database/query_analyzers/restrict_allowed_schemas_spec.rb' + - 'spec/lib/gitlab/database/reindexing/coordinator_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/schema_cleaner_spec.rb' + - 'spec/lib/gitlab/database/similarity_score_spec.rb' + - 'spec/lib/gitlab/database/tables_locker_spec.rb' + - 'spec/lib/gitlab/database/tables_sorted_by_foreign_keys_spec.rb' + - 'spec/lib/gitlab/database/tables_truncate_spec.rb' + - 'spec/lib/gitlab/database/transaction/context_spec.rb' + - 'spec/lib/gitlab/database/transaction_timeout_settings_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/database_importers/default_organization_importer_spec.rb' + - 'spec/lib/gitlab/database_spec.rb' + - 'spec/lib/gitlab/database_warnings_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/go_mod_linker_spec.rb' + - 'spec/lib/gitlab/dependency_linker/go_sum_linker_spec.rb' + - 'spec/lib/gitlab/dependency_linker/godeps_json_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/diff/char_diff_spec.rb' + - 'spec/lib/gitlab/diff/diff_refs_spec.rb' + - 'spec/lib/gitlab/diff/file_collection/merge_request_diff_batch_spec.rb' + - 'spec/lib/gitlab/diff/formatters/file_formatter_spec.rb' + - 'spec/lib/gitlab/diff/formatters/image_formatter_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/lines_unfolder_spec.rb' + - 'spec/lib/gitlab/diff/pair_selector_spec.rb' + - 'spec/lib/gitlab/diff/parallel_diff_spec.rb' + - 'spec/lib/gitlab/diff/position_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/suggestion_diff_spec.rb' + - 'spec/lib/gitlab/diff/suggestions_parser_spec.rb' + - 'spec/lib/gitlab/discussions_diff/file_collection_spec.rb' + - 'spec/lib/gitlab/doctor/secrets_spec.rb' + - 'spec/lib/gitlab/email/handler/service_desk_handler_spec.rb' + - 'spec/lib/gitlab/email/html_to_markdown_parser_spec.rb' + - 'spec/lib/gitlab/empty_search_results_spec.rb' + - 'spec/lib/gitlab/encoding_helper_spec.rb' + - 'spec/lib/gitlab/error_tracking/error_repository/open_api_strategy_spec.rb' + - 'spec/lib/gitlab/etag_caching/store_spec.rb' + - 'spec/lib/gitlab/event_store/store_spec.rb' + - 'spec/lib/gitlab/exclusive_lease_helpers/sleeping_lock_spec.rb' + - 'spec/lib/gitlab/exclusive_lease_helpers_spec.rb' + - 'spec/lib/gitlab/experiment/rollout/feature_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_finder_spec.rb' + - 'spec/lib/gitlab/fogbugz_import/importer_spec.rb' + - 'spec/lib/gitlab/fogbugz_import/project_creator_spec.rb' + - 'spec/lib/gitlab/gfm/reference_rewriter_spec.rb' + - 'spec/lib/gitlab/git/attributes_at_ref_parser_spec.rb' + - 'spec/lib/gitlab/git/attributes_parser_spec.rb' + - 'spec/lib/gitlab/git/blame_pagination_spec.rb' + - 'spec/lib/gitlab/git/blob_spec.rb' + - 'spec/lib/gitlab/git/branch_spec.rb' + - 'spec/lib/gitlab/git/changes_spec.rb' + - 'spec/lib/gitlab/git/commit_spec.rb' + - 'spec/lib/gitlab/git/compare_spec.rb' + - 'spec/lib/gitlab/git/diff_collection_spec.rb' + - 'spec/lib/gitlab/git/finders/refs_finder_spec.rb' + - 'spec/lib/gitlab/git/hook_env_spec.rb' + - 'spec/lib/gitlab/git/lfs_changes_spec.rb' + - 'spec/lib/gitlab/git/lfs_pointer_file_spec.rb' + - 'spec/lib/gitlab/git/object_pool_spec.rb' + - 'spec/lib/gitlab/git/push_spec.rb' + - 'spec/lib/gitlab/git/repository_spec.rb' + - 'spec/lib/gitlab/git/tag_spec.rb' + - 'spec/lib/gitlab/git/user_spec.rb' + - 'spec/lib/gitlab/git_access_design_spec.rb' + - 'spec/lib/gitlab/git_access_wiki_spec.rb' + - 'spec/lib/gitlab/git_post_receive_spec.rb' + - 'spec/lib/gitlab/gitaly_client/blob_service_spec.rb' + - 'spec/lib/gitlab/gitaly_client/call_spec.rb' + - 'spec/lib/gitlab/gitaly_client/commit_service_spec.rb' + - 'spec/lib/gitlab/gitaly_client/conflicts_service_spec.rb' + - 'spec/lib/gitlab/gitaly_client/diff_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/ref_service_spec.rb' + - 'spec/lib/gitlab/gitaly_client/util_spec.rb' + - 'spec/lib/gitlab/gitaly_client_spec.rb' + - 'spec/lib/gitlab/github_gists_import/importer/gist_importer_spec.rb' + - 'spec/lib/gitlab/github_import/importer/diff_note_importer_spec.rb' + - 'spec/lib/gitlab/github_import/importer/protected_branches_importer_spec.rb' + - 'spec/lib/gitlab/github_import/importer/pull_requests/all_merged_by_importer_spec.rb' + - 'spec/lib/gitlab/github_import/importer/pull_requests/merged_by_importer_spec.rb' + - 'spec/lib/gitlab/github_import/importer/pull_requests/review_importer_spec.rb' + - 'spec/lib/gitlab/github_import/importer/pull_requests/reviews_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/representation/note_text_spec.rb' + - 'spec/lib/gitlab/gl_repository/repo_type_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/filter_parameters_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/graphql/batch_key_spec.rb' + - 'spec/lib/gitlab/graphql/copy_field_description_spec.rb' + - 'spec/lib/gitlab/graphql/known_operations_spec.rb' + - 'spec/lib/gitlab/graphql/lazy_spec.rb' + - 'spec/lib/gitlab/graphql/loaders/issuable_loader_spec.rb' + - 'spec/lib/gitlab/graphql/pagination/active_record_array_connection_spec.rb' + - 'spec/lib/gitlab/graphql/pagination/keyset/connection_spec.rb' + - 'spec/lib/gitlab/graphql/queries_spec.rb' + - 'spec/lib/gitlab/graphql_logger_spec.rb' + - 'spec/lib/gitlab/graphs/commits_spec.rb' + - 'spec/lib/gitlab/group_search_results_spec.rb' + - 'spec/lib/gitlab/hashed_path_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/probes/collection_spec.rb' + - 'spec/lib/gitlab/health_checks/redis_spec.rb' + - 'spec/lib/gitlab/hook_data/base_builder_spec.rb' + - 'spec/lib/gitlab/http_connection_adapter_spec.rb' + - 'spec/lib/gitlab/http_io_spec.rb' + - 'spec/lib/gitlab/import/database_helpers_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_export/after_export_strategies/web_upload_strategy_spec.rb' + - 'spec/lib/gitlab/import_export/attribute_cleaner_spec.rb' + - 'spec/lib/gitlab/import_export/attributes_permitter_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/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/duration_measuring_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/group/relation_tree_restorer_spec.rb' + - 'spec/lib/gitlab/import_export/import_failure_service_spec.rb' + - 'spec/lib/gitlab/import_export/importer_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/log_util_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/sample/relation_tree_restorer_spec.rb' + - 'spec/lib/gitlab/import_export/reader_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/saver_spec.rb' + - 'spec/lib/gitlab/import_export/shared_spec.rb' + - 'spec/lib/gitlab/import_export/uploads_restorer_spec.rb' + - 'spec/lib/gitlab/instrumentation_helper_spec.rb' + - 'spec/lib/gitlab/internal_post_receive/response_spec.rb' + - 'spec/lib/gitlab/issuable/clone/copy_resource_events_service_spec.rb' + - 'spec/lib/gitlab/issuable_sorter_spec.rb' + - 'spec/lib/gitlab/issuables_count_for_state_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/json_spec.rb' + - 'spec/lib/gitlab/kas/client_spec.rb' + - 'spec/lib/gitlab/kroki_spec.rb' + - 'spec/lib/gitlab/kubernetes/config_maps/aws_node_auth_spec.rb' + - 'spec/lib/gitlab/kubernetes/default_namespace_spec.rb' + - 'spec/lib/gitlab/kubernetes/kube_client_spec.rb' + - 'spec/lib/gitlab/kubernetes/namespace_spec.rb' + - 'spec/lib/gitlab/kubernetes/node_spec.rb' + - 'spec/lib/gitlab/kubernetes_spec.rb' + - 'spec/lib/gitlab/language_detection_spec.rb' + - 'spec/lib/gitlab/legacy_github_import/importer_spec.rb' + - 'spec/lib/gitlab/legacy_github_import/label_formatter_spec.rb' + - 'spec/lib/gitlab/legacy_github_import/user_formatter_spec.rb' + - 'spec/lib/gitlab/log_timestamp_formatter_spec.rb' + - 'spec/lib/gitlab/logger_spec.rb' + - 'spec/lib/gitlab/lograge/custom_options_spec.rb' + - 'spec/lib/gitlab/loop_helpers_spec.rb' + - 'spec/lib/gitlab/manifest_import/metadata_spec.rb' + - 'spec/lib/gitlab/manifest_import/project_creator_spec.rb' + - 'spec/lib/gitlab/memory/diagnostic_reports_logger_spec.rb' + - 'spec/lib/gitlab/memory/instrumentation_spec.rb' + - 'spec/lib/gitlab/memory/watchdog/event_reporter_spec.rb' + - 'spec/lib/gitlab/metrics/methods_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/threads_sampler_spec.rb' + - 'spec/lib/gitlab/metrics/subscribers/load_balancing_spec.rb' + - 'spec/lib/gitlab/metrics/subscribers/rails_cache_spec.rb' + - 'spec/lib/gitlab/metrics_spec.rb' + - 'spec/lib/gitlab/middleware/handle_malformed_strings_spec.rb' + - 'spec/lib/gitlab/middleware/multipart_spec.rb' + - 'spec/lib/gitlab/middleware/path_traversal_check_spec.rb' + - 'spec/lib/gitlab/middleware/query_analyzer_spec.rb' + - 'spec/lib/gitlab/middleware/rack_multipart_tempfile_factory_spec.rb' + - 'spec/lib/gitlab/middleware/request_context_spec.rb' + - 'spec/lib/gitlab/monitor/demo_projects_spec.rb' + - 'spec/lib/gitlab/multi_destination_logger_spec.rb' + - 'spec/lib/gitlab/namespaced_session_store_spec.rb' + - 'spec/lib/gitlab/no_cache_headers_spec.rb' + - 'spec/lib/gitlab/noteable_metadata_spec.rb' + - 'spec/lib/gitlab/object_hierarchy_spec.rb' + - 'spec/lib/gitlab/omniauth_initializer_spec.rb' + - 'spec/lib/gitlab/optimistic_locking_spec.rb' + - 'spec/lib/gitlab/pages/settings_spec.rb' + - 'spec/lib/gitlab/pagination/cursor_based_keyset_spec.rb' + - 'spec/lib/gitlab/pagination/keyset/order_spec.rb' + - 'spec/lib/gitlab/pagination/keyset/page_spec.rb' + - 'spec/lib/gitlab/pagination/keyset/pager_spec.rb' + - 'spec/lib/gitlab/pagination/keyset/request_context_spec.rb' + - 'spec/lib/gitlab/pagination/keyset_spec.rb' + - 'spec/lib/gitlab/pagination/offset_header_builder_spec.rb' + - 'spec/lib/gitlab/pagination/offset_pagination_spec.rb' + - 'spec/lib/gitlab/patch/draw_route_spec.rb' + - 'spec/lib/gitlab/patch/prependable_spec.rb' + - 'spec/lib/gitlab/patch/sidekiq_scheduled_enq_spec.rb' + - 'spec/lib/gitlab/path_regex_spec.rb' + - 'spec/lib/gitlab/performance_bar/stats_spec.rb' + - 'spec/lib/gitlab/performance_bar/with_top_level_warnings_spec.rb' + - 'spec/lib/gitlab/plantuml_spec.rb' + - 'spec/lib/gitlab/popen/runner_spec.rb' + - 'spec/lib/gitlab/popen_spec.rb' + - 'spec/lib/gitlab/process_memory_cache/helper_spec.rb' + - 'spec/lib/gitlab/prometheus/adapter_spec.rb' + - 'spec/lib/gitlab/prometheus_client_spec.rb' + - 'spec/lib/gitlab/puma/error_handler_spec.rb' + - 'spec/lib/gitlab/puma_logging/json_formatter_spec.rb' + - 'spec/lib/gitlab/quick_actions/command_definition_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/rack_attack/store_spec.rb' + - 'spec/lib/gitlab/rack_attack/user_allowlist_spec.rb' + - 'spec/lib/gitlab/rack_attack_spec.rb' + - 'spec/lib/gitlab/reactive_cache_set_cache_spec.rb' + - 'spec/lib/gitlab/redis/boolean_spec.rb' + - 'spec/lib/gitlab/redis/cross_slot_spec.rb' + - 'spec/lib/gitlab/redis/db_load_balancing_spec.rb' + - 'spec/lib/gitlab/redis/multi_store_spec.rb' + - 'spec/lib/gitlab/redis/queues_spec.rb' + - 'spec/lib/gitlab/redis/sidekiq_status_spec.rb' + - 'spec/lib/gitlab/reference_extractor_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/repository_archive_rate_limiter_spec.rb' + - 'spec/lib/gitlab/repository_cache_adapter_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/request_context_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/sanitizers/exif_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_context/builder_spec.rb' + - 'spec/lib/gitlab/serializer/pagination_spec.rb' + - 'spec/lib/gitlab/setup_helper/workhorse_spec.rb' + - 'spec/lib/gitlab/shell_spec.rb' + - 'spec/lib/gitlab/sidekiq_daemon/monitor_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/duplicate_job_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/monitor_spec.rb' + - 'spec/lib/gitlab/sidekiq_middleware/pause_control/pause_control_service_spec.rb' + - 'spec/lib/gitlab/sidekiq_middleware/query_analyzer_spec.rb' + - 'spec/lib/gitlab/sidekiq_middleware/size_limiter/server_spec.rb' + - 'spec/lib/gitlab/sidekiq_middleware/skip_jobs_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/incident_management/incident_new_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_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/incident_management/incident_new_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/spamcheck/client_spec.rb' + - 'spec/lib/gitlab/spamcheck/result_spec.rb' + - 'spec/lib/gitlab/string_regex_marker_spec.rb' + - 'spec/lib/gitlab/submodule_links_spec.rb' + - 'spec/lib/gitlab/task_helpers_spec.rb' + - 'spec/lib/gitlab/template/gitignore_template_spec.rb' + - 'spec/lib/gitlab/template/gitlab_ci_yml_template_spec.rb' + - 'spec/lib/gitlab/terraform/state_migration_helper_spec.rb' + - 'spec/lib/gitlab/terraform_registry_token_spec.rb' + - 'spec/lib/gitlab/throttle_spec.rb' + - 'spec/lib/gitlab/time_tracking_formatter_spec.rb' + - 'spec/lib/gitlab/tracking/destinations/database_events_snowplow_spec.rb' + - 'spec/lib/gitlab/tracking/destinations/snowplow_micro_spec.rb' + - 'spec/lib/gitlab/tracking/destinations/snowplow_spec.rb' + - 'spec/lib/gitlab/tracking_spec.rb' + - 'spec/lib/gitlab/tree_summary_spec.rb' + - 'spec/lib/gitlab/unicode_spec.rb' + - 'spec/lib/gitlab/untrusted_regexp_spec.rb' + - 'spec/lib/gitlab/url_blocker_spec.rb' + - 'spec/lib/gitlab/url_builder_spec.rb' + - 'spec/lib/gitlab/usage/metric_definition_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/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_data/topology_spec.rb' + - 'spec/lib/gitlab/usage_data_counters/hll_redis_counter_spec.rb' + - 'spec/lib/gitlab/usage_data_counters/kubernetes_agent_counter_spec.rb' + - 'spec/lib/gitlab/usage_data_counters/redis_counter_spec.rb' + - 'spec/lib/gitlab/usage_data_counters_spec.rb' + - 'spec/lib/gitlab/usage_data_metrics_spec.rb' + - 'spec/lib/gitlab/usage_data_spec.rb' + - 'spec/lib/gitlab/utils/deep_size_spec.rb' + - 'spec/lib/gitlab/utils/delegator_override_spec.rb' + - 'spec/lib/gitlab/utils/file_info_spec.rb' + - 'spec/lib/gitlab/utils/gzip_spec.rb' + - 'spec/lib/gitlab/utils/inline_hash_spec.rb' + - 'spec/lib/gitlab/utils/measuring_spec.rb' + - 'spec/lib/gitlab/utils/mime_type_spec.rb' + - 'spec/lib/gitlab/utils/override_spec.rb' + - 'spec/lib/gitlab/utils/safe_inline_hash_spec.rb' + - 'spec/lib/gitlab/utils/sanitize_node_link_spec.rb' + - 'spec/lib/gitlab/utils/usage_data_spec.rb' + - 'spec/lib/gitlab/utils/username_and_email_generator_spec.rb' + - 'spec/lib/gitlab/word_diff/parser_spec.rb' + - 'spec/lib/gitlab/work_items/work_item_hierarchy_spec.rb' + - 'spec/lib/gitlab/workhorse_spec.rb' + - 'spec/lib/gitlab/x509/certificate_spec.rb' + - 'spec/lib/gitlab_spec.rb' + - 'spec/lib/google_api/auth_spec.rb' + - 'spec/lib/google_api/cloud_platform/client_spec.rb' + - 'spec/lib/grafana/time_window_spec.rb' + - 'spec/lib/grafana/validator_spec.rb' + - 'spec/lib/json_web_token/rsa_token_spec.rb' + - 'spec/lib/kramdown/kramdown_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/object_storage/fog_helpers_spec.rb' + - 'spec/lib/omni_auth/strategies/bitbucket_spec.rb' + - 'spec/lib/omni_auth/strategies/jwt_spec.rb' + - 'spec/lib/peek/views/active_record_spec.rb' + - 'spec/lib/peek/views/bullet_detailed_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/quality/seeders/issues_spec.rb' + - 'spec/lib/release_highlights/validator/entry_spec.rb' + - 'spec/lib/release_highlights/validator_spec.rb' + - 'spec/lib/safe_zip/entry_spec.rb' + - 'spec/lib/sbom/package_url_spec.rb' + - 'spec/lib/security/report_schema_version_matcher_spec.rb' + - 'spec/lib/security/weak_passwords_spec.rb' + - 'spec/lib/service_ping/devops_report_spec.rb' + - 'spec/lib/sidebars/admin/menus/abuse_reports_menu_spec.rb' + - 'spec/lib/sidebars/concerns/container_with_html_options_spec.rb' + - 'spec/lib/sidebars/concerns/has_avatar_spec.rb' + - 'spec/lib/sidebars/concerns/link_with_html_options_spec.rb' + - 'spec/lib/sidebars/concerns/super_sidebar_panel_spec.rb' + - 'spec/lib/sidebars/explore/menus/catalog_menu_spec.rb' + - 'spec/lib/sidebars/explore/panel_spec.rb' + - 'spec/lib/sidebars/groups/menus/packages_registries_menu_spec.rb' + - 'spec/lib/sidebars/groups/super_sidebar_menus/analyze_menu_spec.rb' + - 'spec/lib/sidebars/groups/super_sidebar_menus/build_menu_spec.rb' + - 'spec/lib/sidebars/groups/super_sidebar_menus/deploy_menu_spec.rb' + - 'spec/lib/sidebars/groups/super_sidebar_menus/manage_menu_spec.rb' + - 'spec/lib/sidebars/groups/super_sidebar_menus/operations_menu_spec.rb' + - 'spec/lib/sidebars/groups/super_sidebar_menus/plan_menu_spec.rb' + - 'spec/lib/sidebars/groups/super_sidebar_menus/secure_menu_spec.rb' + - 'spec/lib/sidebars/groups/super_sidebar_panel_spec.rb' + - 'spec/lib/sidebars/menu_item_spec.rb' + - 'spec/lib/sidebars/menu_spec.rb' + - 'spec/lib/sidebars/organizations/menus/manage_menu_spec.rb' + - 'spec/lib/sidebars/organizations/menus/settings_menu_spec.rb' + - 'spec/lib/sidebars/organizations/panel_spec.rb' + - 'spec/lib/sidebars/organizations/super_sidebar_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/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/repository_menu_spec.rb' + - 'spec/lib/sidebars/projects/menus/settings_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/panel_spec.rb' + - 'spec/lib/sidebars/projects/super_sidebar_menus/analyze_menu_spec.rb' + - 'spec/lib/sidebars/projects/super_sidebar_menus/build_menu_spec.rb' + - 'spec/lib/sidebars/projects/super_sidebar_menus/code_menu_spec.rb' + - 'spec/lib/sidebars/projects/super_sidebar_menus/deploy_menu_spec.rb' + - 'spec/lib/sidebars/projects/super_sidebar_menus/manage_menu_spec.rb' + - 'spec/lib/sidebars/projects/super_sidebar_menus/monitor_menu_spec.rb' + - 'spec/lib/sidebars/projects/super_sidebar_menus/operations_menu_spec.rb' + - 'spec/lib/sidebars/projects/super_sidebar_menus/plan_menu_spec.rb' + - 'spec/lib/sidebars/projects/super_sidebar_menus/secure_menu_spec.rb' + - 'spec/lib/sidebars/projects/super_sidebar_panel_spec.rb' + - 'spec/lib/sidebars/static_menu_spec.rb' + - 'spec/lib/sidebars/uncategorized_menu_spec.rb' + - 'spec/lib/sidebars/user_profile/panel_spec.rb' + - 'spec/lib/sidebars/user_settings/menus/access_tokens_menu_spec.rb' + - 'spec/lib/sidebars/user_settings/menus/comment_templates_menu_spec.rb' + - 'spec/lib/sidebars/user_settings/menus/password_menu_spec.rb' + - 'spec/lib/sidebars/user_settings/panel_spec.rb' + - 'spec/lib/sidebars/your_work/menus/organizations_menu_spec.rb' + - 'spec/lib/sidebars/your_work/panel_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/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/uploaded_file_spec.rb' + - 'spec/mailers/devise_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/imports_spec.rb' + - 'spec/mailers/emails/issues_spec.rb' + - 'spec/mailers/emails/merge_requests_spec.rb' + - 'spec/mailers/emails/service_desk_spec.rb' + - 'spec/mailers/notify_spec.rb' + - 'spec/metrics_server/metrics_server_spec.rb' + - 'spec/migrations/20221028022627_add_index_on_password_last_changed_at_to_user_details_spec.rb' + - 'spec/migrations/20221101032600_add_text_limit_to_default_preferred_language_on_application_settings_spec.rb' + - 'spec/migrations/20221210154044_update_active_billable_users_index_spec.rb' + - 'spec/migrations/20221221110733_remove_temp_index_for_project_statistics_upload_size_migration_spec.rb' + - 'spec/migrations/20230714015909_add_index_for_member_expiring_query_spec.rb' + - 'spec/migrations/drop_packages_events_table_spec.rb' + - 'spec/models/ability_spec.rb' + - 'spec/models/abuse/trust_score_spec.rb' + - 'spec/models/abuse_report_spec.rb' + - 'spec/models/active_session_spec.rb' + - 'spec/models/ai/service_access_token_spec.rb' + - 'spec/models/alert_management/alert_spec.rb' + - 'spec/models/alerting/project_alerting_setting_spec.rb' + - 'spec/models/analytics/usage_trends/measurement_spec.rb' + - 'spec/models/application_setting_spec.rb' + - 'spec/models/audit_event_spec.rb' + - 'spec/models/aws/role_spec.rb' + - 'spec/models/blob_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/go_mod_spec.rb' + - 'spec/models/blob_viewer/license_spec.rb' + - 'spec/models/blob_viewer/markup_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/bulk_imports/entity_spec.rb' + - 'spec/models/bulk_imports/export_status_spec.rb' + - 'spec/models/bulk_imports/export_upload_spec.rb' + - 'spec/models/bulk_imports/file_transfer/group_config_spec.rb' + - 'spec/models/bulk_imports/file_transfer/project_config_spec.rb' + - 'spec/models/chat_name_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_runner_session_spec.rb' + - 'spec/models/ci/build_spec.rb' + - 'spec/models/ci/build_trace_chunk_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_spec.rb' + - 'spec/models/ci/daily_build_group_report_result_spec.rb' + - 'spec/models/ci/external_pull_request_spec.rb' + - 'spec/models/ci/group_spec.rb' + - 'spec/models/ci/group_variable_spec.rb' + - 'spec/models/ci/job_annotation_spec.rb' + - 'spec/models/ci/job_artifact_spec.rb' + - 'spec/models/ci/job_token/allowlist_spec.rb' + - 'spec/models/ci/job_token/project_scope_link_spec.rb' + - 'spec/models/ci/job_token/scope_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_message_spec.rb' + - 'spec/models/ci/pipeline_schedule_spec.rb' + - 'spec/models/ci/pipeline_spec.rb' + - 'spec/models/ci/processable_spec.rb' + - 'spec/models/ci/ref_spec.rb' + - 'spec/models/ci/resource_group_spec.rb' + - 'spec/models/ci/runner_spec.rb' + - 'spec/models/ci/secure_file_spec.rb' + - 'spec/models/ci/stage_spec.rb' + - 'spec/models/ci/variable_spec.rb' + - 'spec/models/clusters/agent_spec.rb' + - 'spec/models/clusters/agents/authorizations/ci_access/implicit_authorization_spec.rb' + - 'spec/models/clusters/agents/authorizations/user_access/group_authorization_spec.rb' + - 'spec/models/clusters/agents/authorizations/user_access/project_authorization_spec.rb' + - 'spec/models/clusters/cluster_spec.rb' + - 'spec/models/clusters/platforms/kubernetes_spec.rb' + - 'spec/models/clusters/providers/aws_spec.rb' + - 'spec/models/commit_collection_spec.rb' + - 'spec/models/commit_status_spec.rb' + - 'spec/models/compare_spec.rb' + - 'spec/models/concerns/approvable_spec.rb' + - 'spec/models/concerns/as_cte_spec.rb' + - 'spec/models/concerns/atomic_internal_id_spec.rb' + - 'spec/models/concerns/checksummable_spec.rb' + - 'spec/models/concerns/chronic_duration_attribute_spec.rb' + - 'spec/models/concerns/ci/has_variable_spec.rb' + - 'spec/models/concerns/ci/maskable_spec.rb' + - 'spec/models/concerns/ci/partitionable_spec.rb' + - 'spec/models/concerns/clusters/agents/authorizations/user_access/scopes_spec.rb' + - 'spec/models/concerns/deployment_platform_spec.rb' + - 'spec/models/concerns/discussion_on_diff_spec.rb' + - 'spec/models/concerns/exportable_spec.rb' + - 'spec/models/concerns/featurable_spec.rb' + - 'spec/models/concerns/from_set_operator_spec.rb' + - 'spec/models/concerns/has_environment_scope_spec.rb' + - 'spec/models/concerns/ignorable_columns_spec.rb' + - 'spec/models/concerns/issuable_spec.rb' + - 'spec/models/concerns/mentionable_spec.rb' + - 'spec/models/concerns/noteable_spec.rb' + - 'spec/models/concerns/packages/downloadable_spec.rb' + - 'spec/models/concerns/partitioned_table_spec.rb' + - 'spec/models/concerns/reactive_caching_spec.rb' + - 'spec/models/concerns/recoverable_by_any_email_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/runners_token_prefixable_spec.rb' + - 'spec/models/concerns/spammable_spec.rb' + - 'spec/models/concerns/stepable_spec.rb' + - 'spec/models/concerns/subquery_spec.rb' + - 'spec/models/concerns/token_authenticatable_spec.rb' + - 'spec/models/concerns/token_authenticatable_strategies/encrypted_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/customer_relations/issue_contact_spec.rb' + - 'spec/models/cycle_analytics/project_level_stage_adapter_spec.rb' + - 'spec/models/deploy_key_spec.rb' + - 'spec/models/deploy_keys_project_spec.rb' + - 'spec/models/deploy_token_spec.rb' + - 'spec/models/deployment_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/repository_spec.rb' + - 'spec/models/design_management/version_spec.rb' + - 'spec/models/diff_discussion_spec.rb' + - 'spec/models/diff_note_spec.rb' + - 'spec/models/diff_viewer/server_side_spec.rb' + - 'spec/models/discussion_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_spec.rb' + - 'spec/models/error_tracking/project_error_tracking_setting_spec.rb' + - 'spec/models/event_collection_spec.rb' + - 'spec/models/group_deploy_key_spec.rb' + - 'spec/models/group_spec.rb' + - 'spec/models/hooks/web_hook_log_spec.rb' + - 'spec/models/hooks/web_hook_spec.rb' + - 'spec/models/import_export_upload_spec.rb' + - 'spec/models/import_failure_spec.rb' + - 'spec/models/incident_management/project_incident_management_setting_spec.rb' + - 'spec/models/instance_configuration_spec.rb' + - 'spec/models/instance_metadata/kas_spec.rb' + - 'spec/models/instance_metadata_spec.rb' + - 'spec/models/integration_spec.rb' + - 'spec/models/integrations/apple_app_store_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/deployment_message_spec.rb' + - 'spec/models/integrations/chat_message/group_mention_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/clickup_spec.rb' + - 'spec/models/integrations/confluence_spec.rb' + - 'spec/models/integrations/custom_issue_tracker_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/ewm_spec.rb' + - 'spec/models/integrations/external_wiki_spec.rb' + - 'spec/models/integrations/gitlab_slack_application_spec.rb' + - 'spec/models/integrations/google_play_spec.rb' + - 'spec/models/integrations/integration_list_spec.rb' + - 'spec/models/integrations/irker_spec.rb' + - 'spec/models/integrations/jenkins_spec.rb' + - 'spec/models/integrations/jira_spec.rb' + - 'spec/models/integrations/mattermost_slash_commands_spec.rb' + - 'spec/models/integrations/pipelines_email_spec.rb' + - 'spec/models/integrations/pivotaltracker_spec.rb' + - 'spec/models/integrations/pushover_spec.rb' + - 'spec/models/integrations/redmine_spec.rb' + - 'spec/models/integrations/shimo_spec.rb' + - 'spec/models/integrations/squash_tm_spec.rb' + - 'spec/models/integrations/teamcity_spec.rb' + - 'spec/models/integrations/telegram_spec.rb' + - 'spec/models/integrations/youtrack_spec.rb' + - 'spec/models/integrations/zentao_spec.rb' + - 'spec/models/internal_id_spec.rb' + - 'spec/models/issue/metrics_spec.rb' + - 'spec/models/issue_email_participant_spec.rb' + - 'spec/models/issue_spec.rb' + - 'spec/models/jira_connect_installation_spec.rb' + - 'spec/models/jira_import_state_spec.rb' + - 'spec/models/label_priority_spec.rb' + - 'spec/models/legacy_diff_discussion_spec.rb' + - 'spec/models/lfs_download_object_spec.rb' + - 'spec/models/lfs_object_spec.rb' + - 'spec/models/lfs_objects_project_spec.rb' + - 'spec/models/loose_foreign_keys/modification_tracker_spec.rb' + - 'spec/models/member_spec.rb' + - 'spec/models/merge_request_diff_commit_spec.rb' + - 'spec/models/merge_request_diff_spec.rb' + - 'spec/models/merge_request_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_spec.rb' + - 'spec/models/ml/experiment_spec.rb' + - 'spec/models/ml/model_spec.rb' + - 'spec/models/namespace/package_setting_spec.rb' + - 'spec/models/namespace/traversal_hierarchy_spec.rb' + - 'spec/models/namespace_setting_spec.rb' + - 'spec/models/namespace_spec.rb' + - 'spec/models/note_spec.rb' + - 'spec/models/notification_recipient_spec.rb' + - 'spec/models/notification_setting_spec.rb' + - 'spec/models/operations/feature_flag_spec.rb' + - 'spec/models/operations/feature_flags_client_spec.rb' + - 'spec/models/packages/dependency_link_spec.rb' + - 'spec/models/packages/dependency_spec.rb' + - 'spec/models/packages/npm/metadata_cache_spec.rb' + - 'spec/models/packages/nuget/metadatum_spec.rb' + - 'spec/models/packages/package_file_spec.rb' + - 'spec/models/packages/package_spec.rb' + - 'spec/models/packages/rpm/repository_file_spec.rb' + - 'spec/models/pages_domain_spec.rb' + - 'spec/models/personal_access_token_spec.rb' + - 'spec/models/plan_limits_spec.rb' + - 'spec/models/project_authorization_spec.rb' + - 'spec/models/project_ci_cd_setting_spec.rb' + - 'spec/models/project_feature_spec.rb' + - 'spec/models/project_import_state_spec.rb' + - 'spec/models/project_label_spec.rb' + - 'spec/models/project_setting_spec.rb' + - 'spec/models/project_spec.rb' + - 'spec/models/project_wiki_spec.rb' + - 'spec/models/projects/branch_rule_spec.rb' + - 'spec/models/projects/data_transfer_spec.rb' + - 'spec/models/projects/import_export/relation_export_spec.rb' + - 'spec/models/projects/import_export/relation_export_upload_spec.rb' + - 'spec/models/projects/project_topic_spec.rb' + - 'spec/models/projects/topic_spec.rb' + - 'spec/models/prometheus_alert_event_spec.rb' + - 'spec/models/prometheus_alert_spec.rb' + - 'spec/models/prometheus_metric_spec.rb' + - 'spec/models/protected_branch_spec.rb' + - 'spec/models/release_highlight_spec.rb' + - 'spec/models/releases/source_spec.rb' + - 'spec/models/remote_mirror_spec.rb' + - 'spec/models/repository_spec.rb' + - 'spec/models/resource_label_event_spec.rb' + - 'spec/models/resource_state_event_spec.rb' + - 'spec/models/sent_notification_spec.rb' + - 'spec/models/service_desk/custom_email_credential_spec.rb' + - 'spec/models/service_desk/custom_email_verification_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_spec.rb' + - 'spec/models/snippet_statistics_spec.rb' + - 'spec/models/state_note_spec.rb' + - 'spec/models/subscription_spec.rb' + - 'spec/models/suggestion_spec.rb' + - 'spec/models/system/broadcast_message_spec.rb' + - 'spec/models/terraform/state_spec.rb' + - 'spec/models/terraform/state_version_spec.rb' + - 'spec/models/timelog_spec.rb' + - 'spec/models/todo_spec.rb' + - 'spec/models/tree_spec.rb' + - 'spec/models/upload_spec.rb' + - 'spec/models/uploads/fog_spec.rb' + - 'spec/models/uploads/local_spec.rb' + - 'spec/models/user_custom_attribute_spec.rb' + - 'spec/models/user_interacted_project_spec.rb' + - 'spec/models/user_spec.rb' + - 'spec/models/user_status_spec.rb' + - 'spec/models/users/credit_card_validation_spec.rb' + - 'spec/models/users/merge_request_interaction_spec.rb' + - 'spec/models/users/namespace_commit_email_spec.rb' + - 'spec/models/web_ide_terminal_spec.rb' + - 'spec/models/wiki_page/meta_spec.rb' + - 'spec/models/wiki_page_spec.rb' + - 'spec/models/work_items/type_spec.rb' + - 'spec/models/x509_certificate_spec.rb' + - 'spec/models/zoom_meeting_spec.rb' + - 'spec/policies/concerns/policy_actor_spec.rb' + - 'spec/policies/group_deploy_keys_group_policy_spec.rb' + - 'spec/policies/project_policy_spec.rb' + - 'spec/presenters/blobs/unfold_presenter_spec.rb' + - 'spec/presenters/ci/build_presenter_spec.rb' + - 'spec/presenters/ci/pipeline_artifacts/code_coverage_presenter_spec.rb' + - 'spec/presenters/ci/pipeline_presenter_spec.rb' + - 'spec/presenters/ci/trigger_presenter_spec.rb' + - 'spec/presenters/clusterable_presenter_spec.rb' + - 'spec/presenters/commit_presenter_spec.rb' + - 'spec/presenters/commit_status_presenter_spec.rb' + - 'spec/presenters/deploy_key_presenter_spec.rb' + - 'spec/presenters/dev_ops_report/metric_presenter_spec.rb' + - 'spec/presenters/gitlab/blame_presenter_spec.rb' + - 'spec/presenters/issue_presenter_spec.rb' + - 'spec/presenters/key_presenter_spec.rb' + - 'spec/presenters/merge_request_presenter_spec.rb' + - 'spec/presenters/ml/candidate_details_presenter_spec.rb' + - 'spec/presenters/ml/candidates_csv_presenter_spec.rb' + - 'spec/presenters/packages/composer/packages_presenter_spec.rb' + - 'spec/presenters/packages/helm/index_presenter_spec.rb' + - 'spec/presenters/packages/nuget/package_metadata_presenter_spec.rb' + - 'spec/presenters/packages/nuget/packages_metadata_presenter_spec.rb' + - 'spec/presenters/projects/import_export/project_export_presenter_spec.rb' + - 'spec/presenters/projects/security/configuration_presenter_spec.rb' + - 'spec/presenters/sentry_error_presenter_spec.rb' + - 'spec/presenters/snippet_blob_presenter_spec.rb' + - 'spec/presenters/snippet_presenter_spec.rb' + - 'spec/presenters/terraform/modules_presenter_spec.rb' + - 'spec/requests/abuse_reports_controller_spec.rb' + - 'spec/requests/admin/abuse_reports_controller_spec.rb' + - 'spec/requests/admin/projects_controller_spec.rb' + - 'spec/requests/api/alert_management_alerts_spec.rb' + - 'spec/requests/api/api_spec.rb' + - 'spec/requests/api/ci/job_artifacts_spec.rb' + - 'spec/requests/api/ci/jobs_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/runners_delete_spec.rb' + - 'spec/requests/api/ci/runners_reset_registration_token_spec.rb' + - 'spec/requests/api/commit_statuses_spec.rb' + - 'spec/requests/api/commits_spec.rb' + - 'spec/requests/api/composer_packages_spec.rb' + - 'spec/requests/api/container_repositories_spec.rb' + - 'spec/requests/api/deploy_keys_spec.rb' + - 'spec/requests/api/deploy_tokens_spec.rb' + - 'spec/requests/api/deployments_spec.rb' + - 'spec/requests/api/feature_flags_spec.rb' + - 'spec/requests/api/freeze_periods_spec.rb' + - 'spec/requests/api/geo_spec.rb' + - 'spec/requests/api/graphql/container_repository/container_repository_details_spec.rb' + - 'spec/requests/api/graphql/environments/deployments_spec.rb' + - 'spec/requests/api/graphql/gitlab_schema_spec.rb' + - 'spec/requests/api/graphql/group/container_repositories_spec.rb' + - 'spec/requests/api/graphql/group/data_transfer_spec.rb' + - 'spec/requests/api/graphql/group/dependency_proxy_blobs_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/timelogs_spec.rb' + - 'spec/requests/api/graphql/groups_query_spec.rb' + - 'spec/requests/api/graphql/mutations/achievements/award_spec.rb' + - 'spec/requests/api/graphql/mutations/achievements/create_spec.rb' + - 'spec/requests/api/graphql/mutations/achievements/delete_spec.rb' + - 'spec/requests/api/graphql/mutations/achievements/delete_user_achievement_spec.rb' + - 'spec/requests/api/graphql/mutations/achievements/revoke_spec.rb' + - 'spec/requests/api/graphql/mutations/achievements/update_spec.rb' + - 'spec/requests/api/graphql/mutations/achievements/update_user_achievement_priorities_spec.rb' + - 'spec/requests/api/graphql/mutations/admin/abuse_report_labels/create_spec.rb' + - 'spec/requests/api/graphql/mutations/boards/destroy_spec.rb' + - 'spec/requests/api/graphql/mutations/ci/pipeline_trigger/create_spec.rb' + - 'spec/requests/api/graphql/mutations/ci/pipeline_trigger/delete_spec.rb' + - 'spec/requests/api/graphql/mutations/ci/pipeline_trigger/update_spec.rb' + - 'spec/requests/api/graphql/mutations/ci/runners_registration_token/reset_spec.rb' + - 'spec/requests/api/graphql/mutations/container_registry/protection/rule/create_spec.rb' + - 'spec/requests/api/graphql/mutations/container_repository/destroy_tags_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/labels/create_spec.rb' + - 'spec/requests/api/graphql/mutations/packages/protection/rule/create_spec.rb' + - 'spec/requests/api/graphql/mutations/packages/protection/rule/delete_spec.rb' + - 'spec/requests/api/graphql/mutations/snippets/create_spec.rb' + - 'spec/requests/api/graphql/mutations/snippets/update_spec.rb' + - 'spec/requests/api/graphql/namespace/package_settings_spec.rb' + - 'spec/requests/api/graphql/namespace_query_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/ci_access_authorized_agents_spec.rb' + - 'spec/requests/api/graphql/project/container_repositories_spec.rb' + - 'spec/requests/api/graphql/project/data_transfer_spec.rb' + - 'spec/requests/api/graphql/project/deployment_spec.rb' + - 'spec/requests/api/graphql/project/environments_spec.rb' + - 'spec/requests/api/graphql/project/packages_cleanup_policy_spec.rb' + - 'spec/requests/api/graphql/project/packages_protection_rules_spec.rb' + - 'spec/requests/api/graphql/project/user_access_authorized_agents_spec.rb' + - 'spec/requests/api/graphql_spec.rb' + - 'spec/requests/api/group_container_repositories_spec.rb' + - 'spec/requests/api/group_import_spec.rb' + - 'spec/requests/api/group_packages_spec.rb' + - 'spec/requests/api/groups_spec.rb' + - 'spec/requests/api/helpers_spec.rb' + - 'spec/requests/api/integrations/slack/events_spec.rb' + - 'spec/requests/api/integrations/slack/interactions_spec.rb' + - 'spec/requests/api/internal/base_spec.rb' + - 'spec/requests/api/internal/container_registry/migration_spec.rb' + - 'spec/requests/api/internal/workhorse_spec.rb' + - 'spec/requests/api/maven_packages_spec.rb' + - 'spec/requests/api/notes_spec.rb' + - 'spec/requests/api/npm_project_packages_spec.rb' + - 'spec/requests/api/project_container_repositories_spec.rb' + - 'spec/requests/api/project_import_spec.rb' + - 'spec/requests/api/project_job_token_scope_spec.rb' + - 'spec/requests/api/project_packages_spec.rb' + - 'spec/requests/api/pypi_packages_spec.rb' + - 'spec/requests/api/releases_spec.rb' + - 'spec/requests/api/rubygem_packages_spec.rb' + - 'spec/requests/api/snippets_spec.rb' + - 'spec/requests/api/terraform/modules/v1/packages_spec.rb' + - 'spec/requests/groups/settings/access_tokens_controller_spec.rb' + - 'spec/requests/health_controller_spec.rb' + - 'spec/requests/ide_controller_spec.rb' + - 'spec/requests/import/gitlab_projects_controller_spec.rb' + - 'spec/requests/lfs_http_spec.rb' + - 'spec/requests/projects/cluster_agents_controller_spec.rb' + - 'spec/requests/projects/google_cloud/databases_controller_spec.rb' + - 'spec/requests/projects/incidents_controller_spec.rb' + - 'spec/requests/projects/issue_links_controller_spec.rb' + - 'spec/requests/projects/merge_requests/diffs_spec.rb' + - 'spec/requests/projects/network_controller_spec.rb' + - 'spec/requests/projects/packages/package_files_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/terraform/services_controller_spec.rb' + - 'spec/requests/time_tracking/timelogs_controller_spec.rb' + - 'spec/requests/users/group_callouts_spec.rb' + - 'spec/requests/users/namespace_visits_controller_spec.rb' + - 'spec/requests/users/project_callouts_spec.rb' + - 'spec/requests/users_controller_spec.rb' + - 'spec/rubocop/check_graceful_task_spec.rb' + - 'spec/rubocop/cop/rake/require_spec.rb' + - 'spec/rubocop/todo_dir_spec.rb' + - 'spec/scripts/api/commit_merge_requests_spec.rb' + - 'spec/scripts/api/create_merge_request_discussion_spec.rb' + - 'spec/scripts/api/create_merge_request_note_spec.rb' + - 'spec/scripts/api/get_package_and_test_job_spec.rb' + - 'spec/scripts/failed_tests_spec.rb' + - 'spec/scripts/generate_failed_package_and_test_mr_message_spec.rb' + - 'spec/scripts/generate_message_to_run_e2e_pipeline_spec.rb' + - 'spec/scripts/generate_rspec_pipeline_spec.rb' + - 'spec/scripts/lib/glfm/parse_examples_spec.rb' + - 'spec/scripts/lib/glfm/update_example_snapshots_spec.rb' + - 'spec/scripts/lib/glfm/update_specification_spec.rb' + - 'spec/scripts/lib/glfm/verify_all_generated_files_are_up_to_date_spec.rb' + - 'spec/scripts/pipeline/average_reports_spec.rb' + - 'spec/scripts/pipeline_test_report_builder_spec.rb' + - 'spec/scripts/review_apps/automated_cleanup_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/activity_pub/activity_streams_serializer_spec.rb' + - 'spec/serializers/activity_pub/project_entity_spec.rb' + - 'spec/serializers/activity_pub/release_entity_spec.rb' + - 'spec/serializers/activity_pub/releases_actor_entity_spec.rb' + - 'spec/serializers/activity_pub/releases_actor_serializer_spec.rb' + - 'spec/serializers/activity_pub/releases_outbox_serializer_spec.rb' + - 'spec/serializers/activity_pub/user_entity_spec.rb' + - 'spec/serializers/admin/abuse_report_serializer_spec.rb' + - 'spec/serializers/analytics_build_entity_spec.rb' + - 'spec/serializers/analytics_build_serializer_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/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_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/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_annotation_entity_spec.rb' + - 'spec/serializers/ci/job_entity_spec.rb' + - 'spec/serializers/ci/job_serializer_spec.rb' + - 'spec/serializers/ci/pipeline_entity_spec.rb' + - 'spec/serializers/ci/variable_entity_spec.rb' + - 'spec/serializers/cluster_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/deployment_cluster_entity_spec.rb' + - 'spec/serializers/deployment_entity_spec.rb' + - 'spec/serializers/detailed_status_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/diff_viewer_entity_spec.rb' + - 'spec/serializers/diffs_entity_spec.rb' + - 'spec/serializers/diffs_metadata_entity_spec.rb' + - 'spec/serializers/discussion_diff_file_entity_spec.rb' + - 'spec/serializers/discussion_entity_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/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/feature_flag_entity_spec.rb' + - 'spec/serializers/feature_flag_summary_entity_spec.rb' + - 'spec/serializers/feature_flag_summary_serializer_spec.rb' + - 'spec/serializers/feature_flags_client_serializer_spec.rb' + - 'spec/serializers/group_issuable_autocomplete_entity_spec.rb' + - 'spec/serializers/import/bulk_import_entity_spec.rb' + - 'spec/serializers/import/github_org_entity_spec.rb' + - 'spec/serializers/import/github_org_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/repository_entity_spec.rb' + - 'spec/serializers/integrations/harbor_serializers/tag_entity_spec.rb' + - 'spec/serializers/integrations/project_entity_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/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/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_user_entity_spec.rb' + - 'spec/serializers/merge_request_widget_commit_entity_spec.rb' + - 'spec/serializers/merge_request_widget_entity_spec.rb' + - 'spec/serializers/merge_requests/pipeline_entity_spec.rb' + - 'spec/serializers/move_to_project_entity_spec.rb' + - 'spec/serializers/namespace_basic_entity_spec.rb' + - 'spec/serializers/paginated_diff_entity_spec.rb' + - 'spec/serializers/pipeline_details_entity_spec.rb' + - 'spec/serializers/pipeline_serializer_spec.rb' + - 'spec/serializers/profile/event_entity_spec.rb' + - 'spec/serializers/project_import_entity_spec.rb' + - 'spec/serializers/project_note_entity_spec.rb' + - 'spec/serializers/project_serializer_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/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_reports_comparer_entity_spec.rb' + - 'spec/serializers/test_reports_comparer_serializer_spec.rb' + - 'spec/serializers/test_suite_comparer_entity_spec.rb' + - 'spec/serializers/test_suite_entity_spec.rb' + - 'spec/serializers/trigger_variable_entity_spec.rb' + - 'spec/serializers/user_entity_spec.rb' + - 'spec/serializers/web_ide_terminal_serializer_spec.rb' + - 'spec/services/admin/abuse_reports/moderate_user_service_spec.rb' + - 'spec/services/admin/abuse_reports/update_service_spec.rb' + - 'spec/services/admin/set_feature_flag_service_spec.rb' + - 'spec/services/application_settings/update_service_spec.rb' + - 'spec/services/applications/create_service_spec.rb' + - 'spec/services/auto_merge/base_service_spec.rb' + - 'spec/services/auto_merge_service_spec.rb' + - 'spec/services/award_emojis/base_service_spec.rb' + - 'spec/services/branches/create_service_spec.rb' + - 'spec/services/bulk_imports/archive_extraction_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/get_importable_data_service_spec.rb' + - 'spec/services/bulk_imports/lfs_objects_export_service_spec.rb' + - 'spec/services/bulk_imports/process_service_spec.rb' + - 'spec/services/bulk_imports/relation_batch_export_service_spec.rb' + - 'spec/services/bulk_imports/relation_export_service_spec.rb' + - 'spec/services/bulk_imports/tree_export_service_spec.rb' + - 'spec/services/bulk_push_event_payload_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/archive_trace_service_spec.rb' + - 'spec/services/ci/build_report_result_service_spec.rb' + - 'spec/services/ci/compare_accessibility_reports_service_spec.rb' + - 'spec/services/ci/compare_codequality_reports_service_spec.rb' + - 'spec/services/ci/create_downstream_pipeline_service_spec.rb' + - 'spec/services/ci/create_pipeline_service/custom_config_content_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/parameter_content_spec.rb' + - 'spec/services/ci/create_web_ide_terminal_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/drop_pipeline_service_spec.rb' + - 'spec/services/ci/expire_pipeline_cache_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_terraform_reports_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_batch_service_spec.rb' + - 'spec/services/ci/job_artifacts/update_unknown_locked_status_service_spec.rb' + - 'spec/services/ci/parse_annotations_artifact_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/cancel_redundant_pipelines_service_spec.rb' + - 'spec/services/ci/pipeline_schedule_service_spec.rb' + - 'spec/services/ci/play_build_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/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/run_scheduled_build_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/clusters/agent_tokens/create_service_spec.rb' + - 'spec/services/clusters/agent_tokens/revoke_service_spec.rb' + - 'spec/services/clusters/agent_tokens/track_usage_service_spec.rb' + - 'spec/services/clusters/agents/authorizations/ci_access/refresh_service_spec.rb' + - 'spec/services/clusters/agents/authorizations/user_access/refresh_service_spec.rb' + - 'spec/services/clusters/agents/create_activity_event_service_spec.rb' + - 'spec/services/clusters/agents/delete_expired_events_service_spec.rb' + - 'spec/services/clusters/build_kubernetes_namespace_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/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/compare_service_spec.rb' + - 'spec/services/concerns/exclusive_lease_guard_spec.rb' + - 'spec/services/concerns/rate_limited_service_spec.rb' + - 'spec/services/container_expiration_policies/cleanup_service_spec.rb' + - 'spec/services/container_registry/protection/create_rule_service_spec.rb' + - 'spec/services/database/consistency_check_service_spec.rb' + - 'spec/services/dependency_proxy/auth_token_service_spec.rb' + - 'spec/services/dependency_proxy/head_manifest_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/update_environment_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/design_user_notes_count_service_spec.rb' + - 'spec/services/design_management/move_designs_service_spec.rb' + - 'spec/services/discussions/capture_diff_note_position_service_spec.rb' + - 'spec/services/discussions/update_diff_position_service_spec.rb' + - 'spec/services/environments/auto_stop_service_spec.rb' + - 'spec/services/environments/canary_ingress/update_service_spec.rb' + - 'spec/services/environments/create_service_spec.rb' + - 'spec/services/environments/destroy_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/environments/stop_stale_service_spec.rb' + - 'spec/services/environments/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/export_csv/base_service_spec.rb' + - 'spec/services/feature_flags/create_service_spec.rb' + - 'spec/services/feature_flags/destroy_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_push_service_spec.rb' + - 'spec/services/git/wiki_push_service_spec.rb' + - 'spec/services/google_cloud/fetch_google_ip_list_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/groups/autocomplete_service_spec.rb' + - 'spec/services/groups/create_service_spec.rb' + - 'spec/services/groups/deploy_tokens/revoke_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/merge_requests_count_service_spec.rb' + - 'spec/services/groups/open_issues_count_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/ide/schemas_config_service_spec.rb' + - 'spec/services/import/bitbucket_server_service_spec.rb' + - 'spec/services/import/fogbugz_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/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/integrations/slack_interactions/incident_management/incident_modal_opened_service_spec.rb' + - 'spec/services/integrations/test/project_service_spec.rb' + - 'spec/services/issuable/common_system_notes_service_spec.rb' + - 'spec/services/issuable/import_csv/base_service_spec.rb' + - 'spec/services/issue_links/list_service_spec.rb' + - 'spec/services/issues/build_service_spec.rb' + - 'spec/services/issues/clone_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/relative_position_rebalancing_service_spec.rb' + - 'spec/services/issues/reorder_service_spec.rb' + - 'spec/services/issues/update_service_spec.rb' + - 'spec/services/jira/requests/projects/list_service_spec.rb' + - 'spec/services/jira_connect/sync_service_spec.rb' + - 'spec/services/jira_connect_installations/destroy_service_spec.rb' + - 'spec/services/jira_connect_subscriptions/create_service_spec.rb' + - 'spec/services/jira_import/start_import_service_spec.rb' + - 'spec/services/jira_import/users_importer_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/lfs/file_transformer_spec.rb' + - 'spec/services/lfs/lock_file_service_spec.rb' + - 'spec/services/lfs/locks_finder_service_spec.rb' + - 'spec/services/lfs/unlock_file_service_spec.rb' + - 'spec/services/markdown_content_rewriter_service_spec.rb' + - 'spec/services/mattermost/create_team_service_spec.rb' + - 'spec/services/members/invitation_reminder_email_service_spec.rb' + - 'spec/services/members/update_service_spec.rb' + - 'spec/services/merge_requests/add_context_service_spec.rb' + - 'spec/services/merge_requests/base_service_spec.rb' + - 'spec/services/merge_requests/build_service_spec.rb' + - 'spec/services/merge_requests/conflicts/resolve_service_spec.rb' + - 'spec/services/merge_requests/delete_non_latest_diffs_service_spec.rb' + - 'spec/services/merge_requests/export_csv_service_spec.rb' + - 'spec/services/merge_requests/merge_orchestration_service_spec.rb' + - 'spec/services/merge_requests/mergeability_check_batch_service_spec.rb' + - 'spec/services/merge_requests/mergeability_check_service_spec.rb' + - 'spec/services/merge_requests/post_merge_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/resolved_discussion_notification_service_spec.rb' + - 'spec/services/merge_requests/retarget_chain_service_spec.rb' + - 'spec/services/merge_requests/update_service_spec.rb' + - 'spec/services/milestones/closed_issues_count_service_spec.rb' + - 'spec/services/milestones/create_service_spec.rb' + - 'spec/services/milestones/issues_count_service_spec.rb' + - 'spec/services/milestones/merge_requests_count_service_spec.rb' + - 'spec/services/ml/experiment_tracking/candidate_repository_spec.rb' + - 'spec/services/ml/experiment_tracking/experiment_repository_spec.rb' + - 'spec/services/ml/experiment_tracking/handle_candidate_gitlab_metadata_service_spec.rb' + - 'spec/services/note_summary_spec.rb' + - 'spec/services/notes/create_service_spec.rb' + - 'spec/services/notes/post_process_service_spec.rb' + - 'spec/services/notification_recipients/builder/default_spec.rb' + - 'spec/services/notification_recipients/builder/new_note_spec.rb' + - 'spec/services/notification_service_spec.rb' + - 'spec/services/packages/composer/composer_json_service_spec.rb' + - 'spec/services/packages/composer/create_package_service_spec.rb' + - 'spec/services/packages/conan/create_package_file_service_spec.rb' + - 'spec/services/packages/conan/search_service_spec.rb' + - 'spec/services/packages/create_dependency_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/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/parse_debian822_service_spec.rb' + - 'spec/services/packages/debian/process_package_file_service_spec.rb' + - 'spec/services/packages/go/create_package_service_spec.rb' + - 'spec/services/packages/helm/extract_file_metadata_service_spec.rb' + - 'spec/services/packages/mark_package_files_for_destruction_service_spec.rb' + - 'spec/services/packages/mark_packages_for_destruction_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/ml_model/find_or_create_package_service_spec.rb' + - 'spec/services/packages/npm/create_metadata_cache_service_spec.rb' + - 'spec/services/packages/npm/create_package_service_spec.rb' + - 'spec/services/packages/npm/create_tag_service_spec.rb' + - 'spec/services/packages/npm/generate_metadata_service_spec.rb' + - 'spec/services/packages/nuget/create_dependency_service_spec.rb' + - 'spec/services/packages/nuget/extract_metadata_content_service_spec.rb' + - 'spec/services/packages/nuget/extract_metadata_file_service_spec.rb' + - 'spec/services/packages/nuget/metadata_extraction_service_spec.rb' + - 'spec/services/packages/nuget/odata_package_entry_service_spec.rb' + - 'spec/services/packages/nuget/process_package_file_service_spec.rb' + - 'spec/services/packages/nuget/symbols/create_symbol_files_service_spec.rb' + - 'spec/services/packages/nuget/symbols/extract_signature_and_checksum_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/protection/create_rule_service_spec.rb' + - 'spec/services/packages/protection/delete_rule_service_spec.rb' + - 'spec/services/packages/pypi/create_package_service_spec.rb' + - 'spec/services/packages/remove_tag_service_spec.rb' + - 'spec/services/packages/rpm/parse_package_service_spec.rb' + - 'spec/services/packages/rpm/repository_metadata/build_filelist_xml_service_spec.rb' + - 'spec/services/packages/rpm/repository_metadata/build_other_xml_service_spec.rb' + - 'spec/services/packages/rpm/repository_metadata/build_primary_xml_service_spec.rb' + - 'spec/services/packages/rpm/repository_metadata/build_repomd_xml_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_tags_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/product_analytics/build_activity_graph_service_spec.rb' + - 'spec/services/product_analytics/build_graph_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/auto_devops/disable_service_spec.rb' + - 'spec/services/projects/autocomplete_service_spec.rb' + - 'spec/services/projects/batch_open_issues_count_service_spec.rb' + - 'spec/services/projects/batch_open_merge_requests_count_service_spec.rb' + - 'spec/services/projects/branches_by_mode_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/cleanup_tags_service_spec.rb' + - 'spec/services/projects/container_repository/third_party/delete_tags_service_spec.rb' + - 'spec/services/projects/create_from_template_service_spec.rb' + - 'spec/services/projects/detect_repository_languages_service_spec.rb' + - 'spec/services/projects/fetch_statistics_increment_service_spec.rb' + - 'spec/services/projects/fork_service_spec.rb' + - 'spec/services/projects/forks_count_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/import_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/prometheus/alerts/notify_service_spec.rb' + - 'spec/services/projects/prometheus/metrics/destroy_service_spec.rb' + - 'spec/services/projects/readme_renderer_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_repository_storage_service_spec.rb' + - 'spec/services/releases/create_service_spec.rb' + - 'spec/services/releases/destroy_service_spec.rb' + - 'spec/services/repositories/destroy_service_spec.rb' + - 'spec/services/repositories/replicate_service_spec.rb' + - 'spec/services/reset_project_cache_service_spec.rb' + - 'spec/services/resource_access_tokens/create_service_spec.rb' + - 'spec/services/search_service_spec.rb' + - 'spec/services/service_ping/submit_service_ping_service_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/update_repository_storage_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/submodules/update_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_note_service_spec.rb' + - 'spec/services/system_notes/alert_management_service_spec.rb' + - 'spec/services/system_notes/commit_service_spec.rb' + - 'spec/services/system_notes/design_management_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/destroy_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/timelogs/delete_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/topics/merge_service_spec.rb' + - 'spec/services/two_factor/destroy_service_spec.rb' + - 'spec/services/update_container_registry_info_service_spec.rb' + - 'spec/services/upload_service_spec.rb' + - 'spec/services/uploads/destroy_service_spec.rb' + - 'spec/services/user_agent_detail_service_spec.rb' + - 'spec/services/users/activity_service_spec.rb' + - 'spec/services/users/approve_service_spec.rb' + - 'spec/services/users/assigned_issues_count_service_spec.rb' + - 'spec/services/users/in_product_marketing_email_records_spec.rb' + - 'spec/services/users/keys_count_service_spec.rb' + - 'spec/services/users/reject_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/update_canonical_email_service_spec.rb' + - 'spec/services/users/update_service_spec.rb' + - 'spec/services/vs_code/settings/create_or_update_service_spec.rb' + - 'spec/services/vs_code/settings/delete_service_spec.rb' + - 'spec/services/web_hooks/destroy_service_spec.rb' + - 'spec/services/webauthn/destroy_service_spec.rb' + - 'spec/services/wiki_pages/base_service_spec.rb' + - 'spec/services/wiki_pages/event_create_service_spec.rb' + - 'spec/services/work_items/callbacks/award_emoji_spec.rb' + - 'spec/services/work_items/export_csv_service_spec.rb' + - 'spec/services/work_items/import_csv_service_spec.rb' + - 'spec/services/work_items/parent_links/base_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/prepare_import_csv_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/current_user_todos_service/update_service_spec.rb' + - 'spec/services/work_items/widgets/hierarchy_service/update_service_spec.rb' + - 'spec/spam/concerns/has_spam_action_response_fields_spec.rb' + - 'spec/support/helpers/cycle_analytics_helpers/test_generation.rb' + - 'spec/support/shared_contexts/lib/gitlab/sidekiq_logging/structured_logger_shared_context.rb' + - 'spec/support/shared_contexts/lib/gitlab/sidekiq_middleware/server_metrics_shared_context.rb' + - 'spec/support/shared_examples/uploaders/object_storage_shared_examples.rb' + - 'spec/support_specs/database/without_check_constraint_spec.rb' + - 'spec/support_specs/helpers/graphql_helpers_spec.rb' + - 'spec/support_specs/helpers/html_escaped_helpers_spec.rb' + - 'spec/support_specs/helpers/stub_feature_flags_spec.rb' + - 'spec/tasks/gitlab/artifacts/migrate_rake_spec.rb' + - 'spec/tasks/gitlab/audit_event_types/check_docs_task_spec.rb' + - 'spec/tasks/gitlab/audit_event_types/compile_docs_task_spec.rb' + - 'spec/tasks/gitlab/check_rake_spec.rb' + - 'spec/tasks/gitlab/ci_secure_files/migrate_rake_spec.rb' + - 'spec/tasks/gitlab/cleanup_rake_spec.rb' + - 'spec/tasks/gitlab/container_registry_rake_spec.rb' + - 'spec/tasks/gitlab/db/decomposition/connection_status_rake_spec.rb' + - 'spec/tasks/gitlab/db_rake_spec.rb' + - 'spec/tasks/gitlab/gitaly_rake_spec.rb' + - 'spec/tasks/gitlab/lfs/migrate_rake_spec.rb' + - 'spec/tasks/gitlab/pages_rake_spec.rb' + - 'spec/tasks/gitlab/seed/group_seed_rake_spec.rb' + - 'spec/tasks/gitlab/snippets_rake_spec.rb' + - 'spec/tasks/gitlab/terraform/migrate_rake_spec.rb' + - 'spec/tasks/gitlab/x509/update_rake_spec.rb' + - 'spec/tooling/danger/analytics_instrumentation_spec.rb' + - 'spec/tooling/danger/stable_branch_spec.rb' + - 'spec/tooling/docs/deprecation_handling_spec.rb' + - 'spec/tooling/graphql/docs/renderer_spec.rb' + - 'spec/tooling/lib/tooling/crystalball/coverage_lines_strategy_spec.rb' + - 'spec/tooling/lib/tooling/find_changes_spec.rb' + - 'spec/tooling/lib/tooling/find_codeowners_spec.rb' + - 'spec/tooling/lib/tooling/find_files_using_feature_flags_spec.rb' + - 'spec/tooling/lib/tooling/find_tests_spec.rb' + - 'spec/tooling/lib/tooling/gettext_extractor_spec.rb' + - 'spec/tooling/lib/tooling/helm3_client_spec.rb' + - 'spec/tooling/lib/tooling/helpers/file_handler_spec.rb' + - 'spec/tooling/lib/tooling/helpers/predictive_tests_helper_spec.rb' + - 'spec/tooling/lib/tooling/job_metrics_spec.rb' + - 'spec/tooling/lib/tooling/kubernetes_client_spec.rb' + - 'spec/tooling/lib/tooling/mappings/graphql_base_type_mappings_spec.rb' + - 'spec/tooling/lib/tooling/mappings/js_to_system_specs_mappings_spec.rb' + - 'spec/tooling/lib/tooling/mappings/partial_to_views_mappings_spec.rb' + - 'spec/tooling/lib/tooling/mappings/view_to_js_mappings_spec.rb' + - 'spec/tooling/lib/tooling/mappings/view_to_system_specs_mappings_spec.rb' + - 'spec/tooling/lib/tooling/predictive_tests_spec.rb' + - 'spec/tooling/lib/tooling/test_map_generator_spec.rb' + - 'spec/tooling/lib/tooling/test_map_packer_spec.rb' + - 'spec/tooling/quality/test_level_spec.rb' + - 'spec/uploaders/ci/secure_file_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/namespace_file_uploader_spec.rb' + - 'spec/uploaders/object_storage/cdn/google_cdn_spec.rb' + - 'spec/uploaders/object_storage/cdn_spec.rb' + - 'spec/uploaders/object_storage/s3_spec.rb' + - 'spec/uploaders/object_storage_spec.rb' + - 'spec/uploaders/packages/debian/distribution_release_file_uploader_spec.rb' + - 'spec/uploaders/packages/npm/metadata_cache_uploader_spec.rb' + - 'spec/uploaders/packages/nuget/symbol_uploader_spec.rb' + - 'spec/uploaders/terraform/state_uploader_spec.rb' + - 'spec/validators/addressable_url_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/import/gitlab_projects/remote_file_validator_spec.rb' + - 'spec/validators/iso8601_date_validator_spec.rb' + - 'spec/validators/json_schema_validator_spec.rb' + - 'spec/validators/named_ecdsa_key_validator_spec.rb' + - 'spec/validators/nested_attributes_duplicates_validator_spec.rb' + - 'spec/validators/qualified_domain_array_validator_spec.rb' + - 'spec/validators/sha_validator_spec.rb' + - 'spec/views/admin/application_settings/_ci_cd.html.haml_spec.rb' + - 'spec/views/admin/application_settings/_package_registry.html.haml_spec.rb' + - 'spec/views/devise/confirmations/almost_there.html.haml_spec.rb' + - 'spec/views/devise/sessions/new.html.haml_spec.rb' + - 'spec/views/layouts/fullscreen.html.haml_spec.rb' + - 'spec/views/layouts/organization.html.haml_spec.rb' + - 'spec/workers/analytics/usage_trends/count_job_trigger_worker_spec.rb' + - 'spec/workers/analytics/usage_trends/counter_job_worker_spec.rb' + - 'spec/workers/approve_blocked_pending_approval_users_worker_spec.rb' + - 'spec/workers/authorized_project_update/periodic_recalculate_worker_spec.rb' + - 'spec/workers/auto_devops/disable_worker_spec.rb' + - 'spec/workers/auto_merge_process_worker_spec.rb' + - 'spec/workers/bulk_imports/entity_worker_spec.rb' + - 'spec/workers/bulk_imports/finish_batched_pipeline_worker_spec.rb' + - 'spec/workers/bulk_imports/stuck_import_worker_spec.rb' + - 'spec/workers/ci/archive_trace_worker_spec.rb' + - 'spec/workers/ci/archive_traces_cron_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/daily_build_group_report_results_worker_spec.rb' + - 'spec/workers/ci/delete_unit_tests_worker_spec.rb' + - 'spec/workers/ci/drop_pipeline_worker_spec.rb' + - 'spec/workers/ci/initial_pipeline_process_worker_spec.rb' + - 'spec/workers/ci/merge_requests/cleanup_ref_worker_spec.rb' + - 'spec/workers/ci/parse_secure_file_metadata_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_cleanup_ref_worker_spec.rb' + - 'spec/workers/ci/ref_delete_unlock_artifacts_worker_spec.rb' + - 'spec/workers/ci/refs/unlock_previous_pipelines_worker_spec.rb' + - 'spec/workers/ci/resource_groups/assign_resource_from_resource_group_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_platform_metrics_update_cron_worker_spec.rb' + - 'spec/workers/cleanup_container_repository_worker_spec.rb' + - 'spec/workers/clusters/agents/delete_expired_events_worker_spec.rb' + - 'spec/workers/clusters/agents/notify_git_push_worker_spec.rb' + - 'spec/workers/clusters/cleanup/project_namespace_worker_spec.rb' + - 'spec/workers/clusters/cleanup/service_account_worker_spec.rb' + - 'spec/workers/concerns/packages/cleanup_artifact_worker_spec.rb' + - 'spec/workers/concerns/packages/error_handling_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/counters/cleanup_refresh_worker_spec.rb' + - 'spec/workers/create_commit_signature_worker_spec.rb' + - 'spec/workers/database/drop_detached_partitions_worker_spec.rb' + - 'spec/workers/database/partition_management_worker_spec.rb' + - 'spec/workers/dependency_proxy/cleanup_dependency_proxy_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/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/detect_repository_languages_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/file_hook_worker_spec.rb' + - 'spec/workers/flush_counter_increments_worker_spec.rb' + - 'spec/workers/gitlab/github_gists_import/import_gist_worker_spec.rb' + - 'spec/workers/gitlab/github_import/pull_requests/import_merged_by_worker_spec.rb' + - 'spec/workers/gitlab/github_import/pull_requests/import_review_worker_spec.rb' + - 'spec/workers/gitlab/jira_import/import_issue_worker_spec.rb' + - 'spec/workers/gitlab_service_ping_worker_spec.rb' + - 'spec/workers/google_cloud/create_cloudsql_instance_worker_spec.rb' + - 'spec/workers/group_export_worker_spec.rb' + - 'spec/workers/group_import_worker_spec.rb' + - 'spec/workers/groups/update_two_factor_requirement_for_members_worker_spec.rb' + - 'spec/workers/integrations/create_external_cross_reference_worker_spec.rb' + - 'spec/workers/integrations/irker_worker_spec.rb' + - 'spec/workers/issuable/label_links_destroy_worker_spec.rb' + - 'spec/workers/issuable/related_links_create_worker_spec.rb' + - 'spec/workers/issuable_export_csv_worker_spec.rb' + - 'spec/workers/issuables/clear_groups_issue_counter_worker_spec.rb' + - 'spec/workers/jira_connect/send_uninstalled_hook_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/member_invitation_reminder_emails_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_pipeline_worker_spec.rb' + - 'spec/workers/merge_requests/ensure_prepared_worker_spec.rb' + - 'spec/workers/merge_requests/mergeability_check_batch_worker_spec.rb' + - 'spec/workers/merge_requests/update_head_pipeline_worker_spec.rb' + - 'spec/workers/merge_worker_spec.rb' + - 'spec/workers/namespaces/update_root_statistics_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/object_storage/delete_stale_direct_uploads_worker_spec.rb' + - 'spec/workers/onboarding/issue_created_worker_spec.rb' + - 'spec/workers/packages/cleanup/delete_orphaned_dependencies_worker_spec.rb' + - 'spec/workers/packages/cleanup_package_file_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/cleanup_dangling_package_files_worker_spec.rb' + - 'spec/workers/packages/debian/generate_distribution_worker_spec.rb' + - 'spec/workers/packages/debian/process_package_file_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/npm/create_metadata_cache_worker_spec.rb' + - 'spec/workers/packages/nuget/extraction_worker_spec.rb' + - 'spec/workers/packages/rubygems/extraction_worker_spec.rb' + - 'spec/workers/partition_creation_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/process_commit_worker_spec.rb' + - 'spec/workers/project_cache_worker_spec.rb' + - 'spec/workers/project_export_worker_spec.rb' + - 'spec/workers/projects/after_import_worker_spec.rb' + - 'spec/workers/projects/finalize_project_statistics_refresh_worker_spec.rb' + - 'spec/workers/projects/git_garbage_collect_worker_spec.rb' + - 'spec/workers/projects/import_export/parallel_project_export_worker_spec.rb' + - 'spec/workers/projects/post_creation_worker_spec.rb' + - 'spec/workers/projects/schedule_refresh_build_artifacts_size_statistics_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/rebase_worker_spec.rb' + - 'spec/workers/redis_migration_worker_spec.rb' + - 'spec/workers/remote_mirror_notification_worker_spec.rb' + - 'spec/workers/remove_expired_group_links_worker_spec.rb' + - 'spec/workers/repository_check/batch_worker_spec.rb' + - 'spec/workers/repository_check/dispatch_worker_spec.rb' + - 'spec/workers/repository_check/single_repository_worker_spec.rb' + - 'spec/workers/repository_import_worker_spec.rb' + - 'spec/workers/repository_update_remote_mirror_worker_spec.rb' + - 'spec/workers/schedule_merge_request_cleanup_refs_worker_spec.rb' + - 'spec/workers/stage_update_worker_spec.rb' + - 'spec/workers/stuck_ci_jobs_worker_spec.rb' + - 'spec/workers/system_hook_push_worker_spec.rb' + - 'spec/workers/terraform/states/destroy_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/upload_checksum_worker_spec.rb' + - 'spec/workers/users/create_statistics_worker_spec.rb' + - 'spec/workers/users/migrate_records_to_ghost_user_in_batches_worker_spec.rb' + - 'spec/workers/web_hook_worker_spec.rb' + - 'spec/workers/web_hooks/log_destroy_worker_spec.rb' + - 'spec/workers/work_items/import_work_items_csv_worker_spec.rb' + - 'spec/workers/x509_certificate_revoke_worker_spec.rb' diff --git a/.rubocop_todo/rspec/specify_expected.yml b/.rubocop_todo/rspec/specify_expected.yml new file mode 100644 index 00000000000..9a4c7a769d7 --- /dev/null +++ b/.rubocop_todo/rspec/specify_expected.yml @@ -0,0 +1,54 @@ +--- +# Cop supports --autocorrect. +RSpec/SpecifyExpected: + Details: grace period + Exclude: + - 'ee/spec/controllers/groups/analytics/repository_analytics_controller_spec.rb' + - 'ee/spec/graphql/ee/types/branch_protection_type_spec.rb' + - 'ee/spec/graphql/ee/types/branch_protections/merge_access_level_type_spec.rb' + - 'ee/spec/graphql/ee/types/branch_protections/push_access_level_type_spec.rb' + - 'ee/spec/graphql/ee/types/branch_protections/unprotect_access_level_type_spec.rb' + - 'ee/spec/graphql/mutations/boards/epic_boards/create_spec.rb' + - 'ee/spec/graphql/mutations/boards/epic_boards/update_spec.rb' + - 'ee/spec/lib/code_suggestions/instructions_extractor_spec.rb' + - 'ee/spec/lib/ee/sidebars/projects/menus/analytics_menu_spec.rb' + - 'ee/spec/lib/ee/sidebars/projects/menus/settings_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/wiki_menu_spec.rb' + - 'ee/spec/models/ee/users/merge_request_interaction_spec.rb' + - 'ee/spec/services/security/security_orchestration_policies/update_violations_service_spec.rb' + - 'spec/finders/ci/freeze_periods_finder_spec.rb' + - 'spec/finders/groups/user_groups_finder_spec.rb' + - 'spec/graphql/resolvers/users/groups_resolver_spec.rb' + - 'spec/graphql/types/access_levels/deploy_key_type_spec.rb' + - 'spec/graphql/types/branch_protections/merge_access_level_type_spec.rb' + - 'spec/graphql/types/branch_protections/push_access_level_type_spec.rb' + - 'spec/graphql/types/branch_rules/branch_protection_type_spec.rb' + - 'spec/lib/banzai/filter/references/design_reference_filter_spec.rb' + - 'spec/lib/gitlab/color_spec.rb' + - 'spec/lib/sidebars/admin/menus/monitoring_menu_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/issues_menu_spec.rb' + - 'spec/lib/sidebars/groups/menus/scope_menu_spec.rb' + - 'spec/lib/sidebars/groups/menus/settings_menu_spec.rb' + - 'spec/lib/sidebars/projects/menus/analytics_menu_spec.rb' + - 'spec/lib/sidebars/projects/menus/deployments_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/monitor_menu_spec.rb' + - 'spec/lib/sidebars/projects/menus/project_information_menu_spec.rb' + - 'spec/lib/sidebars/projects/menus/scope_menu_spec.rb' + - 'spec/lib/sidebars/projects/menus/settings_menu_spec.rb' + - 'spec/models/application_setting_spec.rb' + - 'spec/models/concerns/subquery_spec.rb' + - 'spec/models/integrations/jira_tracker_data_spec.rb' + - 'spec/models/issue_spec.rb' + - 'spec/models/project_spec.rb' + - 'spec/models/user_spec.rb' + - 'spec/policies/group_policy_spec.rb' + - 'spec/policies/merge_request_policy_spec.rb' + - 'spec/policies/project_policy_spec.rb' + - 'spec/requests/api/graphql/current_user/groups_query_spec.rb' diff --git a/.rubocop_todo/style/accessor_grouping.yml b/.rubocop_todo/style/accessor_grouping.yml index c2cab738ccb..4587df5d52d 100644 --- a/.rubocop_todo/style/accessor_grouping.yml +++ b/.rubocop_todo/style/accessor_grouping.yml @@ -1,6 +1,7 @@ --- # Cop supports --autocorrect. Style/AccessorGrouping: + Details: grace period Exclude: - 'app/finders/template_finder.rb' - 'app/models/commit.rb' @@ -54,6 +55,7 @@ Style/AccessorGrouping: - 'lib/gitlab/graphql/connection_redaction.rb' - 'lib/gitlab/http_io.rb' - 'lib/gitlab/import_export/project/tree_restorer.rb' + - 'lib/gitlab/search/abuse_detection.rb' - 'lib/gitlab/sidekiq_middleware/duplicate_jobs/duplicate_job.rb' - 'lib/gitlab/suggestions/file_suggestion.rb' - 'lib/gitlab/tracking/event_definition.rb' @@ -64,6 +66,5 @@ Style/AccessorGrouping: - 'lib/object_storage/direct_upload.rb' - 'lib/safe_zip/entry.rb' - 'lib/system_check/simple_executor.rb' - - 'lib/uploaded_file.rb' - 'qa/qa/ee/resource/geo/node.rb' - 'qa/qa/ee/resource/settings/elasticsearch.rb' diff --git a/.rubocop_todo/style/arguments_forwarding.yml b/.rubocop_todo/style/arguments_forwarding.yml new file mode 100644 index 00000000000..f51e582b5a0 --- /dev/null +++ b/.rubocop_todo/style/arguments_forwarding.yml @@ -0,0 +1,173 @@ +--- +# Cop supports --autocorrect. +Style/ArgumentsForwarding: + Details: grace period + Exclude: + - 'app/controllers/chaos_controller.rb' + - 'app/finders/clusters/knative_services_finder.rb' + - 'app/finders/group_finder.rb' + - 'app/graphql/mutations/ci/runner/create.rb' + - 'app/graphql/mutations/design_management/move.rb' + - 'app/graphql/mutations/todos/mark_all_done.rb' + - 'app/graphql/resolvers/concerns/caching_array_resolver.rb' + - 'app/helpers/emoji_helper.rb' + - 'app/helpers/issuables_helper.rb' + - 'app/helpers/namespaces_helper.rb' + - 'app/helpers/notify_helper.rb' + - 'app/helpers/routing/groups/members_helper.rb' + - 'app/helpers/routing/pipeline_schedules_helper.rb' + - 'app/helpers/routing/projects/members_helper.rb' + - 'app/helpers/routing/projects_helper.rb' + - 'app/helpers/routing/snippets_helper.rb' + - 'app/helpers/wiki_helper.rb' + - 'app/helpers/workhorse_helper.rb' + - 'app/models/application_record.rb' + - 'app/models/ci/build.rb' + - 'app/models/commit.rb' + - 'app/models/commit_collection.rb' + - 'app/models/concerns/as_cte.rb' + - 'app/models/concerns/async_devise_email.rb' + - 'app/models/concerns/optionally_search.rb' + - 'app/models/concerns/presentable.rb' + - 'app/models/concerns/prometheus_adapter.rb' + - 'app/models/concerns/reactive_caching.rb' + - 'app/models/merge_request.rb' + - 'app/models/merge_request_context_commit.rb' + - 'app/models/merge_request_context_commit_diff_file.rb' + - 'app/models/network/commit.rb' + - 'app/presenters/gitlab/blame_presenter.rb' + - 'app/services/ci/prometheus_metrics/observe_histograms_service.rb' + - 'app/services/concerns/rate_limited_service.rb' + - 'app/services/issuable_base_service.rb' + - 'app/services/members/creator_service.rb' + - 'app/services/notification_recipients/build_service.rb' + - 'app/services/notification_service.rb' + - 'app/services/users/update_service.rb' + - 'app/workers/authorized_keys_worker.rb' + - 'app/workers/concerns/limited_capacity/worker.rb' + - 'app/workers/concerns/reactive_cacheable_worker.rb' + - 'app/workers/concerns/reenqueuer.rb' + - 'app/workers/gitlab/github_import/refresh_import_jid_worker.rb' + - 'app/workers/pages_worker.rb' + - 'config/initializers/6_labkit_middleware.rb' + - 'config/initializers/active_record_table_definition.rb' + - 'config/initializers/postgresql_cte.rb' + - 'ee/app/controllers/groups/analytics/application_controller.rb' + - 'ee/app/helpers/ee/gitlab_routing_helper.rb' + - 'ee/app/helpers/ee/saml_providers_helper.rb' + - 'ee/app/models/ee/group.rb' + - 'ee/app/models/elastic/migration_record.rb' + - 'ee/app/models/license.rb' + - 'ee/app/services/search/reindexing_service.rb' + - 'ee/db/geo/migrate/20210504143244_add_verification_to_merge_request_diff_registry.rb' + - 'ee/lib/analytics/forecasting/holt_winters_optimizer.rb' + - 'ee/lib/analytics/merge_request_metrics_refresh.rb' + - 'ee/lib/ee/gitlab/url_builder.rb' + - 'ee/lib/elastic/latest/application_class_proxy.rb' + - 'ee/lib/elastic/latest/query_context.rb' + - 'ee/lib/elastic/latest/wiki_class_proxy.rb' + - 'ee/lib/gitlab/elastic/expr_name.rb' + - 'ee/lib/gitlab/geo/replicator.rb' + - 'ee/lib/gitlab/insights/reducers/base_reducer.rb' + - 'ee/spec/lib/ee/gitlab/background_migration/migrate_approver_to_approval_rules_spec.rb' + - 'ee/spec/lib/gitlab/auth/saml/membership_updater_spec.rb' + - 'ee/spec/lib/gitlab/status_page/storage/s3_client_spec.rb' + - 'ee/spec/models/protected_environment_spec.rb' + - 'ee/spec/requests/api/graphql/boards/epic_lists_query_spec.rb' + - 'ee/spec/services/status_page/publish_service_spec.rb' + - 'lib/api/helpers.rb' + - 'lib/api/helpers/caching.rb' + - 'lib/api/helpers/pagination.rb' + - 'lib/atlassian/jira_connect/jwt/asymmetric.rb' + - 'lib/error_tracking/sentry_client/issue.rb' + - 'lib/gitlab/auth/ldap/adapter.rb' + - 'lib/gitlab/auth/ldap/dn.rb' + - 'lib/gitlab/cache.rb' + - 'lib/gitlab/ci/parsers.rb' + - 'lib/gitlab/ci/pipeline/expression/token.rb' + - 'lib/gitlab/config/entry/configurable.rb' + - 'lib/gitlab/config/entry/simplifiable.rb' + - 'lib/gitlab/current_settings.rb' + - 'lib/gitlab/database/load_balancing/connection_proxy.rb' + - 'lib/gitlab/database/migration_helpers.rb' + - 'lib/gitlab/git/diff.rb' + - 'lib/gitlab/git/repository.rb' + - 'lib/gitlab/gitaly_client/storage_settings.rb' + - 'lib/gitlab/gitaly_client/with_feature_flag_actors.rb' + - 'lib/gitlab/github_import/client.rb' + - 'lib/gitlab/gon_helper.rb' + - 'lib/gitlab/graphql/authorize/authorize_resource.rb' + - 'lib/gitlab/graphql/mount_mutation.rb' + - 'lib/gitlab/import_export/attribute_cleaner.rb' + - 'lib/gitlab/import_export/base/relation_factory.rb' + - 'lib/gitlab/import_export/file_importer.rb' + - 'lib/gitlab/import_export/json/ndjson_reader.rb' + - 'lib/gitlab/import_export/json/ndjson_writer.rb' + - 'lib/gitlab/import_export/saver.rb' + - 'lib/gitlab/import_export/version_checker.rb' + - 'lib/gitlab/jira/http_client.rb' + - 'lib/gitlab/kubernetes/kubeconfig/template.rb' + - 'lib/gitlab/legacy_github_import/client.rb' + - 'lib/gitlab/memory/watchdog/configuration.rb' + - 'lib/gitlab/metrics/prometheus.rb' + - 'lib/gitlab/nav/top_nav_view_model_builder.rb' + - 'lib/gitlab/quick_actions/dsl.rb' + - 'lib/gitlab/rack_attack.rb' + - 'lib/gitlab/redis/multi_store.rb' + - 'lib/gitlab/repository_cache.rb' + - 'lib/gitlab/tracking.rb' + - 'lib/gitlab/url_blocker.rb' + - 'lib/gitlab/url_builder.rb' + - 'lib/gitlab/usage/metrics/query.rb' + - 'lib/gitlab_settings/settings.rb' + - 'lib/kramdown/parser/atlassian_document_format.rb' + - 'lib/uploaded_file.rb' + - 'metrics_server/metrics_server.rb' + - 'qa/qa/ee/resource/audit_events.rb' + - 'qa/qa/ee/runtime/path.rb' + - 'qa/qa/page/base.rb' + - 'qa/qa/page/view.rb' + - 'qa/qa/resource/api_fabricator.rb' + - 'qa/qa/resource/base.rb' + - 'qa/qa/resource/group_base.rb' + - 'qa/qa/resource/group_runner.rb' + - 'qa/qa/resource/project.rb' + - 'qa/qa/resource/project_runner.rb' + - 'qa/qa/resource/sandbox.rb' + - 'qa/qa/runtime/feature.rb' + - 'qa/qa/runtime/path.rb' + - 'qa/qa/runtime/release.rb' + - 'qa/qa/scenario/actable.rb' + - 'qa/qa/scenario/template.rb' + - 'qa/qa/specs/helpers/rspec.rb' + - 'qa/qa/support/matchers/have_text.rb' + - 'qa/qa/support/page/logging.rb' + - 'qa/qa/tools/delete_subgroups.rb' + - 'spec/features/projects/environments/environments_spec.rb' + - 'spec/graphql/features/authorization_spec.rb' + - 'spec/helpers/application_helper_spec.rb' + - 'spec/helpers/timeboxes_helper_spec.rb' + - 'spec/lib/gitlab/ci/build/artifacts/metadata_spec.rb' + - 'spec/lib/gitlab/ci/status/bridge/factory_spec.rb' + - 'spec/lib/gitlab/database/load_balancing/load_balancer_spec.rb' + - 'spec/lib/gitlab/graphql/markdown_field_spec.rb' + - 'spec/lib/gitlab/import_export/group/tree_saver_spec.rb' + - 'spec/lib/gitlab/pagination/offset_pagination_spec.rb' + - 'spec/models/concerns/cache_markdown_field_spec.rb' + - 'spec/requests/api/go_proxy_spec.rb' + - 'spec/requests/api/graphql/project/error_tracking/sentry_errors_request_spec.rb' + - 'spec/services/ci/expire_pipeline_cache_service_spec.rb' + - 'spec/services/ci/retry_pipeline_service_spec.rb' + - 'spec/support/factory_bot.rb' + - 'spec/support/helpers/api_helpers.rb' + - 'spec/support/helpers/database/trigger_helpers.rb' + - 'spec/support/helpers/fast_rails_root.rb' + - 'spec/support/helpers/features/dom_helpers.rb' + - 'spec/support/helpers/git_http_helpers.rb' + - 'spec/support/helpers/graphql_helpers.rb' + - 'spec/support/helpers/harbor_helper.rb' + - 'spec/support/helpers/login_helpers.rb' + - 'spec/support/helpers/merge_request_diff_helpers.rb' + - 'spec/support/helpers/next_instance_of.rb' + - 'spec/support/helpers/reactive_caching_helpers.rb' + - 'spec/support/shared_examples/features/2fa_shared_examples.rb' diff --git a/.rubocop_todo/style/block_delimiters.yml b/.rubocop_todo/style/block_delimiters.yml new file mode 100644 index 00000000000..09f96781560 --- /dev/null +++ b/.rubocop_todo/style/block_delimiters.yml @@ -0,0 +1,66 @@ +--- +# Cop supports --autocorrect. +Style/BlockDelimiters: + Details: grace period + Exclude: + - 'ee/spec/finders/security/related_pipelines_finder_spec.rb' + - 'ee/spec/finders/security/vulnerability_reads_finder_spec.rb' + - 'ee/spec/helpers/compliance_management/compliance_framework/group_settings_helper_spec.rb' + - 'ee/spec/helpers/ee/labels_helper_spec.rb' + - 'ee/spec/helpers/ee/projects/security/api_fuzzing_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/lib/ee/gitlab/observability_spec.rb' + - 'ee/spec/lib/gitlab/auth/smartcard/san_extension_spec.rb' + - 'ee/spec/lib/gitlab/package_metadata/connector/base_data_file_spec.rb' + - 'ee/spec/lib/gitlab/package_metadata/connector/gcp_spec.rb' + - 'ee/spec/lib/gitlab/package_metadata/connector/offline_spec.rb' + - 'ee/spec/models/analytics/cycle_analytics/value_stream_setting_spec.rb' + - 'ee/spec/models/audit_events/streaming/instance_event_type_filter_spec.rb' + - 'ee/spec/models/ee/design_management/repository_spec.rb' + - 'ee/spec/models/ee/projects/wiki_repository_spec.rb' + - 'ee/spec/models/geo/design_management_repository_state_spec.rb' + - 'ee/spec/models/geo/wiki_repository_state_spec.rb' + - 'ee/spec/models/merge_request_spec.rb' + - 'ee/spec/models/namespace_setting_spec.rb' + - 'ee/spec/models/protected_environments/deploy_access_level_spec.rb' + - 'ee/spec/models/security/finding_spec.rb' + - 'ee/spec/models/vulnerabilities/feedback_spec.rb' + - 'ee/spec/services/gitlab_subscriptions/reconciliations/calculate_seat_count_data_service_spec.rb' + - 'ee/spec/services/package_metadata/advisory_data_object_spec.rb' + - 'ee/spec/services/package_metadata/compressed_package_data_object_spec.rb' + - 'ee/spec/services/package_metadata/data_object_fabricator_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/vulnerability_counting_service_spec.rb' + - 'spec/helpers/abuse_reports_helper_spec.rb' + - 'spec/helpers/admin/user_actions_helper_spec.rb' + - 'spec/helpers/merge_requests_helper_spec.rb' + - 'spec/helpers/projects/cluster_agents_helper_spec.rb' + - 'spec/lib/gitlab/ci/build/rules_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/data_builder/build_spec.rb' + - 'spec/lib/gitlab/git/wraps_gitaly_errors_spec.rb' + - 'spec/lib/release_highlights/validator/entry_spec.rb' + - 'spec/models/abuse_report_spec.rb' + - 'spec/models/ci/group_variable_spec.rb' + - 'spec/models/container_registry/protection/rule_spec.rb' + - 'spec/models/environment_status_spec.rb' + - 'spec/models/hooks/web_hook_spec.rb' + - 'spec/models/incident_management/timeline_event_tag_spec.rb' + - 'spec/models/packages/npm/metadatum_spec.rb' + - 'spec/models/packages/protection/rule_spec.rb' + - 'spec/models/users/in_product_marketing_email_spec.rb' + - 'spec/models/users/phone_number_validation_spec.rb' + - 'spec/models/users/project_callout_spec.rb' + - 'spec/presenters/tree_entry_presenter_spec.rb' + - 'spec/requests/api/graphql/mutations/container_registry/protection/rule/create_spec.rb' + - 'spec/requests/jira_connect/subscriptions_controller_spec.rb' + - 'spec/services/packages/nuget/extract_remote_metadata_file_service_spec.rb' + - 'spec/services/packages/protection/delete_rule_service_spec.rb' diff --git a/.rubocop_todo/style/guard_clause.yml b/.rubocop_todo/style/guard_clause.yml index 7c70fde48f3..74051fa5944 100644 --- a/.rubocop_todo/style/guard_clause.yml +++ b/.rubocop_todo/style/guard_clause.yml @@ -1,6 +1,7 @@ --- # Cop supports --autocorrect. Style/GuardClause: + Details: grace period Exclude: - 'app/controllers/admin/users_controller.rb' - 'app/controllers/application_controller.rb' @@ -13,7 +14,6 @@ Style/GuardClause: - 'app/controllers/concerns/enforces_admin_authentication.rb' - 'app/controllers/concerns/enforces_two_factor_authentication.rb' - 'app/controllers/concerns/impersonation.rb' - - 'app/controllers/concerns/issuable_collections.rb' - 'app/controllers/groups/application_controller.rb' - 'app/controllers/groups_controller.rb' - 'app/controllers/import/gitea_controller.rb' @@ -55,7 +55,6 @@ Style/GuardClause: - 'app/graphql/resolvers/blobs_resolver.rb' - 'app/graphql/resolvers/board_list_issues_resolver.rb' - 'app/graphql/resolvers/concerns/board_item_filterable.rb' - - 'app/graphql/resolvers/concerns/time_frame_arguments.rb' - 'app/graphql/resolvers/projects/jira_projects_resolver.rb' - 'app/graphql/types/ci/job_type.rb' - 'app/graphql/types/permission_types/base_permission_type.rb' @@ -74,7 +73,6 @@ Style/GuardClause: - 'app/models/appearance.rb' - 'app/models/application_setting.rb' - 'app/models/bulk_imports/entity.rb' - - 'app/models/ci/build.rb' - 'app/models/ci/build_trace.rb' - 'app/models/ci/job_artifact.rb' - 'app/models/ci/job_token/project_scope_link.rb' @@ -83,10 +81,12 @@ Style/GuardClause: - 'app/models/clusters/cluster.rb' - 'app/models/clusters/platforms/kubernetes.rb' - 'app/models/commit_range.rb' + - 'app/models/concerns/atomic_internal_id.rb' - 'app/models/concerns/avatarable.rb' - 'app/models/concerns/bulk_insert_safe.rb' - 'app/models/concerns/cache_markdown_field.rb' - 'app/models/concerns/cacheable_attributes.rb' + - 'app/models/concerns/cascading_namespace_setting_attribute.rb' - 'app/models/concerns/deprecated_assignee.rb' - 'app/models/concerns/has_wiki_page_meta_attributes.rb' - 'app/models/concerns/issuable_link.rb' @@ -134,14 +134,12 @@ Style/GuardClause: - 'app/models/project_import_state.rb' - 'app/models/project_label.rb' - 'app/models/project_setting.rb' - - 'app/models/protected_branch/push_access_level.rb' - 'app/models/repository.rb' - 'app/models/sent_notification.rb' - 'app/models/sentry_issue.rb' - 'app/models/service_desk_setting.rb' - 'app/models/snippet_input_action.rb' - 'app/models/user.rb' - - 'app/models/users/in_product_marketing_email.rb' - 'app/models/work_item.rb' - 'app/models/work_items/parent_link.rb' - 'app/presenters/ci/pipeline_presenter.rb' @@ -171,8 +169,6 @@ Style/GuardClause: - 'app/services/files/delete_service.rb' - 'app/services/files/multi_service.rb' - 'app/services/files/update_service.rb' - - 'app/services/git/branch_hooks_service.rb' - - 'app/services/groups/group_links/update_service.rb' - 'app/services/groups/import_export/export_service.rb' - 'app/services/groups/transfer_service.rb' - 'app/services/groups/update_service.rb' @@ -189,7 +185,6 @@ Style/GuardClause: - 'app/services/merge_requests/add_spent_time_service.rb' - 'app/services/merge_requests/base_service.rb' - 'app/services/merge_requests/build_service.rb' - - 'app/services/merge_requests/merge_base_service.rb' - 'app/services/merge_requests/merge_service.rb' - 'app/services/merge_requests/mergeability_check_service.rb' - 'app/services/merge_requests/push_options_handler_service.rb' @@ -199,7 +194,6 @@ Style/GuardClause: - 'app/services/notes/post_process_service.rb' - 'app/services/notification_recipients/builder/default.rb' - 'app/services/notification_service.rb' - - 'app/services/packages/create_event_service.rb' - 'app/services/packages/create_package_service.rb' - 'app/services/packages/nuget/search_service.rb' - 'app/services/post_receive_service.rb' @@ -309,7 +303,6 @@ Style/GuardClause: - 'ee/app/models/ee/project_group_link.rb' - 'ee/app/models/ee/project_member.rb' - 'ee/app/models/ee/user.rb' - - 'ee/app/models/epic/related_epic_link.rb' - 'ee/app/models/epic_issue.rb' - 'ee/app/models/geo_node.rb' - 'ee/app/models/geo_node_status.rb' @@ -320,7 +313,6 @@ Style/GuardClause: - 'ee/app/models/namespace_limit.rb' - 'ee/app/models/preloaders/environments/protected_environment_preloader.rb' - 'ee/app/models/protected_environment.rb' - - 'ee/app/models/protected_environments/deploy_access_level.rb' - 'ee/app/models/users_security_dashboard_project.rb' - 'ee/app/models/vulnerabilities/feedback.rb' - 'ee/app/presenters/ee/merge_request_presenter.rb' @@ -352,19 +344,16 @@ Style/GuardClause: - 'ee/app/services/ee/projects/gitlab_projects_import_service.rb' - 'ee/app/services/ee/projects/update_service.rb' - 'ee/app/services/ee/protected_branches/loggable.rb' - - 'ee/app/services/ee/wiki_pages/base_service.rb' - 'ee/app/services/epics/close_service.rb' - 'ee/app/services/epics/create_service.rb' - 'ee/app/services/epics/reopen_service.rb' - 'ee/app/services/epics/tree_reorder_service.rb' - 'ee/app/services/epics/update_service.rb' - - 'ee/app/services/geo/framework_repository_sync_service.rb' - 'ee/app/services/geo/metrics_update_service.rb' - 'ee/app/services/group_saml/group_managed_accounts/transfer_membership_service.rb' - 'ee/app/services/groups/update_repository_storage_service.rb' - 'ee/app/services/incident_management/oncall_rotations/remove_participant_service.rb' - 'ee/app/services/iterations/delete_service.rb' - - 'ee/app/services/merge_trains/check_status_service.rb' - 'ee/app/services/merge_trains/refresh_merge_request_service.rb' - 'ee/app/services/projects/update_mirror_service.rb' - 'ee/app/services/security/override_uuids_service.rb' @@ -418,7 +407,6 @@ Style/GuardClause: - 'ee/spec/features/billings/billing_plans_spec.rb' - 'ee/spec/lib/ee/gitlab/background_migration/migrate_approver_to_approval_rules_spec.rb' - 'ee/spec/support/ci/minutes_helpers.rb' - - 'haml_lint/linter/documentation_links.rb' - 'lib/api/commits.rb' - 'lib/api/feature_flags.rb' - 'lib/api/helpers.rb' @@ -432,8 +420,6 @@ Style/GuardClause: - 'lib/banzai/filter/gollum_tags_filter.rb' - 'lib/banzai/filter/references/merge_request_reference_filter.rb' - 'lib/banzai/filter/wiki_link_filter/rewriter.rb' - - 'lib/bulk_imports/clients/graphql.rb' - - 'lib/bulk_imports/pipeline/runner.rb' - 'lib/bulk_imports/projects/pipelines/project_pipeline.rb' - 'lib/container_registry/client.rb' - 'lib/feature/definition.rb' @@ -471,7 +457,6 @@ Style/GuardClause: - 'lib/gitlab/ci/pipeline/chain/validate/abilities.rb' - 'lib/gitlab/ci/pipeline/chain/validate/repository.rb' - 'lib/gitlab/ci/pipeline/expression/lexeme/base.rb' - - 'lib/gitlab/ci/pipeline/expression/lexeme/pattern.rb' - 'lib/gitlab/ci/reports/codequality_reports_comparer.rb' - 'lib/gitlab/ci/runner/backoff.rb' - 'lib/gitlab/ci/runner_upgrade_check.rb' @@ -481,7 +466,6 @@ Style/GuardClause: - 'lib/gitlab/ci/yaml_processor.rb' - 'lib/gitlab/config/entry/validators.rb' - 'lib/gitlab/daemon.rb' - - 'lib/gitlab/database/background_migration/batch_optimizer.rb' - 'lib/gitlab/database/background_migration/batched_migration_wrapper.rb' - 'lib/gitlab/database/consistency_checker.rb' - 'lib/gitlab/database/load_balancing/load_balancer.rb' @@ -535,10 +519,8 @@ Style/GuardClause: - 'lib/gitlab/legacy_github_import/issuable_formatter.rb' - 'lib/gitlab/marginalia.rb' - 'lib/gitlab/metrics/samplers/ruby_sampler.rb' - - 'lib/gitlab/metrics/subscribers/action_cable.rb' - 'lib/gitlab/metrics/subscribers/active_record.rb' - 'lib/gitlab/metrics/subscribers/external_http.rb' - - 'lib/gitlab/metrics/subscribers/rails_cache.rb' - 'lib/gitlab/metrics/web_transaction.rb' - 'lib/gitlab/middleware/read_only/controller.rb' - 'lib/gitlab/pages/deployment_update.rb' @@ -560,11 +542,9 @@ Style/GuardClause: - 'lib/gitlab/serializer/pagination.rb' - 'lib/gitlab/shell.rb' - 'lib/gitlab/sidekiq_config/cli_methods.rb' - - 'lib/gitlab/sidekiq_middleware/extra_done_log_metadata.rb' - 'lib/gitlab/sidekiq_middleware/size_limiter/compressor.rb' - 'lib/gitlab/sql/set_operator.rb' - 'lib/gitlab/url_blocker.rb' - - 'lib/gitlab/usage/metric_definition.rb' - 'lib/gitlab/usage/metrics/instrumentations/count_bulk_imports_entities_metric.rb' - 'lib/gitlab/utils/override.rb' - 'lib/gitlab/webpack/manifest.rb' @@ -607,7 +587,6 @@ Style/GuardClause: - 'spec/lib/gitlab/database/migrations/background_migration_helpers_spec.rb' - 'spec/services/issues/relative_position_rebalancing_service_spec.rb' - 'spec/services/packages/maven/metadata/append_package_file_service_spec.rb' - - 'spec/support/capybara.rb' - 'spec/support/database/prevent_cross_joins.rb' - 'spec/support/helpers/access_matchers_helpers.rb' - 'spec/support/helpers/capybara_helpers.rb' @@ -622,7 +601,6 @@ Style/GuardClause: - 'spec/support/helpers/wait_helpers.rb' - 'spec/support/import_export/export_file_helper.rb' - 'spec/support/shared_examples/features/packages_shared_examples.rb' - - 'spec/support/shared_examples/services/packages/debian/generate_distribution_shared_examples.rb' - 'spec/tooling/lib/tooling/find_codeowners_spec.rb' - 'spec/workers/container_expiration_policies/cleanup_container_repository_worker_spec.rb' - 'tooling/lib/tooling/helm3_client.rb' diff --git a/.rubocop_todo/style/percent_literal_delimiters.yml b/.rubocop_todo/style/percent_literal_delimiters.yml deleted file mode 100644 index 1db9e97b669..00000000000 --- a/.rubocop_todo/style/percent_literal_delimiters.yml +++ /dev/null @@ -1,40 +0,0 @@ ---- -# Cop supports --autocorrect. -Style/PercentLiteralDelimiters: - Exclude: - - 'metrics_server/metrics_server.rb' - - 'spec/tasks/gitlab/db_rake_spec.rb' - - 'spec/tooling/danger/customer_success_spec.rb' - - 'spec/tooling/danger/datateam_spec.rb' - - 'spec/tooling/danger/sidekiq_queues_spec.rb' - - 'spec/tooling/lib/tooling/test_map_generator_spec.rb' - - 'spec/uploaders/attachment_uploader_spec.rb' - - 'spec/uploaders/avatar_uploader_spec.rb' - - 'spec/uploaders/ci/pipeline_artifact_uploader_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/import_export_uploader_spec.rb' - - 'spec/uploaders/job_artifact_uploader_spec.rb' - - 'spec/uploaders/lfs_object_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/validators/any_field_validator_spec.rb' - - 'spec/views/layouts/_head.html.haml_spec.rb' - - 'spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb' - - 'spec/views/projects/commit/branches.html.haml_spec.rb' - - 'spec/workers/concerns/worker_context_spec.rb' - - 'spec/workers/container_registry/migration/enqueuer_worker_spec.rb' - - 'spec/workers/groups/update_statistics_worker_spec.rb' - - 'spec/workers/jira_connect/sync_branch_worker_spec.rb' - - 'spec/workers/post_receive_spec.rb' - - 'spec/workers/project_cache_worker_spec.rb' - - 'spec/workers/projects/record_target_platforms_worker_spec.rb' - - 'spec/workers/stuck_merge_jobs_worker_spec.rb' - - 'spec/workers/update_project_statistics_worker_spec.rb' diff --git a/.rubocop_todo/style/redundant_return.yml b/.rubocop_todo/style/redundant_return.yml new file mode 100644 index 00000000000..344dbbbc4cd --- /dev/null +++ b/.rubocop_todo/style/redundant_return.yml @@ -0,0 +1,102 @@ +--- +# Cop supports --autocorrect. +Style/RedundantReturn: + Details: grace period + Exclude: + - 'app/controllers/concerns/hotlink_interceptor.rb' + - 'app/controllers/concerns/issuable_collections.rb' + - 'app/controllers/concerns/notes_actions.rb' + - 'app/controllers/concerns/snippet_authorizations.rb' + - 'app/controllers/groups/labels_controller.rb' + - 'app/controllers/groups/milestones_controller.rb' + - 'app/controllers/groups/registry/repositories_controller.rb' + - 'app/controllers/groups/settings/ci_cd_controller.rb' + - 'app/controllers/groups/variables_controller.rb' + - 'app/controllers/import/bitbucket_server_controller.rb' + - 'app/controllers/import/github_controller.rb' + - 'app/controllers/profiles_controller.rb' + - 'app/controllers/projects/application_controller.rb' + - 'app/controllers/projects/artifacts_controller.rb' + - 'app/controllers/projects/blob_controller.rb' + - 'app/controllers/projects/jobs_controller.rb' + - 'app/controllers/projects/labels_controller.rb' + - 'app/controllers/projects/merge_requests/conflicts_controller.rb' + - 'app/controllers/projects/merge_requests/diffs_controller.rb' + - 'app/controllers/projects/merge_requests_controller.rb' + - 'app/controllers/projects/milestones_controller.rb' + - 'app/controllers/projects/notes_controller.rb' + - 'app/controllers/projects/pipeline_schedules_controller.rb' + - 'app/controllers/projects/pipelines_controller.rb' + - 'app/controllers/projects/refs_controller.rb' + - 'app/controllers/projects/snippets/application_controller.rb' + - 'app/controllers/projects/web_ide_terminals_controller.rb' + - 'app/controllers/sent_notifications_controller.rb' + - 'app/controllers/snippets/notes_controller.rb' + - 'app/helpers/profiles_helper.rb' + - 'app/models/clusters/cluster.rb' + - 'app/models/concerns/cascading_namespace_setting_attribute.rb' + - 'app/models/namespace.rb' + - 'app/models/namespaces/randomized_suffix_path.rb' + - 'app/models/notification_recipient.rb' + - 'app/models/packages/debian/publication.rb' + - 'app/models/releases/link.rb' + - 'app/models/work_items/widgets/hierarchy.rb' + - 'app/presenters/packages/nuget/service_index_presenter.rb' + - 'app/presenters/packages/nuget/version_helpers.rb' + - 'app/services/boards/base_item_move_service.rb' + - 'app/services/error_tracking/base_service.rb' + - 'app/services/error_tracking/issue_update_service.rb' + - 'app/services/jira_import/start_import_service.rb' + - 'app/services/releases/update_service.rb' + - 'ee/app/controllers/concerns/audit_events/enforces_valid_date_params.rb' + - 'ee/app/controllers/concerns/description_diff_actions.rb' + - 'ee/app/controllers/ee/dashboard/projects_controller.rb' + - 'ee/app/controllers/ee/projects/environments_controller.rb' + - 'ee/app/controllers/ee/projects/merge_requests_controller.rb' + - 'ee/app/controllers/groups/analytics/application_controller.rb' + - 'ee/app/controllers/groups/analytics/cycle_analytics/stages_controller.rb' + - 'ee/app/controllers/groups/analytics/cycle_analytics/summary_controller.rb' + - 'ee/app/controllers/groups/analytics/tasks_by_type_controller.rb' + - 'ee/app/controllers/groups/epics_controller.rb' + - 'ee/app/controllers/projects/integrations/jira/issues_controller.rb' + - 'ee/app/controllers/projects/integrations/zentao/issues_controller.rb' + - 'ee/app/controllers/projects/on_demand_scans_controller.rb' + - 'ee/app/controllers/projects/security/dast_site_profiles_controller.rb' + - 'ee/app/controllers/projects/vulnerability_feedback_controller.rb' + - 'ee/app/helpers/ee/application_helper.rb' + - 'ee/app/helpers/ee/boards_helper.rb' + - 'ee/app/helpers/ee/personal_access_tokens_helper.rb' + - 'ee/app/models/geo/upload_registry.rb' + - 'ee/app/serializers/vulnerabilities/feedback_entity.rb' + - 'ee/app/serializers/vulnerabilities/finding_entity.rb' + - 'ee/app/serializers/vulnerabilities/issue_link_entity.rb' + - 'ee/app/serializers/vulnerabilities/merge_request_link_entity.rb' + - 'ee/app/services/audit_events/streaming/headers/base.rb' + - 'ee/app/services/ee/post_receive_service.rb' + - 'ee/app/services/gitlab_subscriptions/user_add_on_assignments/create_service.rb' + - 'ee/app/services/security/orchestration/assign_service.rb' + - 'ee/app/services/vulnerabilities/manually_create_service.rb' + - 'ee/app/workers/ee/repository_check/batch_worker.rb' + - 'ee/app/workers/ee/repository_check/single_repository_worker.rb' + - 'ee/lib/api/dependency_proxy/packages/maven.rb' + - 'ee/lib/ee/api/entities/billable_member.rb' + - 'ee/lib/ee/gitlab/checks/push_rules/secrets_check.rb' + - 'ee/lib/gitlab/llm/chain/tools/epic_identifier/executor.rb' + - 'ee/lib/gitlab/llm/chain/tools/issue_identifier/executor.rb' + - 'lib/api/nuget_project_packages.rb' + - 'lib/api/pagination_params.rb' + - 'lib/feature/gitaly.rb' + - 'lib/gitlab/auth/database/authentication.rb' + - 'lib/gitlab/ci/parsers/coverage/sax_document.rb' + - 'lib/gitlab/database/health_status/indicators/prometheus_alert_indicator.rb' + - 'lib/gitlab/graphql/queries.rb' + - 'lib/gitlab/hotlinking_detector.rb' + - 'lib/gitlab/instrumentation_helper.rb' + - 'lib/gitlab/redis/wrapper.rb' + - 'lib/gitlab/signed_tag.rb' + - 'qa/qa/specs/helpers/context_selector.rb' + - 'qa/qa/support/formatters/allure_metadata_formatter.rb' + - 'qa/qa/support/formatters/context_formatter.rb' + - 'rubocop/cop/background_migration/dictionary_file.rb' + - 'scripts/api/get_package_and_test_job.rb' + - 'tooling/lib/tooling/mappings/graphql_base_type_mappings.rb' diff --git a/.rubocop_todo/style/string_literals_in_interpolation.yml b/.rubocop_todo/style/string_literals_in_interpolation.yml index daa9b90b177..4eced04e261 100644 --- a/.rubocop_todo/style/string_literals_in_interpolation.yml +++ b/.rubocop_todo/style/string_literals_in_interpolation.yml @@ -1,15 +1,13 @@ --- # Cop supports --autocorrect. Style/StringLiteralsInInterpolation: + Details: grace period Exclude: - - 'app/graphql/mutations/base_mutation.rb' - - 'app/helpers/colors_helper.rb' - 'app/models/application_setting_implementation.rb' - 'app/models/ci/namespace_mirror.rb' - 'app/services/draft_notes/publish_service.rb' - 'app/services/projects/create_service.rb' - 'app/validators/nested_attributes_duplicates_validator.rb' - - 'app/views/events/_event.atom.builder' - 'app/workers/concerns/application_worker.rb' - 'config/initializers/validate_database_config.rb' - 'ee/app/helpers/ee/merge_requests_helper.rb' @@ -17,8 +15,7 @@ Style/StringLiteralsInInterpolation: - 'ee/app/services/epics/tree_reorder_service.rb' - 'ee/lib/ee/api/helpers/issues_helpers.rb' - 'ee/spec/features/admin/admin_settings_spec.rb' - - 'ee/spec/features/subscriptions/expiring_subscription_message_spec.rb' - - 'ee/spec/lib/gitlab/expiring_subscription_message_spec.rb' + - 'ee/spec/lib/gitlab/llm/chain/agents/zero_shot/executor_real_requests_spec.rb' - 'lib/api/helpers/snippets_helpers.rb' - 'lib/api/validations/validators/check_assignees_count.rb' - 'lib/banzai/filter/references/abstract_reference_filter.rb' @@ -39,15 +36,12 @@ Style/StringLiteralsInInterpolation: - 'lib/tasks/gitlab/info.rake' - 'lib/tasks/gitlab/sidekiq.rake' - 'qa/qa/ee/page/component/secure_report.rb' - - 'qa/qa/ee/page/group/secure/show.rb' - 'qa/qa/resource/events/base.rb' - 'qa/qa/service/cluster_provider/base.rb' - 'qa/qa/service/cluster_provider/gcloud.rb' - - 'qa/qa/specs/helpers/context_selector.rb' - 'qa/qa/tools/generate_perf_testdata.rb' - 'rubocop/cop/migration/prevent_index_creation.rb' - 'spec/features/commits_spec.rb' - - 'spec/features/dashboard/merge_requests_spec.rb' - 'spec/features/users/login_spec.rb' - 'spec/lib/banzai/filter/references/commit_reference_filter_spec.rb' - 'spec/lib/banzai/filter/references/issue_reference_filter_spec.rb' @@ -426,7 +426,7 @@ group :development, :test do gem 'spring', '~> 4.1.0' # rubocop:todo Gemfile/MissingFeatureCategory gem 'spring-commands-rspec', '~> 1.0.4' # rubocop:todo Gemfile/MissingFeatureCategory - gem 'gitlab-styles', '~> 10.1.0', require: false # rubocop:todo Gemfile/MissingFeatureCategory + gem 'gitlab-styles', '~> 11.0.0', require: false # rubocop:todo Gemfile/MissingFeatureCategory gem 'haml_lint', '~> 0.40.0', require: false # rubocop:todo Gemfile/MissingFeatureCategory gem 'bundler-audit', '~> 0.9.1', require: false # rubocop:todo Gemfile/MissingFeatureCategory diff --git a/Gemfile.checksum b/Gemfile.checksum index 2110a0cd7a6..5c4be5c85ce 100644 --- a/Gemfile.checksum +++ b/Gemfile.checksum @@ -218,7 +218,7 @@ {"name":"gitlab-mail_room","version":"0.0.23","platform":"ruby","checksum":"23564fa4dab24ec5011d4c64a801fc0228301d5b0f046a26a1d8e96e36c19997"}, {"name":"gitlab-markup","version":"1.9.0","platform":"ruby","checksum":"7eda045a08ec2d110084252fa13a8c9eac8bdac0e302035ca7db4b82bcbd7ed4"}, {"name":"gitlab-net-dns","version":"0.9.2","platform":"ruby","checksum":"f726d978479d43810819f12a45c0906d775a07e34df111bbe693fffbbef3059d"}, -{"name":"gitlab-styles","version":"10.1.0","platform":"ruby","checksum":"f42745f5397d042fe24cf2d0eb56c995b37f9f43d8fb79b834d197a1cafdc84a"}, +{"name":"gitlab-styles","version":"11.0.0","platform":"ruby","checksum":"0dd8ec066ce9955ac51d3616c6bfded30f75bb526f39ff392ece6f43d5b9406b"}, {"name":"gitlab_chronic_duration","version":"0.12.0","platform":"ruby","checksum":"0d766944d415b5c831f176871ee8625783fc0c5bfbef2d79a3a616f207ffc16d"}, {"name":"gitlab_omniauth-ldap","version":"2.2.0","platform":"ruby","checksum":"bb4d20acb3b123ed654a8f6a47d3fac673ece7ed0b6992edb92dca14bad2838c"}, {"name":"gitlab_quality-test_tooling","version":"1.5.0","platform":"ruby","checksum":"7ce31d48462290f39c2c9bf8ae99b39b31e3a5eba0546bac058cdb6f7f88afd3"}, @@ -547,14 +547,14 @@ {"name":"rspec-support","version":"3.12.0","platform":"ruby","checksum":"dd4d44b247ff679b95b5607ac5641d197a5f9b1d33f916123cb98fc5f917c58b"}, {"name":"rspec_junit_formatter","version":"0.6.0","platform":"ruby","checksum":"40dde674e6ae4e6cc0ff560da25497677e34fefd2338cc467a8972f602b62b15"}, {"name":"rspec_profiling","version":"0.0.6","platform":"ruby","checksum":"7a45697f79dcec9a174a0e26703465f6bd52ee78e8d798741240bfcef38f6e6e"}, -{"name":"rubocop","version":"1.50.2","platform":"ruby","checksum":"7cfeb0616f686ac61d049beae89f31446792d7e9f5728152657548f70aa78650"}, +{"name":"rubocop","version":"1.57.2","platform":"ruby","checksum":"8f679dfe42d7821dc61dafb17d14b1294343157a197b9f8a23720ca17fb9161b"}, {"name":"rubocop-ast","version":"1.29.0","platform":"ruby","checksum":"d1da2ab279a074baefc81758ac430c5768a8da8c7438dd4e5819ce5984d00ba1"}, -{"name":"rubocop-capybara","version":"2.18.0","platform":"ruby","checksum":"66b256755101f76dc455ba9694e2414bc957db5200401d204b00bc835401d605"}, -{"name":"rubocop-factory_bot","version":"2.23.1","platform":"ruby","checksum":"c19ee30c02e591f4293c07e943e22b7999c545d5010aac4d79621ee310850c4f"}, +{"name":"rubocop-capybara","version":"2.19.0","platform":"ruby","checksum":"fa329e0f185be313fa5dabd6056f83a718db7f4a259aa97fc287a40254899ccb"}, +{"name":"rubocop-factory_bot","version":"2.24.0","platform":"ruby","checksum":"3018d350315277200c31c98a5297c9d19463536c04bdeba0a75a512e3975e9f8"}, {"name":"rubocop-graphql","version":"0.19.0","platform":"ruby","checksum":"ba4b2fc91c9f0fda47e0870a6ae15a1e5525d6caffcb150dc88b00caaacc3e43"}, -{"name":"rubocop-performance","version":"1.18.0","platform":"ruby","checksum":"4c9d74f1b5bfaffb5b1cdb843279364198ac804e2644ae194615834dd011e02e"}, -{"name":"rubocop-rails","version":"2.20.2","platform":"ruby","checksum":"d20cbd613900fa22bcf85a7fba78ab68b21fc4f90b1e73c97284d40674332417"}, -{"name":"rubocop-rspec","version":"2.22.0","platform":"ruby","checksum":"2d7493222c81c78ad304ddd81aaf64b3543bcfac6d3d8706c220331921753a03"}, +{"name":"rubocop-performance","version":"1.19.1","platform":"ruby","checksum":"52664172d944eb45d478ed6d04c8b02c36cf0ee15726fabb6c90a95ca5cdfadf"}, +{"name":"rubocop-rails","version":"2.22.1","platform":"ruby","checksum":"db673cdb6321d8bb7627cd6cfb2cb36114acaa0e89581e4694b7304ce2acbd46"}, +{"name":"rubocop-rspec","version":"2.25.0","platform":"ruby","checksum":"083f8a0481dbb9969b2a9eae85670a454fe91d46812e6ec97b34e7f6227b99f3"}, {"name":"ruby-fogbugz","version":"0.3.0","platform":"ruby","checksum":"5e04cde474648f498a71cf1e1a7ab42c66b953862fbe224f793ec0a7a1d5f657"}, {"name":"ruby-lsp","version":"0.12.3","platform":"ruby","checksum":"e49d82cdcb20c16f3b78556e3107af813f785c05d2d02658f810d03852db4567"}, {"name":"ruby-lsp-rails","version":"0.2.7","platform":"ruby","checksum":"722c4613d212aa136733b36674e5773e2352de9b3c1a05cafec86dc589a47811"}, diff --git a/Gemfile.lock b/Gemfile.lock index 645c0a115ae..6fbd0fb6c01 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -687,8 +687,8 @@ GEM oauth2 (>= 1.4.4, < 3) gitlab-markup (1.9.0) gitlab-net-dns (0.9.2) - gitlab-styles (10.1.0) - rubocop (~> 1.50.2) + gitlab-styles (11.0.0) + rubocop (~> 1.57.1) rubocop-graphql (~> 0.18) rubocop-performance (~> 1.15) rubocop-rails (~> 2.17) @@ -1409,33 +1409,34 @@ GEM pg rails sqlite3 - rubocop (1.50.2) + rubocop (1.57.2) json (~> 2.3) + language_server-protocol (>= 3.17.0) parallel (~> 1.10) - parser (>= 3.2.0.0) + parser (>= 3.2.2.4) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 1.8, < 3.0) rexml (>= 3.2.5, < 4.0) - rubocop-ast (>= 1.28.0, < 2.0) + rubocop-ast (>= 1.28.1, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 3.0) rubocop-ast (1.29.0) parser (>= 3.2.1.0) - rubocop-capybara (2.18.0) + rubocop-capybara (2.19.0) rubocop (~> 1.41) - rubocop-factory_bot (2.23.1) + rubocop-factory_bot (2.24.0) rubocop (~> 1.33) rubocop-graphql (0.19.0) rubocop (>= 0.87, < 2) - rubocop-performance (1.18.0) + rubocop-performance (1.19.1) rubocop (>= 1.7.0, < 2.0) rubocop-ast (>= 0.4.0) - rubocop-rails (2.20.2) + rubocop-rails (2.22.1) activesupport (>= 4.2.0) rack (>= 1.1) rubocop (>= 1.33.0, < 2.0) - rubocop-rspec (2.22.0) - rubocop (~> 1.33) + rubocop-rspec (2.25.0) + rubocop (~> 1.40) rubocop-capybara (~> 2.17) rubocop-factory_bot (~> 2.22) ruby-fogbugz (0.3.0) @@ -1862,7 +1863,7 @@ DEPENDENCIES gitlab-safe_request_store! gitlab-schema-validation! gitlab-sidekiq-fetcher! - gitlab-styles (~> 10.1.0) + gitlab-styles (~> 11.0.0) gitlab-utils! gitlab_chronic_duration (~> 0.12) gitlab_omniauth-ldap (~> 2.2.0) diff --git a/app/assets/javascripts/merge_requests/components/sticky_header.vue b/app/assets/javascripts/merge_requests/components/sticky_header.vue index 62654c3baf6..877e6142bae 100644 --- a/app/assets/javascripts/merge_requests/components/sticky_header.vue +++ b/app/assets/javascripts/merge_requests/components/sticky_header.vue @@ -1,5 +1,12 @@ <script> -import { GlIntersectionObserver, GlLink, GlSprintf, GlBadge } from '@gitlab/ui'; +import { + GlIntersectionObserver, + GlLink, + GlSprintf, + GlBadge, + GlIcon, + GlTooltipDirective, +} from '@gitlab/ui'; // eslint-disable-next-line no-restricted-imports import { mapGetters, mapState } from 'vuex'; import SafeHtml from '~/vue_shared/directives/safe_html'; @@ -45,6 +52,7 @@ export default { GlLink, GlSprintf, GlBadge, + GlIcon, DiscussionCounter, StatusBadge, TodoWidget, @@ -53,10 +61,12 @@ export default { }, directives: { SafeHtml, + GlTooltip: GlTooltipDirective, }, mixins: [glFeatureFlagsMixin()], inject: { projectPath: { default: null }, + sourceProjectPath: { default: null }, title: { default: '' }, tabs: { default: () => [] }, isFluidLayout: { default: false }, @@ -89,6 +99,16 @@ export default { isNotificationsTodosButtons() { return this.glFeatures.notificationsTodosButtons && this.glFeatures.movedMrSidebar; }, + isForked() { + return this.projectPath !== this.sourceProjectPath; + }, + sourceBranch() { + if (this.isForked) { + return `${this.sourceProjectPath}:${this.getNoteableData.source_branch}`; + } + + return this.getNoteableData.source_branch; + }, }, watch: { discussionTabCounter(val) { @@ -153,8 +173,17 @@ export default { :title="getNoteableData.source_branch" :href="getNoteableData.source_branch_path" class="gl-text-blue-500! gl-font-monospace gl-bg-blue-50 gl-rounded-base gl-font-sm gl-px-2 gl-text-truncate gl-max-w-26" + data-testid="source-branch" > - {{ getNoteableData.source_branch }} + <span + v-if="isForked" + v-gl-tooltip + class="gl-vertical-align-middle gl-mr-n2" + :title="__('The source project is a fork')" + > + <gl-icon name="fork" :size="12" class="gl-ml-1" /> + </span> + {{ sourceBranch }} </gl-link> </template> <template #target> diff --git a/app/assets/javascripts/pages/projects/merge_requests/page.js b/app/assets/javascripts/pages/projects/merge_requests/page.js index fb243d01dc6..a9d281fc899 100644 --- a/app/assets/javascripts/pages/projects/merge_requests/page.js +++ b/app/assets/javascripts/pages/projects/merge_requests/page.js @@ -28,7 +28,7 @@ requestIdleCallback(() => { if (el) { const { data } = el.dataset; - const { iid, projectPath, title, tabs, isFluidLayout } = JSON.parse(data); + const { iid, projectPath, title, tabs, isFluidLayout, sourceProjectPath } = JSON.parse(data); // eslint-disable-next-line no-new new Vue({ @@ -42,6 +42,7 @@ requestIdleCallback(() => { title, tabs, isFluidLayout: parseBoolean(isFluidLayout), + sourceProjectPath, }, render(h) { return h(StickyHeader); diff --git a/app/assets/javascripts/vue_shared/components/markdown/header.vue b/app/assets/javascripts/vue_shared/components/markdown/header.vue index 741bdfd211b..cc3c95a047b 100644 --- a/app/assets/javascripts/vue_shared/components/markdown/header.vue +++ b/app/assets/javascripts/vue_shared/components/markdown/header.vue @@ -492,7 +492,7 @@ export default { tracking-property="quickAction" /> <comment-templates-dropdown - v-if="!previewMarkdown && newCommentTemplatePath && glFeatures.savedReplies" + v-if="!previewMarkdown && newCommentTemplatePath" :new-comment-template-path="newCommentTemplatePath" @select="insertSavedReply" /> diff --git a/app/controllers/profiles/comment_templates_controller.rb b/app/controllers/profiles/comment_templates_controller.rb index d6725c27f76..f7c1f8733de 100644 --- a/app/controllers/profiles/comment_templates_controller.rb +++ b/app/controllers/profiles/comment_templates_controller.rb @@ -5,8 +5,6 @@ module Profiles feature_category :user_profile before_action do - render_404 unless Feature.enabled?(:saved_replies, current_user) - @hide_search_settings = true end end diff --git a/app/controllers/projects/issues_controller.rb b/app/controllers/projects/issues_controller.rb index fe0e3b68288..a6444dc038c 100644 --- a/app/controllers/projects/issues_controller.rb +++ b/app/controllers/projects/issues_controller.rb @@ -45,7 +45,6 @@ class Projects::IssuesController < Projects::ApplicationController before_action do push_frontend_feature_flag(:preserve_unchanged_markdown, project) - push_frontend_feature_flag(:saved_replies, current_user) push_frontend_feature_flag(:issues_grid_view) push_frontend_feature_flag(:service_desk_ticket) push_frontend_feature_flag(:issues_list_drawer, project) diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb index fc7f56c7dd1..eb7505bd81f 100644 --- a/app/controllers/projects/merge_requests_controller.rb +++ b/app/controllers/projects/merge_requests_controller.rb @@ -41,7 +41,6 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo push_frontend_feature_flag(:moved_mr_sidebar, project) push_frontend_feature_flag(:sast_reports_in_inline_diff, project) push_frontend_feature_flag(:mr_experience_survey, project) - push_frontend_feature_flag(:saved_replies, current_user) push_force_frontend_feature_flag(:summarize_my_code_review, summarize_my_code_review_enabled?) push_frontend_feature_flag(:ci_job_failures_in_mr, project) push_frontend_feature_flag(:mr_pipelines_graphql, project) diff --git a/app/controllers/projects/work_items_controller.rb b/app/controllers/projects/work_items_controller.rb index c3986be31b0..84cc1b16136 100644 --- a/app/controllers/projects/work_items_controller.rb +++ b/app/controllers/projects/work_items_controller.rb @@ -11,7 +11,6 @@ class Projects::WorkItemsController < Projects::ApplicationController push_force_frontend_feature_flag(:work_items, project&.work_items_feature_flag_enabled?) push_force_frontend_feature_flag(:work_items_mvc, project&.work_items_mvc_feature_flag_enabled?) push_force_frontend_feature_flag(:work_items_mvc_2, project&.work_items_mvc_2_feature_flag_enabled?) - push_force_frontend_feature_flag(:saved_replies, current_user) push_force_frontend_feature_flag(:linked_work_items, project&.linked_work_items_feature_flag_enabled?) end diff --git a/app/graphql/mutations/saved_replies/base.rb b/app/graphql/mutations/saved_replies/base.rb index 4923fcb7851..79761645eb7 100644 --- a/app/graphql/mutations/saved_replies/base.rb +++ b/app/graphql/mutations/saved_replies/base.rb @@ -23,10 +23,6 @@ module Mutations end end - def feature_enabled? - Feature.enabled?(:saved_replies, current_user) - end - def find_object(id) GitlabSchema.find_by_gid(id) end diff --git a/app/graphql/mutations/saved_replies/create.rb b/app/graphql/mutations/saved_replies/create.rb index d97461a1c2a..25c02b79cb8 100644 --- a/app/graphql/mutations/saved_replies/create.rb +++ b/app/graphql/mutations/saved_replies/create.rb @@ -16,8 +16,6 @@ module Mutations description: copy_field_description(Types::SavedReplyType, :content) def resolve(name:, content:) - raise Gitlab::Graphql::Errors::ResourceNotAvailable, 'Feature disabled' unless feature_enabled? - result = ::Users::SavedReplies::CreateService.new(current_user: current_user, name: name, content: content).execute present_result(result) end diff --git a/app/graphql/mutations/saved_replies/destroy.rb b/app/graphql/mutations/saved_replies/destroy.rb index 7cd0f21ad45..655ed9cb798 100644 --- a/app/graphql/mutations/saved_replies/destroy.rb +++ b/app/graphql/mutations/saved_replies/destroy.rb @@ -12,8 +12,6 @@ module Mutations description: copy_field_description(Types::SavedReplyType, :id) def resolve(id:) - raise Gitlab::Graphql::Errors::ResourceNotAvailable, 'Feature disabled' unless feature_enabled? - saved_reply = authorized_find!(id) result = ::Users::SavedReplies::DestroyService.new(saved_reply: saved_reply).execute present_result(result) diff --git a/app/graphql/mutations/saved_replies/update.rb b/app/graphql/mutations/saved_replies/update.rb index d9368de7547..f5dc81614d2 100644 --- a/app/graphql/mutations/saved_replies/update.rb +++ b/app/graphql/mutations/saved_replies/update.rb @@ -20,8 +20,6 @@ module Mutations description: copy_field_description(Types::SavedReplyType, :content) def resolve(id:, name:, content:) - raise Gitlab::Graphql::Errors::ResourceNotAvailable, 'Feature disabled' unless feature_enabled? - saved_reply = authorized_find!(id) result = ::Users::SavedReplies::UpdateService.new(saved_reply: saved_reply, name: name, content: content).execute present_result(result) diff --git a/app/graphql/resolvers/saved_reply_resolver.rb b/app/graphql/resolvers/saved_reply_resolver.rb index 96bbc139c96..1a5f2c9be78 100644 --- a/app/graphql/resolvers/saved_reply_resolver.rb +++ b/app/graphql/resolvers/saved_reply_resolver.rb @@ -11,8 +11,6 @@ module Resolvers description: 'ID of a saved reply.' def resolve(id:) - return unless Feature.enabled?(:saved_replies, current_user) - saved_reply = ::Users::SavedReply.find_saved_reply(user_id: current_user.id, id: id.model_id) return unless saved_reply diff --git a/app/graphql/types/user_interface.rb b/app/graphql/types/user_interface.rb index 7a43d5891d7..040711b5f58 100644 --- a/app/graphql/types/user_interface.rb +++ b/app/graphql/types/user_interface.rb @@ -139,13 +139,11 @@ module Types field :saved_replies, Types::SavedReplyType.connection_type, null: true, - description: 'Saved replies authored by the user. ' \ - 'Will not return saved replies if `saved_replies` feature flag is disabled.' + description: 'Saved replies authored by the user.' field :saved_reply, resolver: Resolvers::SavedReplyResolver, - description: 'Saved reply authored by the user. ' \ - 'Will not return saved reply if `saved_replies` feature flag is disabled.' + description: 'Saved reply authored by the user.' field :gitpod_enabled, GraphQL::Types::Boolean, null: true, description: 'Whether Gitpod is enabled at the user level.' diff --git a/app/helpers/merge_requests_helper.rb b/app/helpers/merge_requests_helper.rb index 558ef9c798f..1dc4c393bf2 100644 --- a/app/helpers/merge_requests_helper.rb +++ b/app/helpers/merge_requests_helper.rb @@ -290,6 +290,7 @@ module MergeRequestsHelper data = { iid: @merge_request.iid, projectPath: @project.full_path, + sourceProjectPath: @merge_request.source_project_path, title: markdown_field(@merge_request, :title), isFluidLayout: fluid_layout.to_s, tabs: [ diff --git a/app/helpers/users_helper.rb b/app/helpers/users_helper.rb index a8570ab304a..84a809bc510 100644 --- a/app/helpers/users_helper.rb +++ b/app/helpers/users_helper.rb @@ -347,10 +347,6 @@ module UsersHelper }.with_indifferent_access.freeze end - def saved_replies_enabled? - Feature.enabled?(:saved_replies, current_user) - end - def preload_project_associations(_) # Overridden in EE end diff --git a/app/models/ci/bridge.rb b/app/models/ci/bridge.rb index d0ccf5c543a..cf6401dc1da 100644 --- a/app/models/ci/bridge.rb +++ b/app/models/ci/bridge.rb @@ -114,7 +114,7 @@ module Ci project = options&.dig(:trigger, :project) next unless project - scoped_variables.to_runner_variables.yield_self do |all_variables| + scoped_variables.to_runner_variables.then do |all_variables| ::ExpandVariables.expand(project, all_variables) end end @@ -199,7 +199,7 @@ module Ci branch = options&.dig(:trigger, :branch) return unless branch - scoped_variables.to_runner_variables.yield_self do |all_variables| + scoped_variables.to_runner_variables.then do |all_variables| ::ExpandVariables.expand(branch, all_variables) end end diff --git a/app/models/personal_access_token.rb b/app/models/personal_access_token.rb index 4dfe7252a0c..f2fbb5b989e 100644 --- a/app/models/personal_access_token.rb +++ b/app/models/personal_access_token.rb @@ -44,8 +44,9 @@ class PersonalAccessToken < ApplicationRecord scope :last_used_after, -> (date) { where("last_used_at >= ?", date) } validates :scopes, presence: true + validates :expires_at, presence: true, on: :create, unless: :allow_expires_at_to_be_empty? + validate :validate_scopes - validates :expires_at, presence: true, on: :create validate :expires_at_before_instance_max_expiry_date, on: :create def revoke! @@ -97,6 +98,10 @@ class PersonalAccessToken < ApplicationRecord self.class.token_prefix end + def allow_expires_at_to_be_empty? + false + end + def expires_at_before_instance_max_expiry_date return unless expires_at diff --git a/app/presenters/user_presenter.rb b/app/presenters/user_presenter.rb index 43164cca9c9..da087ce6858 100644 --- a/app/presenters/user_presenter.rb +++ b/app/presenters/user_presenter.rb @@ -21,7 +21,6 @@ class UserPresenter < Gitlab::View::Presenter::Delegated delegator_override :saved_replies def saved_replies - return ::Users::SavedReply.none unless Feature.enabled?(:saved_replies, current_user) return ::Users::SavedReply.none unless current_user.can?(:read_saved_replies, user) user.saved_replies diff --git a/app/serializers/build_details_entity.rb b/app/serializers/build_details_entity.rb index 9aee031328b..35063ceeb06 100644 --- a/app/serializers/build_details_entity.rb +++ b/app/serializers/build_details_entity.rb @@ -14,7 +14,7 @@ class BuildDetailsEntity < Ci::JobEntity expose :deployment_status, if: -> (*) { build.deployment_job? } do expose :deployment_status, as: :status expose :persisted_environment, as: :environment do |build, options| - options.merge(deployment_details: false).yield_self do |opts| + options.merge(deployment_details: false).then do |opts| EnvironmentEntity.represent(build.persisted_environment, opts) end end diff --git a/app/serializers/deployment_entity.rb b/app/serializers/deployment_entity.rb index 7cd913d057e..851d7a95d40 100644 --- a/app/serializers/deployment_entity.rb +++ b/app/serializers/deployment_entity.rb @@ -28,7 +28,7 @@ class DeploymentEntity < Grape::Entity expose :deployed_by, as: :user, using: UserEntity expose :deployable, if: -> (deployment) { deployment.deployable.present? } do |deployment, opts| - deployment.deployable.yield_self do |deployable| + deployment.deployable.then do |deployable| if include_details? Ci::JobEntity.represent(deployable, opts) elsif can_read_deployables? diff --git a/app/services/web_hook_service.rb b/app/services/web_hook_service.rb index 854eb41c8a6..035f1754cbb 100644 --- a/app/services/web_hook_service.rb +++ b/app/services/web_hook_service.rb @@ -83,13 +83,13 @@ class WebHookService log_execution( response: response, - execution_duration: Gitlab::Metrics::System.monotonic_time - start_time + execution_duration: ::Gitlab::Metrics::System.monotonic_time - start_time ) ServiceResponse.success(message: response.body, payload: { http_status: response.code }) rescue *Gitlab::HTTP::HTTP_ERRORS, Gitlab::Json::LimitedEncoder::LimitExceeded, URI::InvalidURIError => e - execution_duration = Gitlab::Metrics::System.monotonic_time - start_time + execution_duration = ::Gitlab::Metrics::System.monotonic_time - start_time error_message = e.to_s log_execution( diff --git a/app/views/admin/application_settings/_account_and_limit.html.haml b/app/views/admin/application_settings/_account_and_limit.html.haml index 52f7fa3bc12..1d58b0106c4 100644 --- a/app/views/admin/application_settings/_account_and_limit.html.haml +++ b/app/views/admin/application_settings/_account_and_limit.html.haml @@ -30,6 +30,7 @@ = render_if_exists 'admin/application_settings/git_two_factor_session_expiry', form: f = render_if_exists 'admin/application_settings/personal_access_token_expiration_policy', form: f + = render_if_exists 'admin/application_settings/service_access_tokens_expiration_enforced', form: f = render_if_exists 'admin/application_settings/ssh_key_expiration_policy', form: f .form-group diff --git a/app/views/admin/users/projects.html.haml b/app/views/admin/users/projects.html.haml index fa89c3d4b4f..bbf1e3b0b2f 100644 --- a/app/views/admin/users/projects.html.haml +++ b/app/views/admin/users/projects.html.haml @@ -1,3 +1,4 @@ +-# rubocop: disable CodeReuse/ActiveRecord - add_to_breadcrumbs _("Users"), admin_users_path - breadcrumb_title @user.name - page_title _("Groups and projects"), @user.name, _("Users") @@ -9,7 +10,7 @@ = _('Groups') - c.with_body do %ul.hover-list - - @user.group_members.includes(:source).each do |group_member| # rubocop: disable CodeReuse/ActiveRecord + - @user.group_members.includes(:source).find_each do |group_member| - group = group_member.group %li.group_member %strong= link_to group.name, admin_group_path(group) @@ -50,3 +51,4 @@ - if member.respond_to? :project = link_button_to nil, project_project_member_path(project, member), data: { confirm: remove_member_message(member), confirm_btn_variant: 'danger' }, aria: { label: _('Remove') }, remote: true, method: :delete, class: 'gl-ml-3', title: _('Remove user from project'), variant: :danger, size: :small, icon: 'remove' +-# rubocop: enable CodeReuse/ActiveRecord diff --git a/app/views/groups/settings/_permissions.html.haml b/app/views/groups/settings/_permissions.html.haml index 19abacd038a..8ea80700340 100644 --- a/app/views/groups/settings/_permissions.html.haml +++ b/app/views/groups/settings/_permissions.html.haml @@ -43,6 +43,7 @@ = render 'groups/settings/project_creation_level', f: f, group: @group = render 'groups/settings/subgroup_creation_level', f: f, group: @group = render_if_exists 'groups/settings/prevent_forking', f: f, group: @group + = render_if_exists 'groups/settings/service_access_tokens_expiration_enforced', f: f, group: @group = render 'groups/settings/two_factor_auth', f: f, group: @group = render_if_exists 'groups/personal_access_token_expiration_policy', f: f, group: @group = render 'groups/settings/membership', f: f, group: @group diff --git a/config/feature_flags/development/saved_replies.yml b/config/feature_flags/development/saved_replies.yml deleted file mode 100644 index 0c973292ba0..00000000000 --- a/config/feature_flags/development/saved_replies.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -name: saved_replies -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/80811 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/352956 -milestone: '14.9' -type: development -group: group::project management -default_enabled: true diff --git a/db/migrate/20231027084327_change_personal_access_tokens_remove_not_null_expires_at.rb b/db/migrate/20231027084327_change_personal_access_tokens_remove_not_null_expires_at.rb new file mode 100644 index 00000000000..0f7e3d53707 --- /dev/null +++ b/db/migrate/20231027084327_change_personal_access_tokens_remove_not_null_expires_at.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class ChangePersonalAccessTokensRemoveNotNullExpiresAt < Gitlab::Database::Migration[2.2] + milestone '16.6' + + disable_ddl_transaction! + + CONSTRAINT_NAME = 'check_b8d60815eb' + + def up + remove_not_null_constraint :personal_access_tokens, :expires_at + end + + def down + add_not_null_constraint :personal_access_tokens, :expires_at, validate: false, constraint_name: CONSTRAINT_NAME + end +end diff --git a/db/post_migrate/20231027083355_remove_projects_duplicated_indexes.rb b/db/post_migrate/20231027083355_remove_projects_duplicated_indexes.rb new file mode 100644 index 00000000000..7911a60df3f --- /dev/null +++ b/db/post_migrate/20231027083355_remove_projects_duplicated_indexes.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +class RemoveProjectsDuplicatedIndexes < Gitlab::Database::Migration[2.2] + disable_ddl_transaction! + + milestone '16.6' + + INDEX_NAME = :index_on_projects_path + TABLE_NAME = :projects + + def up + remove_concurrent_index_by_name TABLE_NAME, INDEX_NAME + end + + def down + add_concurrent_index TABLE_NAME, :path, name: INDEX_NAME + end +end diff --git a/db/schema_migrations/20231027083355 b/db/schema_migrations/20231027083355 new file mode 100644 index 00000000000..2ceb5337067 --- /dev/null +++ b/db/schema_migrations/20231027083355 @@ -0,0 +1 @@ +ce4863f02f807498da9c3cf7b49d85a2e5a296903fe0673bfa6f40d50c8a51b5
\ No newline at end of file diff --git a/db/schema_migrations/20231027084327 b/db/schema_migrations/20231027084327 new file mode 100644 index 00000000000..9b4a0baee6e --- /dev/null +++ b/db/schema_migrations/20231027084327 @@ -0,0 +1 @@ +38dcfa54fa7da63c1fbceb842e277b27bd90b1b0ef31fc82db8f80e6ba286047
\ No newline at end of file diff --git a/db/structure.sql b/db/structure.sql index ab1bf35fc90..333cf6c65a4 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -28134,9 +28134,6 @@ ALTER TABLE vulnerability_scanners ALTER TABLE packages_tags ADD CONSTRAINT check_91b8472153 CHECK ((project_id IS NOT NULL)) NOT VALID; -ALTER TABLE personal_access_tokens - ADD CONSTRAINT check_b8d60815eb CHECK ((expires_at IS NOT NULL)) NOT VALID; - ALTER TABLE sprints ADD CONSTRAINT check_ccd8a1eae0 CHECK ((start_date IS NOT NULL)) NOT VALID; @@ -33587,8 +33584,6 @@ CREATE UNIQUE INDEX index_on_project_id_escalation_policy_name_unique ON inciden CREATE INDEX index_on_projects_lower_path ON projects USING btree (lower((path)::text)); -CREATE INDEX index_on_projects_path ON projects USING btree (path); - CREATE INDEX index_on_routes_lower_path ON routes USING btree (lower((path)::text)); CREATE INDEX index_on_sbom_sources_package_manager_name ON sbom_sources USING btree ((((source -> 'package_manager'::text) ->> 'name'::text))); diff --git a/doc/administration/dedicated/index.md b/doc/administration/dedicated/index.md index 83105e7b557..16efc353c84 100644 --- a/doc/administration/dedicated/index.md +++ b/doc/administration/dedicated/index.md @@ -214,7 +214,9 @@ Make sure the AWS KMS keys are replicated to your desired primary, secondary and ## Configuration changes -To change or update the configuration for your GitLab Dedicated instance, open a [support ticket](https://support.gitlab.com/hc/en-us/requests/new?ticket_form_id=4414917877650) with your request. You can request configuration changes for the options originally specified during onboarding, or for any of the following optional features. +Switchboard empowers the user to make limited configuration changes to their Dedicated Tenant Instance. As Switchboard matures further configuration changes will be made available. + +To change or update the configuration of your GitLab Dedicated instance, use Switchboard following the instructions in the relevant section or open a [support ticket](https://support.gitlab.com/hc/en-us/requests/new?ticket_form_id=4414917877650) with your request. You can request configuration changes for the options originally specified during onboarding, or for any of the following optional features. The turnaround time to process configuration change requests is [documented in the GitLab handbook](https://about.gitlab.com/handbook/engineering/infrastructure/team/gitlab-dedicated/#handling-configuration-changes-for-tenant-environments). diff --git a/doc/api/graphql/reference/index.md b/doc/api/graphql/reference/index.md index 11f2482de5f..2edb3b4e351 100644 --- a/doc/api/graphql/reference/index.md +++ b/doc/api/graphql/reference/index.md @@ -13486,7 +13486,7 @@ A user with add-on data. | <a id="addonuserprojectmemberships"></a>`projectMemberships` | [`ProjectMemberConnection`](#projectmemberconnection) | Project memberships of the user. (see [Connections](#connections)) | | <a id="addonuserpronouns"></a>`pronouns` | [`String`](#string) | Pronouns of the user. | | <a id="addonuserpublicemail"></a>`publicEmail` | [`String`](#string) | User's public email. | -| <a id="addonusersavedreplies"></a>`savedReplies` | [`SavedReplyConnection`](#savedreplyconnection) | Saved replies authored by the user. Will not return saved replies if `saved_replies` feature flag is disabled. (see [Connections](#connections)) | +| <a id="addonusersavedreplies"></a>`savedReplies` | [`SavedReplyConnection`](#savedreplyconnection) | Saved replies authored by the user. (see [Connections](#connections)) | | <a id="addonuserstate"></a>`state` | [`UserState!`](#userstate) | State of the user. | | <a id="addonuserstatus"></a>`status` | [`UserStatus`](#userstatus) | User status. | | <a id="addonusertwitter"></a>`twitter` | [`String`](#string) | Twitter username of the user. | @@ -13645,7 +13645,7 @@ four standard [pagination arguments](#connection-pagination-arguments): ##### `AddOnUser.savedReply` -Saved reply authored by the user. Will not return saved reply if `saved_replies` feature flag is disabled. +Saved reply authored by the user. Returns [`SavedReply`](#savedreply). @@ -14157,7 +14157,7 @@ Core representation of a GitLab user. | <a id="autocompleteduserprojectmemberships"></a>`projectMemberships` | [`ProjectMemberConnection`](#projectmemberconnection) | Project memberships of the user. (see [Connections](#connections)) | | <a id="autocompleteduserpronouns"></a>`pronouns` | [`String`](#string) | Pronouns of the user. | | <a id="autocompleteduserpublicemail"></a>`publicEmail` | [`String`](#string) | User's public email. | -| <a id="autocompletedusersavedreplies"></a>`savedReplies` | [`SavedReplyConnection`](#savedreplyconnection) | Saved replies authored by the user. Will not return saved replies if `saved_replies` feature flag is disabled. (see [Connections](#connections)) | +| <a id="autocompletedusersavedreplies"></a>`savedReplies` | [`SavedReplyConnection`](#savedreplyconnection) | Saved replies authored by the user. (see [Connections](#connections)) | | <a id="autocompleteduserstate"></a>`state` | [`UserState!`](#userstate) | State of the user. | | <a id="autocompleteduserstatus"></a>`status` | [`UserStatus`](#userstatus) | User status. | | <a id="autocompletedusertwitter"></a>`twitter` | [`String`](#string) | Twitter username of the user. | @@ -14308,7 +14308,7 @@ four standard [pagination arguments](#connection-pagination-arguments): ##### `AutocompletedUser.savedReply` -Saved reply authored by the user. Will not return saved reply if `saved_replies` feature flag is disabled. +Saved reply authored by the user. Returns [`SavedReply`](#savedreply). @@ -20596,7 +20596,7 @@ A user assigned to a merge request. | <a id="mergerequestassigneeprojectmemberships"></a>`projectMemberships` | [`ProjectMemberConnection`](#projectmemberconnection) | Project memberships of the user. (see [Connections](#connections)) | | <a id="mergerequestassigneepronouns"></a>`pronouns` | [`String`](#string) | Pronouns of the user. | | <a id="mergerequestassigneepublicemail"></a>`publicEmail` | [`String`](#string) | User's public email. | -| <a id="mergerequestassigneesavedreplies"></a>`savedReplies` | [`SavedReplyConnection`](#savedreplyconnection) | Saved replies authored by the user. Will not return saved replies if `saved_replies` feature flag is disabled. (see [Connections](#connections)) | +| <a id="mergerequestassigneesavedreplies"></a>`savedReplies` | [`SavedReplyConnection`](#savedreplyconnection) | Saved replies authored by the user. (see [Connections](#connections)) | | <a id="mergerequestassigneestate"></a>`state` | [`UserState!`](#userstate) | State of the user. | | <a id="mergerequestassigneestatus"></a>`status` | [`UserStatus`](#userstatus) | User status. | | <a id="mergerequestassigneetwitter"></a>`twitter` | [`String`](#string) | Twitter username of the user. | @@ -20735,7 +20735,7 @@ four standard [pagination arguments](#connection-pagination-arguments): ##### `MergeRequestAssignee.savedReply` -Saved reply authored by the user. Will not return saved reply if `saved_replies` feature flag is disabled. +Saved reply authored by the user. Returns [`SavedReply`](#savedreply). @@ -20878,7 +20878,7 @@ The author of the merge request. | <a id="mergerequestauthorprojectmemberships"></a>`projectMemberships` | [`ProjectMemberConnection`](#projectmemberconnection) | Project memberships of the user. (see [Connections](#connections)) | | <a id="mergerequestauthorpronouns"></a>`pronouns` | [`String`](#string) | Pronouns of the user. | | <a id="mergerequestauthorpublicemail"></a>`publicEmail` | [`String`](#string) | User's public email. | -| <a id="mergerequestauthorsavedreplies"></a>`savedReplies` | [`SavedReplyConnection`](#savedreplyconnection) | Saved replies authored by the user. Will not return saved replies if `saved_replies` feature flag is disabled. (see [Connections](#connections)) | +| <a id="mergerequestauthorsavedreplies"></a>`savedReplies` | [`SavedReplyConnection`](#savedreplyconnection) | Saved replies authored by the user. (see [Connections](#connections)) | | <a id="mergerequestauthorstate"></a>`state` | [`UserState!`](#userstate) | State of the user. | | <a id="mergerequestauthorstatus"></a>`status` | [`UserStatus`](#userstatus) | User status. | | <a id="mergerequestauthortwitter"></a>`twitter` | [`String`](#string) | Twitter username of the user. | @@ -21017,7 +21017,7 @@ four standard [pagination arguments](#connection-pagination-arguments): ##### `MergeRequestAuthor.savedReply` -Saved reply authored by the user. Will not return saved reply if `saved_replies` feature flag is disabled. +Saved reply authored by the user. Returns [`SavedReply`](#savedreply). @@ -21223,7 +21223,7 @@ A user participating in a merge request. | <a id="mergerequestparticipantprojectmemberships"></a>`projectMemberships` | [`ProjectMemberConnection`](#projectmemberconnection) | Project memberships of the user. (see [Connections](#connections)) | | <a id="mergerequestparticipantpronouns"></a>`pronouns` | [`String`](#string) | Pronouns of the user. | | <a id="mergerequestparticipantpublicemail"></a>`publicEmail` | [`String`](#string) | User's public email. | -| <a id="mergerequestparticipantsavedreplies"></a>`savedReplies` | [`SavedReplyConnection`](#savedreplyconnection) | Saved replies authored by the user. Will not return saved replies if `saved_replies` feature flag is disabled. (see [Connections](#connections)) | +| <a id="mergerequestparticipantsavedreplies"></a>`savedReplies` | [`SavedReplyConnection`](#savedreplyconnection) | Saved replies authored by the user. (see [Connections](#connections)) | | <a id="mergerequestparticipantstate"></a>`state` | [`UserState!`](#userstate) | State of the user. | | <a id="mergerequestparticipantstatus"></a>`status` | [`UserStatus`](#userstatus) | User status. | | <a id="mergerequestparticipanttwitter"></a>`twitter` | [`String`](#string) | Twitter username of the user. | @@ -21362,7 +21362,7 @@ four standard [pagination arguments](#connection-pagination-arguments): ##### `MergeRequestParticipant.savedReply` -Saved reply authored by the user. Will not return saved reply if `saved_replies` feature flag is disabled. +Saved reply authored by the user. Returns [`SavedReply`](#savedreply). @@ -21541,7 +21541,7 @@ A user assigned to a merge request as a reviewer. | <a id="mergerequestreviewerprojectmemberships"></a>`projectMemberships` | [`ProjectMemberConnection`](#projectmemberconnection) | Project memberships of the user. (see [Connections](#connections)) | | <a id="mergerequestreviewerpronouns"></a>`pronouns` | [`String`](#string) | Pronouns of the user. | | <a id="mergerequestreviewerpublicemail"></a>`publicEmail` | [`String`](#string) | User's public email. | -| <a id="mergerequestreviewersavedreplies"></a>`savedReplies` | [`SavedReplyConnection`](#savedreplyconnection) | Saved replies authored by the user. Will not return saved replies if `saved_replies` feature flag is disabled. (see [Connections](#connections)) | +| <a id="mergerequestreviewersavedreplies"></a>`savedReplies` | [`SavedReplyConnection`](#savedreplyconnection) | Saved replies authored by the user. (see [Connections](#connections)) | | <a id="mergerequestreviewerstate"></a>`state` | [`UserState!`](#userstate) | State of the user. | | <a id="mergerequestreviewerstatus"></a>`status` | [`UserStatus`](#userstatus) | User status. | | <a id="mergerequestreviewertwitter"></a>`twitter` | [`String`](#string) | Twitter username of the user. | @@ -21680,7 +21680,7 @@ four standard [pagination arguments](#connection-pagination-arguments): ##### `MergeRequestReviewer.savedReply` -Saved reply authored by the user. Will not return saved reply if `saved_replies` feature flag is disabled. +Saved reply authored by the user. Returns [`SavedReply`](#savedreply). @@ -26485,7 +26485,7 @@ Core representation of a GitLab user. | <a id="usercoreprojectmemberships"></a>`projectMemberships` | [`ProjectMemberConnection`](#projectmemberconnection) | Project memberships of the user. (see [Connections](#connections)) | | <a id="usercorepronouns"></a>`pronouns` | [`String`](#string) | Pronouns of the user. | | <a id="usercorepublicemail"></a>`publicEmail` | [`String`](#string) | User's public email. | -| <a id="usercoresavedreplies"></a>`savedReplies` | [`SavedReplyConnection`](#savedreplyconnection) | Saved replies authored by the user. Will not return saved replies if `saved_replies` feature flag is disabled. (see [Connections](#connections)) | +| <a id="usercoresavedreplies"></a>`savedReplies` | [`SavedReplyConnection`](#savedreplyconnection) | Saved replies authored by the user. (see [Connections](#connections)) | | <a id="usercorestate"></a>`state` | [`UserState!`](#userstate) | State of the user. | | <a id="usercorestatus"></a>`status` | [`UserStatus`](#userstatus) | User status. | | <a id="usercoretwitter"></a>`twitter` | [`String`](#string) | Twitter username of the user. | @@ -26624,7 +26624,7 @@ four standard [pagination arguments](#connection-pagination-arguments): ##### `UserCore.savedReply` -Saved reply authored by the user. Will not return saved reply if `saved_replies` feature flag is disabled. +Saved reply authored by the user. Returns [`SavedReply`](#savedreply). @@ -32010,7 +32010,7 @@ Implementations: | <a id="userprojectmemberships"></a>`projectMemberships` | [`ProjectMemberConnection`](#projectmemberconnection) | Project memberships of the user. (see [Connections](#connections)) | | <a id="userpronouns"></a>`pronouns` | [`String`](#string) | Pronouns of the user. | | <a id="userpublicemail"></a>`publicEmail` | [`String`](#string) | User's public email. | -| <a id="usersavedreplies"></a>`savedReplies` | [`SavedReplyConnection`](#savedreplyconnection) | Saved replies authored by the user. Will not return saved replies if `saved_replies` feature flag is disabled. (see [Connections](#connections)) | +| <a id="usersavedreplies"></a>`savedReplies` | [`SavedReplyConnection`](#savedreplyconnection) | Saved replies authored by the user. (see [Connections](#connections)) | | <a id="userstate"></a>`state` | [`UserState!`](#userstate) | State of the user. | | <a id="userstatus"></a>`status` | [`UserStatus`](#userstatus) | User status. | | <a id="usertwitter"></a>`twitter` | [`String`](#string) | Twitter username of the user. | @@ -32149,7 +32149,7 @@ four standard [pagination arguments](#connection-pagination-arguments): ###### `User.savedReply` -Saved reply authored by the user. Will not return saved reply if `saved_replies` feature flag is disabled. +Saved reply authored by the user. Returns [`SavedReply`](#savedreply). diff --git a/doc/api/groups.md b/doc/api/groups.md index 879e0626305..c9ec64e83db 100644 --- a/doc/api/groups.md +++ b/doc/api/groups.md @@ -1340,6 +1340,10 @@ Example response: } ``` +| Attribute | Type | Required | Description | +| --------- | --------------- | -------- | ----------- | +| `expires_at` | date | no | Personal access token expiry date. When left blank, the token follows the [standard rule of expiry for personal access tokens](../user/profile/personal_access_tokens.md#when-personal-access-tokens-expire). | + ### Rotate a Personal Access Token for Service Account User > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/406781) in GitLab 16.1. @@ -1484,6 +1488,7 @@ PUT /groups/:id/hooks/:hook_id | `releases_events` | boolean | no | Trigger hook on release events. | | `subgroup_events` | boolean | no | Trigger hook on subgroup events. | | `enable_ssl_verification` | boolean | no | Do SSL verification when triggering the hook. | +| `service_access_tokens_expiration_enforced` | boolean | no | Require service account access tokens to have an expiration date. | | `token` | string | no | Secret token to validate received payloads. Not returned in the response. When you change the webhook URL, the secret token is reset and not retained. | ### Delete group hook diff --git a/doc/api/settings.md b/doc/api/settings.md index c8899eeb3e6..07472d99945 100644 --- a/doc/api/settings.md +++ b/doc/api/settings.md @@ -542,6 +542,7 @@ listed in the descriptions of the relevant settings. | `rsa_key_restriction` | integer | no | The minimum allowed bit length of an uploaded RSA key. Default is `0` (no restriction). `-1` disables RSA keys. | | `session_expire_delay` | integer | no | Session duration in minutes. GitLab restart is required to apply changes. | | `security_policy_global_group_approvers_enabled` | boolean | no | Whether to look up scan result policy approval groups globally or within project hierarchies. | +| `service_access_tokens_expiration_enforced` | boolean | no | Flag to indicate if token expiry date can be optional for service account users | | `shared_runners_enabled` | boolean | no | (**If enabled, requires:** `shared_runners_text` and `shared_runners_minutes`) Enable shared runners for new projects. | | `shared_runners_minutes` **(PREMIUM ALL)** | integer | required by: `shared_runners_enabled` | Set the maximum number of compute minutes that a group can use on shared runners per month. | | `shared_runners_text` | string | required by: `shared_runners_enabled` | Shared runners text. | diff --git a/doc/user/profile/comment_templates.md b/doc/user/profile/comment_templates.md index 5af93d7e2cf..98fabdb0a35 100644 --- a/doc/user/profile/comment_templates.md +++ b/doc/user/profile/comment_templates.md @@ -10,10 +10,7 @@ type: howto > - GraphQL support [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/352956) in GitLab 14.9 [with a flag](../../administration/feature_flags.md) named `saved_replies`. Disabled by default. > - User interface [introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/113232) in GitLab 15.10 [with a flag](../../administration/feature_flags.md) named `saved_replies`. Disabled by default. Enabled for GitLab team members only. > - [Enabled on GitLab.com and self-managed](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/119468) in GitLab 16.0. - -FLAG: -On self-managed GitLab, by default this feature is available. To hide the feature, an administrator can [disable the feature flag](../../administration/feature_flags.md) named `saved_replies`. -On GitLab.com, this feature is available. +> - [Feature flag removed](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/123363) in GitLab 16.6. With comment templates, create and reuse text for any text area in: diff --git a/doc/user/profile/personal_access_tokens.md b/doc/user/profile/personal_access_tokens.md index 9135a142612..a953a878cc9 100644 --- a/doc/user/profile/personal_access_tokens.md +++ b/doc/user/profile/personal_access_tokens.md @@ -137,6 +137,42 @@ Personal access tokens expire on the date you define, at midnight, 00:00 AM UTC. - In GitLab Ultimate, administrators can [limit the allowable lifetime of access tokens](../../administration/settings/account_and_limit_settings.md#limit-the-lifetime-of-access-tokens). If not set, the maximum allowable lifetime of a personal access token is 365 days. - In GitLab Free and Premium, the maximum allowable lifetime of a personal access token is 365 days. +- If you do not set an expiry date when creating a personal access token, the expiry date is set to the + [maximum allowed lifetime for the token](../../administration/settings/account_and_limit_settings.md#limit-the-lifetime-of-access-tokens). + If the maximum allowed lifetime is not set, the default expiry date is 365 days from the date of creation. + +### Service Accounts + +You can [create a personal access token for a service account](../../api/groups.md#create-personal-access-token-for-service-account-user) with no expiry date. + +NOTE: +Allowing personal access tokens for service accounts to be created with no expiry date only affects tokens created after you change this setting. It does not affect existing tokens. + +#### GitLab.com + +Prerequisite: + +- You must have the Owner role in the top-level group. + +1. On the left sidebar, select **Search or go to** and find your group. +1. Select **Settings > Permissions and group features**. +1. Clear the **Service account token expiration** checkbox. + +You can now create personal access tokens for a service account user with no expiry date. + +#### Self-managed GitLab + +Prerequisite: + +- You must be an administrator for your self-managed instance. + +1. On the left sidebar, select **Search or go to**. +1. Select **Admin Area**. +1. Select **Settings > General**. +1. Expand **Account and limit**. +1. Clear the **Service account token expiration** checkbox. + +You can now create personal access tokens for a service account user with no expiry date. ## Create a personal access token programmatically **(FREE SELF)** diff --git a/doc/user/profile/service_accounts.md b/doc/user/profile/service_accounts.md index 6bb96b9c552..8fa0067f150 100644 --- a/doc/user/profile/service_accounts.md +++ b/doc/user/profile/service_accounts.md @@ -53,6 +53,8 @@ Prerequisite: You define the scopes for the service account by [setting the scopes for the personal access token](personal_access_tokens.md#personal-access-token-scopes). + Optional. You can [create a personal access token with no expiry date](personal_access_tokens.md#when-personal-access-tokens-expire). + The response includes the personal access token value. 1. Make this service account a group or project member by [manually adding the service account user to the group or project](#add-a-service-account-to-subgroup-or-project). @@ -74,6 +76,8 @@ Prerequisite: You define the scopes for the service account by [setting the scopes for the personal access token](personal_access_tokens.md#personal-access-token-scopes). + Optional. You can [create a personal access token with no expiry date](personal_access_tokens.md#when-personal-access-tokens-expire). + The response includes the personal access token value. 1. Make this service account a group or project member by diff --git a/lib/gitlab/encrypted_configuration.rb b/lib/gitlab/encrypted_configuration.rb index 6b64281e631..5ead57e17fd 100644 --- a/lib/gitlab/encrypted_configuration.rb +++ b/lib/gitlab/encrypted_configuration.rb @@ -30,7 +30,7 @@ module Gitlab end def initialize(content_path: nil, base_key: nil, previous_keys: []) - @content_path = Pathname.new(content_path).yield_self { |path| path.symlink? ? path.realpath : path } if content_path + @content_path = Pathname.new(content_path).then { |path| path.symlink? ? path.realpath : path } if content_path @key = self.class.generate_key(base_key) if base_key @previous_keys = previous_keys end diff --git a/lib/gitlab/graphql/tracers/timer_tracer.rb b/lib/gitlab/graphql/tracers/timer_tracer.rb index 8e058621110..2cf06086a3c 100644 --- a/lib/gitlab/graphql/tracers/timer_tracer.rb +++ b/lib/gitlab/graphql/tracers/timer_tracer.rb @@ -15,11 +15,11 @@ module Gitlab end def trace(key, data) - start_time = Gitlab::Metrics::System.monotonic_time + start_time = ::Gitlab::Metrics::System.monotonic_time yield ensure - data[:duration_s] = Gitlab::Metrics::System.monotonic_time - start_time + data[:duration_s] = ::Gitlab::Metrics::System.monotonic_time - start_time end end end diff --git a/lib/gitlab/instrumentation/redis_interceptor.rb b/lib/gitlab/instrumentation/redis_interceptor.rb index 20ba1ab82a7..5934204bd0f 100644 --- a/lib/gitlab/instrumentation/redis_interceptor.rb +++ b/lib/gitlab/instrumentation/redis_interceptor.rb @@ -31,7 +31,7 @@ module Gitlab private def instrument_call(commands, pipelined = false) - start = Gitlab::Metrics::System.monotonic_time # must come first so that 'start' is always defined + start = ::Gitlab::Metrics::System.monotonic_time # must come first so that 'start' is always defined instrumentation_class.instance_count_request(commands.size) instrumentation_class.instance_count_pipelined_request(commands.size) if pipelined @@ -50,7 +50,7 @@ module Gitlab instrumentation_class.log_exception(ex) raise ex ensure - duration = Gitlab::Metrics::System.monotonic_time - start + duration = ::Gitlab::Metrics::System.monotonic_time - start unless exclude_from_apdex?(commands) commands.each { instrumentation_class.instance_observe_duration(duration / commands.size) } diff --git a/lib/gitlab/kubernetes/kubeconfig/template.rb b/lib/gitlab/kubernetes/kubeconfig/template.rb index d40b9ce117e..844472f9c8e 100644 --- a/lib/gitlab/kubernetes/kubeconfig/template.rb +++ b/lib/gitlab/kubernetes/kubeconfig/template.rb @@ -44,7 +44,7 @@ module Gitlab ) end kubeconfig_yaml[:clusters].each do |cluster| - ca_pem = cluster.dig(:cluster, :'certificate-authority-data')&.yield_self do |data| + ca_pem = cluster.dig(:cluster, :'certificate-authority-data')&.then do |data| Base64.strict_decode64(data) end diff --git a/lib/gitlab/legacy_http.rb b/lib/gitlab/legacy_http.rb index f38b2819c15..cf6ab80d37f 100644 --- a/lib/gitlab/legacy_http.rb +++ b/lib/gitlab/legacy_http.rb @@ -35,8 +35,8 @@ module Gitlab read_total_timeout = options.fetch(:timeout, Gitlab::HTTP::DEFAULT_READ_TOTAL_TIMEOUT) httparty_perform_request(http_method, path, options_with_timeouts) do |fragment| - start_time ||= Gitlab::Metrics::System.monotonic_time - elapsed = Gitlab::Metrics::System.monotonic_time - start_time + start_time ||= ::Gitlab::Metrics::System.monotonic_time + elapsed = ::Gitlab::Metrics::System.monotonic_time - start_time if elapsed > read_total_timeout raise Gitlab::HTTP::ReadTotalTimeout, "Request timed out after #{elapsed} seconds" diff --git a/lib/gitlab/memory/reporter.rb b/lib/gitlab/memory/reporter.rb index db0fd24983b..8d32745ac34 100644 --- a/lib/gitlab/memory/reporter.rb +++ b/lib/gitlab/memory/reporter.rb @@ -26,13 +26,13 @@ module Gitlab perf_report: report.name )) - start_monotonic_time = Gitlab::Metrics::System.monotonic_time - start_thread_cpu_time = Gitlab::Metrics::System.thread_cpu_time + start_monotonic_time = ::Gitlab::Metrics::System.monotonic_time + start_thread_cpu_time = ::Gitlab::Metrics::System.thread_cpu_time report_file = store_report(report) - cpu_s = Gitlab::Metrics::System.thread_cpu_duration(start_thread_cpu_time) - duration_s = Gitlab::Metrics::System.monotonic_time - start_monotonic_time + cpu_s = ::Gitlab::Metrics::System.thread_cpu_duration(start_thread_cpu_time) + duration_s = ::Gitlab::Metrics::System.monotonic_time - start_monotonic_time @logger.info( log_labels( diff --git a/lib/gitlab/memory/reports_uploader.rb b/lib/gitlab/memory/reports_uploader.rb index 76c3e0862e2..17230414a6a 100644 --- a/lib/gitlab/memory/reports_uploader.rb +++ b/lib/gitlab/memory/reports_uploader.rb @@ -13,11 +13,11 @@ module Gitlab def upload(path) log_upload_requested(path) - start_monotonic_time = Gitlab::Metrics::System.monotonic_time + start_monotonic_time = ::Gitlab::Metrics::System.monotonic_time File.open(path.to_s) { |file| fog.put_object(gcs_bucket, File.basename(path), file) } - duration_s = Gitlab::Metrics::System.monotonic_time - start_monotonic_time + duration_s = ::Gitlab::Metrics::System.monotonic_time - start_monotonic_time log_upload_success(path, duration_s) rescue StandardError, Errno::ENOENT => error log_exception(error) diff --git a/lib/gitlab/metrics/exporter/metrics_middleware.rb b/lib/gitlab/metrics/exporter/metrics_middleware.rb index 258b655229e..b80a8c503e8 100644 --- a/lib/gitlab/metrics/exporter/metrics_middleware.rb +++ b/lib/gitlab/metrics/exporter/metrics_middleware.rb @@ -9,10 +9,10 @@ module Gitlab default_labels = { pid: pid } - @requests_total = Gitlab::Metrics.counter( + @requests_total = ::Gitlab::Metrics.counter( :exporter_http_requests_total, 'Total number of HTTP requests', default_labels ) - @request_durations = Gitlab::Metrics.histogram( + @request_durations = ::Gitlab::Metrics.histogram( :exporter_http_request_duration_seconds, 'HTTP request duration histogram (seconds)', default_labels, @@ -21,9 +21,9 @@ module Gitlab end def call(env) - start = Gitlab::Metrics::System.monotonic_time + start = ::Gitlab::Metrics::System.monotonic_time @app.call(env).tap do |response| - duration = Gitlab::Metrics::System.monotonic_time - start + duration = ::Gitlab::Metrics::System.monotonic_time - start labels = { method: env['REQUEST_METHOD'].downcase, diff --git a/lib/gitlab/optimistic_locking.rb b/lib/gitlab/optimistic_locking.rb index 3c8ac55f70b..adc417f287c 100644 --- a/lib/gitlab/optimistic_locking.rb +++ b/lib/gitlab/optimistic_locking.rb @@ -7,7 +7,7 @@ module Gitlab module_function def retry_lock(subject, max_retries = MAX_RETRIES, name:, &block) - start_time = Gitlab::Metrics::System.monotonic_time + start_time = ::Gitlab::Metrics::System.monotonic_time retry_attempts = 0 # prevent scope override, see https://gitlab.com/gitlab-org/gitlab/-/issues/391186 @@ -39,7 +39,7 @@ module Gitlab def log_optimistic_lock_retries(name:, retry_attempts:, start_time:) return unless retry_attempts > 0 - elapsed_time = Gitlab::Metrics::System.monotonic_time - start_time + elapsed_time = ::Gitlab::Metrics::System.monotonic_time - start_time retry_lock_logger.info( message: "Optimistic Lock released with retries", diff --git a/lib/sidebars/user_settings/menus/comment_templates_menu.rb b/lib/sidebars/user_settings/menus/comment_templates_menu.rb index da37c42bbd4..1e9aea8ec9a 100644 --- a/lib/sidebars/user_settings/menus/comment_templates_menu.rb +++ b/lib/sidebars/user_settings/menus/comment_templates_menu.rb @@ -23,7 +23,7 @@ module Sidebars override :render? def render? - !!context.current_user && saved_replies_enabled? + !!context.current_user end override :active_routes diff --git a/lib/tasks/gitlab/bulk_add_permission.rake b/lib/tasks/gitlab/bulk_add_permission.rake index 240b808baf3..917fce42762 100644 --- a/lib/tasks/gitlab/bulk_add_permission.rake +++ b/lib/tasks/gitlab/bulk_add_permission.rake @@ -3,7 +3,7 @@ namespace :gitlab do namespace :import do desc "GitLab | Import | Add all users to all projects (admin users are added as maintainers)" - task all_users_to_all_projects: :environment do |t, args| + task all_users_to_all_projects: :environment do |t, args| user_ids = User.where(admin: false).pluck(:id) admin_ids = User.where(admin: true).pluck(:id) projects = Project.all diff --git a/locale/gitlab.pot b/locale/gitlab.pot index 38cadff29e0..d1109f02a2a 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -9820,6 +9820,9 @@ msgstr "" msgid "Changes to the title have not been saved" msgstr "" +msgid "Changes will not affect existing token expiration dates. %{link_start}How will this affect expiration dates?%{link_end}" +msgstr "" + msgid "Changes:" msgstr "" @@ -23315,6 +23318,12 @@ msgstr "" msgid "GroupSettings|Select the project containing your custom Insights file." msgstr "" +msgid "GroupSettings|Service access tokens expiration enforced setting was not saved" +msgstr "" + +msgid "GroupSettings|Service account token expiration" +msgstr "" + msgid "GroupSettings|Set a size limit for all content in each Pages site in this group. %{link_start}Learn more.%{link_end}" msgstr "" @@ -37226,6 +37235,11 @@ msgstr "" msgid "ProjectCreationLevel|Roles allowed to create projects" msgstr "" +msgid "ProjectExceededSize|Here is the project exceeding the storage quota:%{projects_list}" +msgid_plural "ProjectExceededSize|From the %{repository_size_excess_project_count} projects exceeding the quota, below are the projects using the most storage:%{projects_list}" +msgstr[0] "" +msgstr[1] "" + msgid "ProjectFileTree|Name" msgstr "" @@ -40492,6 +40506,9 @@ msgstr "" msgid "Require additional authentication for administrative tasks." msgstr "" +msgid "Require expiration date" +msgstr "" + msgid "Required approvals (%{approvals_given} given)" msgstr "" @@ -44246,12 +44263,18 @@ msgstr "" msgid "Service Desk allows people to create issues in your GitLab instance without their own user account. It provides a unique email address for end users to create issues in a project. Replies can be sent either through the GitLab interface or by email. End users only see threads through email." msgstr "" +msgid "Service access token expiration" +msgstr "" + msgid "Service account" msgstr "" msgid "Service account generated successfully" msgstr "" +msgid "Service account token expiration" +msgstr "" + msgid "Service accounts" msgstr "" diff --git a/metrics_server/metrics_server.rb b/metrics_server/metrics_server.rb index 7d4968f930c..873489b444e 100644 --- a/metrics_server/metrics_server.rb +++ b/metrics_server/metrics_server.rb @@ -88,7 +88,7 @@ class MetricsServer # rubocop:disable Gitlab/NamespacedClass end def ensure_valid_target!(target) - raise "Target must be one of [puma,sidekiq]" unless %w(puma sidekiq).include?(target) + raise "Target must be one of [puma,sidekiq]" unless %w[puma sidekiq].include?(target) end end diff --git a/package.json b/package.json index e7484d71612..7d6f449cb46 100644 --- a/package.json +++ b/package.json @@ -190,7 +190,7 @@ "remark-rehype": "^10.1.0", "scrollparent": "^2.0.1", "semver": "^7.3.4", - "sentrybrowser": "npm:@sentry/browser@7.78.0", + "sentrybrowser": "npm:@sentry/browser@7.79.0", "sentrybrowser5": "npm:@sentry/browser@5.30.0", "sortablejs": "^1.10.2", "string-hash": "1.1.3", diff --git a/qa/qa/specs/features/api/1_manage/import/import_large_github_repo_spec.rb b/qa/qa/specs/features/api/1_manage/import/import_large_github_repo_spec.rb index 0019eb47eeb..9c0720aa185 100644 --- a/qa/qa/specs/features/api/1_manage/import/import_large_github_repo_spec.rb +++ b/qa/qa/specs/features/api/1_manage/import/import_large_github_repo_spec.rb @@ -292,7 +292,7 @@ module QA fetch_github_objects unless only_stats_comparison import_status = -> { - imported_project.project_import_status.yield_self do |status| + imported_project.project_import_status.then do |status| @stats = status[:stats]&.slice(:fetched, :imported) # fail fast if import explicitly failed diff --git a/qa/qa/tools/long_running_spec_reporter.rb b/qa/qa/tools/long_running_spec_reporter.rb index 865b16f1d41..82015d024fb 100644 --- a/qa/qa/tools/long_running_spec_reporter.rb +++ b/qa/qa/tools/long_running_spec_reporter.rb @@ -41,7 +41,7 @@ module QA def mean_runtime @mean_runtime ||= latest_report.values .select { |v| v < RUNTIME_THRESHOLD } - .yield_self { |runtimes| runtimes.sum(0.0) / runtimes.length } + .then { |runtimes| runtimes.sum(0.0) / runtimes.length } end # Spec files exceeding runtime threshold diff --git a/spec/finders/milestones_finder_spec.rb b/spec/finders/milestones_finder_spec.rb index c4c62e21ad9..118679a4911 100644 --- a/spec/finders/milestones_finder_spec.rb +++ b/spec/finders/milestones_finder_spec.rb @@ -22,7 +22,7 @@ RSpec.describe MilestonesFinder do end it 'returns milestones for groups' do - result = described_class.new(group_ids: group.id, state: 'all').execute + result = described_class.new(group_ids: group.id, state: 'all').execute expect(result).to contain_exactly(milestone_5, milestone_1, milestone_2) end diff --git a/spec/frontend/merge_requests/components/sticky_header_spec.js b/spec/frontend/merge_requests/components/sticky_header_spec.js new file mode 100644 index 00000000000..9fc265cd9ad --- /dev/null +++ b/spec/frontend/merge_requests/components/sticky_header_spec.js @@ -0,0 +1,48 @@ +import Vue from 'vue'; +// eslint-disable-next-line no-restricted-imports +import Vuex from 'vuex'; +import { GlSprintf } from '@gitlab/ui'; +import { shallowMountExtended } from 'helpers/vue_test_utils_helper'; +import StickyHeader from '~/merge_requests/components/sticky_header.vue'; + +Vue.use(Vuex); + +let wrapper; + +function createComponent(provide = {}) { + const store = new Vuex.Store({ + state: { + page: { activeTab: 'overview' }, + notes: { notes: { doneFetchingBatchDiscussions: true } }, + }, + getters: { + getNoteableData: () => ({ + id: 1, + source_branch: 'source-branch', + target_branch: 'main', + }), + discussionTabCounter: () => 1, + }, + }); + + wrapper = shallowMountExtended(StickyHeader, { + store, + provide, + stubs: { + GlSprintf, + }, + }); +} + +describe('Merge requests sticky header component', () => { + describe('forked project', () => { + it('renders source branch with source project path', () => { + createComponent({ + projectPath: 'gitlab-org/gitlab', + sourceProjectPath: 'root/gitlab', + }); + + expect(wrapper.findByTestId('source-branch').text()).toBe('root/gitlab:source-branch'); + }); + }); +}); diff --git a/spec/graphql/mutations/saved_replies/create_spec.rb b/spec/graphql/mutations/saved_replies/create_spec.rb index 9423ba2b354..9db23ab5345 100644 --- a/spec/graphql/mutations/saved_replies/create_spec.rb +++ b/spec/graphql/mutations/saved_replies/create_spec.rb @@ -14,33 +14,17 @@ RSpec.describe Mutations::SavedReplies::Create do mutation.resolve(**mutation_arguments) end - context 'when feature is disabled' do - before do - stub_feature_flags(saved_replies: false) - end - - it 'raises Gitlab::Graphql::Errors::ResourceNotAvailable' do - expect { subject }.to raise_error(Gitlab::Graphql::Errors::ResourceNotAvailable, 'Feature disabled') - end - end - - context 'when feature is enabled for current user' do - before do - stub_feature_flags(saved_replies: current_user) - end + context 'when service fails to create a new saved reply' do + let(:mutation_arguments) { { name: '', content: '' } } - context 'when service fails to create a new saved reply' do - let(:mutation_arguments) { { name: '', content: '' } } - - it { expect(subject[:saved_reply]).to be_nil } - it { expect(subject[:errors]).to match_array(["Content can't be blank", "Name can't be blank"]) } - end + it { expect(subject[:saved_reply]).to be_nil } + it { expect(subject[:errors]).to match_array(["Content can't be blank", "Name can't be blank"]) } + end - context 'when service successfully creates a new saved reply' do - it { expect(subject[:saved_reply].name).to eq(mutation_arguments[:name]) } - it { expect(subject[:saved_reply].content).to eq(mutation_arguments[:content]) } - it { expect(subject[:errors]).to be_empty } - end + context 'when service successfully creates a new saved reply' do + it { expect(subject[:saved_reply].name).to eq(mutation_arguments[:name]) } + it { expect(subject[:saved_reply].content).to eq(mutation_arguments[:content]) } + it { expect(subject[:errors]).to be_empty } end end end diff --git a/spec/graphql/mutations/saved_replies/destroy_spec.rb b/spec/graphql/mutations/saved_replies/destroy_spec.rb index 6cff28ec0b2..84efd9ee0b8 100644 --- a/spec/graphql/mutations/saved_replies/destroy_spec.rb +++ b/spec/graphql/mutations/saved_replies/destroy_spec.rb @@ -13,34 +13,18 @@ RSpec.describe Mutations::SavedReplies::Destroy do mutation.resolve(id: saved_reply.to_global_id) end - context 'when feature is disabled' do + context 'when service fails to delete a new saved reply' do before do - stub_feature_flags(saved_replies: false) + saved_reply.destroy! end it 'raises Gitlab::Graphql::Errors::ResourceNotAvailable' do - expect { subject }.to raise_error(Gitlab::Graphql::Errors::ResourceNotAvailable, 'Feature disabled') + expect { subject }.to raise_error(Gitlab::Graphql::Errors::ResourceNotAvailable) end end - context 'when feature is enabled for current user' do - before do - stub_feature_flags(saved_replies: current_user) - end - - context 'when service fails to delete a new saved reply' do - before do - saved_reply.destroy! - end - - it 'raises Gitlab::Graphql::Errors::ResourceNotAvailable' do - expect { subject }.to raise_error(Gitlab::Graphql::Errors::ResourceNotAvailable) - end - end - - context 'when service successfully deletes the saved reply' do - it { expect(subject[:errors]).to be_empty } - end + context 'when service successfully deletes the saved reply' do + it { expect(subject[:errors]).to be_empty } end end end diff --git a/spec/graphql/mutations/saved_replies/update_spec.rb b/spec/graphql/mutations/saved_replies/update_spec.rb index 9b0e90b7b41..cc358d946a5 100644 --- a/spec/graphql/mutations/saved_replies/update_spec.rb +++ b/spec/graphql/mutations/saved_replies/update_spec.rb @@ -15,33 +15,17 @@ RSpec.describe Mutations::SavedReplies::Update do mutation.resolve(id: saved_reply.to_global_id, **mutation_arguments) end - context 'when feature is disabled' do - before do - stub_feature_flags(saved_replies: false) - end - - it 'raises Gitlab::Graphql::Errors::ResourceNotAvailable' do - expect { subject }.to raise_error(Gitlab::Graphql::Errors::ResourceNotAvailable, 'Feature disabled') - end - end - - context 'when feature is enabled for current user' do - before do - stub_feature_flags(saved_replies: current_user) - end + context 'when service fails to update a new saved reply' do + let(:mutation_arguments) { { name: '', content: '' } } - context 'when service fails to update a new saved reply' do - let(:mutation_arguments) { { name: '', content: '' } } - - it { expect(subject[:saved_reply]).to be_nil } - it { expect(subject[:errors]).to match_array(["Content can't be blank", "Name can't be blank"]) } - end + it { expect(subject[:saved_reply]).to be_nil } + it { expect(subject[:errors]).to match_array(["Content can't be blank", "Name can't be blank"]) } + end - context 'when service successfully updates the saved reply' do - it { expect(subject[:saved_reply].name).to eq(mutation_arguments[:name]) } - it { expect(subject[:saved_reply].content).to eq(mutation_arguments[:content]) } - it { expect(subject[:errors]).to be_empty } - end + context 'when service successfully updates the saved reply' do + it { expect(subject[:saved_reply].name).to eq(mutation_arguments[:name]) } + it { expect(subject[:saved_reply].content).to eq(mutation_arguments[:content]) } + it { expect(subject[:errors]).to be_empty } end end end diff --git a/spec/graphql/resolvers/saved_reply_resolver_spec.rb b/spec/graphql/resolvers/saved_reply_resolver_spec.rb index f1cb0ca5214..d6457e8c21a 100644 --- a/spec/graphql/resolvers/saved_reply_resolver_spec.rb +++ b/spec/graphql/resolvers/saved_reply_resolver_spec.rb @@ -8,30 +8,18 @@ RSpec.describe Resolvers::SavedReplyResolver, feature_category: :user_profile do let_it_be(:current_user) { create(:user) } let_it_be(:saved_reply) { create(:saved_reply, user: current_user) } - describe 'feature flag disabled' do - before do - stub_feature_flags(saved_replies: false) - end - - it 'does not return saved reply' do - expect(resolve_saved_reply).to be_nil - end + it 'returns users saved reply' do + expect(resolve_saved_reply).to eq(saved_reply) end - describe 'feature flag enabled' do - it 'returns users saved reply' do - expect(resolve_saved_reply).to eq(saved_reply) - end - - it 'returns nil when saved reply is not found' do - expect(resolve_saved_reply({ id: 'gid://gitlab/Users::SavedReply/100' })).to be_nil - end + it 'returns nil when saved reply is not found' do + expect(resolve_saved_reply({ id: 'gid://gitlab/Users::SavedReply/100' })).to be_nil + end - it 'returns nil when saved reply is another users' do - other_users_saved_reply = create(:saved_reply, user: create(:user)) + it 'returns nil when saved reply is another users' do + other_users_saved_reply = create(:saved_reply, user: create(:user)) - expect(resolve_saved_reply({ id: other_users_saved_reply.to_global_id })).to be_nil - end + expect(resolve_saved_reply({ id: other_users_saved_reply.to_global_id })).to be_nil end def resolve_saved_reply(args = { id: saved_reply.to_global_id }) diff --git a/spec/lib/sidebars/user_settings/menus/comment_templates_menu_spec.rb b/spec/lib/sidebars/user_settings/menus/comment_templates_menu_spec.rb index 37a383cfd9d..9a093efe6ba 100644 --- a/spec/lib/sidebars/user_settings/menus/comment_templates_menu_spec.rb +++ b/spec/lib/sidebars/user_settings/menus/comment_templates_menu_spec.rb @@ -15,10 +15,6 @@ RSpec.describe Sidebars::UserSettings::Menus::CommentTemplatesMenu, feature_cate let_it_be(:user) { build(:user) } context 'when comment templates are enabled' do - before do - allow(subject).to receive(:saved_replies_enabled?).and_return(true) - end - context 'when user is logged in' do let(:context) { Sidebars::Context.new(current_user: user, container: nil) } @@ -37,29 +33,5 @@ RSpec.describe Sidebars::UserSettings::Menus::CommentTemplatesMenu, feature_cate end end end - - context 'when comment templates are disabled' do - before do - allow(subject).to receive(:saved_replies_enabled?).and_return(false) - end - - context 'when user is logged in' do - let(:context) { Sidebars::Context.new(current_user: user, container: nil) } - - it 'renders' do - expect(subject.render?).to be false - end - end - - context 'when user is not logged in' do - let(:context) { Sidebars::Context.new(current_user: nil, container: nil) } - - subject { described_class.new(context) } - - it 'does not render' do - expect(subject.render?).to be false - end - end - end end end diff --git a/spec/models/ci/pipeline_spec.rb b/spec/models/ci/pipeline_spec.rb index 7b3a0124675..9696ba7b3ee 100644 --- a/spec/models/ci/pipeline_spec.rb +++ b/spec/models/ci/pipeline_spec.rb @@ -359,7 +359,7 @@ RSpec.describe Ci::Pipeline, :mailer, factory_default: :keep, feature_category: end it 'has an association with processable CI/CD entities' do - pipeline.processables.pluck('name').yield_self do |processables| + pipeline.processables.pluck('name').then do |processables| expect(processables).to match_array %w[build bridge] end end diff --git a/spec/models/concerns/token_authenticatable_spec.rb b/spec/models/concerns/token_authenticatable_spec.rb index 822e2817d84..9bd20676c0e 100644 --- a/spec/models/concerns/token_authenticatable_spec.rb +++ b/spec/models/concerns/token_authenticatable_spec.rb @@ -260,7 +260,7 @@ RSpec.describe Ci::Build, 'TokenAuthenticatable' do it 'persists a new token' do build.save! - build.token.yield_self do |previous_token| + build.token.then do |previous_token| build.reset_token! expect(build.token).not_to eq previous_token diff --git a/spec/models/email_spec.rb b/spec/models/email_spec.rb index b76063bfa1a..ecb8f72470d 100644 --- a/spec/models/email_spec.rb +++ b/spec/models/email_spec.rb @@ -89,7 +89,7 @@ RSpec.describe Email do end context 'when the confirmation period has expired' do - let(:confirmation_sent_at) { expired_confirmation_sent_at } + let(:confirmation_sent_at) { expired_confirmation_sent_at } it_behaves_like 'unconfirmed email' @@ -101,7 +101,7 @@ RSpec.describe Email do end context 'when the confirmation period has not expired' do - let(:confirmation_sent_at) { extant_confirmation_sent_at } + let(:confirmation_sent_at) { extant_confirmation_sent_at } it_behaves_like 'unconfirmed email' @@ -138,7 +138,7 @@ RSpec.describe Email do end context 'when the confirmation period has expired' do - let(:confirmation_sent_at) { expired_confirmation_sent_at } + let(:confirmation_sent_at) { expired_confirmation_sent_at } it_behaves_like 'unconfirmed email' it_behaves_like 'confirms the email on force_confirm' diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 17eabc0f7cd..fe229ce836f 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -1843,7 +1843,7 @@ RSpec.describe User, feature_category: :user_profile do end context 'when the confirmation period has expired' do - let(:confirmation_sent_at) { expired_confirmation_sent_at } + let(:confirmation_sent_at) { expired_confirmation_sent_at } it_behaves_like 'unconfirmed user' @@ -1861,7 +1861,7 @@ RSpec.describe User, feature_category: :user_profile do end context 'when the confirmation period has not expired' do - let(:confirmation_sent_at) { extant_confirmation_sent_at } + let(:confirmation_sent_at) { extant_confirmation_sent_at } it_behaves_like 'unconfirmed user' @@ -2052,7 +2052,7 @@ RSpec.describe User, feature_category: :user_profile do end context 'when the confirmation period has expired' do - let(:confirmation_sent_at) { expired_confirmation_sent_at } + let(:confirmation_sent_at) { expired_confirmation_sent_at } it_behaves_like 'unconfirmed user' it_behaves_like 'confirms the user on force_confirm' diff --git a/spec/presenters/user_presenter_spec.rb b/spec/presenters/user_presenter_spec.rb index d1124d73dbd..fcbadf40bc9 100644 --- a/spec/presenters/user_presenter_spec.rb +++ b/spec/presenters/user_presenter_spec.rb @@ -61,28 +61,14 @@ RSpec.describe UserPresenter do let_it_be(:other_user) { create(:user) } let_it_be(:saved_reply) { create(:saved_reply, user: user) } - context 'when feature is disabled' do - before do - stub_feature_flags(saved_replies: false) - end + context 'when user has no permission to read saved replies' do + let(:current_user) { other_user } it { expect(presenter.saved_replies).to eq(::Users::SavedReply.none) } end - context 'when feature is enabled' do - before do - stub_feature_flags(saved_replies: current_user) - end - - context 'when user has no permission to read saved replies' do - let(:current_user) { other_user } - - it { expect(presenter.saved_replies).to eq(::Users::SavedReply.none) } - end - - context 'when user has permission to read saved replies' do - it { expect(presenter.saved_replies).to eq([saved_reply]) } - end + context 'when user has permission to read saved replies' do + it { expect(presenter.saved_replies).to eq([saved_reply]) } end end end diff --git a/spec/requests/api/graphql/project/error_tracking/sentry_errors_request_spec.rb b/spec/requests/api/graphql/project/error_tracking/sentry_errors_request_spec.rb index 6cbc70022ed..c2910938acf 100644 --- a/spec/requests/api/graphql/project/error_tracking/sentry_errors_request_spec.rb +++ b/spec/requests/api/graphql/project/error_tracking/sentry_errors_request_spec.rb @@ -119,7 +119,7 @@ RSpec.describe 'sentry errors requests', feature_category: :error_tracking do end let(:error_data) { graphql_data.dig('project', 'sentryErrors', 'errors', 'nodes') } - let(:pagination_data) { graphql_data.dig('project', 'sentryErrors', 'errors', 'pageInfo') } + let(:pagination_data) { graphql_data.dig('project', 'sentryErrors', 'errors', 'pageInfo') } it_behaves_like 'a working graphql query' do before do diff --git a/spec/requests/profiles/comment_templates_controller_spec.rb b/spec/requests/profiles/comment_templates_controller_spec.rb index cdbfbb0a346..d58fc3f19ea 100644 --- a/spec/requests/profiles/comment_templates_controller_spec.rb +++ b/spec/requests/profiles/comment_templates_controller_spec.rb @@ -10,26 +10,14 @@ RSpec.describe Profiles::CommentTemplatesController, feature_category: :user_pro end describe 'GET #index' do - describe 'feature flag disabled' do - before do - stub_feature_flags(saved_replies: false) - - get '/-/profile/comment_templates' - end - - it { expect(response).to have_gitlab_http_status(:not_found) } + before do + get '/-/profile/comment_templates' end - describe 'feature flag enabled' do - before do - get '/-/profile/comment_templates' - end - - it { expect(response).to have_gitlab_http_status(:ok) } + it { expect(response).to have_gitlab_http_status(:ok) } - it 'sets hide search settings ivar' do - expect(assigns(:hide_search_settings)).to eq(true) - end + it 'sets hide search settings ivar' do + expect(assigns(:hide_search_settings)).to eq(true) end end end diff --git a/spec/support/capybara_slow_finder.rb b/spec/support/capybara_slow_finder.rb index 975ddd52c1f..697b288e8b5 100644 --- a/spec/support/capybara_slow_finder.rb +++ b/spec/support/capybara_slow_finder.rb @@ -13,13 +13,13 @@ module Capybara # Inspired by https://github.com/ngauthier/capybara-slow_finder_errors module SlowFinder def synchronize(seconds = nil, errors: nil) - start_time = Gitlab::Metrics::System.monotonic_time + start_time = ::Gitlab::Metrics::System.monotonic_time super rescue Capybara::ElementNotFound => e seconds ||= Capybara.default_max_wait_time - raise e unless seconds > 0 && Gitlab::Metrics::System.monotonic_time - start_time > seconds + raise e unless seconds > 0 && ::Gitlab::Metrics::System.monotonic_time - start_time > seconds message = format(MESSAGE, timeout: seconds) raise e, "#{$!}\n\n#{message}", e.backtrace diff --git a/spec/support/db_cleaner.rb b/spec/support/db_cleaner.rb index eeeb583cac1..0a1d68a744c 100644 --- a/spec/support/db_cleaner.rb +++ b/spec/support/db_cleaner.rb @@ -57,7 +57,7 @@ module DbCleaner end def recreate_all_databases! - start = Gitlab::Metrics::System.monotonic_time + start = ::Gitlab::Metrics::System.monotonic_time puts "Recreating the database" @@ -81,7 +81,7 @@ module DbCleaner Gitlab::Database::Partitioning.sync_partitions_ignore_db_error stub_feature_flags(disallow_database_ddl_feature_flags: disable_ddl_was) - puts "Databases re-creation done in #{Gitlab::Metrics::System.monotonic_time - start}" + puts "Databases re-creation done in #{::Gitlab::Metrics::System.monotonic_time - start}" end def recreate_databases_and_seed_if_needed diff --git a/spec/support/helpers/database/duplicate_indexes.yml b/spec/support/helpers/database/duplicate_indexes.yml index 57ce762bbda..1ebc45a9d81 100644 --- a/spec/support/helpers/database/duplicate_indexes.yml +++ b/spec/support/helpers/database/duplicate_indexes.yml @@ -167,11 +167,6 @@ project_repositories: project_topics: index_project_topics_on_project_id_and_topic_id: - index_project_topics_on_project_id -projects: - index_projects_api_path_id_desc: - - index_on_projects_path - index_projects_on_path_and_id: - - index_on_projects_path protected_environments: index_protected_environments_on_project_id_and_name: - index_protected_environments_on_project_id 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 9eaad541df7..b7247f1f243 100644 --- a/spec/support/shared_examples/serializers/environment_serializer_shared_examples.rb +++ b/spec/support/shared_examples/serializers/environment_serializer_shared_examples.rb @@ -48,7 +48,7 @@ RSpec.shared_examples 'avoid N+1 on environments serialization' do query ||= { page: 1, per_page: 20 } request = double(url: "#{Gitlab.config.gitlab.url}:8080/api/v4/projects?#{query.to_query}", query_parameters: query) - EnvironmentSerializer.new(current_user: user, project: project).yield_self do |serializer| + EnvironmentSerializer.new(current_user: user, project: project).then do |serializer| serializer.within_folders if grouping serializer.with_pagination(request, spy('response')) serializer.represent(Environment.where(project: project)) diff --git a/spec/tasks/gitlab/db_rake_spec.rb b/spec/tasks/gitlab/db_rake_spec.rb index ba266168627..a966f2118b0 100644 --- a/spec/tasks/gitlab/db_rake_spec.rb +++ b/spec/tasks/gitlab/db_rake_spec.rb @@ -601,8 +601,8 @@ RSpec.describe 'gitlab:db namespace rake task', :silence_stdout, feature_categor end describe 'drop_tables' do - let(:tables) { %w(one two schema_migrations) } - let(:views) { %w(three four pg_stat_statements) } + let(:tables) { %w[one two schema_migrations] } + let(:views) { %w[three four pg_stat_statements] } let(:schemas) { Gitlab::Database::EXTRA_SCHEMAS } let(:ignored_views) { double(ActiveRecord::Relation, pluck: ['pg_stat_statements']) } diff --git a/spec/tooling/danger/customer_success_spec.rb b/spec/tooling/danger/customer_success_spec.rb index fd3ead7b2d6..40ab7c79418 100644 --- a/spec/tooling/danger/customer_success_spec.rb +++ b/spec/tooling/danger/customer_success_spec.rb @@ -17,53 +17,53 @@ RSpec.describe Tooling::Danger::CustomerSuccess do where do { 'with data category changes to Ops and no Customer Success::Impact Check label' => { - modified_files: %w(config/metrics/20210216182127_user_secret_detection_jobs.yml app/models/user.rb), + modified_files: %w[config/metrics/20210216182127_user_secret_detection_jobs.yml app/models/user.rb], changed_lines: ['-data_category: cat1', '+data_category: operational'], customer_labeled: false, impacted: true, - impacted_files: %w(config/metrics/20210216182127_user_secret_detection_jobs.yml) + impacted_files: %w[config/metrics/20210216182127_user_secret_detection_jobs.yml] }, 'with data category changes and Customer Success::Impact Check label' => { - modified_files: %w(config/metrics/20210216182127_user_secret_detection_jobs.yml), + modified_files: %w[config/metrics/20210216182127_user_secret_detection_jobs.yml], changed_lines: ['-data_category: cat1', '+data_category: operational'], customer_labeled: true, impacted: false, - impacted_files: %w(config/metrics/20210216182127_user_secret_detection_jobs.yml) + impacted_files: %w[config/metrics/20210216182127_user_secret_detection_jobs.yml] }, 'with metric file changes and no data category changes' => { - modified_files: %w(config/metrics/20210216182127_user_secret_detection_jobs.yml), + modified_files: %w[config/metrics/20210216182127_user_secret_detection_jobs.yml], changed_lines: ['-product_stage: growth'], customer_labeled: false, impacted: false, impacted_files: [] }, 'with data category changes from Ops' => { - modified_files: %w(config/metrics/20210216182127_user_secret_detection_jobs.yml app/models/user.rb), + modified_files: %w[config/metrics/20210216182127_user_secret_detection_jobs.yml app/models/user.rb], changed_lines: ['-data_category: operational', '+data_category: cat2'], customer_labeled: false, impacted: true, - impacted_files: %w(config/metrics/20210216182127_user_secret_detection_jobs.yml) + impacted_files: %w[config/metrics/20210216182127_user_secret_detection_jobs.yml] }, 'with data category removed' => { - modified_files: %w(config/metrics/20210216182127_user_secret_detection_jobs.yml app/models/user.rb), + modified_files: %w[config/metrics/20210216182127_user_secret_detection_jobs.yml app/models/user.rb], changed_lines: ['-data_category: operational'], customer_labeled: false, impacted: true, - impacted_files: %w(config/metrics/20210216182127_user_secret_detection_jobs.yml) + impacted_files: %w[config/metrics/20210216182127_user_secret_detection_jobs.yml] }, 'with data category added' => { - modified_files: %w(config/metrics/20210216182127_user_secret_detection_jobs.yml app/models/user.rb), + modified_files: %w[config/metrics/20210216182127_user_secret_detection_jobs.yml app/models/user.rb], changed_lines: ['+data_category: operational'], customer_labeled: false, impacted: true, - impacted_files: %w(config/metrics/20210216182127_user_secret_detection_jobs.yml) + impacted_files: %w[config/metrics/20210216182127_user_secret_detection_jobs.yml] }, 'with data category in uppercase' => { - modified_files: %w(config/metrics/20210216182127_user_secret_detection_jobs.yml app/models/user.rb), + modified_files: %w[config/metrics/20210216182127_user_secret_detection_jobs.yml app/models/user.rb], changed_lines: ['+data_category: Operational'], customer_labeled: false, impacted: true, - impacted_files: %w(config/metrics/20210216182127_user_secret_detection_jobs.yml) + impacted_files: %w[config/metrics/20210216182127_user_secret_detection_jobs.yml] } } end diff --git a/spec/tooling/danger/datateam_spec.rb b/spec/tooling/danger/datateam_spec.rb index 85fcc20fd7c..9d8aaf08520 100644 --- a/spec/tooling/danger/datateam_spec.rb +++ b/spec/tooling/danger/datateam_spec.rb @@ -17,95 +17,95 @@ RSpec.describe Tooling::Danger::Datateam do where do { 'with structure.sql subtraction changes and no Data Warehouse::Impact Check label' => { - modified_files: %w(db/structure.sql app/models/user.rb), + modified_files: %w[db/structure.sql app/models/user.rb], changed_lines: ['-group_id bigint NOT NULL'], mr_labels: [], impacted: true, - impacted_files: %w(db/structure.sql) + impacted_files: %w[db/structure.sql] }, 'with structure.sql subtraction changes and Data Warehouse::Impact Check label' => { - modified_files: %w(db/structure.sql), + modified_files: %w[db/structure.sql], changed_lines: ['-group_id bigint NOT NULL)'], mr_labels: ['Data Warehouse::Impact Check'], impacted: false, - impacted_files: %w(db/structure.sql) + impacted_files: %w[db/structure.sql] }, 'with structure.sql addition changes and no Data Warehouse::Impact Check label' => { - modified_files: %w(db/structure.sql app/models/user.rb), + modified_files: %w[db/structure.sql app/models/user.rb], changed_lines: ['+group_id bigint NOT NULL'], mr_labels: [], impacted: false, - impacted_files: %w(db/structure.sql) + impacted_files: %w[db/structure.sql] }, 'with user model changes' => { - modified_files: %w(app/models/users.rb), + modified_files: %w[app/models/users.rb], changed_lines: ['+has_one :namespace'], mr_labels: [], impacted: false, impacted_files: [] }, 'with perfomance indicator changes and no Data Warehouse::Impact Check label' => { - modified_files: %w(config/metrics/20210216182127_user_secret_detection_jobs.yml app/models/user.rb), + modified_files: %w[config/metrics/20210216182127_user_secret_detection_jobs.yml app/models/user.rb], changed_lines: ['+-gmau'], mr_labels: [], impacted: true, - impacted_files: %w(config/metrics/20210216182127_user_secret_detection_jobs.yml) + impacted_files: %w[config/metrics/20210216182127_user_secret_detection_jobs.yml] }, 'with perfomance indicator changes and Data Warehouse::Impact Check label' => { - modified_files: %w(config/metrics/20210216182127_user_secret_detection_jobs.yml), + modified_files: %w[config/metrics/20210216182127_user_secret_detection_jobs.yml], changed_lines: ['+-gmau'], mr_labels: ['Data Warehouse::Impact Check'], impacted: false, - impacted_files: %w(config/metrics/20210216182127_user_secret_detection_jobs.yml) + impacted_files: %w[config/metrics/20210216182127_user_secret_detection_jobs.yml] }, 'with metric file changes and no performance indicator changes' => { - modified_files: %w(config/metrics/20210216182127_user_secret_detection_jobs.yml), + modified_files: %w[config/metrics/20210216182127_user_secret_detection_jobs.yml], changed_lines: ['-product_stage: growth'], mr_labels: [], impacted: false, impacted_files: [] }, 'with metric file changes and no performance indicator changes and other label' => { - modified_files: %w(config/metrics/20210216182127_user_secret_detection_jobs.yml), + modified_files: %w[config/metrics/20210216182127_user_secret_detection_jobs.yml], changed_lines: ['-product_stage: growth'], mr_labels: ['type::maintenance'], impacted: false, impacted_files: [] }, 'with performance indicator changes and other label' => { - modified_files: %w(config/metrics/20210216182127_user_secret_detection_jobs.yml app/models/user.rb), + modified_files: %w[config/metrics/20210216182127_user_secret_detection_jobs.yml app/models/user.rb], changed_lines: ['+-gmau'], mr_labels: ['type::maintenance'], impacted: true, - impacted_files: %w(config/metrics/20210216182127_user_secret_detection_jobs.yml) + impacted_files: %w[config/metrics/20210216182127_user_secret_detection_jobs.yml] }, 'with performance indicator changes, Data Warehouse::Impact Check and other label' => { - modified_files: %w(config/metrics/20210216182127_user_secret_detection_jobs.yml app/models/user.rb), + modified_files: %w[config/metrics/20210216182127_user_secret_detection_jobs.yml app/models/user.rb], changed_lines: ['+-gmau'], mr_labels: ['type::maintenance', 'Data Warehouse::Impact Check'], impacted: false, - impacted_files: %w(config/metrics/20210216182127_user_secret_detection_jobs.yml) + impacted_files: %w[config/metrics/20210216182127_user_secret_detection_jobs.yml] }, 'with performance indicator changes and other labels' => { - modified_files: %w(config/metrics/20210216182127_user_secret_detection_jobs.yml app/models/user.rb), + modified_files: %w[config/metrics/20210216182127_user_secret_detection_jobs.yml app/models/user.rb], changed_lines: ['+-gmau'], mr_labels: ['type::maintenance', 'Data Warehouse::Impacted'], impacted: false, - impacted_files: %w(config/metrics/20210216182127_user_secret_detection_jobs.yml) + impacted_files: %w[config/metrics/20210216182127_user_secret_detection_jobs.yml] }, 'with metric status removed' => { - modified_files: %w(config/metrics/20210216182127_user_secret_detection_jobs.yml app/models/user.rb), + modified_files: %w[config/metrics/20210216182127_user_secret_detection_jobs.yml app/models/user.rb], changed_lines: ['+status: removed'], mr_labels: ['type::maintenance'], impacted: true, - impacted_files: %w(config/metrics/20210216182127_user_secret_detection_jobs.yml) + impacted_files: %w[config/metrics/20210216182127_user_secret_detection_jobs.yml] }, 'with metric status active' => { - modified_files: %w(config/metrics/20210216182127_user_secret_detection_jobs.yml app/models/user.rb), + modified_files: %w[config/metrics/20210216182127_user_secret_detection_jobs.yml app/models/user.rb], changed_lines: ['+status: active'], mr_labels: ['type::maintenance'], impacted: false, - impacted_files: %w(config/metrics/20210216182127_user_secret_detection_jobs.yml) + impacted_files: %w[config/metrics/20210216182127_user_secret_detection_jobs.yml] } } end diff --git a/spec/tooling/danger/sidekiq_queues_spec.rb b/spec/tooling/danger/sidekiq_queues_spec.rb index 5ebcb018cc3..143ea9732cd 100644 --- a/spec/tooling/danger/sidekiq_queues_spec.rb +++ b/spec/tooling/danger/sidekiq_queues_spec.rb @@ -17,12 +17,12 @@ RSpec.describe Tooling::Danger::SidekiqQueues do using RSpec::Parameterized::TableSyntax where(:modified_files, :changed_queue_files) do - %w(app/workers/all_queues.yml ee/app/workers/all_queues.yml foo) | %w(app/workers/all_queues.yml ee/app/workers/all_queues.yml) - %w(app/workers/all_queues.yml ee/app/workers/all_queues.yml) | %w(app/workers/all_queues.yml ee/app/workers/all_queues.yml) - %w(app/workers/all_queues.yml foo) | %w(app/workers/all_queues.yml) - %w(ee/app/workers/all_queues.yml foo) | %w(ee/app/workers/all_queues.yml) - %w(foo) | %w() - %w() | %w() + %w[app/workers/all_queues.yml ee/app/workers/all_queues.yml foo] | %w[app/workers/all_queues.yml ee/app/workers/all_queues.yml] + %w[app/workers/all_queues.yml ee/app/workers/all_queues.yml] | %w[app/workers/all_queues.yml ee/app/workers/all_queues.yml] + %w[app/workers/all_queues.yml foo] | %w[app/workers/all_queues.yml] + %w[ee/app/workers/all_queues.yml foo] | %w[ee/app/workers/all_queues.yml] + %w[foo] | %w[] + %w[] | %w[] end with_them do diff --git a/spec/tooling/lib/tooling/test_map_generator_spec.rb b/spec/tooling/lib/tooling/test_map_generator_spec.rb index 1b369923d8d..eaaf525fc49 100644 --- a/spec/tooling/lib/tooling/test_map_generator_spec.rb +++ b/spec/tooling/lib/tooling/test_map_generator_spec.rb @@ -88,7 +88,7 @@ RSpec.describe Tooling::TestMapGenerator do end it 'displays a warning when report has no examples' do - expect { subject.parse('yaml3.yml') }.to output(%|No examples in yaml3.yml! Metadata: {:type=>"Crystalball::ExecutionMap", :commit=>"74056e8d9cf3773f43faa1cf5416f8779c8284c9", :timestamp=>1602671965, :version=>nil}\n|).to_stdout + expect { subject.parse('yaml3.yml') }.to output(%(No examples in yaml3.yml! Metadata: {:type=>"Crystalball::ExecutionMap", :commit=>"74056e8d9cf3773f43faa1cf5416f8779c8284c9", :timestamp=>1602671965, :version=>nil}\n)).to_stdout end end diff --git a/spec/uploaders/attachment_uploader_spec.rb b/spec/uploaders/attachment_uploader_spec.rb index a035402e207..e4e96aa15b7 100644 --- a/spec/uploaders/attachment_uploader_spec.rb +++ b/spec/uploaders/attachment_uploader_spec.rb @@ -10,9 +10,9 @@ RSpec.describe AttachmentUploader do subject { uploader } it_behaves_like 'builds correct paths', - store_dir: %r[uploads/-/system/note/attachment/], - upload_path: %r[uploads/-/system/note/attachment/], - absolute_path: %r[#{CarrierWave.root}/uploads/-/system/note/attachment/] + store_dir: %r{uploads/-/system/note/attachment/}, + upload_path: %r{uploads/-/system/note/attachment/}, + absolute_path: %r{#{CarrierWave.root}/uploads/-/system/note/attachment/} context "object_store is REMOTE" do before do @@ -22,8 +22,8 @@ RSpec.describe AttachmentUploader do include_context 'with storage', described_class::Store::REMOTE it_behaves_like 'builds correct paths', - store_dir: %r[note/attachment/], - upload_path: %r[note/attachment/] + store_dir: %r{note/attachment/}, + upload_path: %r{note/attachment/} end describe "#migrate!" do diff --git a/spec/uploaders/avatar_uploader_spec.rb b/spec/uploaders/avatar_uploader_spec.rb index bba7eb78f99..333f23d7947 100644 --- a/spec/uploaders/avatar_uploader_spec.rb +++ b/spec/uploaders/avatar_uploader_spec.rb @@ -10,9 +10,9 @@ RSpec.describe AvatarUploader do subject { uploader } it_behaves_like 'builds correct paths', - store_dir: %r[uploads/-/system/user/avatar/], - upload_path: %r[uploads/-/system/user/avatar/], - absolute_path: %r[#{CarrierWave.root}/uploads/-/system/user/avatar/] + store_dir: %r{uploads/-/system/user/avatar/}, + upload_path: %r{uploads/-/system/user/avatar/}, + absolute_path: %r{#{CarrierWave.root}/uploads/-/system/user/avatar/} context "object_store is REMOTE" do before do @@ -22,8 +22,8 @@ RSpec.describe AvatarUploader do include_context 'with storage', described_class::Store::REMOTE it_behaves_like 'builds correct paths', - store_dir: %r[user/avatar/], - upload_path: %r[user/avatar/] + store_dir: %r{user/avatar/}, + upload_path: %r{user/avatar/} end context "with a file" do diff --git a/spec/uploaders/ci/pipeline_artifact_uploader_spec.rb b/spec/uploaders/ci/pipeline_artifact_uploader_spec.rb index 3935f081372..ace7bcbce48 100644 --- a/spec/uploaders/ci/pipeline_artifact_uploader_spec.rb +++ b/spec/uploaders/ci/pipeline_artifact_uploader_spec.rb @@ -10,8 +10,8 @@ RSpec.describe Ci::PipelineArtifactUploader do it_behaves_like "builds correct paths", store_dir: %r[\h{2}/\h{2}/\h{64}/pipelines/\d+/artifacts/\d+], - cache_dir: %r[artifacts/tmp/cache], - work_dir: %r[artifacts/tmp/work] + cache_dir: %r{artifacts/tmp/cache}, + work_dir: %r{artifacts/tmp/work} context 'when object store is REMOTE' do before do diff --git a/spec/uploaders/dependency_proxy/file_uploader_spec.rb b/spec/uploaders/dependency_proxy/file_uploader_spec.rb index 3cb2d1ea0f0..faaa5541f0b 100644 --- a/spec/uploaders/dependency_proxy/file_uploader_spec.rb +++ b/spec/uploaders/dependency_proxy/file_uploader_spec.rb @@ -12,8 +12,8 @@ RSpec.describe DependencyProxy::FileUploader do it_behaves_like "builds correct paths", store_dir: %r[\h{2}/\h{2}], - cache_dir: %r[/dependency_proxy/tmp/cache], - work_dir: %r[/dependency_proxy/tmp/work] + cache_dir: %r{/dependency_proxy/tmp/cache}, + work_dir: %r{/dependency_proxy/tmp/work} context 'object store is remote' do before do diff --git a/spec/uploaders/design_management/design_v432x230_uploader_spec.rb b/spec/uploaders/design_management/design_v432x230_uploader_spec.rb index 3991058b32d..edfab24331c 100644 --- a/spec/uploaders/design_management/design_v432x230_uploader_spec.rb +++ b/spec/uploaders/design_management/design_v432x230_uploader_spec.rb @@ -11,10 +11,10 @@ RSpec.describe DesignManagement::DesignV432x230Uploader do subject(:uploader) { described_class.new(model, :image_v432x230) } it_behaves_like 'builds correct paths', - store_dir: %r[uploads/-/system/design_management/action/image_v432x230/], - upload_path: %r[uploads/-/system/design_management/action/image_v432x230/], - relative_path: %r[uploads/-/system/design_management/action/image_v432x230/], - absolute_path: %r[#{CarrierWave.root}/uploads/-/system/design_management/action/image_v432x230/] + store_dir: %r{uploads/-/system/design_management/action/image_v432x230/}, + upload_path: %r{uploads/-/system/design_management/action/image_v432x230/}, + relative_path: %r{uploads/-/system/design_management/action/image_v432x230/}, + absolute_path: %r{#{CarrierWave.root}/uploads/-/system/design_management/action/image_v432x230/} context 'object_store is REMOTE' do before do @@ -24,9 +24,9 @@ RSpec.describe DesignManagement::DesignV432x230Uploader do include_context 'with storage', described_class::Store::REMOTE it_behaves_like 'builds correct paths', - store_dir: %r[design_management/action/image_v432x230/], - upload_path: %r[design_management/action/image_v432x230/], - relative_path: %r[design_management/action/image_v432x230/] + store_dir: %r{design_management/action/image_v432x230/}, + upload_path: %r{design_management/action/image_v432x230/}, + relative_path: %r{design_management/action/image_v432x230/} end describe "#migrate!" do diff --git a/spec/uploaders/external_diff_uploader_spec.rb b/spec/uploaders/external_diff_uploader_spec.rb index 2121e9cbc29..25e8bd0a4dc 100644 --- a/spec/uploaders/external_diff_uploader_spec.rb +++ b/spec/uploaders/external_diff_uploader_spec.rb @@ -9,9 +9,9 @@ RSpec.describe ExternalDiffUploader do subject(:uploader) { described_class.new(diff, :external_diff) } it_behaves_like "builds correct paths", - store_dir: %r[merge_request_diffs/mr-\d+], - cache_dir: %r[/external-diffs/tmp/cache], - work_dir: %r[/external-diffs/tmp/work] + store_dir: %r{merge_request_diffs/mr-\d+}, + cache_dir: %r{/external-diffs/tmp/cache}, + work_dir: %r{/external-diffs/tmp/work} context "object store is REMOTE" do before do @@ -21,7 +21,7 @@ RSpec.describe ExternalDiffUploader do include_context 'with storage', described_class::Store::REMOTE it_behaves_like "builds correct paths", - store_dir: %r[merge_request_diffs/mr-\d+] + store_dir: %r{merge_request_diffs/mr-\d+} end describe 'remote file' do diff --git a/spec/uploaders/import_export_uploader_spec.rb b/spec/uploaders/import_export_uploader_spec.rb index 64e92f5d60e..1a2041df3d0 100644 --- a/spec/uploaders/import_export_uploader_spec.rb +++ b/spec/uploaders/import_export_uploader_spec.rb @@ -39,8 +39,8 @@ RSpec.describe ImportExportUploader do include_context 'with storage', described_class::Store::REMOTE patterns = { - store_dir: %r[import_export_upload/import_file/], - upload_path: %r[import_export_upload/import_file/] + store_dir: %r{import_export_upload/import_file/}, + upload_path: %r{import_export_upload/import_file/} } it_behaves_like 'builds correct paths', patterns do diff --git a/spec/uploaders/job_artifact_uploader_spec.rb b/spec/uploaders/job_artifact_uploader_spec.rb index dac9e97641d..ea4f0036fa4 100644 --- a/spec/uploaders/job_artifact_uploader_spec.rb +++ b/spec/uploaders/job_artifact_uploader_spec.rb @@ -11,8 +11,8 @@ RSpec.describe JobArtifactUploader do it_behaves_like "builds correct paths", store_dir: %r[\h{2}/\h{2}/\h{64}/\d{4}_\d{1,2}_\d{1,2}/\d+/\d+\z], - cache_dir: %r[artifacts/tmp/cache], - work_dir: %r[artifacts/tmp/work] + cache_dir: %r{artifacts/tmp/cache}, + work_dir: %r{artifacts/tmp/work} context "object store is REMOTE" do before do diff --git a/spec/uploaders/lfs_object_uploader_spec.rb b/spec/uploaders/lfs_object_uploader_spec.rb index 9bbfd910ada..77bde5da7ea 100644 --- a/spec/uploaders/lfs_object_uploader_spec.rb +++ b/spec/uploaders/lfs_object_uploader_spec.rb @@ -11,8 +11,8 @@ RSpec.describe LfsObjectUploader do it_behaves_like "builds correct paths", store_dir: %r[\h{2}/\h{2}], - cache_dir: %r[/lfs-objects/tmp/cache], - work_dir: %r[/lfs-objects/tmp/work] + cache_dir: %r{/lfs-objects/tmp/cache}, + work_dir: %r{/lfs-objects/tmp/work} context "object store is REMOTE" do before do diff --git a/spec/uploaders/namespace_file_uploader_spec.rb b/spec/uploaders/namespace_file_uploader_spec.rb index 02381123ba5..0db7f82dcbd 100644 --- a/spec/uploaders/namespace_file_uploader_spec.rb +++ b/spec/uploaders/namespace_file_uploader_spec.rb @@ -13,9 +13,9 @@ RSpec.describe NamespaceFileUploader do it_behaves_like 'builds correct paths' do let(:patterns) do { - store_dir: %r[uploads/-/system/namespace/\d+], + store_dir: %r{uploads/-/system/namespace/\d+}, upload_path: identifier, - absolute_path: %r[#{CarrierWave.root}/uploads/-/system/namespace/\d+/#{identifier}] + absolute_path: %r{#{CarrierWave.root}/uploads/-/system/namespace/\d+/#{identifier}} } end end @@ -30,7 +30,7 @@ RSpec.describe NamespaceFileUploader do it_behaves_like 'builds correct paths' do let(:patterns) do { - store_dir: %r[namespace/\d+/\h+], + store_dir: %r{namespace/\d+/\h+}, upload_path: identifier } end diff --git a/spec/uploaders/object_storage_spec.rb b/spec/uploaders/object_storage_spec.rb index 576f6deeec6..e4a9b92df64 100644 --- a/spec/uploaders/object_storage_spec.rb +++ b/spec/uploaders/object_storage_spec.rb @@ -255,7 +255,7 @@ RSpec.describe ObjectStorage, :clean_gitlab_redis_shared_state, feature_category describe '#use_file' do context 'when file is stored locally' do it "calls a regular path" do - expect { |b| uploader.use_file(&b) }.not_to yield_with_args(%r[tmp/cache]) + expect { |b| uploader.use_file(&b) }.not_to yield_with_args(%r{tmp/cache}) end end @@ -267,7 +267,7 @@ RSpec.describe ObjectStorage, :clean_gitlab_redis_shared_state, feature_category end it "calls a cache path" do - expect { |b| uploader.use_file(&b) }.to yield_with_args(%r[tmp/cache]) + expect { |b| uploader.use_file(&b) }.to yield_with_args(%r{tmp/cache}) end it "cleans up the cached file" do diff --git a/spec/uploaders/packages/composer/cache_uploader_spec.rb b/spec/uploaders/packages/composer/cache_uploader_spec.rb index 7eea4a839ab..56e8b28ef36 100644 --- a/spec/uploaders/packages/composer/cache_uploader_spec.rb +++ b/spec/uploaders/packages/composer/cache_uploader_spec.rb @@ -10,8 +10,8 @@ RSpec.describe Packages::Composer::CacheUploader do it_behaves_like "builds correct paths", store_dir: %r[^\h{2}/\h{2}/\h{64}/packages/composer_cache/\d+$], - cache_dir: %r[/packages/tmp/cache], - work_dir: %r[/packages/tmp/work] + cache_dir: %r{/packages/tmp/cache}, + work_dir: %r{/packages/tmp/work} context 'object store is remote' do before do diff --git a/spec/uploaders/packages/debian/component_file_uploader_spec.rb b/spec/uploaders/packages/debian/component_file_uploader_spec.rb index 84ba751c737..ffc5d8085fa 100644 --- a/spec/uploaders/packages/debian/component_file_uploader_spec.rb +++ b/spec/uploaders/packages/debian/component_file_uploader_spec.rb @@ -13,8 +13,8 @@ RSpec.describe Packages::Debian::ComponentFileUploader do it_behaves_like "builds correct paths", store_dir: %r[^\h{2}/\h{2}/\h{64}/debian_#{container_type}_component_file/\d+$], - cache_dir: %r[/packages/tmp/cache$], - work_dir: %r[/packages/tmp/work$] + cache_dir: %r{/packages/tmp/cache$}, + work_dir: %r{/packages/tmp/work$} context 'object store is remote' do before do @@ -25,8 +25,8 @@ RSpec.describe Packages::Debian::ComponentFileUploader do it_behaves_like "builds correct paths", store_dir: %r[^\h{2}/\h{2}/\h{64}/debian_#{container_type}_component_file/\d+$], - cache_dir: %r[/packages/tmp/cache$], - work_dir: %r[/packages/tmp/work$] + cache_dir: %r{/packages/tmp/cache$}, + work_dir: %r{/packages/tmp/work$} end describe 'remote file' do diff --git a/spec/uploaders/packages/debian/distribution_release_file_uploader_spec.rb b/spec/uploaders/packages/debian/distribution_release_file_uploader_spec.rb index df630569856..2086ab5966c 100644 --- a/spec/uploaders/packages/debian/distribution_release_file_uploader_spec.rb +++ b/spec/uploaders/packages/debian/distribution_release_file_uploader_spec.rb @@ -13,8 +13,8 @@ RSpec.describe Packages::Debian::DistributionReleaseFileUploader do it_behaves_like "builds correct paths", store_dir: %r[^\h{2}/\h{2}/\h{64}/debian_#{container_type}_distribution/\d+$], - cache_dir: %r[/packages/tmp/cache$], - work_dir: %r[/packages/tmp/work$] + cache_dir: %r{/packages/tmp/cache$}, + work_dir: %r{/packages/tmp/work$} context 'object store is remote' do before do @@ -25,8 +25,8 @@ RSpec.describe Packages::Debian::DistributionReleaseFileUploader do it_behaves_like "builds correct paths", store_dir: %r[^\h{2}/\h{2}/\h{64}/debian_#{container_type}_distribution/\d+$], - cache_dir: %r[/packages/tmp/cache$], - work_dir: %r[/packages/tmp/work$] + cache_dir: %r{/packages/tmp/cache$}, + work_dir: %r{/packages/tmp/work$} end describe 'remote file' do diff --git a/spec/uploaders/packages/package_file_uploader_spec.rb b/spec/uploaders/packages/package_file_uploader_spec.rb index ddd9823d55c..36acb681669 100644 --- a/spec/uploaders/packages/package_file_uploader_spec.rb +++ b/spec/uploaders/packages/package_file_uploader_spec.rb @@ -10,8 +10,8 @@ RSpec.describe Packages::PackageFileUploader do it_behaves_like "builds correct paths", store_dir: %r[^\h{2}/\h{2}/\h{64}/packages/\d+/files/\d+$], - cache_dir: %r[/packages/tmp/cache], - work_dir: %r[/packages/tmp/work] + cache_dir: %r{/packages/tmp/cache}, + work_dir: %r{/packages/tmp/work} context 'object store is remote' do before do diff --git a/spec/uploaders/pages/deployment_uploader_spec.rb b/spec/uploaders/pages/deployment_uploader_spec.rb index 7686efd4fe4..a5fe2dfe9ba 100644 --- a/spec/uploaders/pages/deployment_uploader_spec.rb +++ b/spec/uploaders/pages/deployment_uploader_spec.rb @@ -14,8 +14,8 @@ RSpec.describe Pages::DeploymentUploader do it_behaves_like "builds correct paths", store_dir: %r[/\h{2}/\h{2}/\h{64}/pages_deployments/\d+], - cache_dir: %r[pages/@hashed/tmp/cache], - work_dir: %r[pages/@hashed/tmp/work] + cache_dir: %r{pages/@hashed/tmp/cache}, + work_dir: %r{pages/@hashed/tmp/work} context 'when object store is REMOTE' do before do diff --git a/spec/uploaders/personal_file_uploader_spec.rb b/spec/uploaders/personal_file_uploader_spec.rb index 58edf3f093d..de5ed8318e4 100644 --- a/spec/uploaders/personal_file_uploader_spec.rb +++ b/spec/uploaders/personal_file_uploader_spec.rb @@ -43,16 +43,16 @@ RSpec.describe PersonalFileUploader do it 'builds correct paths for both local and remote storage' do paths = uploader.upload_paths('test.jpg') - expect(paths.first).to match(%r[\h+/test.jpg]) - expect(paths.second).to match(%r[^personal_snippet/\d+/\h+/test.jpg]) + expect(paths.first).to match(%r{\h+/test.jpg}) + expect(paths.second).to match(%r{^personal_snippet/\d+/\h+/test.jpg}) end end context 'object_store is LOCAL' do it_behaves_like 'builds correct paths', - store_dir: %r[uploads/-/system/personal_snippet/\d+/\h+], - upload_path: %r[\h+/\S+], - absolute_path: %r[#{CarrierWave.root}/uploads/-/system/personal_snippet/\d+/\h+/\S+$] + store_dir: %r{uploads/-/system/personal_snippet/\d+/\h+}, + upload_path: %r{\h+/\S+}, + absolute_path: %r{#{CarrierWave.root}/uploads/-/system/personal_snippet/\d+/\h+/\S+$} it_behaves_like '#base_dir' it_behaves_like '#to_h' @@ -66,8 +66,8 @@ RSpec.describe PersonalFileUploader do include_context 'with storage', described_class::Store::REMOTE it_behaves_like 'builds correct paths', - store_dir: %r[\d+/\h+], - upload_path: %r[^personal_snippet/\d+/\h+/<filename>] + store_dir: %r{\d+/\h+}, + upload_path: %r{^personal_snippet/\d+/\h+/<filename>} it_behaves_like '#base_dir' it_behaves_like '#to_h' diff --git a/spec/validators/any_field_validator_spec.rb b/spec/validators/any_field_validator_spec.rb index bede006abf6..2d3d3982828 100644 --- a/spec/validators/any_field_validator_spec.rb +++ b/spec/validators/any_field_validator_spec.rb @@ -8,7 +8,7 @@ RSpec.describe AnyFieldValidator do Class.new(ApplicationRecord) do self.table_name = 'vulnerabilities' - validates_with AnyFieldValidator, fields: %w(title description) + validates_with AnyFieldValidator, fields: %w[title description] end end @@ -18,7 +18,7 @@ RSpec.describe AnyFieldValidator do expect(validated_object.valid?).to be_falsey expect(validated_object.errors.messages) .to eq(base: ["At least one field of %{one_of_required_fields} must be present" % - { one_of_required_fields: %w(title description) }]) + { one_of_required_fields: %w[title description] }]) end it 'validates if only one field is present' do diff --git a/spec/views/layouts/_head.html.haml_spec.rb b/spec/views/layouts/_head.html.haml_spec.rb index 504a9492d7a..56936dbafcf 100644 --- a/spec/views/layouts/_head.html.haml_spec.rb +++ b/spec/views/layouts/_head.html.haml_spec.rb @@ -15,7 +15,7 @@ RSpec.describe 'layouts/_head' do render - expect(rendered).to match(%{content="foo" http-equiv="refresh"}) + expect(rendered).to match(%(content="foo" http-equiv="refresh")) end it 'escapes HTML-safe strings in page_description' do @@ -23,7 +23,7 @@ RSpec.describe 'layouts/_head' do render - expect(rendered).to match(%{content="foo" http-equiv="refresh"}) + expect(rendered).to match(%(content="foo" http-equiv="refresh")) end it 'escapes HTML-safe strings in page_image' do @@ -31,7 +31,7 @@ RSpec.describe 'layouts/_head' do render - expect(rendered).to match(%{content="foo" http-equiv="refresh"}) + expect(rendered).to match(%(content="foo" http-equiv="refresh")) end context 'when an asset_host is set' do @@ -101,7 +101,7 @@ RSpec.describe 'layouts/_head' do render expect(rendered).to match(%r{<script.*>.*var u="//#{matomo_host}/".*</script>}m) - expect(rendered).to match(%r(<noscript>.*<img src="//#{matomo_host}/matomo.php.*</noscript>)) + expect(rendered).to match(%r{<noscript>.*<img src="//#{matomo_host}/matomo.php.*</noscript>}) expect(rendered).not_to include('_paq.push(["disableCookies"])') end @@ -120,6 +120,6 @@ RSpec.describe 'layouts/_head' do def stub_helper_with_safe_string(method) allow_any_instance_of(PageLayoutHelper).to receive(method) - .and_return(%q{foo" http-equiv="refresh}.html_safe) + .and_return(%q(foo" http-equiv="refresh).html_safe) end end diff --git a/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb b/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb index 005283f66da..34debcab5f7 100644 --- a/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb +++ b/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb @@ -32,7 +32,7 @@ RSpec.describe 'layouts/nav/sidebar/_project', feature_category: :navigation do it 'has a link to the project activity path' do render - expect(rendered).to have_link('Project information', href: activity_project_path(project), class: %w(shortcuts-project-information)) + expect(rendered).to have_link('Project information', href: activity_project_path(project), class: %w[shortcuts-project-information]) expect(rendered).to have_selector('[aria-label="Project information"]') end diff --git a/spec/views/projects/commit/branches.html.haml_spec.rb b/spec/views/projects/commit/branches.html.haml_spec.rb index f1064be3047..d6fbf6453c0 100644 --- a/spec/views/projects/commit/branches.html.haml_spec.rb +++ b/spec/views/projects/commit/branches.html.haml_spec.rb @@ -61,7 +61,7 @@ RSpec.describe 'projects/commit/branches.html.haml' do before do assign(:branches, ['master']) assign(:branches_limit_exceeded, true) - assign(:tags, %w(tag1 tag2)) + assign(:tags, %w[tag1 tag2]) assign(:tags_limit_exceeded, false) render diff --git a/spec/workers/concerns/worker_context_spec.rb b/spec/workers/concerns/worker_context_spec.rb index 700d9e37a55..7a046517fd1 100644 --- a/spec/workers/concerns/worker_context_spec.rb +++ b/spec/workers/concerns/worker_context_spec.rb @@ -74,7 +74,7 @@ RSpec.describe WorkerContext, feature_category: :shared do describe '.bulk_perform_async_with_contexts' do subject do worker.bulk_perform_async_with_contexts( - %w(hello world), + %w[hello world], context_proc: -> (_) { { user: build_stubbed(:user) } }, arguments_proc: -> (word) { word } ) @@ -93,7 +93,7 @@ RSpec.describe WorkerContext, feature_category: :shared do subject do worker.bulk_perform_in_with_contexts( 10.minutes, - %w(hello world), + %w[hello world], context_proc: -> (_) { { user: build_stubbed(:user) } }, arguments_proc: -> (word) { word } ) diff --git a/spec/workers/container_registry/migration/enqueuer_worker_spec.rb b/spec/workers/container_registry/migration/enqueuer_worker_spec.rb index 4a603e538ef..ff388b1a29d 100644 --- a/spec/workers/container_registry/migration/enqueuer_worker_spec.rb +++ b/spec/workers/container_registry/migration/enqueuer_worker_spec.rb @@ -16,7 +16,7 @@ RSpec.describe ContainerRegistry::Migration::EnqueuerWorker, :aggregate_failures before do stub_container_registry_config(enabled: true) stub_application_setting(container_registry_import_created_before: 1.day.ago) - stub_container_registry_tags(repository: container_repository.path, tags: %w(tag1 tag2 tag3), with_manifest: true) + stub_container_registry_tags(repository: container_repository.path, tags: %w[tag1 tag2 tag3], with_manifest: true) end describe '#perform' do @@ -133,7 +133,7 @@ RSpec.describe ContainerRegistry::Migration::EnqueuerWorker, :aggregate_failures stub_container_registry_tags( repository: container_repository2.path, - tags: %w(tag4 tag5 tag6), + tags: %w[tag4 tag5 tag6], with_manifest: true ) end @@ -204,7 +204,7 @@ RSpec.describe ContainerRegistry::Migration::EnqueuerWorker, :aggregate_failures stub_application_setting(container_registry_import_max_tags_count: 0) # Add 8 tags to the next repository stub_container_registry_tags( - repository: container_repository.path, tags: %w(a b c d e f g h), with_manifest: true + repository: container_repository.path, tags: %w[a b c d e f g h], with_manifest: true ) end diff --git a/spec/workers/groups/update_statistics_worker_spec.rb b/spec/workers/groups/update_statistics_worker_spec.rb index f47606f0580..5fc4ccdab0d 100644 --- a/spec/workers/groups/update_statistics_worker_spec.rb +++ b/spec/workers/groups/update_statistics_worker_spec.rb @@ -5,7 +5,7 @@ require 'spec_helper' RSpec.describe Groups::UpdateStatisticsWorker, feature_category: :source_code_management do let_it_be(:group) { create(:group) } - let(:statistics) { %w(wiki_size) } + let(:statistics) { %w[wiki_size] } subject(:worker) { described_class.new } diff --git a/spec/workers/jira_connect/sync_branch_worker_spec.rb b/spec/workers/jira_connect/sync_branch_worker_spec.rb index 1c2661ad0e5..18eb22b8a47 100644 --- a/spec/workers/jira_connect/sync_branch_worker_spec.rb +++ b/spec/workers/jira_connect/sync_branch_worker_spec.rb @@ -14,7 +14,7 @@ RSpec.describe JiraConnect::SyncBranchWorker, feature_category: :integrations do let(:project_id) { project.id } let(:branch_name) { 'master' } - let(:commit_shas) { %w(b83d6e3 5a62481) } + let(:commit_shas) { %w[b83d6e3 5a62481] } let(:update_sequence_id) { 1 } def perform diff --git a/spec/workers/post_receive_spec.rb b/spec/workers/post_receive_spec.rb index 2e0a2535453..dcece830a85 100644 --- a/spec/workers/post_receive_spec.rb +++ b/spec/workers/post_receive_spec.rb @@ -391,7 +391,7 @@ RSpec.describe PostReceive, feature_category: :source_code_management do it 'enqueues a UpdateMergeRequestsWorker job' do allow(Project).to receive(:find_by).and_return(project) - expect_next(MergeRequests::PushedBranchesService).to receive(:execute).and_return(%w(tést)) + expect_next(MergeRequests::PushedBranchesService).to receive(:execute).and_return(%w[tést]) expect(UpdateMergeRequestsWorker).to receive(:perform_async).with(project.id, project.first_owner.id, any_args) diff --git a/spec/workers/project_cache_worker_spec.rb b/spec/workers/project_cache_worker_spec.rb index 4d468897599..7ef2494b5cf 100644 --- a/spec/workers/project_cache_worker_spec.rb +++ b/spec/workers/project_cache_worker_spec.rb @@ -35,10 +35,10 @@ RSpec.describe ProjectCacheWorker, feature_category: :source_code_management do context 'with an existing project' do it 'refreshes the method caches' do expect_any_instance_of(Repository).to receive(:refresh_method_caches) - .with(%i(readme)) + .with(%i[readme]) .and_call_original - worker.perform(project.id, %w(readme)) + worker.perform(project.id, %w[readme]) end context 'with statistics disabled' do @@ -52,7 +52,7 @@ RSpec.describe ProjectCacheWorker, feature_category: :source_code_management do end context 'with statistics' do - let(:statistics) { %w(repository_size) } + let(:statistics) { %w[repository_size] } it 'updates the project statistics' do expect(worker).to receive(:update_statistics) @@ -69,16 +69,16 @@ RSpec.describe ProjectCacheWorker, feature_category: :source_code_management do allow(Gitlab::MarkupHelper).to receive(:plain?).and_return(true) expect_any_instance_of(Repository).to receive(:refresh_method_caches) - .with(%i(readme)) + .with(%i[readme]) .and_call_original - worker.perform(project.id, %w(readme)) + worker.perform(project.id, %w[readme]) end end end end describe '#update_statistics' do - let(:statistics) { %w(repository_size) } + let(:statistics) { %w[repository_size] } context 'when a lease could not be obtained' do it 'does not update the project statistics' do @@ -120,7 +120,7 @@ RSpec.describe ProjectCacheWorker, feature_category: :source_code_management do end it_behaves_like 'an idempotent worker' do - let(:job_args) { [project.id, %w(readme), %w(repository_size)] } + let(:job_args) { [project.id, %w[readme], %w[repository_size]] } it 'calls Projects::UpdateStatisticsService service twice', :clean_gitlab_redis_shared_state do expect(Projects::UpdateStatisticsService).to receive(:new).once.and_return(double(execute: true)) diff --git a/spec/workers/projects/record_target_platforms_worker_spec.rb b/spec/workers/projects/record_target_platforms_worker_spec.rb index d4515f7727a..23705d0c86e 100644 --- a/spec/workers/projects/record_target_platforms_worker_spec.rb +++ b/spec/workers/projects/record_target_platforms_worker_spec.rb @@ -10,7 +10,7 @@ RSpec.describe Projects::RecordTargetPlatformsWorker, feature_category: :activat let_it_be(:project) { create(:project, :repository, detected_repository_languages: true) } let(:worker) { described_class.new } - let(:service_result) { %w(ios osx watchos) } + let(:service_result) { %w[ios osx watchos] } let(:service_double) { instance_double(Projects::RecordTargetPlatformsService, execute: service_result) } let(:lease_key) { "#{described_class.name.underscore}:#{project.id}" } let(:lease_timeout) { described_class::LEASE_TIMEOUT } diff --git a/spec/workers/stuck_merge_jobs_worker_spec.rb b/spec/workers/stuck_merge_jobs_worker_spec.rb index 44dc6550cdb..03f371ab740 100644 --- a/spec/workers/stuck_merge_jobs_worker_spec.rb +++ b/spec/workers/stuck_merge_jobs_worker_spec.rb @@ -8,7 +8,7 @@ RSpec.describe StuckMergeJobsWorker, feature_category: :code_review_workflow do context 'merge job identified as completed' do it 'updates merge request to merged when locked but has merge_commit_sha' do - allow(Gitlab::SidekiqStatus).to receive(:completed_jids).and_return(%w(123 456)) + allow(Gitlab::SidekiqStatus).to receive(:completed_jids).and_return(%w[123 456]) mr_with_sha = create(:merge_request, :locked, merge_jid: '123', state: :locked, merge_commit_sha: 'foo-bar-baz') mr_without_sha = create(:merge_request, :locked, merge_jid: '123', state: :locked, merge_commit_sha: nil) @@ -23,7 +23,7 @@ RSpec.describe StuckMergeJobsWorker, feature_category: :code_review_workflow do end it 'updates merge request to opened when locked but has not been merged', :sidekiq_might_not_need_inline do - allow(Gitlab::SidekiqStatus).to receive(:completed_jids).and_return(%w(123)) + allow(Gitlab::SidekiqStatus).to receive(:completed_jids).and_return(%w[123]) merge_request = create(:merge_request, :locked, merge_jid: '123', state: :locked) pipeline = create(:ci_empty_pipeline, project: merge_request.project, ref: merge_request.source_branch, sha: merge_request.source_branch_sha) @@ -35,7 +35,7 @@ RSpec.describe StuckMergeJobsWorker, feature_category: :code_review_workflow do end it 'logs updated stuck merge job ids' do - allow(Gitlab::SidekiqStatus).to receive(:completed_jids).and_return(%w(123 456)) + allow(Gitlab::SidekiqStatus).to receive(:completed_jids).and_return(%w[123 456]) create(:merge_request, :locked, merge_jid: '123') create(:merge_request, :locked, merge_jid: '456') diff --git a/spec/workers/update_project_statistics_worker_spec.rb b/spec/workers/update_project_statistics_worker_spec.rb index c5e6f45a201..ba0834e64dc 100644 --- a/spec/workers/update_project_statistics_worker_spec.rb +++ b/spec/workers/update_project_statistics_worker_spec.rb @@ -7,7 +7,7 @@ RSpec.describe UpdateProjectStatisticsWorker, feature_category: :source_code_man let(:worker) { described_class.new } let(:project) { create(:project, :repository) } - let(:statistics) { %w(repository_size) } + let(:statistics) { %w[repository_size] } let(:lease_key) { "namespace:namespaces_root_statistics:#{project.namespace_id}" } describe '#perform' do diff --git a/yarn.lock b/yarn.lock index 7573404abbb..ffb3e72662e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1913,14 +1913,14 @@ estree-walker "^2.0.2" picomatch "^2.3.1" -"@sentry-internal/tracing@7.78.0": - version "7.78.0" - resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.78.0.tgz#254d29a9434ee1de41201620b172a8cc56387e72" - integrity sha512-53wf+HWyjiansZ0U+q7Q7U2kEjXfL/C8+XOwE4ntLVPGFyvxuYaRUb8OEYFNTsODf20ihnxOLZ+GsXXPlqPfFA== +"@sentry-internal/tracing@7.79.0": + version "7.79.0" + resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.79.0.tgz#db99820e93e15bf4d990f1b270a1d1c2a69fd564" + integrity sha512-Mf9Bd0OrZ24h1qZpvmz9IRnfORMGYNYC1xWBBFpIR1AauEDX89x+mJwIOrUc4KKAAAwt73shrJv1QA8QOm4E3g== dependencies: - "@sentry/core" "7.78.0" - "@sentry/types" "7.78.0" - "@sentry/utils" "7.78.0" + "@sentry/core" "7.79.0" + "@sentry/types" "7.79.0" + "@sentry/utils" "7.79.0" "@sentry/core@5.30.0": version "5.30.0" @@ -1933,13 +1933,13 @@ "@sentry/utils" "5.30.0" tslib "^1.9.3" -"@sentry/core@7.78.0": - version "7.78.0" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.78.0.tgz#0c306f258e12637508b14e0633a4a5506628e914" - integrity sha512-cf8U+1cNkIK14KC5ySXtzu4RW5Veto3lqkS95Rbl4ExUsrVsfansFNH63j6Bvu7UbJlBRK67uf6Ug2GBbUBUIg== +"@sentry/core@7.79.0": + version "7.79.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.79.0.tgz#08871bd686afd58125f43421d3dcb65a3b9208b0" + integrity sha512-9vG7SfOcJNJNiqlqg4MuHDUCaSf2ZXpv3eZYRPbBkgPGr8X1ekrSABpOK+6kBNvbtKxfWVTWbLpAA6xU+cwnVw== dependencies: - "@sentry/types" "7.78.0" - "@sentry/utils" "7.78.0" + "@sentry/types" "7.79.0" + "@sentry/utils" "7.79.0" "@sentry/hub@5.30.0": version "5.30.0" @@ -1959,25 +1959,25 @@ "@sentry/types" "5.30.0" tslib "^1.9.3" -"@sentry/replay@7.78.0": - version "7.78.0" - resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.78.0.tgz#b657ae24448dc12268afe6cdc37b95e7ae04a8cc" - integrity sha512-BYBEJg8rdya8nN5H39ZVsklvFja/TX0Z5evkihCHYOAsUN74SPqmwsFYzziQhswFPJWEp0qpKweC7iuCKCSqyw== +"@sentry/replay@7.79.0": + version "7.79.0" + resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.79.0.tgz#53c658e5a51698bc32019be167427b8692e2a2b7" + integrity sha512-vF79NxWGYfoD0hnIkdgUQqedoMcRHHp5UAfZlxhpQzJf4TnbOjollp63AvOrfd38osSG2d3E5kTUU9xs/zKhBQ== dependencies: - "@sentry-internal/tracing" "7.78.0" - "@sentry/core" "7.78.0" - "@sentry/types" "7.78.0" - "@sentry/utils" "7.78.0" + "@sentry-internal/tracing" "7.79.0" + "@sentry/core" "7.79.0" + "@sentry/types" "7.79.0" + "@sentry/utils" "7.79.0" "@sentry/types@5.30.0": version "5.30.0" resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.30.0.tgz#19709bbe12a1a0115bc790b8942917da5636f402" integrity sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw== -"@sentry/types@7.78.0": - version "7.78.0" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.78.0.tgz#1ed40b43dbf7b92d4e7117d66be312a927cb48e4" - integrity sha512-XNyu6EFTrXmKlVgKHOxGdBJ6Aw7BnMBWtptr5TPOQJ4kh+rP+4DB3I6nafcSSUbIsO+hBVgBpj0J8R3Ps86CMQ== +"@sentry/types@7.79.0": + version "7.79.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.79.0.tgz#b47c53a3f8b9057aac820fe99e1154949aac934d" + integrity sha512-3tV32+v/DF8w7kD0p3kLWtgVTVdFL39oGY02+vz//rjWg/vzeqSE95mCYKm5pUfd6cPETX/8dunCiuTBQIkTHQ== "@sentry/utils@5.30.0": version "5.30.0" @@ -1987,12 +1987,12 @@ "@sentry/types" "5.30.0" tslib "^1.9.3" -"@sentry/utils@7.78.0": - version "7.78.0" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.78.0.tgz#a3dd459f2347e20af81bfe92b6f75bae95918fb8" - integrity sha512-vxPZaMTthMgEgKvlkuqD9rQuQ4Q8fsWAuOuzeuwUbrVCBIeM/WpmyjUUx4ozy6axNGXSXGE4CzrEQUNv3+t9kQ== +"@sentry/utils@7.79.0": + version "7.79.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.79.0.tgz#c410b6c0e3032dbc9e708177555c70bdb8d1f63b" + integrity sha512-tUTlb6PvfZawqBmBK9CPXflqrZDXHKWoX3fve2zLK6W0FSpIMOO4TH8PBqkHBFs0ZgF/bnv/bsM4z7uEAlAtzg== dependencies: - "@sentry/types" "7.78.0" + "@sentry/types" "7.79.0" "@sinclair/typebox@^0.24.1": version "0.24.40" @@ -11775,16 +11775,16 @@ send@0.17.2: "@sentry/utils" "5.30.0" tslib "^1.9.3" -"sentrybrowser@npm:@sentry/browser@7.78.0": - version "7.78.0" - resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.78.0.tgz#02a8a142814cb914c6199cabd965e951fd0c5deb" - integrity sha512-KVeC71y7hnqYN3HN6KZH33y0yBAE8CmiApQ08KFIF3+6Ty1V3PC1mbQAmNGttka57jNvyBXTCpN8Fw8MPK9V/A== +"sentrybrowser@npm:@sentry/browser@7.79.0": + version "7.79.0" + resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.79.0.tgz#d05460161774642f37e4f53ee6006551aae49fed" + integrity sha512-gWbWEElF61uZeTFLIZz3NMyCkAzBDOpMAogEbVu2GX91SHKB7GXlE//INnS/R5wfE5j/CFaZc53mzzoIuMy1sA== dependencies: - "@sentry-internal/tracing" "7.78.0" - "@sentry/core" "7.78.0" - "@sentry/replay" "7.78.0" - "@sentry/types" "7.78.0" - "@sentry/utils" "7.78.0" + "@sentry-internal/tracing" "7.79.0" + "@sentry/core" "7.79.0" + "@sentry/replay" "7.79.0" + "@sentry/types" "7.79.0" + "@sentry/utils" "7.79.0" serialize-javascript@^2.1.2: version "2.1.2" |