Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2021-12-01 12:16:08 +00:00
parent 7bc1ee0bcb
commit c9439a09c5
74 changed files with 3077 additions and 3308 deletions

View file

@ -200,6 +200,8 @@ Dangerfile @gl-quality/eng-prod
[Backend Static Code Analysis]
.rubocop*.yml @dstull @splattael @gl-quality/eng-prod
.rubocop_todo.yml @dstull @splattael @gl-quality/eng-prod
.rubocop_todo/ @dstull @splattael @gl-quality/eng-prod
/rubocop/ @dstull @splattael @gl-quality/eng-prod
/spec/rubocop/ @dstull @splattael @gl-quality/eng-prod

View file

@ -142,7 +142,7 @@ The Geo primary site needs to checksum every replicable so secondaries can verif
t.datetime_with_timezone :verified_at
t.integer :verification_retry_count, limit: 2
t.binary :verification_checksum, using: 'verification_checksum::bytea'
t.text :verification_failure
t.text :verification_failure, limit: 255
t.index :verification_state, name: VERIFICATION_STATE_INDEX_NAME
t.index :verified_at, where: "(verification_state = 0)", order: { verified_at: 'ASC NULLS FIRST' }, name: PENDING_VERIFICATION_INDEX_NAME
@ -150,8 +150,6 @@ The Geo primary site needs to checksum every replicable so secondaries can verif
t.index :verification_state, where: "(verification_state = 0 OR verification_state = 3)", name: NEEDS_VERIFICATION_INDEX_NAME
end
end
add_text_limit :cool_widget_states, :verification_failure, 255
end
def down

View file

@ -144,7 +144,7 @@ The Geo primary site needs to checksum every replicable so secondaries can verif
t.datetime_with_timezone :verified_at
t.integer :verification_retry_count, limit: 2
t.binary :verification_checksum, using: 'verification_checksum::bytea'
t.text :verification_failure
t.text :verification_failure, limit: 255
t.index :verification_state, name: VERIFICATION_STATE_INDEX_NAME
t.index :verified_at, where: "(verification_state = 0)", order: { verified_at: 'ASC NULLS FIRST' }, name: PENDING_VERIFICATION_INDEX_NAME
@ -152,8 +152,6 @@ The Geo primary site needs to checksum every replicable so secondaries can verif
t.index :verification_state, where: "(verification_state = 0 OR verification_state = 3)", name: NEEDS_VERIFICATION_INDEX_NAME
end
end
add_text_limit :cool_widget_states, :verification_failure, 255
end
def down

View file

@ -8,7 +8,9 @@ require:
inherit_from:
<% unless ENV['REVEAL_RUBOCOP_TODO'] == '1' %>
- '.rubocop_manual_todo.yml'
<% Dir.glob('.rubocop_todo/**/*.yml').each do |rubocop_todo_yaml| %>
- '<%= rubocop_todo_yaml %>'
<% end %>
- '.rubocop_todo.yml'
<% end %>
- ./rubocop/rubocop-migrations.yml

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,70 @@
---
Cop/UserAdmin:
Exclude:
- app/controllers/admin/impersonations_controller.rb
- app/controllers/concerns/spammable_actions.rb
- app/controllers/sessions_controller.rb
- app/finders/autocomplete/routes_finder.rb
- app/finders/ci/jobs_finder.rb
- app/finders/ci/runners_finder.rb
- app/finders/personal_access_tokens_finder.rb
- app/finders/users_finder.rb
- app/graphql/mutations/admin/sidekiq_queues/delete_jobs.rb
- app/graphql/resolvers/admin/analytics/usage_trends/measurements_resolver.rb
- app/helpers/application_helper.rb
- app/helpers/import_helper.rb
- app/helpers/nav_helper.rb
- app/helpers/projects_helper.rb
- app/helpers/search_helper.rb
- app/helpers/user_callouts_helper.rb
- app/helpers/users_helper.rb
- app/helpers/visibility_level_helper.rb
- app/models/concerns/protected_ref_access.rb
- app/models/concerns/spammable.rb
- app/models/issue_collection.rb
- app/models/merge_requests_closing_issues.rb
- app/models/protected_branch.rb
- app/models/user.rb
- app/policies/note_policy.rb
- app/serializers/deploy_key_entity.rb
- app/services/auth/container_registry_authentication_service.rb
- app/services/emails/create_service.rb
- app/services/projects/enable_deploy_key_service.rb
- app/services/projects/fork_service.rb
- app/services/users/build_service.rb
- ee/app/controllers/ee/projects_controller.rb
- ee/app/graphql/mutations/admin/analytics/devops_adoption/segments/mixins.rb
- ee/app/graphql/resolvers/admin/analytics/devops_adoption/segments_resolver.rb
- ee/app/helpers/ee/dashboard_helper.rb
- ee/app/helpers/ee/import_helper.rb
- ee/app/helpers/ee/subscribable_banner_helper.rb
- ee/app/helpers/ee/user_callouts_helper.rb
- ee/app/helpers/license_monitoring_helper.rb
- ee/app/helpers/push_rules_helper.rb
- ee/app/models/concerns/ee/protected_ref_access.rb
- ee/app/models/ee/user.rb
- ee/app/models/protected_environment/deploy_access_level.rb
- ee/app/policies/ee/group_policy.rb
- ee/app/policies/ee/project_policy.rb
- ee/app/services/ee/groups/create_service.rb
- ee/app/services/ee/groups/update_service.rb
- ee/app/services/ee/projects/update_service.rb
- ee/lib/ee/api/helpers.rb
- ee/lib/ee/gitlab/git_access.rb
- lib/api/award_emoji.rb
- lib/api/ci/runners.rb
- lib/api/entities/ci/runner_details.rb
- lib/api/entities/ci/user_safe.rb
- lib/api/groups.rb
- lib/api/helpers.rb
- lib/api/personal_access_tokens.rb
- lib/api/users.rb
- lib/api/v3/github.rb
- lib/constraints/admin_constrainer.rb
- lib/gitlab/auth.rb
- lib/gitlab/background_migration/user_mentions/models/group.rb
- lib/gitlab/ci/runner_instructions.rb
- lib/gitlab/import_export/members_mapper.rb
- lib/gitlab/performance_bar.rb
- lib/gitlab/visibility_level.rb
- qa/qa/runtime/api/client.rb

View file

@ -0,0 +1,61 @@
---
Database/MultipleDatabases:
Exclude:
- ee/lib/ee/gitlab/database.rb
- ee/lib/gitlab/geo/database_tasks.rb
- ee/lib/gitlab/geo/geo_tasks.rb
- ee/lib/gitlab/geo/health_check.rb
- ee/lib/gitlab/geo/log_cursor/daemon.rb
- ee/lib/pseudonymizer/dumper.rb
- ee/lib/pseudonymizer/pager.rb
- ee/lib/system_check/geo/geo_database_configured_check.rb
- ee/spec/lib/pseudonymizer/dumper_spec.rb
- ee/spec/models/pg_replication_slot_spec.rb
- ee/spec/services/ee/merge_requests/update_service_spec.rb
- lib/backup/database.rb
- lib/backup/manager.rb
- lib/gitlab/current_settings.rb
- lib/gitlab/database/load_balancing/load_balancer.rb
- lib/gitlab/database/load_balancing.rb
- lib/gitlab/database/load_balancing/sticking.rb
- lib/gitlab/database/migrations/observers/migration_observer.rb
- lib/gitlab/database/migrations/observers/query_log.rb
- lib/gitlab/database/partitioning_migration_helpers/backfill_partitioned_table.rb
- lib/gitlab/database.rb
- lib/gitlab/database/schema_cache_with_renamed_table.rb
- lib/gitlab/database/with_lock_retries.rb
- lib/gitlab/gitlab_import/importer.rb
- lib/gitlab/health_checks/db_check.rb
- lib/gitlab/import_export/base/relation_factory.rb
- lib/gitlab/import_export/group/relation_tree_restorer.rb
- lib/gitlab/legacy_github_import/importer.rb
- lib/gitlab/metrics/samplers/database_sampler.rb
- lib/gitlab/seeder.rb
- lib/gitlab/sherlock/query.rb
- lib/system_check/orphans/repository_check.rb
- spec/db/schema_spec.rb
- spec/initializers/database_config_spec.rb
- spec/lib/backup/manager_spec.rb
- spec/lib/gitlab/current_settings_spec.rb
- spec/lib/gitlab/database_spec.rb
- spec/lib/gitlab/metrics/subscribers/active_record_spec.rb
- spec/lib/gitlab/profiler_spec.rb
- spec/lib/gitlab/usage_data_metrics_spec.rb
- spec/lib/gitlab/usage_data_queries_spec.rb
- spec/lib/gitlab/usage/metrics/names_suggestions/relation_parsers/constraints_spec.rb
- spec/lib/gitlab/usage/metrics/names_suggestions/relation_parsers/joins_spec.rb
- spec/lib/gitlab/usage/metrics/instrumentations/database_metric_spec.rb
- spec/lib/gitlab/utils/usage_data_spec.rb
- spec/models/project_feature_usage_spec.rb
- spec/models/users_statistics_spec.rb
- spec/services/users/activity_service_spec.rb
- spec/support/caching.rb
- spec/support/gitlab/usage/metrics_instrumentation_shared_examples.rb
- spec/support/helpers/database_connection_helpers.rb
- spec/support/helpers/database/database_helpers.rb
- spec/support/helpers/database/table_schema_helpers.rb
- spec/support/helpers/migrations_helpers.rb
- spec/support/helpers/query_recorder.rb
- spec/support/helpers/usage_data_helpers.rb
- spec/tasks/gitlab/backup_rake_spec.rb
- spec/tasks/gitlab/db_rake_spec.rb

View file

@ -0,0 +1,15 @@
---
Gitlab/DelegatePredicateMethods:
Exclude:
- app/models/clusters/cluster.rb
- app/models/clusters/platforms/kubernetes.rb
- app/models/concerns/ci/metadatable.rb
- app/models/concerns/diff_positionable_note.rb
- app/models/concerns/integrations/base_data_fields.rb
- app/models/concerns/resolvable_discussion.rb
- app/models/project.rb
- ee/app/models/concerns/ee/ci/metadatable.rb
- ee/app/models/ee/group.rb
- ee/app/models/ee/namespace.rb
- ee/app/models/license.rb
- lib/gitlab/ci/trace/stream.rb

View file

@ -0,0 +1,189 @@
---
Gitlab/FeatureAvailableUsage:
Exclude:
- app/controllers/projects/application_controller.rb
- app/graphql/types/project_type.rb
- app/helpers/events_helper.rb
- app/helpers/labels_helper.rb
- app/policies/project_policy.rb
- app/views/shared/boards/_switcher.html.haml
- ee/app/controllers/concerns/description_diff_actions.rb
- ee/app/controllers/concerns/ee/boards_actions.rb
- ee/app/controllers/concerns/security_dashboards_permissions.rb
- ee/app/controllers/ee/boards/lists_controller.rb
- ee/app/controllers/ee/projects/autocomplete_sources_controller.rb
- ee/app/controllers/ee/projects/issues_controller.rb
- ee/app/controllers/ee/projects/security/configuration_controller.rb
- ee/app/controllers/ee/projects/settings/ci_cd_controller.rb
- ee/app/controllers/ee/projects/settings/operations_controller.rb
- ee/app/controllers/ee/projects/settings/repository_controller.rb
- ee/app/controllers/projects/audit_events_controller.rb
- ee/app/controllers/projects/cluster_agents_controller.rb
- ee/app/controllers/projects/iterations/inherited_controller.rb
- ee/app/controllers/projects/iterations_controller.rb
- ee/app/controllers/projects/path_locks_controller.rb
- ee/app/controllers/projects/subscriptions_controller.rb
- ee/app/finders/autocomplete/vulnerabilities_autocomplete_finder.rb
- ee/app/finders/clusters/agents_finder.rb
- ee/app/finders/ee/alert_management/alerts_finder.rb
- ee/app/finders/ee/alert_management/http_integrations_finder.rb
- ee/app/graphql/ee/types/group_type.rb
- ee/app/graphql/mutations/dast/profiles/create.rb
- ee/app/graphql/mutations/dast/profiles/run.rb
- ee/app/graphql/mutations/dast/profiles/update.rb
- ee/app/graphql/mutations/instance_security_dashboard/remove_project.rb
- ee/app/graphql/resolvers/clusters/agent_tokens_resolver.rb
- ee/app/helpers/ee/application_helper.rb
- ee/app/helpers/ee/boards_helper.rb
- ee/app/helpers/ee/clusters_helper.rb
- ee/app/helpers/ee/dashboard_helper.rb
- ee/app/helpers/ee/form_helper.rb
- ee/app/helpers/ee/graph_helper.rb
- ee/app/helpers/ee/issues_helper.rb
- ee/app/helpers/ee/lock_helper.rb
- ee/app/helpers/ee/operations_helper.rb
- ee/app/helpers/ee/projects/incidents_helper.rb
- ee/app/helpers/ee/projects_helper.rb
- ee/app/helpers/ee/releases_helper.rb
- ee/app/helpers/ee/search_helper.rb
- ee/app/helpers/ee/tree_helper.rb
- ee/app/models/approval_state.rb
- ee/app/models/concerns/approvable.rb
- ee/app/models/concerns/ee/project_security_scanners_information.rb
- ee/app/models/concerns/ee/protected_ref_access.rb
- ee/app/models/concerns/has_timelogs_report.rb
- ee/app/models/concerns/insights_feature.rb
- ee/app/models/ee/board.rb
- ee/app/models/ee/ci/build.rb
- ee/app/models/ee/ci/build_dependencies.rb
- ee/app/models/ee/ci/pipeline.rb
- ee/app/models/ee/group.rb
- ee/app/models/ee/group_member.rb
- ee/app/models/ee/issue.rb
- ee/app/models/ee/list.rb
- ee/app/models/ee/merge_request.rb
- ee/app/models/ee/milestone_release.rb
- ee/app/models/ee/namespace.rb
- ee/app/models/ee/namespace_setting.rb
- ee/app/models/ee/project.rb
- ee/app/models/ee/project_ci_cd_setting.rb
- ee/app/models/namespace_statistics.rb
- ee/app/models/project_security_setting.rb
- ee/app/policies/compliance_management/framework_policy.rb
- ee/app/policies/ee/group_policy.rb
- ee/app/policies/ee/namespace_policy.rb
- ee/app/policies/ee/project_policy.rb
- ee/app/policies/ee/protected_branch_policy.rb
- ee/app/presenters/ee/label_presenter.rb
- ee/app/presenters/merge_request_approver_presenter.rb
- ee/app/serializers/dashboard_operations_project_entity.rb
- ee/app/serializers/ee/environment_entity.rb
- ee/app/serializers/ee/evidences/release_entity.rb
- ee/app/serializers/ee/note_entity.rb
- ee/app/services/boards/epic_boards/update_service.rb
- ee/app/services/ci/audit_variable_change_service.rb
- ee/app/services/clusters/agent_tokens/create_service.rb
- ee/app/services/clusters/agents/create_service.rb
- ee/app/services/dashboard/projects/create_service.rb
- ee/app/services/dashboard/projects/list_service.rb
- ee/app/services/dast/profiles/create_service.rb
- ee/app/services/dast/profiles/update_service.rb
- ee/app/services/dast_on_demand_scans/create_service.rb
- ee/app/services/dast_site_tokens/create_service.rb
- ee/app/services/dast_site_validations/create_service.rb
- ee/app/services/dast_site_validations/revoke_service.rb
- ee/app/services/dast_site_validations/validate_service.rb
- ee/app/services/ee/alert_management/http_integrations/create_service.rb
- ee/app/services/ee/audit_event_service.rb
- ee/app/services/ee/boards/issues/list_service.rb
- ee/app/services/ee/boards/lists/create_service.rb
- ee/app/services/ee/boards/update_service.rb
- ee/app/services/ee/ide/schemas_config_service.rb
- ee/app/services/ee/issuable_base_service.rb
- ee/app/services/ee/issue_links/create_service.rb
- ee/app/services/ee/issues/build_service.rb
- ee/app/services/ee/lfs/lock_file_service.rb
- ee/app/services/ee/lfs/unlock_file_service.rb
- ee/app/services/ee/merge_requests/approval_service.rb
- ee/app/services/ee/merge_requests/build_service.rb
- ee/app/services/ee/merge_requests/merge_base_service.rb
- ee/app/services/ee/merge_requests/refresh_service.rb
- ee/app/services/ee/merge_requests/update_service.rb
- ee/app/services/ee/projects/create_service.rb
- ee/app/services/ee/protected_branches/create_service.rb
- ee/app/services/ee/releases/create_evidence_service.rb
- ee/app/services/iterations/create_service.rb
- ee/app/services/iterations/update_service.rb
- ee/app/services/merge_requests/sync_report_approver_approval_rules.rb
- ee/app/services/merge_requests/update_blocks_service.rb
- ee/app/services/projects/mark_for_deletion_service.rb
- ee/app/services/quality_management/test_cases/create_service.rb
- ee/app/services/requirements_management/process_test_reports_service.rb
- ee/app/services/security/store_scans_service.rb
- ee/app/views/layouts/nav/_test_cases_link.html.haml
- ee/app/views/layouts/nav/sidebar/_project_iterations_link.html.haml
- ee/app/views/projects/_merge_request_approvals_settings.html.haml
- ee/app/views/projects/_merge_request_settings.html.haml
- ee/app/views/projects/_merge_request_settings_description_text.html.haml
- ee/app/views/projects/audit_events/index.html.haml
- ee/app/views/projects/blob/_header_file_locks.html.haml
- ee/app/views/projects/issues/_related_issues.html.haml
- ee/app/views/projects/merge_requests/show.html.haml
- ee/app/views/projects/merge_requests/show.html.haml
- ee/app/views/projects/merge_requests/show.html.haml
- ee/app/views/projects/merge_requests/show.html.haml
- ee/app/views/projects/merge_requests/show.html.haml
- ee/app/views/projects/merge_requests/show.html.haml
- ee/app/views/projects/merge_requests/show.html.haml
- ee/app/views/projects/merge_requests/show.html.haml
- ee/app/views/projects/merge_requests/show.html.haml
- ee/app/views/projects/pipelines/_tabs_content.html.haml
- ee/app/views/projects/protected_branches/ee/_code_owner_approval_form.html.haml
- ee/app/views/projects/protected_branches/ee/_code_owner_approval_table.html.haml
- ee/app/views/projects/protected_branches/ee/_code_owner_approval_table_head.html.haml
- ee/app/views/projects/push_rules/_index.html.haml
- ee/app/views/projects/settings/_default_issue_template.html.haml
- ee/app/views/projects/settings/_marked_for_removal.html.haml
- ee/app/views/projects/settings/_restore.html.haml
- ee/app/views/projects/settings/ci_cd/_auto_rollback.html.haml
- ee/app/views/projects/settings/ci_cd/_pipeline_subscriptions.html.haml
- ee/app/views/projects/settings/operations/_status_page.html.haml
- ee/app/views/projects/settings/repository/_protected_branches.html.haml
- ee/app/views/projects/sidebar/_repository_locked_files.html.haml
- ee/app/views/shared/issuable/_group_bulk_update_sidebar.html.haml
- ee/app/views/shared/issuable/form/_default_templates.html.haml
- ee/app/views/shared/labels/_create_label_help_text.html.haml
- ee/app/views/shared/promotions/_promote_mr_features.html.haml
- ee/app/views/shared/promotions/_promote_mr_features.html.haml
- ee/app/views/shared/promotions/_promote_repository_features.html.haml
- ee/app/views/shared/promotions/_promote_repository_features.html.haml
- ee/app/views/shared/promotions/_promote_repository_features.html.haml
- ee/app/views/shared/promotions/_promote_repository_features.html.haml
- ee/app/views/shared/promotions/_promote_repository_features.html.haml
- ee/app/views/shared/promotions/_promote_repository_features.html.haml
- ee/app/workers/analytics/code_review_metrics_worker.rb
- ee/app/workers/group_saml_group_sync_worker.rb
- ee/lib/api/external_status_checks.rb
- ee/lib/ee/api/entities/approval_state.rb
- ee/lib/ee/api/entities/board.rb
- ee/lib/ee/api/entities/issue.rb
- ee/lib/ee/api/entities/project.rb
- ee/lib/ee/api/helpers.rb
- ee/lib/ee/api/internal/kubernetes.rb
- ee/lib/ee/api/job_artifacts.rb
- ee/lib/ee/api/projects.rb
- ee/lib/ee/gitlab/alert_management/payload/generic.rb
- ee/lib/ee/gitlab/checks/diff_check.rb
- ee/lib/ee/gitlab/gon_helper.rb
- ee/lib/ee/gitlab/tree_summary.rb
- ee/lib/gitlab/alert_management.rb
- ee/lib/gitlab/ci/pipeline/chain/config/content/compliance.rb
- ee/lib/gitlab/code_owners.rb
- ee/lib/gitlab/incident_management.rb
- ee/lib/gitlab/path_locks_finder.rb
- ee/lib/incident_management/incident_sla.rb
- ee/spec/models/instance_security_dashboard_spec.rb
- ee/spec/models/license_spec.rb
- ee/spec/models/project_spec.rb
- lib/api/helpers/related_resources_helpers.rb
- spec/models/concerns/featurable_spec.rb

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,4 @@
---
GraphQL/ArgumentName:
Exclude:
- ee/app/graphql/mutations/audit_events/external_audit_event_destinations/update.rb

View file

@ -0,0 +1,18 @@
---
GraphQL/FieldDefinitions:
Exclude:
- app/graphql/types/commit_type.rb
- app/graphql/types/group_type.rb
- app/graphql/types/issue_type.rb
- app/graphql/types/label_type.rb
- app/graphql/types/merge_request_type.rb
- app/graphql/types/namespace_type.rb
- app/graphql/types/notes/note_type.rb
- app/graphql/types/project_type.rb
- app/graphql/types/projects/topic_type.rb
- app/graphql/types/release_type.rb
- ee/app/graphql/types/ci/code_quality_degradation_type.rb
- ee/app/graphql/types/epic_type.rb
- ee/app/graphql/types/group_release_stats_type.rb
- ee/app/graphql/types/iteration_type.rb
- ee/app/graphql/types/requirements_management/requirement_type.rb

View file

@ -0,0 +1,7 @@
---
GraphQL/FieldHashKey:
Exclude:
- app/graphql/types/ci/config/job_type.rb
- app/graphql/types/ci/status_action_type.rb
- app/graphql/types/error_tracking/sentry_error_stack_trace_entry_type.rb
- app/graphql/types/packages/helm/dependency_type.rb

View file

@ -0,0 +1,12 @@
---
GraphQL/FieldMethod:
Exclude:
- app/graphql/types/ci/job_type.rb
- app/graphql/types/merge_request_type.rb
- app/graphql/types/metrics/dashboards/annotation_type.rb
- app/graphql/types/packages/package_details_type.rb
- app/graphql/types/project_type.rb
- ee/app/graphql/types/dast/profile_type.rb
- ee/app/graphql/types/dast_site_validation_type.rb
- ee/app/graphql/types/group_release_stats_type.rb
- ee/app/graphql/types/incident_management/oncall_rotation_type.rb

View file

@ -0,0 +1,22 @@
---
GraphQL/OrderedArguments:
Exclude:
- app/graphql/mutations/jira_import/start.rb
- app/graphql/mutations/merge_requests/accept.rb
- app/graphql/resolvers/base_issues_resolver.rb
- app/graphql/resolvers/design_management/designs_resolver.rb
- app/graphql/resolvers/design_management/version/design_at_version_resolver.rb
- app/graphql/resolvers/design_management/version/designs_at_version_resolver.rb
- app/graphql/resolvers/design_management/version_in_collection_resolver.rb
- app/graphql/resolvers/group_milestones_resolver.rb
- app/graphql/resolvers/merge_requests_resolver.rb
- app/graphql/resolvers/paginated_tree_resolver.rb
- app/graphql/resolvers/tree_resolver.rb
- app/graphql/resolvers/users/groups_resolver.rb
- app/graphql/types/commit_action_type.rb
- app/graphql/types/diff_paths_input_type.rb
- app/graphql/types/issues/negated_issue_filter_input_type.rb
- app/graphql/types/jira_users_mapping_input_type.rb
- app/graphql/types/notes/diff_image_position_input_type.rb
- app/graphql/types/notes/diff_position_base_input_type.rb
- app/graphql/types/notes/diff_position_input_type.rb

View file

@ -0,0 +1,89 @@
---
GraphQL/OrderedFields:
Exclude:
- app/graphql/types/board_list_type.rb
- app/graphql/types/ci/analytics_type.rb
- app/graphql/types/ci/ci_cd_setting_type.rb
- app/graphql/types/ci/config/group_type.rb
- app/graphql/types/ci/config/job_type.rb
- app/graphql/types/ci/config/stage_type.rb
- app/graphql/types/ci/detailed_status_type.rb
- app/graphql/types/ci/group_type.rb
- app/graphql/types/ci/job_type.rb
- app/graphql/types/ci/runner_architecture_type.rb
- app/graphql/types/ci/runner_platform_type.rb
- app/graphql/types/ci/runner_type.rb
- app/graphql/types/ci/stage_type.rb
- app/graphql/types/ci/status_action_type.rb
- app/graphql/types/ci/template_type.rb
- app/graphql/types/commit_type.rb
- app/graphql/types/container_expiration_policy_type.rb
- app/graphql/types/container_repository_tag_type.rb
- app/graphql/types/container_repository_type.rb
- app/graphql/types/dependency_proxy/blob_type.rb
- app/graphql/types/dependency_proxy/image_ttl_group_policy_type.rb
- app/graphql/types/dependency_proxy/manifest_type.rb
- app/graphql/types/design_management/design_collection_type.rb
- app/graphql/types/diff_refs_type.rb
- app/graphql/types/diff_stats_summary_type.rb
- app/graphql/types/diff_stats_type.rb
- app/graphql/types/error_tracking/sentry_detailed_error_type.rb
- app/graphql/types/error_tracking/sentry_error_collection_type.rb
- app/graphql/types/error_tracking/sentry_error_frequency_type.rb
- app/graphql/types/error_tracking/sentry_error_stack_trace_context_type.rb
- app/graphql/types/error_tracking/sentry_error_stack_trace_entry_type.rb
- app/graphql/types/error_tracking/sentry_error_stack_trace_type.rb
- app/graphql/types/error_tracking/sentry_error_type.rb
- app/graphql/types/evidence_type.rb
- app/graphql/types/grafana_integration_type.rb
- app/graphql/types/issue_type.rb
- app/graphql/types/jira_import_type.rb
- app/graphql/types/jira_user_type.rb
- app/graphql/types/label_type.rb
- app/graphql/types/merge_request_type.rb
- app/graphql/types/metadata/kas_type.rb
- app/graphql/types/metadata_type.rb
- app/graphql/types/namespace/package_settings_type.rb
- app/graphql/types/namespace_type.rb
- app/graphql/types/notes/diff_position_type.rb
- app/graphql/types/notes/discussion_type.rb
- app/graphql/types/notes/note_type.rb
- app/graphql/types/packages/composer/json_type.rb
- app/graphql/types/packages/composer/metadatum_type.rb
- app/graphql/types/packages/conan/file_metadatum_type.rb
- app/graphql/types/packages/conan/metadatum_type.rb
- app/graphql/types/packages/helm/dependency_type.rb
- app/graphql/types/packages/helm/maintainer_type.rb
- app/graphql/types/packages/helm/metadata_type.rb
- app/graphql/types/packages/maven/metadatum_type.rb
- app/graphql/types/packages/nuget/metadatum_type.rb
- app/graphql/types/packages/package_dependency_link_type.rb
- app/graphql/types/packages/package_file_type.rb
- app/graphql/types/packages/package_tag_type.rb
- app/graphql/types/packages/package_type.rb
- app/graphql/types/project_statistics_type.rb
- app/graphql/types/project_type.rb
- app/graphql/types/projects/services/jira_project_type.rb
- app/graphql/types/release_asset_link_type.rb
- app/graphql/types/release_links_type.rb
- app/graphql/types/release_type.rb
- app/graphql/types/repository_type.rb
- app/graphql/types/root_storage_statistics_type.rb
- app/graphql/types/task_completion_status.rb
- app/graphql/types/tree/blob_type.rb
- app/graphql/types/tree/submodule_type.rb
- app/graphql/types/tree/tree_entry_type.rb
- app/graphql/types/user_callout_type.rb
- app/graphql/types/user_status_type.rb
- ee/app/graphql/types/analytics/devops_adoption/snapshot_type.rb
- ee/app/graphql/types/epic_descendant_count_type.rb
- ee/app/graphql/types/epic_descendant_weight_sum_type.rb
- ee/app/graphql/types/epic_health_status_type.rb
- ee/app/graphql/types/epic_type.rb
- ee/app/graphql/types/geo/geo_node_type.rb
- ee/app/graphql/types/requirements_management/requirement_states_count_type.rb
- ee/app/graphql/types/scan_execution_policy_type.rb
- ee/app/graphql/types/scan_type.rb
- ee/app/graphql/types/scanned_resource_type.rb
- ee/app/graphql/types/security_report_summary_section_type.rb
- ee/app/graphql/types/timebox_report_type.rb

View file

@ -0,0 +1,7 @@
---
GraphQL/ResolverMethodLength:
Exclude:
- app/graphql/types/ci/detailed_status_type.rb
- app/graphql/types/ci/runner_type.rb
- app/graphql/types/ci/stage_type.rb
- app/graphql/types/packages/package_type.rb

View file

@ -0,0 +1,62 @@
---
Performance/ActiveRecordSubtransactionMethods:
Exclude:
- app/controllers/clusters/clusters_controller.rb
- app/controllers/repositories/lfs_storage_controller.rb
- app/controllers/search_controller.rb
- app/models/application_record.rb
- app/models/ci/ref.rb
- app/models/container_repository.rb
- app/models/design_management/design_collection.rb
- app/models/error_tracking/error.rb
- app/models/external_pull_request.rb
- app/models/gpg_signature.rb
- app/models/merge_request.rb
- app/models/plan.rb
- app/models/project.rb
- app/models/shard.rb
- app/models/x509_certificate.rb
- app/models/x509_commit_signature.rb
- app/models/x509_issuer.rb
- app/services/bulk_imports/relation_export_service.rb
- app/services/ci/update_build_state_service.rb
- app/services/event_create_service.rb
- app/services/groups/import_export/import_service.rb
- app/services/lfs/file_transformer.rb
- app/services/merge_requests/approval_service.rb
- app/services/namespaces/statistics_refresher_service.rb
- app/services/packages/rubygems/create_dependencies_service.rb
- app/services/packages/rubygems/metadata_extraction_service.rb
- app/services/projects/create_service.rb
- app/services/projects/lfs_pointers/lfs_download_service.rb
- app/services/service_desk_settings/update_service.rb
- app/services/service_ping/submit_service.rb
- app/services/terraform/remote_state_handler.rb
- app/workers/namespaces/schedule_aggregation_worker.rb
- app/workers/project_export_worker.rb
- db/migrate/20200212014653_rename_security_dashboard_feature_flag_to_instance_security_dashboard.rb
- db/post_migrate/20200214034836_remove_security_dashboard_feature_flag.rb
- db/post_migrate/20210824174615_prepare_ci_builds_metadata_and_ci_build_async_indexes.rb
- ee/app/models/ci/minutes/namespace_monthly_usage.rb
- ee/app/models/ci/minutes/project_monthly_usage.rb
- ee/app/models/concerns/deprecated_approvals_before_merge.rb
- ee/app/models/ee/iteration.rb
- ee/app/models/ee/plan.rb
- ee/app/models/elastic/index_setting.rb
- ee/app/models/gitlab_subscription.rb
- ee/app/models/software_license.rb
- ee/app/services/boards/user_preferences/update_service.rb
- ee/app/services/ci/minutes/update_project_and_namespace_usage_service.rb
- ee/app/services/ee/analytics/cycle_analytics/stages/base_service.rb
- ee/app/services/security/store_report_service.rb
- ee/app/services/security/store_scan_service.rb
- ee/app/workers/import_software_licenses_worker.rb
- ee/db/fixtures/production/027_plans.rb
- ee/lib/ee/gitlab/background_migration/migrate_approver_to_approval_rules.rb
- ee/lib/gitlab/elastic/indexer.rb
- lib/gitlab/ci/pipeline/seed/environment.rb
- lib/gitlab/ci/pipeline/seed/processable/resource_group.rb
- lib/gitlab/ci/trace/chunked_io.rb
- lib/gitlab/composer/cache.rb
- lib/gitlab/database/async_indexes/migration_helpers.rb
- lib/gitlab/issuables_count_for_state.rb

View file

@ -0,0 +1,5 @@
---
Performance/Rubyzip:
Exclude:
- app/services/packages/nuget/metadata_extraction_service.rb
- lib/gitlab/ci/artifact_file_reader.rb

View file

@ -0,0 +1,42 @@
---
Rails/IncludeUrlHelper:
Exclude:
- app/models/integrations/asana.rb
- app/models/integrations/bamboo.rb
- app/models/integrations/bugzilla.rb
- app/models/integrations/campfire.rb
- app/models/integrations/confluence.rb
- app/models/integrations/custom_issue_tracker.rb
- app/models/integrations/datadog.rb
- app/models/integrations/discord.rb
- app/models/integrations/ewm.rb
- app/models/integrations/external_wiki.rb
- app/models/integrations/flowdock.rb
- app/models/integrations/hangouts_chat.rb
- app/models/integrations/irker.rb
- app/models/integrations/jenkins.rb
- app/models/integrations/mattermost.rb
- app/models/integrations/pivotaltracker.rb
- app/models/integrations/redmine.rb
- app/models/integrations/webex_teams.rb
- app/models/integrations/youtrack.rb
- app/presenters/alert_management/alert_presenter.rb
- app/presenters/ci/pipeline_presenter.rb
- app/presenters/environment_presenter.rb
- app/presenters/gitlab/blame_presenter.rb
- app/presenters/merge_request_presenter.rb
- app/presenters/project_presenter.rb
- app/presenters/prometheus_alert_presenter.rb
- app/presenters/release_presenter.rb
- app/presenters/releases/evidence_presenter.rb
- ee/app/helpers/license_helper.rb
- ee/app/models/integrations/github.rb
- ee/app/presenters/merge_request_approver_presenter.rb
- ee/spec/helpers/ee/projects/security/configuration_helper_spec.rb
- ee/spec/lib/banzai/filter/cross_project_issuable_information_filter_spec.rb
- lib/gitlab/ci/badge/metadata.rb
- spec/helpers/merge_requests_helper_spec.rb
- spec/helpers/nav/top_nav_helper_spec.rb
- spec/helpers/notify_helper_spec.rb
- spec/lib/banzai/filter/reference_redactor_filter_spec.rb
- spec/lib/banzai/reference_redactor_spec.rb

View file

@ -0,0 +1,123 @@
---
Rails/SaveBang:
Exclude:
- ee/spec/initializers/fog_google_https_private_urls_spec.rb
- ee/spec/lib/analytics/merge_request_metrics_calculator_spec.rb
- ee/spec/lib/ee/gitlab/auth/ldap/sync/group_spec.rb
- ee/spec/lib/ee/gitlab/checks/push_rules/commit_check_spec.rb
- ee/spec/lib/ee/gitlab/ci/pipeline/quota/activity_spec.rb
- ee/spec/lib/gitlab/auth/ldap/access_spec.rb
- ee/spec/lib/gitlab/auth/o_auth/user_spec.rb
- ee/spec/lib/gitlab/auth/saml/user_spec.rb
- ee/spec/lib/gitlab/elastic/search_results_spec.rb
- ee/spec/lib/gitlab/email/handler/ee/service_desk_handler_spec.rb
- ee/spec/lib/gitlab/geo_spec.rb
- ee/spec/lib/gitlab/git_access_spec.rb
- ee/spec/lib/gitlab/import_export/group/relation_factory_spec.rb
- ee/spec/lib/gitlab/mirror_spec.rb
- ee/spec/models/application_setting_spec.rb
- ee/spec/models/approval_merge_request_rule_spec.rb
- ee/spec/models/approval_project_rule_spec.rb
- ee/spec/models/burndown_spec.rb
- ee/spec/models/elasticsearch_indexed_namespace_spec.rb
- ee/spec/models/gitlab_subscription_spec.rb
- ee/spec/models/issue_spec.rb
- ee/spec/models/label_note_spec.rb
- ee/spec/models/lfs_object_spec.rb
- ee/spec/models/license_spec.rb
- ee/spec/models/merge_request_spec.rb
- ee/spec/models/merge_train_spec.rb
- ee/spec/models/project_ci_cd_setting_spec.rb
- ee/spec/models/project_spec.rb
- ee/spec/models/protected_environment_spec.rb
- ee/spec/models/repository_spec.rb
- ee/spec/models/scim_identity_spec.rb
- ee/spec/models/scim_oauth_access_token_spec.rb
- ee/spec/models/upload_spec.rb
- ee/spec/models/user_preference_spec.rb
- ee/spec/models/visible_approvable_spec.rb
- ee/spec/models/vulnerabilities/feedback_spec.rb
- ee/spec/models/vulnerabilities/issue_link_spec.rb
- ee/spec/services/ee/boards/issues/create_service_spec.rb
- ee/spec/services/ee/boards/issues/list_service_spec.rb
- ee/spec/services/ee/boards/lists/list_service_spec.rb
- ee/spec/services/ee/issuable/clone/attributes_rewriter_spec.rb
- ee/spec/services/ee/issuable/common_system_notes_service_spec.rb
- ee/spec/services/ee/issues/update_service_spec.rb
- ee/spec/services/ee/merge_requests/refresh_service_spec.rb
- ee/spec/services/ee/merge_requests/update_service_spec.rb
- ee/spec/services/ee/notes/quick_actions_service_spec.rb
- ee/spec/services/ee/notification_service_spec.rb
- ee/spec/services/epic_links/create_service_spec.rb
- ee/spec/services/epics/close_service_spec.rb
- ee/spec/services/epics/issue_promote_service_spec.rb
- ee/spec/services/epics/reopen_service_spec.rb
- ee/spec/services/epics/tree_reorder_service_spec.rb
- ee/spec/services/epics/update_dates_service_spec.rb
- ee/spec/services/epics/update_service_spec.rb
- ee/spec/services/geo/blob_verification_secondary_service_spec.rb
- ee/spec/services/geo/files_expire_service_spec.rb
- ee/spec/services/geo/metrics_update_service_spec.rb
- ee/spec/services/geo/registry_consistency_service_spec.rb
- ee/spec/services/geo/repository_verification_secondary_service_spec.rb
- ee/spec/services/groups/autocomplete_service_spec.rb
- ee/spec/services/ldap_group_reset_service_spec.rb
- ee/spec/services/lfs/unlock_file_service_spec.rb
- ee/spec/services/merge_trains/refresh_merge_request_service_spec.rb
- ee/spec/services/quick_actions/interpret_service_spec.rb
- ee/spec/services/slash_commands/global_slack_handler_spec.rb
- ee/spec/services/start_pull_mirroring_service_spec.rb
- ee/spec/services/status_page/trigger_publish_service_spec.rb
- ee/spec/services/todo_service_spec.rb
- ee/spec/services/vulnerability_feedback/create_service_spec.rb
- qa/qa/specs/features/browser_ui/3_create/repository/push_mirroring_over_http_spec.rb
- qa/qa/specs/features/browser_ui/3_create/repository/push_mirroring_lfs_over_http_spec.rb
- qa/qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_http_spec.rb
- qa/qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_ssh_with_key_spec.rb
- spec/controllers/abuse_reports_controller_spec.rb
- spec/controllers/boards/issues_controller_spec.rb
- spec/controllers/sent_notifications_controller_spec.rb
- spec/controllers/sessions_controller_spec.rb
- spec/lib/backup/manager_spec.rb
- spec/lib/gitlab/alerting/alert_spec.rb
- spec/lib/gitlab/analytics/cycle_analytics/records_fetcher_spec.rb
- spec/lib/gitlab/auth/ldap/user_spec.rb
- spec/lib/gitlab/auth/o_auth/user_spec.rb
- spec/lib/gitlab/auth/saml/user_spec.rb
- spec/lib/gitlab/auth_spec.rb
- spec/lib/gitlab/authorized_keys_spec.rb
- spec/lib/gitlab/bitbucket_server_import/importer_spec.rb
- spec/lib/gitlab/cycle_analytics/base_event_fetcher_spec.rb
- spec/lib/gitlab/database/custom_structure_spec.rb
- spec/lib/gitlab/database/partitioning_migration_helpers/table_management_helpers_spec.rb
- spec/lib/gitlab/database_importers/self_monitoring/project/create_service_spec.rb
- spec/lib/gitlab/gfm/reference_rewriter_spec.rb
- spec/lib/gitlab/git_access_spec.rb
- spec/lib/gitlab/import_export/avatar_saver_spec.rb
- spec/lib/gitlab/import_export/base/relation_factory_spec.rb
- spec/lib/gitlab/import_export/design_repo_restorer_spec.rb
- spec/lib/gitlab/import_export/fast_hash_serializer_spec.rb
- spec/lib/gitlab/import_export/fork_spec.rb
- spec/lib/gitlab/import_export/group/legacy_tree_saver_spec.rb
- spec/lib/gitlab/import_export/group/relation_factory_spec.rb
- spec/lib/gitlab/import_export/group/tree_saver_spec.rb
- spec/lib/gitlab/import_export/importer_spec.rb
- spec/lib/gitlab/import_export/lfs_restorer_spec.rb
- spec/lib/gitlab/import_export/lfs_saver_spec.rb
- spec/lib/gitlab/import_export/members_mapper_spec.rb
- spec/lib/gitlab/import_export/project/relation_factory_spec.rb
- spec/lib/gitlab/import_export/project/tree_restorer_spec.rb
- spec/lib/gitlab/import_export/project/tree_saver_spec.rb
- spec/lib/gitlab/import_export/repo_restorer_spec.rb
- spec/lib/gitlab/import_export/saver_spec.rb
- spec/lib/gitlab/import_export/snippet_repo_restorer_spec.rb
- spec/lib/gitlab/import_export/snippet_repo_saver_spec.rb
- spec/lib/gitlab/import_export/snippets_repo_restorer_spec.rb
- spec/lib/gitlab/import_export/snippets_repo_saver_spec.rb
- spec/lib/gitlab/import_export/uploads_manager_spec.rb
- spec/lib/gitlab/import_export/uploads_saver_spec.rb
- spec/lib/gitlab/import_export/wiki_restorer_spec.rb
- spec/lib/gitlab/lets_encrypt/client_spec.rb
- spec/lib/gitlab/middleware/go_spec.rb
- spec/lib/gitlab/shard_health_cache_spec.rb
- spec/mailers/notify_spec.rb

View file

@ -0,0 +1,154 @@
---
Rails/TimeZone:
Enabled: true
Exclude:
- lib/gitlab/popen.rb
- ee/lib/delay.rb
- ee/lib/gitlab/elastic/helper.rb
- ee/lib/gitlab/elastic/indexer.rb
- ee/lib/gitlab/geo/base_request.rb
- ee/lib/gitlab/geo/event_gap_tracking.rb
- ee/lib/gitlab/geo/log_cursor/events/design_repository_updated_event.rb
- ee/lib/gitlab/geo/log_cursor/events/repository_updated_event.rb
- ee/lib/gitlab/geo/log_cursor/logger.rb
- ee/lib/gitlab/geo/oauth/login_state.rb
- ee/lib/gitlab/prometheus/queries/cluster_query.rb
- ee/lib/gitlab/prometheus/queries/packet_flow_query.rb
- ee/spec/lib/ee/gitlab/checks/push_rules/commit_check_spec.rb
- ee/spec/lib/ee/gitlab/ci/pipeline/quota/job_activity_spec.rb
- ee/spec/lib/gitlab/analytics/cycle_analytics/data_collector_spec.rb
- ee/spec/lib/gitlab/analytics/cycle_analytics/summary/group/stage_summary_spec.rb
- ee/spec/lib/gitlab/analytics/cycle_analytics/summary/group/stage_time_summary_spec.rb
- ee/spec/lib/gitlab/auth/ldap/access_spec.rb
- ee/spec/lib/gitlab/auth/smartcard/san_extension_spec.rb
- ee/spec/lib/gitlab/auth/smartcard/session_spec.rb
- ee/spec/lib/gitlab/background_migration/fix_orphan_promoted_issues_spec.rb
- ee/spec/lib/gitlab/ci/pipeline/chain/limit/job_activity_spec.rb
- ee/spec/lib/gitlab/elastic/client_spec.rb
- ee/spec/lib/gitlab/geo/base_request_spec.rb
- ee/spec/lib/gitlab/geo/log_cursor/events/cache_invalidation_event_spec.rb
- ee/spec/lib/gitlab/geo/log_cursor/events/container_repository_updated_event_spec.rb
- ee/spec/lib/gitlab/geo/log_cursor/events/design_repository_updated_event_spec.rb
- ee/spec/lib/gitlab/geo/log_cursor/events/event_spec.rb
- ee/spec/lib/gitlab/geo/log_cursor/events/hashed_storage_attachments_event_spec.rb
- ee/spec/lib/gitlab/geo/log_cursor/events/hashed_storage_migrated_event_spec.rb
- ee/spec/lib/gitlab/geo/log_cursor/events/job_artifact_deleted_event_spec.rb
- ee/spec/lib/gitlab/geo/log_cursor/events/lfs_object_deleted_event_spec.rb
- ee/spec/lib/gitlab/geo/log_cursor/events/repositories_changed_event_spec.rb
- ee/spec/lib/gitlab/geo/log_cursor/events/repository_created_event_spec.rb
- ee/spec/lib/gitlab/geo/log_cursor/events/repository_deleted_event_spec.rb
- ee/spec/lib/gitlab/geo/log_cursor/events/repository_renamed_event_spec.rb
- ee/spec/lib/gitlab/geo/log_cursor/events/repository_updated_event_spec.rb
- ee/spec/lib/gitlab/geo/log_cursor/events/reset_checksum_event_spec.rb
- ee/spec/lib/gitlab/geo/log_cursor/logger_spec.rb
- ee/spec/lib/gitlab/git_access_spec.rb
- ee/spec/lib/gitlab/prometheus/queries/additional_metrics_deployment_query_spec.rb
- ee/spec/lib/gitlab/prometheus/queries/cluster_query_spec.rb
- ee/spec/lib/gitlab/prometheus/queries/packet_flow_query_spec.rb
- lib/api/helpers.rb
- lib/api/sidekiq_metrics.rb
- lib/backup/manager.rb
- lib/bitbucket_server/representation/base.rb
- lib/gitlab/auth/current_user_mode.rb
- lib/gitlab/auth/ldap/access.rb
- lib/gitlab/chaos.rb
- lib/gitlab/checks/timed_logger.rb
- lib/gitlab/ci/ansi2json/line.rb
- lib/gitlab/ci/pipeline/chain/sequence.rb
- lib/gitlab/ci/pipeline/duration.rb
- lib/gitlab/cycle_analytics/summary/deployment_frequency.rb
- lib/gitlab/database.rb
- lib/gitlab/external_authorization/access.rb
- lib/gitlab/external_authorization/cache.rb
- lib/gitlab/gitaly_client.rb
- lib/gitlab/gitaly_client/ref_service.rb
- lib/gitlab/github_import/representation.rb
- lib/gitlab/grape_logging/loggers/queue_duration_logger.rb
- lib/gitlab/health_checks/base_abstract_check.rb
- lib/gitlab/import_export.rb
- lib/gitlab/instrumentation/elasticsearch_transport.rb
- lib/gitlab/instrumentation/redis_interceptor.rb
- lib/gitlab/instrumentation_helper.rb
- lib/gitlab/kubernetes/helm/certificate.rb
- lib/gitlab/lfs_token.rb
- lib/gitlab/loop_helpers.rb
- lib/gitlab/phabricator_import/representation/task.rb
- lib/gitlab/prometheus/queries/additional_metrics_environment_query.rb
- lib/gitlab/prometheus/queries/matched_metric_query.rb
- lib/gitlab/prometheus_client.rb
- lib/gitlab/sherlock/transaction.rb
- lib/gitlab/task_helpers.rb
- lib/gitlab/x509/tag.rb
- lib/grafana/time_window.rb
- lib/json_web_token/token.rb
- lib/object_storage/direct_upload.rb
- lib/quality/seeders/issues.rb
- tooling/rspec_flaky/flaky_example.rb
- tooling/rspec_flaky/report.rb
- lib/tasks/gitlab/assets.rake
- lib/tasks/gitlab/backup.rake
- lib/tasks/gitlab/cleanup.rake
- lib/tasks/gitlab/list_repos.rake
- spec/lib/api/helpers_spec.rb
- spec/lib/gitlab/analytics/cycle_analytics/base_query_builder_spec.rb
- spec/lib/gitlab/app_json_logger_spec.rb
- spec/lib/gitlab/app_text_logger_spec.rb
- spec/lib/gitlab/auth/current_user_mode_spec.rb
- spec/lib/gitlab/background_migration/recalculate_project_authorizations_spec.rb
- spec/lib/gitlab/background_migration/wrongfully_confirmed_email_unconfirmer_spec.rb
- spec/lib/gitlab/bitbucket_import/importer_spec.rb
- spec/lib/gitlab/bitbucket_server_import/importer_spec.rb
- spec/lib/gitlab/checks/timed_logger_spec.rb
- spec/lib/gitlab/ci/cron_parser_spec.rb
- spec/lib/gitlab/cycle_analytics/stage_summary_spec.rb
- spec/lib/gitlab/cycle_analytics/usage_data_spec.rb
- spec/lib/gitlab/data_builder/note_spec.rb
- spec/lib/gitlab/database/background_migration_job_spec.rb
- spec/lib/gitlab/database_spec.rb
- spec/lib/gitlab/discussions_diff/file_collection_spec.rb
- spec/lib/gitlab/external_authorization/access_spec.rb
- spec/lib/gitlab/external_authorization/cache_spec.rb
- spec/lib/gitlab/external_authorization/logger_spec.rb
- spec/lib/gitlab/fogbugz_import/importer_spec.rb
- spec/lib/gitlab/git/branch_spec.rb
- spec/lib/gitlab/git/commit_spec.rb
- spec/lib/gitlab/git/repository_spec.rb
- spec/lib/gitlab/git_access_spec.rb
- spec/lib/gitlab/github_import/importer/diff_note_importer_spec.rb
- spec/lib/gitlab/github_import/importer/issue_importer_spec.rb
- spec/lib/gitlab/github_import/importer/issues_importer_spec.rb
- spec/lib/gitlab/github_import/importer/milestones_importer_spec.rb
- spec/lib/gitlab/github_import/importer/note_importer_spec.rb
- spec/lib/gitlab/github_import/importer/pull_request_importer_spec.rb
- spec/lib/gitlab/github_import/importer/releases_importer_spec.rb
- spec/lib/gitlab/github_import/representation/diff_note_spec.rb
- spec/lib/gitlab/github_import/representation/issue_spec.rb
- spec/lib/gitlab/github_import/representation/note_spec.rb
- spec/lib/gitlab/github_import/representation/pull_request_spec.rb
- spec/lib/gitlab/grape_logging/formatters/lograge_with_timestamp_spec.rb
- spec/lib/gitlab/grape_logging/loggers/cloudflare_logger_spec.rb
- spec/lib/gitlab/grape_logging/loggers/queue_duration_logger_spec.rb
- spec/lib/gitlab/graphql_logger_spec.rb
- spec/lib/gitlab/graphs/commits_spec.rb
- spec/lib/gitlab/import_export/project/relation_factory_spec.rb
- spec/lib/gitlab/json_logger_spec.rb
- spec/lib/gitlab/lfs_token_spec.rb
- spec/lib/gitlab/log_timestamp_formatter_spec.rb
- spec/lib/gitlab/middleware/rails_queue_duration_spec.rb
- spec/lib/gitlab/omniauth_logging/json_formatter_spec.rb
- spec/lib/gitlab/phabricator_import/issues/task_importer_spec.rb
- spec/lib/gitlab/phabricator_import/representation/task_spec.rb
- spec/lib/gitlab/prometheus/queries/additional_metrics_deployment_query_spec.rb
- spec/lib/gitlab/prometheus/queries/deployment_query_spec.rb
- spec/lib/gitlab/prometheus/queries/validate_query_spec.rb
- spec/lib/gitlab/sherlock/transaction_spec.rb
- spec/lib/gitlab/sidekiq_logging/json_formatter_spec.rb
- spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/strategies/until_executing_spec.rb
- spec/lib/gitlab/updated_notes_paginator_spec.rb
- spec/lib/gitlab/utils/json_size_estimator_spec.rb
- spec/lib/gitlab/x509/signature_spec.rb
- spec/lib/grafana/time_window_spec.rb
- spec/lib/json_web_token/hmac_token_spec.rb
- spec/tooling/rspec_flaky/flaky_example_spec.rb
- spec/tooling/rspec_flaky/listener_spec.rb
- spec/tooling/rspec_flaky/report_spec.rb

View file

@ -0,0 +1,508 @@
---
RSpec/AnyInstanceOf:
Exclude:
- ee/spec/controllers/admin/geo/nodes_controller_spec.rb
- ee/spec/controllers/ee/groups_controller_spec.rb
- ee/spec/controllers/groups/analytics/productivity_analytics_controller_spec.rb
- ee/spec/controllers/groups/epics/notes_controller_spec.rb
- ee/spec/controllers/groups/omniauth_callbacks_controller_spec.rb
- ee/spec/controllers/oauth/geo_auth_controller_spec.rb
- ee/spec/controllers/projects/environments_controller_spec.rb
- ee/spec/controllers/projects/integrations/jira/issues_controller_spec.rb
- ee/spec/controllers/projects/merge_requests_controller_spec.rb
- ee/spec/controllers/projects/path_locks_controller_spec.rb
- ee/spec/controllers/projects_controller_spec.rb
- ee/spec/controllers/subscriptions_controller_spec.rb
- ee/spec/controllers/trials_controller_spec.rb
- ee/spec/features/admin/admin_audit_logs_spec.rb
- ee/spec/features/admin/admin_reset_pipeline_minutes_spec.rb
- ee/spec/features/admin/admin_users_spec.rb
- ee/spec/features/boards/scoped_issue_board_spec.rb
- ee/spec/features/ci_shared_runner_warnings_spec.rb
- ee/spec/features/groups/group_settings_spec.rb
- ee/spec/features/groups/navbar_spec.rb
- ee/spec/features/groups/saml_providers_spec.rb
- ee/spec/features/issues/form_spec.rb
- ee/spec/features/merge_request/user_creates_merge_request_spec.rb
- ee/spec/features/projects/new_project_spec.rb
- ee/spec/features/registrations/welcome_spec.rb
- ee/spec/features/security/project/internal_access_spec.rb
- ee/spec/features/security/project/private_access_spec.rb
- ee/spec/features/security/project/public_access_spec.rb
- ee/spec/features/trials/capture_lead_spec.rb
- ee/spec/features/trials/select_namespace_spec.rb
- ee/spec/features/users/login_spec.rb
- ee/spec/graphql/mutations/dast_on_demand_scans/create_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/helpers/application_helper_spec.rb
- ee/spec/lib/ee/api/helpers_spec.rb
- ee/spec/lib/ee/gitlab/auth/ldap/sync/group_spec.rb
- ee/spec/lib/ee/gitlab/checks/push_rule_check_spec.rb
- ee/spec/lib/ee/gitlab/checks/push_rules/commit_check_spec.rb
- ee/spec/lib/gitlab/auth/group_saml/membership_enforcer_spec.rb
- ee/spec/lib/gitlab/auth/ldap/access_spec.rb
- ee/spec/lib/gitlab/ci/templates/Jobs/browser_performance_testing_gitlab_ci_yaml_spec.rb
- ee/spec/lib/gitlab/ci/templates/Jobs/dast_default_branch_gitlab_ci_yaml_spec.rb
- ee/spec/lib/gitlab/ci/templates/Jobs/load_performance_testing_gitlab_ci_yaml_spec.rb
- ee/spec/lib/gitlab/ci/templates/Verify/browser_performance_testing_gitlab_ci_yaml_spec.rb
- ee/spec/lib/gitlab/ci/templates/Verify/load_performance_testing_gitlab_ci_yaml_spec.rb
- ee/spec/lib/gitlab/ci/templates/api_fuzzing_gitlab_ci_yaml_spec.rb
- ee/spec/lib/gitlab/ci/templates/container_scanning_gitlab_ci_yaml_spec.rb
- ee/spec/lib/gitlab/ci/templates/coverage_fuzzing_gitlab_ci_yaml_spec.rb
- ee/spec/lib/gitlab/ci/templates/dast_gitlab_ci_yaml_spec.rb
- ee/spec/lib/gitlab/ci/templates/dependency_scanning_gitlab_ci_yaml_spec.rb
- ee/spec/lib/gitlab/ci/templates/license_scanning_gitlab_ci_yaml_spec.rb
- ee/spec/lib/gitlab/ci/templates/sast_gitlab_ci_yaml_spec.rb
- ee/spec/lib/gitlab/elastic/project_search_results_spec.rb
- ee/spec/lib/gitlab/expiring_subscription_message_spec.rb
- ee/spec/lib/gitlab/geo/log_cursor/daemon_spec.rb
- ee/spec/lib/gitlab/legacy_github_import/project_creator_spec.rb
- ee/spec/lib/omni_auth/strategies/group_saml_spec.rb
- ee/spec/lib/security/ci_configuration/sast_build_actions_spec.rb
- ee/spec/lib/system_check/geo/geo_database_configured_check_spec.rb
- ee/spec/migrations/schedule_populate_resolved_on_default_branch_column_spec.rb
- ee/spec/migrations/update_location_fingerprint_column_for_cs_spec.rb
- ee/spec/migrations/update_occurrence_severity_column_spec.rb
- ee/spec/migrations/update_undefined_confidence_from_occurrences_spec.rb
- ee/spec/migrations/update_undefined_confidence_from_vulnerabilities_spec.rb
- ee/spec/migrations/update_vulnerability_severity_column_spec.rb
- ee/spec/models/ee/namespace_spec.rb
- ee/spec/models/geo_node_status_spec.rb
- ee/spec/models/issue_spec.rb
- ee/spec/models/merge_request_spec.rb
- ee/spec/models/project_import_state_spec.rb
- ee/spec/models/push_rule_spec.rb
- ee/spec/presenters/ci/pipeline_presenter_spec.rb
- ee/spec/presenters/projects/security/configuration_presenter_spec.rb
- ee/spec/requests/api/geo_nodes_spec.rb
- ee/spec/requests/api/graphql/mutations/dast_on_demand_scans/create_spec.rb
- ee/spec/requests/api/graphql/mutations/dast_site_profiles/delete_spec.rb
- ee/spec/requests/api/graphql/mutations/pipelines/run_dast_scan_spec.rb
- ee/spec/requests/api/issues_spec.rb
- ee/spec/requests/api/projects_spec.rb
- ee/spec/requests/git_http_spec.rb
- ee/spec/requests/groups_controller_spec.rb
- ee/spec/requests/omniauth_kerberos_spnego_spec.rb
- ee/spec/requests/repositories/git_http_controller_spec.rb
- ee/spec/services/alert_management/network_alert_service_spec.rb
- ee/spec/services/ci/expire_pipeline_cache_service_spec.rb
- ee/spec/services/ci/run_dast_scan_service_spec.rb
- ee/spec/services/ee/git/branch_push_service_spec.rb
- ee/spec/services/ee/merge_requests/create_from_vulnerability_data_service_spec.rb
- ee/spec/services/ee/merge_requests/refresh_service_spec.rb
- ee/spec/services/ee/security/ingress_modsecurity_usage_service_spec.rb
- ee/spec/services/ee/users/create_service_spec.rb
- ee/spec/services/ee/users/destroy_service_spec.rb
- ee/spec/services/geo/container_repository_sync_service_spec.rb
- ee/spec/services/geo/design_repository_sync_service_spec.rb
- ee/spec/services/geo/framework_repository_sync_service_spec.rb
- ee/spec/services/geo/hashed_storage_migration_service_spec.rb
- ee/spec/services/geo/metrics_update_service_spec.rb
- ee/spec/services/geo/move_repository_service_spec.rb
- ee/spec/services/geo/project_housekeeping_service_spec.rb
- ee/spec/services/geo/rename_repository_service_spec.rb
- ee/spec/services/geo/repository_destroy_service_spec.rb
- ee/spec/services/geo/repository_sync_service_spec.rb
- ee/spec/services/geo/wiki_sync_service_spec.rb
- ee/spec/services/groups/destroy_service_spec.rb
- ee/spec/services/groups/update_service_spec.rb
- ee/spec/services/merge_trains/check_status_service_spec.rb
- ee/spec/services/network_policies/resources_service_spec.rb
- ee/spec/services/projects/destroy_service_spec.rb
- ee/spec/services/projects/group_links/destroy_service_spec.rb
- ee/spec/services/projects/update_service_spec.rb
- ee/spec/services/slash_commands/global_slack_handler_spec.rb
- ee/spec/support/helpers/ee/stub_configuration.rb
- ee/spec/support/shared_examples/controllers/analytics/cycle_analytics/shared_stage_shared_examples.rb
- ee/spec/support/shared_examples/features/ultimate_trial_callout_shared_examples.rb
- ee/spec/support/shared_examples/lib/gitlab/geo/geo_logs_event_source_info_shared_examples.rb
- ee/spec/support/shared_examples/models/member_shared_examples.rb
- ee/spec/support/shared_examples/services/base_sync_service_shared_examples.rb
- ee/spec/support/shared_examples/services/geo/geo_request_service_shared_examples.rb
- ee/spec/workers/build_finished_worker_spec.rb
- ee/spec/workers/concerns/elastic/indexing_control_spec.rb
- ee/spec/workers/elastic_commit_indexer_worker_spec.rb
- ee/spec/workers/geo/design_repository_shard_sync_worker_spec.rb
- ee/spec/workers/geo/file_download_dispatch_worker_spec.rb
- ee/spec/workers/geo/registry_sync_worker_spec.rb
- ee/spec/workers/geo/repository_cleanup_worker_spec.rb
- ee/spec/workers/geo/repository_shard_sync_worker_spec.rb
- ee/spec/workers/project_cache_worker_spec.rb
- ee/spec/workers/repository_import_worker_spec.rb
- ee/spec/workers/vulnerability_exports/export_deletion_worker_spec.rb
- qa/spec/runtime/release_spec.rb
- spec/controllers/admin/sessions_controller_spec.rb
- spec/controllers/application_controller_spec.rb
- spec/controllers/concerns/issuable_actions_spec.rb
- spec/controllers/concerns/static_object_external_storage_spec.rb
- spec/controllers/explore/projects_controller_spec.rb
- spec/controllers/groups/clusters_controller_spec.rb
- spec/controllers/groups/settings/ci_cd_controller_spec.rb
- spec/controllers/groups_controller_spec.rb
- spec/controllers/import/bitbucket_controller_spec.rb
- spec/controllers/oauth/jira/authorizations_controller_spec.rb
- spec/controllers/omniauth_callbacks_controller_spec.rb
- spec/controllers/projects/artifacts_controller_spec.rb
- spec/controllers/projects/branches_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/environments_controller_spec.rb
- spec/controllers/projects/imports_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/pipelines_controller_spec.rb
- spec/controllers/projects/service_hook_logs_controller_spec.rb
- spec/controllers/projects/services_controller_spec.rb
- spec/controllers/projects/tags_controller_spec.rb
- spec/controllers/registrations/experience_levels_controller_spec.rb
- spec/controllers/registrations_controller_spec.rb
- spec/controllers/sessions_controller_spec.rb
- spec/controllers/snippets/notes_controller_spec.rb
- spec/controllers/snippets_controller_spec.rb
- spec/features/admin/admin_mode/login_spec.rb
- spec/features/groups/clusters/eks_spec.rb
- spec/features/groups/members/tabs_spec.rb
- spec/features/ide/static_object_external_storage_csp_spec.rb
- spec/features/issuables/issuable_list_spec.rb
- spec/features/issues/form_spec.rb
- spec/features/merge_request/user_creates_image_diff_notes_spec.rb
- spec/features/merge_request/user_reviews_image_spec.rb
- spec/features/merge_request/user_sees_diff_spec.rb
- spec/features/merge_request/user_sees_merge_widget_spec.rb
- spec/features/profiles/personal_access_tokens_spec.rb
- spec/features/projects/clusters/gcp_spec.rb
- spec/features/projects/clusters_spec.rb
- spec/features/projects/container_registry_spec.rb
- spec/features/projects/files/user_browses_lfs_files_spec.rb
- spec/features/projects/jobs_spec.rb
- spec/features/projects/navbar_spec.rb
- spec/features/projects/pages_spec.rb
- spec/features/projects/services/user_activates_mattermost_slash_command_spec.rb
- spec/features/projects/settings/service_desk_setting_spec.rb
- spec/features/projects/show/user_sees_setup_shortcut_buttons_spec.rb
- spec/features/snippets/embedded_snippet_spec.rb
- spec/features/usage_stats_consent_spec.rb
- spec/finders/prometheus_metrics_finder_spec.rb
- spec/graphql/mutations/alert_management/create_alert_issue_spec.rb
- spec/graphql/mutations/alert_management/http_integration/create_spec.rb
- spec/graphql/mutations/alert_management/http_integration/destroy_spec.rb
- spec/graphql/mutations/alert_management/http_integration/reset_token_spec.rb
- spec/graphql/mutations/alert_management/http_integration/update_spec.rb
- spec/graphql/mutations/alert_management/prometheus_integration/create_spec.rb
- spec/graphql/mutations/alert_management/prometheus_integration/reset_token_spec.rb
- spec/graphql/mutations/alert_management/prometheus_integration/update_spec.rb
- spec/helpers/analytics/unique_visits_helper_spec.rb
- spec/helpers/projects_helper_spec.rb
- spec/initializers/lograge_spec.rb
- spec/lib/api/entities/merge_request_basic_spec.rb
- spec/lib/api/entities/merge_request_changes_spec.rb
- spec/lib/api/helpers_spec.rb
- spec/lib/backup/files_spec.rb
- spec/lib/backup/manager_spec.rb
- spec/lib/banzai/commit_renderer_spec.rb
- spec/lib/banzai/filter/references/external_issue_reference_filter_spec.rb
- spec/lib/banzai/filter/references/issue_reference_filter_spec.rb
- spec/lib/banzai/filter/repository_link_filter_spec.rb
- spec/lib/banzai/pipeline/gfm_pipeline_spec.rb
- spec/lib/extracts_ref_spec.rb
- spec/lib/feature_spec.rb
- spec/lib/gitlab/app_logger_spec.rb
- spec/lib/gitlab/asciidoc_spec.rb
- spec/lib/gitlab/auth/auth_finders_spec.rb
- spec/lib/gitlab/auth/blocked_user_tracker_spec.rb
- spec/lib/gitlab/auth/request_authenticator_spec.rb
- spec/lib/gitlab/auth_spec.rb
- spec/lib/gitlab/background_migration/populate_personal_snippet_statistics_spec.rb
- spec/lib/gitlab/background_migration/populate_project_snippet_statistics_spec.rb
- spec/lib/gitlab/checks/diff_check_spec.rb
- spec/lib/gitlab/checks/lfs_check_spec.rb
- spec/lib/gitlab/checks/lfs_integrity_spec.rb
- spec/lib/gitlab/ci/config/external/file/base_spec.rb
- spec/lib/gitlab/ci/config/external/file/local_spec.rb
- spec/lib/gitlab/ci/config/external/processor_spec.rb
- spec/lib/gitlab/ci/pipeline/chain/build_spec.rb
- spec/lib/gitlab/ci/pipeline/chain/command_spec.rb
- spec/lib/gitlab/ci/templates/AWS/deploy_ecs_gitlab_ci_yaml_spec.rb
- spec/lib/gitlab/ci/templates/Jobs/build_gitlab_ci_yaml_spec.rb
- spec/lib/gitlab/ci/templates/Jobs/code_quality_gitlab_ci_yaml_spec.rb
- spec/lib/gitlab/ci/templates/Jobs/deploy_gitlab_ci_yaml_spec.rb
- spec/lib/gitlab/ci/templates/Jobs/test_gitlab_ci_yaml_spec.rb
- spec/lib/gitlab/ci/templates/Terraform/base_gitlab_ci_yaml_spec.rb
- spec/lib/gitlab/ci/templates/Verify/load_performance_testing_gitlab_ci_yaml_spec.rb
- spec/lib/gitlab/ci/templates/auto_devops_gitlab_ci_yaml_spec.rb
- spec/lib/gitlab/ci/templates/npm_spec.rb
- spec/lib/gitlab/ci/templates/terraform_latest_gitlab_ci_yaml_spec.rb
- spec/lib/gitlab/ci/trace_spec.rb
- spec/lib/gitlab/current_settings_spec.rb
- spec/lib/gitlab/cycle_analytics/base_event_fetcher_spec.rb
- spec/lib/gitlab/database/multi_threaded_migration_spec.rb
- spec/lib/gitlab/diff/highlight_cache_spec.rb
- spec/lib/gitlab/diff/highlight_spec.rb
- spec/lib/gitlab/diff/position_spec.rb
- spec/lib/gitlab/email/handler/create_issue_handler_spec.rb
- spec/lib/gitlab/email/handler/create_note_handler_spec.rb
- spec/lib/gitlab/etag_caching/middleware_spec.rb
- spec/lib/gitlab/exclusive_lease_helpers_spec.rb
- spec/lib/gitlab/fogbugz_import/importer_spec.rb
- spec/lib/gitlab/gfm/reference_rewriter_spec.rb
- spec/lib/gitlab/git/repository_spec.rb
- spec/lib/gitlab/gitaly_client/blob_service_spec.rb
- spec/lib/gitlab/gitaly_client/commit_service_spec.rb
- spec/lib/gitlab/gitaly_client/conflicts_service_spec.rb
- spec/lib/gitlab/gitaly_client/health_check_service_spec.rb
- spec/lib/gitlab/gitaly_client/operation_service_spec.rb
- spec/lib/gitlab/gitaly_client/praefect_info_service_spec.rb
- spec/lib/gitlab/gitaly_client/ref_service_spec.rb
- spec/lib/gitlab/gitaly_client/remote_service_spec.rb
- spec/lib/gitlab/gitaly_client/repository_service_spec.rb
- spec/lib/gitlab/gitaly_client/wiki_service_spec.rb
- spec/lib/gitlab/github_import/importer/pull_request_importer_spec.rb
- spec/lib/gitlab/gpg/invalid_gpg_signature_updater_spec.rb
- spec/lib/gitlab/hashed_storage/migrator_spec.rb
- spec/lib/gitlab/import/merge_request_helpers_spec.rb
- spec/lib/gitlab/import_export/config_spec.rb
- spec/lib/gitlab/import_export/fast_hash_serializer_spec.rb
- spec/lib/gitlab/import_export/importer_spec.rb
- spec/lib/gitlab/import_export/lfs_restorer_spec.rb
- spec/lib/gitlab/import_export/project/tree_restorer_spec.rb
- spec/lib/gitlab/import_export/snippet_repo_restorer_spec.rb
- spec/lib/gitlab/import_export/snippets_repo_restorer_spec.rb
- spec/lib/gitlab/import_export/version_checker_spec.rb
- spec/lib/gitlab/job_waiter_spec.rb
- spec/lib/gitlab/legacy_github_import/importer_spec.rb
- spec/lib/gitlab/legacy_github_import/project_creator_spec.rb
- spec/lib/gitlab/metrics/exporter/base_exporter_spec.rb
- spec/lib/gitlab/metrics/rack_middleware_spec.rb
- spec/lib/gitlab/metrics/subscribers/active_record_spec.rb
- spec/lib/gitlab/metrics_spec.rb
- spec/lib/gitlab/patch/action_dispatch_journey_formatter_spec.rb
- spec/lib/gitlab/sidekiq_daemon/monitor_spec.rb
- spec/lib/gitlab/sidekiq_middleware_spec.rb
- spec/lib/gitlab/tracking/destinations/product_analytics_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
- spec/lib/gitlab/x509/commit_spec.rb
- spec/lib/gitlab/x509/signature_spec.rb
- spec/lib/google_api/cloud_platform/client_spec.rb
- spec/lib/json_web_token/rsa_token_spec.rb
- spec/lib/mattermost/command_spec.rb
- spec/lib/mattermost/team_spec.rb
- spec/lib/system_check/simple_executor_spec.rb
- spec/models/ci/build_spec.rb
- spec/models/ci/runner_spec.rb
- spec/models/commit_spec.rb
- spec/models/environment_spec.rb
- spec/models/group_spec.rb
- spec/models/hooks/service_hook_spec.rb
- spec/models/hooks/system_hook_spec.rb
- spec/models/hooks/web_hook_spec.rb
- spec/models/integrations/jira_spec.rb
- spec/models/integrations/mattermost_slash_commands_spec.rb
- spec/models/issue_spec.rb
- spec/models/key_spec.rb
- spec/models/member_spec.rb
- spec/models/merge_request_diff_spec.rb
- spec/models/merge_request_spec.rb
- spec/models/note_spec.rb
- spec/models/project_import_state_spec.rb
- spec/models/project_spec.rb
- spec/models/repository_spec.rb
- spec/models/user_spec.rb
- spec/models/x509_certificate_spec.rb
- spec/policies/ci/build_policy_spec.rb
- spec/policies/ci/pipeline_policy_spec.rb
- spec/presenters/gitlab/blame_presenter_spec.rb
- spec/presenters/merge_request_presenter_spec.rb
- spec/requests/api/ci/runner/jobs_artifacts_spec.rb
- spec/requests/api/ci/runner/jobs_put_spec.rb
- spec/requests/api/ci/runner/jobs_request_post_spec.rb
- spec/requests/api/ci/runner/jobs_trace_spec.rb
- spec/requests/api/ci/runner/runners_delete_spec.rb
- spec/requests/api/ci/runner/runners_post_spec.rb
- spec/requests/api/ci/runner/runners_verify_post_spec.rb
- spec/requests/api/graphql/gitlab_schema_spec.rb
- spec/requests/api/graphql/project/error_tracking/sentry_detailed_error_request_spec.rb
- spec/requests/api/graphql_spec.rb
- spec/requests/api/helpers_spec.rb
- spec/requests/api/internal/base_spec.rb
- spec/requests/api/maven_packages_spec.rb
- spec/requests/api/merge_requests_spec.rb
- spec/requests/api/pages/pages_spec.rb
- spec/requests/api/project_export_spec.rb
- spec/requests/api/project_import_spec.rb
- spec/requests/api/projects_spec.rb
- spec/requests/api/snippets_spec.rb
- spec/requests/api/todos_spec.rb
- spec/requests/git_http_spec.rb
- spec/requests/import/gitlab_projects_controller_spec.rb
- spec/routing/routing_spec.rb
- spec/serializers/analytics_stage_serializer_spec.rb
- spec/serializers/merge_request_poll_cached_widget_entity_spec.rb
- spec/serializers/merge_request_poll_widget_entity_spec.rb
- spec/services/application_settings/update_service_spec.rb
- spec/services/auto_merge/merge_when_pipeline_succeeds_service_spec.rb
- spec/services/boards/lists/update_service_spec.rb
- spec/services/ci/create_pipeline_service_spec.rb
- spec/services/ci/destroy_expired_job_artifacts_service_spec.rb
- spec/services/ci/expire_pipeline_cache_service_spec.rb
- spec/services/ci/list_config_variables_service_spec.rb
- spec/services/ci/register_job_service_spec.rb
- spec/services/ci/resource_groups/assign_resource_from_resource_group_service_spec.rb
- spec/services/ci/retry_build_service_spec.rb
- spec/services/ci/retry_pipeline_service_spec.rb
- spec/services/ci/stop_environments_service_spec.rb
- spec/services/clusters/applications/create_service_spec.rb
- spec/services/clusters/cleanup/project_namespace_service_spec.rb
- spec/services/clusters/cleanup/service_account_service_spec.rb
- spec/services/deployments/older_deployments_drop_service_spec.rb
- spec/services/deployments/update_environment_service_spec.rb
- spec/services/draft_notes/destroy_service_spec.rb
- spec/services/events/render_service_spec.rb
- spec/services/git/branch_push_service_spec.rb
- spec/services/git/process_ref_changes_service_spec.rb
- spec/services/groups/create_service_spec.rb
- spec/services/groups/update_service_spec.rb
- spec/services/integrations/test/project_service_spec.rb
- spec/services/issuable/destroy_service_spec.rb
- spec/services/issues/close_service_spec.rb
- spec/services/issues/reopen_service_spec.rb
- spec/services/members/destroy_service_spec.rb
- spec/services/merge_requests/add_todo_when_build_fails_service_spec.rb
- spec/services/merge_requests/build_service_spec.rb
- spec/services/merge_requests/merge_service_spec.rb
- spec/services/merge_requests/mergeability_check_service_spec.rb
- spec/services/merge_requests/refresh_service_spec.rb
- spec/services/merge_requests/reload_diffs_service_spec.rb
- spec/services/merge_requests/resolved_discussion_notification_service_spec.rb
- spec/services/metrics/dashboard/custom_dashboard_service_spec.rb
- spec/services/metrics/dashboard/transient_embed_service_spec.rb
- spec/services/notes/create_service_spec.rb
- spec/services/notes/render_service_spec.rb
- spec/services/packages/conan/create_package_file_service_spec.rb
- spec/services/packages/nuget/metadata_extraction_service_spec.rb
- spec/services/packages/nuget/update_package_from_metadata_service_spec.rb
- spec/services/pages/delete_services_spec.rb
- spec/services/pod_logs/elasticsearch_service_spec.rb
- spec/services/pod_logs/kubernetes_service_spec.rb
- spec/services/post_receive_service_spec.rb
- spec/services/projects/after_rename_service_spec.rb
- spec/services/projects/container_repository/cleanup_tags_service_spec.rb
- spec/services/projects/container_repository/delete_tags_service_spec.rb
- spec/services/projects/container_repository/gitlab/delete_tags_service_spec.rb
- spec/services/projects/container_repository/third_party/delete_tags_service_spec.rb
- spec/services/projects/destroy_service_spec.rb
- spec/services/projects/fork_service_spec.rb
- spec/services/projects/import_service_spec.rb
- spec/services/projects/lfs_pointers/lfs_download_service_spec.rb
- spec/services/projects/lfs_pointers/lfs_object_download_list_service_spec.rb
- spec/services/projects/prometheus/alerts/notify_service_spec.rb
- spec/services/projects/transfer_service_spec.rb
- spec/services/projects/update_remote_mirror_service_spec.rb
- spec/services/projects/update_service_spec.rb
- spec/services/projects/update_statistics_service_spec.rb
- spec/services/resource_events/change_labels_service_spec.rb
- spec/services/search_service_spec.rb
- spec/services/snippets/create_service_spec.rb
- spec/services/test_hooks/project_service_spec.rb
- spec/services/test_hooks/system_service_spec.rb
- spec/services/todo_service_spec.rb
- spec/services/users/destroy_service_spec.rb
- spec/services/users/migrate_to_ghost_user_service_spec.rb
- spec/spec_helper.rb
- spec/support/capybara.rb
- spec/support/helpers/api_helpers.rb
- spec/support/helpers/graphql_helpers.rb
- spec/support/helpers/ldap_helpers.rb
- spec/support/helpers/login_helpers.rb
- spec/support/helpers/metrics_dashboard_url_helpers.rb
- spec/support/helpers/rake_helpers.rb
- spec/support/helpers/stub_configuration.rb
- spec/support/helpers/stub_gitlab_calls.rb
- spec/support/helpers/test_env.rb
- spec/support/import_export/common_util.rb
- spec/support/services/migrate_to_ghost_user_service_shared_examples.rb
- spec/support/shared_contexts/email_shared_context.rb
- spec/support/shared_contexts/services/projects/container_repository/delete_tags_service_shared_context.rb
- spec/support/shared_examples/controllers/githubish_import_controller_shared_examples.rb
- spec/support/shared_examples/controllers/issuable_notes_filter_shared_examples.rb
- spec/support/shared_examples/controllers/issuables_requiring_filter_shared_examples.rb
- spec/support/shared_examples/controllers/repository_lfs_file_load_shared_examples.rb
- spec/support/shared_examples/controllers/set_sort_order_from_user_preference_shared_examples.rb
- spec/support/shared_examples/controllers/unique_visits_shared_examples.rb
- spec/support/shared_examples/controllers/update_invalid_issuable_shared_examples.rb
- spec/support/shared_examples/controllers/uploads_actions_shared_examples.rb
- spec/support/shared_examples/features/archive_download_buttons_shared_examples.rb
- spec/support/shared_examples/features/snippets_shared_examples.rb
- spec/support/shared_examples/lib/gitlab/ci/ci_trace_shared_examples.rb
- spec/support/shared_examples/models/atomic_internal_id_shared_examples.rb
- spec/support/shared_examples/models/diff_note_after_commit_shared_examples.rb
- spec/support/shared_examples/models/integrations/base_slash_commands_shared_examples.rb
- spec/support/shared_examples/models/mentionable_shared_examples.rb
- spec/support/shared_examples/models/with_uploads_shared_examples.rb
- spec/support/shared_examples/path_extraction_shared_examples.rb
- spec/support/shared_examples/requests/api/discussions_shared_examples.rb
- spec/support/shared_examples/requests/api/snippets_shared_examples.rb
- spec/support/shared_examples/requests/rack_attack_shared_examples.rb
- spec/support/shared_examples/requests/snippet_shared_examples.rb
- spec/support/shared_examples/services/alert_management_shared_examples.rb
- spec/support/shared_examples/services/boards/boards_list_service_shared_examples.rb
- spec/support/shared_examples/services/boards/issues_list_service_shared_examples.rb
- spec/support/shared_examples/services/boards/issues_move_service_shared_examples.rb
- spec/support/shared_examples/services/issuable_shared_examples.rb
- spec/support/shared_examples/uploaders/object_storage_shared_examples.rb
- spec/support/shared_examples/workers/authorized_projects_worker_shared_example.rb
- spec/support/shared_examples/workers/reactive_cacheable_shared_examples.rb
- spec/support/snowplow.rb
- spec/tasks/gitlab/cleanup_rake_spec.rb
- spec/tasks/gitlab/container_registry_rake_spec.rb
- spec/tasks/gitlab/db_rake_spec.rb
- spec/tasks/gitlab/git_rake_spec.rb
- spec/tasks/gitlab/praefect_rake_spec.rb
- spec/tasks/gitlab/shell_rake_spec.rb
- spec/tasks/gitlab/x509/update_rake_spec.rb
- spec/uploaders/file_mover_spec.rb
- spec/uploaders/records_uploads_spec.rb
- spec/uploaders/workers/object_storage/migrate_uploads_worker_spec.rb
- spec/views/layouts/_head.html.haml_spec.rb
- spec/views/projects/artifacts/_artifact.html.haml_spec.rb
- spec/workers/archive_trace_worker_spec.rb
- spec/workers/build_coverage_worker_spec.rb
- spec/workers/build_hooks_worker_spec.rb
- spec/workers/build_trace_sections_worker_spec.rb
- spec/workers/ci/build_schedule_worker_spec.rb
- spec/workers/ci/daily_build_group_report_results_worker_spec.rb
- spec/workers/cluster_configure_istio_worker_spec.rb
- spec/workers/cluster_provision_worker_spec.rb
- spec/workers/clusters/cleanup/project_namespace_worker_spec.rb
- spec/workers/clusters/cleanup/service_account_worker_spec.rb
- spec/workers/concerns/project_import_options_spec.rb
- spec/workers/create_commit_signature_worker_spec.rb
- spec/workers/create_note_diff_file_worker_spec.rb
- spec/workers/delete_diff_files_worker_spec.rb
- spec/workers/email_receiver_worker_spec.rb
- spec/workers/emails_on_push_worker_spec.rb
- spec/workers/error_tracking_issue_link_worker_spec.rb
- spec/workers/expire_pipeline_cache_worker_spec.rb
- spec/workers/group_export_worker_spec.rb
- spec/workers/group_import_worker_spec.rb
- spec/workers/namespaceless_project_destroy_worker_spec.rb
- spec/workers/namespaces/root_statistics_worker_spec.rb
- spec/workers/new_note_worker_spec.rb
- spec/workers/object_pool/create_worker_spec.rb
- spec/workers/packages/nuget/extraction_worker_spec.rb
- spec/workers/pages_remove_worker_spec.rb
- spec/workers/pipeline_hooks_worker_spec.rb
- spec/workers/pipeline_process_worker_spec.rb
- spec/workers/pipeline_schedule_worker_spec.rb
- spec/workers/project_cache_worker_spec.rb
- spec/workers/stage_update_worker_spec.rb
- spec/workers/stuck_ci_jobs_worker_spec.rb
- spec/workers/wait_for_cluster_creation_worker_spec.rb
- ee/spec/workers/security/auto_fix_worker_spec.rb

View file

@ -0,0 +1,80 @@
---
RSpec/TimecopFreeze:
Exclude:
- ee/spec/controllers/admin/application_settings_controller_spec.rb
- ee/spec/controllers/projects/security/network_policies_controller_spec.rb
- ee/spec/features/admin/admin_reset_pipeline_minutes_spec.rb
- ee/spec/features/boards/sidebar_spec.rb
- ee/spec/features/groups/analytics/cycle_analytics/filters_and_data_spec.rb
- ee/spec/features/groups/iteration_spec.rb
- ee/spec/features/projects/mirror_spec.rb
- ee/spec/features/projects/services/prometheus_custom_metrics_spec.rb
- ee/spec/finders/productivity_analytics_finder_spec.rb
- ee/spec/frontend/fixtures/analytics.rb
- ee/spec/helpers/vulnerabilities_helper_spec.rb
- ee/spec/lib/analytics/merge_request_metrics_refresh_spec.rb
- ee/spec/lib/analytics/productivity_analytics_request_params_spec.rb
- ee/spec/lib/ee/gitlab/background_migration/populate_vulnerability_historical_statistics_spec.rb
- ee/spec/lib/gitlab/analytics/cycle_analytics/data_collector_spec.rb
- ee/spec/lib/gitlab/analytics/cycle_analytics/group_stage_time_summary_spec.rb
- ee/spec/lib/gitlab/analytics/cycle_analytics/summary/group/stage_time_summary_spec.rb
- ee/spec/lib/gitlab/analytics/type_of_work/tasks_by_type_spec.rb
- ee/spec/lib/gitlab/auth/group_saml/sso_enforcer_spec.rb
- ee/spec/lib/gitlab/geo/base_request_spec.rb
- ee/spec/lib/gitlab/geo/event_gap_tracking_spec.rb
- ee/spec/lib/gitlab/geo/git_push_http_spec.rb
- ee/spec/lib/gitlab/geo/log_cursor/daemon_spec.rb
- ee/spec/lib/gitlab/geo/log_cursor/events/repository_updated_event_spec.rb
- ee/spec/lib/gitlab/geo/oauth/login_state_spec.rb
- ee/spec/lib/gitlab/insights/reducers/count_per_period_reducer_spec.rb
- ee/spec/lib/gitlab/prometheus/queries/additional_metrics_environment_query_spec.rb
- ee/spec/lib/gitlab/prometheus/queries/cluster_query_spec.rb
- ee/spec/migrations/populate_vulnerability_historical_statistics_for_year_spec.rb
- ee/spec/migrations/remove_duplicated_cs_findings_spec.rb
- ee/spec/migrations/remove_duplicated_cs_findings_without_vulnerability_id_spec.rb
- ee/spec/migrations/schedule_fix_orphan_promoted_issues_spec.rb
- ee/spec/migrations/schedule_merge_request_any_approval_rule_migration_spec.rb
- ee/spec/migrations/schedule_populate_resolved_on_default_branch_column_spec.rb
- ee/spec/migrations/schedule_populate_vulnerability_historical_statistics_spec.rb
- ee/spec/migrations/schedule_project_any_approval_rule_migration_spec.rb
- ee/spec/migrations/set_resolved_state_on_vulnerabilities_spec.rb
- ee/spec/migrations/20190926180443_schedule_epic_issues_after_epics_move_spec.rb
- ee/spec/models/analytics/cycle_analytics/group_level_spec.rb
- ee/spec/models/burndown_spec.rb
- ee/spec/models/ee/namespace_spec.rb
- ee/spec/models/geo/project_registry_spec.rb
- ee/spec/models/merge_train_spec.rb
- ee/spec/models/productivity_analytics_spec.rb
- ee/spec/models/project_spec.rb
- ee/spec/models/vulnerabilities/export_spec.rb
- ee/spec/requests/api/vulnerabilities_spec.rb
- ee/spec/services/geo/file_download_service_spec.rb
- ee/spec/services/vulnerabilities/confirm_service_spec.rb
- ee/spec/services/vulnerabilities/dismiss_service_spec.rb
- ee/spec/services/vulnerabilities/resolve_service_spec.rb
- ee/spec/services/vulnerabilities/revert_to_detected_service_spec.rb
- ee/spec/services/vulnerability_exports/export_service_spec.rb
- ee/spec/support/shared_contexts/lib/gitlab/insights/reducers/reducers_shared_contexts.rb
- qa/spec/support/repeater_spec.rb
- spec/features/users/active_sessions_spec.rb
- spec/lib/gitlab/analytics/cycle_analytics/base_query_builder_spec.rb
- spec/lib/gitlab/analytics/cycle_analytics/median_spec.rb
- spec/lib/gitlab/analytics/cycle_analytics/records_fetcher_spec.rb
- spec/lib/gitlab/auth/unique_ips_limiter_spec.rb
- spec/lib/gitlab/checks/timed_logger_spec.rb
- spec/lib/gitlab/cycle_analytics/stage_summary_spec.rb
- spec/lib/gitlab/cycle_analytics/usage_data_spec.rb
- spec/lib/gitlab/omniauth_logging/json_formatter_spec.rb
- spec/lib/gitlab/puma_logging/json_formatter_spec.rb
- spec/lib/json_web_token/hmac_token_spec.rb
- spec/tooling/rspec_flaky/flaky_example_spec.rb
- spec/tooling/rspec_flaky/listener_spec.rb
- spec/models/active_session_spec.rb
- spec/serializers/entity_date_helper_spec.rb
- spec/support/cycle_analytics_helpers/test_generation.rb
- spec/support/helpers/cycle_analytics_helpers.rb
- spec/support/helpers/javascript_fixtures_helpers.rb
- spec/support/shared_contexts/rack_attack_shared_context.rb
- spec/support/shared_examples/workers/concerns/reenqueuer_shared_examples.rb
- spec/workers/concerns/reenqueuer_spec.rb
- spec/workers/metrics/dashboard/prune_old_annotations_worker_spec.rb

View file

@ -0,0 +1,21 @@
---
RSpec/TimecopTravel:
Exclude:
- ee/spec/lib/gitlab/geo/event_gap_tracking_spec.rb
- ee/spec/lib/gitlab/geo/git_push_http_spec.rb
- ee/spec/lib/gitlab/geo/jwt_request_decoder_spec.rb
- ee/spec/lib/gitlab/geo/log_cursor/daemon_spec.rb
- ee/spec/models/broadcast_message_spec.rb
- ee/spec/models/burndown_spec.rb
- qa/spec/support/repeater_spec.rb
- spec/features/users/terms_spec.rb
- spec/lib/feature_spec.rb
- spec/models/broadcast_message_spec.rb
- spec/models/concerns/issuable_spec.rb
- spec/requests/api/ci/runner/jobs_trace_spec.rb
- spec/requests/api/issues/put_projects_issues_spec.rb
- spec/support/shared_contexts/cache_allowed_users_in_namespace_shared_context.rb
- spec/support/shared_examples/requests/api/time_tracking_shared_examples.rb
- spec/support/shared_examples/workers/concerns/reenqueuer_shared_examples.rb
- spec/workers/concerns/reenqueuer_spec.rb
- spec/lib/gitlab/analytics/cycle_analytics/median_spec.rb

View file

@ -0,0 +1,55 @@
---
Style/OpenStructUse:
Exclude:
- app/helpers/application_settings_helper.rb
- ee/spec/db/production/license_spec.rb
- ee/spec/features/projects/new_project_spec.rb
- ee/spec/finders/template_finder_spec.rb
- ee/spec/graphql/ee/resolvers/board_lists_resolver_spec.rb
- ee/spec/helpers/ee/blob_helper_spec.rb
- ee/spec/lib/gitlab/auth/group_saml/failure_handler_spec.rb
- ee/spec/lib/gitlab/legacy_github_import/project_creator_spec.rb
- lib/api/wikis.rb
- lib/gitlab/git/diff_collection.rb
- lib/gitlab/import_export/after_export_strategies/base_after_export_strategy.rb
- lib/gitlab/testing/request_inspector_middleware.rb
- lib/mattermost/session.rb
- spec/controllers/admin/clusters_controller_spec.rb
- spec/controllers/groups/clusters_controller_spec.rb
- spec/controllers/import/fogbugz_controller_spec.rb
- spec/controllers/import/gitlab_controller_spec.rb
- spec/controllers/projects/clusters_controller_spec.rb
- spec/dependencies/omniauth_saml_spec.rb
- spec/factories/go_module_versions.rb
- spec/factories/wiki_pages.rb
- spec/features/projects/clusters/gcp_spec.rb
- spec/features/projects/clusters_spec.rb
- spec/finders/template_finder_spec.rb
- spec/graphql/mutations/branches/create_spec.rb
- spec/graphql/mutations/clusters/agent_tokens/create_spec.rb
- spec/graphql/mutations/clusters/agents/create_spec.rb
- spec/graphql/mutations/clusters/agents/delete_spec.rb
- spec/graphql/mutations/commits/create_spec.rb
- spec/helpers/application_settings_helper_spec.rb
- spec/helpers/profiles_helper_spec.rb
- spec/initializers/doorkeeper_spec.rb
- spec/lib/gitlab/auth/o_auth/provider_spec.rb
- spec/lib/gitlab/cleanup/orphan_lfs_file_references_spec.rb
- spec/lib/gitlab/database/migrations/runner_spec.rb
- spec/lib/gitlab/gitaly_client/blobs_stitcher_spec.rb
- spec/lib/gitlab/gitaly_client/diff_stitcher_spec.rb
- spec/lib/gitlab/graphql/pagination/keyset/connection_spec.rb
- spec/lib/gitlab/legacy_github_import/project_creator_spec.rb
- spec/lib/gitlab/quick_actions/command_definition_spec.rb
- spec/models/design_management/design_action_spec.rb
- spec/models/design_management/design_at_version_spec.rb
- spec/models/user_spec.rb
- spec/presenters/packages/nuget/search_results_presenter_spec.rb
- spec/services/packages/nuget/metadata_extraction_service_spec.rb
- spec/services/projects/import_service_spec.rb
- spec/services/system_note_service_spec.rb
- spec/support/helpers/import_spec_helper.rb
- spec/support/helpers/login_helpers.rb
- spec/support/helpers/repo_helpers.rb
- spec/tooling/rspec_flaky/flaky_example_spec.rb
- tooling/rspec_flaky/flaky_example.rb

View file

@ -2,6 +2,15 @@
documentation](doc/development/changelog.md) for instructions on adding your own
entry.
## 14.5.1 (2021-12-01)
### Fixed (4 changes)
- [Check validation for license only if new record](gitlab-org/gitlab@3e34c2dc431a2b1c1828f5154a4d2be350359b16) ([merge request](gitlab-org/gitlab!75498)) **GitLab Enterprise Edition**
- [Fix for hexadecimal branch deletion](gitlab-org/gitlab@eb74cd44edac0c16c44aa11d710b742586c31741) ([merge request](gitlab-org/gitlab!75498))
- [Fix the SSL_CERT_DIR logging on git operations](gitlab-org/gitlab@6ef3b63ad5e58baa0e0e0a922fe43a2fb4494508) ([merge request](gitlab-org/gitlab!75498))
- [Support Action Cable on GCP Memorystore](gitlab-org/gitlab@d62aa5bcbad5851209a9d248ca267d0c46d1e7c9) ([merge request](gitlab-org/gitlab!75498))
## 14.5.0 (2021-11-19)
### Added (113 changes)

View file

@ -46,7 +46,6 @@ export default {
attributes: [{ variant: 'confirm', 'data-qa-selector': 'approve_user_confirm_button' }],
},
messageHtml,
'data-qa-selector': 'approve_user_button',
},
});
},
@ -55,7 +54,7 @@ export default {
</script>
<template>
<gl-dropdown-item @click="onClick">
<gl-dropdown-item data-qa-selector="approve_user_button" @click="onClick">
<slot></slot>
</gl-dropdown-item>
</template>

View file

@ -3,6 +3,7 @@ import Mousetrap from 'mousetrap';
import { clickCopyToClipboardButton } from '~/behaviors/copy_to_clipboard';
import { getSelectedFragment } from '~/lib/utils/common_utils';
import { isElementVisible } from '~/lib/utils/dom_utils';
import { DEBOUNCE_DROPDOWN_DELAY } from '~/vue_shared/components/sidebar/labels_select_widget/constants';
import Sidebar from '../../right_sidebar';
import { CopyAsGFM } from '../markdown/copy_as_gfm';
import {
@ -114,6 +115,11 @@ export default class ShortcutsIssuable extends Shortcuts {
static openSidebarDropdown(name) {
Sidebar.instance.openDropdown(name);
// Wait for the sidebar to trigger('click') open
// so it doesn't cause our dropdown to close preemptively
setTimeout(() => {
document.querySelector(`.block.${name} .shortcut-sidebar-dropdown-toggle`).click();
}, DEBOUNCE_DROPDOWN_DELAY);
return false;
}

View file

@ -4,7 +4,6 @@ import { MountingPortal } from 'portal-vue';
import { mapState, mapActions, mapGetters } from 'vuex';
import SidebarDropdownWidget from 'ee_else_ce/sidebar/components/sidebar_dropdown_widget.vue';
import { __, sprintf } from '~/locale';
import BoardSidebarLabelsSelect from '~/boards/components/sidebar/board_sidebar_labels_select.vue';
import BoardSidebarTimeTracker from '~/boards/components/sidebar/board_sidebar_time_tracker.vue';
import BoardSidebarTitle from '~/boards/components/sidebar/board_sidebar_title.vue';
import { ISSUABLE } from '~/boards/constants';
@ -26,7 +25,6 @@ export default {
SidebarDateWidget,
SidebarConfidentialityWidget,
BoardSidebarTimeTracker,
BoardSidebarLabelsSelect,
SidebarLabelsWidget,
SidebarSubscriptionsWidget,
SidebarDropdownWidget,
@ -210,7 +208,6 @@ export default {
data-testid="sidebar-due-date"
/>
<sidebar-labels-widget
v-if="glFeatures.labelsWidget"
class="block labels"
data-testid="sidebar-labels"
:iid="activeBoardItem.iid"
@ -230,7 +227,6 @@ export default {
>
{{ __('None') }}
</sidebar-labels-widget>
<board-sidebar-labels-select v-else class="block labels" />
<sidebar-weight-widget
v-if="weightFeatureAvailable"
:iid="activeBoardItem.iid"

View file

@ -39,7 +39,6 @@ import boardLabelsQuery from '../graphql/board_labels.query.graphql';
import groupBoardMilestonesQuery from '../graphql/group_board_milestones.query.graphql';
import groupProjectsQuery from '../graphql/group_projects.query.graphql';
import issueCreateMutation from '../graphql/issue_create.mutation.graphql';
import issueSetLabelsMutation from '../graphql/issue_set_labels.mutation.graphql';
import listsIssuesQuery from '../graphql/lists_issues.query.graphql';
import projectBoardMilestonesQuery from '../graphql/project_board_milestones.query.graphql';
@ -609,33 +608,6 @@ export default {
setActiveIssueLabels: async ({ commit, getters }, input) => {
const { activeBoardItem } = getters;
if (!gon.features?.labelsWidget) {
const { data } = await gqlClient.mutate({
mutation: issueSetLabelsMutation,
variables: {
input: {
iid: input.iid || String(activeBoardItem.iid),
labelIds: input.labelsId ?? undefined,
addLabelIds: input.addLabelIds ?? [],
removeLabelIds: input.removeLabelIds ?? [],
projectPath: input.projectPath,
},
},
});
if (data.updateIssue?.errors?.length > 0) {
throw new Error(data.updateIssue.errors);
}
commit(types.UPDATE_BOARD_ITEM_BY_ID, {
itemId: data.updateIssue?.issue?.id || activeBoardItem.id,
prop: 'labels',
value: data.updateIssue?.issue?.labels.nodes,
});
return;
}
let labels = input?.labels || [];
if (input.removeLabelIds) {
labels = activeBoardItem.labels.filter(

View file

@ -130,7 +130,6 @@ const createFlash = function createFlash({
export {
createFlash as default,
createFlashEl,
createAction,
hideFlash,
removeFlashClickListener,

View file

@ -13,5 +13,6 @@ export default {
'diffEditor.insertedTextBackground': '#a0f5b420',
'diffEditor.removedTextBackground': '#f9d7dc20',
'editorIndentGuide.activeBackground': '#cccccc',
'editorSuggestWidget.focusHighlightForeground': '#96D8FD',
},
};

View file

@ -142,5 +142,6 @@ export default {
'diffEditor.insertedTextBackground': '#a0f5b420',
'diffEditor.removedTextBackground': '#f9d7dc20',
'editorIndentGuide.activeBackground': '#cccccc',
'editorSuggestWidget.focusHighlightForeground': '#96D8FD',
},
};

View file

@ -10,6 +10,7 @@ export default () => {
removeFormId = null,
phrase,
buttonText,
buttonClass = '',
buttonTestid = null,
confirmDangerMessage,
disabled = false,
@ -25,6 +26,7 @@ export default () => {
props: {
phrase,
buttonText,
buttonClass,
buttonTestid,
disabled: parseBoolean(disabled),
},

View file

@ -280,6 +280,7 @@ export default {
v-if="showDraft(discussion.reply_id)"
:key="`draft_${discussion.id}`"
:draft="draftForDiscussion(discussion.reply_id)"
:line="line"
/>
<div
v-else-if="canShowReplyActions && showReplies"

View file

@ -3,7 +3,6 @@
import $ from 'jquery';
import Cookies from 'js-cookie';
import { hide, fixTitle } from '~/tooltips';
import { DEBOUNCE_DROPDOWN_DELAY } from '~/vue_shared/components/sidebar/labels_select_widget/constants';
import createFlash from './flash';
import axios from './lib/utils/axios_utils';
import { sprintf, s__, __ } from './locale';
@ -127,14 +126,6 @@ Sidebar.prototype.openDropdown = function (blockOrName) {
this.setCollapseAfterUpdate($block);
this.toggleSidebar('open');
}
// Wait for the sidebar to trigger('click') open
// so it doesn't cause our dropdown to close preemptively
setTimeout(() => {
if (!gon.features?.labelsWidget && !$block.hasClass('labels-select-wrapper')) {
$block.find('.js-sidebar-dropdown-toggle').trigger('click');
}
}, DEBOUNCE_DROPDOWN_DELAY);
};
Sidebar.prototype.setCollapseAfterUpdate = function ($block) {

View file

@ -1,152 +1,24 @@
<script>
import $ from 'jquery';
import { camelCase, difference, union } from 'lodash';
import updateIssueLabelsMutation from '~/boards/graphql/issue_set_labels.mutation.graphql';
import createFlash from '~/flash';
import { getIdFromGraphQLId, MutationOperationMode } from '~/graphql_shared/utils';
import { IssuableType } from '~/issue_show/constants';
import { __ } from '~/locale';
import updateMergeRequestLabelsMutation from '~/sidebar/queries/update_merge_request_labels.mutation.graphql';
import { toLabelGid } from '~/sidebar/utils';
import { DropdownVariant } from '~/vue_shared/components/sidebar/labels_select_vue/constants';
import LabelsSelect from '~/vue_shared/components/sidebar/labels_select_vue/labels_select_root.vue';
import LabelsSelectWidget from '~/vue_shared/components/sidebar/labels_select_widget/labels_select_root.vue';
import { LabelType } from '~/vue_shared/components/sidebar/labels_select_widget/constants';
import glFeatureFlagMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';
const mutationMap = {
[IssuableType.Issue]: {
mutation: updateIssueLabelsMutation,
mutationName: 'updateIssue',
},
[IssuableType.MergeRequest]: {
mutation: updateMergeRequestLabelsMutation,
mutationName: 'mergeRequestSetLabels',
},
};
export default {
components: {
LabelsSelect,
LabelsSelectWidget,
},
variant: DropdownVariant.Sidebar,
mixins: [glFeatureFlagMixin()],
inject: [
'allowLabelCreate',
'allowLabelEdit',
'allowScopedLabels',
'iid',
'fullPath',
'initiallySelectedLabels',
'issuableType',
'labelsFetchPath',
'labelsManagePath',
'projectIssuesPath',
'projectPath',
],
inject: ['allowLabelEdit', 'iid', 'fullPath', 'issuableType', 'projectIssuesPath'],
data() {
return {
isLabelsSelectInProgress: false,
selectedLabels: this.initiallySelectedLabels,
LabelType,
};
},
methods: {
handleDropdownClose() {
$(this.$el).trigger('hidden.gl.dropdown');
},
getUpdateVariables(labels) {
let labelIds = [];
if (this.glFeatures.labelsWidget) {
labelIds = labels.map(({ id }) => toLabelGid(id));
} else {
const currentLabelIds = this.selectedLabels.map((label) => label.id);
const userAddedLabelIds = labels.filter((label) => label.set).map((label) => label.id);
const userRemovedLabelIds = labels.filter((label) => !label.set).map((label) => label.id);
labelIds = difference(union(currentLabelIds, userAddedLabelIds), userRemovedLabelIds).map(
toLabelGid,
);
}
switch (this.issuableType) {
case IssuableType.Issue:
return {
iid: this.iid,
projectPath: this.projectPath,
labelIds,
};
case IssuableType.MergeRequest:
return {
iid: this.iid,
labelIds,
operationMode: MutationOperationMode.Replace,
projectPath: this.projectPath,
};
default:
return {};
}
},
handleUpdateSelectedLabels(dropdownLabels) {
this.updateSelectedLabels(this.getUpdateVariables(dropdownLabels));
},
getRemoveVariables(labelId) {
switch (this.issuableType) {
case IssuableType.Issue:
return {
iid: this.iid,
projectPath: this.projectPath,
removeLabelIds: [labelId],
};
case IssuableType.MergeRequest:
return {
iid: this.iid,
labelIds: [toLabelGid(labelId)],
operationMode: MutationOperationMode.Remove,
projectPath: this.projectPath,
};
default:
return {};
}
},
handleLabelRemove(labelId) {
this.updateSelectedLabels(this.getRemoveVariables(labelId));
},
updateSelectedLabels(inputVariables) {
this.isLabelsSelectInProgress = true;
this.$apollo
.mutate({
mutation: mutationMap[this.issuableType].mutation,
variables: { input: inputVariables },
})
.then(({ data }) => {
const { mutationName } = mutationMap[this.issuableType];
if (data[mutationName]?.errors?.length) {
throw new Error();
}
const issuableType = camelCase(this.issuableType);
this.selectedLabels = data[mutationName]?.[issuableType]?.labels?.nodes?.map((label) => ({
...label,
id: getIdFromGraphQLId(label.id),
}));
})
.catch(() => createFlash({ message: __('An error occurred while updating labels.') }))
.finally(() => {
this.isLabelsSelectInProgress = false;
});
},
},
};
</script>
<template>
<labels-select-widget
v-if="glFeatures.labelsWidget"
class="block labels js-labels-block"
:iid="iid"
:full-path="fullPath"
@ -165,28 +37,4 @@ export default {
>
{{ __('None') }}
</labels-select-widget>
<labels-select
v-else
class="block labels js-labels-block"
:allow-label-remove="allowLabelEdit"
:allow-label-create="allowLabelCreate"
:allow-label-edit="allowLabelEdit"
:allow-multiselect="true"
:allow-scoped-labels="allowScopedLabels"
:footer-create-label-title="__('Create project label')"
:footer-manage-label-title="__('Manage project labels')"
:labels-create-title="__('Create project label')"
:labels-fetch-path="labelsFetchPath"
:labels-filter-base-path="projectIssuesPath"
:labels-manage-path="labelsManagePath"
:labels-select-in-progress="isLabelsSelectInProgress"
:selected-labels="selectedLabels"
:variant="$options.sidebar"
data-qa-selector="labels_block"
@onDropdownClose="handleDropdownClose"
@onLabelRemove="handleLabelRemove"
@updateSelectedLabels="handleUpdateSelectedLabels"
>
{{ __('None') }}
</labels-select>
</template>

View file

@ -26,6 +26,11 @@ export default {
type: String,
required: true,
},
buttonClass: {
type: String,
required: false,
default: '',
},
buttonTestid: {
type: String,
required: false,
@ -39,7 +44,7 @@ export default {
<div>
<gl-button
v-gl-modal="$options.modalId"
class="gl-button"
:class="buttonClass"
variant="danger"
:disabled="disabled"
:data-testid="buttonTestid"

View file

@ -231,9 +231,10 @@ export default {
throw new Error();
}
this.issuableLabels = data[mutationName]?.[this.issuableType]?.labels?.nodes;
this.$emit('updateSelectedLabels', {
id: data[mutationName]?.[this.issuableType]?.id,
labels: data[mutationName]?.[this.issuableType]?.labels?.nodes,
labels: this.issuableLabels,
});
})
.catch((error) =>

View file

@ -11,7 +11,6 @@ class Groups::BoardsController < Groups::ApplicationController
push_frontend_feature_flag(:board_multi_select, group, default_enabled: :yaml)
push_frontend_feature_flag(:swimlanes_buffered_rendering, group, default_enabled: :yaml)
push_frontend_feature_flag(:iteration_cadences, group, default_enabled: :yaml)
push_frontend_feature_flag(:labels_widget, group, default_enabled: :yaml)
experiment(:prominent_create_board_btn, subject: current_user) do |e|
e.use { }
e.try { }

View file

@ -11,7 +11,6 @@ class Projects::BoardsController < Projects::ApplicationController
push_frontend_feature_flag(:issue_boards_filtered_search, project, default_enabled: :yaml)
push_frontend_feature_flag(:board_multi_select, project, default_enabled: :yaml)
push_frontend_feature_flag(:iteration_cadences, project&.group, default_enabled: :yaml)
push_frontend_feature_flag(:labels_widget, project, default_enabled: :yaml)
experiment(:prominent_create_board_btn, subject: current_user) do |e|
e.use { }
e.try { }

View file

@ -51,7 +51,6 @@ class Projects::IssuesController < Projects::ApplicationController
push_frontend_feature_flag(:real_time_issue_sidebar, @project, default_enabled: :yaml)
push_frontend_feature_flag(:confidential_notes, @project, default_enabled: :yaml)
push_frontend_feature_flag(:issue_assignees_widget, @project, default_enabled: :yaml)
push_frontend_feature_flag(:labels_widget, @project, default_enabled: :yaml)
push_frontend_feature_flag(:paginated_issue_discussions, @project, default_enabled: :yaml)
experiment(:invite_members_in_comment, namespace: @project.root_ancestor) do |experiment_instance|

View file

@ -42,7 +42,6 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo
push_frontend_feature_flag(:restructured_mr_widget, project, default_enabled: :yaml)
push_frontend_feature_flag(:mr_changes_fluid_layout, project, default_enabled: :yaml)
push_frontend_feature_flag(:mr_attention_requests, project, default_enabled: :yaml)
push_frontend_feature_flag(:labels_widget, project, default_enabled: :yaml)
# Usage data feature flags
push_frontend_feature_flag(:users_expanding_widgets_usage_data, @project, default_enabled: :yaml)

View file

@ -1,8 +1,8 @@
---
name: labels_widget
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/62898
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/332327
milestone: '14.0'
name: log_implicit_sidekiq_status_calls
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/74815
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/343964
milestone: '14.6'
type: development
group: group::project management
group: group::scalability
default_enabled: false

View file

@ -0,0 +1,15 @@
# frozen_string_literal: true
class TrackDeletionsInNamespaces < Gitlab::Database::Migration[1.0]
include Gitlab::Database::MigrationHelpers::LooseForeignKeyHelpers
enable_lock_retries!
def up
track_record_deletions(:namespaces)
end
def down
untrack_record_deletions(:namespaces)
end
end

View file

@ -0,0 +1,15 @@
# frozen_string_literal: true
class TrackDeletionsInProjects < Gitlab::Database::Migration[1.0]
include Gitlab::Database::MigrationHelpers::LooseForeignKeyHelpers
enable_lock_retries!
def up
track_record_deletions(:projects)
end
def down
untrack_record_deletions(:projects)
end
end

View file

@ -0,0 +1 @@
cc0146769929c9fbb0b7b6788826d2e188c8664a14e1015563ba4f9e65397c4e

View file

@ -0,0 +1 @@
b0215ac45031593ca98de4f8858d21f1c29af03742a422bffd83598e39a6871c

View file

@ -28729,6 +28729,10 @@ CREATE TRIGGER ci_pipelines_loose_fk_trigger AFTER DELETE ON ci_pipelines REFERE
CREATE TRIGGER ci_runners_loose_fk_trigger AFTER DELETE ON ci_runners REFERENCING OLD TABLE AS old_table FOR EACH STATEMENT EXECUTE FUNCTION insert_into_loose_foreign_keys_deleted_records();
CREATE TRIGGER namespaces_loose_fk_trigger AFTER DELETE ON namespaces REFERENCING OLD TABLE AS old_table FOR EACH STATEMENT EXECUTE FUNCTION insert_into_loose_foreign_keys_deleted_records();
CREATE TRIGGER projects_loose_fk_trigger AFTER DELETE ON projects REFERENCING OLD TABLE AS old_table FOR EACH STATEMENT EXECUTE FUNCTION insert_into_loose_foreign_keys_deleted_records();
CREATE TRIGGER trigger_delete_project_namespace_on_project_delete AFTER DELETE ON projects FOR EACH ROW WHEN ((old.project_namespace_id IS NOT NULL)) EXECUTE FUNCTION delete_associated_project_namespace();
CREATE TRIGGER trigger_has_external_issue_tracker_on_delete AFTER DELETE ON integrations FOR EACH ROW WHEN ((((old.category)::text = 'issue_tracker'::text) AND (old.active = true) AND (old.project_id IS NOT NULL))) EXECUTE FUNCTION set_has_external_issue_tracker();

View file

@ -171,7 +171,10 @@ we should track our progress through the exception list.
When auto-generating the `.rubocop_todo.yml` exception list for a particular Cop,
and more than 15 files are affected, we should add the exception list to
a different file, `.rubocop_manual_todo.yml`.
a different file within `.rubocop_todo/` directory.
For example, the configuration for the cop `Gitlab/NamespacedClass` is located
in `.rubocop_todo/gitlab/namespaced_class.yml`.
This ensures that our list isn't mistakenly removed by another auto generation of
the `.rubocop_todo.yml`. This also allows us greater visibility into the exceptions
@ -184,19 +187,19 @@ bundle exec rake rubocop:todo:generate
```
You can then move the list from the freshly generated `.rubocop_todo.yml` for the Cop being actively
resolved and place it in the `.rubocop_manual_todo.yml`. In this scenario, do not commit auto generated
changes to the `.rubocop_todo.yml` as an `exclude limit` that is higher than 15 will make the
`.rubocop_todo.yml` hard to parse.
resolved and place it in the directory `.rubocop_todo/`. In this scenario, do not commit
auto-generated changes to the `.rubocop_todo.yml`, as an `exclude limit` that is higher than 15
makes the `.rubocop_todo.yml` hard to parse.
### Reveal existing RuboCop exceptions
To reveal existing RuboCop exceptions in the code that have been excluded via `.rubocop_todo.yml` and
`.rubocop_manual_todo.yml`, set the environment variable `REVEAL_RUBOCOP_TODO` to `1`.
`.rubocop_todo/**/*.yml`, set the environment variable `REVEAL_RUBOCOP_TODO` to `1`.
This allows you to reveal existing RuboCop exceptions during your daily work cycle and fix them along the way.
NOTE:
Permanent `Exclude`s should be defined in `.rubocop.yml` instead of `.rubocop_manual_todo.yml`.
Define permanent `Exclude`s in `.rubocop.yml` instead of `.rubocop_todo/**/*.yml`.
## Database migrations

View file

@ -36,6 +36,12 @@ On every [pipeline](https://gitlab.com/gitlab-org/gitlab/pipelines/125315730) in
browser performance testing using a
[Sitespeed.io Container](../../user/project/merge_requests/browser_performance_testing.md).
## Sample Data for Review Apps
Upon deployment of a review app, project data is created from the [`sample-gitlab-project`](https://gitlab.com/gitlab-org/sample-data-templates/sample-gitlab-project) template project. This aims to provide projects with prepopulated resources to facilitate manual and exploratory testing.
The sample projects will be created in the `root` user namespace and can be accessed from the personal projects list for that user.
## How to
### Redeploy Review App from a clean slate

View file

@ -159,6 +159,8 @@ branch already exists, the patches are applied on top of it.
## Set the default target project
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/58093) in GitLab 13.11.
Merge requests have a source and a target project that are the same, unless
forking is involved. Creating a fork of the project can cause either of these
scenarios when you create a new merge request:

View file

@ -10,6 +10,7 @@ module API
end
expose :relation_key, as: :relation_name
expose :relation_index, as: :line_number
end
end
end

View file

@ -4,6 +4,7 @@ module API
module Entities
class ProjectImportStatus < ProjectIdentity
expose :import_status
expose :import_type
expose :correlation_id do |project, _options|
project.import_state&.correlation_id
end

View file

@ -107,7 +107,7 @@ module API
params do
requires :id, type: String, desc: 'The ID of a project'
end
desc 'Get a project export status' do
desc 'Get a project import status' do
detail 'This feature was introduced in GitLab 10.6.'
success Entities::ProjectImportStatus
end

View file

@ -29,13 +29,16 @@ module Gitlab
# for most jobs.
DEFAULT_EXPIRATION = 30.minutes.to_i
DEFAULT_VALUE = 1
DEFAULT_VALUE_MESSAGE = 'Keys using the default value for SidekiqStatus detected'
# Starts tracking of the given job.
#
# jid - The Sidekiq job ID
# expire - The expiration time of the Redis key.
def self.set(jid, expire = DEFAULT_EXPIRATION)
def self.set(jid, expire = DEFAULT_EXPIRATION, value: DEFAULT_VALUE)
Sidekiq.redis do |redis|
redis.set(key_for(jid), 1, ex: expire)
redis.set(key_for(jid), value, ex: expire)
end
end
@ -88,13 +91,20 @@ module Gitlab
# true = job is still running or enqueued
# false = job completed
def self.job_status(job_ids)
keys = job_ids.map { |jid| key_for(jid) }
return [] if job_ids.empty?
Sidekiq.redis do |redis|
redis.pipelined do
keys.each { |key| redis.exists(key) }
end
keys = job_ids.map { |jid| key_for(jid) }
results = Sidekiq.redis { |redis| redis.mget(*keys) }
if Feature.enabled?(:log_implicit_sidekiq_status_calls, default_enabled: :yaml)
to_log = keys.zip(results).select do |_key, result|
result == DEFAULT_VALUE.to_s
end.map(&:first)
Sidekiq.logger.info(message: DEFAULT_VALUE_MESSAGE, keys: to_log) if to_log.any?
end
results.map { |result| !result.nil? }
end
# Returns the JIDs that are completed

View file

@ -5,8 +5,9 @@ module Gitlab
class ClientMiddleware
def call(_, job, _, _)
status_expiration = job['status_expiration'] || Gitlab::SidekiqStatus::DEFAULT_EXPIRATION
value = job['status_expiration'] ? 2 : Gitlab::SidekiqStatus::DEFAULT_VALUE
Gitlab::SidekiqStatus.set(job['jid'], status_expiration)
Gitlab::SidekiqStatus.set(job['jid'], status_expiration, value: value)
yield
end
end

View file

@ -124,15 +124,6 @@ module QA
click_element(:more_assignees_link)
end
# When the labels_widget feature flag is enabled, wait until the labels widget appears
def wait_for_labels_widget_feature_flag
Support::Retrier.retry_until(max_duration: 60, reload_page: page, retry_on_exception: true, sleep_interval: 5) do
within_element(:labels_block) do
find_element(:edit_link)
end
end
end
private
def wait_assignees_block_finish_loading

View file

@ -10,6 +10,8 @@ FactoryBot.define do
exception_class { 'RuntimeError' }
exception_message { 'Something went wrong' }
source { 'method_call' }
relation_key { 'issues' }
relation_index { 1 }
correlation_id_value { SecureRandom.uuid }
trait :hard_failure do

View file

@ -15,7 +15,6 @@ RSpec.describe "Issues > User edits issue", :js do
context 'with authorized user' do
before do
stub_feature_flags(labels_widget: false)
project.add_developer(user)
project_with_milestones.add_developer(user)
sign_in(user)
@ -151,7 +150,7 @@ RSpec.describe "Issues > User edits issue", :js do
page.within '.block.labels' do
# Remove `verisimilitude` label
within '.gl-label' do
click_button
click_button 'Remove label'
end
expect(page).to have_text('syzygy')

View file

@ -17,7 +17,6 @@ RSpec.describe 'Labels Hierarchy', :js do
let!(:project_label_1) { create(:label, project: project_1, title: 'Label_4') }
before do
stub_feature_flags(labels_widget: false)
grandparent.add_owner(user)
sign_in(user)
@ -28,16 +27,15 @@ RSpec.describe 'Labels Hierarchy', :js do
[grandparent_group_label, parent_group_label, project_label_1].each do |label|
page.within('.block.labels') do
click_on 'Edit'
wait_for_requests
click_on label.title
click_on 'Close'
end
wait_for_requests
find('a.label-item', text: label.title).click
wait_for_requests
click_on 'Close'
wait_for_requests
expect(page).to have_selector('.gl-label', text: label.title)
end
end

View file

@ -1,18 +1,20 @@
import { GlDrawer } from '@gitlab/ui';
import { shallowMount } from '@vue/test-utils';
import { MountingPortal } from 'portal-vue';
import Vue from 'vue';
import Vuex from 'vuex';
import SidebarDropdownWidget from 'ee_else_ce/sidebar/components/sidebar_dropdown_widget.vue';
import { stubComponent } from 'helpers/stub_component';
import BoardContentSidebar from '~/boards/components/board_content_sidebar.vue';
import BoardSidebarLabelsSelect from '~/boards/components/sidebar/board_sidebar_labels_select.vue';
import BoardSidebarTitle from '~/boards/components/sidebar/board_sidebar_title.vue';
import { ISSUABLE } from '~/boards/constants';
import SidebarDateWidget from '~/sidebar/components/date/sidebar_date_widget.vue';
import SidebarSubscriptionsWidget from '~/sidebar/components/subscriptions/sidebar_subscriptions_widget.vue';
import SidebarTodoWidget from '~/sidebar/components/todo_toggle/sidebar_todo_widget.vue';
import SidebarLabelsWidget from '~/vue_shared/components/sidebar/labels_select_widget/labels_select_root.vue';
import { mockActiveIssue, mockIssue, mockIssueGroupPath, mockIssueProjectPath } from '../mock_data';
Vue.use(Vuex);
describe('BoardContentSidebar', () => {
let wrapper;
let store;
@ -32,6 +34,7 @@ describe('BoardContentSidebar', () => {
groupPathForActiveIssue: () => mockIssueGroupPath,
projectPathForActiveIssue: () => mockIssueProjectPath,
isSidebarOpen: () => true,
isGroupBoard: () => false,
...mockGetters,
},
actions: mockActions,
@ -115,8 +118,8 @@ describe('BoardContentSidebar', () => {
expect(wrapper.findComponent(SidebarTodoWidget).exists()).toBe(true);
});
it('renders BoardSidebarLabelsSelect', () => {
expect(wrapper.findComponent(BoardSidebarLabelsSelect).exists()).toBe(true);
it('renders SidebarLabelsWidget', () => {
expect(wrapper.findComponent(SidebarLabelsWidget).exists()).toBe(true);
});
it('renders BoardSidebarTitle', () => {

View file

@ -1570,7 +1570,7 @@ describe('addListNewIssue', () => {
describe('setActiveIssueLabels', () => {
const state = { boardItems: { [mockIssue.id]: mockIssue } };
const getters = { activeBoardItem: mockIssue };
const getters = { activeBoardItem: { ...mockIssue, labels } };
const testLabelIds = labels.map((label) => label.id);
const input = {
labelIds: testLabelIds,
@ -1579,11 +1579,7 @@ describe('setActiveIssueLabels', () => {
labels,
};
it('should assign labels on success', (done) => {
jest
.spyOn(gqlClient, 'mutate')
.mockResolvedValue({ data: { updateIssue: { issue: { labels: { nodes: labels } } } } });
it('should assign labels', () => {
const payload = {
itemId: getters.activeBoardItem.id,
prop: 'labels',
@ -1601,74 +1597,28 @@ describe('setActiveIssueLabels', () => {
},
],
[],
done,
);
});
it('throws error if fails', async () => {
jest
.spyOn(gqlClient, 'mutate')
.mockResolvedValue({ data: { updateIssue: { errors: ['failed mutation'] } } });
it('should remove label', () => {
const payload = {
itemId: getters.activeBoardItem.id,
prop: 'labels',
value: [labels[1]],
};
await expect(actions.setActiveIssueLabels({ getters }, input)).rejects.toThrow(Error);
});
describe('labels_widget FF on', () => {
beforeEach(() => {
window.gon = {
features: { labelsWidget: true },
};
getters.activeBoardItem = { ...mockIssue, labels };
});
afterEach(() => {
window.gon = {
features: {},
};
});
it('should assign labels', () => {
const payload = {
itemId: getters.activeBoardItem.id,
prop: 'labels',
value: labels,
};
testAction(
actions.setActiveIssueLabels,
input,
{ ...state, ...getters },
[
{
type: types.UPDATE_BOARD_ITEM_BY_ID,
payload,
},
],
[],
);
});
it('should remove label', () => {
const payload = {
itemId: getters.activeBoardItem.id,
prop: 'labels',
value: [labels[1]],
};
testAction(
actions.setActiveIssueLabels,
{ ...input, removeLabelIds: [getIdFromGraphQLId(labels[0].id)] },
{ ...state, ...getters },
[
{
type: types.UPDATE_BOARD_ITEM_BY_ID,
payload,
},
],
[],
);
});
testAction(
actions.setActiveIssueLabels,
{ ...input, removeLabelIds: [getIdFromGraphQLId(labels[0].id)] },
{ ...state, ...getters },
[
{
type: types.UPDATE_BOARD_ITEM_BY_ID,
payload,
},
],
[],
);
});
});

View file

@ -1,38 +1,12 @@
import createFlash, {
createFlashEl,
createAction,
hideFlash,
removeFlashClickListener,
FLASH_TYPES,
FLASH_CLOSED_EVENT,
} from '~/flash';
describe('Flash', () => {
describe('createFlashEl', () => {
let el;
beforeEach(() => {
el = document.createElement('div');
});
afterEach(() => {
el.innerHTML = '';
});
it('creates flash element with type', () => {
el.innerHTML = createFlashEl('testing', 'alert');
expect(el.querySelector('.flash-alert')).not.toBeNull();
});
it('escapes text', () => {
el.innerHTML = createFlashEl('<script>alert("a");</script>', 'alert');
expect(el.querySelector('.flash-text').textContent.trim()).toBe(
'<script>alert("a");</script>',
);
});
});
describe('hideFlash', () => {
let el;
@ -137,14 +111,10 @@ describe('Flash', () => {
describe('createFlash', () => {
const message = 'test';
const type = 'alert';
const parent = document;
const fadeTransition = false;
const addBodyClass = true;
const defaultParams = {
message,
type,
parent,
actionConfig: null,
fadeTransition,
addBodyClass,
@ -171,14 +141,28 @@ describe('Flash', () => {
document.querySelector('.js-content-wrapper').remove();
});
it('adds flash element into container', () => {
it('adds flash alert element into the document by default', () => {
createFlash({ ...defaultParams });
expect(document.querySelector('.flash-alert')).not.toBeNull();
expect(document.querySelector('.flash-container .flash-alert')).not.toBeNull();
expect(document.body.className).toContain('flash-shown');
});
it('adds flash of a warning type', () => {
createFlash({ ...defaultParams, type: FLASH_TYPES.WARNING });
expect(document.querySelector('.flash-container .flash-warning')).not.toBeNull();
expect(document.body.className).toContain('flash-shown');
});
it('escapes text', () => {
createFlash({ ...defaultParams, message: '<script>alert("a");</script>' });
expect(document.querySelector('.flash-text').textContent.trim()).toBe(
'<script>alert("a");</script>',
);
});
it('adds flash into specified parent', () => {
createFlash({ ...defaultParams, parent: document.querySelector('.content-wrapper') });

View file

@ -1,60 +1,22 @@
import { shallowMount } from '@vue/test-utils';
import {
mockLabels,
mockRegularLabel,
} from 'jest/vue_shared/components/sidebar/labels_select_vue/mock_data';
import updateIssueLabelsMutation from '~/boards/graphql/issue_set_labels.mutation.graphql';
import { MutationOperationMode } from '~/graphql_shared/utils';
import { IssuableType } from '~/issue_show/constants';
import SidebarLabels from '~/sidebar/components/labels/sidebar_labels.vue';
import updateMergeRequestLabelsMutation from '~/sidebar/queries/update_merge_request_labels.mutation.graphql';
import { toLabelGid } from '~/sidebar/utils';
import { DropdownVariant } from '~/vue_shared/components/sidebar/labels_select_vue/constants';
import LabelsSelect from '~/vue_shared/components/sidebar/labels_select_vue/labels_select_root.vue';
import {
DropdownVariant,
LabelType,
} from '~/vue_shared/components/sidebar/labels_select_widget/constants';
import LabelsSelect from '~/vue_shared/components/sidebar/labels_select_widget/labels_select_root.vue';
describe('sidebar labels', () => {
let wrapper;
const defaultProps = {
allowLabelCreate: true,
allowLabelEdit: true,
allowScopedLabels: true,
canEdit: true,
iid: '1',
initiallySelectedLabels: mockLabels,
issuableType: 'issue',
labelsFetchPath: '/gitlab-org/gitlab-test/-/labels.json?include_ancestor_groups=true',
labelsManagePath: '/gitlab-org/gitlab-test/-/labels',
projectIssuesPath: '/gitlab-org/gitlab-test/-/issues',
projectPath: 'gitlab-org/gitlab-test',
fullPath: 'gitlab-org/gitlab-test',
};
const $apollo = {
mutate: jest.fn().mockResolvedValue(),
};
const userUpdatedLabels = [
{
...mockRegularLabel,
set: false,
},
{
id: 40,
title: 'Security',
color: '#ddd',
text_color: '#fff',
set: true,
},
{
id: 55,
title: 'Tooling',
color: '#ddd',
text_color: '#fff',
set: false,
},
];
const findLabelsSelect = () => wrapper.find(LabelsSelect);
const mountComponent = (props = {}) => {
@ -63,9 +25,6 @@ describe('sidebar labels', () => {
...defaultProps,
...props,
},
mocks: {
$apollo,
},
});
};
@ -75,115 +34,31 @@ describe('sidebar labels', () => {
});
describe('LabelsSelect props', () => {
beforeEach(() => {
mountComponent();
});
it('are as expected', () => {
expect(findLabelsSelect().props()).toMatchObject({
allowLabelCreate: defaultProps.allowLabelCreate,
allowLabelEdit: defaultProps.allowLabelEdit,
allowMultiselect: true,
allowScopedLabels: defaultProps.allowScopedLabels,
footerCreateLabelTitle: 'Create project label',
footerManageLabelTitle: 'Manage project labels',
labelsCreateTitle: 'Create project label',
labelsFetchPath: defaultProps.labelsFetchPath,
labelsFilterBasePath: defaultProps.projectIssuesPath,
labelsManagePath: defaultProps.labelsManagePath,
labelsSelectInProgress: false,
selectedLabels: defaultProps.initiallySelectedLabels,
variant: DropdownVariant.Sidebar,
describe.each`
issuableType
${'issue'}
${'merge_request'}
`('issuableType $issuableType', ({ issuableType }) => {
beforeEach(() => {
mountComponent({ issuableType });
});
});
});
describe('when type is issue', () => {
beforeEach(() => {
mountComponent({ issuableType: IssuableType.Issue });
});
describe('when labels are updated', () => {
it('invokes a mutation', () => {
findLabelsSelect().vm.$emit('updateSelectedLabels', userUpdatedLabels);
const expected = {
mutation: updateIssueLabelsMutation,
variables: {
input: {
iid: defaultProps.iid,
projectPath: defaultProps.projectPath,
labelIds: [toLabelGid(29), toLabelGid(28), toLabelGid(27), toLabelGid(40)],
},
},
};
expect($apollo.mutate).toHaveBeenCalledWith(expected);
});
});
describe('when label `x` is clicked', () => {
it('invokes a mutation', () => {
findLabelsSelect().vm.$emit('onLabelRemove', 27);
const expected = {
mutation: updateIssueLabelsMutation,
variables: {
input: {
iid: defaultProps.iid,
projectPath: defaultProps.projectPath,
removeLabelIds: [27],
},
},
};
expect($apollo.mutate).toHaveBeenCalledWith(expected);
});
});
});
describe('when type is merge_request', () => {
beforeEach(() => {
mountComponent({ issuableType: IssuableType.MergeRequest });
});
describe('when labels are updated', () => {
it('invokes a mutation', () => {
findLabelsSelect().vm.$emit('updateSelectedLabels', userUpdatedLabels);
const expected = {
mutation: updateMergeRequestLabelsMutation,
variables: {
input: {
iid: defaultProps.iid,
labelIds: [toLabelGid(29), toLabelGid(28), toLabelGid(27), toLabelGid(40)],
operationMode: MutationOperationMode.Replace,
projectPath: defaultProps.projectPath,
},
},
};
expect($apollo.mutate).toHaveBeenCalledWith(expected);
});
});
describe('when label `x` is clicked', () => {
it('invokes a mutation', () => {
findLabelsSelect().vm.$emit('onLabelRemove', 27);
const expected = {
mutation: updateMergeRequestLabelsMutation,
variables: {
input: {
iid: defaultProps.iid,
labelIds: [toLabelGid(27)],
operationMode: MutationOperationMode.Remove,
projectPath: defaultProps.projectPath,
},
},
};
expect($apollo.mutate).toHaveBeenCalledWith(expected);
it('has expected props', () => {
expect(findLabelsSelect().props()).toMatchObject({
iid: defaultProps.iid,
fullPath: defaultProps.fullPath,
allowLabelRemove: defaultProps.allowLabelEdit,
allowMultiselect: true,
footerCreateLabelTitle: 'Create project label',
footerManageLabelTitle: 'Manage project labels',
labelsCreateTitle: 'Create project label',
labelsFilterBasePath: defaultProps.projectIssuesPath,
variant: DropdownVariant.Sidebar,
issuableType,
workspaceType: 'project',
attrWorkspacePath: defaultProps.fullPath,
labelCreateType: LabelType.project,
});
});
});
});

View file

@ -9,6 +9,7 @@ describe('Confirm Danger Modal', () => {
const phrase = 'En Taro Adun';
const buttonText = 'Click me!';
const buttonClass = 'gl-w-full';
const modalId = CONFIRM_DANGER_MODAL_ID;
const findBtn = () => wrapper.findComponent(GlButton);
@ -19,6 +20,7 @@ describe('Confirm Danger Modal', () => {
shallowMountExtended(ConfirmDanger, {
propsData: {
buttonText,
buttonClass,
phrase,
...props,
},
@ -51,6 +53,10 @@ describe('Confirm Danger Modal', () => {
expect(findBtn().attributes('disabled')).toBe('true');
});
it('passes `buttonClass` prop to button', () => {
expect(findBtn().classes()).toContain(buttonClass);
});
it('will emit `confirm` when the modal confirms', () => {
expect(wrapper.emitted('confirm')).toBeUndefined();

View file

@ -1,5 +1,5 @@
import { shallowMount, createLocalVue } from '@vue/test-utils';
import { nextTick } from 'vue';
import { shallowMount } from '@vue/test-utils';
import Vue, { nextTick } from 'vue';
import VueApollo from 'vue-apollo';
import createMockApollo from 'helpers/mock_apollo_helper';
import waitForPromises from 'helpers/wait_for_promises';
@ -8,14 +8,14 @@ import { IssuableType } from '~/issue_show/constants';
import SidebarEditableItem from '~/sidebar/components/sidebar_editable_item.vue';
import DropdownContents from '~/vue_shared/components/sidebar/labels_select_widget/dropdown_contents.vue';
import DropdownValue from '~/vue_shared/components/sidebar/labels_select_widget/dropdown_value.vue';
import DropdownValueCollapsed from '~/vue_shared/components/sidebar/labels_select_widget/dropdown_value_collapsed.vue';
import issueLabelsQuery from '~/vue_shared/components/sidebar/labels_select_widget/graphql/issue_labels.query.graphql';
import LabelsSelectRoot from '~/vue_shared/components/sidebar/labels_select_widget/labels_select_root.vue';
import { mockConfig, issuableLabelsQueryResponse } from './mock_data';
jest.mock('~/flash');
const localVue = createLocalVue();
localVue.use(VueApollo);
Vue.use(VueApollo);
const successfulQueryHandler = jest.fn().mockResolvedValue(issuableLabelsQueryResponse);
const errorQueryHandler = jest.fn().mockRejectedValue('Houston, we have a problem');
@ -25,6 +25,7 @@ describe('LabelsSelectRoot', () => {
const findSidebarEditableItem = () => wrapper.findComponent(SidebarEditableItem);
const findDropdownValue = () => wrapper.findComponent(DropdownValue);
const findDropdownValueCollapsed = () => wrapper.findComponent(DropdownValueCollapsed);
const findDropdownContents = () => wrapper.findComponent(DropdownContents);
const createComponent = ({
@ -37,7 +38,6 @@ describe('LabelsSelectRoot', () => {
wrapper = shallowMount(LabelsSelectRoot, {
slots,
apolloProvider: mockApollo,
localVue,
propsData: {
...config,
issuableType: IssuableType.Issue,
@ -107,6 +107,9 @@ describe('LabelsSelectRoot', () => {
expect(findDropdownValue().props('selectedLabels')).toEqual(
issuableLabelsQueryResponse.data.workspace.issuable.labels.nodes,
);
expect(findDropdownValueCollapsed().props('labels')).toEqual(
issuableLabelsQueryResponse.data.workspace.issuable.labels.nodes,
);
});
it('emits `onLabelRemove` event on dropdown value label remove event', () => {

View file

@ -16,7 +16,8 @@ RSpec.describe API::Entities::ProjectImportFailedRelation do
exception_class: import_failure.exception_class,
exception_message: nil,
relation_name: import_failure.relation_key,
source: import_failure.source
source: import_failure.source,
line_number: import_failure.relation_index
)
end
end

View file

@ -2,17 +2,18 @@
require 'spec_helper'
RSpec.describe API::Entities::ProjectImportStatus do
RSpec.describe API::Entities::ProjectImportStatus, :aggregate_failures do
describe '#as_json' do
subject { entity.as_json }
let(:correlation_id) { 'cid' }
context 'when no import state exists' do
let(:entity) { described_class.new(build(:project)) }
let(:entity) { described_class.new(build(:project, import_type: 'import_type')) }
it 'includes basic fields and no failures' do
expect(subject[:import_status]).to eq('none')
expect(subject[:import_type]).to eq('import_type')
expect(subject[:correlation_id]).to be_nil
expect(subject[:import_error]).to be_nil
expect(subject[:failed_relations]).to eq([])
@ -20,11 +21,12 @@ RSpec.describe API::Entities::ProjectImportStatus do
end
context 'when import has not finished yet' do
let(:project) { create(:project, :import_scheduled, import_correlation_id: correlation_id) }
let(:entity) { described_class.new(project) }
let(:project) { create(:project, :import_scheduled, import_type: 'import_type', import_correlation_id: correlation_id) }
let(:entity) { described_class.new(project, import_type: 'import_type') }
it 'includes basic fields and no failures', :aggregate_failures do
it 'includes basic fields and no failures' do
expect(subject[:import_status]).to eq('scheduled')
expect(subject[:import_type]).to eq('import_type')
expect(subject[:correlation_id]).to eq(correlation_id)
expect(subject[:import_error]).to be_nil
expect(subject[:failed_relations]).to eq([])
@ -32,25 +34,43 @@ RSpec.describe API::Entities::ProjectImportStatus do
end
context 'when import has finished with failed relations' do
let(:project) { create(:project, :import_finished, import_correlation_id: correlation_id) }
let(:project) { create(:project, :import_finished, import_type: 'import_type', import_correlation_id: correlation_id) }
let(:entity) { described_class.new(project) }
it 'includes basic fields with failed relations', :aggregate_failures do
create(:import_failure, :hard_failure, project: project, correlation_id_value: correlation_id)
it 'includes basic fields with failed relations' do
create(
:import_failure,
:hard_failure,
project: project,
correlation_id_value: correlation_id,
relation_key: 'issues',
relation_index: 1
)
# Doesn't show soft failures
create(:import_failure, :soft_failure)
expect(subject[:import_status]).to eq('finished')
expect(subject[:import_type]).to eq('import_type')
expect(subject[:correlation_id]).to eq(correlation_id)
expect(subject[:import_error]).to be_nil
expect(subject[:failed_relations]).not_to be_empty
expect(subject[:failed_relations].length).to eq(1)
failure = subject[:failed_relations].last
expect(failure[:exception_class]).to eq('RuntimeError')
expect(failure[:source]).to eq('method_call')
expect(failure[:relation_name]).to eq('issues')
expect(failure[:line_number]).to eq(1)
end
end
context 'when import has failed' do
let(:project) { create(:project, :import_failed, import_correlation_id: correlation_id, import_last_error: 'error') }
let(:project) { create(:project, :import_failed, import_type: 'import_type', import_correlation_id: correlation_id, import_last_error: 'error') }
let(:entity) { described_class.new(project) }
it 'includes basic fields with import error', :aggregate_failures do
it 'includes basic fields with import error' do
expect(subject[:import_status]).to eq('failed')
expect(subject[:import_type]).to eq('import_type')
expect(subject[:correlation_id]).to eq(correlation_id)
expect(subject[:import_error]).to eq('error')
expect(subject[:failed_relations]).to eq([])

View file

@ -1,14 +1,25 @@
# frozen_string_literal: true
require 'spec_helper'
require 'fast_spec_helper'
RSpec.describe Gitlab::SidekiqStatus::ClientMiddleware do
describe '#call' do
it 'tracks the job in Redis' do
expect(Gitlab::SidekiqStatus).to receive(:set).with('123', Gitlab::SidekiqStatus::DEFAULT_EXPIRATION)
context 'when the job has status_expiration set' do
it 'tracks the job in Redis with a value of 2' do
expect(Gitlab::SidekiqStatus).to receive(:set).with('123', 1.hour.to_i, value: 2)
described_class.new
.call('Foo', { 'jid' => '123' }, double(:queue), double(:pool)) { nil }
described_class.new
.call('Foo', { 'jid' => '123', 'status_expiration' => 1.hour.to_i }, double(:queue), double(:pool)) { nil }
end
end
context 'when the job does not have status_expiration set' do
it 'tracks the job in Redis with a value of 1' do
expect(Gitlab::SidekiqStatus).to receive(:set).with('123', Gitlab::SidekiqStatus::DEFAULT_EXPIRATION, value: 1)
described_class.new
.call('Foo', { 'jid' => '123' }, double(:queue), double(:pool)) { nil }
end
end
end
end

View file

@ -12,6 +12,31 @@ RSpec.describe Gitlab::SidekiqStatus, :clean_gitlab_redis_queues, :clean_gitlab_
Sidekiq.redis do |redis|
expect(redis.exists(key)).to eq(true)
expect(redis.ttl(key) > 0).to eq(true)
expect(redis.get(key)).to eq(described_class::DEFAULT_VALUE.to_s)
end
end
it 'allows overriding the expiration time' do
described_class.set('123', described_class::DEFAULT_EXPIRATION * 2)
key = described_class.key_for('123')
Sidekiq.redis do |redis|
expect(redis.exists(key)).to eq(true)
expect(redis.ttl(key) > described_class::DEFAULT_EXPIRATION).to eq(true)
expect(redis.get(key)).to eq(described_class::DEFAULT_VALUE.to_s)
end
end
it 'allows overriding the default value' do
described_class.set('123', value: 2)
key = described_class.key_for('123')
Sidekiq.redis do |redis|
expect(redis.exists(key)).to eq(true)
expect(redis.ttl(key) > 0).to eq(true)
expect(redis.get(key)).to eq('2')
end
end
end
@ -88,7 +113,7 @@ RSpec.describe Gitlab::SidekiqStatus, :clean_gitlab_redis_queues, :clean_gitlab_
end
end
describe 'completed' do
describe '.completed_jids' do
it 'returns the completed job' do
expect(described_class.completed_jids(%w(123))).to eq(['123'])
end
@ -100,4 +125,46 @@ RSpec.describe Gitlab::SidekiqStatus, :clean_gitlab_redis_queues, :clean_gitlab_
expect(described_class.completed_jids(%w(123 456 789))).to eq(['789'])
end
end
describe '.job_status' do
it 'returns an array of boolean values' do
described_class.set('123')
described_class.set('456')
described_class.unset('123')
expect(described_class.job_status(%w(123 456 789))).to eq([false, true, false])
end
it 'handles an empty array' do
expect(described_class.job_status([])).to eq([])
end
context 'when log_implicit_sidekiq_status_calls is enabled' do
it 'logs keys that contained the default value' do
described_class.set('123', value: 2)
described_class.set('456')
described_class.set('012')
expect(Sidekiq.logger).to receive(:info).with(message: described_class::DEFAULT_VALUE_MESSAGE,
keys: [described_class.key_for('456'), described_class.key_for('012')])
expect(described_class.job_status(%w(123 456 789 012))).to eq([true, true, false, true])
end
end
context 'when log_implicit_sidekiq_status_calls is disabled' do
before do
stub_feature_flags(log_implicit_sidekiq_status_calls: false)
end
it 'does not perform any logging' do
described_class.set('123', value: 2)
described_class.set('456')
expect(Sidekiq.logger).not_to receive(:info)
expect(described_class.job_status(%w(123 456 789))).to eq([true, true, false])
end
end
end
end

View file

@ -86,7 +86,7 @@ RSpec.describe Tooling::Danger::ProjectHelper do
'rubocop/foo' | [:backend]
'.rubocop.yml' | [:backend]
'.rubocop_todo.yml' | [:backend]
'.rubocop_manual_todo.yml' | [:backend]
'.rubocop_todo/cop/name.yml' | [:backend]
'spec/foo' | [:backend]
'spec/foo/bar' | [:backend]
@ -192,6 +192,7 @@ RSpec.describe Tooling::Danger::ProjectHelper do
'spec/frontend/tracking_spec.js' | [:frontend, :product_intelligence]
'lib/gitlab/usage_database/foo.rb' | [:backend]
'config/metrics/counts_7d/test_metric.yml' | [:product_intelligence]
'config/events/snowplow_event.yml' | [:product_intelligence]
'config/metrics/schema.json' | [:product_intelligence]
'doc/api/usage_data.md' | [:product_intelligence]
'spec/lib/gitlab/usage_data_spec.rb' | [:product_intelligence]

View file

@ -127,7 +127,7 @@ module Tooling
%r{\A((spec/)?lib/generators/gitlab/usage_metric_)} => [:product_intelligence],
%r{\A((ee|jh)/)?lib/gitlab/usage_data_counters/.*\.yml\z} => [:product_intelligence],
%r{\A((ee|jh)/)?config/metrics/((.*\.yml)|(schema\.json))\z} => [:product_intelligence],
%r{\A((ee|jh)/)?config/(events|metrics)/((.*\.yml)|(schema\.json))\z} => [:product_intelligence],
%r{\A((ee|jh)/)?lib/gitlab/usage_data(_counters)?(/|\.rb)} => [:backend, :product_intelligence],
%r{\A(
lib/gitlab/tracking\.rb |
@ -151,7 +151,8 @@ module Tooling
%r{\A((ee|jh)/)?vendor/} => :backend,
%r{\A(Gemfile|Gemfile.lock|Rakefile)\z} => :backend,
%r{\A[A-Z_]+_VERSION\z} => :backend,
%r{\A\.rubocop((_manual)?_todo)?\.yml\z} => :backend,
%r{\A\.rubocop(_todo)?\.yml\z} => :backend,
%r{\A\.rubocop_todo/.*\.yml\z} => :backend,
%r{\Afile_hooks/} => :backend,
%r{\A((ee|jh)/)?qa/} => :qa,