Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
f995b96e16
commit
35e1f69e79
|
|
@ -7,7 +7,6 @@ export default {
|
|||
'app/assets/javascripts/admin/abuse_report/components/notes/abuse_report_comment_form.vue',
|
||||
'app/assets/javascripts/admin/abuse_report/components/notes/abuse_report_edit_note.vue',
|
||||
'app/assets/javascripts/admin/statistics_panel/components/app.vue',
|
||||
'app/assets/javascripts/alerts_settings/components/alerts_integrations_list.vue',
|
||||
'app/assets/javascripts/analytics/cycle_analytics/components/base.vue',
|
||||
'app/assets/javascripts/analytics/shared/components/projects_dropdown_filter.vue',
|
||||
'app/assets/javascripts/analytics/usage_trends/components/users_chart.vue',
|
||||
|
|
|
|||
|
|
@ -3633,8 +3633,8 @@ Gitlab/BoundedContexts:
|
|||
- 'ee/lib/quality/seeders/dependencies.rb'
|
||||
- 'ee/lib/quality/seeders/insights/issues.rb'
|
||||
- 'ee/lib/quality/seeders/vulnerabilities.rb'
|
||||
- 'ee/lib/sidebars/admin/menus/duo_settings_menu.rb'
|
||||
- 'ee/lib/sidebars/admin/menus/credentials_menu.rb'
|
||||
- 'ee/lib/sidebars/admin/menus/duo_settings_menu.rb'
|
||||
- 'ee/lib/sidebars/admin/menus/geo_menu.rb'
|
||||
- 'ee/lib/sidebars/admin/menus/push_rules_menu.rb'
|
||||
- 'ee/lib/sidebars/admin/menus/self_hosted_models_menu.rb'
|
||||
|
|
|
|||
|
|
@ -98,8 +98,5 @@ InternalAffairs/ExampleHeredocDelimiter:
|
|||
- 'spec/rubocop/cop/sidekiq_load_balancing/worker_data_consistency_spec.rb'
|
||||
- 'spec/rubocop/cop/sidekiq_options_queue_spec.rb'
|
||||
- 'spec/rubocop/cop/sidekiq_redis_call_spec.rb'
|
||||
- 'spec/rubocop/cop/usage_data/distinct_count_by_large_foreign_key_spec.rb'
|
||||
- 'spec/rubocop/cop/usage_data/histogram_with_large_table_spec.rb'
|
||||
- 'spec/rubocop/cop/usage_data/instrumentation_superclass_spec.rb'
|
||||
- 'spec/rubocop/cop/usage_data/large_table_spec.rb'
|
||||
- 'spec/rubocop/cop/user_admin_spec.rb'
|
||||
|
|
|
|||
|
|
@ -153,7 +153,6 @@ Layout/ArrayAlignment:
|
|||
- 'spec/lib/gitlab/graphql/loaders/batch_model_loader_spec.rb'
|
||||
- 'spec/lib/gitlab/i18n/po_linter_spec.rb'
|
||||
- 'spec/lib/gitlab/import_export/attributes_finder_spec.rb'
|
||||
- 'spec/lib/gitlab/import_export/members_mapper_spec.rb'
|
||||
- 'spec/lib/gitlab/issuable_sorter_spec.rb'
|
||||
- 'spec/lib/gitlab/kroki_spec.rb'
|
||||
- 'spec/lib/gitlab/language_detection_spec.rb'
|
||||
|
|
|
|||
|
|
@ -142,8 +142,6 @@ Layout/LineContinuationSpacing:
|
|||
- 'spec/services/users/migrate_records_to_ghost_user_service_spec.rb'
|
||||
- 'spec/support/helpers/redis_without_keys.rb'
|
||||
- 'spec/support/shared_examples/features/project_upload_files_shared_examples.rb'
|
||||
- 'spec/support/shared_examples/harbor/artifacts_controller_shared_examples.rb'
|
||||
- 'spec/support/shared_examples/harbor/tags_controller_shared_examples.rb'
|
||||
- 'spec/support/shared_examples/models/diff_note_after_commit_shared_examples.rb'
|
||||
- 'spec/support/shared_examples/requests/api/diff_discussions_shared_examples.rb'
|
||||
- 'spec/support/shared_examples/requests/api/discussions_shared_examples.rb'
|
||||
|
|
|
|||
|
|
@ -390,7 +390,6 @@ Layout/LineEndStringConcatenationIndentation:
|
|||
- 'qa/qa/service/docker_run/product_analytics/browser_sdk_app.rb'
|
||||
- 'qa/qa/service/docker_run/product_analytics/dotnet_sdk_app.rb'
|
||||
- 'qa/qa/specs/features/ee/api/10_govern/compliance_pipeline_spec.rb'
|
||||
- 'qa/qa/specs/features/ee/browser_ui/10_govern/export_vulnerability_report_spec.rb'
|
||||
- 'qa/qa/support/system_logs/kibana.rb'
|
||||
- 'qa/qa/tools/revoke_user_personal_access_tokens.rb'
|
||||
- 'qa/qa/tools/test_resources_handler.rb'
|
||||
|
|
@ -548,7 +547,6 @@ Layout/LineEndStringConcatenationIndentation:
|
|||
- 'spec/requests/api/projects_spec.rb'
|
||||
- 'spec/requests/api/releases_spec.rb'
|
||||
- 'spec/requests/projects/google_cloud/databases_controller_spec.rb'
|
||||
- 'spec/requests/pwa_controller_spec.rb'
|
||||
- 'spec/requests/verifies_with_email_spec.rb'
|
||||
- 'spec/rubocop/cop/api/grape_array_missing_coerce_spec.rb'
|
||||
- 'spec/rubocop/cop/group_public_or_visible_to_user_spec.rb'
|
||||
|
|
@ -595,8 +593,6 @@ Layout/LineEndStringConcatenationIndentation:
|
|||
- 'spec/support/shared_examples/features/inviting_members_shared_examples.rb'
|
||||
- 'spec/support/shared_examples/features/project_upload_files_shared_examples.rb'
|
||||
- 'spec/support/shared_examples/features/value_streams_dashboard_shared_examples.rb'
|
||||
- 'spec/support/shared_examples/harbor/artifacts_controller_shared_examples.rb'
|
||||
- 'spec/support/shared_examples/harbor/tags_controller_shared_examples.rb'
|
||||
- 'spec/support/shared_examples/lib/email/email_shared_examples.rb'
|
||||
- 'spec/support/shared_examples/models/concerns/avatarable_shared_examples.rb'
|
||||
- 'spec/support/shared_examples/models/diff_note_after_commit_shared_examples.rb'
|
||||
|
|
|
|||
|
|
@ -423,11 +423,9 @@ Layout/LineLength:
|
|||
- 'ee/app/controllers/ee/admin/users_controller.rb'
|
||||
- 'ee/app/controllers/ee/application_controller.rb'
|
||||
- 'ee/app/controllers/ee/groups/group_members_controller.rb'
|
||||
- 'ee/app/controllers/ee/groups_controller.rb'
|
||||
- 'ee/app/controllers/ee/projects/deploy_tokens_controller.rb'
|
||||
- 'ee/app/controllers/ee/projects/settings/operations_controller.rb'
|
||||
- 'ee/app/controllers/ee/projects/settings/repository_controller.rb'
|
||||
- 'ee/app/controllers/ee/projects_controller.rb'
|
||||
- 'ee/app/controllers/ee/repositories/git_http_client_controller.rb'
|
||||
- 'ee/app/controllers/ee/repositories/git_http_controller.rb'
|
||||
- 'ee/app/controllers/ee/repositories/lfs_api_controller.rb'
|
||||
|
|
@ -3153,7 +3151,6 @@ Layout/LineLength:
|
|||
- 'spec/lib/gitlab/github_import/importer/lfs_object_importer_spec.rb'
|
||||
- 'spec/lib/gitlab/github_import/object_counter_spec.rb'
|
||||
- 'spec/lib/gitlab/gpg/commit_spec.rb'
|
||||
- 'spec/lib/gitlab/gpg/invalid_gpg_signature_updater_spec.rb'
|
||||
- 'spec/lib/gitlab/graphql/loaders/batch_lfs_oid_loader_spec.rb'
|
||||
- 'spec/lib/gitlab/graphql/pagination/connections_spec.rb'
|
||||
- 'spec/lib/gitlab/graphql/pagination/keyset/connection_spec.rb'
|
||||
|
|
|
|||
|
|
@ -25,7 +25,6 @@ Performance/MapCompact:
|
|||
- 'app/services/cloud_seed/google_cloud/fetch_google_ip_list_service.rb'
|
||||
- 'app/services/events/render_service.rb'
|
||||
- 'app/services/feature_flags/update_service.rb'
|
||||
- 'app/services/git/base_hooks_service.rb'
|
||||
- 'app/services/jira_import/start_import_service.rb'
|
||||
- 'app/services/jira_import/users_mapper_service.rb'
|
||||
- 'app/services/labels/available_labels_service.rb'
|
||||
|
|
|
|||
|
|
@ -51,7 +51,6 @@ Performance/StringIdentifierArgument:
|
|||
- 'ee/app/services/incident_management/pending_escalations/process_service.rb'
|
||||
- 'ee/lib/gitlab/graphql/aggregations/issuables/lazy_links_aggregate.rb'
|
||||
- 'ee/spec/controllers/groups/iterations_controller_spec.rb'
|
||||
- 'ee/spec/controllers/groups/security/policies_controller_spec.rb'
|
||||
- 'ee/spec/factories/protected_branches.rb'
|
||||
- 'ee/spec/graphql/mutations/groups/update_spec.rb'
|
||||
- 'ee/spec/helpers/push_rules_helper_spec.rb'
|
||||
|
|
|
|||
|
|
@ -229,7 +229,6 @@ Rails/StrongParams:
|
|||
- 'ee/app/controllers/ee/groups/group_members_controller.rb'
|
||||
- 'ee/app/controllers/ee/groups/milestones_controller.rb'
|
||||
- 'ee/app/controllers/ee/groups/work_items_controller.rb'
|
||||
- 'ee/app/controllers/ee/groups_controller.rb'
|
||||
- 'ee/app/controllers/ee/import/github_controller.rb'
|
||||
- 'ee/app/controllers/ee/projects/application_controller.rb'
|
||||
- 'ee/app/controllers/ee/projects/cycle_analytics_controller.rb'
|
||||
|
|
|
|||
|
|
@ -173,7 +173,6 @@ RSpec/AnyInstanceOf:
|
|||
- 'spec/lib/gitlab/metrics/rack_middleware_spec.rb'
|
||||
- 'spec/lib/gitlab/metrics_spec.rb'
|
||||
- 'spec/lib/gitlab/sidekiq_daemon/monitor_spec.rb'
|
||||
- 'spec/lib/gitlab/tracking/destinations/snowplow_spec.rb'
|
||||
- 'spec/lib/gitlab/tracking_spec.rb'
|
||||
- 'spec/lib/gitlab/usage_data_spec.rb'
|
||||
- 'spec/lib/gitlab/workhorse_spec.rb'
|
||||
|
|
|
|||
|
|
@ -243,7 +243,6 @@ RSpec/ContextWording:
|
|||
- 'ee/spec/helpers/ee/auth_helper_spec.rb'
|
||||
- 'ee/spec/helpers/ee/gitlab_routing_helper_spec.rb'
|
||||
- 'ee/spec/helpers/ee/groups/group_members_helper_spec.rb'
|
||||
- 'ee/spec/helpers/ee/groups_helper_spec.rb'
|
||||
- 'ee/spec/helpers/ee/issuables_helper_spec.rb'
|
||||
- 'ee/spec/helpers/ee/issues_helper_spec.rb'
|
||||
- 'ee/spec/helpers/ee/lock_helper_spec.rb'
|
||||
|
|
|
|||
|
|
@ -155,7 +155,6 @@ RSpec/ExpectChange:
|
|||
- 'spec/controllers/admin/users_controller_spec.rb'
|
||||
- 'spec/controllers/groups/boards_controller_spec.rb'
|
||||
- 'spec/controllers/groups/group_links_controller_spec.rb'
|
||||
- 'spec/controllers/groups_controller_spec.rb'
|
||||
- 'spec/controllers/import/bitbucket_controller_spec.rb'
|
||||
- 'spec/controllers/projects/boards_controller_spec.rb'
|
||||
- 'spec/controllers/projects/deploy_keys_controller_spec.rb'
|
||||
|
|
|
|||
|
|
@ -333,7 +333,6 @@ RSpec/FactoryBot/AvoidCreate:
|
|||
- 'spec/mailers/abuse_report_mailer_spec.rb'
|
||||
- 'spec/mailers/devise_mailer_spec.rb'
|
||||
- 'spec/mailers/emails/auto_devops_spec.rb'
|
||||
- 'spec/mailers/emails/groups_spec.rb'
|
||||
- 'spec/mailers/emails/issues_spec.rb'
|
||||
- 'spec/mailers/emails/merge_requests_spec.rb'
|
||||
- 'spec/mailers/emails/pages_domains_spec.rb'
|
||||
|
|
|
|||
|
|
@ -68,7 +68,6 @@ RSpec/FeatureCategory:
|
|||
- 'ee/spec/frontend/fixtures/deployments.rb'
|
||||
- 'ee/spec/frontend/fixtures/dora/metrics.rb'
|
||||
- 'ee/spec/frontend/fixtures/epic.rb'
|
||||
- 'ee/spec/frontend/fixtures/issues.rb'
|
||||
- 'ee/spec/frontend/fixtures/oncall_schedule.rb'
|
||||
- 'ee/spec/frontend/fixtures/project_quality_summary.rb'
|
||||
- 'ee/spec/frontend/fixtures/saml_providers.rb'
|
||||
|
|
@ -1088,7 +1087,6 @@ RSpec/FeatureCategory:
|
|||
- 'spec/controllers/concerns/checks_collaboration_spec.rb'
|
||||
- 'spec/controllers/concerns/continue_params_spec.rb'
|
||||
- 'spec/controllers/concerns/controller_with_cross_project_access_check_spec.rb'
|
||||
- 'spec/controllers/concerns/enforces_admin_authentication_spec.rb'
|
||||
- 'spec/controllers/concerns/graceful_timeout_handling_spec.rb'
|
||||
- 'spec/controllers/concerns/harbor/artifact_spec.rb'
|
||||
- 'spec/controllers/concerns/harbor/repository_spec.rb'
|
||||
|
|
@ -1217,9 +1215,6 @@ RSpec/FeatureCategory:
|
|||
- 'spec/finders/ci/commit_statuses_finder_spec.rb'
|
||||
- 'spec/finders/ci/daily_build_group_report_results_finder_spec.rb'
|
||||
- 'spec/finders/ci/job_artifacts_finder_spec.rb'
|
||||
- 'spec/finders/ci/pipeline_schedules_finder_spec.rb'
|
||||
- 'spec/finders/ci/pipelines_finder_spec.rb'
|
||||
- 'spec/finders/ci/pipelines_for_merge_request_finder_spec.rb'
|
||||
- 'spec/finders/ci/variables_finder_spec.rb'
|
||||
- 'spec/finders/cluster_ancestors_finder_spec.rb'
|
||||
- 'spec/finders/clusters/agent_tokens_finder_spec.rb'
|
||||
|
|
@ -1309,7 +1304,6 @@ RSpec/FeatureCategory:
|
|||
- 'spec/frontend/fixtures/deploy_keys.rb'
|
||||
- 'spec/frontend/fixtures/freeze_period.rb'
|
||||
- 'spec/frontend/fixtures/integrations.rb'
|
||||
- 'spec/frontend/fixtures/issues.rb'
|
||||
- 'spec/frontend/fixtures/job_artifacts.rb'
|
||||
- 'spec/frontend/fixtures/jobs.rb'
|
||||
- 'spec/frontend/fixtures/labels.rb'
|
||||
|
|
@ -2378,7 +2372,6 @@ RSpec/FeatureCategory:
|
|||
- 'spec/lib/gitlab/diff/suggestions_parser_spec.rb'
|
||||
- 'spec/lib/gitlab/discussions_diff/file_collection_spec.rb'
|
||||
- 'spec/lib/gitlab/discussions_diff/highlight_cache_spec.rb'
|
||||
- 'spec/lib/gitlab/doctor/secrets_spec.rb'
|
||||
- 'spec/lib/gitlab/doorkeeper_secret_storing/secret/pbkdf2_sha512_spec.rb'
|
||||
- 'spec/lib/gitlab/doorkeeper_secret_storing/token/pbkdf2_sha512_spec.rb'
|
||||
- 'spec/lib/gitlab/email/attachment_uploader_spec.rb'
|
||||
|
|
@ -2460,7 +2453,6 @@ RSpec/FeatureCategory:
|
|||
- 'spec/lib/gitlab/git_access_wiki_spec.rb'
|
||||
- 'spec/lib/gitlab/git_post_receive_spec.rb'
|
||||
- 'spec/lib/gitlab/git_ref_validator_spec.rb'
|
||||
- 'spec/lib/gitlab/git_spec.rb'
|
||||
- 'spec/lib/gitlab/gitaly_client/blob_service_spec.rb'
|
||||
- 'spec/lib/gitlab/gitaly_client/blobs_stitcher_spec.rb'
|
||||
- 'spec/lib/gitlab/gitaly_client/conflict_files_stitcher_spec.rb'
|
||||
|
|
@ -3844,7 +3836,6 @@ RSpec/FeatureCategory:
|
|||
- 'spec/views/admin/application_settings/general.html.haml_spec.rb'
|
||||
- 'spec/views/admin/application_settings/repository.html.haml_spec.rb'
|
||||
- 'spec/views/admin/identities/index.html.haml_spec.rb'
|
||||
- 'spec/views/admin/sessions/new.html.haml_spec.rb'
|
||||
- 'spec/views/ci/status/_icon.html.haml_spec.rb'
|
||||
- 'spec/views/dashboard/milestones/index.html.haml_spec.rb'
|
||||
- 'spec/views/dashboard/projects/_blank_state_admin_welcome.haml_spec.rb'
|
||||
|
|
|
|||
|
|
@ -34,7 +34,6 @@ RSpec/NamedSubject:
|
|||
- 'ee/spec/controllers/groups/saml_providers_controller_spec.rb'
|
||||
- 'ee/spec/controllers/groups/scim_oauth_controller_spec.rb'
|
||||
- 'ee/spec/controllers/groups/security/merge_commit_reports_controller_spec.rb'
|
||||
- 'ee/spec/controllers/groups/security/policies_controller_spec.rb'
|
||||
- 'ee/spec/controllers/passwords_controller_spec.rb'
|
||||
- 'ee/spec/controllers/projects/analytics/cycle_analytics/summary_controller_spec.rb'
|
||||
- 'ee/spec/controllers/projects/environments_controller_spec.rb'
|
||||
|
|
@ -226,7 +225,6 @@ RSpec/NamedSubject:
|
|||
- 'ee/spec/lib/bulk_imports/groups/pipelines/epics_pipeline_spec.rb'
|
||||
- 'ee/spec/lib/bulk_imports/groups/pipelines/iterations_cadences_pipeline_spec.rb'
|
||||
- 'ee/spec/lib/bulk_imports/groups/pipelines/iterations_pipeline_spec.rb'
|
||||
- 'ee/spec/lib/code_suggestions/prompts/code_completion/vertex_ai_spec.rb'
|
||||
- 'ee/spec/lib/ee/api/entities/dependency_list_export_spec.rb'
|
||||
- 'ee/spec/lib/ee/api/entities/deployment_extended_spec.rb'
|
||||
- 'ee/spec/lib/ee/api/entities/experiment_spec.rb'
|
||||
|
|
@ -707,7 +705,6 @@ RSpec/NamedSubject:
|
|||
- 'ee/spec/requests/projects/analytics/cycle_analytics/stages_controller_spec.rb'
|
||||
- 'ee/spec/requests/projects/pipelines_controller_spec.rb'
|
||||
- 'ee/spec/requests/projects/requirements_management/requirements_controller_spec.rb'
|
||||
- 'ee/spec/requests/projects/security/policies_controller_spec.rb'
|
||||
- 'ee/spec/requests/projects/security/scanned_resources_controller_spec.rb'
|
||||
- 'ee/spec/requests/projects/settings/analytics_controller_spec.rb'
|
||||
- 'ee/spec/requests/projects/tracing_controller_spec.rb'
|
||||
|
|
@ -1238,7 +1235,6 @@ RSpec/NamedSubject:
|
|||
- 'spec/finders/ci/job_artifacts_finder_spec.rb'
|
||||
- 'spec/finders/ci/jobs_finder_spec.rb'
|
||||
- 'spec/finders/ci/pipeline_schedules_finder_spec.rb'
|
||||
- 'spec/finders/ci/pipelines_finder_spec.rb'
|
||||
- 'spec/finders/ci/pipelines_for_merge_request_finder_spec.rb'
|
||||
- 'spec/finders/ci/runners_finder_spec.rb'
|
||||
- 'spec/finders/ci/triggers_finder_spec.rb'
|
||||
|
|
@ -1899,7 +1895,6 @@ RSpec/NamedSubject:
|
|||
- 'spec/lib/gitlab/diff/suggestion_diff_spec.rb'
|
||||
- 'spec/lib/gitlab/diff/suggestions_parser_spec.rb'
|
||||
- 'spec/lib/gitlab/discussions_diff/file_collection_spec.rb'
|
||||
- 'spec/lib/gitlab/doctor/secrets_spec.rb'
|
||||
- 'spec/lib/gitlab/email/handler/service_desk_handler_spec.rb'
|
||||
- 'spec/lib/gitlab/email/html_to_markdown_parser_spec.rb'
|
||||
- 'spec/lib/gitlab/encoding_helper_spec.rb'
|
||||
|
|
|
|||
|
|
@ -20,7 +20,6 @@ RSpec/ReceiveMessages:
|
|||
- 'ee/spec/helpers/billing_plans_helper_spec.rb'
|
||||
- 'ee/spec/helpers/ee/ci/pipeline_editor_helper_spec.rb'
|
||||
- 'ee/spec/helpers/ee/geo_helper_spec.rb'
|
||||
- 'ee/spec/helpers/ee/groups_helper_spec.rb'
|
||||
- 'ee/spec/helpers/ee/ide_helper_spec.rb'
|
||||
- 'ee/spec/helpers/ee/issuables_helper_spec.rb'
|
||||
- 'ee/spec/helpers/ee/issues_helper_spec.rb'
|
||||
|
|
@ -441,7 +440,6 @@ RSpec/ReceiveMessages:
|
|||
- 'spec/serializers/trigger_variable_entity_spec.rb'
|
||||
- 'spec/services/achievements/award_service_spec.rb'
|
||||
- 'spec/services/achievements/revoke_service_spec.rb'
|
||||
- 'spec/services/auto_merge/base_service_spec.rb'
|
||||
- 'spec/services/auto_merge/merge_when_checks_pass_service_spec.rb'
|
||||
- 'spec/services/base_count_service_spec.rb'
|
||||
- 'spec/services/bulk_imports/create_service_spec.rb'
|
||||
|
|
|
|||
|
|
@ -441,7 +441,6 @@ RSpec/VerifiedDoubles:
|
|||
- 'spec/lib/gitlab/diff/file_spec.rb'
|
||||
- 'spec/lib/gitlab/diff/line_spec.rb'
|
||||
- 'spec/lib/gitlab/diff/position_tracer_spec.rb'
|
||||
- 'spec/lib/gitlab/doctor/secrets_spec.rb'
|
||||
- 'spec/lib/gitlab/email/receiver_spec.rb'
|
||||
- 'spec/lib/gitlab/email/service_desk_receiver_spec.rb'
|
||||
- 'spec/lib/gitlab/error_tracking/processor/sidekiq_processor_spec.rb'
|
||||
|
|
|
|||
|
|
@ -93,7 +93,6 @@ Style/FormatString:
|
|||
- 'ee/app/helpers/billing_plans_helper.rb'
|
||||
- 'ee/app/helpers/ee/application_helper.rb'
|
||||
- 'ee/app/helpers/ee/geo_helper.rb'
|
||||
- 'ee/app/helpers/ee/groups_helper.rb'
|
||||
- 'ee/app/helpers/ee/import_helper.rb'
|
||||
- 'ee/app/helpers/ee/profiles_helper.rb'
|
||||
- 'ee/app/helpers/ee/timeboxes_helper.rb'
|
||||
|
|
|
|||
|
|
@ -2234,7 +2234,6 @@ Style/InlineDisableAnnotation:
|
|||
- 'spec/models/ci/build_trace_chunk_spec.rb'
|
||||
- 'spec/models/ci/job_token/project_scope_link_spec.rb'
|
||||
- 'spec/models/ci/persistent_ref_spec.rb'
|
||||
- 'spec/models/ci/pipeline_spec.rb'
|
||||
- 'spec/models/concerns/bulk_insertable_associations_spec.rb'
|
||||
- 'spec/models/concerns/legacy_bulk_insert_spec.rb'
|
||||
- 'spec/models/concerns/manual_inverse_association_spec.rb'
|
||||
|
|
|
|||
|
|
@ -129,7 +129,6 @@ Style/SuperArguments:
|
|||
- 'lib/banzai/pipeline/description_pipeline.rb'
|
||||
- 'lib/banzai/pipeline/email_pipeline.rb'
|
||||
- 'lib/banzai/pipeline/note_pipeline.rb'
|
||||
- 'lib/banzai/pipeline/single_line_pipeline.rb'
|
||||
- 'lib/gitlab/analytics/cycle_analytics/request_params.rb'
|
||||
- 'lib/gitlab/asciidoc/html5_converter.rb'
|
||||
- 'lib/gitlab/bitbucket_server_import/importers/pull_request_notes/standalone_notes.rb'
|
||||
|
|
|
|||
|
|
@ -18,7 +18,6 @@ import {
|
|||
integrationToDeleteDefault,
|
||||
typeSet,
|
||||
} from '../constants';
|
||||
import getCurrentIntegrationQuery from '../graphql/queries/get_current_integration.query.graphql';
|
||||
|
||||
export const i18n = {
|
||||
deleteIntegration: s__('AlertSettings|Delete integration'),
|
||||
|
|
@ -102,15 +101,9 @@ export default {
|
|||
label: __('Actions'),
|
||||
},
|
||||
],
|
||||
apollo: {
|
||||
currentIntegration: {
|
||||
query: getCurrentIntegrationQuery,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
integrationToDelete: integrationToDeleteDefault,
|
||||
currentIntegration: null,
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
|
|
|
|||
|
|
@ -564,7 +564,8 @@ export const SIDEBAR_CLOSE_WIDGET = {
|
|||
export const WORK_ITEM_TOGGLE_SIDEBAR = {
|
||||
id: 'workitems.toggleSidebar',
|
||||
description: __('Show or hide sidebar'),
|
||||
defaultKeys: ['mod+/'], // eslint-disable-line @gitlab/require-i18n-strings
|
||||
defaultKeys: ['mod+/', 'shift+mod+7'], // eslint-disable-line @gitlab/require-i18n-strings
|
||||
// Shift+7 is equivalent to forward-slash on some keyboards without a dedicated key
|
||||
customizable: false,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import { GlAlert, GlSkeletonLoader } from '@gitlab/ui';
|
|||
import { GlColumnChart, GlChartSeriesLabel } from '@gitlab/ui/dist/charts';
|
||||
import { getDateInPast, localeDateFormat } from '~/lib/utils/datetime_utility';
|
||||
import { __, s__ } from '~/locale';
|
||||
import CiCdAnalyticsCharts from '~/vue_shared/components/ci_cd_analytics/ci_cd_analytics_charts.vue';
|
||||
import CiCdAnalyticsCharts from '~/analytics/ci_cd/components/ci_cd_analytics_charts.vue';
|
||||
import {
|
||||
DEFAULT,
|
||||
CHART_CONTAINER_HEIGHT,
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<script>
|
||||
import ProjectAvatar from '~/vue_shared/components/project_avatar.vue';
|
||||
import { OVERLAY_GOTO } from '../command_palette/constants';
|
||||
import SearchResultHoverLayover from './global_search_hover_overlay.vue';
|
||||
import SearchResultFocusLayover from './global_search_focus_overlay.vue';
|
||||
|
||||
export default {
|
||||
name: 'FrequentlyVisitedItem',
|
||||
|
|
@ -10,7 +10,7 @@ export default {
|
|||
},
|
||||
components: {
|
||||
ProjectAvatar,
|
||||
SearchResultHoverLayover,
|
||||
SearchResultFocusLayover,
|
||||
},
|
||||
props: {
|
||||
item: {
|
||||
|
|
@ -22,7 +22,7 @@ export default {
|
|||
</script>
|
||||
|
||||
<template>
|
||||
<search-result-hover-layover :text-message="$options.i18n.OVERLAY_GOTO">
|
||||
<search-result-focus-layover :text-message="$options.i18n.OVERLAY_GOTO">
|
||||
<project-avatar
|
||||
:project-id="item.id"
|
||||
:project-name="item.title"
|
||||
|
|
@ -41,5 +41,5 @@ export default {
|
|||
{{ item.subtitle }}
|
||||
</div>
|
||||
</div>
|
||||
</search-result-hover-layover>
|
||||
</search-result-focus-layover>
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import { TRACKING_UNKNOWN_PANEL } from '~/super_sidebar/constants';
|
|||
import { TRACKING_CLICK_COMMAND_PALETTE_ITEM, OVERLAY_GOTO } from '../command_palette/constants';
|
||||
import FrequentItem from './frequent_item.vue';
|
||||
import FrequentItemSkeleton from './frequent_item_skeleton.vue';
|
||||
import SearchResultHoverLayover from './global_search_hover_overlay.vue';
|
||||
import SearchResultFocusLayover from './global_search_focus_overlay.vue';
|
||||
|
||||
export default {
|
||||
name: 'FrequentlyVisitedItems',
|
||||
|
|
@ -19,7 +19,7 @@ export default {
|
|||
GlIcon,
|
||||
FrequentItem,
|
||||
FrequentItemSkeleton,
|
||||
SearchResultHoverLayover,
|
||||
SearchResultFocusLayover,
|
||||
},
|
||||
props: {
|
||||
loading: {
|
||||
|
|
@ -107,7 +107,7 @@ export default {
|
|||
v-for="item of formattedItems"
|
||||
:key="item.forDropdown.id"
|
||||
:item="item.forDropdown"
|
||||
class="show-on-focus-or-hover--context show-hover-layover"
|
||||
class="show-on-focus-or-hover--context show-focus-layover"
|
||||
@action="$emit('action')"
|
||||
>
|
||||
<template #list-item><frequent-item :item="item.forRenderer" /></template>
|
||||
|
|
@ -118,12 +118,12 @@ export default {
|
|||
<span class="gl-mx-3 gl-my-3 gl-text-sm gl-text-subtle">{{ emptyStateText }}</span>
|
||||
</gl-disclosure-dropdown-item>
|
||||
|
||||
<gl-disclosure-dropdown-item key="all" :item="viewAllItem" class="show-hover-layover">
|
||||
<gl-disclosure-dropdown-item key="all" :item="viewAllItem" class="show-focus-layover">
|
||||
<template #list-item>
|
||||
<search-result-hover-layover :text-message="$options.i18n.OVERLAY_GOTO">
|
||||
<search-result-focus-layover :text-message="$options.i18n.OVERLAY_GOTO">
|
||||
<gl-icon :name="viewAllItemsIcon" class="!gl-w-6" />
|
||||
{{ viewAllItemsText }}
|
||||
</search-result-hover-layover>
|
||||
</search-result-focus-layover>
|
||||
</template>
|
||||
</gl-disclosure-dropdown-item>
|
||||
</gl-disclosure-dropdown-group>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,11 @@
|
|||
<script>
|
||||
import { GlAvatar, GlAlert, GlLoadingIcon, GlDisclosureDropdownGroup } from '@gitlab/ui';
|
||||
import {
|
||||
GlAvatar,
|
||||
GlAlert,
|
||||
GlLoadingIcon,
|
||||
GlDisclosureDropdownGroup,
|
||||
GlDisclosureDropdownItem,
|
||||
} from '@gitlab/ui';
|
||||
// eslint-disable-next-line no-restricted-imports
|
||||
import { mapState, mapGetters } from 'vuex';
|
||||
import { s__ } from '~/locale';
|
||||
|
|
@ -32,7 +38,7 @@ import {
|
|||
PAGES_GROUP_TITLE,
|
||||
GROUPS_GROUP_TITLE,
|
||||
} from '../command_palette/constants';
|
||||
import SearchResultHoverLayover from './global_search_hover_overlay.vue';
|
||||
import SearchResultFocusLayover from './global_search_focus_overlay.vue';
|
||||
import GlobalSearchNoResults from './global_search_no_results.vue';
|
||||
|
||||
const trackingMixin = InternalEvents.mixin();
|
||||
|
|
@ -61,7 +67,8 @@ export default {
|
|||
GlAlert,
|
||||
GlLoadingIcon,
|
||||
GlDisclosureDropdownGroup,
|
||||
SearchResultHoverLayover,
|
||||
GlDisclosureDropdownItem,
|
||||
SearchResultFocusLayover,
|
||||
GlobalSearchNoResults,
|
||||
},
|
||||
directives: {
|
||||
|
|
@ -79,7 +86,7 @@ export default {
|
|||
return {
|
||||
...item,
|
||||
extraAttrs: {
|
||||
class: 'show-hover-layover gl-flex gl-items-center gl-justify-between',
|
||||
class: 'show-focus-layover gl-flex gl-items-center gl-justify-between',
|
||||
},
|
||||
};
|
||||
}),
|
||||
|
|
@ -178,32 +185,39 @@ export default {
|
|||
bordered
|
||||
@action="trackingTypes"
|
||||
>
|
||||
<template #list-item="{ item }">
|
||||
<search-result-hover-layover :text-message="overlayText(group.name)">
|
||||
<gl-avatar
|
||||
v-if="item.avatar_url !== undefined"
|
||||
:src="item.avatar_url"
|
||||
:entity-id="item.entity_id"
|
||||
:entity-name="item.entity_name"
|
||||
:size="item.avatar_size"
|
||||
:shape="$options.AVATAR_SHAPE_OPTION_RECT"
|
||||
aria-hidden="true"
|
||||
/>
|
||||
<span class="gl-flex gl-min-w-0 gl-grow gl-flex-col">
|
||||
<span
|
||||
v-safe-html="highlightedName(item.text)"
|
||||
class="gl-truncate gl-text-strong"
|
||||
data-testid="autocomplete-item-name"
|
||||
></span>
|
||||
<span
|
||||
v-if="item.value"
|
||||
v-safe-html="item.namespace"
|
||||
class="gl-truncate gl-text-sm gl-text-subtle"
|
||||
data-testid="autocomplete-item-namespace"
|
||||
></span>
|
||||
</span>
|
||||
</search-result-hover-layover>
|
||||
</template>
|
||||
<gl-disclosure-dropdown-item
|
||||
v-for="item in group.items"
|
||||
:key="item.id || item.text"
|
||||
:item="item"
|
||||
class="show-on-focus-or-hover--context show-focus-layover gl-flex gl-items-center gl-justify-between"
|
||||
>
|
||||
<template #list-item>
|
||||
<search-result-focus-layover :text-message="overlayText(group)">
|
||||
<gl-avatar
|
||||
v-if="item.avatar_url !== undefined"
|
||||
:src="item.avatar_url"
|
||||
:entity-id="item.entity_id"
|
||||
:entity-name="item.entity_name"
|
||||
:size="item.avatar_size"
|
||||
:shape="$options.AVATAR_SHAPE_OPTION_RECT"
|
||||
aria-hidden="true"
|
||||
/>
|
||||
<span class="gl-flex gl-min-w-0 gl-grow gl-flex-col">
|
||||
<span
|
||||
v-safe-html="highlightedName(item.text)"
|
||||
class="gl-truncate gl-text-strong"
|
||||
data-testid="autocomplete-item-name"
|
||||
></span>
|
||||
<span
|
||||
v-if="item.value"
|
||||
v-safe-html="item.namespace"
|
||||
class="gl-truncate gl-text-sm gl-text-subtle"
|
||||
data-testid="autocomplete-item-namespace"
|
||||
></span>
|
||||
</span>
|
||||
</search-result-focus-layover>
|
||||
</template>
|
||||
</gl-disclosure-dropdown-item>
|
||||
</gl-disclosure-dropdown-group>
|
||||
</ul>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<script>
|
||||
import { GlDisclosureDropdownGroup } from '@gitlab/ui';
|
||||
import { GlDisclosureDropdownGroup, GlDisclosureDropdownItem } from '@gitlab/ui';
|
||||
// eslint-disable-next-line no-restricted-imports
|
||||
import { mapState, mapGetters } from 'vuex';
|
||||
import { s__ } from '~/locale';
|
||||
|
|
@ -13,7 +13,7 @@ import {
|
|||
EVENT_CLICK_MERGE_REQUESTS_I_CREATED_IN_COMMAND_PALETTE,
|
||||
} from '~/super_sidebar/components/global_search/tracking_constants';
|
||||
import { OVERLAY_GOTO } from '~/super_sidebar/components/global_search/command_palette/constants';
|
||||
import SearchResultHoverLayover from './global_search_hover_overlay.vue';
|
||||
import SearchResultFocusLayover from './global_search_focus_overlay.vue';
|
||||
|
||||
const trackingMixin = InternalEvents.mixin();
|
||||
|
||||
|
|
@ -30,7 +30,8 @@ export default {
|
|||
},
|
||||
components: {
|
||||
GlDisclosureDropdownGroup,
|
||||
SearchResultHoverLayover,
|
||||
GlDisclosureDropdownItem,
|
||||
SearchResultFocusLayover,
|
||||
},
|
||||
mixins: [trackingMixin],
|
||||
computed: {
|
||||
|
|
@ -52,7 +53,7 @@ export default {
|
|||
items: this.defaultSearchOptions?.map((item) => ({
|
||||
...item,
|
||||
extraAttrs: {
|
||||
class: 'show-hover-layover',
|
||||
class: 'show-focus-layover',
|
||||
},
|
||||
})),
|
||||
};
|
||||
|
|
@ -97,16 +98,19 @@ export default {
|
|||
</script>
|
||||
|
||||
<template>
|
||||
<gl-disclosure-dropdown-group
|
||||
v-if="shouldRender"
|
||||
v-bind="$attrs"
|
||||
:group="group"
|
||||
@action="trackingTypes"
|
||||
>
|
||||
<template #list-item="{ item }">
|
||||
<search-result-hover-layover :text-message="$options.i18n.OVERLAY_GOTO">
|
||||
<span>{{ item.text }}</span>
|
||||
</search-result-hover-layover>
|
||||
</template>
|
||||
<gl-disclosure-dropdown-group v-if="shouldRender" v-bind="$attrs" :group="group">
|
||||
<gl-disclosure-dropdown-item
|
||||
v-for="item in defaultSearchOptions"
|
||||
:key="item.text"
|
||||
:item="item"
|
||||
class="show-on-focus-or-hover--context show-focus-layover"
|
||||
@action="trackingTypes"
|
||||
>
|
||||
<template #list-item>
|
||||
<search-result-focus-layover :text-message="$options.i18n.OVERLAY_GOTO">
|
||||
<span>{{ item.text }}</span>
|
||||
</search-result-focus-layover>
|
||||
</template>
|
||||
</gl-disclosure-dropdown-item>
|
||||
</gl-disclosure-dropdown-group>
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<script>
|
||||
import { GlDisclosureDropdownGroup } from '@gitlab/ui';
|
||||
import { GlDisclosureDropdownGroup, GlDisclosureDropdownItem } from '@gitlab/ui';
|
||||
import { kebabCase } from 'lodash';
|
||||
import { s__ } from '~/locale';
|
||||
import { InternalEvents } from '~/tracking';
|
||||
|
|
@ -15,7 +15,7 @@ import {
|
|||
TRACKING_CLICK_COMMAND_PALETTE_ITEM,
|
||||
OVERLAY_CHANGE_CONTEXT,
|
||||
} from '../command_palette/constants';
|
||||
import SearchResultHoverLayover from './global_search_hover_overlay.vue';
|
||||
import SearchResultFocusLayover from './global_search_focus_overlay.vue';
|
||||
|
||||
const trackingMixin = InternalEvents.mixin();
|
||||
|
||||
|
|
@ -31,7 +31,8 @@ export default {
|
|||
},
|
||||
components: {
|
||||
GlDisclosureDropdownGroup,
|
||||
SearchResultHoverLayover,
|
||||
GlDisclosureDropdownItem,
|
||||
SearchResultFocusLayover,
|
||||
},
|
||||
mixins: [trackingMixin],
|
||||
inject: ['contextSwitcherLinks'],
|
||||
|
|
@ -59,7 +60,7 @@ export default {
|
|||
'data-qa-places-item': title,
|
||||
|
||||
// this is helper class for popover-hint
|
||||
class: 'show-hover-layover',
|
||||
class: 'show-focus-layover',
|
||||
|
||||
// Any other data- attributes (e.g., for @rails/ujs)
|
||||
...Object.entries(rest).reduce((acc, [name, value]) => {
|
||||
|
|
@ -112,10 +113,17 @@ export default {
|
|||
:group="group"
|
||||
@action="trackingTypes"
|
||||
>
|
||||
<template #list-item="{ item }">
|
||||
<search-result-hover-layover :text-message="$options.i18n.OVERLAY_CHANGE_CONTEXT">
|
||||
<span>{{ item.text }}</span>
|
||||
</search-result-hover-layover>
|
||||
</template>
|
||||
<gl-disclosure-dropdown-item
|
||||
v-for="item in group.items"
|
||||
:key="item.text"
|
||||
:item="item"
|
||||
class="show-on-focus-or-hover--context show-focus-layover"
|
||||
>
|
||||
<template #list-item>
|
||||
<search-result-focus-layover :text-message="$options.i18n.OVERLAY_CHANGE_CONTEXT">
|
||||
<span>{{ item.text }}</span>
|
||||
</search-result-focus-layover>
|
||||
</template>
|
||||
</gl-disclosure-dropdown-item>
|
||||
</gl-disclosure-dropdown-group>
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
import { GlSprintf } from '@gitlab/ui';
|
||||
|
||||
export default {
|
||||
name: 'SearchResultHoverLayover',
|
||||
name: 'SearchResultFocusLayover',
|
||||
components: {
|
||||
GlSprintf,
|
||||
},
|
||||
|
|
@ -21,12 +21,12 @@ export default {
|
|||
<slot></slot>
|
||||
</span>
|
||||
<span
|
||||
class="show-hover-layover-hint gl-hidden gl-items-center gl-justify-end gl-opacity-0 sm:gl-flex"
|
||||
class="show-focus-layover-hint gl-hidden gl-items-center gl-justify-end gl-opacity-0 sm:gl-flex"
|
||||
>
|
||||
<span class="gl-whitespace-nowrap gl-text-default" data-testid="overlay-message">
|
||||
<span class="gl-whitespace-nowrap gl-text-subtle" data-testid="overlay-message">
|
||||
<gl-sprintf :message="textMessage">
|
||||
<template #kbd="{ content }">
|
||||
<kbd class="vertical-align-normalization gl-pb-3 gl-align-middle gl-text-base">
|
||||
<kbd class="-gl-mb-2 -gl-mt-3 gl-pb-3 gl-align-middle gl-text-base">
|
||||
{{ content }}
|
||||
</kbd>
|
||||
</template>
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
<script>
|
||||
import { GlIcon, GlDisclosureDropdownGroup } from '@gitlab/ui';
|
||||
import { GlIcon, GlDisclosureDropdownGroup, GlDisclosureDropdownItem } from '@gitlab/ui';
|
||||
// eslint-disable-next-line no-restricted-imports
|
||||
import { mapGetters, mapState } from 'vuex';
|
||||
import { InternalEvents } from '~/tracking';
|
||||
|
|
@ -16,7 +16,7 @@ import {
|
|||
SCOPE_SEARCH_PROJECT,
|
||||
USER_HANDLE,
|
||||
} from '../command_palette/constants';
|
||||
import SearchResultHoverLayover from './global_search_hover_overlay.vue';
|
||||
import SearchResultFocusLayover from './global_search_focus_overlay.vue';
|
||||
|
||||
const trackingMixin = InternalEvents.mixin();
|
||||
|
||||
|
|
@ -25,7 +25,8 @@ export default {
|
|||
components: {
|
||||
GlIcon,
|
||||
GlDisclosureDropdownGroup,
|
||||
SearchResultHoverLayover,
|
||||
GlDisclosureDropdownItem,
|
||||
SearchResultFocusLayover,
|
||||
},
|
||||
mixins: [trackingMixin],
|
||||
i18n: {
|
||||
|
|
@ -42,7 +43,7 @@ export default {
|
|||
href: this.injectSearchPropsToHref(item),
|
||||
scopeName: item.scope || item.description,
|
||||
extraAttrs: {
|
||||
class: 'show-hover-layover',
|
||||
class: 'show-focus-layover',
|
||||
},
|
||||
})),
|
||||
};
|
||||
|
|
@ -90,17 +91,24 @@ export default {
|
|||
<div>
|
||||
<ul class="gl-m-0 gl-list-none gl-p-0 gl-pb-2" data-testid="scoped-items">
|
||||
<gl-disclosure-dropdown-group :group="group" @action="trackingTypes">
|
||||
<template #list-item="{ item }">
|
||||
<search-result-hover-layover :text-message="$options.i18n.OVERLAY_SEARCH">
|
||||
<gl-icon
|
||||
name="search-results"
|
||||
class="-gl-mt-2 gl-mr-2 gl-shrink-0 gl-pt-2 gl-text-subtle"
|
||||
/>
|
||||
<span class="gl-grow">
|
||||
{{ item.scopeName }}
|
||||
</span>
|
||||
</search-result-hover-layover>
|
||||
</template>
|
||||
<gl-disclosure-dropdown-item
|
||||
v-for="item in group.items"
|
||||
:key="item.text"
|
||||
:item="item"
|
||||
class="show-on-focus-or-hover--context show-focus-layover"
|
||||
>
|
||||
<template #list-item>
|
||||
<search-result-focus-layover :text-message="$options.i18n.OVERLAY_SEARCH">
|
||||
<gl-icon
|
||||
name="search-results"
|
||||
class="-gl-mt-2 gl-mr-2 gl-shrink-0 gl-pt-2 gl-text-subtle"
|
||||
/>
|
||||
<span class="gl-grow">
|
||||
{{ item.scopeName }}
|
||||
</span>
|
||||
</search-result-focus-layover>
|
||||
</template>
|
||||
</gl-disclosure-dropdown-item>
|
||||
</gl-disclosure-dropdown-group>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -539,9 +539,10 @@ $command-palette-spacing: px-to-rem(14px);
|
|||
}
|
||||
|
||||
|
||||
.show-hover-layover {
|
||||
&:hover {
|
||||
.show-hover-layover-hint {
|
||||
.show-focus-layover {
|
||||
&:focus,
|
||||
&:focus-within {
|
||||
.show-focus-layover-hint {
|
||||
@apply gl-opacity-10;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -215,11 +215,7 @@
|
|||
|
||||
.diff-tr {
|
||||
.timeline-discussion-body {
|
||||
clear: left;
|
||||
|
||||
.note-body {
|
||||
padding: 0 $gl-padding-8 $gl-padding-8 $gl-padding-32;
|
||||
}
|
||||
padding: 0 0 $gl-padding-4 $gl-padding-32;
|
||||
}
|
||||
|
||||
.timeline-entry img.avatar {
|
||||
|
|
|
|||
|
|
@ -72,10 +72,6 @@
|
|||
@apply gl-p-3 gl-pl-5;
|
||||
}
|
||||
|
||||
.timeline-discussion-body-footer {
|
||||
padding: 0 $gl-padding-8 0;
|
||||
}
|
||||
|
||||
.timeline-avatar {
|
||||
margin: $gl-padding-8 0 0 $gl-padding;
|
||||
}
|
||||
|
|
@ -401,4 +397,4 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,60 @@
|
|||
# Use this template to announce a feature deprecation or other
|
||||
# important planned changes at least three releases prior to removal.
|
||||
# Breaking changes must happen in a major release.
|
||||
#
|
||||
# Copy this template into a new file in /data/deprecations, and name the file similar to:
|
||||
# `16-9-deprecated-feature.yml`, where `16-9` is the announcement milestone,
|
||||
# not the removal milestone.
|
||||
#
|
||||
# See the deprecation guidelines to confirm your understanding of the terminology:
|
||||
# https://docs.gitlab.com/development/deprecation_guidelines/#terminology
|
||||
#
|
||||
# If an End of Support period applies, see the OPTIONAL section below.
|
||||
#
|
||||
# For more information, see the handbook:
|
||||
# https://handbook.gitlab.com/handbook/marketing/blog/release-posts/#deprecations-and-other-planned-breaking-change-announcements
|
||||
|
||||
# ===================
|
||||
# REQUIRED FIELDS
|
||||
# ===================
|
||||
|
||||
# ----- DELETE EVERYTHING ABOVE THIS LINE -----
|
||||
|
||||
- title: "OAuth ROPC grant without client credentials is deprecated"
|
||||
# The mi A lestones for the deprecation announcement, and the removal.
|
||||
removal_milestone: "17.11"
|
||||
announcement_milestone: "17.11"
|
||||
# Change breaking_change to false if needed.
|
||||
breaking_change: true
|
||||
window: # Can be 1, 2, or 3 - The window when the breaking change will be deployed on GitLab.com
|
||||
reporter: hsutor # The GitLab username of the person reporting the change
|
||||
stage: software_supply_chain_security
|
||||
issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/535298
|
||||
check_impact: https://about.gitlab.com/blog/2025/04/01/improving-oauth-ropc-security-on-gitlab-com/
|
||||
impact: low
|
||||
impact_details: https://gitlab-com.gitlab.io/gl-infra/breaking-change-impact-calculator/?usage=edge_case&migration_complexity=major_manual&scope=instance&identification_complexity=single&additional_complexity=yes&base_impact=minor&pipeline_impact=none&compliance_impact=none&availability_impact=none&authorization_impact=none&API_impact=major_API
|
||||
impact_offering: GitLab.com
|
||||
scope: group
|
||||
resolution_role: owner
|
||||
manual_task: true
|
||||
body: | # (required) Don't change this line.
|
||||
GitLab.com requires client authentication for OAuth Resource Owner Password Credentials (ROPC) OAuth grant as of April 8, 2025. ROPC was omitted by the OAuth working group in RFC Version 2.1. Existing ROPC integrations without client credentials will experience service disruption after this date. If you experience disruption, update your integrations to include client credentials before the deadline. More information can be found [on our blog](https://about.gitlab.com/blog/2025/04/01/improving-oauth-ropc-security-on-gitlab-com/).
|
||||
|
||||
# ==============================
|
||||
# OPTIONAL END-OF-SUPPORT FIELDS
|
||||
# ==============================
|
||||
#
|
||||
# If an End of Support period applies:
|
||||
# 1) Share this announcement in the `#spt_managers` Support channel in Slack
|
||||
# 2) Mention `@gitlab-com/support` in this merge request.
|
||||
#
|
||||
# When support for this feature ends, in XX.YY milestone format.
|
||||
end_of_support_milestone:
|
||||
# Array of tiers the feature is currently available to,
|
||||
# like [Free, Silver, Gold, Core, Premium, Ultimate]
|
||||
tiers:
|
||||
# Links to documentation and thumbnail image
|
||||
documentation_url:
|
||||
image_url:
|
||||
# Use the youtube thumbnail URL with the structure of https://img.youtube.com/vi/UNIQUEID/hqdefault.jpg
|
||||
video_url:
|
||||
|
|
@ -367,7 +367,7 @@ Choose one of the following scenarios based on whether the major version release
|
|||
Assuming the current analyzer release is `v{N}`:
|
||||
|
||||
1. [Configure protected tags and branches](#configure-protected-tags-and-branches).
|
||||
1. When the milestone of the major release is almost complete, and there are no more changes to be merged into the `default` branch:
|
||||
1. During the milestone of the major release, when there are no more changes to be merged into the `default` branch:
|
||||
1. Create a `v{N}` branch from the `default` branch.
|
||||
1. Create and merge a new Merge Request in the `default` branch containing only the following change to the `CHANGELOG.md` file:
|
||||
|
||||
|
|
@ -396,7 +396,7 @@ Assuming the current analyzer release is `v{N}`:
|
|||
|
||||
Using `release candidates` allows us to release **all breaking changes in a single major version bump**, which follows the [semver guidance](https://semver.org) of only making breaking changes in a major version update.
|
||||
|
||||
1. When the milestone of the major release is almost complete, and there are no more changes to be merged into the `default` or `v{N+1}` branches:
|
||||
1. During the milestone of the major release, when there are no more changes to be merged into the `default` or `v{N+1}` branches:
|
||||
1. Create a `v{N}` branch from the `default` branch.
|
||||
1. Create a Merge Request in the `v{N+1}` branch to squash all the `release candidate` changelog entries into a single entry for `v{N+1}`.
|
||||
|
||||
|
|
|
|||
|
|
@ -1877,6 +1877,27 @@ For migration instructions, see
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="milestone-wrapper" data-milestone="17.11">
|
||||
|
||||
## GitLab 17.11
|
||||
|
||||
<div class="deprecation breaking-change" data-milestone="17.11">
|
||||
|
||||
### OAuth ROPC grant without client credentials is deprecated
|
||||
|
||||
<div class="deprecation-notes">
|
||||
|
||||
- Announced in GitLab <span class="milestone">17.11</span>
|
||||
- Removal in GitLab <span class="milestone">17.11</span> ([breaking change](https://docs.gitlab.com/update/terminology/#breaking-change))
|
||||
- To discuss this change or learn more, see the [deprecation issue](https://gitlab.com/gitlab-org/gitlab/-/issues/535298).
|
||||
|
||||
</div>
|
||||
|
||||
GitLab.com requires client authentication for OAuth Resource Owner Password Credentials (ROPC) OAuth grant as of April 8, 2025. ROPC was omitted by the OAuth working group in RFC Version 2.1. Existing ROPC integrations without client credentials will experience service disruption after this date. If you experience disruption, update your integrations to include client credentials before the deadline. More information can be found [on our blog](https://about.gitlab.com/blog/2025/04/01/improving-oauth-ropc-security-on-gitlab-com/).
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="milestone-wrapper" data-milestone="17.9">
|
||||
|
||||
## GitLab 17.9
|
||||
|
|
|
|||
|
|
@ -28,8 +28,8 @@ For vulnerabilities in the [Common Vulnerabilities and Exposures (CVE)](https://
|
|||
catalog, these details also include:
|
||||
|
||||
- CVSS score
|
||||
- EPSS score
|
||||
- KEV status
|
||||
- [EPSS score](risk_assessment_data.md#epss)
|
||||
- [KEV status](risk_assessment_data.md#kev)
|
||||
- [Reachability status](../dependency_scanning/static_reachability.md) (Beta)
|
||||
|
||||
For further details on this additional data, see [vulnerability risk assessment data](risk_assessment_data.md).
|
||||
|
|
|
|||
|
|
@ -10,7 +10,10 @@ module API
|
|||
success: 200,
|
||||
error: 400,
|
||||
invalid_params_error: 422,
|
||||
snippet_access_error: 403,
|
||||
snippet_not_found_error: 404,
|
||||
failed_to_create_error: 400,
|
||||
failed_to_delete_error: 400,
|
||||
failed_to_update_error: 400
|
||||
}.freeze
|
||||
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ module Gitlab
|
|||
# If it cannot achieve the limit it raises a CompactionLimitCannotBeAchievedError.
|
||||
|
||||
def compact(traversal_ids, limit)
|
||||
traversal_ids = traversal_ids.sort_by(&:size).reverse
|
||||
traversal_ids = traversal_ids.sort_by { |arr| [-arr.length, arr] }
|
||||
traversal_ids = compact_once(traversal_ids) while traversal_ids.size > limit
|
||||
|
||||
traversal_ids
|
||||
|
|
|
|||
|
|
@ -23008,18 +23008,6 @@ msgstr ""
|
|||
msgid "DuoChat|Give feedback"
|
||||
msgstr ""
|
||||
|
||||
msgid "DuoChat|How do I change my password in GitLab?"
|
||||
msgstr ""
|
||||
|
||||
msgid "DuoChat|How do I clone a repository?"
|
||||
msgstr ""
|
||||
|
||||
msgid "DuoChat|How do I create a template?"
|
||||
msgstr ""
|
||||
|
||||
msgid "DuoChat|How do I fork a project?"
|
||||
msgstr ""
|
||||
|
||||
msgid "DuoChat|How to use GitLab"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import { mount } from '@vue/test-utils';
|
||||
import CiCdAnalyticsAreaChart from '~/vue_shared/components/ci_cd_analytics/ci_cd_analytics_area_chart.vue';
|
||||
import CiCdAnalyticsAreaChart from '~/analytics/ci_cd/components/ci_cd_analytics_area_chart.vue';
|
||||
import { transformedAreaChartData } from '../mock_data';
|
||||
|
||||
describe('CiCdAnalyticsAreaChart', () => {
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
import { nextTick } from 'vue';
|
||||
import { GlSegmentedControl } from '@gitlab/ui';
|
||||
import { shallowMountExtended } from 'helpers/vue_test_utils_helper';
|
||||
import CiCdAnalyticsAreaChart from '~/vue_shared/components/ci_cd_analytics/ci_cd_analytics_area_chart.vue';
|
||||
import CiCdAnalyticsCharts from '~/vue_shared/components/ci_cd_analytics/ci_cd_analytics_charts.vue';
|
||||
import CiCdAnalyticsAreaChart from '~/analytics/ci_cd/components/ci_cd_analytics_area_chart.vue';
|
||||
import CiCdAnalyticsCharts from '~/analytics/ci_cd/components/ci_cd_analytics_charts.vue';
|
||||
import { transformedAreaChartData, chartOptions } from '../mock_data';
|
||||
|
||||
const charts = [
|
||||
|
|
@ -33,7 +33,7 @@ const DEFAULT_PROPS = {
|
|||
charts,
|
||||
};
|
||||
|
||||
describe('~/vue_shared/components/ci_cd_analytics/ci_cd_analytics_charts.vue', () => {
|
||||
describe('~/analytics/ci_cd/components/ci_cd_analytics_charts.vue', () => {
|
||||
let wrapper;
|
||||
|
||||
const createWrapper = (props = {}, slots = {}) =>
|
||||
|
|
@ -13,7 +13,7 @@ import PipelineStatusChart from '~/projects/pipelines/charts/components/pipeline
|
|||
import getPipelineAnalyticsQuery from '~/projects/pipelines/charts/graphql/queries/get_pipeline_analytics.query.graphql';
|
||||
import { createAlert } from '~/alert';
|
||||
import { useFakeDate } from 'helpers/fake_date';
|
||||
import { pipelineAnalyticsEmptyData, pipelineAnalyticsData } from '../mock_data';
|
||||
import { pipelineAnalyticsEmptyData, pipelineAnalyticsData } from 'jest/analytics/ci_cd/mock_data';
|
||||
|
||||
Vue.use(VueApollo);
|
||||
jest.mock('~/alert');
|
||||
|
|
|
|||
|
|
@ -10,8 +10,8 @@ import ClickhouseHelpPopover from '~/projects/pipelines/charts/components/clickh
|
|||
import StatisticsList from '~/projects/pipelines/charts/components/statistics_list.vue';
|
||||
import getPipelineCountByStatus from '~/projects/pipelines/charts/graphql/queries/get_pipeline_count_by_status.query.graphql';
|
||||
import getProjectPipelineStatistics from '~/projects/pipelines/charts/graphql/queries/get_project_pipeline_statistics.query.graphql';
|
||||
import CiCdAnalyticsCharts from '~/vue_shared/components/ci_cd_analytics/ci_cd_analytics_charts.vue';
|
||||
import { mockPipelineCount, mockPipelineStatistics } from '../mock_data';
|
||||
import CiCdAnalyticsCharts from '~/analytics/ci_cd/components/ci_cd_analytics_charts.vue';
|
||||
import { mockPipelineCount, mockPipelineStatistics } from 'jest/analytics/ci_cd/mock_data';
|
||||
|
||||
const projectPath = 'gitlab-org/gitlab';
|
||||
Vue.use(VueApollo);
|
||||
|
|
|
|||
|
|
@ -5,8 +5,7 @@ import Component from '~/projects/pipelines/charts/components/statistics_list.vu
|
|||
|
||||
import { InternalEvents } from '~/tracking';
|
||||
import { mockTracking } from 'helpers/tracking_helper';
|
||||
|
||||
import { counts } from '../mock_data';
|
||||
import { counts } from 'jest/analytics/ci_cd/mock_data';
|
||||
|
||||
describe('StatisticsList', () => {
|
||||
let wrapper;
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import { shallowMountExtended } from 'helpers/vue_test_utils_helper';
|
|||
import FrequentItem from '~/super_sidebar/components/global_search/components/frequent_item.vue';
|
||||
import ProjectAvatar from '~/vue_shared/components/project_avatar.vue';
|
||||
import { stubComponent } from 'helpers/stub_component';
|
||||
import SearchResultHoverLayover from '~/super_sidebar/components/global_search/components/global_search_hover_overlay.vue';
|
||||
import SearchResultFocusLayover from '~/super_sidebar/components/global_search/components/global_search_focus_overlay.vue';
|
||||
|
||||
describe('FrequentlyVisitedItem', () => {
|
||||
let wrapper;
|
||||
|
|
@ -30,7 +30,7 @@ describe('FrequentlyVisitedItem', () => {
|
|||
|
||||
const findProjectAvatar = () => wrapper.findComponent(ProjectAvatar);
|
||||
const findSubtitle = () => wrapper.findByTestId('subtitle');
|
||||
const findLayover = () => wrapper.findComponent(SearchResultHoverLayover);
|
||||
const findLayover = () => wrapper.findComponent(SearchResultFocusLayover);
|
||||
|
||||
beforeEach(() => {
|
||||
createComponent();
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import GlobalSearchFrequentItems from '~/super_sidebar/components/global_search/
|
|||
import FrequentItem from '~/super_sidebar/components/global_search/components/frequent_item.vue';
|
||||
import FrequentItemSkeleton from '~/super_sidebar/components/global_search/components/frequent_item_skeleton.vue';
|
||||
import { frecentGroupsMock } from 'jest/super_sidebar/mock_data';
|
||||
import SearchResultHoverLayover from '~/super_sidebar/components/global_search/components/global_search_hover_overlay.vue';
|
||||
import SearchResultFocusLayover from '~/super_sidebar/components/global_search/components/global_search_focus_overlay.vue';
|
||||
|
||||
describe('FrequentlyVisitedItems', () => {
|
||||
let wrapper;
|
||||
|
|
@ -31,7 +31,7 @@ describe('FrequentlyVisitedItems', () => {
|
|||
const findItems = () => wrapper.findAllComponents(GlDisclosureDropdownItem);
|
||||
const findSkeleton = () => wrapper.findComponent(FrequentItemSkeleton);
|
||||
const findItemRenderer = (root) => root.findComponent(FrequentItem);
|
||||
const findLayover = () => wrapper.findComponent(SearchResultHoverLayover);
|
||||
const findLayover = () => wrapper.findComponent(SearchResultFocusLayover);
|
||||
|
||||
describe('common behavior', () => {
|
||||
beforeEach(() => {
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import Vue from 'vue';
|
|||
// eslint-disable-next-line no-restricted-imports
|
||||
import Vuex from 'vuex';
|
||||
import GlobalSearchAutocompleteItems from '~/super_sidebar/components/global_search/components/global_search_autocomplete_items.vue';
|
||||
import SearchResultHoverLayover from '~/super_sidebar/components/global_search/components/global_search_hover_overlay.vue';
|
||||
import SearchResultFocusLayover from '~/super_sidebar/components/global_search/components/global_search_focus_overlay.vue';
|
||||
import GlobalSearchNoResults from '~/super_sidebar/components/global_search/components/global_search_no_results.vue';
|
||||
|
||||
import { useMockInternalEventsTracking } from 'helpers/tracking_internal_events_helper';
|
||||
|
|
@ -74,7 +74,7 @@ describe('GlobalSearchAutocompleteItems', () => {
|
|||
const findGlLoadingIcon = () => wrapper.findComponent(GlLoadingIcon);
|
||||
const findAvatars = () => wrapper.findAllComponents(GlAvatar).wrappers.map((w) => w.props('src'));
|
||||
const findGlAlert = () => wrapper.findComponent(GlAlert);
|
||||
const findLayover = () => wrapper.findComponent(SearchResultHoverLayover);
|
||||
const findLayover = () => wrapper.findComponent(SearchResultFocusLayover);
|
||||
const findNoResults = () => wrapper.findComponent(GlobalSearchNoResults);
|
||||
|
||||
describe('template', () => {
|
||||
|
|
@ -157,14 +157,7 @@ describe('GlobalSearchAutocompleteItems', () => {
|
|||
});
|
||||
});
|
||||
|
||||
describe.each`
|
||||
group | text
|
||||
${'asdfasdf'} | ${'Go to %{kbdStart}↵%{kbdEnd}'}
|
||||
${'Users'} | ${'Go to profile %{kbdStart}↵%{kbdEnd}'}
|
||||
${'Projects'} | ${'Go to project %{kbdStart}↵%{kbdEnd}'}
|
||||
${'Recent issues'} | ${'Go to %{kbdStart}↵%{kbdEnd}'}
|
||||
${'Pages'} | ${'Go to file %{kbdStart}↵%{kbdEnd}'}
|
||||
`('renders the layover text for $group', ({ group, text }) => {
|
||||
describe('renders the layover text for foobar', () => {
|
||||
beforeEach(() => {
|
||||
createComponent(
|
||||
{ loading: false },
|
||||
|
|
@ -172,7 +165,7 @@ describe('GlobalSearchAutocompleteItems', () => {
|
|||
autocompleteGroupedSearchOptions: () => [
|
||||
{
|
||||
...MOCK_GROUPED_AUTOCOMPLETE_OPTIONS[0],
|
||||
name: group,
|
||||
name: 'foobar',
|
||||
},
|
||||
],
|
||||
},
|
||||
|
|
@ -183,7 +176,99 @@ describe('GlobalSearchAutocompleteItems', () => {
|
|||
expect(findLayover().exists()).toBe(true);
|
||||
});
|
||||
it('renders correct layover text', () => {
|
||||
expect(findLayover().props('textMessage')).toBe(text);
|
||||
expect(findLayover().props('textMessage')).toBe('Go to %{kbdStart}↵%{kbdEnd}');
|
||||
});
|
||||
});
|
||||
|
||||
describe('renders the layover text for Users', () => {
|
||||
beforeEach(() => {
|
||||
createComponent(
|
||||
{ loading: false },
|
||||
{
|
||||
autocompleteGroupedSearchOptions: () => [
|
||||
{
|
||||
...MOCK_GROUPED_AUTOCOMPLETE_OPTIONS[0],
|
||||
name: 'Users',
|
||||
},
|
||||
],
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
it('renders the layover component', () => {
|
||||
expect(findLayover().exists()).toBe(true);
|
||||
});
|
||||
it('renders correct layover text', () => {
|
||||
expect(findLayover().props('textMessage')).toBe('Go to %{kbdStart}↵%{kbdEnd}');
|
||||
});
|
||||
});
|
||||
|
||||
describe('renders the layover text for Projects', () => {
|
||||
beforeEach(() => {
|
||||
createComponent(
|
||||
{ loading: false },
|
||||
{
|
||||
autocompleteGroupedSearchOptions: () => [
|
||||
{
|
||||
...MOCK_GROUPED_AUTOCOMPLETE_OPTIONS[0],
|
||||
name: 'Projects',
|
||||
},
|
||||
],
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
it('renders the layover component', () => {
|
||||
expect(findLayover().exists()).toBe(true);
|
||||
});
|
||||
it('renders correct layover text', () => {
|
||||
expect(findLayover().props('textMessage')).toBe('Go to %{kbdStart}↵%{kbdEnd}');
|
||||
});
|
||||
});
|
||||
|
||||
describe('renders the layover text for Recent issues', () => {
|
||||
beforeEach(() => {
|
||||
createComponent(
|
||||
{ loading: false },
|
||||
{
|
||||
autocompleteGroupedSearchOptions: () => [
|
||||
{
|
||||
...MOCK_GROUPED_AUTOCOMPLETE_OPTIONS[0],
|
||||
name: 'Recent issues',
|
||||
},
|
||||
],
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
it('renders the layover component', () => {
|
||||
expect(findLayover().exists()).toBe(true);
|
||||
});
|
||||
it('renders correct layover text', () => {
|
||||
expect(findLayover().props('textMessage')).toBe('Go to %{kbdStart}↵%{kbdEnd}');
|
||||
});
|
||||
});
|
||||
|
||||
describe('renders the layover text for Pages', () => {
|
||||
beforeEach(() => {
|
||||
createComponent(
|
||||
{ loading: false },
|
||||
{
|
||||
autocompleteGroupedSearchOptions: () => [
|
||||
{
|
||||
...MOCK_GROUPED_AUTOCOMPLETE_OPTIONS[0],
|
||||
name: 'Pages',
|
||||
},
|
||||
],
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
it('renders the layover component', () => {
|
||||
expect(findLayover().exists()).toBe(true);
|
||||
});
|
||||
it('renders correct layover text', () => {
|
||||
expect(findLayover().props('textMessage')).toBe('Go to %{kbdStart}↵%{kbdEnd}');
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import Vue from 'vue';
|
|||
import Vuex from 'vuex';
|
||||
import { shallowMount } from '@vue/test-utils';
|
||||
import GlobalSearchDefaultIssuables from '~/super_sidebar/components/global_search/components/global_search_default_issuables.vue';
|
||||
import SearchResultHoverLayover from '~/super_sidebar/components/global_search/components/global_search_hover_overlay.vue';
|
||||
import SearchResultFocusLayover from '~/super_sidebar/components/global_search/components/global_search_focus_overlay.vue';
|
||||
import { useMockInternalEventsTracking } from 'helpers/tracking_internal_events_helper';
|
||||
import {
|
||||
EVENT_CLICK_ISSUES_ASSIGNED_TO_ME_IN_COMMAND_PALETTE,
|
||||
|
|
@ -50,7 +50,7 @@ describe('GlobalSearchDefaultPlaces', () => {
|
|||
|
||||
const findGroup = () => wrapper.findComponent(GlDisclosureDropdownGroup);
|
||||
const findItems = () => wrapper.findAllComponents(GlDisclosureDropdownItem);
|
||||
const findLayover = () => wrapper.findComponent(SearchResultHoverLayover);
|
||||
const findLayover = () => wrapper.findComponent(SearchResultFocusLayover);
|
||||
|
||||
describe('given no contextSwitcherLinks', () => {
|
||||
beforeEach(() => {
|
||||
|
|
@ -95,43 +95,13 @@ describe('GlobalSearchDefaultPlaces', () => {
|
|||
it('renders the links', () => {
|
||||
const itemProps = findItems().wrappers.map((item) => item.props('item'));
|
||||
|
||||
expect(itemProps).toEqual([
|
||||
{
|
||||
extraAttrs: {
|
||||
class: 'show-hover-layover',
|
||||
},
|
||||
text: 'Issues assigned to me',
|
||||
href: '/dashboard/issues/?assignee_username=anyone',
|
||||
},
|
||||
{
|
||||
extraAttrs: {
|
||||
class: 'show-hover-layover',
|
||||
},
|
||||
text: "Issues I've created",
|
||||
href: '/dashboard/issues/?author_username=anyone',
|
||||
},
|
||||
{
|
||||
extraAttrs: {
|
||||
class: 'show-hover-layover',
|
||||
},
|
||||
text: 'Merge requests assigned to me',
|
||||
href: '/dashboard/merge_requests/?assignee_username=anyone',
|
||||
},
|
||||
{
|
||||
extraAttrs: {
|
||||
class: 'show-hover-layover',
|
||||
},
|
||||
text: "Merge requests that I'm a reviewer",
|
||||
href: '/dashboard/merge_requests/?reviewer_username=anyone',
|
||||
},
|
||||
{
|
||||
extraAttrs: {
|
||||
class: 'show-hover-layover',
|
||||
},
|
||||
text: "Merge requests I've created",
|
||||
href: '/dashboard/merge_requests/?author_username=anyone',
|
||||
},
|
||||
]);
|
||||
// Update the test expectation to match the new implementation
|
||||
expect(itemProps).toEqual(
|
||||
MOCK_DEFAULT_SEARCH_OPTIONS.map((item) => ({
|
||||
...item,
|
||||
// Remove the extraAttrs field from the expectation
|
||||
})),
|
||||
);
|
||||
});
|
||||
|
||||
it('renders the layover component', () => {
|
||||
|
|
@ -186,7 +156,12 @@ describe('GlobalSearchDefaultPlaces', () => {
|
|||
${"Merge requests I've created"} | ${EVENT_CLICK_MERGE_REQUESTS_I_CREATED_IN_COMMAND_PALETTE}
|
||||
`('triggers and tracks command dropdown $event', ({ eventTrigger, event }) => {
|
||||
const { trackEventSpy } = bindInternalEventDocument(wrapper.element);
|
||||
findGroup().vm.$emit('action', { text: eventTrigger });
|
||||
// Update to emit the action event from each dropdown item rather than the group
|
||||
findItems().wrappers.forEach((item) => {
|
||||
if (item.props('item')?.text === eventTrigger) {
|
||||
item.vm.$emit('action', { text: eventTrigger });
|
||||
}
|
||||
});
|
||||
expect(trackEventSpy).toHaveBeenCalledWith(event, {}, undefined);
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { GlDisclosureDropdownGroup, GlDisclosureDropdownItem } from '@gitlab/ui';
|
||||
import { shallowMount } from '@vue/test-utils';
|
||||
import GlobalSearchDefaultPlaces from '~/super_sidebar/components/global_search/components/global_search_default_places.vue';
|
||||
import SearchResultHoverLayover from '~/super_sidebar/components/global_search/components/global_search_hover_overlay.vue';
|
||||
import SearchResultFocusLayover from '~/super_sidebar/components/global_search/components/global_search_focus_overlay.vue';
|
||||
import {
|
||||
EVENT_CLICK_YOUR_WORK_IN_COMMAND_PALETTE,
|
||||
EVENT_CLICK_EXPLORE_IN_COMMAND_PALETTE,
|
||||
|
|
@ -28,7 +28,7 @@ describe('GlobalSearchDefaultPlaces', () => {
|
|||
|
||||
const findGroup = () => wrapper.findComponent(GlDisclosureDropdownGroup);
|
||||
const findItems = () => wrapper.findAllComponents(GlDisclosureDropdownItem);
|
||||
const findLayover = () => wrapper.findComponent(SearchResultHoverLayover);
|
||||
const findLayover = () => wrapper.findComponent(SearchResultFocusLayover);
|
||||
|
||||
describe('given no contextSwitcherLinks', () => {
|
||||
beforeEach(() => {
|
||||
|
|
@ -77,7 +77,7 @@ describe('GlobalSearchDefaultPlaces', () => {
|
|||
text: 'Explore',
|
||||
href: '/explore',
|
||||
extraAttrs: {
|
||||
class: 'show-hover-layover',
|
||||
class: 'show-focus-layover',
|
||||
'data-track-action': 'click_command_palette_item',
|
||||
'data-track-extra': '{"title":"Explore"}',
|
||||
'data-track-label': 'item_without_id',
|
||||
|
|
@ -90,7 +90,7 @@ describe('GlobalSearchDefaultPlaces', () => {
|
|||
text: 'Admin area',
|
||||
href: '/admin',
|
||||
extraAttrs: {
|
||||
class: 'show-hover-layover',
|
||||
class: 'show-focus-layover',
|
||||
'data-track-action': 'click_command_palette_item',
|
||||
'data-track-extra': '{"title":"Admin area"}',
|
||||
'data-track-label': 'item_without_id',
|
||||
|
|
@ -103,7 +103,7 @@ describe('GlobalSearchDefaultPlaces', () => {
|
|||
text: 'Leave admin mode',
|
||||
href: '/admin/session/destroy',
|
||||
extraAttrs: {
|
||||
class: 'show-hover-layover',
|
||||
class: 'show-focus-layover',
|
||||
'data-track-action': 'click_command_palette_item',
|
||||
'data-track-extra': '{"title":"Leave admin mode"}',
|
||||
'data-track-label': 'item_without_id',
|
||||
|
|
|
|||
|
|
@ -1,12 +1,12 @@
|
|||
import { GlSprintf } from '@gitlab/ui';
|
||||
import { shallowMountExtended } from 'helpers/vue_test_utils_helper';
|
||||
import SearchResultHoverLayover from '~/super_sidebar/components/global_search/components/global_search_hover_overlay.vue';
|
||||
import SearchResultFocusLayover from '~/super_sidebar/components/global_search/components/global_search_focus_overlay.vue';
|
||||
|
||||
describe('SearchResultHoverLayover', () => {
|
||||
describe('SearchResultFocusLayover', () => {
|
||||
let wrapper;
|
||||
|
||||
const createComponent = (textMessage = 'test') => {
|
||||
wrapper = shallowMountExtended(SearchResultHoverLayover, {
|
||||
wrapper = shallowMountExtended(SearchResultFocusLayover, {
|
||||
propsData: {
|
||||
textMessage,
|
||||
},
|
||||
|
|
@ -9,7 +9,10 @@ RSpec.describe API::Helpers::Snippets::HttpResponseMap, feature_category: :sourc
|
|||
expect(described_class.status_for(:success)).to eq(200)
|
||||
expect(described_class.status_for(:error)).to eq(400)
|
||||
expect(described_class.status_for(:invalid_params_error)).to eq(422)
|
||||
expect(described_class.status_for(:snippet_access_error)).to eq(403)
|
||||
expect(described_class.status_for(:snippet_not_found_error)).to eq(404)
|
||||
expect(described_class.status_for(:failed_to_create_error)).to eq(400)
|
||||
expect(described_class.status_for(:failed_to_delete_error)).to eq(400)
|
||||
expect(described_class.status_for(:failed_to_update_error)).to eq(400)
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -26,8 +26,8 @@ RSpec.describe Gitlab::Utils::TraversalIdCompactor, feature_category: :secrets_m
|
|||
|
||||
expect(result).to eq([
|
||||
[1, 2],
|
||||
[9, 10, 11],
|
||||
[1, 6],
|
||||
[9, 10, 11],
|
||||
[1, 21]
|
||||
])
|
||||
end
|
||||
|
|
@ -57,9 +57,9 @@ RSpec.describe Gitlab::Utils::TraversalIdCompactor, feature_category: :secrets_m
|
|||
result = compactor.compact(traversal_ids, 3)
|
||||
|
||||
expect(result).to eq([
|
||||
[6, 7],
|
||||
[1],
|
||||
[5, 6],
|
||||
[1]
|
||||
[6, 7]
|
||||
])
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -167,12 +167,11 @@ RSpec.describe Ci::JobToken::AuthorizationsCompactor, feature_category: :secrets
|
|||
target_project: pns2.project)
|
||||
end
|
||||
|
||||
it 'removes them from the compaction process',
|
||||
quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/524014' do
|
||||
it 'removes them from the compaction process' do
|
||||
compactor.compact(6)
|
||||
|
||||
expect(compactor.allowlist_groups).to match_array([ns2])
|
||||
expect(compactor.allowlist_projects).to match_array([pns1.project, pns6.project, pns7.project])
|
||||
expect(compactor.allowlist_groups).to match_array([ns2, ns4])
|
||||
expect(compactor.allowlist_projects).to match_array([pns1.project])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in New Issue