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

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-06-28 21:08:00 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-06-28 21:08:00 +0300
commitff82d09c6a72dc280aed1bba50553e7f1f169f0f (patch)
tree13c41cacb07b0bff84536235e3d77d9db057d8c2
parent24623a974348595d33cc9be6881b285a026ff13b (diff)
Add latest changes from gitlab-org/gitlab@master
-rw-r--r--.gitlab/ci/rules.gitlab-ci.yml2
-rw-r--r--.rubocop.yml5
-rw-r--r--.rubocop_todo/rspec/before_all_role_assignment.yml1587
-rw-r--r--app/assets/javascripts/packages_and_registries/container_registry/explorer/components/details_page/tags_list_row.vue2
-rw-r--r--app/models/analytics/cycle_analytics/stage.rb13
-rw-r--r--app/models/analytics/cycle_analytics/value_stream.rb10
-rw-r--r--doc/administration/instance_limits.md5
-rw-r--r--doc/api/protected_branches.md2
-rw-r--r--doc/development/database/index.md2
-rw-r--r--doc/user/profile/account/delete_account.md2
-rw-r--r--doc/user/profile/saved_replies.md11
-rw-r--r--doc/user/project/deploy_keys/index.md1
-rw-r--r--locale/gitlab.pot6
-rw-r--r--rubocop/cop/rspec/before_all_role_assignment.rb77
-rw-r--r--scripts/rspec_helpers.sh88
-rw-r--r--spec/frontend/analytics/shared/components/projects_dropdown_filter_spec.js13
-rw-r--r--spec/models/analytics/cycle_analytics/stage_spec.rb15
-rw-r--r--spec/models/analytics/cycle_analytics/value_stream_spec.rb13
-rw-r--r--spec/rubocop/cop/rspec/before_all_role_assignment_spec.rb234
19 files changed, 2046 insertions, 42 deletions
diff --git a/.gitlab/ci/rules.gitlab-ci.yml b/.gitlab/ci/rules.gitlab-ci.yml
index f1070c1bbaa..d5a2249e313 100644
--- a/.gitlab/ci/rules.gitlab-ci.yml
+++ b/.gitlab/ci/rules.gitlab-ci.yml
@@ -1508,8 +1508,6 @@
.qa:rules:package-and-test-ee:
rules:
- - <<: *if-default-branch-schedule-nightly # already executed in the 2-hourly schedule
- when: never
- !reference [".qa:rules:package-and-test-common", rules]
- !reference [".qa:rules:package-and-test-schedule", rules]
- !reference [".qa:rules:code-merge-request-manual", rules]
diff --git a/.rubocop.yml b/.rubocop.yml
index dcd66eeea92..2a2f6102dfe 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -274,6 +274,11 @@ Naming/FileName:
- XSS
- GRPC
+# Check for the use of before with let_it_be when using "add_role" methods
+# e.g. add_guest, add_reporter, add_developer
+RSpec/BeforeAllRoleAssignment:
+ Enabled: true
+
Rails/ApplicationRecord:
Enabled: true
Exclude:
diff --git a/.rubocop_todo/rspec/before_all_role_assignment.yml b/.rubocop_todo/rspec/before_all_role_assignment.yml
new file mode 100644
index 00000000000..755eb0126e7
--- /dev/null
+++ b/.rubocop_todo/rspec/before_all_role_assignment.yml
@@ -0,0 +1,1587 @@
+---
+RSpec/BeforeAllRoleAssignment:
+ Details: grace period
+ Exclude:
+ - 'ee/spec/components/namespaces/free_user_cap/non_owner_notification_alert_component_spec.rb'
+ - 'ee/spec/components/namespaces/free_user_cap/notification_alert_component_spec.rb'
+ - 'ee/spec/components/namespaces/storage/pre_enforcement_alert_component_spec.rb'
+ - 'ee/spec/components/namespaces/storage/subgroup_pre_enforcement_alert_component_spec.rb'
+ - 'ee/spec/controllers/autocomplete_controller_spec.rb'
+ - 'ee/spec/controllers/dashboard_controller_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/usage_quotas_controller_spec.rb'
+ - 'ee/spec/controllers/ee/groups_controller_spec.rb'
+ - 'ee/spec/controllers/ee/projects/autocomplete_sources_controller_spec.rb'
+ - 'ee/spec/controllers/ee/projects/jobs_controller_spec.rb'
+ - 'ee/spec/controllers/groups/analytics/coverage_reports_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/audit_events_controller_spec.rb'
+ - 'ee/spec/controllers/groups/billings_controller_spec.rb'
+ - 'ee/spec/controllers/groups/clusters_controller_spec.rb'
+ - 'ee/spec/controllers/groups/contribution_analytics_controller_spec.rb'
+ - 'ee/spec/controllers/groups/dependency_proxy_for_containers_controller_spec.rb'
+ - 'ee/spec/controllers/groups/epic_boards_controller_spec.rb'
+ - 'ee/spec/controllers/groups/insights_controller_spec.rb'
+ - 'ee/spec/controllers/groups/issues_analytics_controller_spec.rb'
+ - 'ee/spec/controllers/groups/merge_requests_controller_spec.rb'
+ - 'ee/spec/controllers/groups/push_rules_controller_spec.rb'
+ - 'ee/spec/controllers/groups/runners_controller_spec.rb'
+ - 'ee/spec/controllers/groups/seat_usage_controller_spec.rb'
+ - 'ee/spec/controllers/groups/security/policies_controller_spec.rb'
+ - 'ee/spec/controllers/groups/todos_controller_spec.rb'
+ - 'ee/spec/controllers/projects/analytics/cycle_analytics/summary_controller_spec.rb'
+ - 'ee/spec/controllers/projects/analytics/issues_analytics_controller_spec.rb'
+ - 'ee/spec/controllers/projects/analytics/merge_request_analytics_controller_spec.rb'
+ - 'ee/spec/controllers/projects/audit_events_controller_spec.rb'
+ - 'ee/spec/controllers/projects/environments_controller_spec.rb'
+ - 'ee/spec/controllers/projects/incident_management/escalation_policies_controller_spec.rb'
+ - 'ee/spec/controllers/projects/incident_management/oncall_schedules_controller_spec.rb'
+ - 'ee/spec/controllers/projects/insights_controller_spec.rb'
+ - 'ee/spec/controllers/projects/issue_links_controller_spec.rb'
+ - 'ee/spec/controllers/projects/iterations_controller_spec.rb'
+ - 'ee/spec/controllers/projects/learn_gitlab_controller_spec.rb'
+ - 'ee/spec/controllers/projects/licenses_controller_spec.rb'
+ - 'ee/spec/controllers/projects/merge_requests_controller_spec.rb'
+ - 'ee/spec/controllers/projects/pipelines_controller_spec.rb'
+ - 'ee/spec/controllers/projects/repositories_controller_spec.rb'
+ - 'ee/spec/controllers/projects/requirements_management/requirements_controller_spec.rb'
+ - 'ee/spec/controllers/projects/security/configuration_controller_spec.rb'
+ - 'ee/spec/controllers/projects/security/dashboard_controller_spec.rb'
+ - 'ee/spec/controllers/projects/security/scanned_resources_controller_spec.rb'
+ - 'ee/spec/controllers/projects/security/vulnerabilities/notes_controller_spec.rb'
+ - 'ee/spec/controllers/projects/security/vulnerabilities_controller_spec.rb'
+ - 'ee/spec/controllers/projects/security/vulnerability_report_controller_spec.rb'
+ - 'ee/spec/controllers/projects/settings/ci_cd_controller_spec.rb'
+ - 'ee/spec/controllers/projects/settings/integrations_controller_spec.rb'
+ - 'ee/spec/controllers/projects/settings/operations_controller_spec.rb'
+ - 'ee/spec/controllers/projects/settings/repository_controller_spec.rb'
+ - 'ee/spec/controllers/projects/vulnerability_feedback_controller_spec.rb'
+ - 'ee/spec/controllers/projects_controller_spec.rb'
+ - 'ee/spec/controllers/registrations/groups_controller_spec.rb'
+ - 'ee/spec/controllers/security/projects_controller_spec.rb'
+ - 'ee/spec/controllers/subscriptions/groups_controller_spec.rb'
+ - 'ee/spec/controllers/subscriptions_controller_spec.rb'
+ - 'ee/spec/features/admin/admin_sends_notification_spec.rb'
+ - 'ee/spec/features/analytics/code_analytics_spec.rb'
+ - 'ee/spec/features/analytics/group_analytics_spec.rb'
+ - 'ee/spec/features/boards/board_filters_spec.rb'
+ - 'ee/spec/features/boards/boards_licensed_features_spec.rb'
+ - 'ee/spec/features/boards/new_issue_spec.rb'
+ - 'ee/spec/features/boards/scoped_issue_board_spec.rb'
+ - 'ee/spec/features/boards/sidebar_spec.rb'
+ - 'ee/spec/features/boards/swimlanes/epics_swimlanes_sidebar_spec.rb'
+ - 'ee/spec/features/burnup_charts_spec.rb'
+ - 'ee/spec/features/dashboards/todos_spec.rb'
+ - 'ee/spec/features/epic_boards/epic_boards_sidebar_spec.rb'
+ - 'ee/spec/features/epic_boards/epic_boards_spec.rb'
+ - 'ee/spec/features/epic_boards/new_epic_spec.rb'
+ - 'ee/spec/features/epics/epic_show_spec.rb'
+ - 'ee/spec/features/epics/user_uses_quick_actions_spec.rb'
+ - 'ee/spec/features/gitlab_subscriptions/seat_count_alert_spec.rb'
+ - 'ee/spec/features/group_protected_branches_spec.rb'
+ - 'ee/spec/features/groups/analytics/ci_cd_analytics_spec.rb'
+ - 'ee/spec/features/groups/analytics/cycle_analytics/charts_spec.rb'
+ - 'ee/spec/features/groups/analytics/cycle_analytics/filters_and_data_spec.rb'
+ - 'ee/spec/features/groups/audit_events_spec.rb'
+ - 'ee/spec/features/groups/group_roadmap_spec.rb'
+ - 'ee/spec/features/groups/groups_security_credentials_spec.rb'
+ - 'ee/spec/features/groups/hooks/user_adds_hook_spec.rb'
+ - 'ee/spec/features/groups/hooks/user_edits_hooks_spec.rb'
+ - 'ee/spec/features/groups/hooks/user_views_hooks_spec.rb'
+ - 'ee/spec/features/groups/members/list_members_spec.rb'
+ - 'ee/spec/features/groups/members/manage_members_spec.rb'
+ - 'ee/spec/features/groups/navbar_spec.rb'
+ - 'ee/spec/features/groups/new_spec.rb'
+ - 'ee/spec/features/groups/push_rules_spec.rb'
+ - 'ee/spec/features/groups/saml_group_links_spec.rb'
+ - 'ee/spec/features/groups/scim_token_spec.rb'
+ - 'ee/spec/features/groups/security/compliance_dashboards_spec.rb'
+ - 'ee/spec/features/groups/settings/user_searches_in_settings_spec.rb'
+ - 'ee/spec/features/groups/usage_quotas/seats_tab_spec.rb'
+ - 'ee/spec/features/groups/user_interacts_with_unlimited_members_during_trial_alert_spec.rb'
+ - 'ee/spec/features/groups_spec.rb'
+ - 'ee/spec/features/incidents/user_uses_quick_actions_spec.rb'
+ - 'ee/spec/features/issues/epic_in_issue_sidebar_spec.rb'
+ - 'ee/spec/features/issues/filtered_search/filter_issues_by_health_spec.rb'
+ - 'ee/spec/features/issues/filtered_search/filter_issues_epic_spec.rb'
+ - 'ee/spec/features/issues/filtered_search/filter_issues_weight_spec.rb'
+ - 'ee/spec/features/issues/gfm_autocomplete_ee_spec.rb'
+ - 'ee/spec/features/issues/issue_sidebar_spec.rb'
+ - 'ee/spec/features/issues/related_issues_spec.rb'
+ - 'ee/spec/features/issues/user_bulk_edits_issues_spec.rb'
+ - 'ee/spec/features/issues/user_sees_empty_state_spec.rb'
+ - 'ee/spec/features/issues/user_uses_quick_actions_spec.rb'
+ - 'ee/spec/features/markdown/observability_spec.rb'
+ - 'ee/spec/features/merge_request/user_creates_merge_request_spec.rb'
+ - 'ee/spec/features/merge_request/user_edits_approval_rules_mr_spec.rb'
+ - 'ee/spec/features/merge_request/user_sees_mr_approvals_promo_spec.rb'
+ - 'ee/spec/features/merge_request/user_sees_security_widget_spec.rb'
+ - 'ee/spec/features/merge_request/user_sees_status_checks_widget_spec.rb'
+ - 'ee/spec/features/merge_request/user_sets_approval_rules_spec.rb'
+ - 'ee/spec/features/merge_request/user_sets_approvers_spec.rb'
+ - 'ee/spec/features/milestones/user_views_milestone_spec.rb'
+ - 'ee/spec/features/oncall_schedules/user_creates_schedule_spec.rb'
+ - 'ee/spec/features/projects/analytics/cycle_analytics_spec.rb'
+ - 'ee/spec/features/projects/analytics/dashboards_spec.rb'
+ - 'ee/spec/features/projects/analytics/visualization_designer_spec.rb'
+ - 'ee/spec/features/projects/audit_events_spec.rb'
+ - 'ee/spec/features/projects/issues/user_creates_issue_spec.rb'
+ - 'ee/spec/features/projects/iterations/iteration_cadences_list_spec.rb'
+ - 'ee/spec/features/projects/members/manage_members_spec.rb'
+ - 'ee/spec/features/projects/navbar_spec.rb'
+ - 'ee/spec/features/projects/quality/shortcuts_test_case_spec.rb'
+ - 'ee/spec/features/projects/quality/test_case_create_spec.rb'
+ - 'ee/spec/features/projects/quality/test_case_list_spec.rb'
+ - 'ee/spec/features/projects/quality/test_case_show_spec.rb'
+ - 'ee/spec/features/projects/requirements_management/requirements_list_spec.rb'
+ - 'ee/spec/features/projects/security/vulnerability_report_spec.rb'
+ - 'ee/spec/features/projects/settings/disable_merge_trains_setting_spec.rb'
+ - 'ee/spec/features/projects/settings/ee/service_desk_setting_spec.rb'
+ - 'ee/spec/features/projects/settings/merge_request_approvals_settings_spec.rb'
+ - 'ee/spec/features/projects/settings/merge_requests/disable_merge_trains_setting_spec.rb'
+ - 'ee/spec/features/projects/settings/merge_requests_settings_spec.rb'
+ - 'ee/spec/features/projects/settings/user_manages_members_spec.rb'
+ - 'ee/spec/features/projects/show_project_spec.rb'
+ - 'ee/spec/features/projects/user_interacts_with_unlimited_members_during_trial_alert_spec.rb'
+ - 'ee/spec/features/projects/wiki/user_views_wiki_empty_spec.rb'
+ - 'ee/spec/features/projects_spec.rb'
+ - 'ee/spec/features/protected_branches_spec.rb'
+ - 'ee/spec/features/remote_development/workspaces_spec.rb'
+ - 'ee/spec/features/search/user_searches_for_epics_spec.rb'
+ - 'ee/spec/features/search/zoekt/search_spec.rb'
+ - 'ee/spec/features/subscriptions/expiring_subscription_message_spec.rb'
+ - 'ee/spec/features/trials/show_trial_banner_spec.rb'
+ - 'ee/spec/finders/approval_rules/group_finder_spec.rb'
+ - 'ee/spec/finders/compliance_management/merge_requests/compliance_violations_finder_spec.rb'
+ - 'ee/spec/finders/concerns/epics/with_access_check_spec.rb'
+ - 'ee/spec/finders/ee/ci/daily_build_group_report_results_finder_spec.rb'
+ - 'ee/spec/finders/ee/clusters/agents_finder_spec.rb'
+ - 'ee/spec/finders/ee/projects_finder_spec.rb'
+ - 'ee/spec/finders/ee/work_items/work_items_finder_spec.rb'
+ - 'ee/spec/finders/epics/cross_hierarchy_ancestors_finder_spec.rb'
+ - 'ee/spec/finders/epics/cross_hierarchy_children_finder_spec.rb'
+ - 'ee/spec/finders/epics_finder_spec.rb'
+ - 'ee/spec/finders/incident_management/escalation_policies_finder_spec.rb'
+ - 'ee/spec/finders/incident_management/issuable_resource_links_finder_spec.rb'
+ - 'ee/spec/finders/incident_management/oncall_schedules_finder_spec.rb'
+ - 'ee/spec/finders/iterations/cadences_finder_spec.rb'
+ - 'ee/spec/finders/iterations_finder_spec.rb'
+ - 'ee/spec/finders/merge_requests_finder_spec.rb'
+ - 'ee/spec/finders/snippets_finder_spec.rb'
+ - 'ee/spec/frontend/fixtures/analytics/charts.rb'
+ - 'ee/spec/frontend/fixtures/analytics/contributions_spec.rb'
+ - 'ee/spec/frontend/fixtures/dast_profiles.rb'
+ - 'ee/spec/frontend/fixtures/on_demand_dast_scans.rb'
+ - 'ee/spec/frontend/fixtures/users.rb'
+ - 'ee/spec/graphql/ee/mutations/boards/issues/issue_move_list_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/resolvers/project_issues_resolver_spec.rb'
+ - 'ee/spec/graphql/ee/types/clusters/agent_type_spec.rb'
+ - 'ee/spec/graphql/ee/types/group_type_spec.rb'
+ - 'ee/spec/graphql/mutations/boards/epic_boards/create_spec.rb'
+ - 'ee/spec/graphql/mutations/boards/epic_boards/destroy_spec.rb'
+ - 'ee/spec/graphql/mutations/boards/epic_boards/epic_move_list_spec.rb'
+ - 'ee/spec/graphql/mutations/boards/epic_boards/update_spec.rb'
+ - 'ee/spec/graphql/mutations/boards/update_epic_user_preferences_spec.rb'
+ - 'ee/spec/graphql/mutations/ci/ai/generate_config_spec.rb'
+ - 'ee/spec/graphql/mutations/compliance_management/frameworks/create_spec.rb'
+ - 'ee/spec/graphql/mutations/compliance_management/frameworks/destroy_spec.rb'
+ - 'ee/spec/graphql/mutations/compliance_management/frameworks/update_spec.rb'
+ - 'ee/spec/graphql/mutations/dast/profiles/delete_spec.rb'
+ - 'ee/spec/graphql/mutations/dast/profiles/run_spec.rb'
+ - 'ee/spec/graphql/mutations/dast/profiles/update_spec.rb'
+ - 'ee/spec/graphql/mutations/dast_scanner_profiles/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/update_spec.rb'
+ - 'ee/spec/graphql/mutations/dast_site_validations/revoke_spec.rb'
+ - 'ee/spec/graphql/mutations/epics/add_issue_spec.rb'
+ - 'ee/spec/graphql/mutations/epics/create_spec.rb'
+ - 'ee/spec/graphql/mutations/epics/update_spec.rb'
+ - 'ee/spec/graphql/mutations/incident_management/escalation_policy/create_spec.rb'
+ - 'ee/spec/graphql/mutations/incident_management/escalation_policy/destroy_spec.rb'
+ - 'ee/spec/graphql/mutations/incident_management/escalation_policy/update_spec.rb'
+ - 'ee/spec/graphql/mutations/incident_management/issuable_resource_link/create_spec.rb'
+ - 'ee/spec/graphql/mutations/incident_management/issuable_resource_link/destroy_spec.rb'
+ - 'ee/spec/graphql/mutations/incident_management/oncall_rotation/create_spec.rb'
+ - 'ee/spec/graphql/mutations/incident_management/oncall_rotation/update_spec.rb'
+ - 'ee/spec/graphql/mutations/incident_management/oncall_schedule/create_spec.rb'
+ - 'ee/spec/graphql/mutations/incident_management/oncall_schedule/destroy_spec.rb'
+ - 'ee/spec/graphql/mutations/incident_management/oncall_schedule/update_spec.rb'
+ - 'ee/spec/graphql/mutations/instance_security_dashboard/add_project_spec.rb'
+ - 'ee/spec/graphql/mutations/issues/promote_to_epic_spec.rb'
+ - 'ee/spec/graphql/mutations/issues/set_epic_spec.rb'
+ - 'ee/spec/graphql/mutations/issues/update_spec.rb'
+ - 'ee/spec/graphql/mutations/projects/set_compliance_framework_spec.rb'
+ - 'ee/spec/graphql/mutations/projects/set_locked_spec.rb'
+ - 'ee/spec/graphql/mutations/releases/update_spec.rb'
+ - 'ee/spec/graphql/mutations/requirements_management/create_requirement_spec.rb'
+ - 'ee/spec/graphql/mutations/requirements_management/export_requirements_spec.rb'
+ - 'ee/spec/graphql/mutations/requirements_management/update_requirement_spec.rb'
+ - 'ee/spec/graphql/mutations/security/training_provider_update_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/resolvers/analytics/devops_adoption/enabled_namespaces_resolver_spec.rb'
+ - 'ee/spec/graphql/resolvers/board_groupings/epics_resolvers_spec.rb'
+ - 'ee/spec/graphql/resolvers/boards/board_list_epics_resolver_spec.rb'
+ - 'ee/spec/graphql/resolvers/boards/epic_boards_resolvers_spec.rb'
+ - 'ee/spec/graphql/resolvers/boards/epic_list_resolver_spec.rb'
+ - 'ee/spec/graphql/resolvers/boards/epic_lists_resolvers_spec.rb'
+ - 'ee/spec/graphql/resolvers/ci/catalog/resource_resolver_spec.rb'
+ - 'ee/spec/graphql/resolvers/ci/catalog/resources_resolver_spec.rb'
+ - 'ee/spec/graphql/resolvers/ci/catalog/versions_resolver_spec.rb'
+ - 'ee/spec/graphql/resolvers/clusters/agents_resolver_spec.rb'
+ - 'ee/spec/graphql/resolvers/compliance_management/merge_requests/compliance_violation_resolver_spec.rb'
+ - 'ee/spec/graphql/resolvers/dast_site_validation_resolver_spec.rb'
+ - 'ee/spec/graphql/resolvers/epic_ancestors_resolver_spec.rb'
+ - 'ee/spec/graphql/resolvers/epic_issues_resolver_spec.rb'
+ - 'ee/spec/graphql/resolvers/epics/children_resolver_spec.rb'
+ - 'ee/spec/graphql/resolvers/epics/default_project_for_issue_creation_resolver_spec.rb'
+ - 'ee/spec/graphql/resolvers/incident_management/escalation_policies_resolver_spec.rb'
+ - 'ee/spec/graphql/resolvers/incident_management/issuable_resource_links_resolver_spec.rb'
+ - 'ee/spec/graphql/resolvers/incident_management/oncall_rotations_resolver_spec.rb'
+ - 'ee/spec/graphql/resolvers/incident_management/oncall_schedule_resolver_spec.rb'
+ - 'ee/spec/graphql/resolvers/incident_management/oncall_shifts_resolver_spec.rb'
+ - 'ee/spec/graphql/resolvers/incident_management/oncall_users_resolver_spec.rb'
+ - 'ee/spec/graphql/resolvers/iterations_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/requirements_management/requirements_resolver_spec.rb'
+ - 'ee/spec/graphql/resolvers/requirements_management/test_reports_resolver_spec.rb'
+ - 'ee/spec/graphql/resolvers/security_orchestration/scan_execution_policy_resolver_spec.rb'
+ - 'ee/spec/graphql/resolvers/security_training_urls_resolver_spec.rb'
+ - 'ee/spec/graphql/resolvers/vulnerabilities/container_images_resolver_spec.rb'
+ - 'ee/spec/graphql/resolvers/vulnerabilities/scanners_resolver_spec.rb'
+ - 'ee/spec/graphql/resolvers/vulnerabilities_count_per_day_resolver_spec.rb'
+ - 'ee/spec/graphql/resolvers/vulnerabilities_grade_resolver_spec.rb'
+ - 'ee/spec/graphql/resolvers/vulnerabilities_resolver_spec.rb'
+ - 'ee/spec/graphql/resolvers/vulnerability_severities_count_resolver_spec.rb'
+ - 'ee/spec/graphql/types/asset_type_spec.rb'
+ - 'ee/spec/graphql/types/boards/board_epic_type_spec.rb'
+ - 'ee/spec/graphql/types/ci/pipeline_type_spec.rb'
+ - 'ee/spec/graphql/types/dast_scanner_profile_type_spec.rb'
+ - 'ee/spec/graphql/types/dast_site_validation_type_spec.rb'
+ - 'ee/spec/graphql/types/instance_security_dashboard_type_spec.rb'
+ - 'ee/spec/graphql/types/issue_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_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/ee/ci/catalog/resources_helper_spec.rb'
+ - 'ee/spec/helpers/ee/ci/pipeline_editor_helper_spec.rb'
+ - 'ee/spec/helpers/ee/environments_helper_spec.rb'
+ - 'ee/spec/helpers/ee/groups_helper_spec.rb'
+ - 'ee/spec/helpers/ee/projects/pipeline_helper_spec.rb'
+ - 'ee/spec/helpers/gitlab_subscriptions/upcoming_reconciliation_helper_spec.rb'
+ - 'ee/spec/helpers/merge_requests_helper_spec.rb'
+ - 'ee/spec/helpers/projects/on_demand_scans_helper_spec.rb'
+ - 'ee/spec/helpers/projects/project_members_helper_spec.rb'
+ - 'ee/spec/helpers/projects_helper_spec.rb'
+ - 'ee/spec/helpers/subscriptions_helper_spec.rb'
+ - 'ee/spec/helpers/timeboxes_helper_spec.rb'
+ - 'ee/spec/helpers/tree_helper_spec.rb'
+ - 'ee/spec/helpers/vulnerabilities_helper_spec.rb'
+ - 'ee/spec/helpers/web_hooks/web_hooks_helper_spec.rb'
+ - 'ee/spec/lib/analytics/group_activity_calculator_spec.rb'
+ - 'ee/spec/lib/audit/group_push_rules_changes_auditor_spec.rb'
+ - 'ee/spec/lib/audit/project_feature_changes_auditor_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_pipeline_spec.rb'
+ - 'ee/spec/lib/bulk_imports/projects/pipelines/issues_pipeline_spec.rb'
+ - 'ee/spec/lib/ee/api/entities/group_detail_spec.rb'
+ - 'ee/spec/lib/ee/api/helpers/issues_helpers_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/analytics/cycle_analytics/base_query_builder_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/ci/pipeline/chain/validate/abilities_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/ci/pipeline/chain/validate/after_config_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/git_access_project_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/import_export/project/tree_saver_spec.rb'
+ - 'ee/spec/lib/elastic/latest/git_class_proxy_spec.rb'
+ - 'ee/spec/lib/elastic/latest/user_instance_proxy_spec.rb'
+ - 'ee/spec/lib/gitlab/analytics/cycle_analytics/request_params_spec.rb'
+ - 'ee/spec/lib/gitlab/analytics/cycle_analytics/summary/stage_time_summary_spec.rb'
+ - 'ee/spec/lib/gitlab/analytics/type_of_work/tasks_by_type_spec.rb'
+ - 'ee/spec/lib/gitlab/code_owners/loader_spec.rb'
+ - 'ee/spec/lib/gitlab/code_owners/validator_spec.rb'
+ - 'ee/spec/lib/gitlab/cycle_analytics/stage_summary_spec.rb'
+ - 'ee/spec/lib/gitlab/elastic/project_search_results_spec.rb'
+ - 'ee/spec/lib/gitlab/git_access_spec.rb'
+ - 'ee/spec/lib/gitlab/git_access_wiki_spec.rb'
+ - 'ee/spec/lib/gitlab/llm/chain/tools/gitlab_documentation/executor_spec.rb'
+ - 'ee/spec/lib/gitlab/llm/chain/tools/issue_identifier/executor_spec.rb'
+ - 'ee/spec/lib/gitlab/llm/chain/tools/summarize_comments/executor_spec.rb'
+ - 'ee/spec/lib/gitlab/quick_actions/users_extractor_spec.rb'
+ - 'ee/spec/lib/gitlab/reference_extractor_spec.rb'
+ - 'ee/spec/models/ai/project/conversations_spec.rb'
+ - 'ee/spec/models/analytics/cycle_analytics/group_level_spec.rb'
+ - 'ee/spec/models/dast/profile_schedule_spec.rb'
+ - 'ee/spec/models/ee/award_emoji_spec.rb'
+ - 'ee/spec/models/ee/group_spec.rb'
+ - 'ee/spec/models/ee/namespaces/namespace_ban_spec.rb'
+ - 'ee/spec/models/ee/project_authorization_spec.rb'
+ - 'ee/spec/models/ee/project_group_link_spec.rb'
+ - 'ee/spec/models/ee/user_spec.rb'
+ - 'ee/spec/models/ee/vulnerability_spec.rb'
+ - 'ee/spec/models/epic_issue_spec.rb'
+ - 'ee/spec/models/epic_spec.rb'
+ - 'ee/spec/models/group_member_spec.rb'
+ - 'ee/spec/models/instance_security_dashboard_spec.rb'
+ - 'ee/spec/models/issue_spec.rb'
+ - 'ee/spec/models/merge_request_spec.rb'
+ - 'ee/spec/models/vulnerabilities/projects_grade_spec.rb'
+ - 'ee/spec/policies/app_sec/fuzzing/coverage/corpus_policy_spec.rb'
+ - 'ee/spec/policies/ci/editor/ai_conversation/message_policy_spec.rb'
+ - 'ee/spec/policies/ci/job_artifact_policy_spec.rb'
+ - 'ee/spec/policies/compliance_management/framework_policy_spec.rb'
+ - 'ee/spec/policies/dependencies/dependency_list_export_policy_spec.rb'
+ - 'ee/spec/policies/epic_policy_spec.rb'
+ - 'ee/spec/policies/event_policy_spec.rb'
+ - 'ee/spec/policies/global_policy_spec.rb'
+ - 'ee/spec/policies/group_policy_spec.rb'
+ - 'ee/spec/policies/identity_provider_policy_spec.rb'
+ - 'ee/spec/policies/incident_management/oncall_rotation_policy_spec.rb'
+ - 'ee/spec/policies/incident_management/oncall_schedule_policy_spec.rb'
+ - 'ee/spec/policies/incident_management/oncall_shift_policy_spec.rb'
+ - 'ee/spec/policies/issue_policy_spec.rb'
+ - 'ee/spec/policies/merge_request/diff_llm_summary_policy_spec.rb'
+ - 'ee/spec/policies/merge_request_policy_spec.rb'
+ - 'ee/spec/policies/merge_requests/external_status_check_policy_spec.rb'
+ - 'ee/spec/policies/packages/policies/project_policy_spec.rb'
+ - 'ee/spec/policies/project_policy_spec.rb'
+ - 'ee/spec/policies/remote_development/workspace_policy_spec.rb'
+ - 'ee/spec/policies/requirements_management/requirement_policy_spec.rb'
+ - 'ee/spec/policies/resource_iteration_event_policy_spec.rb'
+ - 'ee/spec/policies/resource_weight_event_policy_spec.rb'
+ - 'ee/spec/policies/security/scan_policy_spec.rb'
+ - 'ee/spec/policies/vulnerabilities/issue_link_policy_spec.rb'
+ - 'ee/spec/policies/vulnerabilities/merge_request_link_policy_spec.rb'
+ - 'ee/spec/presenters/approval_rule_presenter_spec.rb'
+ - 'ee/spec/requests/admin/credentials_controller_spec.rb'
+ - 'ee/spec/requests/api/analytics/product_analytics_spec.rb'
+ - 'ee/spec/requests/api/award_emoji_spec.rb'
+ - 'ee/spec/requests/api/ci/jobs_spec.rb'
+ - 'ee/spec/requests/api/ci/triggers_spec.rb'
+ - 'ee/spec/requests/api/commits_spec.rb'
+ - 'ee/spec/requests/api/composer_packages_spec.rb'
+ - 'ee/spec/requests/api/conan_project_packages_spec.rb'
+ - 'ee/spec/requests/api/debian_group_packages_spec.rb'
+ - 'ee/spec/requests/api/debian_project_packages_spec.rb'
+ - 'ee/spec/requests/api/dependencies_spec.rb'
+ - 'ee/spec/requests/api/dependency_list_exports_spec.rb'
+ - 'ee/spec/requests/api/deployments_spec.rb'
+ - 'ee/spec/requests/api/epic_links_spec.rb'
+ - 'ee/spec/requests/api/experiments_spec.rb'
+ - 'ee/spec/requests/api/generic_packages_spec.rb'
+ - 'ee/spec/requests/api/go_proxy_spec.rb'
+ - 'ee/spec/requests/api/graphql/app_sec/fuzzing/api/ci_configuration_type_spec.rb'
+ - 'ee/spec/requests/api/graphql/app_sec/fuzzing/coverage/corpus_type_spec.rb'
+ - 'ee/spec/requests/api/graphql/boards/boards_query_spec.rb'
+ - 'ee/spec/requests/api/graphql/boards/epic_board_list_epics_query_spec.rb'
+ - 'ee/spec/requests/api/graphql/boards/epic_boards_query_spec.rb'
+ - 'ee/spec/requests/api/graphql/boards/epic_lists_query_spec.rb'
+ - 'ee/spec/requests/api/graphql/ci/catalog/resources_spec.rb'
+ - 'ee/spec/requests/api/graphql/ci/minutes/usage_spec.rb'
+ - 'ee/spec/requests/api/graphql/compliance_management/merge_requests/compliance_violations_spec.rb'
+ - 'ee/spec/requests/api/graphql/dora/dora_scores_spec.rb'
+ - 'ee/spec/requests/api/graphql/epics/epic_resolver_spec.rb'
+ - 'ee/spec/requests/api/graphql/gitlab_subscriptions/preview_billable_user_change_spec.rb'
+ - 'ee/spec/requests/api/graphql/group/dast_profile_schedule_spec.rb'
+ - 'ee/spec/requests/api/graphql/group/epic/epic_aggregate_query_spec.rb'
+ - 'ee/spec/requests/api/graphql/group/epic/epic_ancestors_spec.rb'
+ - 'ee/spec/requests/api/graphql/group/epic/epic_children_spec.rb'
+ - 'ee/spec/requests/api/graphql/group/epic/epic_issues_spec.rb'
+ - 'ee/spec/requests/api/graphql/group/epics_spec.rb'
+ - 'ee/spec/requests/api/graphql/group/external_audit_event_destinations_spec.rb'
+ - 'ee/spec/requests/api/graphql/group_query_spec.rb'
+ - 'ee/spec/requests/api/graphql/incident_management/issuable_resource_links_spec.rb'
+ - 'ee/spec/requests/api/graphql/instance_security_dashboard_spec.rb'
+ - 'ee/spec/requests/api/graphql/issue/issue_spec.rb'
+ - 'ee/spec/requests/api/graphql/iterations/cadences_spec.rb'
+ - 'ee/spec/requests/api/graphql/iterations/iterations_spec.rb'
+ - 'ee/spec/requests/api/graphql/merge_requests/finding_reports_comparer_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/alert_management/http_integration/create_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/alert_management/http_integration/update_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/audit_events/external_audit_event_destinations/create_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/audit_events/external_audit_event_destinations/destroy_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/audit_events/external_audit_event_destinations/update_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/audit_events/google_cloud_logging_configurations/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/google_cloud_logging_configurations/update_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/boards/create_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/boards/epic_boards/create_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/boards/epic_boards/destroy_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/boards/epic_boards/epic_move_list_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/boards/epic_boards/update_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/boards/epics/create_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/boards/lists/create_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/boards/update_epic_user_preferences_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/ci/catalog/create_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/ci/namespace_ci_cd_settings_update_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/compliance_management/frameworks/create_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/compliance_management/frameworks/destroy_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/compliance_management/frameworks/update_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/epic_tree/reorder_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/epics/add_issue_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/epics/create_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/incident_management/escalation_policy/create_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/incident_management/escalation_policy/destroy_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/incident_management/escalation_policy/update_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/incident_management/issuable_resource_link/create_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/incident_management/issuable_resource_link/destroy_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/incident_management/oncall_rotation/create_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/incident_management/oncall_rotation/update_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/incident_management/oncall_schedule/create_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/incident_management/oncall_schedule/destroy_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/incident_management/oncall_schedule/update_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/issues/create_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/issues/set_epic_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/issues/set_escalation_policy_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/issues/update_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/iterations/cadences/create_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/iterations/cadences/destroy_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/iterations/cadences/update_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/iterations/create_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/iterations/delete_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/iterations/update_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/members/groups/ee/bulk_update_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/merge_requests/set_assignees_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/merge_requests/update_approval_rule_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/notes/create/note_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/projects/chat_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/projects/initialize_product_analytics_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/projects/lock_path_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/projects/set_compliance_framework_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/releases/create_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/releases/update_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/remote_development/workspaces/create_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/remote_development/workspaces/update_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/requirements_management/create_requirement_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/requirements_management/export_requirements_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/requirements_management/update_requirement_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/security/finding/create_issue_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/security_policy/assign_security_policy_project_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/security_policy/create_security_policy_project_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/security_policy/unassign_security_policy_project_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/users/abuse/namespace_bans/destroy_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/vulnerabilities/create_issue_link_spec.rb'
+ - 'ee/spec/requests/api/graphql/namespace/compliance_frameworks_spec.rb'
+ - 'ee/spec/requests/api/graphql/namespace/projects_spec.rb'
+ - 'ee/spec/requests/api/graphql/pipeline_security_report_finding_spec.rb'
+ - 'ee/spec/requests/api/graphql/product_analytics/dashboards_spec.rb'
+ - 'ee/spec/requests/api/graphql/product_analytics/project_visualizations_spec.rb'
+ - 'ee/spec/requests/api/graphql/project/alert_management/integrations_spec.rb'
+ - 'ee/spec/requests/api/graphql/project/branch_rules/approval_project_rules_spec.rb'
+ - 'ee/spec/requests/api/graphql/project/branch_rules/branch_protection_spec.rb'
+ - 'ee/spec/requests/api/graphql/project/branch_rules/external_status_checks_spec.rb'
+ - 'ee/spec/requests/api/graphql/project/branch_rules_spec.rb'
+ - 'ee/spec/requests/api/graphql/project/compliance_framework_filters_spec.rb'
+ - 'ee/spec/requests/api/graphql/project/dast_profile_schedule_spec.rb'
+ - 'ee/spec/requests/api/graphql/project/dast_profile_spec.rb'
+ - 'ee/spec/requests/api/graphql/project/dast_profiles_spec.rb'
+ - 'ee/spec/requests/api/graphql/project/dast_scanner_profiles_spec.rb'
+ - 'ee/spec/requests/api/graphql/project/dast_site_profile_spec.rb'
+ - 'ee/spec/requests/api/graphql/project/dast_site_profiles_spec.rb'
+ - 'ee/spec/requests/api/graphql/project/dast_site_validations_spec.rb'
+ - 'ee/spec/requests/api/graphql/project/incident_management/escalation_policies_spec.rb'
+ - 'ee/spec/requests/api/graphql/project/incident_management/escalation_policy/rules_spec.rb'
+ - 'ee/spec/requests/api/graphql/project/incident_management/oncall_schedules_spec.rb'
+ - 'ee/spec/requests/api/graphql/project/issue_status_counts_spec.rb'
+ - 'ee/spec/requests/api/graphql/project/pipeline/code_quality_report_summary_spec.rb'
+ - 'ee/spec/requests/api/graphql/project/pipeline/code_quality_reports_spec.rb'
+ - 'ee/spec/requests/api/graphql/project/pipeline/dast_profile_spec.rb'
+ - 'ee/spec/requests/api/graphql/project/pipeline/security_report_finding_spec.rb'
+ - 'ee/spec/requests/api/graphql/project/pipeline/security_report_findings_spec.rb'
+ - 'ee/spec/requests/api/graphql/project/pipeline/security_report_summary_spec.rb'
+ - 'ee/spec/requests/api/graphql/project/pipelines/dast_profile_spec.rb'
+ - 'ee/spec/requests/api/graphql/project/product_analytics_spec.rb'
+ - 'ee/spec/requests/api/graphql/project/requirements_management/requirement_counts_spec.rb'
+ - 'ee/spec/requests/api/graphql/project/requirements_management/requirements_spec.rb'
+ - 'ee/spec/requests/api/graphql/project/requirements_management/test_reports_spec.rb'
+ - 'ee/spec/requests/api/graphql/project/security_orchestration/scan_result_policy_spec.rb'
+ - 'ee/spec/requests/api/graphql/project/vulnerability_severities_count_spec.rb'
+ - 'ee/spec/requests/api/graphql/subscriptions/ai_completion_response_spec.rb'
+ - 'ee/spec/requests/api/graphql/vulnerabilities/description_spec.rb'
+ - 'ee/spec/requests/api/graphql/vulnerabilities/details_spec.rb'
+ - 'ee/spec/requests/api/graphql/vulnerabilities/external_issue_links_spec.rb'
+ - 'ee/spec/requests/api/graphql/vulnerabilities/identifiers_spec.rb'
+ - 'ee/spec/requests/api/graphql/vulnerabilities/issue_links_spec.rb'
+ - 'ee/spec/requests/api/graphql/vulnerabilities/location_spec.rb'
+ - 'ee/spec/requests/api/graphql/vulnerabilities/primary_identifier_spec.rb'
+ - 'ee/spec/requests/api/graphql/vulnerabilities/scanner_spec.rb'
+ - 'ee/spec/requests/api/graphql/vulnerabilities/sort_spec.rb'
+ - 'ee/spec/requests/api/group_hooks_spec.rb'
+ - 'ee/spec/requests/api/groups_spec.rb'
+ - 'ee/spec/requests/api/helm_packages_spec.rb'
+ - 'ee/spec/requests/api/internal/base_spec.rb'
+ - 'ee/spec/requests/api/invitations_spec.rb'
+ - 'ee/spec/requests/api/issue_links_spec.rb'
+ - 'ee/spec/requests/api/issues_spec.rb'
+ - 'ee/spec/requests/api/managed_licenses_spec.rb'
+ - 'ee/spec/requests/api/maven_packages_spec.rb'
+ - 'ee/spec/requests/api/member_roles_spec.rb'
+ - 'ee/spec/requests/api/members_spec.rb'
+ - 'ee/spec/requests/api/merge_request_approval_settings_spec.rb'
+ - 'ee/spec/requests/api/merge_requests_spec.rb'
+ - 'ee/spec/requests/api/namespaces_spec.rb'
+ - 'ee/spec/requests/api/npm_project_packages_spec.rb'
+ - 'ee/spec/requests/api/nuget_group_packages_spec.rb'
+ - 'ee/spec/requests/api/nuget_project_packages_spec.rb'
+ - 'ee/spec/requests/api/project_mirror_spec.rb'
+ - 'ee/spec/requests/api/project_push_rule_spec.rb'
+ - 'ee/spec/requests/api/projects_spec.rb'
+ - 'ee/spec/requests/api/protected_branches_spec.rb'
+ - 'ee/spec/requests/api/protected_environments_spec.rb'
+ - 'ee/spec/requests/api/pypi_packages_spec.rb'
+ - 'ee/spec/requests/api/related_epic_links_spec.rb'
+ - 'ee/spec/requests/api/remote_mirrors_spec.rb'
+ - 'ee/spec/requests/api/repositories_spec.rb'
+ - 'ee/spec/requests/api/rubygem_packages_spec.rb'
+ - 'ee/spec/requests/api/saml_group_links_spec.rb'
+ - 'ee/spec/requests/api/search_spec.rb'
+ - 'ee/spec/requests/api/todos_spec.rb'
+ - 'ee/spec/requests/api/v3/github_spec.rb'
+ - 'ee/spec/requests/api/vulnerabilities_spec.rb'
+ - 'ee/spec/requests/api/vulnerability_exports_spec.rb'
+ - 'ee/spec/requests/api/vulnerability_findings_spec.rb'
+ - 'ee/spec/requests/api/vulnerability_issue_links_spec.rb'
+ - 'ee/spec/requests/ee/groups/autocomplete_sources_spec.rb'
+ - 'ee/spec/requests/ee/groups/settings/repository_controller_spec.rb'
+ - 'ee/spec/requests/ee/projects/cycle_analytics_controller_spec.rb'
+ - 'ee/spec/requests/ee/projects/deploy_tokens_controller_spec.rb'
+ - 'ee/spec/requests/ee/projects/repositories_controller_spec.rb'
+ - 'ee/spec/requests/ee/projects/service_desk_controller_spec.rb'
+ - 'ee/spec/requests/git_http_geo_spec.rb'
+ - 'ee/spec/requests/git_http_spec.rb'
+ - 'ee/spec/requests/groups/analytics/devops_adoption_controller_spec.rb'
+ - 'ee/spec/requests/groups/dependencies_controller_spec.rb'
+ - 'ee/spec/requests/groups/epics/epic_links_controller_spec.rb'
+ - 'ee/spec/requests/groups/protected_branches_controller_spec.rb'
+ - 'ee/spec/requests/groups/security/compliance_framework_reports_controller_spec.rb'
+ - 'ee/spec/requests/groups/security/credentials_controller_spec.rb'
+ - 'ee/spec/requests/groups/settings/merge_requests_controller_spec.rb'
+ - 'ee/spec/requests/groups/two_factor_auths_controller_spec.rb'
+ - 'ee/spec/requests/jwt_controller_spec.rb'
+ - 'ee/spec/requests/lfs_locks_api_spec.rb'
+ - 'ee/spec/requests/projects/analytics/cycle_analytics/stages_controller_spec.rb'
+ - 'ee/spec/requests/projects/ci/catalog/resources_controller_spec.rb'
+ - 'ee/spec/requests/projects/dependencies_controller_spec.rb'
+ - 'ee/spec/requests/projects/issues_controller_spec.rb'
+ - 'ee/spec/requests/projects/on_demand_scans_controller_spec.rb'
+ - 'ee/spec/requests/projects/pipelines/email_campaigns_controller_spec.rb'
+ - 'ee/spec/requests/projects/requirements_management/requirements_controller_spec.rb'
+ - 'ee/spec/requests/projects/security/dast_configuration_controller_spec.rb'
+ - 'ee/spec/requests/projects/security/dast_scanner_profiles_controller_spec.rb'
+ - 'ee/spec/requests/projects/security/policies_controller_spec.rb'
+ - 'ee/spec/requests/projects/security/scanned_resources_controller_spec.rb'
+ - 'ee/spec/requests/projects/settings/access_tokens_controller_spec.rb'
+ - 'ee/spec/requests/registrations/groups_controller_spec.rb'
+ - 'ee/spec/requests/repositories/git_http_controller_spec.rb'
+ - 'ee/spec/serializers/clusters/environment_entity_spec.rb'
+ - 'ee/spec/serializers/dependency_list_serializer_spec.rb'
+ - 'ee/spec/serializers/ee/deployment_entity_spec.rb'
+ - 'ee/spec/serializers/ee/issue_sidebar_basic_entity_spec.rb'
+ - 'ee/spec/serializers/epics/related_epic_entity_spec.rb'
+ - 'ee/spec/serializers/merge_request_poll_widget_entity_spec.rb'
+ - 'ee/spec/serializers/security/vulnerability_report_data_entity_spec.rb'
+ - 'ee/spec/serializers/vulnerabilities/feedback_entity_spec.rb'
+ - 'ee/spec/serializers/vulnerabilities/finding_entity_spec.rb'
+ - 'ee/spec/serializers/vulnerabilities/issue_link_entity_spec.rb'
+ - 'ee/spec/serializers/vulnerabilities/merge_request_link_entity_spec.rb'
+ - 'ee/spec/services/alert_management/extract_alert_payload_fields_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/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/destroy_service_spec.rb'
+ - 'ee/spec/services/app_sec/dast/site_profiles/create_service_spec.rb'
+ - 'ee/spec/services/app_sec/dast/site_profiles/update_service_spec.rb'
+ - 'ee/spec/services/approval_rules/create_service_spec.rb'
+ - 'ee/spec/services/approval_rules/update_service_spec.rb'
+ - 'ee/spec/services/audit_events/user_impersonation_group_audit_event_service_spec.rb'
+ - 'ee/spec/services/auto_merge/merge_train_service_spec.rb'
+ - 'ee/spec/services/award_emojis/add_service_spec.rb'
+ - 'ee/spec/services/award_emojis/destroy_service_spec.rb'
+ - 'ee/spec/services/boards/epic_lists/destroy_service_spec.rb'
+ - 'ee/spec/services/boards/epics/create_service_spec.rb'
+ - 'ee/spec/services/boards/epics/list_service_spec.rb'
+ - 'ee/spec/services/boards/epics/move_service_spec.rb'
+ - 'ee/spec/services/boards/epics/position_create_service_spec.rb'
+ - 'ee/spec/services/boards/update_service_spec.rb'
+ - 'ee/spec/services/ci/catalog/add_resource_service_spec.rb'
+ - 'ee/spec/services/ci/compare_license_scanning_reports_service_spec.rb'
+ - 'ee/spec/services/ci/create_pipeline_service/compliance_spec.rb'
+ - 'ee/spec/services/ci/create_pipeline_service/needs_spec.rb'
+ - 'ee/spec/services/ci/create_pipeline_service/runnable_builds_spec.rb'
+ - 'ee/spec/services/ci/llm/async_generate_config_service_spec.rb'
+ - 'ee/spec/services/ci/pipeline_trigger_service_spec.rb'
+ - 'ee/spec/services/ci/process_pipeline_service_spec.rb'
+ - 'ee/spec/services/ci/retry_pipeline_service_spec.rb'
+ - 'ee/spec/services/compliance_management/frameworks/create_service_spec.rb'
+ - 'ee/spec/services/compliance_management/frameworks/destroy_service_spec.rb'
+ - 'ee/spec/services/compliance_management/frameworks/export_service_spec.rb'
+ - 'ee/spec/services/compliance_management/frameworks/update_service_spec.rb'
+ - 'ee/spec/services/compliance_management/projects/create_ci_config_service_spec.rb'
+ - 'ee/spec/services/deployments/approval_service_spec.rb'
+ - 'ee/spec/services/dora/aggregate_metrics_service_spec.rb'
+ - 'ee/spec/services/ee/alert_management/create_alert_issue_service_spec.rb'
+ - 'ee/spec/services/ee/alert_management/http_integrations/create_service_spec.rb'
+ - 'ee/spec/services/ee/alert_management/http_integrations/update_service_spec.rb'
+ - 'ee/spec/services/ee/auth/container_registry_authentication_service_spec.rb'
+ - 'ee/spec/services/ee/authorized_project_update/project_recalculate_service_spec.rb'
+ - 'ee/spec/services/ee/design_management/delete_designs_service_spec.rb'
+ - 'ee/spec/services/ee/design_management/save_designs_service_spec.rb'
+ - 'ee/spec/services/ee/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/issuable/bulk_update_service_spec.rb'
+ - 'ee/spec/services/ee/issues/clone_service_spec.rb'
+ - 'ee/spec/services/ee/issues/close_service_spec.rb'
+ - 'ee/spec/services/ee/issues/create_service_spec.rb'
+ - 'ee/spec/services/ee/issues/reopen_service_spec.rb'
+ - 'ee/spec/services/ee/issues/update_service_spec.rb'
+ - 'ee/spec/services/ee/members/approve_access_request_service_spec.rb'
+ - 'ee/spec/services/ee/members/create_service_spec.rb'
+ - 'ee/spec/services/ee/members/destroy_service_spec.rb'
+ - 'ee/spec/services/ee/merge_requests/update_assignees_service_spec.rb'
+ - 'ee/spec/services/ee/merge_requests/update_reviewers_service_spec.rb'
+ - 'ee/spec/services/ee/notes/quick_actions_service_spec.rb'
+ - 'ee/spec/services/ee/notification_service_spec.rb'
+ - 'ee/spec/services/ee/post_receive_service_spec.rb'
+ - 'ee/spec/services/ee/protected_branches/create_service_spec.rb'
+ - 'ee/spec/services/ee/todos/destroy/entity_leave_service_spec.rb'
+ - 'ee/spec/services/ee/two_factor/destroy_service_spec.rb'
+ - 'ee/spec/services/ee/work_items/import_csv_service_spec.rb'
+ - 'ee/spec/services/epic_issues/create_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/issue_promote_service_spec.rb'
+ - 'ee/spec/services/epics/related_epic_links/create_service_spec.rb'
+ - 'ee/spec/services/epics/related_epic_links/list_service_spec.rb'
+ - 'ee/spec/services/epics/reopen_service_spec.rb'
+ - 'ee/spec/services/epics/transfer_service_spec.rb'
+ - 'ee/spec/services/epics/tree_reorder_service_spec.rb'
+ - 'ee/spec/services/epics/update_service_spec.rb'
+ - 'ee/spec/services/external_status_checks/retry_service_spec.rb'
+ - 'ee/spec/services/gitlab_subscriptions/preview_billable_user_change_service_spec.rb'
+ - 'ee/spec/services/gitlab_subscriptions/reconciliations/calculate_seat_count_data_service_spec.rb'
+ - 'ee/spec/services/group_saml/saml_group_links/create_service_spec.rb'
+ - 'ee/spec/services/groups/destroy_service_spec.rb'
+ - 'ee/spec/services/groups/enterprise_users/create_service_spec.rb'
+ - 'ee/spec/services/groups/epics_count_service_spec.rb'
+ - 'ee/spec/services/groups/transfer_service_spec.rb'
+ - 'ee/spec/services/ide/schemas_config_service_spec.rb'
+ - 'ee/spec/services/incident_management/oncall_rotations/destroy_service_spec.rb'
+ - 'ee/spec/services/incident_management/oncall_rotations/edit_service_spec.rb'
+ - 'ee/spec/services/incident_management/oncall_schedules/create_service_spec.rb'
+ - 'ee/spec/services/incident_management/oncall_schedules/destroy_service_spec.rb'
+ - 'ee/spec/services/incident_management/oncall_schedules/update_service_spec.rb'
+ - 'ee/spec/services/issuable/discussions_list_service_spec.rb'
+ - 'ee/spec/services/issues/build_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/llm/analyze_ci_job_failure_service_spec.rb'
+ - 'ee/spec/services/llm/base_service_spec.rb'
+ - 'ee/spec/services/llm/chat_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/fill_in_merge_request_template_service_spec.rb'
+ - 'ee/spec/services/llm/generate_commit_message_service_spec.rb'
+ - 'ee/spec/services/llm/generate_description_service_spec.rb'
+ - 'ee/spec/services/llm/generate_summary_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/merge_requests/summarize_diff_service_spec.rb'
+ - 'ee/spec/services/llm/merge_requests/summarize_review_service_spec.rb'
+ - 'ee/spec/services/members/activate_service_spec.rb'
+ - 'ee/spec/services/merge_trains/create_pipeline_service_spec.rb'
+ - 'ee/spec/services/notes/create_visual_review_service_spec.rb'
+ - 'ee/spec/services/product_analytics/cube_data_query_service_spec.rb'
+ - 'ee/spec/services/product_analytics/initialize_stack_service_spec.rb'
+ - 'ee/spec/services/projects/deregister_suggested_reviewers_project_service_spec.rb'
+ - 'ee/spec/services/projects/group_links/create_service_spec.rb'
+ - 'ee/spec/services/projects/group_links/update_service_spec.rb'
+ - 'ee/spec/services/projects/register_suggested_reviewers_project_service_spec.rb'
+ - 'ee/spec/services/projects/transfer_service_spec.rb'
+ - 'ee/spec/services/projects/update_service_spec.rb'
+ - 'ee/spec/services/protected_environments/base_service_spec.rb'
+ - 'ee/spec/services/quick_actions/interpret_service_spec.rb'
+ - 'ee/spec/services/requirements_management/import_csv_service_spec.rb'
+ - 'ee/spec/services/requirements_management/process_test_reports_service_spec.rb'
+ - 'ee/spec/services/security/orchestration/assign_service_spec.rb'
+ - 'ee/spec/services/security/orchestration/create_bot_service_spec.rb'
+ - 'ee/spec/services/security/security_orchestration_policies/policy_commit_service_spec.rb'
+ - 'ee/spec/services/security/security_orchestration_policies/process_scan_result_policy_service_spec.rb'
+ - 'ee/spec/services/security/security_orchestration_policies/project_create_service_spec.rb'
+ - 'ee/spec/services/status_page/mark_for_publication_service_spec.rb'
+ - 'ee/spec/services/todos/destroy/confidential_epic_service_spec.rb'
+ - 'ee/spec/services/users/abuse/git_abuse/namespace_throttle_service_spec.rb'
+ - 'ee/spec/services/vulnerabilities/destroy_dismissal_feedback_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/security_finding/create_issue_service_spec.rb'
+ - 'ee/spec/services/vulnerability_feedback/create_service_spec.rb'
+ - 'ee/spec/services/vulnerability_issue_links/bulk_create_service_spec.rb'
+ - 'ee/spec/services/vulnerability_issue_links/delete_service_spec.rb'
+ - 'ee/spec/services/vulnerability_merge_request_links/create_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/gitlab_team_member_shared_context.rb'
+ - 'ee/spec/support/shared_contexts/project_approval_rules_shared_context.rb'
+ - 'ee/spec/support/shared_examples/controllers/projects/license_scanning_report_comparison_shared_examples.rb'
+ - 'ee/spec/support/shared_examples/finders/scan_policy_base_finder_examples.rb'
+ - 'ee/spec/support/shared_examples/models/protected_environments/authorizable_examples.rb'
+ - 'ee/spec/support/shared_examples/policies/dast_on_demand_scans_shared_examples.rb'
+ - 'ee/spec/support/shared_examples/serializers/report_status_shared_examples.rb'
+ - 'ee/spec/views/compliance_management/compliance_framework/_project_settings.html.haml_spec.rb'
+ - 'ee/spec/views/layouts/header/_new_dropdown.haml_spec.rb'
+ - 'ee/spec/views/layouts/nav/sidebar/_group.html.haml_spec.rb'
+ - 'ee/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb'
+ - 'ee/spec/views/shared/promotions/_promotion_link_project.html.haml_spec.rb'
+ - 'ee/spec/workers/abuse/new_abuse_report_worker_spec.rb'
+ - 'ee/spec/workers/app_sec/dast/profile_schedule_worker_spec.rb'
+ - 'ee/spec/workers/compliance_management/framework_export_mailer_worker_spec.rb'
+ - 'ee/spec/workers/compliance_management/update_default_framework_worker_spec.rb'
+ - 'ee/spec/workers/ee/ci/build_finished_worker_spec.rb'
+ - 'ee/spec/workers/ee/new_issue_worker_spec.rb'
+ - 'ee/spec/workers/groups/export_memberships_worker_spec.rb'
+ - 'ee/spec/workers/llm/completion_worker_spec.rb'
+ - 'ee/spec/workers/merge_requests/llm/summarize_merge_request_worker_spec.rb'
+ - 'ee/spec/workers/security/orchestration_configuration_create_bot_worker_spec.rb'
+ - 'spec/controllers/autocomplete_controller_spec.rb'
+ - 'spec/controllers/concerns/metrics_dashboard_spec.rb'
+ - 'spec/controllers/dashboard_controller_spec.rb'
+ - 'spec/controllers/explore/projects_controller_spec.rb'
+ - 'spec/controllers/graphql_controller_spec.rb'
+ - 'spec/controllers/groups/clusters_controller_spec.rb'
+ - 'spec/controllers/groups/dependency_proxies_controller_spec.rb'
+ - 'spec/controllers/groups/dependency_proxy_for_containers_controller_spec.rb'
+ - 'spec/controllers/groups/group_members_controller_spec.rb'
+ - 'spec/controllers/groups/imports_controller_spec.rb'
+ - 'spec/controllers/groups/labels_controller_spec.rb'
+ - 'spec/controllers/groups/runners_controller_spec.rb'
+ - 'spec/controllers/groups/settings/applications_controller_spec.rb'
+ - 'spec/controllers/groups/settings/ci_cd_controller_spec.rb'
+ - 'spec/controllers/groups/settings/integrations_controller_spec.rb'
+ - 'spec/controllers/groups_controller_spec.rb'
+ - 'spec/controllers/import/manifest_controller_spec.rb'
+ - 'spec/controllers/profiles/notifications_controller_spec.rb'
+ - 'spec/controllers/profiles/slacks_controller_spec.rb'
+ - 'spec/controllers/projects/alert_management_controller_spec.rb'
+ - 'spec/controllers/projects/analytics/cycle_analytics/stages_controller_spec.rb'
+ - 'spec/controllers/projects/analytics/cycle_analytics/summary_controller_spec.rb'
+ - 'spec/controllers/projects/analytics/cycle_analytics/value_streams_controller_spec.rb'
+ - 'spec/controllers/projects/artifacts_controller_spec.rb'
+ - 'spec/controllers/projects/blame_controller_spec.rb'
+ - 'spec/controllers/projects/ci/lints_controller_spec.rb'
+ - 'spec/controllers/projects/ci/pipeline_editor_controller_spec.rb'
+ - 'spec/controllers/projects/clusters_controller_spec.rb'
+ - 'spec/controllers/projects/commit_controller_spec.rb'
+ - 'spec/controllers/projects/commits_controller_spec.rb'
+ - 'spec/controllers/projects/compare_controller_spec.rb'
+ - 'spec/controllers/projects/environments/sample_metrics_controller_spec.rb'
+ - 'spec/controllers/projects/error_tracking_controller_spec.rb'
+ - 'spec/controllers/projects/feature_flags_clients_controller_spec.rb'
+ - 'spec/controllers/projects/group_links_controller_spec.rb'
+ - 'spec/controllers/projects/import/jira_controller_spec.rb'
+ - 'spec/controllers/projects/issue_links_controller_spec.rb'
+ - 'spec/controllers/projects/issues_controller_spec.rb'
+ - 'spec/controllers/projects/jobs_controller_spec.rb'
+ - 'spec/controllers/projects/labels_controller_spec.rb'
+ - 'spec/controllers/projects/merge_requests_controller_spec.rb'
+ - 'spec/controllers/projects/packages/infrastructure_registry_controller_spec.rb'
+ - 'spec/controllers/projects/performance_monitoring/dashboards_controller_spec.rb'
+ - 'spec/controllers/projects/pipeline_schedules_controller_spec.rb'
+ - 'spec/controllers/projects/pipelines_controller_spec.rb'
+ - 'spec/controllers/projects/project_members_controller_spec.rb'
+ - 'spec/controllers/projects/prometheus/alerts_controller_spec.rb'
+ - 'spec/controllers/projects/prometheus/metrics_controller_spec.rb'
+ - 'spec/controllers/projects/raw_controller_spec.rb'
+ - 'spec/controllers/projects/refs_controller_spec.rb'
+ - 'spec/controllers/projects/registry/repositories_controller_spec.rb'
+ - 'spec/controllers/projects/repositories_controller_spec.rb'
+ - 'spec/controllers/projects/runner_projects_controller_spec.rb'
+ - 'spec/controllers/projects/runners_controller_spec.rb'
+ - 'spec/controllers/projects/service_desk_controller_spec.rb'
+ - 'spec/controllers/projects/settings/ci_cd_controller_spec.rb'
+ - 'spec/controllers/projects/settings/integrations_controller_spec.rb'
+ - 'spec/controllers/projects/settings/slacks_controller_spec.rb'
+ - 'spec/controllers/projects/snippets_controller_spec.rb'
+ - 'spec/controllers/projects/terraform_controller_spec.rb'
+ - 'spec/controllers/projects/usage_quotas_controller_spec.rb'
+ - 'spec/controllers/projects/web_ide_schemas_controller_spec.rb'
+ - 'spec/controllers/projects/work_items_controller_spec.rb'
+ - 'spec/controllers/projects_controller_spec.rb'
+ - 'spec/controllers/repositories/lfs_storage_controller_spec.rb'
+ - 'spec/experiments/ios_specific_templates_experiment_spec.rb'
+ - 'spec/features/admin/admin_projects_spec.rb'
+ - 'spec/features/admin/users/user_spec.rb'
+ - 'spec/features/admin/users/users_spec.rb'
+ - 'spec/features/boards/board_filters_spec.rb'
+ - 'spec/features/boards/new_issue_spec.rb'
+ - 'spec/features/boards/sidebar_assignee_spec.rb'
+ - 'spec/features/boards/sidebar_labels_spec.rb'
+ - 'spec/features/boards/sidebar_spec.rb'
+ - 'spec/features/commit_spec.rb'
+ - 'spec/features/commits/user_view_commits_spec.rb'
+ - 'spec/features/commits_spec.rb'
+ - 'spec/features/dashboard/issues_filter_spec.rb'
+ - 'spec/features/dashboard/todos/todos_spec.rb'
+ - 'spec/features/emails/issues_spec.rb'
+ - 'spec/features/global_search_spec.rb'
+ - 'spec/features/groups/board_spec.rb'
+ - 'spec/features/groups/dependency_proxy_for_containers_spec.rb'
+ - 'spec/features/groups/group_runners_spec.rb'
+ - 'spec/features/groups/import_export/export_file_spec.rb'
+ - 'spec/features/groups/members/manage_groups_spec.rb'
+ - 'spec/features/groups/members/manage_members_spec.rb'
+ - 'spec/features/groups/members/master_adds_member_with_expiration_date_spec.rb'
+ - 'spec/features/groups/new_group_page_spec.rb'
+ - 'spec/features/groups/packages_spec.rb'
+ - 'spec/features/groups/settings/access_tokens_spec.rb'
+ - 'spec/features/groups/settings/manage_applications_spec.rb'
+ - 'spec/features/groups/settings/user_searches_in_settings_spec.rb'
+ - 'spec/features/groups/show_spec.rb'
+ - 'spec/features/groups_spec.rb'
+ - 'spec/features/incidents/user_uses_quick_actions_spec.rb'
+ - 'spec/features/integrations_settings_spec.rb'
+ - 'spec/features/invites_spec.rb'
+ - 'spec/features/issues/filtered_search/dropdown_assignee_spec.rb'
+ - 'spec/features/issues/filtered_search/dropdown_author_spec.rb'
+ - 'spec/features/issues/filtered_search/dropdown_base_spec.rb'
+ - 'spec/features/issues/filtered_search/dropdown_emoji_spec.rb'
+ - 'spec/features/issues/filtered_search/dropdown_hint_spec.rb'
+ - 'spec/features/issues/filtered_search/dropdown_label_spec.rb'
+ - 'spec/features/issues/filtered_search/dropdown_milestone_spec.rb'
+ - 'spec/features/issues/filtered_search/dropdown_release_spec.rb'
+ - 'spec/features/issues/filtered_search/search_bar_spec.rb'
+ - 'spec/features/issues/incident_issue_spec.rb'
+ - 'spec/features/issues/issue_detail_spec.rb'
+ - 'spec/features/issues/issue_header_spec.rb'
+ - 'spec/features/issues/issue_sidebar_spec.rb'
+ - 'spec/features/issues/issue_state_spec.rb'
+ - 'spec/features/issues/user_comments_on_issue_spec.rb'
+ - 'spec/features/issues/user_creates_issue_by_email_spec.rb'
+ - 'spec/features/issues/user_creates_issue_spec.rb'
+ - 'spec/features/issues/user_edits_issue_spec.rb'
+ - 'spec/features/issues/user_resets_their_incoming_email_token_spec.rb'
+ - 'spec/features/markdown/keyboard_shortcuts_spec.rb'
+ - 'spec/features/markdown/observability_spec.rb'
+ - 'spec/features/merge_request/user_can_see_draft_toggle_spec.rb'
+ - 'spec/features/merge_request/user_closes_reopens_merge_request_state_spec.rb'
+ - 'spec/features/merge_request/user_comments_on_whitespace_hidden_diff_spec.rb'
+ - 'spec/features/merge_request/user_creates_discussion_on_diff_file_spec.rb'
+ - 'spec/features/merge_request/user_creates_merge_request_spec.rb'
+ - 'spec/features/merge_request/user_edits_reviewers_sidebar_spec.rb'
+ - 'spec/features/merge_request/user_posts_notes_spec.rb'
+ - 'spec/features/merge_request/user_sees_discussions_navigation_spec.rb'
+ - 'spec/features/merge_requests/user_views_open_merge_requests_spec.rb'
+ - 'spec/features/milestones/user_edits_milestone_spec.rb'
+ - 'spec/features/milestones/user_promotes_milestone_spec.rb'
+ - 'spec/features/milestones/user_views_milestones_spec.rb'
+ - 'spec/features/monitor_sidebar_link_spec.rb'
+ - 'spec/features/profiles/user_uses_comment_template_spec.rb'
+ - 'spec/features/projects/blobs/blame_spec.rb'
+ - 'spec/features/projects/blobs/blob_show_spec.rb'
+ - 'spec/features/projects/blobs/edit_spec.rb'
+ - 'spec/features/projects/blobs/user_views_pipeline_editor_button_spec.rb'
+ - 'spec/features/projects/branches/user_creates_branch_spec.rb'
+ - 'spec/features/projects/branches_spec.rb'
+ - 'spec/features/projects/commit/user_sees_pipelines_tab_spec.rb'
+ - 'spec/features/projects/commit/user_views_user_status_on_commit_spec.rb'
+ - 'spec/features/projects/deploy_keys_spec.rb'
+ - 'spec/features/projects/environments/environment_spec.rb'
+ - 'spec/features/projects/feature_flag_user_lists/user_deletes_feature_flag_user_list_spec.rb'
+ - 'spec/features/projects/feature_flag_user_lists/user_edits_feature_flag_user_list_spec.rb'
+ - 'spec/features/projects/feature_flag_user_lists/user_sees_feature_flag_user_list_details_spec.rb'
+ - 'spec/features/projects/infrastructure_registry_spec.rb'
+ - 'spec/features/projects/issues/email_participants_spec.rb'
+ - 'spec/features/projects/jobs/permissions_spec.rb'
+ - 'spec/features/projects/labels/user_creates_labels_spec.rb'
+ - 'spec/features/projects/labels/user_edits_labels_spec.rb'
+ - 'spec/features/projects/labels/user_promotes_label_spec.rb'
+ - 'spec/features/projects/labels/user_views_labels_spec.rb'
+ - 'spec/features/projects/members/groups_with_access_list_spec.rb'
+ - 'spec/features/projects/members/manage_groups_spec.rb'
+ - 'spec/features/projects/members/manage_members_spec.rb'
+ - 'spec/features/projects/members/master_adds_member_with_expiration_date_spec.rb'
+ - 'spec/features/projects/members/user_requests_access_spec.rb'
+ - 'spec/features/projects/merge_request_button_spec.rb'
+ - 'spec/features/projects/new_project_spec.rb'
+ - 'spec/features/projects/packages_spec.rb'
+ - 'spec/features/projects/pages/user_adds_domain_spec.rb'
+ - 'spec/features/projects/pages/user_configures_pages_pipeline_spec.rb'
+ - 'spec/features/projects/pages/user_edits_lets_encrypt_settings_spec.rb'
+ - 'spec/features/projects/pages/user_edits_settings_spec.rb'
+ - 'spec/features/projects/pipelines/pipeline_spec.rb'
+ - 'spec/features/projects/releases/user_creates_release_spec.rb'
+ - 'spec/features/projects/releases/user_views_edit_release_spec.rb'
+ - 'spec/features/projects/releases/user_views_releases_spec.rb'
+ - 'spec/features/projects/settings/access_tokens_spec.rb'
+ - 'spec/features/projects/settings/branch_names_settings_spec.rb'
+ - 'spec/features/projects/show/clone_button_spec.rb'
+ - 'spec/features/projects/snippets/user_comments_on_snippet_spec.rb'
+ - 'spec/features/projects/snippets/user_updates_snippet_spec.rb'
+ - 'spec/features/projects/snippets/user_views_snippets_spec.rb'
+ - 'spec/features/projects/tags/user_edits_tags_spec.rb'
+ - 'spec/features/projects/terraform_spec.rb'
+ - 'spec/features/projects/user_sees_user_popover_spec.rb'
+ - 'spec/features/projects/user_views_empty_project_spec.rb'
+ - 'spec/features/projects/work_items/work_item_children_spec.rb'
+ - 'spec/features/projects/work_items/work_item_spec.rb'
+ - 'spec/features/promotion_spec.rb'
+ - 'spec/features/registrations/oauth_registration_spec.rb'
+ - 'spec/features/reportable_note/snippets_spec.rb'
+ - 'spec/features/runners_spec.rb'
+ - 'spec/features/search/user_searches_for_code_spec.rb'
+ - 'spec/features/search/user_searches_for_comments_spec.rb'
+ - 'spec/features/search/user_searches_for_commits_spec.rb'
+ - 'spec/features/search/user_searches_for_issues_spec.rb'
+ - 'spec/features/search/user_searches_for_milestones_spec.rb'
+ - 'spec/features/search/user_searches_for_users_spec.rb'
+ - 'spec/features/search/user_searches_for_wiki_pages_spec.rb'
+ - 'spec/features/search/user_uses_header_search_field_spec.rb'
+ - 'spec/features/user_can_display_performance_bar_spec.rb'
+ - 'spec/features/user_sorts_things_spec.rb'
+ - 'spec/finders/alert_management/alerts_finder_spec.rb'
+ - 'spec/finders/autocomplete/deploy_keys_with_write_access_finder_spec.rb'
+ - 'spec/finders/autocomplete/routes_finder_spec.rb'
+ - 'spec/finders/autocomplete/users_finder_spec.rb'
+ - 'spec/finders/ci/commit_statuses_finder_spec.rb'
+ - 'spec/finders/ci/jobs_finder_spec.rb'
+ - 'spec/finders/ci/pipelines_finder_spec.rb'
+ - 'spec/finders/ci/runners_finder_spec.rb'
+ - 'spec/finders/clusters/agent_tokens_finder_spec.rb'
+ - 'spec/finders/concerns/finder_with_group_hierarchy_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/deploy_tokens/tokens_finder_spec.rb'
+ - 'spec/finders/design_management/designs_finder_spec.rb'
+ - 'spec/finders/design_management/versions_finder_spec.rb'
+ - 'spec/finders/environments/environments_finder_spec.rb'
+ - 'spec/finders/group_members_finder_spec.rb'
+ - 'spec/finders/groups/accepting_project_creations_finder_spec.rb'
+ - 'spec/finders/groups/accepting_project_imports_finder_spec.rb'
+ - 'spec/finders/groups/accepting_project_shares_finder_spec.rb'
+ - 'spec/finders/groups/accepting_project_transfers_finder_spec.rb'
+ - 'spec/finders/groups_finder_spec.rb'
+ - 'spec/finders/incident_management/timeline_event_tags_finder_spec.rb'
+ - 'spec/finders/incident_management/timeline_events_finder_spec.rb'
+ - 'spec/finders/labels_finder_spec.rb'
+ - 'spec/finders/merge_request/metrics_finder_spec.rb'
+ - 'spec/finders/merge_requests_finder_spec.rb'
+ - 'spec/finders/packages/composer/packages_finder_spec.rb'
+ - 'spec/finders/packages/group_packages_finder_spec.rb'
+ - 'spec/finders/packages/maven/package_finder_spec.rb'
+ - 'spec/finders/packages/nuget/package_finder_spec.rb'
+ - 'spec/finders/packages/pypi/packages_finder_spec.rb'
+ - 'spec/finders/projects/groups_finder_spec.rb'
+ - 'spec/finders/projects/members/effective_access_level_finder_spec.rb'
+ - 'spec/finders/projects/members/effective_access_level_per_user_finder_spec.rb'
+ - 'spec/finders/projects_finder_spec.rb'
+ - 'spec/finders/releases_finder_spec.rb'
+ - 'spec/finders/terraform/states_finder_spec.rb'
+ - 'spec/finders/user_group_notification_settings_finder_spec.rb'
+ - 'spec/frontend/fixtures/autocomplete.rb'
+ - 'spec/frontend/fixtures/autocomplete_sources.rb'
+ - 'spec/frontend/fixtures/metrics_dashboard.rb'
+ - 'spec/frontend/fixtures/milestones.rb'
+ - 'spec/frontend/fixtures/pipelines.rb'
+ - 'spec/frontend/fixtures/project.rb'
+ - 'spec/frontend/fixtures/releases.rb'
+ - 'spec/frontend/fixtures/runner.rb'
+ - 'spec/frontend/fixtures/users.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/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/commits/create_spec.rb'
+ - 'spec/graphql/mutations/custom_emoji/create_spec.rb'
+ - 'spec/graphql/mutations/custom_emoji/destroy_spec.rb'
+ - 'spec/graphql/mutations/customer_relations/contacts/update_spec.rb'
+ - 'spec/graphql/mutations/customer_relations/organizations/create_spec.rb'
+ - 'spec/graphql/mutations/customer_relations/organizations/update_spec.rb'
+ - 'spec/graphql/mutations/incident_management/timeline_event/create_spec.rb'
+ - 'spec/graphql/mutations/incident_management/timeline_event/destroy_spec.rb'
+ - 'spec/graphql/mutations/incident_management/timeline_event/promote_from_note_spec.rb'
+ - 'spec/graphql/mutations/incident_management/timeline_event/update_spec.rb'
+ - 'spec/graphql/mutations/incident_management/timeline_event_tag/create_spec.rb'
+ - 'spec/graphql/mutations/issues/create_spec.rb'
+ - 'spec/graphql/mutations/issues/move_spec.rb'
+ - 'spec/graphql/mutations/issues/set_subscription_spec.rb'
+ - 'spec/graphql/mutations/issues/update_spec.rb'
+ - 'spec/graphql/mutations/merge_requests/create_spec.rb'
+ - 'spec/graphql/mutations/merge_requests/set_subscription_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/timelogs/delete_spec.rb'
+ - 'spec/graphql/mutations/users/set_namespace_commit_email_spec.rb'
+ - 'spec/graphql/resolvers/alert_management/alert_resolver_spec.rb'
+ - 'spec/graphql/resolvers/alert_management/http_integrations_resolver_spec.rb'
+ - 'spec/graphql/resolvers/alert_management/integrations_resolver_spec.rb'
+ - 'spec/graphql/resolvers/blobs_resolver_spec.rb'
+ - 'spec/graphql/resolvers/board_list_resolver_spec.rb'
+ - 'spec/graphql/resolvers/ci/config_resolver_spec.rb'
+ - 'spec/graphql/resolvers/ci/project_pipeline_counts_resolver_spec.rb'
+ - 'spec/graphql/resolvers/clusters/agents_resolver_spec.rb'
+ - 'spec/graphql/resolvers/concerns/resolves_pipelines_spec.rb'
+ - 'spec/graphql/resolvers/crm/contact_state_counts_resolver_spec.rb'
+ - 'spec/graphql/resolvers/crm/contacts_resolver_spec.rb'
+ - 'spec/graphql/resolvers/crm/organization_state_counts_resolver_spec.rb'
+ - 'spec/graphql/resolvers/crm/organizations_resolver_spec.rb'
+ - 'spec/graphql/resolvers/data_transfer/group_data_transfer_resolver_spec.rb'
+ - 'spec/graphql/resolvers/data_transfer/project_data_transfer_resolver_spec.rb'
+ - 'spec/graphql/resolvers/design_management/design_at_version_resolver_spec.rb'
+ - 'spec/graphql/resolvers/design_management/design_resolver_spec.rb'
+ - 'spec/graphql/resolvers/design_management/designs_resolver_spec.rb'
+ - 'spec/graphql/resolvers/group_issues_resolver_spec.rb'
+ - 'spec/graphql/resolvers/group_members/notification_email_resolver_spec.rb'
+ - 'spec/graphql/resolvers/group_milestones_resolver_spec.rb'
+ - 'spec/graphql/resolvers/group_releases_resolver_spec.rb'
+ - 'spec/graphql/resolvers/incident_management/timeline_event_tags_resolver_spec.rb'
+ - 'spec/graphql/resolvers/incident_management/timeline_events_resolver_spec.rb'
+ - 'spec/graphql/resolvers/merge_requests_count_resolver_spec.rb'
+ - 'spec/graphql/resolvers/merge_requests_resolver_spec.rb'
+ - 'spec/graphql/resolvers/nested_groups_resolver_spec.rb'
+ - 'spec/graphql/resolvers/project_issues_resolver_spec.rb'
+ - 'spec/graphql/resolvers/project_jobs_resolver_spec.rb'
+ - 'spec/graphql/resolvers/project_merge_requests_resolver_spec.rb'
+ - 'spec/graphql/resolvers/project_milestones_resolver_spec.rb'
+ - 'spec/graphql/resolvers/project_pipeline_resolver_spec.rb'
+ - 'spec/graphql/resolvers/project_pipeline_schedules_resolver_spec.rb'
+ - 'spec/graphql/resolvers/project_pipeline_statistics_resolver_spec.rb'
+ - 'spec/graphql/resolvers/project_pipelines_resolver_spec.rb'
+ - 'spec/graphql/resolvers/projects/jira_projects_resolver_spec.rb'
+ - 'spec/graphql/resolvers/projects/services_resolver_spec.rb'
+ - 'spec/graphql/resolvers/release_resolver_spec.rb'
+ - 'spec/graphql/resolvers/releases_resolver_spec.rb'
+ - 'spec/graphql/resolvers/snippets_resolver_spec.rb'
+ - 'spec/graphql/resolvers/user_discussions_count_resolver_spec.rb'
+ - 'spec/graphql/resolvers/user_notes_count_resolver_spec.rb'
+ - 'spec/graphql/resolvers/users/snippets_resolver_spec.rb'
+ - 'spec/graphql/types/ci/pipeline_counts_type_spec.rb'
+ - 'spec/graphql/types/environment_type_spec.rb'
+ - 'spec/graphql/types/issue_type_spec.rb'
+ - 'spec/graphql/types/project_type_spec.rb'
+ - 'spec/graphql/types/terraform/state_version_type_spec.rb'
+ - 'spec/graphql/types/todo_type_spec.rb'
+ - 'spec/graphql/types/user_merge_request_interaction_type_spec.rb'
+ - 'spec/graphql/types/user_type_spec.rb'
+ - 'spec/helpers/admin/user_actions_helper_spec.rb'
+ - 'spec/helpers/broadcast_messages_helper_spec.rb'
+ - 'spec/helpers/ci/pipelines_helper_spec.rb'
+ - 'spec/helpers/clusters_helper_spec.rb'
+ - 'spec/helpers/events_helper_spec.rb'
+ - 'spec/helpers/groups_helper_spec.rb'
+ - 'spec/helpers/issuables_helper_spec.rb'
+ - 'spec/helpers/packages_helper_spec.rb'
+ - 'spec/helpers/projects/pipeline_helper_spec.rb'
+ - 'spec/helpers/projects/project_members_helper_spec.rb'
+ - 'spec/helpers/projects_helper_spec.rb'
+ - 'spec/helpers/search_helper_spec.rb'
+ - 'spec/helpers/timeboxes_helper_spec.rb'
+ - 'spec/helpers/tree_helper_spec.rb'
+ - 'spec/helpers/users/group_callouts_helper_spec.rb'
+ - 'spec/helpers/web_hooks/web_hooks_helper_spec.rb'
+ - 'spec/lib/api/entities/release_spec.rb'
+ - 'spec/lib/api/helpers/packages_helpers_spec.rb'
+ - 'spec/lib/api/helpers_spec.rb'
+ - 'spec/lib/banzai/filter/repository_link_filter_spec.rb'
+ - 'spec/lib/banzai/reference_parser/issue_parser_spec.rb'
+ - 'spec/lib/banzai/reference_parser/work_item_parser_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/transformers/user_reference_transformer_spec.rb'
+ - 'spec/lib/bulk_imports/groups/pipelines/group_pipeline_spec.rb'
+ - 'spec/lib/bulk_imports/groups/pipelines/namespace_settings_pipeline_spec.rb'
+ - 'spec/lib/bulk_imports/groups/pipelines/project_entities_pipeline_spec.rb'
+ - 'spec/lib/bulk_imports/groups/pipelines/subgroup_entities_pipeline_spec.rb'
+ - 'spec/lib/bulk_imports/projects/pipelines/ci_pipelines_pipeline_spec.rb'
+ - 'spec/lib/bulk_imports/projects/pipelines/commit_notes_pipeline_spec.rb'
+ - 'spec/lib/bulk_imports/projects/pipelines/issues_pipeline_spec.rb'
+ - 'spec/lib/bulk_imports/projects/pipelines/merge_requests_pipeline_spec.rb'
+ - 'spec/lib/bulk_imports/projects/pipelines/pipeline_schedules_pipeline_spec.rb'
+ - 'spec/lib/bulk_imports/projects/pipelines/project_pipeline_spec.rb'
+ - 'spec/lib/bulk_imports/projects/pipelines/references_pipeline_spec.rb'
+ - 'spec/lib/bulk_imports/projects/pipelines/releases_pipeline_spec.rb'
+ - 'spec/lib/bulk_imports/projects/pipelines/snippets_pipeline_spec.rb'
+ - 'spec/lib/gitlab/alert_management/alert_status_counts_spec.rb'
+ - 'spec/lib/gitlab/analytics/cycle_analytics/base_query_builder_spec.rb'
+ - 'spec/lib/gitlab/auth_spec.rb'
+ - 'spec/lib/gitlab/changelog/config_spec.rb'
+ - 'spec/lib/gitlab/ci/components/instance_path_spec.rb'
+ - 'spec/lib/gitlab/ci/config/external/file/project_spec.rb'
+ - 'spec/lib/gitlab/ci/config/external/processor_spec.rb'
+ - 'spec/lib/gitlab/ci/config_spec.rb'
+ - 'spec/lib/gitlab/ci/lint_spec.rb'
+ - 'spec/lib/gitlab/ci/pipeline/chain/build/associations_spec.rb'
+ - 'spec/lib/gitlab/ci/status/build/play_spec.rb'
+ - 'spec/lib/gitlab/ci/variables/builder/pipeline_spec.rb'
+ - 'spec/lib/gitlab/cycle_analytics/stage_summary_spec.rb'
+ - 'spec/lib/gitlab/database/schema_validation/track_inconsistency_spec.rb'
+ - 'spec/lib/gitlab/email/handler/service_desk_handler_spec.rb'
+ - 'spec/lib/gitlab/git/repository_spec.rb'
+ - 'spec/lib/gitlab/git_access_wiki_spec.rb'
+ - 'spec/lib/gitlab/group_search_results_spec.rb'
+ - 'spec/lib/gitlab/import_export/project/tree_saver_spec.rb'
+ - 'spec/lib/gitlab/import_export/wiki_repo_saver_spec.rb'
+ - 'spec/lib/gitlab/metrics/dashboard/finder_spec.rb'
+ - 'spec/lib/gitlab/pipeline_scope_counts_spec.rb'
+ - 'spec/lib/gitlab/project_authorizations_spec.rb'
+ - 'spec/lib/gitlab/project_search_results_spec.rb'
+ - 'spec/lib/gitlab/reference_extractor_spec.rb'
+ - 'spec/lib/gitlab/search_results_spec.rb'
+ - 'spec/lib/gitlab/slash_commands/presenters/issue_move_spec.rb'
+ - 'spec/lib/gitlab/tree_summary_spec.rb'
+ - 'spec/mailers/emails/in_product_marketing_spec.rb'
+ - 'spec/models/ci/bridge_spec.rb'
+ - 'spec/models/ci/catalog/listing_spec.rb'
+ - 'spec/models/ci/pipeline_spec.rb'
+ - 'spec/models/ci/processable_spec.rb'
+ - 'spec/models/concerns/has_user_type_spec.rb'
+ - 'spec/models/concerns/loaded_in_group_list_spec.rb'
+ - 'spec/models/event_spec.rb'
+ - 'spec/models/group_spec.rb'
+ - 'spec/models/integrations/microsoft_teams_spec.rb'
+ - 'spec/models/issue_spec.rb'
+ - 'spec/models/members/group_member_spec.rb'
+ - 'spec/models/members/project_member_spec.rb'
+ - 'spec/models/namespace_spec.rb'
+ - 'spec/models/note_spec.rb'
+ - 'spec/models/preloaders/user_max_access_level_in_projects_preloader_spec.rb'
+ - 'spec/models/preloaders/users_max_access_level_by_project_preloader_spec.rb'
+ - 'spec/models/project_spec.rb'
+ - 'spec/models/project_team_spec.rb'
+ - 'spec/models/protected_branch_spec.rb'
+ - 'spec/models/users/merge_request_interaction_spec.rb'
+ - 'spec/policies/alert_management/alert_policy_spec.rb'
+ - 'spec/policies/ci/pipeline_schedule_policy_spec.rb'
+ - 'spec/policies/incident_management/timeline_event_policy_spec.rb'
+ - 'spec/policies/issuable_policy_spec.rb'
+ - 'spec/policies/merge_request_policy_spec.rb'
+ - 'spec/policies/packages/package_policy_spec.rb'
+ - 'spec/policies/project_snippet_policy_spec.rb'
+ - 'spec/policies/resource_label_event_policy_spec.rb'
+ - 'spec/policies/resource_milestone_event_policy_spec.rb'
+ - 'spec/policies/resource_state_event_policy_spec.rb'
+ - 'spec/policies/timelog_policy_spec.rb'
+ - 'spec/presenters/ci/pipeline_presenter_spec.rb'
+ - 'spec/presenters/ci/trigger_presenter_spec.rb'
+ - 'spec/presenters/milestone_presenter_spec.rb'
+ - 'spec/presenters/project_presenter_spec.rb'
+ - 'spec/presenters/projects/import_export/project_export_presenter_spec.rb'
+ - 'spec/presenters/release_presenter_spec.rb'
+ - 'spec/presenters/snippet_blob_presenter_spec.rb'
+ - 'spec/requests/api/alert_management_alerts_spec.rb'
+ - 'spec/requests/api/api_spec.rb'
+ - 'spec/requests/api/award_emoji_spec.rb'
+ - 'spec/requests/api/bulk_imports_spec.rb'
+ - 'spec/requests/api/ci/pipeline_schedules_spec.rb'
+ - 'spec/requests/api/ci/runner/jobs_artifacts_spec.rb'
+ - 'spec/requests/api/ci/runner/jobs_request_post_spec.rb'
+ - 'spec/requests/api/commits_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/draft_notes_spec.rb'
+ - 'spec/requests/api/environments_spec.rb'
+ - 'spec/requests/api/error_tracking/client_keys_spec.rb'
+ - 'spec/requests/api/error_tracking/project_settings_spec.rb'
+ - 'spec/requests/api/files_spec.rb'
+ - 'spec/requests/api/freeze_periods_spec.rb'
+ - 'spec/requests/api/go_proxy_spec.rb'
+ - 'spec/requests/api/graphql/ci/ci_cd_setting_spec.rb'
+ - 'spec/requests/api/graphql/ci/config_variables_spec.rb'
+ - 'spec/requests/api/graphql/ci/group_environment_scopes_spec.rb'
+ - 'spec/requests/api/graphql/ci/group_variables_spec.rb'
+ - 'spec/requests/api/graphql/ci/inherited_ci_variables_spec.rb'
+ - 'spec/requests/api/graphql/ci/manual_variables_spec.rb'
+ - 'spec/requests/api/graphql/ci/project_variables_spec.rb'
+ - 'spec/requests/api/graphql/ci/runner_spec.rb'
+ - 'spec/requests/api/graphql/ci/runners_spec.rb'
+ - 'spec/requests/api/graphql/crm/contacts_spec.rb'
+ - 'spec/requests/api/graphql/custom_emoji_query_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_manifests_spec.rb'
+ - 'spec/requests/api/graphql/group/group_members_spec.rb'
+ - 'spec/requests/api/graphql/group/issues_spec.rb'
+ - 'spec/requests/api/graphql/group/merge_requests_spec.rb'
+ - 'spec/requests/api/graphql/group/milestones_spec.rb'
+ - 'spec/requests/api/graphql/group/packages_spec.rb'
+ - 'spec/requests/api/graphql/group/timelogs_spec.rb'
+ - 'spec/requests/api/graphql/group_query_spec.rb'
+ - 'spec/requests/api/graphql/issue/issue_spec.rb'
+ - 'spec/requests/api/graphql/issue_status_counts_spec.rb'
+ - 'spec/requests/api/graphql/merge_request/merge_request_spec.rb'
+ - 'spec/requests/api/graphql/metrics/dashboard/annotations_spec.rb'
+ - 'spec/requests/api/graphql/mutations/alert_management/alerts/create_alert_issue_spec.rb'
+ - 'spec/requests/api/graphql/mutations/alert_management/alerts/todo/create_spec.rb'
+ - 'spec/requests/api/graphql/mutations/alert_management/alerts/update_alert_status_spec.rb'
+ - 'spec/requests/api/graphql/mutations/alert_management/http_integration/create_spec.rb'
+ - 'spec/requests/api/graphql/mutations/alert_management/http_integration/destroy_spec.rb'
+ - 'spec/requests/api/graphql/mutations/alert_management/http_integration/reset_token_spec.rb'
+ - 'spec/requests/api/graphql/mutations/alert_management/http_integration/update_spec.rb'
+ - 'spec/requests/api/graphql/mutations/alert_management/prometheus_integration/create_spec.rb'
+ - 'spec/requests/api/graphql/mutations/alert_management/prometheus_integration/reset_token_spec.rb'
+ - 'spec/requests/api/graphql/mutations/alert_management/prometheus_integration/update_spec.rb'
+ - 'spec/requests/api/graphql/mutations/award_emojis/add_spec.rb'
+ - 'spec/requests/api/graphql/mutations/branches/create_spec.rb'
+ - 'spec/requests/api/graphql/mutations/ci/job_token_scope/add_project_spec.rb'
+ - 'spec/requests/api/graphql/mutations/ci/job_token_scope/remove_project_spec.rb'
+ - 'spec/requests/api/graphql/mutations/ci/pipeline_schedule_create_spec.rb'
+ - 'spec/requests/api/graphql/mutations/ci/pipeline_schedule_delete_spec.rb'
+ - 'spec/requests/api/graphql/mutations/ci/pipeline_schedule_play_spec.rb'
+ - 'spec/requests/api/graphql/mutations/ci/pipeline_schedule_update_spec.rb'
+ - 'spec/requests/api/graphql/mutations/ci/project_ci_cd_settings_update_spec.rb'
+ - 'spec/requests/api/graphql/mutations/ci/runner/create_spec.rb'
+ - 'spec/requests/api/graphql/mutations/commits/create_spec.rb'
+ - 'spec/requests/api/graphql/mutations/custom_emoji/create_spec.rb'
+ - 'spec/requests/api/graphql/mutations/custom_emoji/destroy_spec.rb'
+ - 'spec/requests/api/graphql/mutations/groups/update_spec.rb'
+ - 'spec/requests/api/graphql/mutations/incident_management/timeline_event/create_spec.rb'
+ - 'spec/requests/api/graphql/mutations/incident_management/timeline_event/destroy_spec.rb'
+ - 'spec/requests/api/graphql/mutations/incident_management/timeline_event/promote_from_note_spec.rb'
+ - 'spec/requests/api/graphql/mutations/incident_management/timeline_event/update_spec.rb'
+ - 'spec/requests/api/graphql/mutations/incident_management/timeline_event_tag/create_spec.rb'
+ - 'spec/requests/api/graphql/mutations/issues/create_spec.rb'
+ - 'spec/requests/api/graphql/mutations/issues/link_alerts_spec.rb'
+ - 'spec/requests/api/graphql/mutations/issues/move_spec.rb'
+ - 'spec/requests/api/graphql/mutations/issues/set_crm_contacts_spec.rb'
+ - 'spec/requests/api/graphql/mutations/issues/set_locked_spec.rb'
+ - 'spec/requests/api/graphql/mutations/issues/update_spec.rb'
+ - 'spec/requests/api/graphql/mutations/jira_import/import_users_spec.rb'
+ - 'spec/requests/api/graphql/mutations/merge_requests/accept_spec.rb'
+ - 'spec/requests/api/graphql/mutations/merge_requests/set_assignees_spec.rb'
+ - 'spec/requests/api/graphql/mutations/merge_requests/set_reviewers_spec.rb'
+ - 'spec/requests/api/graphql/mutations/metrics/dashboard/annotations/create_spec.rb'
+ - 'spec/requests/api/graphql/mutations/metrics/dashboard/annotations/delete_spec.rb'
+ - 'spec/requests/api/graphql/mutations/packages/bulk_destroy_spec.rb'
+ - 'spec/requests/api/graphql/mutations/packages/destroy_files_spec.rb'
+ - 'spec/requests/api/graphql/mutations/releases/create_spec.rb'
+ - 'spec/requests/api/graphql/mutations/releases/delete_spec.rb'
+ - 'spec/requests/api/graphql/mutations/releases/update_spec.rb'
+ - 'spec/requests/api/graphql/mutations/snippets/create_spec.rb'
+ - 'spec/requests/api/graphql/mutations/snippets/destroy_spec.rb'
+ - 'spec/requests/api/graphql/mutations/snippets/update_spec.rb'
+ - 'spec/requests/api/graphql/namespace/projects_spec.rb'
+ - 'spec/requests/api/graphql/namespace_query_spec.rb'
+ - 'spec/requests/api/graphql/notes/note_spec.rb'
+ - 'spec/requests/api/graphql/notes/synthetic_note_resolver_spec.rb'
+ - 'spec/requests/api/graphql/packages/package_spec.rb'
+ - 'spec/requests/api/graphql/project/alert_management/alert/assignees_spec.rb'
+ - 'spec/requests/api/graphql/project/alert_management/alert/issue_spec.rb'
+ - 'spec/requests/api/graphql/project/alert_management/alert/metrics_dashboard_url_spec.rb'
+ - 'spec/requests/api/graphql/project/alert_management/alert/notes_spec.rb'
+ - 'spec/requests/api/graphql/project/alert_management/alert/todos_spec.rb'
+ - 'spec/requests/api/graphql/project/alert_management/alert_status_counts_spec.rb'
+ - 'spec/requests/api/graphql/project/alert_management/alerts_spec.rb'
+ - 'spec/requests/api/graphql/project/alert_management/integrations_spec.rb'
+ - 'spec/requests/api/graphql/project/base_service_spec.rb'
+ - 'spec/requests/api/graphql/project/branch_rules/branch_protection_spec.rb'
+ - 'spec/requests/api/graphql/project/branch_rules_spec.rb'
+ - 'spec/requests/api/graphql/project/ci_access_authorized_agents_spec.rb'
+ - 'spec/requests/api/graphql/project/data_transfer_spec.rb'
+ - 'spec/requests/api/graphql/project/grafana_integration_spec.rb'
+ - 'spec/requests/api/graphql/project/incident_management/timeline_events_spec.rb'
+ - 'spec/requests/api/graphql/project/issue/design_collection/version_spec.rb'
+ - 'spec/requests/api/graphql/project/issue/designs/notes_spec.rb'
+ - 'spec/requests/api/graphql/project/issue_spec.rb'
+ - 'spec/requests/api/graphql/project/jira_import_spec.rb'
+ - 'spec/requests/api/graphql/project/jira_projects_spec.rb'
+ - 'spec/requests/api/graphql/project/jira_service_spec.rb'
+ - 'spec/requests/api/graphql/project/job_spec.rb'
+ - 'spec/requests/api/graphql/project/merge_request_spec.rb'
+ - 'spec/requests/api/graphql/project/milestones_spec.rb'
+ - 'spec/requests/api/graphql/project/project_members_spec.rb'
+ - 'spec/requests/api/graphql/project/project_pipeline_statistics_spec.rb'
+ - 'spec/requests/api/graphql/project/project_statistics_redirect_spec.rb'
+ - 'spec/requests/api/graphql/project/runners_spec.rb'
+ - 'spec/requests/api/graphql/project/user_access_authorized_agents_spec.rb'
+ - 'spec/requests/api/graphql/project/work_items_spec.rb'
+ - 'spec/requests/api/graphql/query_spec.rb'
+ - 'spec/requests/api/graphql/subscriptions/notes/created_spec.rb'
+ - 'spec/requests/api/graphql/subscriptions/notes/deleted_spec.rb'
+ - 'spec/requests/api/graphql/subscriptions/notes/updated_spec.rb'
+ - 'spec/requests/api/graphql/subscriptions/work_item_updated_spec.rb'
+ - 'spec/requests/api/graphql/todo_query_spec.rb'
+ - 'spec/requests/api/graphql/user/starred_projects_query_spec.rb'
+ - 'spec/requests/api/graphql/users/set_namespace_commit_email_spec.rb'
+ - 'spec/requests/api/graphql/work_item_spec.rb'
+ - 'spec/requests/api/group_boards_spec.rb'
+ - 'spec/requests/api/group_container_repositories_spec.rb'
+ - 'spec/requests/api/group_export_spec.rb'
+ - 'spec/requests/api/group_import_spec.rb'
+ - 'spec/requests/api/group_milestones_spec.rb'
+ - 'spec/requests/api/groups_spec.rb'
+ - 'spec/requests/api/issue_links_spec.rb'
+ - 'spec/requests/api/issues/get_group_issues_spec.rb'
+ - 'spec/requests/api/issues/issues_spec.rb'
+ - 'spec/requests/api/labels_spec.rb'
+ - 'spec/requests/api/lint_spec.rb'
+ - 'spec/requests/api/maven_packages_spec.rb'
+ - 'spec/requests/api/merge_request_approvals_spec.rb'
+ - 'spec/requests/api/merge_requests_spec.rb'
+ - 'spec/requests/api/metrics/dashboard/annotations_spec.rb'
+ - 'spec/requests/api/metrics/user_starred_dashboards_spec.rb'
+ - 'spec/requests/api/nuget_group_packages_spec.rb'
+ - 'spec/requests/api/package_files_spec.rb'
+ - 'spec/requests/api/pages/internal_access_spec.rb'
+ - 'spec/requests/api/pages/pages_spec.rb'
+ - 'spec/requests/api/pages/private_access_spec.rb'
+ - 'spec/requests/api/pages/public_access_spec.rb'
+ - 'spec/requests/api/pages_domains_spec.rb'
+ - 'spec/requests/api/project_clusters_spec.rb'
+ - 'spec/requests/api/project_export_spec.rb'
+ - 'spec/requests/api/project_job_token_scope_spec.rb'
+ - 'spec/requests/api/project_milestones_spec.rb'
+ - 'spec/requests/api/project_packages_spec.rb'
+ - 'spec/requests/api/project_snippets_spec.rb'
+ - 'spec/requests/api/project_statistics_spec.rb'
+ - 'spec/requests/api/project_templates_spec.rb'
+ - 'spec/requests/api/projects_spec.rb'
+ - 'spec/requests/api/protected_tags_spec.rb'
+ - 'spec/requests/api/pypi_packages_spec.rb'
+ - 'spec/requests/api/releases_spec.rb'
+ - 'spec/requests/api/remote_mirrors_spec.rb'
+ - 'spec/requests/api/rpm_project_packages_spec.rb'
+ - 'spec/requests/api/rubygem_packages_spec.rb'
+ - 'spec/requests/api/search_spec.rb'
+ - 'spec/requests/api/terraform/modules/v1/packages_spec.rb'
+ - 'spec/requests/api/users_spec.rb'
+ - 'spec/requests/api/v3/github_spec.rb'
+ - 'spec/requests/api/wikis_spec.rb'
+ - 'spec/requests/concerns/planning_hierarchy_spec.rb'
+ - 'spec/requests/groups/deploy_tokens_controller_spec.rb'
+ - 'spec/requests/groups/email_campaigns_controller_spec.rb'
+ - 'spec/requests/groups/settings/access_tokens_controller_spec.rb'
+ - 'spec/requests/groups/settings/applications_controller_spec.rb'
+ - 'spec/requests/groups/usage_quotas_controller_spec.rb'
+ - 'spec/requests/groups_controller_spec.rb'
+ - 'spec/requests/lfs_http_spec.rb'
+ - 'spec/requests/lfs_locks_api_spec.rb'
+ - 'spec/requests/projects/aws/configuration_controller_spec.rb'
+ - 'spec/requests/projects/commits_controller_spec.rb'
+ - 'spec/requests/projects/google_cloud/configuration_controller_spec.rb'
+ - 'spec/requests/projects/google_cloud/databases_controller_spec.rb'
+ - 'spec/requests/projects/google_cloud/deployments_controller_spec.rb'
+ - 'spec/requests/projects/google_cloud/gcp_regions_controller_spec.rb'
+ - 'spec/requests/projects/google_cloud/service_accounts_controller_spec.rb'
+ - 'spec/requests/projects/incident_management/timeline_events_spec.rb'
+ - 'spec/requests/projects/issues/discussions_spec.rb'
+ - 'spec/requests/projects/issues_controller_spec.rb'
+ - 'spec/requests/projects/merge_requests/content_spec.rb'
+ - 'spec/requests/projects/merge_requests/context_commit_diffs_spec.rb'
+ - 'spec/requests/projects/merge_requests/diffs_spec.rb'
+ - 'spec/requests/projects/merge_requests_controller_spec.rb'
+ - 'spec/requests/projects/merge_requests_spec.rb'
+ - 'spec/requests/projects/metrics/dashboards/builder_spec.rb'
+ - 'spec/requests/projects/releases_controller_spec.rb'
+ - 'spec/requests/projects/settings/access_tokens_controller_spec.rb'
+ - 'spec/requests/projects/tags_controller_spec.rb'
+ - 'spec/requests/projects/usage_quotas_spec.rb'
+ - 'spec/requests/projects/work_items_spec.rb'
+ - 'spec/requests/projects_controller_spec.rb'
+ - 'spec/requests/rack_attack_global_spec.rb'
+ - 'spec/serializers/ci/pipeline_entity_spec.rb'
+ - 'spec/serializers/container_repository_entity_spec.rb'
+ - 'spec/serializers/container_tag_entity_spec.rb'
+ - 'spec/serializers/fork_namespace_entity_spec.rb'
+ - 'spec/serializers/group_access_token_entity_spec.rb'
+ - 'spec/serializers/group_access_token_serializer_spec.rb'
+ - 'spec/serializers/merge_request_poll_widget_entity_spec.rb'
+ - 'spec/serializers/profile/event_entity_spec.rb'
+ - 'spec/serializers/project_access_token_entity_spec.rb'
+ - 'spec/serializers/project_access_token_serializer_spec.rb'
+ - 'spec/services/alert_management/create_alert_issue_service_spec.rb'
+ - 'spec/services/authorized_project_update/project_recalculate_per_user_service_spec.rb'
+ - 'spec/services/authorized_project_update/project_recalculate_service_spec.rb'
+ - 'spec/services/award_emojis/add_service_spec.rb'
+ - 'spec/services/award_emojis/destroy_service_spec.rb'
+ - 'spec/services/boards/issues/list_service_spec.rb'
+ - 'spec/services/boards/issues/move_service_spec.rb'
+ - 'spec/services/bulk_imports/create_service_spec.rb'
+ - 'spec/services/bulk_imports/export_service_spec.rb'
+ - 'spec/services/bulk_imports/relation_export_service_spec.rb'
+ - 'spec/services/ci/build_cancel_service_spec.rb'
+ - 'spec/services/ci/build_unschedule_service_spec.rb'
+ - 'spec/services/ci/components/fetch_service_spec.rb'
+ - 'spec/services/ci/create_pipeline_service/evaluate_runner_tags_spec.rb'
+ - 'spec/services/ci/create_pipeline_service/needs_spec.rb'
+ - 'spec/services/ci/create_pipeline_service/parent_child_pipeline_spec.rb'
+ - 'spec/services/ci/create_pipeline_service/rate_limit_spec.rb'
+ - 'spec/services/ci/create_pipeline_service_spec.rb'
+ - 'spec/services/ci/create_web_ide_terminal_service_spec.rb'
+ - 'spec/services/ci/external_pull_requests/create_pipeline_service_spec.rb'
+ - 'spec/services/ci/job_artifacts/bulk_delete_by_project_service_spec.rb'
+ - 'spec/services/ci/job_token_scope/add_project_service_spec.rb'
+ - 'spec/services/ci/job_token_scope/remove_project_service_spec.rb'
+ - 'spec/services/ci/pipeline_trigger_service_spec.rb'
+ - 'spec/services/ci/retry_pipeline_service_spec.rb'
+ - 'spec/services/ci/runners/assign_runner_service_spec.rb'
+ - 'spec/services/ci/runners/bulk_delete_runners_service_spec.rb'
+ - 'spec/services/ci/runners/create_runner_service_spec.rb'
+ - 'spec/services/design_management/delete_designs_service_spec.rb'
+ - 'spec/services/discussions/resolve_service_spec.rb'
+ - 'spec/services/discussions/unresolve_service_spec.rb'
+ - 'spec/services/environments/schedule_to_delete_review_apps_service_spec.rb'
+ - 'spec/services/files/base_service_spec.rb'
+ - 'spec/services/git/branch_push_service_spec.rb'
+ - 'spec/services/google_cloud/generate_pipeline_service_spec.rb'
+ - 'spec/services/groups/auto_devops_service_spec.rb'
+ - 'spec/services/groups/autocomplete_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_shared_runners_service_spec.rb'
+ - 'spec/services/ide/base_config_service_spec.rb'
+ - 'spec/services/ide/schemas_config_service_spec.rb'
+ - 'spec/services/ide/terminal_config_service_spec.rb'
+ - 'spec/services/import/github/cancel_project_import_service_spec.rb'
+ - 'spec/services/incident_management/timeline_event_tags/create_service_spec.rb'
+ - 'spec/services/incident_management/timeline_events/update_service_spec.rb'
+ - 'spec/services/integrations/slack_interactions/incident_management/incident_modal_submit_service_spec.rb'
+ - 'spec/services/integrations/slack_options/label_search_handler_spec.rb'
+ - 'spec/services/integrations/slack_options/user_search_handler_spec.rb'
+ - 'spec/services/issuable/bulk_update_service_spec.rb'
+ - 'spec/services/issue_links/create_service_spec.rb'
+ - 'spec/services/issue_links/destroy_service_spec.rb'
+ - 'spec/services/issues/clone_service_spec.rb'
+ - 'spec/services/issues/create_service_spec.rb'
+ - 'spec/services/issues/move_service_spec.rb'
+ - 'spec/services/issues/reorder_service_spec.rb'
+ - 'spec/services/issues/set_crm_contacts_service_spec.rb'
+ - 'spec/services/issues/update_service_spec.rb'
+ - 'spec/services/jira_connect_subscriptions/create_service_spec.rb'
+ - 'spec/services/jira_import/cloud_users_mapper_service_spec.rb'
+ - 'spec/services/jira_import/server_users_mapper_service_spec.rb'
+ - 'spec/services/jira_import/users_importer_spec.rb'
+ - 'spec/services/labels/transfer_service_spec.rb'
+ - 'spec/services/members/approve_access_request_service_spec.rb'
+ - 'spec/services/members/destroy_service_spec.rb'
+ - 'spec/services/members/unassign_issuables_service_spec.rb'
+ - 'spec/services/members/update_service_spec.rb'
+ - 'spec/services/merge_requests/add_spent_time_service_spec.rb'
+ - 'spec/services/merge_requests/post_merge_service_spec.rb'
+ - 'spec/services/merge_requests/retarget_chain_service_spec.rb'
+ - 'spec/services/merge_requests/update_assignees_service_spec.rb'
+ - 'spec/services/merge_requests/update_reviewers_service_spec.rb'
+ - 'spec/services/metrics/dashboard/clone_dashboard_service_spec.rb'
+ - 'spec/services/metrics/dashboard/cluster_dashboard_service_spec.rb'
+ - 'spec/services/metrics/dashboard/cluster_metrics_embed_service_spec.rb'
+ - 'spec/services/metrics/dashboard/custom_dashboard_service_spec.rb'
+ - 'spec/services/metrics/dashboard/default_embed_service_spec.rb'
+ - 'spec/services/metrics/dashboard/dynamic_embed_service_spec.rb'
+ - 'spec/services/metrics/dashboard/pod_dashboard_service_spec.rb'
+ - 'spec/services/metrics/dashboard/system_dashboard_service_spec.rb'
+ - 'spec/services/metrics/dashboard/transient_embed_service_spec.rb'
+ - 'spec/services/metrics/dashboard/update_dashboard_service_spec.rb'
+ - 'spec/services/namespaces/in_product_marketing_emails_service_spec.rb'
+ - 'spec/services/notes/build_service_spec.rb'
+ - 'spec/services/notes/create_service_spec.rb'
+ - 'spec/services/notes/quick_actions_service_spec.rb'
+ - 'spec/services/notification_recipients/builder/new_note_spec.rb'
+ - 'spec/services/notification_service_spec.rb'
+ - 'spec/services/packages/conan/search_service_spec.rb'
+ - 'spec/services/packages/mark_packages_for_destruction_service_spec.rb'
+ - 'spec/services/packages/maven/metadata/sync_service_spec.rb'
+ - 'spec/services/packages/nuget/search_service_spec.rb'
+ - 'spec/services/packages/rubygems/dependency_resolver_service_spec.rb'
+ - 'spec/services/pages_domains/create_service_spec.rb'
+ - 'spec/services/post_receive_service_spec.rb'
+ - 'spec/services/projects/autocomplete_service_spec.rb'
+ - 'spec/services/projects/container_repository/destroy_service_spec.rb'
+ - 'spec/services/projects/create_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/import_export/export_service_spec.rb'
+ - 'spec/services/projects/operations/update_service_spec.rb'
+ - 'spec/services/projects/participants_service_spec.rb'
+ - 'spec/services/projects/transfer_service_spec.rb'
+ - 'spec/services/protected_branches/cache_service_spec.rb'
+ - 'spec/services/quick_actions/interpret_service_spec.rb'
+ - 'spec/services/releases/links/create_service_spec.rb'
+ - 'spec/services/releases/links/destroy_service_spec.rb'
+ - 'spec/services/releases/links/update_service_spec.rb'
+ - 'spec/services/resource_access_tokens/revoke_service_spec.rb'
+ - 'spec/services/search/global_service_spec.rb'
+ - 'spec/services/search_service_spec.rb'
+ - 'spec/services/security/ci_configuration/sast_create_service_spec.rb'
+ - 'spec/services/service_desk/custom_email_verifications/create_service_spec.rb'
+ - 'spec/services/snippets/bulk_destroy_service_spec.rb'
+ - 'spec/services/snippets/create_service_spec.rb'
+ - 'spec/services/snippets/destroy_service_spec.rb'
+ - 'spec/services/snippets/update_service_spec.rb'
+ - 'spec/services/tasks_to_be_done/base_service_spec.rb'
+ - 'spec/services/todo_service_spec.rb'
+ - 'spec/services/todos/destroy/entity_leave_service_spec.rb'
+ - 'spec/services/uploads/destroy_service_spec.rb'
+ - 'spec/services/users/set_namespace_commit_email_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/parent_links/reorder_service_spec.rb'
+ - 'spec/services/work_items/update_service_spec.rb'
+ - 'spec/services/work_items/widgets/description_service/update_service_spec.rb'
+ - 'spec/services/work_items/widgets/hierarchy_service/create_service_spec.rb'
+ - 'spec/services/work_items/widgets/hierarchy_service/update_service_spec.rb'
+ - 'spec/support/helpers/cycle_analytics_helpers/test_generation.rb'
+ - 'spec/support/shared_contexts/changes_access_checks_shared_context.rb'
+ - 'spec/support/shared_contexts/design_management_shared_contexts.rb'
+ - 'spec/support/shared_contexts/features/integrations/project_integrations_shared_context.rb'
+ - 'spec/support/shared_contexts/sentry_error_tracking_shared_context.rb'
+ - 'spec/support/shared_examples/features/board_sidebar_labels_examples.rb'
+ - 'spec/support/shared_examples/features/search/redacted_search_results_shared_examples.rb'
+ - 'spec/support/shared_examples/features/snippets_shared_examples.rb'
+ - 'spec/support/shared_examples/finders/issues_finder_shared_examples.rb'
+ - 'spec/support/shared_examples/graphql/members_shared_examples.rb'
+ - 'spec/support/shared_examples/graphql/mutations/security/ci_configuration_shared_examples.rb'
+ - 'spec/support/shared_examples/models/chat_integration_shared_examples.rb'
+ - 'spec/support/shared_examples/quick_actions/issue/issue_links_quick_actions_shared_examples.rb'
+ - 'spec/support/shared_examples/requests/api/graphql/projects/branch_protections/access_level_request_examples.rb'
+ - 'spec/support/shared_examples/services/container_registry_auth_service_shared_examples.rb'
+ - 'spec/support/shared_examples/services/issuable/issuable_import_csv_service_shared_examples.rb'
+ - 'spec/support/shared_examples/services/security/ci_configuration/create_service_shared_examples.rb'
+ - 'spec/views/groups/group_members/index.html.haml_spec.rb'
+ - 'spec/views/layouts/header/_new_dropdown.haml_spec.rb'
+ - 'spec/views/projects/issues/_service_desk_info_content.html.haml_spec.rb'
+ - 'spec/views/projects/pages/new.html.haml_spec.rb'
+ - 'spec/views/projects/project_members/index.html.haml_spec.rb'
+ - 'spec/workers/group_destroy_worker_spec.rb'
+ - 'spec/workers/merge_requests/update_head_pipeline_worker_spec.rb'
+ - 'spec/workers/pipeline_schedule_worker_spec.rb'
diff --git a/app/assets/javascripts/packages_and_registries/container_registry/explorer/components/details_page/tags_list_row.vue b/app/assets/javascripts/packages_and_registries/container_registry/explorer/components/details_page/tags_list_row.vue
index 307d4b9f985..a3f58cc3323 100644
--- a/app/assets/javascripts/packages_and_registries/container_registry/explorer/components/details_page/tags_list_row.vue
+++ b/app/assets/javascripts/packages_and_registries/container_registry/explorer/components/details_page/tags_list_row.vue
@@ -207,7 +207,7 @@ export default {
</template>
<template v-if="!isInvalidTag" #details-published>
- <details-row icon="clock" data-testid="published-date-detail">
+ <details-row icon="clock" padding="gl-py-3" data-testid="published-date-detail">
<gl-sprintf :message="$options.i18n.PUBLISHED_DETAILS_ROW_TEXT">
<template #repositoryPath>
<i>{{ tagLocation }}</i>
diff --git a/app/models/analytics/cycle_analytics/stage.rb b/app/models/analytics/cycle_analytics/stage.rb
index c7bff7c8d7f..6f152e7749e 100644
--- a/app/models/analytics/cycle_analytics/stage.rb
+++ b/app/models/analytics/cycle_analytics/stage.rb
@@ -3,6 +3,8 @@
module Analytics
module CycleAnalytics
class Stage < ApplicationRecord
+ MAX_STAGES_PER_VALUE_STREAM = 15
+
self.table_name = :analytics_cycle_analytics_group_stages
include DatabaseEventTracking
@@ -10,6 +12,8 @@ module Analytics
include Analytics::CycleAnalytics::Parentable
validates :name, uniqueness: { scope: [:group_id, :group_value_stream_id] }
+ validate :max_stages_count, on: :create
+
belongs_to :value_stream, class_name: 'Analytics::CycleAnalytics::ValueStream',
foreign_key: :group_value_stream_id, inverse_of: :stages
@@ -49,6 +53,15 @@ module Analytics
name
group_value_stream_id
].freeze
+
+ private
+
+ def max_stages_count
+ return unless value_stream
+ return unless value_stream.stages.count >= MAX_STAGES_PER_VALUE_STREAM
+
+ errors.add(:value_stream, _('Maximum number of stages per value stream exceeded'))
+ end
end
end
end
diff --git a/app/models/analytics/cycle_analytics/value_stream.rb b/app/models/analytics/cycle_analytics/value_stream.rb
index 31e06075bcb..16446a5b463 100644
--- a/app/models/analytics/cycle_analytics/value_stream.rb
+++ b/app/models/analytics/cycle_analytics/value_stream.rb
@@ -3,6 +3,8 @@
module Analytics
module CycleAnalytics
class ValueStream < ApplicationRecord
+ MAX_VALUE_STREAMS_PER_NAMESPACE = 50
+
self.table_name = :analytics_cycle_analytics_group_value_streams
include Analytics::CycleAnalytics::Parentable
@@ -15,6 +17,7 @@ module Analytics
validates :name, presence: true
validates :name, length: { minimum: 3, maximum: 100, allow_nil: false }, uniqueness: { scope: :group_id }
+ validate :max_value_streams_count, on: :create
accepts_nested_attributes_for :stages, allow_destroy: true
@@ -35,6 +38,13 @@ module Analytics
private
+ def max_value_streams_count
+ return unless namespace
+ return unless namespace.value_streams.count >= MAX_VALUE_STREAMS_PER_NAMESPACE
+
+ errors.add(:namespace, _('Maximum number of value streams per namespace exceeded'))
+ end
+
def ensure_aggregation_record_presence
Analytics::CycleAnalytics::Aggregation.safe_create_for_namespace(namespace)
end
diff --git a/doc/administration/instance_limits.md b/doc/administration/instance_limits.md
index 7a24db4347b..31984693360 100644
--- a/doc/administration/instance_limits.md
+++ b/doc/administration/instance_limits.md
@@ -1048,3 +1048,8 @@ The [secure files API](../api/secure_files.md) enforces the following limits:
The [changelog API](../api/repositories.md#add-changelog-data-to-a-changelog-file) enforces the following limits:
- The commit range between `from` and `to` cannot exceed 15000 commits.
+
+## Value Stream Analytics limits
+
+- Each namespace (such as a group or a project) can have a maximum of 50 value streams.
+- Each value stream can have a maximum of 15 stages.
diff --git a/doc/api/protected_branches.md b/doc/api/protected_branches.md
index 4a82fab125d..b4f1e6b5ec1 100644
--- a/doc/api/protected_branches.md
+++ b/doc/api/protected_branches.md
@@ -510,7 +510,7 @@ Example response:
```shell
curl --header 'Content-Type: application/json' --request PATCH \
- --data '{"allowed_to_push": [{"id": 12, "access_level": 0}]' \
+ --data '{"allowed_to_push": [{"id": 12, "access_level": 0}]}' \
--header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/22034114/protected_branches/master"
```
diff --git a/doc/development/database/index.md b/doc/development/database/index.md
index f532e054849..f29c8303968 100644
--- a/doc/development/database/index.md
+++ b/doc/development/database/index.md
@@ -8,6 +8,8 @@ info: To determine the technical writer assigned to the Stage/Group associated w
## Database Reviews
+- During the design phase of the feature you're working on, be mindful if you are adding any database-related changes. If you're adding or modifying a query, start looking at the `explain` plan early to avoid surprises late in the review phase.
+- If, at any time, you need help optimizing a query or understanding an `explain` plan, ask for assistance in `#database`.
- If you're creating a database MR for review, check out our [Database review guidelines](../database_review.md).
It provides an introduction on database-related changes, migrations, and complex SQL queries.
diff --git a/doc/user/profile/account/delete_account.md b/doc/user/profile/account/delete_account.md
index c367498f66e..ffea25a5b0c 100644
--- a/doc/user/profile/account/delete_account.md
+++ b/doc/user/profile/account/delete_account.md
@@ -32,7 +32,7 @@ As a user, to delete your own account:
NOTE:
On GitLab.com, there is a seven day delay between a user deleting their own account and deletion of the user record. During this time, that user is [blocked](../../admin_area/moderate_users.md#block-a-user) and a new account with the same email address or username cannot be created.
-Unblocking the account does not undo the deletion because the account will still be in the deletion queue, and there is no quick method to reverse this process.
+Unblocking the account does not undo the deletion because the account will still be in the deletion queue, and will be deleted.
## Delete users and user contributions **(FREE SELF)**
diff --git a/doc/user/profile/saved_replies.md b/doc/user/profile/saved_replies.md
deleted file mode 100644
index 1f4e4f5fa51..00000000000
--- a/doc/user/profile/saved_replies.md
+++ /dev/null
@@ -1,11 +0,0 @@
----
-redirect_to: 'comment_templates.md'
-remove_date: '2023-06-22'
----
-
-This document was moved to [another location](comment_templates.md).
-
-<!-- This redirect file can be deleted after <2023-06-22>. -->
-<!-- Redirects that point to other docs in the same project expire in three months. -->
-<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
-<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
diff --git a/doc/user/project/deploy_keys/index.md b/doc/user/project/deploy_keys/index.md
index 5bd19fec0ba..60cad9d6fe9 100644
--- a/doc/user/project/deploy_keys/index.md
+++ b/doc/user/project/deploy_keys/index.md
@@ -40,7 +40,6 @@ A deploy key is given a permission level when it is created:
You can change a deploy key's permission level after creating it. Changing a project deploy key's
permissions only applies for the current project.
-Although a deploy key is a secret that isn't associated with a specific user,
GitLab authorizes the creator of the deploy key if the Git-command triggers additional processes. For example:
- When a deploy key is used to push a commit to a [protected branch](../protected_branches.md),
diff --git a/locale/gitlab.pot b/locale/gitlab.pot
index 9e669d69b31..e04b4de3e14 100644
--- a/locale/gitlab.pot
+++ b/locale/gitlab.pot
@@ -28153,9 +28153,15 @@ msgstr ""
msgid "Maximum number of requests per minute for each raw path (default is `300`). Set to `0` to disable throttling."
msgstr ""
+msgid "Maximum number of stages per value stream exceeded"
+msgstr ""
+
msgid "Maximum number of unique IP addresses per user."
msgstr ""
+msgid "Maximum number of value streams per namespace exceeded"
+msgstr ""
+
msgid "Maximum number of variables loaded (2000)"
msgstr ""
diff --git a/rubocop/cop/rspec/before_all_role_assignment.rb b/rubocop/cop/rspec/before_all_role_assignment.rb
new file mode 100644
index 00000000000..fc7fdf4208a
--- /dev/null
+++ b/rubocop/cop/rspec/before_all_role_assignment.rb
@@ -0,0 +1,77 @@
+# frozen_string_literal: true
+
+require 'rubocop-rspec'
+
+module Rubocop
+ module Cop
+ module RSpec
+ # Checks for let_it_be with before instead of before_all when using `add_*` methods
+ #
+ # @example
+ #
+ # # bad
+ # let_it_be(:project) { create(:project) }
+ # let_it_be(:guest) { create(:user) }
+ #
+ # before do
+ # project.add_guest(guest)
+ # end
+ #
+ # # good
+ # let_it_be(:project) { create(:project) }
+ # let_it_be(:guest) { create(:user) }
+ #
+ # before_all do
+ # project.add_guest(guest)
+ # end
+ class BeforeAllRoleAssignment < RuboCop::Cop::RSpec::Base
+ MSG = "Use `before_all` when used with `%{let_it_be}`."
+
+ ROLE_METHODS = %i[add_guest add_reporter add_developer add_maintainer add_owner add_role].to_set.freeze
+
+ RESTRICT_ON_SEND = ROLE_METHODS
+
+ # @!method matching_let_it_be(node)
+ def_node_matcher :matching_let_it_be, <<~PATTERN
+ (block (send nil? $/^let_it_be/ (sym %name)) ...)
+ PATTERN
+
+ # @!method before_block?(node)
+ def_node_matcher :before_block?, <<~PATTERN
+ (block (send nil? :before ...) ...)
+ PATTERN
+
+ def_node_matcher :object_calling_add_role_method, <<~PATTERN
+ (send (send nil? $_) %ROLE_METHODS ...)
+ PATTERN
+
+ def on_send(node)
+ object_calling_add_role = object_calling_add_role_method(node)
+ return unless object_calling_add_role
+
+ before_block = before_block_ancestor(node)
+ return unless before_block
+
+ each_block_node_in_ancestor(node) do |child_node|
+ matching_let_it_be(child_node, name: object_calling_add_role) do |let_it_be|
+ message = format(MSG, let_it_be: let_it_be)
+ add_offense(node, message: message)
+ end
+ end
+ end
+
+ private
+
+ def before_block_ancestor(node)
+ node.each_ancestor(:block).find { |block_node| before_block?(block_node) }
+ end
+
+ def each_block_node_in_ancestor(node, &block)
+ node.each_ancestor do |parent_node|
+ parent_node.each_child_node(:block, &block)
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/scripts/rspec_helpers.sh b/scripts/rspec_helpers.sh
index c7f69778f1f..fc6086c6109 100644
--- a/scripts/rspec_helpers.sh
+++ b/scripts/rspec_helpers.sh
@@ -126,6 +126,45 @@ function rspec_db_library_code() {
rspec_simple_job_with_retry "-- ${db_files}"
}
+# Below is the list of options (https://linuxcommand.org/lc3_man_pages/seth.html)
+#
+# allexport same as -a
+# braceexpand same as -B
+# emacs use an emacs-style line editing interface
+# errexit same as -e
+# errtrace same as -E
+# functrace same as -T
+# hashall same as -h
+# histexpand same as -H
+# history enable command history
+# ignoreeof the shell will not exit upon reading EOF
+# interactive-comments
+# allow comments to appear in interactive commands
+# keyword same as -k
+# monitor same as -m
+# noclobber same as -C
+# noexec same as -n
+# noglob same as -f
+# nolog currently accepted but ignored
+# notify same as -b
+# nounset same as -u
+# onecmd same as -t
+# physical same as -P
+# pipefail the return value of a pipeline is the status of
+# the last command to exit with a non-zero status,
+# or zero if no command exited with a non-zero status
+# posix change the behavior of bash where the default
+# operation differs from the Posix standard to
+# match the standard
+# privileged same as -p
+# verbose same as -v
+# vi use a vi-style line editing interface
+# xtrace same as -x
+function debug_shell_options() {
+ echoinfo "Shell set options (set -o) enabled:"
+ echoinfo "$(set -o | grep 'on$')"
+}
+
function debug_rspec_variables() {
echoinfo "SKIP_FLAKY_TESTS_AUTOMATICALLY: ${SKIP_FLAKY_TESTS_AUTOMATICALLY:-}"
echoinfo "RETRY_FAILED_TESTS_IN_NEW_PROCESS: ${RETRY_FAILED_TESTS_IN_NEW_PROCESS:-}"
@@ -153,21 +192,32 @@ function handle_retry_rspec_in_new_process() {
if [[ $rspec_run_status -eq 3 ]]; then
echoerr "Not retrying failing examples since we failed early on purpose!"
- elif [[ $rspec_run_status -eq 2 ]]; then
+ exit 1
+ fi
+
+ if [[ $rspec_run_status -eq 2 ]]; then
echoerr "Not retrying failing examples since there were errors happening outside of the RSpec examples!"
- elif [[ $rspec_run_status -eq 1 ]]; then
- # Experiment to retry failed examples in a new RSpec process: https://gitlab.com/gitlab-org/quality/team-tasks/-/issues/1148
- if [[ "${RETRY_FAILED_TESTS_IN_NEW_PROCESS}" == "true" ]]; then
- retry_failed_rspec_examples
- rspec_run_status=$?
- else
- echoerr "Not retrying failing examples since \$RETRY_FAILED_TESTS_IN_NEW_PROCESS != 'true'!"
+ exit 1
+ fi
+
+ if [[ $rspec_run_status -eq 1 ]]; then
+ if is_rspec_last_run_results_file_missing; then
+ exit 1
fi
+
+ local failed_examples_count=$(grep -c " failed" "${RSPEC_LAST_RUN_RESULTS_FILE}")
+ if [[ "${failed_examples_count}" -eq "${RSPEC_FAIL_FAST_THRESHOLD}" ]]; then
+ echoerr "Not retrying failing examples since we reached the maximum number of allowed test failures!"
+ exit 1
+ fi
+
+ retry_failed_rspec_examples
+ rspec_run_status=$?
else
echosuccess "No examples to retry, congrats!"
fi
- exit $rspec_run_status
+ exit "${rspec_run_status}"
}
function rspec_paralellized_job() {
@@ -224,6 +274,7 @@ function rspec_paralellized_job() {
fi
debug_rspec_variables
+ debug_shell_options
if [[ -n "${rspec_tests_mapping_enabled}" ]]; then
tooling/bin/parallel_rspec --rspec_args "$(rspec_args "${rspec_opts}")" --filter "${RSPEC_TESTS_FILTER_FILE}" || rspec_run_status=$?
@@ -239,9 +290,12 @@ function rspec_paralellized_job() {
function retry_failed_rspec_examples() {
local rspec_run_status=0
- # Sometimes the file isn't created or is empty. In that case we exit(1) ourselves, otherwise, RSpec would
- # not run any examples an exit successfully, actually hiding failed tests!
- if [[ ! -f "${RSPEC_LAST_RUN_RESULTS_FILE}" ]] || [[ ! -s "${RSPEC_LAST_RUN_RESULTS_FILE}" ]]; then
+ if [[ "${RETRY_FAILED_TESTS_IN_NEW_PROCESS}" != "true" ]]; then
+ echoerr "Not retrying failing examples since \$RETRY_FAILED_TESTS_IN_NEW_PROCESS != 'true'!"
+ exit 1
+ fi
+
+ if is_rspec_last_run_results_file_missing; then
exit 1
fi
@@ -419,3 +473,13 @@ function generate_flaky_tests_reports() {
cleanup_individual_job_reports
}
+
+function is_rspec_last_run_results_file_missing() {
+ # Sometimes the file isn't created or is empty.
+ if [[ ! -f "${RSPEC_LAST_RUN_RESULTS_FILE}" ]] || [[ ! -s "${RSPEC_LAST_RUN_RESULTS_FILE}" ]]; then
+ echoerr "The file set inside RSPEC_LAST_RUN_RESULTS_FILE ENV variable does not exist or is empty. As a result, we won't retry failed specs."
+ return 0
+ else
+ return 1
+ fi
+}
diff --git a/spec/frontend/analytics/shared/components/projects_dropdown_filter_spec.js b/spec/frontend/analytics/shared/components/projects_dropdown_filter_spec.js
index 4e0b546b3d2..802da47d6cd 100644
--- a/spec/frontend/analytics/shared/components/projects_dropdown_filter_spec.js
+++ b/spec/frontend/analytics/shared/components/projects_dropdown_filter_spec.js
@@ -57,7 +57,6 @@ describe('ProjectsDropdownFilter component', () => {
});
};
- const findClearAllButton = () => wrapper.findByTestId('listbox-reset-button');
const findSelectedProjectsLabel = () => wrapper.findComponent(GlTruncate);
const findDropdown = () => wrapper.findComponent(GlCollapsibleListbox);
@@ -143,10 +142,6 @@ describe('ProjectsDropdownFilter component', () => {
expect(findSelectedProjectsLabel().text()).toBe('Select projects');
});
-
- it('does not render the clear all button', () => {
- expect(findClearAllButton().exists()).toBe(false);
- });
});
describe('with a selected project', () => {
@@ -169,12 +164,6 @@ describe('ProjectsDropdownFilter component', () => {
expect(findSelectedProjectsLabel().text()).toBe(projects[0].name);
});
- it('renders the clear all button', async () => {
- await selectDropdownItemAtIndex([0], false);
-
- expect(findClearAllButton().exists()).toBe(true);
- });
-
it('clears all selected items when the clear all button is clicked', async () => {
createComponent({
mountFn: mountExtended,
@@ -186,7 +175,7 @@ describe('ProjectsDropdownFilter component', () => {
expect(findSelectedProjectsLabel().text()).toBe('2 projects selected');
- await findClearAllButton().vm.$emit('click');
+ await findDropdown().vm.$emit('reset');
expect(findSelectedProjectsLabel().text()).toBe('Select projects');
});
diff --git a/spec/models/analytics/cycle_analytics/stage_spec.rb b/spec/models/analytics/cycle_analytics/stage_spec.rb
index 960d8d3e964..54ae0feca2c 100644
--- a/spec/models/analytics/cycle_analytics/stage_spec.rb
+++ b/spec/models/analytics/cycle_analytics/stage_spec.rb
@@ -3,10 +3,23 @@
require 'spec_helper'
RSpec.describe Analytics::CycleAnalytics::Stage, feature_category: :value_stream_management do
- describe 'uniqueness validation on name' do
+ describe 'validations' do
subject { build(:cycle_analytics_stage) }
it { is_expected.to validate_uniqueness_of(:name).scoped_to([:group_id, :group_value_stream_id]) }
+
+ it 'validates count of stages per value stream' do
+ stub_const("#{described_class.name}::MAX_STAGES_PER_VALUE_STREAM", 1)
+ value_stream = create(:cycle_analytics_value_stream, name: 'test')
+ create(:cycle_analytics_stage, name: "stage 1", value_stream: value_stream)
+
+ new_stage = build(:cycle_analytics_stage, name: "stage 2", value_stream: value_stream)
+
+ expect do
+ new_stage.save!
+ end.to raise_error(ActiveRecord::RecordInvalid,
+ _('Validation failed: Value stream Maximum number of stages per value stream exceeded'))
+ end
end
describe 'associations' do
diff --git a/spec/models/analytics/cycle_analytics/value_stream_spec.rb b/spec/models/analytics/cycle_analytics/value_stream_spec.rb
index f290cf25ae6..3b3187e0b51 100644
--- a/spec/models/analytics/cycle_analytics/value_stream_spec.rb
+++ b/spec/models/analytics/cycle_analytics/value_stream_spec.rb
@@ -25,6 +25,19 @@ RSpec.describe Analytics::CycleAnalytics::ValueStream, type: :model, feature_cat
it_behaves_like 'value stream analytics namespace models' do
let(:factory_name) { :cycle_analytics_value_stream }
end
+
+ it 'validates count of value streams per namespace' do
+ stub_const("#{described_class.name}::MAX_VALUE_STREAMS_PER_NAMESPACE", 1)
+ group = create(:group)
+ create(:cycle_analytics_value_stream, name: 'test', namespace: group)
+
+ new_value_stream = build(:cycle_analytics_value_stream, name: 'test2', namespace: group)
+
+ expect do
+ new_value_stream.save!
+ end.to raise_error(ActiveRecord::RecordInvalid,
+ _('Validation failed: Namespace Maximum number of value streams per namespace exceeded'))
+ end
end
describe 'scopes' do
diff --git a/spec/rubocop/cop/rspec/before_all_role_assignment_spec.rb b/spec/rubocop/cop/rspec/before_all_role_assignment_spec.rb
new file mode 100644
index 00000000000..f8a9a6e22c4
--- /dev/null
+++ b/spec/rubocop/cop/rspec/before_all_role_assignment_spec.rb
@@ -0,0 +1,234 @@
+# frozen_string_literal: true
+
+require 'rubocop_spec_helper'
+require 'rspec-parameterized'
+require_relative '../../../../rubocop/cop/rspec/before_all_role_assignment'
+
+RSpec.describe Rubocop::Cop::RSpec::BeforeAllRoleAssignment, :rubocop_rspec, feature_category: :tooling do
+ context 'with `let`' do
+ context 'and `before_all`' do
+ it 'does not register an offense' do
+ expect_no_offenses(<<~RUBY)
+ context 'with something' do
+ let(:project) { create(:project) }
+ let(:guest) { create(:user) }
+
+ before_all do
+ project.add_guest(guest)
+ end
+ end
+ RUBY
+ end
+ end
+
+ context 'and `before`' do
+ it 'does not register an offense' do
+ expect_no_offenses(<<~RUBY)
+ context 'with something' do
+ let(:project) { create(:project) }
+ let(:guest) { create(:user) }
+
+ before do
+ project.add_guest(guest)
+ end
+ end
+ RUBY
+ end
+ end
+ end
+
+ shared_examples '`let_it_be` definitions' do |let_it_be|
+ context 'and `before_all`' do
+ it 'does not register an offense' do
+ expect_no_offenses(<<~RUBY)
+ context 'with something' do
+ #{let_it_be}(:project) { create(:project) }
+ #{let_it_be}(:guest) { create(:user) }
+
+ before_all do
+ project.add_guest(guest)
+ end
+ end
+ RUBY
+ end
+ end
+
+ context 'and `before`' do
+ context 'and without role methods' do
+ it 'does not register an offense' do
+ expect_no_offenses(<<~RUBY)
+ context 'with something' do
+ #{let_it_be}(:project) { create(:project) }
+ #{let_it_be}(:guest) { create(:user) }
+
+ before do
+ project.add_details(guest)
+ end
+ end
+ RUBY
+ end
+ end
+
+ context 'and role methods' do
+ where(:role_method) { described_class::ROLE_METHODS.to_a }
+
+ with_them do
+ it 'registers an offense' do
+ expect_offense(<<~RUBY, role_method: role_method)
+ context 'with something' do
+ #{let_it_be}(:project) { create(:project) }
+ #{let_it_be}(:guest) { create(:user) }
+
+ before do
+ project.%{role_method}(guest)
+ ^^^^^^^^^{role_method}^^^^^^^ Use `before_all` when used with `#{let_it_be}`.
+ end
+ end
+ RUBY
+ end
+ end
+ end
+
+ context 'without nested contexts' do
+ it 'registers an offense' do
+ expect_offense(<<~RUBY)
+ context 'with something' do
+ #{let_it_be}(:project) { create(:project) }
+ #{let_it_be}(:guest) { create(:user) }
+
+ before do
+ project.add_guest(guest)
+ ^^^^^^^^^^^^^^^^^^^^^^^^ Use `before_all` when used with `#{let_it_be}`.
+ end
+ end
+ RUBY
+ end
+ end
+
+ context 'with nested contexts' do
+ it 'registers an offense' do
+ expect_offense(<<~RUBY)
+ context 'when first context' do
+ #{let_it_be}(:guest) { create(:user) }
+
+ context 'when second context' do
+ #{let_it_be}(:project) { create(:project) }
+
+ context 'when third context' do
+ before do
+ project.add_guest(guest)
+ ^^^^^^^^^^^^^^^^^^^^^^^^ Use `before_all` when used with `#{let_it_be}`.
+ end
+ end
+ end
+ end
+ RUBY
+ end
+ end
+
+ describe 'edge cases' do
+ context 'with unrelated `let_it_be` definition' do
+ it 'does not register an offense' do
+ expect_no_offenses(<<~RUBY)
+ context 'with something' do
+ let(:project) { create(:project) }
+ #{let_it_be}(:user) { create(:user) }
+
+ before do
+ project.add_guest(guest)
+ end
+ end
+ RUBY
+ end
+ end
+
+ context 'with many role method calls' do
+ it 'registers an offense' do
+ expect_offense(<<~RUBY)
+ context 'with something' do
+ let(:project) { create(:project) }
+ #{let_it_be}(:other_project) { create(:user) }
+
+ before do
+ project.add_guest(guest)
+ other_project.add_guest(guest)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Use `before_all` when used with `#{let_it_be}`.
+ end
+ end
+ RUBY
+ end
+ end
+
+ context 'with alternative example groups' do
+ it 'registers an offense' do
+ expect_offense(<<~RUBY)
+ describe 'with something' do
+ #{let_it_be}(:project) { create(:user) }
+
+ before do
+ project.add_guest(guest)
+ ^^^^^^^^^^^^^^^^^^^^^^^^ Use `before_all` when used with `#{let_it_be}`.
+ end
+ end
+
+ it_behaves_like 'with something' do
+ #{let_it_be}(:project) { create(:user) }
+
+ before do
+ project.add_guest(guest)
+ ^^^^^^^^^^^^^^^^^^^^^^^^ Use `before_all` when used with `#{let_it_be}`.
+ end
+ end
+
+ include_examples 'with something' do
+ #{let_it_be}(:project) { create(:user) }
+
+ before do
+ project.add_guest(guest)
+ ^^^^^^^^^^^^^^^^^^^^^^^^ Use `before_all` when used with `#{let_it_be}`.
+ end
+ end
+ RUBY
+ end
+ end
+
+ context 'with `let_it_be` outside of the ancestors chain' do
+ it 'does not register an offense' do
+ expect_no_offenses(<<~RUBY)
+ context 'when in main context' do
+ let(:project) { create(:user) }
+
+ before do
+ project.add_guest(guest)
+ end
+
+ context 'when in a separate context' do
+ #{let_it_be}(:project) { create(:user) }
+
+ before do
+ project
+ end
+ end
+ end
+ RUBY
+ end
+ end
+ end
+ end
+ end
+
+ context 'with `let_it_be` variants' do
+ before do
+ other_cops.tap do |config|
+ config.dig('RSpec', 'Language', 'Helpers')
+ .push('let_it_be', 'let_it_be_with_reload', 'let_it_be_with_refind')
+ end
+ end
+
+ where(:let_it_be) { %i[let_it_be let_it_be_with_reload let_it_be_with_refind] }
+
+ with_them do
+ include_examples '`let_it_be` definitions', params[:let_it_be]
+ end
+ end
+end