rspec unit pg14 17/28
Passed Started
by
@gitlab-bot

🤖 GitLab Bot 🤖
1Running with gitlab-runner 16.1.0~beta.59.g83c66823 (83c66823)2 on green-5.private.runners-manager.gitlab.com/gitlab.com/gitlab-org Zi_8oswQ, system ID: s_8a4f217c24b63 feature flags: FF_NETWORK_PER_BUILD:true, FF_USE_FASTZIP:true, FF_USE_IMPROVED_URL_MASKING:true6Using Docker executor with image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.20-rust-1.65-node-18.17-postgresql-14:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-yarn-1.22-graphicsmagick-1.3.36 ...7Starting service registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-14-pgvector-0.4.1 ...8Authenticating with credentials from job payload (GitLab Registry)9Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-14-pgvector-0.4.1 ...10Using docker image sha256:2e09e9db92541ed81b1c00f1d5186f8c262d8b84e8d1755676ea4b25614f30c4 for registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-14-pgvector-0.4.1 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:afc7bd7a60824044709543a6a700385e412d750d9ab4fc72b427e335e1d0f3ec ...11WARNING: Service registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 is already created. Ignoring.12WARNING: Service registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 is already created. Ignoring.13Starting service registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 ...14Authenticating with credentials from job payload (GitLab Registry)15Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 ...16Using docker image sha256:a9a90ece30d9630d694ab1997cd103ea8ec729789451b983a75c7b58b0062d45 for registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:7ef36177d5d0bc554fbb63d8210ae751bcc538bea7905b51d078d9ab90a755fa ...17Starting service redis:6.2-alpine ...18Pulling docker image redis:6.2-alpine ...19Using docker image sha256:d0675d033b87382205d08b598a004a99a1f6c4bd377cc86bb6df8957ce7dbb1c for redis:6.2-alpine with digest redis@sha256:740b5c973d1c9eea6e124a3905ba73d32354d0549f98ccc9e67af1af2a9ba478 ...20Waiting for services to be up and running (timeout 30 seconds)...21Authenticating with credentials from job payload (GitLab Registry)22Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.20-rust-1.65-node-18.17-postgresql-14:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-yarn-1.22-graphicsmagick-1.3.36 ...23Using docker image sha256:24a9e92645b17c878623efd51b7564f81e480bd281e94d7f33971082e0ca80e0 for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.20-rust-1.65-node-18.17-postgresql-14:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.20-rust-1.65-node-18.17-postgresql-14@sha256:ca349d228348f199cb57f574476584f42aca338747393ed93a9032a0261afc4d ...25Running on runner-zi8oswq-project-278964-concurrent-0 via runner-zi8oswq-private-1691669800-ab646047...27Fetching changes with git depth set to 20...28Initialized empty Git repository in /builds/gitlab-org/gitlab/.git/29Created fresh repository.30remote: Enumerating objects: 145438, done. 31remote: Counting objects: 100% (145438/145438), done. 32remote: Compressing objects: 100% (96447/96447), done. 33remote: Total 145438 (delta 63547), reused 98646 (delta 43407), pack-reused 0 34Receiving objects: 100% (145438/145438), 119.87 MiB | 30.53 MiB/s, done.35Resolving deltas: 100% (63547/63547), done.37 * [new ref] refs/pipelines/962009091 -> refs/pipelines/96200909138Checking out 2a9b6857 as detached HEAD (ref is refs/merge-requests/128972/merge)...39Skipping Git submodules setup40$ git remote set-url origin "${CI_REPOSITORY_URL}"42Checking cache for ruby-gems-debian-bullseye-ruby-3.0-16...43Downloading cache.zip from https://storage.googleapis.com/gitlab-com-runners-cache/project/278964/ruby-gems-debian-bullseye-ruby-3.0-16 44Successfully extracted cache46Downloading artifacts for compile-test-assets (4841630955)...47Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4841630955 responseStatus=200 OK token=64_etVJp48Downloading artifacts for detect-tests (4841630974)...49Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4841630974 responseStatus=200 OK token=64_etVJp50Downloading artifacts for retrieve-tests-metadata (4841630985)...51Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4841630985 responseStatus=200 OK token=64_etVJp52Downloading artifacts for setup-test-env (4841630964)...53Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4841630964 responseStatus=200 OK token=64_etVJp55Using docker image sha256:24a9e92645b17c878623efd51b7564f81e480bd281e94d7f33971082e0ca80e0 for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.20-rust-1.65-node-18.17-postgresql-14:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.20-rust-1.65-node-18.17-postgresql-14@sha256:ca349d228348f199cb57f574476584f42aca338747393ed93a9032a0261afc4d ...56$ echo $FOSS_ONLY57$ [ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb58$ export GOPATH=$CI_PROJECT_DIR/.go59$ mkdir -p $GOPATH60$ source scripts/utils.sh61$ source scripts/prepare_build.sh93Using decomposed database config (config/database.yml.decomposed-postgresql)94Geo DB won't be set up.95Embedding DB won't be set up.107$ source ./scripts/rspec_helpers.sh108$ run_timed_command "gem install knapsack --no-document"109$ gem install knapsack --no-document110Successfully installed knapsack-4.0.01111 gem installed112==> 'gem install knapsack --no-document' succeeded in 0 seconds.113$ section_start "gitaly-test-spawn" "Spawning Gitaly"; scripts/gitaly-test-spawn; section_end "gitaly-test-spawn"118$ export RSPEC_SKIPPED_TESTS_REPORT_PATH="rspec/skipped_tests-${CI_JOB_ID}.txt"119$ export RSPEC_RETRIED_TESTS_REPORT_PATH="rspec/retried_tests-${CI_JOB_ID}.txt"120$ rspec_paralellized_job "--fail-fast=${RSPEC_FAIL_FAST_THRESHOLD} --tag ~quarantine --tag ~level:background_migration --tag ~click_house"121SKIP_FLAKY_TESTS_AUTOMATICALLY: 122RETRY_FAILED_TESTS_IN_NEW_PROCESS: true123KNAPSACK_GENERATE_REPORT: true124FLAKY_RSPEC_GENERATE_REPORT: true125KNAPSACK_TEST_FILE_PATTERN: spec/{bin,channels,components,config,contracts,db,dependencies,elastic,elastic_integration,experiments,factories,finders,frontend,graphql,haml_lint,helpers,initializers,lib,metrics_server,models,policies,presenters,rack_servers,replicators,routing,rubocop,scripts,serializers,services,sidekiq,sidekiq_cluster,spam,support_specs,tasks,uploaders,validators,views,workers,tooling}{,/**/}*_spec.rb126KNAPSACK_LOG_LEVEL: debug127KNAPSACK_REPORT_PATH: knapsack/rspec_unit_pg14_17_28_report.json128FLAKY_RSPEC_SUITE_REPORT_PATH: rspec/flaky/report-suite.json129FLAKY_RSPEC_REPORT_PATH: rspec/flaky/all_rspec_unit_pg14_17_28_report.json130NEW_FLAKY_RSPEC_REPORT_PATH: rspec/flaky/new_rspec_unit_pg14_17_28_report.json131RSPEC_SKIPPED_TESTS_REPORT_PATH: rspec/skipped_tests-4841631207.txt132CRYSTALBALL: 133RSPEC_TESTS_MAPPING_ENABLED: 134RSPEC_TESTS_FILTER_FILE: 135Shell set options (set -o) enabled:136braceexpand on137hashall on138interactive-comments on139pipefail on140Running command: bundle exec rspec -Ispec -rspec_helper --color --failure-exit-code 1 --error-exit-code 2 --format documentation --format Support::Formatters::JsonFormatter --out rspec/rspec-4841631207.json --format RspecJunitFormatter --out rspec/rspec-4841631207.xml --fail-fast=20 --tag ~quarantine --tag ~level:background_migration --tag ~click_house -- spec/models/environment_spec.rb spec/models/container_repository_spec.rb spec/lib/gitlab/redis/multi_store_spec.rb spec/services/merge_requests/create_service_spec.rb spec/lib/gitlab/github_import/importer/protected_branch_importer_spec.rb spec/services/system_notes/issuables_service_spec.rb spec/lib/gitlab/background_migration/backfill_work_item_type_id_for_issues_spec.rb spec/lib/gitlab/color_spec.rb spec/tooling/danger/project_helper_spec.rb spec/finders/releases/group_releases_finder_spec.rb spec/lib/backup/repositories_spec.rb spec/services/alert_management/process_prometheus_alert_service_spec.rb spec/models/protected_branch_spec.rb spec/workers/emails_on_push_worker_spec.rb spec/lib/gitlab/diff/file_collection/merge_request_diff_batch_spec.rb spec/services/todos/destroy/group_private_service_spec.rb spec/services/search_service_spec.rb spec/models/resource_label_event_spec.rb spec/lib/gitlab/utils/usage_data_spec.rb spec/lib/gitlab/repository_cache_adapter_spec.rb spec/services/packages/nuget/update_package_from_metadata_service_spec.rb spec/models/commit_range_spec.rb spec/presenters/ci/pipeline_presenter_spec.rb spec/lib/gitlab/database/postgres_foreign_key_spec.rb spec/models/integrations/datadog_spec.rb spec/models/concerns/routable_spec.rb spec/lib/gitlab/git/diff_spec.rb spec/services/search/global_service_spec.rb spec/lib/gitlab/gpg_spec.rb spec/graphql/mutations/issues/update_spec.rb spec/lib/gitlab/email/handler/create_note_on_issuable_handler_spec.rb spec/lib/api/helpers/packages/dependency_proxy_helpers_spec.rb spec/models/concerns/chronic_duration_attribute_spec.rb spec/graphql/types/ci/job_token_scope_type_spec.rb spec/models/snippet_input_action_spec.rb spec/services/ci/delete_unit_tests_service_spec.rb spec/services/ci/pipeline_artifacts/create_code_quality_mr_diff_report_service_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/count_bulk_imports_entities_metric_spec.rb spec/lib/gitlab/redis/trace_chunks_spec.rb spec/finders/pending_todos_finder_spec.rb spec/policies/clusters/cluster_policy_spec.rb spec/services/todos/destroy/unauthorized_features_service_spec.rb spec/lib/gitlab/data_builder/pipeline_spec.rb spec/services/merge_requests/post_merge_service_spec.rb spec/lib/gitlab/application_context_spec.rb spec/lib/gitlab/content_security_policy/config_loader_spec.rb spec/lib/sidebars/projects/menus/settings_menu_spec.rb spec/models/customer_relations/issue_contact_spec.rb spec/lib/gitlab/ci/config/entry/cache_spec.rb spec/services/todos/destroy/project_private_service_spec.rb spec/services/clusters/cleanup/project_namespace_service_spec.rb spec/workers/users/deactivate_dormant_users_worker_spec.rb spec/lib/atlassian/jira_connect/serializers/deployment_entity_spec.rb spec/services/work_items/create_from_task_service_spec.rb spec/lib/gitlab/diff/parser_spec.rb spec/services/commits/cherry_pick_service_spec.rb spec/workers/auto_devops/disable_worker_spec.rb spec/lib/gitlab/checks/push_check_spec.rb spec/workers/projects/post_creation_worker_spec.rb spec/lib/gitlab/slash_commands/issue_new_spec.rb spec/finders/abuse_reports_finder_spec.rb spec/tasks/gitlab/artifacts/migrate_rake_spec.rb spec/graphql/resolvers/blobs_resolver_spec.rb spec/models/ci/namespace_mirror_spec.rb spec/services/merge_requests/add_context_service_spec.rb spec/models/packages/npm/metadata_cache_spec.rb spec/workers/deployments/hooks_worker_spec.rb spec/graphql/types/snippet_type_spec.rb spec/workers/bulk_import_worker_spec.rb spec/lib/gitlab/ci/reports/accessibility_reports_comparer_spec.rb spec/models/issue_email_participant_spec.rb spec/tasks/gitlab/service_desk_email_rake_spec.rb spec/services/import/gitlab_projects/file_acquisition_strategies/remote_file_s3_spec.rb spec/lib/gitlab/ci/config/entry/service_spec.rb spec/lib/gitlab/database/async_constraints/postgres_async_constraint_validation_spec.rb spec/lib/gitlab/usage/metrics/aggregates/aggregate_spec.rb spec/initializers/hangouts_chat_http_override_spec.rb spec/models/packages/debian/group_distribution_key_spec.rb spec/services/environments/canary_ingress/update_service_spec.rb spec/lib/gitlab/ci/pipeline/expression/lexeme/pattern_spec.rb spec/serializers/admin/abuse_report_details_entity_spec.rb spec/lib/api/entities/release_spec.rb spec/finders/concerns/finder_with_group_hierarchy_spec.rb spec/lib/gitlab/work_items/work_item_hierarchy_spec.rb spec/models/preloaders/environments/deployment_preloader_spec.rb spec/lib/gitlab/usage/metrics/query_spec.rb spec/rubocop/cop/rspec/factory_bot/inline_association_spec.rb spec/lib/gitlab/search/params_spec.rb spec/services/lfs/push_service_spec.rb spec/workers/issues/rebalancing_worker_spec.rb spec/services/two_factor/destroy_service_spec.rb spec/lib/gitlab/slash_commands/presenters/issue_show_spec.rb spec/lib/gitlab/slash_commands/presenters/issue_move_spec.rb spec/services/design_management/copy_design_collection/queue_service_spec.rb spec/lib/gitlab/prometheus/additional_metrics_parser_spec.rb spec/models/namespace/aggregation_schedule_spec.rb spec/lib/gitlab/ci/config/entry/kubernetes_spec.rb spec/lib/banzai/filter_array_spec.rb spec/services/design_management/design_user_notes_count_service_spec.rb spec/graphql/resolvers/ci/runners_resolver_spec.rb spec/models/concerns/ci/bulk_insertable_tags_spec.rb spec/services/todos/destroy/destroyed_issuable_service_spec.rb spec/services/error_tracking/base_service_spec.rb spec/workers/gitlab/jira_import/stage/start_import_worker_spec.rb spec/lib/gitlab/middleware/basic_health_check_spec.rb spec/services/packages/composer/composer_json_service_spec.rb spec/services/import/fogbugz_service_spec.rb spec/rubocop/cop/migration/versioned_migration_class_spec.rb spec/models/packages/composer/metadatum_spec.rb spec/rubocop/cop/rspec/factory_bot/avoid_create_spec.rb spec/services/ide/terminal_config_service_spec.rb spec/helpers/admin/user_actions_helper_spec.rb spec/lib/gitlab/ci/status/build/retried_spec.rb spec/lib/gitlab/ci/templates/terraform_module_gitlab_ci_yaml_spec.rb spec/rubocop/cop/usage_data/large_table_spec.rb spec/services/projects/fetch_statistics_increment_service_spec.rb spec/models/issue_assignee_spec.rb spec/lib/gitlab/global_id_spec.rb spec/lib/bitbucket/representation/repo_spec.rb spec/lib/gitlab/etag_caching/router/graphql_spec.rb spec/models/blob_viewer/gitlab_ci_yml_spec.rb spec/views/notify/changed_milestone_email.html.haml_spec.rb spec/lib/gitlab/ci/templates/5_minute_production_app_ci_yaml_spec.rb spec/services/packages/remove_tag_service_spec.rb spec/lib/gitlab/database/partitioning/detached_partition_dropper_spec.rb spec/lib/api/entities/ci/pipeline_spec.rb spec/lib/gitlab/ci/status/pipeline/blocked_spec.rb spec/lib/api/entities/deployment_extended_spec.rb spec/components/pajamas/radio_component_spec.rb spec/views/layouts/_head.html.haml_spec.rb spec/services/service_desk/custom_emails/create_service_spec.rb spec/lib/gitlab/auth/key_status_checker_spec.rb spec/models/preloaders/user_max_access_level_in_groups_preloader_spec.rb spec/lib/gitlab/database/health_status/indicators/autovacuum_active_on_table_spec.rb spec/services/packages/create_package_file_service_spec.rb spec/services/webauthn/register_service_spec.rb spec/workers/stuck_export_jobs_worker_spec.rb spec/services/work_items/delete_service_spec.rb spec/lib/gitlab/background_migration/prune_stale_project_export_jobs_spec.rb spec/workers/issues/reschedule_stuck_issue_rebalances_worker_spec.rb spec/graphql/resolvers/ci/group_runners_resolver_spec.rb spec/lib/constraints/group_url_constrainer_spec.rb spec/graphql/resolvers/design_management/design_at_version_resolver_spec.rb spec/lib/gitlab/ci/reports/security/aggregated_report_spec.rb spec/services/packages/rpm/parse_package_service_spec.rb spec/services/merge_requests/mergeability/check_discussions_status_service_spec.rb spec/lib/gitlab/x509/tag_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/count_ci_runners_project_type_active_online_metric_spec.rb spec/models/x509_issuer_spec.rb spec/graphql/resolvers/data_transfer/project_data_transfer_resolver_spec.rb spec/finders/packages/package_file_finder_spec.rb spec/lib/backup/file_backup_error_spec.rb spec/lib/gitlab/background_migration/mailers/unconfirm_mailer_spec.rb spec/workers/gitlab/github_import/pull_requests/import_review_worker_spec.rb spec/lib/gitlab/checks/matching_merge_request_spec.rb spec/workers/expire_build_artifacts_worker_spec.rb spec/services/ci/create_pipeline_service/pre_post_stages_spec.rb spec/views/dashboard/projects/_nav.html.haml_spec.rb spec/models/group/crm_settings_spec.rb spec/lib/gitlab/request_endpoints_spec.rb spec/rubocop/cop/graphql/authorize_types_spec.rb spec/serializers/import/github_org_entity_spec.rb spec/lib/bitbucket/representation/pull_request_comment_spec.rb spec/lib/bulk_imports/projects/pipelines/project_pipeline_spec.rb spec/presenters/packages/pypi/simple_index_presenter_spec.rb spec/workers/todos_destroyer/project_private_worker_spec.rb spec/models/integrations/chat_message/merge_message_spec.rb spec/workers/jira_connect/sync_deployments_worker_spec.rb spec/workers/gitlab/bitbucket_server_import/stage/import_pull_requests_worker_spec.rb spec/models/projects/ci_feature_usage_spec.rb spec/services/protected_tags/create_service_spec.rb spec/models/integrations/irker_spec.rb spec/lib/api/every_api_endpoint_spec.rb spec/lib/constraints/user_url_constrainer_spec.rb spec/graphql/mutations/customer_relations/contacts/update_spec.rb spec/initializers/pages_storage_check_spec.rb spec/services/environments/reset_auto_stop_service_spec.rb spec/services/export_csv/base_service_spec.rb spec/lib/gitlab/ci/build/credentials/factory_spec.rb spec/models/webauthn_registration_spec.rb spec/lib/gitlab/gitaly_client/conflict_files_stitcher_spec.rb spec/rubocop/cop/gitlab/doc_url_spec.rb spec/rubocop/cop/gitlab/predicate_memoization_spec.rb spec/services/packages/rubygems/create_dependencies_service_spec.rb spec/helpers/feature_flags_helper_spec.rb spec/workers/ci/build_prepare_worker_spec.rb spec/services/ci/copy_cross_database_associations_service_spec.rb spec/lib/gitlab/sidekiq_signals_spec.rb spec/views/shared/milestones/_top.html.haml_spec.rb spec/models/concerns/stepable_spec.rb spec/lib/gitlab/import_export/import_export_spec.rb spec/lib/sidebars/projects/menus/security_compliance_menu_spec.rb spec/graphql/resolvers/ci/runner_setup_resolver_spec.rb spec/lib/gitlab/loggable_spec.rb spec/rubocop/cop/destroy_all_spec.rb spec/workers/metrics/global_metrics_update_worker_spec.rb spec/lib/api/entities/bulk_imports/export_batch_status_spec.rb spec/graphql/resolvers/group_resolver_spec.rb spec/support_specs/capybara_slow_finder_spec.rb spec/lib/sidebars/user_profile/panel_spec.rb spec/lib/gitlab/setup_helper/workhorse_spec.rb spec/lib/api/entities/bulk_imports/export_status_spec.rb spec/serializers/import/github_realtime_repo_serializer_spec.rb spec/views/groups/show.html.haml_spec.rb spec/lib/banzai/filter/ascii_doc_post_processing_filter_spec.rb spec/services/ml/find_or_create_experiment_service_spec.rb spec/models/jira_connect_subscription_spec.rb spec/models/packages/rubygems/metadatum_spec.rb spec/lib/gitlab/ci/ansi2json/result_spec.rb spec/rubocop/cop/avoid_becomes_spec.rb spec/rubocop/cop/rspec/avoid_conditional_statements_spec.rb spec/tooling/danger/config_files_spec.rb spec/lib/gitlab/github_import/representation/diff_notes/discussion_id_spec.rb spec/routing/directs/milestone_spec.rb spec/lib/sidebars/organizations/menus/scope_menu_spec.rb spec/lib/gitlab/webpack/graphql_known_operations_spec.rb spec/initializers/hashie_mash_permitted_patch_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/snowplow_enabled_metric_spec.rb spec/helpers/ssh_keys_helper_spec.rb spec/graphql/types/ci/config/need_type_spec.rb spec/workers/member_invitation_reminder_emails_worker_spec.rb spec/lib/gitlab/render_timeout_spec.rb spec/validators/html_safety_validator_spec.rb spec/lib/gitlab/database/async_constraints/validators_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/count_ci_runners_group_type_active_metric_spec.rb spec/lib/gitlab/middleware/sidekiq_web_static_spec.rb spec/graphql/types/ci/runner_setup_type_spec.rb spec/lib/atlassian/jira_connect/serializers/base_entity_spec.rb spec/graphql/types/ci/instance_variable_type_spec.rb spec/lib/gitlab/email/hook/additional_headers_interceptor_spec.rb spec/initializers/remove_active_job_execute_callback_spec.rb spec/lib/bulk_imports/common/extractors/graphql_extractor_spec.rb spec/services/wiki_pages/base_service_spec.rb spec/scripts/api/create_merge_request_note_spec.rb spec/services/authorized_project_update/project_access_changed_service_spec.rb spec/tooling/danger/specs/project_factory_suggestion_spec.rb spec/helpers/export_helper_spec.rb spec/lib/gitlab/metrics/dashboard/validator/custom_formats_spec.rb spec/workers/todos_destroyer/group_private_worker_spec.rb spec/lib/gitlab/ci/config/external/mapper/normalizer_spec.rb spec/lib/gitlab/kubernetes/role_spec.rbKnapsack report generator started!141/builds/gitlab-org/gitlab/ee/app/services/remote_development/service_response_factory.rb:41: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!142/builds/gitlab-org/gitlab/ee/app/services/remote_development/workspaces/create_service.rb:28: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!143/builds/gitlab-org/gitlab/ee/app/services/remote_development/workspaces/reconcile_service.rb:38: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!144/builds/gitlab-org/gitlab/ee/app/services/remote_development/workspaces/update_service.rb:28: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!145/builds/gitlab-org/gitlab/ee/lib/remote_development/agent_config/main.rb:32: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!146/builds/gitlab-org/gitlab/ee/lib/remote_development/agent_config/updater.rb:11: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!147/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/authorizer.rb:12: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!148/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/authorizer.rb:13: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!149/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/creator.rb:17: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!150/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/creator.rb:24: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!151/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/creator.rb:25: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!152/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/creator.rb:28: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!153/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/devfile_fetcher.rb:15: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!154/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/devfile_fetcher.rb:16: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!155/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/devfile_flattener.rb:12: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!156/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/editor_component_injector.rb:12: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!157/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/editor_component_injector.rb:17: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!158/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/editor_component_injector.rb:18: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!159/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/post_flatten_devfile_validator.rb:43: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!160/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/post_flatten_devfile_validator.rb:54: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!161/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/post_flatten_devfile_validator.rb:102: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!162/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/post_flatten_devfile_validator.rb:126: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!163/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/post_flatten_devfile_validator.rb:159: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!164/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/post_flatten_devfile_validator.rb:202: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!165/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/post_flatten_devfile_validator.rb:235: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!166/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/pre_flatten_devfile_validator.rb:24: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!167/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/pre_flatten_devfile_validator.rb:52: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!168/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/project_cloner_component_injector.rb:12: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!169/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/project_cloner_component_injector.rb:17: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!170/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/project_cloner_component_injector.rb:18: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!171/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/project_cloner_component_injector.rb:23: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!172/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/volume_component_injector.rb:12: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!173/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/volume_component_injector.rb:13: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!174/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/volume_component_injector.rb:14: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!175/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/reconcile/main.rb:43: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!176/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/update/authorizer.rb:12: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!177/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/update/updater.rb:12: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!178/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/reconcile/input/agent_infos_observer.rb:15: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!179/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/reconcile/input/params_extractor.rb:14: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!180/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/reconcile/input/params_extractor.rb:16: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!181/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/reconcile/input/params_to_infos_converter.rb:14: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!182/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/reconcile/input/params_validator.rb:15: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!183/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/reconcile/output/rails_infos_observer.rb:11: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!184/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/reconcile/output/workspaces_to_rails_infos_converter.rb:15: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!185/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/reconcile/persistence/orphaned_workspaces_observer.rb:12: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!186/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/reconcile/persistence/workspaces_from_agent_infos_updater.rb:15: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!187/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/reconcile/persistence/workspaces_to_be_returned_finder.rb:16: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!188/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/reconcile/persistence/workspaces_to_be_returned_updater.rb:11: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!189Run options: exclude {:quarantine=>true, :level=>"background_migration", :click_house=>true}190Test environment set up in 0.603931404 seconds191Environment192 is expected to be a kind of ReactiveCaching193 is expected to nullify if blank :external_url194 is expected to nullify if blank :kubernetes_namespace195 is expected to belong to project required: true196 is expected to belong to merge_request optional: true197 is expected to belong to cluster_agent optional: true198 is expected to have many deployments199 is expected to have many alert_management_alerts200 is expected to have one upcoming_deployment201 is expected to have one latest_opened_most_severe_alert202 is expected to delegate #manual_actions to the #last_deployment object203 is expected to validate that :name cannot be empty/falsy204 is expected to validate that :name is case-sensitively unique within the scope of :project_id205 is expected to validate that the length of :name is at most 255206 is expected to validate that :slug is case-sensitively unique within the scope of :project_id207 is expected to validate that the length of :slug is at most 24208 is expected to validate that the length of :external_url is at most 255209 is expected to validate that the length of :kubernetes_namespace is at most 63210 validation211 does not become invalid record when external_url is empty212 does not allow changes to merge_request213 for an environment that has no merge request associated214 for an environment that has a merge request associated215 tier216 presence is checked217 during create and update218 validate and sanitize external url219 source_external_url: nil, expected_error_message: nil220 sets an external URL or an error221 source_external_url: "http://example.com", expected_error_message: nil222 sets an external URL or an error223 source_external_url: "example.com", expected_error_message: nil224 sets an external URL or an error225 source_external_url: "www.example.io", expected_error_message: nil226 sets an external URL or an error227 source_external_url: "http://$URL", expected_error_message: nil228 sets an external URL or an error229 source_external_url: "http://$(URL)", expected_error_message: nil230 sets an external URL or an error231 source_external_url: "custom://example.com", expected_error_message: nil232 sets an external URL or an error233 source_external_url: "1.1.1.1", expected_error_message: nil234 sets an external URL or an error235 source_external_url: "$BASE_URL/${CI_COMMIT_REF_NAME}", expected_error_message: nil236 sets an external URL or an error237 source_external_url: "$ENVIRONMENT_URL", expected_error_message: nil238 sets an external URL or an error239 source_external_url: "https://$SUB.$MAIN", expected_error_message: nil240 sets an external URL or an error241 source_external_url: "https://$SUB-$REGION.$MAIN", expected_error_message: nil242 sets an external URL or an error243 source_external_url: "https://example.com?param={()}", expected_error_message: nil244 sets an external URL or an error245 source_external_url: "http://XSS?x=<script>alert(1)</script>", expected_error_message: nil246 sets an external URL or an error247 source_external_url: "https://user:${VARIABLE}@example.io", expected_error_message: nil248 sets an external URL or an error249 source_external_url: "https://example.com/test?param={data}", expected_error_message: nil250 sets an external URL or an error251 source_external_url: "http://${URL}", expected_error_message: "URI is invalid"252 sets an external URL or an error253 source_external_url: "https://${URL}.example/test", expected_error_message: "URI is invalid"254 sets an external URL or an error255 source_external_url: "http://test${CI_MERGE_REQUEST_IID}.example.com", expected_error_message: "URI is invalid"256 sets an external URL or an error257 source_external_url: "javascript:alert(\"hello\")", expected_error_message: "javascript scheme is not allowed"258 sets an external URL or an error259 .before_save260 ensures environment tier when a new object is created261 ensures environment tier when an existing object is updated262 does not overwrite the existing environment tier263 .order_by_last_deployed_at264 returns the environments in ascending order of having been last deployed265 returns the environments in descending order of having been last deployed266 .stopped_review_apps267 is expected to contain exactly #<Environment id: 31, project_id: 29, name: "review/1", created_at: "2023-07-10 12:22:44.078125211 +0...: nil, tier: "development", merge_request_id: nil, cluster_agent_id: nil, kubernetes_namespace: nil>268 current timestamp269 is expected to contain exactly #<Environment id: 31, project_id: 29, name: "review/1", created_at: "2023-07-10 12:22:44.078125211 +0...: nil, tier: "development", merge_request_id: nil, cluster_agent_id: nil, kubernetes_namespace: nil> and #<Environment id: 32, project_id: 29, name: "review/2", created_at: "2023-08-10 12:22:44.177867759 +0...: nil, tier: "development", merge_request_id: nil, cluster_agent_id: nil, kubernetes_namespace: nil>270 scheduled deletion271 .scheduled_for_deletion272 is expected to contain exactly #<Environment id: 37, project_id: 30, name: "environment33", created_at: "2023-08-10 12:22:45.0421621...5142 +0000", tier: "other", merge_request_id: nil, cluster_agent_id: nil, kubernetes_namespace: nil>273 .not_scheduled_for_deletion274 is expected to contain exactly #<Environment id: 38, project_id: 31, name: "environment34", created_at: "2023-08-10 12:22:45.6417148...ete_at: nil, tier: "other", merge_request_id: nil, cluster_agent_id: nil, kubernetes_namespace: nil>275 .schedule_to_delete276 schedules the record for deletion277 state machine278 invalidates the cache after a change279 when environment has auto stop period280 clears auto stop period when the environment has stopped281 does not clear auto stop period when the environment has not stopped282 .for_name_like283 returns a found name284 when query is production285 returns a found name286 when query is productionA287 returns empty array288 when query is empty289 returns a found name290 when query is nil291 raises an error292 when query is partially matched in the middle of environment name293 returns empty array294 when query contains a wildcard character295 prevents wildcard injection296 .for_name_like_within_folder297 returns a found name298 does not return environment without folder299 when query is test-app300 returns a found name301 when query is test-app-a302 returns empty array303 when query is empty string304 returns only the foldered environments305 when query is nil306 raises an error307 when query is partially matched in the middle of environment name308 returns empty array309 when query contains a wildcard character310 prevents wildcard injection311 .auto_stoppable312 when environment is auto-stoppable313 is expected to eq [#<Environment id: 66, project_id: 50, name: "environment38", created_at: "2023-08-10 12:22:59.778875...te_at: nil, tier: "other", merge_request_id: nil, cluster_agent_id: nil, kubernetes_namespace: nil>]314 when environment is not auto-stoppable315 is expected to be empty316 .auto_deletable317 when environment is auto-deletable318 is expected to eq [#<Environment id: 68, project_id: 52, name: "environment40", created_at: "2023-08-10 12:23:01.319327...480 +0000", tier: "other", merge_request_id: nil, cluster_agent_id: nil, kubernetes_namespace: nil>]319 when environment is not auto-deletable320 is expected to be empty321 .pluck_names322 plucks names323 .for_tier324 returns the production environment when searching for production tier325 returns nothing when searching for staging tier326 .for_type327 filters by type328 #guess_tier329 name: "review/feature", tier: 3330 is expected to eq 3331 name: "review/product", tier: 3332 is expected to eq 3333 name: "DEV", tier: 3334 is expected to eq 3335 name: "development", tier: 3336 is expected to eq 3337 name: "trunk", tier: 3338 is expected to eq 3339 name: "dev", tier: 3340 is expected to eq 3341 name: "review/app", tier: 3342 is expected to eq 3343 name: "PRODUCTION", tier: 0344 is expected to eq 0345 name: "prod", tier: 0346 is expected to eq 0347 name: "prod-east-2", tier: 0348 is expected to eq 0349 name: "us-prod-east", tier: 0350 is expected to eq 0351 name: "fe-production", tier: 0352 is expected to eq 0353 name: "test", tier: 2354 is expected to eq 2355 name: "TEST", tier: 2356 is expected to eq 2357 name: "testing", tier: 2358 is expected to eq 2359 name: "testing-prd", tier: 2360 is expected to eq 2361 name: "acceptance-testing", tier: 2362 is expected to eq 2363 name: "production-test", tier: 2364 is expected to eq 2365 name: "test-production", tier: 2366 is expected to eq 2367 name: "QC", tier: 2368 is expected to eq 2369 name: "qa-env-2", tier: 2370 is expected to eq 2371 name: "gstg", tier: 1372 is expected to eq 1373 name: "staging", tier: 1374 is expected to eq 1375 name: "stage", tier: 1376 is expected to eq 1377 name: "Model", tier: 1378 is expected to eq 1379 name: "MODL", tier: 1380 is expected to eq 1381 name: "Pre-production", tier: 1382 is expected to eq 1383 name: "pre", tier: 1384 is expected to eq 1385 name: "Demo", tier: 1386 is expected to eq 1387 name: "staging", tier: 1388 is expected to eq 1389 name: "pre-prod", tier: 1390 is expected to eq 1391 name: "blue-kit-stage", tier: 1392 is expected to eq 1393 name: "nonprod", tier: 1394 is expected to eq 1395 name: "nonlive", tier: 1396 is expected to eq 1397 name: "non-prod", tier: 1398 is expected to eq 1399 name: "non-live", tier: 1400 is expected to eq 1401 name: "gprd", tier: 0402 is expected to eq 0403 name: "gprd-cny", tier: 0404 is expected to eq 0405 name: "production", tier: 0406 is expected to eq 0407 name: "Production", tier: 0408 is expected to eq 0409 name: "PRODUCTION", tier: 0410 is expected to eq 0411 name: "Production/eu", tier: 0412 is expected to eq 0413 name: "production/eu", tier: 0414 is expected to eq 0415 name: "PRODUCTION/EU", tier: 0416 is expected to eq 0417 name: "productioneu", tier: 0418 is expected to eq 0419 name: "store-produce", tier: 0420 is expected to eq 0421 name: "unproductive", tier: 0422 is expected to eq 0423 name: "production/www.gitlab.com", tier: 0424 is expected to eq 0425 name: "prod", tier: 0426 is expected to eq 0427 name: "PROD", tier: 0428 is expected to eq 0429 name: "Live", tier: 0430 is expected to eq 0431 name: "canary", tier: 4432 is expected to eq 4433 name: "other", tier: 4434 is expected to eq 4435 name: "EXP", tier: 4436 is expected to eq 4437 name: "something-else", tier: 4438 is expected to eq 4439 #expire_etag_cache440 changes the cached value441 .with_deployment442 when deployment has the specified sha443 is expected to eq [#<Environment id: 76, project_id: 60, name: "environment44", created_at: "2023-08-10 12:23:09.311227...te_at: nil, tier: "other", merge_request_id: nil, cluster_agent_id: nil, kubernetes_namespace: nil>]444 with success status filter445 is expected to be empty446 with created status filter447 is expected to contain exactly #<Environment id: 78, project_id: 62, name: "environment46", created_at: "2023-08-10 12:23:10.9162981...ete_at: nil, tier: "other", merge_request_id: nil, cluster_agent_id: nil, kubernetes_namespace: nil>448 when deployment does not have the specified sha449 is expected to be empty450 #folder_name451 when it is inside a folder452 returns a top-level folder name453 when the environment if a top-level item itself454 returns an environment name455 #name_without_type456 when it is inside a folder457 returns name without folder458 when the environment if a top-level item itself459 returns full name460 #includes_commit?461 without a last deployment462 returns false463 with a last deployment464 in the same branch465 returns true466 not in the same branch467 returns false468 #environment_type469 sets a environment type if name has multiple segments470 nullifies a type if it's a simple name471 #stop_actions_available?472 when no other actions473 is expected to be falsey474 when matching action is defined475 when environment is available476 is expected to be truthy477 when environment is stopped478 is expected to be falsey479 #stop_with_actions!480 behaves like stop with playing a teardown job481 when no other actions482 environment is available483 is expected to contain exactly484 environment is already stopped485 is expected to be stopped486 when matching action is defined487 when user is not allowed to stop environment488 raises an exception489 when user is allowed to stop environment490 when action did not yet finish491 returns the same action492 environment is not stopped493 if action did finish494 returns a new action of the same type when build job495 does nothing when bridge job (PENDING: No reason given)496 close action does not raise ActiveRecord::StaleObjectError497 successfully plays the job even if the job was a stale object when build job498 does nothing when bridge job (PENDING: No reason given)499 when there are more then one stop action for the environment500 returns the same actions501 when there are failed builds502 returns only stop actions from successful builds503 behaves like stop with playing a teardown job504 when no other actions505 environment is available506 is expected to contain exactly507 environment is already stopped508 is expected to be stopped509 when matching action is defined510 when user is not allowed to stop environment511 raises an exception512 when user is allowed to stop environment513 when action did not yet finish514 returns the same action515 environment is not stopped516 if action did finish517 returns a new action of the same type when build job (PENDING: No reason given)518 does nothing when bridge job519 close action does not raise ActiveRecord::StaleObjectError520 successfully plays the job even if the job was a stale object when build job (PENDING: No reason given)521 does nothing when bridge job522 when there are more then one stop action for the environment523 returns the same actions524 when there are failed builds525 returns only stop actions from successful builds526 #stop_actions527 when there are no deployments and builds528 returns empty array529 when there are multiple deployments with actions530 returns only the stop actions531 #last_deployment_group532 when there are no deployments and builds533 is expected to eq #<ActiveRecord::Relation []>534 when there are deployments for multiple pipelines535 returns the successful deployment jobs for the last deployment pipeline536 recently_updated_on_branch?537 when last deployment to environment is the most recent one538 is expected to equal true539 when last deployment to environment is not the most recent540 is expected to equal false541 #reset_auto_stop542 nullifies the auto_stop_at543 #actions_for544 returns a list of actions with matching environment545 .deployments546 when there is a deployment record with created status547 does not return the record548 when there is a deployment record with running status549 does not return the record550 when there is a deployment record with success status551 returns the record552 .last_deployment553 when there is an old deployment record554 when there is a deployment record with created status555 returns the previous deployment556 when there is a deployment record with running status557 returns the previous deployment558 when there is a deployment record with failed status559 returns the previous deployment560 when there is a deployment record with success status561 returns the latest successful deployment562 returns the deployment with the latest finished_at563 Last deployment relations564 returns the last success deployment565 returns the last failed deployment566 returns the last canceled deployment567 returns the last created deployment568 returns the last blocked deployment569 returns the last running deployment570 #last_deployable571 does not join across databases572 when called573 #last_deployment_pipeline574 does not join across databases575 #last_visible_deployment576 when there is an old deployment record577 when there is a deployment record with created status578 is expected to eq #<Deployment id: 82, iid: 1, project_id: 124, environment_id: 138, ref: "master", tag: false, sha: "b...hed_at: "2023-08-10 12:24:11.713957577 +0000", cluster_id: nil, deployable_id: 117, archived: false>579 when there is a deployment record with running status580 is expected to eq #<Deployment id: 85, iid: 2, project_id: 125, environment_id: 139, ref: "master", tag: false, sha: "b...top: nil, status: "running", finished_at: nil, cluster_id: nil, deployable_id: 120, archived: false>581 when there is a deployment record with success status582 is expected to eq #<Deployment id: 87, iid: 2, project_id: 126, environment_id: 140, ref: "master", tag: false, sha: "b...hed_at: "2023-08-10 12:24:13.580607138 +0000", cluster_id: nil, deployable_id: 122, archived: false>583 when there is a deployment record with failed status584 is expected to eq #<Deployment id: 89, iid: 2, project_id: 127, environment_id: 141, ref: "master", tag: false, sha: "b...hed_at: "2023-08-10 12:24:14.410398317 +0000", cluster_id: nil, deployable_id: 124, archived: false>585 when there is a deployment record with canceled status586 is expected to eq #<Deployment id: 91, iid: 2, project_id: 128, environment_id: 142, ref: "master", tag: false, sha: "b...hed_at: "2023-08-10 12:24:15.269881944 +0000", cluster_id: nil, deployable_id: 126, archived: false>587 #last_visible_deployable588 fetches the deployable through the last visible deployment589 #last_visible_pipeline590 fetches the pipeline through the last visible deployment591 #upcoming_deployment592 when environment has a successful deployment593 is expected to be nil594 when environment has a running deployment595 is expected to eq #<Deployment id: 95, iid: 1, project_id: 133, environment_id: 146, ref: "master", tag: false, sha: "b...top: nil, status: "running", finished_at: nil, cluster_id: nil, deployable_id: 130, archived: false>596 when environment has a blocked deployment597 is expected to eq #<Deployment id: 96, iid: 1, project_id: 134, environment_id: 147, ref: "master", tag: false, sha: "b...top: nil, status: "blocked", finished_at: nil, cluster_id: nil, deployable_id: 131, archived: false>598 #has_terminals?599 when the environment is available600 with a deployment service601 when user configured kubernetes from CI/CD > Clusters602 with deployment603 is expected to be truthy604 without deployments605 is expected to be falsy606 without a deployment service607 is expected to be falsy608 when the environment is unavailable609 is expected to be falsy610 #deployment_platform611 checks deployment platforms associated with a project612 when there is a deployment platform for environment613 finds a deployment platform614 when there is no deployment platform for environment615 returns nil616 #deployment_namespace617 no deployment platform available618 is expected to be nil619 deployment platform is available620 retrieves a namespace from the cluster621 #terminals622 reactive cache configuration623 does not continue to spawn jobs624 reactive cache is empty625 is expected to be nil626 reactive cache has pod data627 retrieves terminals from the deployment platform628 #calculate_reactive_cache629 overrides default reactive_cache_hard_limit to 10 Mb630 returns cache data from the deployment platform631 environment does not have terminals available632 is expected to be nil633 project is pending deletion634 is expected to be nil635 #has_metrics?636 when the environment is available637 with a deployment service638 and a deployment639 is expected to be truthy640 and no deployments641 is expected to be truthy642 and the prometheus adapter is not configured643 is expected to be falsy644 without a monitoring service645 is expected to be falsy646 when sample metrics are enabled647 with no prometheus adapter configured648WARNING: An expectation of `:configured?` was set on `nil`. To allow expectations on `nil` and suppress this message, set `RSpec::Mocks.configuration.allow_message_expectations_on_nil` to `true`. To disallow expectations on `nil`, set `RSpec::Mocks.configuration.allow_message_expectations_on_nil` to `false`. Called from /builds/gitlab-org/gitlab/spec/models/environment_spec.rb:1450:in `block (6 levels) in <top (required)>'.649 is expected to be truthy650 #has_sample_metrics?651 when sample metrics are enabled652 with no prometheus adapter configured653WARNING: An expectation of `:configured?` was set on `nil`. To allow expectations on `nil` and suppress this message, set `RSpec::Mocks.configuration.allow_message_expectations_on_nil` to `true`. To disallow expectations on `nil`, set `RSpec::Mocks.configuration.allow_message_expectations_on_nil` to `false`. Called from /builds/gitlab-org/gitlab/spec/models/environment_spec.rb:1470:in `block (6 levels) in <top (required)>'.654 is expected to be truthy655 with the environment stopped656 is expected to be falsy657 when sample metrics are not enabled658 is expected to be falsy659 when the environment is unavailable660 is expected to be falsy661 #has_running_deployments?662 return false when no deployments exist663 when deployment is running on the environment664 return true665 #metrics666 when the environment has metrics667 returns the metrics from the deployment service668 and the prometheus client is not present669 is expected to be nil670 when the environment does not have metrics671 is expected to be nil672 #additional_metrics673 when the environment has additional metrics674 returns the additional metrics from the deployment service675 when time window arguments are provided676 queries with the expected parameters677 when the environment does not have metrics678 is expected to be nil679 #slug680 is automatically generated681 is not regenerated if name changes682 regenerates the slug if nil683 #ref_path684 returns a path that uses the slug and does not have spaces685 doesn't change when the slug is nil initially686 #external_url_for687 when the public path is not known688 returns nil689 when the public path is known690 external_url: "http://example.com", public_path: "file.html", full_url: "http://example.com/file.html"691 returns the full external URL692 external_url: "http://example.com/", public_path: "file.html", full_url: "http://example.com/file.html"693 returns the full external URL694 external_url: "http://example.com", public_path: "/file.html", full_url: "http://example.com/file.html"695 returns the full external URL696 external_url: "http://example.com/", public_path: "/file.html", full_url: "http://example.com/file.html"697 returns the full external URL698 external_url: "http://example.com/subpath", public_path: "public/file.html", full_url: "http://example.com/subpath/public/file.html"699 returns the full external URL700 external_url: "http://example.com/subpath/", public_path: "public/file.html", full_url: "http://example.com/subpath/public/file.html"701 returns the full external URL702 external_url: "http://example.com/subpath", public_path: "/public/file.html", full_url: "http://example.com/subpath/public/file.html"703 returns the full external URL704 external_url: "http://example.com/subpath/", public_path: "/public/file.html", full_url: "http://example.com/subpath/public/file.html"705 returns the full external URL706 #prometheus_adapter707 calls prometheus adapter service708 #knative_services_finder709 environment has no deployments710 is expected to be nil711 environment has a deployment712 with no cluster associated713 is expected to be nil714 with a cluster associated715 calls the service finder716 #auto_stop_in717 when environment will be expired718 returns when it will expire719 when environment is not expired720 is expected to be nil721 #auto_stop_in=722 value: "2 days", expected_result: 172800723 new assignment sets correct auto_stop_in724 is expected to eq 172800725 resets older value726 is expected to eq 172800727 value: "1 week", expected_result: 604800728 new assignment sets correct auto_stop_in729 is expected to eq 604800730 resets older value731 is expected to eq 604800732 value: "2h20min", expected_result: 8400733 new assignment sets correct auto_stop_in734 is expected to eq 8400735 resets older value736 is expected to eq 8400737 value: "abcdef", expected_result: ChronicDuration::DurationParseError738 new assignment sets correct auto_stop_in739 is expected to raise ChronicDuration::DurationParseError740 resets older value741 is expected to raise ChronicDuration::DurationParseError742 value: "", expected_result: nil743 new assignment sets correct auto_stop_in744 is expected to eq nil745 resets older value746 is expected to eq nil747 value: nil, expected_result: nil748 new assignment sets correct auto_stop_in749 is expected to eq nil750 resets older value751 is expected to eq nil752 value: "never", expected_result: nil753 new assignment sets correct auto_stop_in754 is expected to eq nil755 resets older value756 is expected to eq nil757 .for_id_and_slug758 is expected not to be nil759 .find_or_create_by_name760 finds an existing environment if it exists761 creates an environment if it does not exist762 #destroy763 remove the deployment refs from gitaly764 .count_by_state765 returns zero state counts when environments are empty766 when environments are not empty767 returns the environments count grouped by state768 returns the environments count grouped by state with zero value769 #has_opened_alert?770 when environment has an triggered alert771 is expected to equal true772 when environment has an resolved alert773 is expected to equal false774 when environment does not have an alert775 is expected to equal false776 #cancel_deployment_jobs!777 cancels an active deployment job778 when deployment job is bridge779 does not cancel an active deployment job780 when deployable does not exist781 does not raise an error782 #rollout_status783 environment does not have a deployment board available784 is expected to be nil785 cached rollout status is present786 fetches the rollout status from the deployment platform787 cached rollout status is not present yet788 falls back to a loading status789 #ingresses790 when rollout status is available791 fetches ingresses from the deployment platform792 when rollout status is not available793 does nothing794 #patch_ingress795 when rollout status is available796 fetches ingresses from the deployment platform797 when rollout status is not available798 does nothing799 #clear_all_caches800 clears all caches on the environment801 #should_link_to_merge_requests?802 when environment is foldered803 when environment is production tier804 is expected to eq true805 when environment is development tier806 is expected to eq false807 when environment is unfoldered808 when environment is production tier809 is expected to eq true810 when environment is development tier811 is expected to eq true812 #deploy_freezes813 returns the freeze periods of the associated project814 caches the freeze periods815 #deployed_and_updated_before816 excludes environments with recent deployments817 includes environments with no deployments818 excludes environments that have been recently updated with no deployments819 excludes environments that have been recently updated with stale deployments820ContainerRepository821 behaves like having unique enum values822 has unique values in "status"823 has unique values in "expiration_policy_cleanup_status"824 has unique values in "migration_skipped_reason"825 associations826 belongs to the project827 validations828 is expected to validate that :migration_retries_count cannot be empty/falsy829 is expected to validate that :migration_retries_count looks like a number greater than or equal to 0830 is expected to validate that :migration_aborted_in_state is either ‹"pre_importing"›, ‹"importing"›, ‹"pre_import_done"›, or ‹"default"›831 is expected to allow :migration_aborted_in_state to be ‹nil›832 migration_state833 is expected to validate that :migration_state cannot be empty/falsy834 is expected to validate that :migration_state is either ‹"default"›, ‹"pre_import_done"›, ‹"import_done"›, ‹"import_aborted"›, ‹"import_skipped"›, ‹"pre_importing"›, or ‹"importing"›835 pre_importing836 validates expected attributes837 pre_import_done838 validates expected attributes839 importing840 validates expected attributes841 import_skipped842 validates expected attributes843 import_aborted844 validates expected attributes845 :migration_state state_machine846 #start_pre_import847 behaves like transitioning from allowed states848 when transitioning from default849 returns true850 when transitioning from pre_import_done851 returns false852 when transitioning from import_done853 returns false854 when transitioning from import_aborted855 returns true856 when transitioning from import_skipped857 returns false858 when transitioning from pre_importing859 returns true860 when transitioning from importing861 returns true862 behaves like transitioning to pre_importing863 behaves like no action when feature flag is disabled864 feature flag disabled865 is expected to eq false866 successful pre_import request867 sets migration_pre_import_started_at and resets migration_pre_import_done_at868 failed pre_import request869 sets migration_pre_import_started_at and resets migration_pre_import_done_at870 already imported871 finishes the import872 non-existing repository873 finishes the import874 #retry_pre_import875 behaves like transitioning from allowed states876 when transitioning from default877 returns false878 when transitioning from pre_import_done879 returns false880 when transitioning from import_done881 returns false882 when transitioning from import_aborted883 returns true884 when transitioning from import_skipped885 returns false886 when transitioning from pre_importing887 returns true888 when transitioning from importing889 returns true890 behaves like transitioning to pre_importing891 behaves like no action when feature flag is disabled892 feature flag disabled893 is expected to eq false894 successful pre_import request895 sets migration_pre_import_started_at and resets migration_pre_import_done_at896 failed pre_import request897 sets migration_pre_import_started_at and resets migration_pre_import_done_at898 already imported899 finishes the import900 non-existing repository901 finishes the import902 behaves like transitioning out of import_aborted903 resets migration_aborted_at and migration_aborted_in_state904 #finish_pre_import905 sets migration_pre_import_done_at906 behaves like transitioning from allowed states907 when transitioning from default908 returns false909 when transitioning from pre_import_done910 returns false911 when transitioning from import_done912 returns false913 when transitioning from import_aborted914 returns true915 when transitioning from import_skipped916 returns false917 when transitioning from pre_importing918 returns true919 when transitioning from importing920 returns true921 #start_import922 behaves like transitioning from allowed states923 when transitioning from default924 returns false925 when transitioning from pre_import_done926 returns true927 when transitioning from import_done928 returns false929 when transitioning from import_aborted930 returns true931 when transitioning from import_skipped932 returns false933 when transitioning from pre_importing934 returns true935 when transitioning from importing936 returns true937 behaves like transitioning to importing938 successful import request939 sets migration_import_started_at and resets migration_import_done_at940 failed import request941 sets migration_import_started_at and resets migration_import_done_at942 already imported943 finishes the import944 #retry_import945 behaves like transitioning from allowed states946 when transitioning from default947 returns false948 when transitioning from pre_import_done949 returns false950 when transitioning from import_done951 returns false952 when transitioning from import_aborted953 returns true954 when transitioning from import_skipped955 returns false956 when transitioning from pre_importing957 returns true958 when transitioning from importing959 returns true960 behaves like transitioning to importing961 successful import request962 sets migration_import_started_at and resets migration_import_done_at963 failed import request964 sets migration_import_started_at and resets migration_import_done_at965 already imported966 finishes the import967 behaves like no action when feature flag is disabled968 feature flag disabled969 is expected to eq false970 #finish_import971 sets migration_import_done_at and queues the next import972 behaves like transitioning from allowed states973 when transitioning from default974 returns true975 when transitioning from pre_import_done976 returns false977 when transitioning from import_done978 returns false979 when transitioning from import_aborted980 returns true981 when transitioning from import_skipped982 returns false983 when transitioning from pre_importing984 returns true985 when transitioning from importing986 returns true987 behaves like queueing the next import988 starts the worker989 #already_migrated990 sets migration_import_done_at991 behaves like transitioning from allowed states992 when transitioning from default993 returns true994 when transitioning from pre_import_done995 returns false996 when transitioning from import_done997 returns false998 when transitioning from import_aborted999 returns false1000 when transitioning from import_skipped1001 returns false1002 when transitioning from pre_importing1003 returns false1004 when transitioning from importing1005 returns false1006 #abort_import1007 sets migration_aborted_at and migration_aborted_at, increments the retry count, and queues the next import1008 behaves like transitioning from allowed states1009 when transitioning from default1010 returns true1011 when transitioning from pre_import_done1012 returns true1013 when transitioning from import_done1014 returns false1015 when transitioning from import_aborted1016 returns false1017 when transitioning from import_skipped1018 returns false1019 when transitioning from pre_importing1020 returns true1021 when transitioning from importing1022 returns true1023 behaves like queueing the next import1024 starts the worker1025 above the max retry limit1026 skips the migration1027 #skip_import1028 sets migration_skipped_at and migration_skipped_reason1029 raises and error if a reason is not given1030 behaves like transitioning from allowed states1031 when transitioning from default1032 returns true1033 when transitioning from pre_import_done1034 returns true1035 when transitioning from import_done1036 returns false1037 when transitioning from import_aborted1038 returns true1039 when transitioning from import_skipped1040 returns false1041 when transitioning from pre_importing1042 returns true1043 when transitioning from importing1044 returns true1045 behaves like queueing the next import1046 starts the worker1047 #finish_pre_import_and_start_import1048 behaves like transitioning from allowed states1049 when transitioning from default1050 returns false1051 when transitioning from pre_import_done1052 returns false1053 when transitioning from import_done1054 returns false1055 when transitioning from import_aborted1056 returns true1057 when transitioning from import_skipped1058 returns false1059 when transitioning from pre_importing1060 returns true1061 when transitioning from importing1062 returns true1063 behaves like transitioning to importing1064 successful import request1065 sets migration_import_started_at and resets migration_import_done_at1066 failed import request1067 sets migration_import_started_at and resets migration_import_done_at1068 already imported1069 finishes the import1070 when triggering registry API requests1071 when responding to a start_pre_import event1072 behaves like a state machine configured with use_transactions: false1073 executes the registry API request outside of a transaction1074 when responding to a retry_pre_import event1075 behaves like a state machine configured with use_transactions: false1076 executes the registry API request outside of a transaction1077 when responding to a start_import event1078 behaves like a state machine configured with use_transactions: false1079 executes the registry API request outside of a transaction1080 when responding to a retry_import event1081 behaves like a state machine configured with use_transactions: false1082 executes the registry API request outside of a transaction1083 #retry_aborted_migration1084 when migration_state is not aborted1085 does nothing1086 when migration_state is aborted1087 behaves like reconciling migration_state1088 native response1089 finishes the import1090 import_in_progress response1091 behaves like enforcing states coherence to1092 leaves the repository in the expected migration_state1093 import_complete response1094 finishes the import1095 import_canceled response1096 behaves like retrying the import1097 retries the import1098 import_failed response1099 behaves like retrying the import1100 retries the import1101 pre_import_in_progress response1102 behaves like enforcing states coherence to1103 leaves the repository in the expected migration_state1104 pre_import_complete response1105 finishes the pre_import and starts the import1106 pre_import_canceled response1107 behaves like retrying the pre_import1108 retries the pre_import1109 pre_import_failed response1110 behaves like retrying the pre_import1111 retries the pre_import1112 error response1113 migration_pre_import_done_at is NULL1114 behaves like retrying the pre_import1115 retries the pre_import1116 migration_pre_import_done_at is not NULL1117 behaves like retrying the import1118 retries the import1119 #reconcile_import_status1120 behaves like reconciling migration_state1121 native response1122 finishes the import1123 import_in_progress response1124 behaves like enforcing states coherence to1125 leaves the repository in the expected migration_state1126 import_complete response1127 finishes the import1128 import_canceled response1129 behaves like retrying the import1130 retries the import1131 import_failed response1132 behaves like retrying the import1133 retries the import1134 pre_import_in_progress response1135 behaves like enforcing states coherence to1136 leaves the repository in the expected migration_state1137 pre_import_complete response1138 finishes the pre_import and starts the import1139 pre_import_canceled response1140 behaves like retrying the pre_import1141 retries the pre_import1142 pre_import_failed response1143 behaves like retrying the pre_import1144 retries the pre_import1145 #tag1146 has a test tag1147 #path1148 when project path does not contain uppercase letters1149 returns a full path to the repository1150 when path contains uppercase letters1151 returns a full path without capital letters1152 #manifest1153 returns non-empty manifest1154 #valid?1155 is a valid repository1156 #tags1157 returns non-empty tags list1158 #each_tags_page1159 with an empty page1160 behaves like iterating through a page1161 iterates through one page1162 with one page1163 with a nil created_at1164 behaves like iterating through a page1165 iterates through one page1166 with an invalid created_at1167 behaves like iterating through a page1168 iterates through one page1169 with two pages1170 iterates through two pages1171 when max pages is reached1172 raises an error1173 without a block set1174 raises an Argument error1175 without a page size set1176 uses a default size1177 with an empty client response1178 breaks the loop1179 with a nil page1180 behaves like iterating through a page1181 iterates through one page1182 calling on a non migrated repository1183 raises an Argument error1184 #tags_count1185 returns the count of tags1186 #has_tags?1187 has tags1188 #delete_tags!1189 when action succeeds1190 returns status that indicates success1191 when action fails1192 returns status that indicates failure1193 #delete_tag_by_name1194 when action succeeds1195 returns status that indicates success1196 when action fails1197 returns status that indicates failure1198 #location1199 when registry is running on a custom port1200 returns a full location of the repository1201 #root_repository?1202 when repository is a root repository1203 returns true1204 when repository is not a root repository1205 returns false1206 #start_expiration_policy!1207 sets the expiration policy started at to now1208 #size1209 supports gitlab api on .com with a recent repository1210 with a size_bytes field1211 is expected to eq 123451212 without a size_bytes field1213 is expected to eq nil1214 does not support gitlab api1215 is expected to eq nil1216 not on .com1217 is expected to eq nil1218 supports gitlab api on .com with an old repository1219 with migration_state import_done1220 is expected to eq 123451221 with migration_state not import_done1222 is expected to eq nil1223 #set_delete_ongoing_status1224 updates deletion status attributes1225 #set_delete_scheduled_status1226 updates delete attributes1227 #status_updated_at1228 when status is updated to delete_scheduled1229 updates status_changed_at1230 when status is updated to delete_ongoing1231 updates status_changed_at1232 when status is updated to delete_failed1233 updates status_changed_at1234 when status is not changed1235 does not update status_changed_at1236 registry migration1237 #migration_pre_import1238 behaves like handling the migration step1239 behaves like gitlab migration client request1240 returns the same response as the client1241 when the gitlab_api feature is not supported1242 returns :error1243 too many imports1244 raises an error when it receives too_many_imports as a response1245 #migration_import1246 behaves like handling the migration step1247 behaves like gitlab migration client request1248 returns the same response as the client1249 when the gitlab_api feature is not supported1250 returns :error1251 too many imports1252 raises an error when it receives too_many_imports as a response1253 #migration_cancel1254 behaves like gitlab migration client request1255 returns the same response as the client1256 when the gitlab_api feature is not supported1257 returns :error1258 #force_migration_cancel1259 successful cancellation1260 skips the migration1261 behaves like returning the same response as the client1262 returns the same response1263 failed cancellation1264 does not skip the migration1265 behaves like returning the same response as the client1266 returns the same response1267 when the gitlab_api feature is not supported1268 returns :error1269 .build_from_path1270 fabricates repository assigned to a correct project1271 fabricates repository with a correct name1272 is not persisted1273 .find_or_create_from_path1274 when received multi-level repository path1275 fabricates repository assigned to a correct project1276 fabricates repository with a correct name1277 when path is too long1278 does not create repository and raises error1279 when received multi-level repository with nested groups1280 fabricates repository assigned to a correct project1281 fabricates repository with a correct name1282 has path including a nested group1283 when received root repository path1284 fabricates repository assigned to a correct project1285 fabricates repository with an empty name1286 when repository already exists1287 returns the existing repository1288 when many of the same repository are created at the same time1289 does not throw validation errors and only creates one repository1290 retrieves a persisted repository for all concurrent calls1291 .find_by_path1292 when repository exists1293 finds the repository1294 when repository does not exist1295 returns nil1296 .find_by_path!1297 when repository exists1298 finds the repository1299 when repository does not exist1300 raises an exception1301 .build_root_repository1302 fabricates a root repository object1303 assignes it to the correct project1304 does not persist it1305 .for_group_and_its_subgroups1306 in a group1307 is expected to contain exactly #<ContainerRepository id: 167, project_id: 390, name: "my_image", created_at: "2023-08-10 12:26:43.99...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>1308 with a subgroup1309 is expected to contain exactly #<ContainerRepository id: 170, project_id: 393, name: "my_image", created_at: "2023-08-10 12:26:45.06...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil> and #<ContainerRepository id: 168, project_id: 391, name: "my_image", created_at: "2023-08-10 12:26:44.51...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>1310 group without container_repositories1311 is expected to eq []1312 .search_by_name1313 is expected to contain exactly #<ContainerRepository id: 172, project_id: 394, name: "my_image", created_at: "2023-08-10 12:26:45.65...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>1314 .for_project_id1315 is expected to contain exactly #<ContainerRepository id: 173, project_id: 395, name: "my_image", created_at: "2023-08-10 12:26:46.14...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>1316 .expiration_policy_started_at_nil_or_before1317 is expected to contain exactly #<ContainerRepository id: 174, project_id: 396, name: "test_image_100", created_at: "2023-08-10 12:26...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>, #<ContainerRepository id: 175, project_id: 397, name: "test_image_101", created_at: "2023-08-10 12:26...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>, and #<ContainerRepository id: 177, project_id: 399, name: "test_image_103", created_at: "2023-08-10 12:26...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>1318 .with_migration_import_started_at_nil_or_before1319 is expected to contain exactly #<ContainerRepository id: 179, project_id: 401, name: "test_image_105", created_at: "2023-08-10 12:26...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil> and #<ContainerRepository id: 180, project_id: 402, name: "test_image_106", created_at: "2023-08-10 12:26...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>1320 .with_migration_pre_import_started_at_nil_or_before1321 is expected to contain exactly #<ContainerRepository id: 182, project_id: 404, name: "test_image_108", created_at: "2023-08-10 12:26...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil> and #<ContainerRepository id: 183, project_id: 405, name: "test_image_109", created_at: "2023-08-10 12:26...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>1322 .with_migration_pre_import_done_at_nil_or_before1323 is expected to contain exactly #<ContainerRepository id: 185, project_id: 407, name: "test_image_111", created_at: "2023-08-10 12:26...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil> and #<ContainerRepository id: 186, project_id: 408, name: "test_image_112", created_at: "2023-08-10 12:26...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>1324 .with_stale_ongoing_cleanup1325 is expected to contain exactly #<ContainerRepository id: 187, project_id: 409, name: "test_image_113", created_at: "2023-08-10 12:26...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil> and #<ContainerRepository id: 189, project_id: 411, name: "test_image_115", created_at: "2023-08-10 12:26...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>1326 .with_stale_delete_at1327 is expected to contain exactly #<ContainerRepository id: 191, project_id: 413, name: "test_image_117", created_at: "2023-08-10 12:26...arted_at: "2023-08-09 12:26:50.031876959 +0000", status_updated_at: nil, verification_checksum: nil> and #<ContainerRepository id: 193, project_id: 415, name: "test_image_119", created_at: "2023-08-10 12:26...arted_at: "2023-08-03 12:26:50.462755516 +0000", status_updated_at: nil, verification_checksum: nil>1328 .waiting_for_cleanup1329 is expected to contain exactly #<ContainerRepository id: 194, project_id: 416, name: "test_image_120", created_at: "2023-08-10 12:26...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil> and #<ContainerRepository id: 195, project_id: 417, name: "test_image_121", created_at: "2023-08-10 12:26...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>1330 .exists_by_path?1331 returns true for known container repository paths1332 returns false for unknown container repository paths1333 .all_migrated?1334 with no repositories1335 is expected to be truthy1336 with only recent repositories1337 is expected to be truthy1338 with one old non migrated repository1339 is expected to be falsey1340 with one old migrated repository1341 is expected to be truthy1342 .with_enabled_policy1343 is expected to eq [#<ContainerRepository id: 200, project_id: 421, name: "test_image_125", created_at: "2023-08-10 12:2...eleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>]1344 #migration_in_active_state?1345 when in default migration_state1346 is expected to eq false1347 when in pre_import_done migration_state1348 is expected to eq false1349 when in import_done migration_state1350 is expected to eq false1351 when in import_aborted migration_state1352 is expected to eq false1353 when in import_skipped migration_state1354 is expected to eq false1355 when in pre_importing migration_state1356 is expected to eq true1357 when in importing migration_state1358 is expected to eq true1359 #migration_importing?1360 when in default migration_state1361 is expected to eq false1362 when in pre_import_done migration_state1363 is expected to eq false1364 when in import_done migration_state1365 is expected to eq false1366 when in import_aborted migration_state1367 is expected to eq false1368 when in import_skipped migration_state1369 is expected to eq false1370 when in pre_importing migration_state1371 is expected to eq false1372 when in importing migration_state1373 is expected to eq true1374 #migration_pre_importing?1375 when in default migration_state1376 is expected to eq false1377 when in pre_import_done migration_state1378 is expected to eq false1379 when in import_done migration_state1380 is expected to eq false1381 when in import_aborted migration_state1382 is expected to eq false1383 when in import_skipped migration_state1384 is expected to eq false1385 when in pre_importing migration_state1386 is expected to eq true1387 when in importing migration_state1388 is expected to eq false1389 #try_import1390 successful request1391 is expected to eq true1392 TooManyImportsError1393 tries again exponentially and aborts the migration1394 not found response1395 completes the migration1396 other response1397 aborts the migration1398 with no block given1399 raises an error1400 #retried_too_many_times?1401 migration_retries_count is equal or greater than max_retries1402 is expected to eq true1403 migration_retries_count is lower than max_retries1404 is expected to eq false1405 #nearing_or_exceeded_retry_limit?1406 migration_retries_count is 1 less than max_retries1407 is expected to eq true1408 migration_retries_count is lower than max_retries1409 is expected to eq false1410 migration_retries_count equal to or higher than max_retries1411 is expected to eq true1412 #migrated?1413 on gitlab.com1414 is expected to eq true1415 not on gitlab.com1416 is expected to eq false1417 with repositories1418 .requiring_cleanup1419 with next_run_at in the future1420 is expected to eq []1421 with next_run_at in the past1422 is expected to eq [#<ContainerRepository id: 231, project_id: 452, name: "test_image_149", created_at: "2023-08-10 12:2...eleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>]1423 with repository cleanup started at after policy next run at1424 is expected to eq []1425 .with_unfinished_cleanup1426 is expected to eq []1427 with an unfinished repository1428 is expected to eq [#<ContainerRepository id: 231, project_id: 452, name: "test_image_149", created_at: "2023-08-10 12:2...eleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>]1429 .recently_done_migration_step1430 returns completed imports by done_at date1431 .ready_for_import1432 returns valid container repositories1433 #last_import_step_done_at1434 is expected to eq 2023-08-10 11:27:08.214289203 +00001435 #external_import_status1436 returns the response from the client1437 .with_stale_migration1438 is expected to contain exactly #<ContainerRepository id: 244, project_id: 465, name: "test_image_161", created_at: "2023-08-10 12:27...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>, #<ContainerRepository id: 245, project_id: 466, name: "test_image_162", created_at: "2023-08-10 12:27...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>, #<ContainerRepository id: 247, project_id: 468, name: "test_image_164", created_at: "2023-08-10 12:27...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>, #<ContainerRepository id: 248, project_id: 469, name: "test_image_165", created_at: "2023-08-10 12:27...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>, #<ContainerRepository id: 250, project_id: 471, name: "test_image_167", created_at: "2023-08-10 12:27...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>, and #<ContainerRepository id: 251, project_id: 472, name: "test_image_168", created_at: "2023-08-10 12:27...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>1439 #registry1440 caches the client1441Gitlab::Redis::MultiStore1442 when primary_store is nil1443 fails with exception1444 when secondary_store is nil1445 fails with exception1446 when instance_name is nil1447 fails with exception1448 when primary_store is not a ::Redis instance1449 fails with exception1450 when primary_store is a ::Redis::Namespace instance1451 fails with exception1452 when secondary_store is not a ::Redis instance1453 fails with exception1454 when secondary_store is a ::Redis::Namespace instance1455 fails with exception1456 with READ redis commands1457 execute :get command1458 RSpec::ExampleGroups::GitlabRedisMultiStore::WithREADRedisCommands::ExecuteGetCommand1459 when reading from the primary is successful1460 returns the correct value1461 returns the correct value1462 when reading from default instance is raising an exception1463 logs the exception and re-raises the error1464 when reading from empty default instance1465 does not call the non_default_store1466 when the command is executed within pipelined block1467 is executed only 1 time on primary and secondary instance1468 with both primary and secondary store using same redis instance1469 behaves like secondary store1470 execute on the secondary instance1471 returns the correct value1472 does not execute on the primary store1473 when use_primary_and_secondary_stores feature flag is disabled1474 when using secondary store as default1475DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1476DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1477 executes only on secondary redis store1478 when using primary store as default1479DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1480 executes only on primary redis store1481 execute :mget command1482 RSpec::ExampleGroups::GitlabRedisMultiStore::WithREADRedisCommands::ExecuteMgetCommand1483 when reading from the primary is successful1484 returns the correct value1485 returns the correct value1486 when reading from default instance is raising an exception1487 logs the exception and re-raises the error1488 when reading from empty default instance1489 does not call the non_default_store1490 when the command is executed within pipelined block1491 is executed only 1 time on primary and secondary instance1492 with both primary and secondary store using same redis instance1493 behaves like secondary store1494 execute on the secondary instance1495 returns the correct value1496 does not execute on the primary store1497 when use_primary_and_secondary_stores feature flag is disabled1498 when using secondary store as default1499DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1500DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1501 executes only on secondary redis store1502 when using primary store as default1503DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1504 executes only on primary redis store1505 execute :mget with block1506 RSpec::ExampleGroups::GitlabRedisMultiStore::WithREADRedisCommands::ExecuteMgetWithBlock1507 when reading from the primary is successful1508 returns the correct value1509 returns the correct value1510 when reading from default instance is raising an exception1511 logs the exception and re-raises the error1512 when reading from empty default instance1513 does not call the non_default_store1514 when the command is executed within pipelined block1515 is executed only 1 time on primary and secondary instance1516 when block is provided1517 only default store yields to the block1518 only default store to execute1519 returns the correct value1520 with both primary and secondary store using same redis instance1521 behaves like secondary store1522 execute on the secondary instance1523 returns the correct value1524 does not execute on the primary store1525 when use_primary_and_secondary_stores feature flag is disabled1526 when using secondary store as default1527DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1528DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1529 executes only on secondary redis store1530 when using primary store as default1531DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1532 executes only on primary redis store1533 execute :smembers command1534 RSpec::ExampleGroups::GitlabRedisMultiStore::WithREADRedisCommands::ExecuteSmembersCommand1535 when reading from the primary is successful1536 returns the correct value1537 returns the correct value1538 when reading from default instance is raising an exception1539 logs the exception and re-raises the error1540 when reading from empty default instance1541 does not call the non_default_store1542 when the command is executed within pipelined block1543 is executed only 1 time on primary and secondary instance1544 with both primary and secondary store using same redis instance1545 behaves like secondary store1546 execute on the secondary instance1547 returns the correct value1548 does not execute on the primary store1549 when use_primary_and_secondary_stores feature flag is disabled1550 when using secondary store as default1551DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1552DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1553 executes only on secondary redis store1554 when using primary store as default1555DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1556 executes only on primary redis store1557 execute :scard command1558 RSpec::ExampleGroups::GitlabRedisMultiStore::WithREADRedisCommands::ExecuteScardCommand1559 when reading from the primary is successful1560 returns the correct value1561 returns the correct value1562 when reading from default instance is raising an exception1563 logs the exception and re-raises the error1564 when reading from empty default instance1565 does not call the non_default_store1566 when the command is executed within pipelined block1567 is executed only 1 time on primary and secondary instance1568 with both primary and secondary store using same redis instance1569 behaves like secondary store1570 execute on the secondary instance1571 returns the correct value1572 does not execute on the primary store1573 when use_primary_and_secondary_stores feature flag is disabled1574 when using secondary store as default1575DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1576DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1577 executes only on secondary redis store1578 when using primary store as default1579DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1580 executes only on primary redis store1581 execute :sismember command1582 RSpec::ExampleGroups::GitlabRedisMultiStore::WithREADRedisCommands::ExecuteSismemberCommand1583 when reading from the primary is successful1584 returns the correct value1585 returns the correct value1586 when reading from default instance is raising an exception1587 logs the exception and re-raises the error1588 when reading from empty default instance1589 does not call the non_default_store1590 when the command is executed within pipelined block1591 is executed only 1 time on primary and secondary instance1592 with both primary and secondary store using same redis instance1593 behaves like secondary store1594 execute on the secondary instance1595 returns the correct value1596 does not execute on the primary store1597 when use_primary_and_secondary_stores feature flag is disabled1598 when using secondary store as default1599DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1600DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1601 executes only on secondary redis store1602 when using primary store as default1603DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1604 executes only on primary redis store1605 execute :exists command1606 RSpec::ExampleGroups::GitlabRedisMultiStore::WithREADRedisCommands::ExecuteExistsCommand1607 when reading from the primary is successful1608 returns the correct value1609 returns the correct value1610 when reading from default instance is raising an exception1611 logs the exception and re-raises the error1612 when reading from empty default instance1613 does not call the non_default_store1614 when the command is executed within pipelined block1615 is executed only 1 time on primary and secondary instance1616 with both primary and secondary store using same redis instance1617 behaves like secondary store1618 execute on the secondary instance1619 returns the correct value1620 does not execute on the primary store1621 when use_primary_and_secondary_stores feature flag is disabled1622 when using secondary store as default1623DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1624DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1625 executes only on secondary redis store1626 when using primary store as default1627DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1628 executes only on primary redis store1629 execute :exists? command1630 RSpec::ExampleGroups::GitlabRedisMultiStore::WithREADRedisCommands::ExecuteExistsCommand_21631 when reading from the primary is successful1632 returns the correct value1633 returns the correct value1634 when reading from default instance is raising an exception1635 logs the exception and re-raises the error1636 when reading from empty default instance1637 does not call the non_default_store1638 when the command is executed within pipelined block1639 is executed only 1 time on primary and secondary instance1640 with both primary and secondary store using same redis instance1641 behaves like secondary store1642 execute on the secondary instance1643 returns the correct value1644 does not execute on the primary store1645 when use_primary_and_secondary_stores feature flag is disabled1646 when using secondary store as default1647DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1648DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1649 executes only on secondary redis store1650 when using primary store as default1651DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1652 executes only on primary redis store1653 execute :hget command1654 RSpec::ExampleGroups::GitlabRedisMultiStore::WithREADRedisCommands::ExecuteHgetCommand1655 when reading from the primary is successful1656 returns the correct value1657 returns the correct value1658 when reading from default instance is raising an exception1659 logs the exception and re-raises the error1660 when reading from empty default instance1661 does not call the non_default_store1662 when the command is executed within pipelined block1663 is executed only 1 time on primary and secondary instance1664 with both primary and secondary store using same redis instance1665 behaves like secondary store1666 execute on the secondary instance1667 returns the correct value1668 does not execute on the primary store1669 when use_primary_and_secondary_stores feature flag is disabled1670 when using secondary store as default1671DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1672DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1673 executes only on secondary redis store1674 when using primary store as default1675DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1676 executes only on primary redis store1677 execute :hlen command1678 RSpec::ExampleGroups::GitlabRedisMultiStore::WithREADRedisCommands::ExecuteHlenCommand1679 when reading from the primary is successful1680 returns the correct value1681 returns the correct value1682 when reading from default instance is raising an exception1683 logs the exception and re-raises the error1684 when reading from empty default instance1685 does not call the non_default_store1686 when the command is executed within pipelined block1687 is executed only 1 time on primary and secondary instance1688 with both primary and secondary store using same redis instance1689 behaves like secondary store1690 execute on the secondary instance1691 returns the correct value1692 does not execute on the primary store1693 when use_primary_and_secondary_stores feature flag is disabled1694 when using secondary store as default1695DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1696DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1697 executes only on secondary redis store1698 when using primary store as default1699DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1700 executes only on primary redis store1701 execute :hgetall command1702 RSpec::ExampleGroups::GitlabRedisMultiStore::WithREADRedisCommands::ExecuteHgetallCommand1703 when reading from the primary is successful1704 returns the correct value1705 returns the correct value1706 when reading from default instance is raising an exception1707 logs the exception and re-raises the error1708 when reading from empty default instance1709 does not call the non_default_store1710 when the command is executed within pipelined block1711 is executed only 1 time on primary and secondary instance1712 with both primary and secondary store using same redis instance1713 behaves like secondary store1714 execute on the secondary instance1715 returns the correct value1716 does not execute on the primary store1717 when use_primary_and_secondary_stores feature flag is disabled1718 when using secondary store as default1719DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1720DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1721 executes only on secondary redis store1722 when using primary store as default1723DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1724 executes only on primary redis store1725 execute :hexists command1726 RSpec::ExampleGroups::GitlabRedisMultiStore::WithREADRedisCommands::ExecuteHexistsCommand1727 when reading from the primary is successful1728 returns the correct value1729 returns the correct value1730 when reading from default instance is raising an exception1731 logs the exception and re-raises the error1732 when reading from empty default instance1733 does not call the non_default_store1734 when the command is executed within pipelined block1735 is executed only 1 time on primary and secondary instance1736 with both primary and secondary store using same redis instance1737 behaves like secondary store1738 execute on the secondary instance1739 returns the correct value1740 does not execute on the primary store1741 when use_primary_and_secondary_stores feature flag is disabled1742 when using secondary store as default1743DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1744DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1745 executes only on secondary redis store1746 when using primary store as default1747DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1748 executes only on primary redis store1749 execute :hmget command1750 RSpec::ExampleGroups::GitlabRedisMultiStore::WithREADRedisCommands::ExecuteHmgetCommand1751 when reading from the primary is successful1752 returns the correct value1753 returns the correct value1754 when reading from default instance is raising an exception1755 logs the exception and re-raises the error1756 when reading from empty default instance1757 does not call the non_default_store1758 when the command is executed within pipelined block1759 is executed only 1 time on primary and secondary instance1760 with both primary and secondary store using same redis instance1761 behaves like secondary store1762 execute on the secondary instance1763 returns the correct value1764 does not execute on the primary store1765 when use_primary_and_secondary_stores feature flag is disabled1766 when using secondary store as default1767DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1768DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1769 executes only on secondary redis store1770 when using primary store as default1771DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1772 executes only on primary redis store1773 execute :mapped_hmget command1774 RSpec::ExampleGroups::GitlabRedisMultiStore::WithREADRedisCommands::ExecuteMappedHmgetCommand1775 when reading from the primary is successful1776 returns the correct value1777 returns the correct value1778 when reading from default instance is raising an exception1779 logs the exception and re-raises the error1780 when reading from empty default instance1781 does not call the non_default_store1782 when the command is executed within pipelined block1783 is executed only 1 time on primary and secondary instance1784 with both primary and secondary store using same redis instance1785 behaves like secondary store1786 execute on the secondary instance1787 returns the correct value1788 does not execute on the primary store1789 when use_primary_and_secondary_stores feature flag is disabled1790 when using secondary store as default1791DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1792DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1793 executes only on secondary redis store1794 when using primary store as default1795DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1796 executes only on primary redis store1797 execute :sscan command1798 RSpec::ExampleGroups::GitlabRedisMultiStore::WithREADRedisCommands::ExecuteSscanCommand1799 when reading from the primary is successful1800 returns the correct value1801 returns the correct value1802 when reading from default instance is raising an exception1803 logs the exception and re-raises the error1804 when reading from empty default instance1805 does not call the non_default_store1806 when the command is executed within pipelined block1807 is executed only 1 time on primary and secondary instance1808 with both primary and secondary store using same redis instance1809 behaves like secondary store1810 execute on the secondary instance1811 returns the correct value1812 does not execute on the primary store1813 when use_primary_and_secondary_stores feature flag is disabled1814 when using secondary store as default1815DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1816DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1817 executes only on secondary redis store1818 when using primary store as default1819DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1820 executes only on primary redis store1821 execute :scan command1822 RSpec::ExampleGroups::GitlabRedisMultiStore::WithREADRedisCommands::ExecuteScanCommand1823 when reading from the primary is successful1824 returns the correct value1825 returns the correct value1826 when reading from default instance is raising an exception1827 logs the exception and re-raises the error1828 when reading from empty default instance1829 does not call the non_default_store1830 when the command is executed within pipelined block1831 is executed only 1 time on primary and secondary instance1832 with both primary and secondary store using same redis instance1833 behaves like secondary store1834 execute on the secondary instance1835 returns the correct value1836 does not execute on the primary store1837 when use_primary_and_secondary_stores feature flag is disabled1838 when using secondary store as default1839DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1840DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1841 executes only on secondary redis store1842 when using primary store as default1843DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1844 executes only on primary redis store1845 execute :scan_each command1846 RSpec::ExampleGroups::GitlabRedisMultiStore::WithREADRedisCommands::ExecuteScanEachCommand1847 when reading from the primary is successful1848 returns the correct value1849 returns the correct value1850 when reading from default instance is raising an exception1851 logs the exception and re-raises the error1852 when reading from empty default instance1853 does not call the non_default_store1854 when the command is executed within pipelined block1855 is executed only 1 time on primary and secondary instance1856 with both primary and secondary store using same redis instance1857 behaves like secondary store1858 execute on the secondary instance1859 returns the correct value1860 does not execute on the primary store1861 when use_primary_and_secondary_stores feature flag is disabled1862 when using secondary store as default1863DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1864DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1865 executes only on secondary redis store1866 when using primary store as default1867DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1868 executes only on primary redis store1869 execute :sscan_each command1870 RSpec::ExampleGroups::GitlabRedisMultiStore::WithREADRedisCommands::ExecuteSscanEachCommand1871 when reading from the primary is successful1872 returns the correct value1873 returns the correct value1874 when reading from default instance is raising an exception1875 logs the exception and re-raises the error1876 when reading from empty default instance1877 does not call the non_default_store1878 when the command is executed within pipelined block1879 is executed only 1 time on primary and secondary instance1880 with both primary and secondary store using same redis instance1881 behaves like secondary store1882 execute on the secondary instance1883 returns the correct value1884 does not execute on the primary store1885 when use_primary_and_secondary_stores feature flag is disabled1886 when using secondary store as default1887DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1888DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1889 executes only on secondary redis store1890 when using primary store as default1891DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1892 executes only on primary redis store1893 execute :sscan_each w block1894 RSpec::ExampleGroups::GitlabRedisMultiStore::WithREADRedisCommands::ExecuteSscanEachWBlock1895 when reading from the primary is successful1896 returns the correct value1897 returns the correct value1898 when reading from default instance is raising an exception1899 logs the exception and re-raises the error1900 when reading from empty default instance1901 does not call the non_default_store1902 when the command is executed within pipelined block1903 is executed only 1 time on primary and secondary instance1904 with both primary and secondary store using same redis instance1905 behaves like secondary store1906 execute on the secondary instance1907 returns the correct value1908 does not execute on the primary store1909 when use_primary_and_secondary_stores feature flag is disabled1910 when using secondary store as default1911DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1912DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1913 executes only on secondary redis store1914 when using primary store as default1915DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1916 executes only on primary redis store1917 execute :hscan_each command1918 RSpec::ExampleGroups::GitlabRedisMultiStore::WithREADRedisCommands::ExecuteHscanEachCommand1919 when reading from the primary is successful1920 returns the correct value1921 returns the correct value1922 when reading from default instance is raising an exception1923 logs the exception and re-raises the error1924 when reading from empty default instance1925 does not call the non_default_store1926 when the command is executed within pipelined block1927 is executed only 1 time on primary and secondary instance1928 with both primary and secondary store using same redis instance1929 behaves like secondary store1930 execute on the secondary instance1931 returns the correct value1932 does not execute on the primary store1933 when use_primary_and_secondary_stores feature flag is disabled1934 when using secondary store as default1935DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1936DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1937 executes only on secondary redis store1938 when using primary store as default1939DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1940 executes only on primary redis store1941 execute :hscan_each w block1942 RSpec::ExampleGroups::GitlabRedisMultiStore::WithREADRedisCommands::ExecuteHscanEachWBlock1943 when reading from the primary is successful1944 returns the correct value1945 returns the correct value1946 when reading from default instance is raising an exception1947 logs the exception and re-raises the error1948 when reading from empty default instance1949 does not call the non_default_store1950 when the command is executed within pipelined block1951 is executed only 1 time on primary and secondary instance1952 with both primary and secondary store using same redis instance1953 behaves like secondary store1954 execute on the secondary instance1955 returns the correct value1956 does not execute on the primary store1957 when use_primary_and_secondary_stores feature flag is disabled1958 when using secondary store as default1959DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1960DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1961 executes only on secondary redis store1962 when using primary store as default1963DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1964 executes only on primary redis store1965 execute :zscan_each command1966 RSpec::ExampleGroups::GitlabRedisMultiStore::WithREADRedisCommands::ExecuteZscanEachCommand1967 when reading from the primary is successful1968 returns the correct value1969 returns the correct value1970 when reading from default instance is raising an exception1971 logs the exception and re-raises the error1972 when reading from empty default instance1973 does not call the non_default_store1974 when the command is executed within pipelined block1975 is executed only 1 time on primary and secondary instance1976 with both primary and secondary store using same redis instance1977 behaves like secondary store1978 execute on the secondary instance1979 returns the correct value1980 does not execute on the primary store1981 when use_primary_and_secondary_stores feature flag is disabled1982 when using secondary store as default1983DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1984DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1985 executes only on secondary redis store1986 when using primary store as default1987DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)1988 executes only on primary redis store1989 execute :zscan_each w block1990 RSpec::ExampleGroups::GitlabRedisMultiStore::WithREADRedisCommands::ExecuteZscanEachWBlock1991 when reading from the primary is successful1992 returns the correct value1993 returns the correct value1994 when reading from default instance is raising an exception1995 logs the exception and re-raises the error1996 when reading from empty default instance1997 does not call the non_default_store1998 when the command is executed within pipelined block1999 is executed only 1 time on primary and secondary instance2000 with both primary and secondary store using same redis instance2001 behaves like secondary store2002 execute on the secondary instance2003 returns the correct value2004 does not execute on the primary store2005 when use_primary_and_secondary_stores feature flag is disabled2006 when using secondary store as default2007DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2008DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2009 executes only on secondary redis store2010 when using primary store as default2011DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2012 executes only on primary redis store2013 with nested command in block2014 when using both stores2015 when primary instance is default store2016 ensures primary instance is executing the block2017 when secondary instance is default store2018DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2019 ensures secondary instance is executing the block2020 when using 1 store only2021 when primary instance is default store2022DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2023 ensures only primary instance is executing the block2024 when secondary instance is default store2025DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2026DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2027 ensures only secondary instance is executing the block2028 with WRITE redis commands2029 execute :set command2030 RSpec::ExampleGroups::GitlabRedisMultiStore::WithWRITERedisCommands::ExecuteSetCommand2031 when executing on primary instance is successful2032 executes on both primary and secondary redis store2033 primary_store redis store contains correct values2034 secondary_store redis store contains correct values2035 when use_primary_and_secondary_stores feature flag is disabled2036 when using secondary store as default2037DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2038DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2039 executes only on secondary redis store2040 when using primary store as default2041DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2042 executes only on primary redis store2043 when executing on the default instance is raising an exception2044 raises error and does not execute on non default instance2045 when executing on the non default instance is raising an exception2046 logs the exception and execute on default instance2047 default_store redis store contains correct values2048 when the command is executed within pipelined block2049 is executed only 1 time on each instance2050 primary_store redis store contains correct values2051 secondary_store redis store contains correct values2052 execute :setnx command2053 RSpec::ExampleGroups::GitlabRedisMultiStore::WithWRITERedisCommands::ExecuteSetnxCommand2054 when executing on primary instance is successful2055 executes on both primary and secondary redis store2056 primary_store redis store contains correct values2057 secondary_store redis store contains correct values2058 when use_primary_and_secondary_stores feature flag is disabled2059 when using secondary store as default2060DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2061DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2062 executes only on secondary redis store2063 when using primary store as default2064DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2065 executes only on primary redis store2066 when executing on the default instance is raising an exception2067 raises error and does not execute on non default instance2068 when executing on the non default instance is raising an exception2069 logs the exception and execute on default instance2070 default_store redis store contains correct values2071 when the command is executed within pipelined block2072 is executed only 1 time on each instance2073 primary_store redis store contains correct values2074 secondary_store redis store contains correct values2075 execute :setex command2076 RSpec::ExampleGroups::GitlabRedisMultiStore::WithWRITERedisCommands::ExecuteSetexCommand2077 when executing on primary instance is successful2078 executes on both primary and secondary redis store2079 primary_store redis store contains correct values2080 secondary_store redis store contains correct values2081 when use_primary_and_secondary_stores feature flag is disabled2082 when using secondary store as default2083DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2084DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2085 executes only on secondary redis store2086 when using primary store as default2087DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2088 executes only on primary redis store2089 when executing on the default instance is raising an exception2090 raises error and does not execute on non default instance2091 when executing on the non default instance is raising an exception2092 logs the exception and execute on default instance2093 default_store redis store contains correct values2094 when the command is executed within pipelined block2095 is executed only 1 time on each instance2096 primary_store redis store contains correct values2097 secondary_store redis store contains correct values2098 execute :sadd command2099 RSpec::ExampleGroups::GitlabRedisMultiStore::WithWRITERedisCommands::ExecuteSaddCommand2100 when executing on primary instance is successful2101 executes on both primary and secondary redis store2102 primary_store redis store contains correct values2103 secondary_store redis store contains correct values2104 when use_primary_and_secondary_stores feature flag is disabled2105 when using secondary store as default2106DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2107DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2108 executes only on secondary redis store2109 when using primary store as default2110DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2111 executes only on primary redis store2112 when executing on the default instance is raising an exception2113 raises error and does not execute on non default instance2114 when executing on the non default instance is raising an exception2115 logs the exception and execute on default instance2116 default_store redis store contains correct values2117 when the command is executed within pipelined block2118 is executed only 1 time on each instance2119 primary_store redis store contains correct values2120 secondary_store redis store contains correct values2121 execute :sadd? command2122 RSpec::ExampleGroups::GitlabRedisMultiStore::WithWRITERedisCommands::ExecuteSaddCommand_22123 when executing on primary instance is successful2124 executes on both primary and secondary redis store2125 primary_store redis store contains correct values2126 secondary_store redis store contains correct values2127 when use_primary_and_secondary_stores feature flag is disabled2128 when using secondary store as default2129DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2130DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2131 executes only on secondary redis store2132 when using primary store as default2133DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2134 executes only on primary redis store2135 when executing on the default instance is raising an exception2136 raises error and does not execute on non default instance2137 when executing on the non default instance is raising an exception2138 logs the exception and execute on default instance2139 default_store redis store contains correct values2140 when the command is executed within pipelined block2141 is executed only 1 time on each instance2142 primary_store redis store contains correct values2143 secondary_store redis store contains correct values2144 execute :srem command2145 RSpec::ExampleGroups::GitlabRedisMultiStore::WithWRITERedisCommands::ExecuteSremCommand2146 when executing on primary instance is successful2147 executes on both primary and secondary redis store2148 primary_store redis store contains correct values2149 secondary_store redis store contains correct values2150 when use_primary_and_secondary_stores feature flag is disabled2151 when using secondary store as default2152DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2153DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2154 executes only on secondary redis store2155 when using primary store as default2156DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2157 executes only on primary redis store2158 when executing on the default instance is raising an exception2159 raises error and does not execute on non default instance2160 when executing on the non default instance is raising an exception2161 logs the exception and execute on default instance2162 default_store redis store contains correct values2163 when the command is executed within pipelined block2164 is executed only 1 time on each instance2165 primary_store redis store contains correct values2166 secondary_store redis store contains correct values2167 execute :del command2168 RSpec::ExampleGroups::GitlabRedisMultiStore::WithWRITERedisCommands::ExecuteDelCommand2169 when executing on primary instance is successful2170 executes on both primary and secondary redis store2171 primary_store redis store contains correct values2172 secondary_store redis store contains correct values2173 when use_primary_and_secondary_stores feature flag is disabled2174 when using secondary store as default2175DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2176DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2177 executes only on secondary redis store2178 when using primary store as default2179DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2180 executes only on primary redis store2181 when executing on the default instance is raising an exception2182 raises error and does not execute on non default instance2183 when executing on the non default instance is raising an exception2184 logs the exception and execute on default instance2185 default_store redis store contains correct values2186 when the command is executed within pipelined block2187 is executed only 1 time on each instance2188 primary_store redis store contains correct values2189 secondary_store redis store contains correct values2190 execute :unlink command2191 RSpec::ExampleGroups::GitlabRedisMultiStore::WithWRITERedisCommands::ExecuteUnlinkCommand2192 when executing on primary instance is successful2193 executes on both primary and secondary redis store2194 primary_store redis store contains correct values2195 secondary_store redis store contains correct values2196 when use_primary_and_secondary_stores feature flag is disabled2197 when using secondary store as default2198DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2199DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2200 executes only on secondary redis store2201 when using primary store as default2202DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2203 executes only on primary redis store2204 when executing on the default instance is raising an exception2205 raises error and does not execute on non default instance2206 when executing on the non default instance is raising an exception2207 logs the exception and execute on default instance2208 default_store redis store contains correct values2209 when the command is executed within pipelined block2210 is executed only 1 time on each instance2211 primary_store redis store contains correct values2212 secondary_store redis store contains correct values2213 execute :flushdb command2214 RSpec::ExampleGroups::GitlabRedisMultiStore::WithWRITERedisCommands::ExecuteFlushdbCommand2215 when executing on primary instance is successful2216 executes on both primary and secondary redis store2217 primary_store redis store contains correct values2218 secondary_store redis store contains correct values2219 when use_primary_and_secondary_stores feature flag is disabled2220 when using secondary store as default2221DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2222DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2223 executes only on secondary redis store2224 when using primary store as default2225DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2226 executes only on primary redis store2227 when executing on the default instance is raising an exception2228 raises error and does not execute on non default instance2229 when executing on the non default instance is raising an exception2230 logs the exception and execute on default instance2231 default_store redis store contains correct values2232 when the command is executed within pipelined block2233 is executed only 1 time on each instance2234 primary_store redis store contains correct values2235 secondary_store redis store contains correct values2236 execute :eval command2237 RSpec::ExampleGroups::GitlabRedisMultiStore::WithWRITERedisCommands::ExecuteEvalCommand2238 when executing on primary instance is successful2239 executes on both primary and secondary redis store2240 primary_store redis store contains correct values2241 secondary_store redis store contains correct values2242 when use_primary_and_secondary_stores feature flag is disabled2243 when using secondary store as default2244DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2245DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2246 executes only on secondary redis store2247 when using primary store as default2248DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2249 executes only on primary redis store2250 when executing on the default instance is raising an exception2251 raises error and does not execute on non default instance2252 when executing on the non default instance is raising an exception2253 logs the exception and execute on default instance2254 default_store redis store contains correct values2255 when the command is executed within pipelined block2256 is executed only 1 time on each instance2257 primary_store redis store contains correct values2258 secondary_store redis store contains correct values2259 execute :incr command2260 RSpec::ExampleGroups::GitlabRedisMultiStore::WithWRITERedisCommands::ExecuteIncrCommand2261 when executing on primary instance is successful2262 executes on both primary and secondary redis store2263 primary_store redis store contains correct values2264 secondary_store redis store contains correct values2265 when use_primary_and_secondary_stores feature flag is disabled2266 when using secondary store as default2267DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2268DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2269 executes only on secondary redis store2270 when using primary store as default2271DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2272 executes only on primary redis store2273 when executing on the default instance is raising an exception2274 raises error and does not execute on non default instance2275 when executing on the non default instance is raising an exception2276 logs the exception and execute on default instance2277 default_store redis store contains correct values2278 when the command is executed within pipelined block2279 is executed only 1 time on each instance2280 primary_store redis store contains correct values2281 secondary_store redis store contains correct values2282 execute :incrby command2283 RSpec::ExampleGroups::GitlabRedisMultiStore::WithWRITERedisCommands::ExecuteIncrbyCommand2284 when executing on primary instance is successful2285 executes on both primary and secondary redis store2286 primary_store redis store contains correct values2287 secondary_store redis store contains correct values2288 when use_primary_and_secondary_stores feature flag is disabled2289 when using secondary store as default2290DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2291DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2292 executes only on secondary redis store2293 when using primary store as default2294DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2295 executes only on primary redis store2296 when executing on the default instance is raising an exception2297 raises error and does not execute on non default instance2298 when executing on the non default instance is raising an exception2299 logs the exception and execute on default instance2300 default_store redis store contains correct values2301 when the command is executed within pipelined block2302 is executed only 1 time on each instance2303 primary_store redis store contains correct values2304 secondary_store redis store contains correct values2305 execute :hset command2306 RSpec::ExampleGroups::GitlabRedisMultiStore::WithWRITERedisCommands::ExecuteHsetCommand2307 when executing on primary instance is successful2308 executes on both primary and secondary redis store2309 primary_store redis store contains correct values2310 secondary_store redis store contains correct values2311 when use_primary_and_secondary_stores feature flag is disabled2312 when using secondary store as default2313DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2314DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2315 executes only on secondary redis store2316 when using primary store as default2317DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2318 executes only on primary redis store2319 when executing on the default instance is raising an exception2320 raises error and does not execute on non default instance2321 when executing on the non default instance is raising an exception2322 logs the exception and execute on default instance2323 default_store redis store contains correct values2324 when the command is executed within pipelined block2325 is executed only 1 time on each instance2326 primary_store redis store contains correct values2327 secondary_store redis store contains correct values2328 execute :hdel command2329 RSpec::ExampleGroups::GitlabRedisMultiStore::WithWRITERedisCommands::ExecuteHdelCommand2330 when executing on primary instance is successful2331 executes on both primary and secondary redis store2332 primary_store redis store contains correct values2333 secondary_store redis store contains correct values2334 when use_primary_and_secondary_stores feature flag is disabled2335 when using secondary store as default2336DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2337DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2338 executes only on secondary redis store2339 when using primary store as default2340DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2341 executes only on primary redis store2342 when executing on the default instance is raising an exception2343 raises error and does not execute on non default instance2344 when executing on the non default instance is raising an exception2345 logs the exception and execute on default instance2346 default_store redis store contains correct values2347 when the command is executed within pipelined block2348 is executed only 1 time on each instance2349 primary_store redis store contains correct values2350 secondary_store redis store contains correct values2351 execute :expire command2352 RSpec::ExampleGroups::GitlabRedisMultiStore::WithWRITERedisCommands::ExecuteExpireCommand2353 when executing on primary instance is successful2354 executes on both primary and secondary redis store2355 primary_store redis store contains correct values2356 secondary_store redis store contains correct values2357 when use_primary_and_secondary_stores feature flag is disabled2358 when using secondary store as default2359DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2360DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2361 executes only on secondary redis store2362 when using primary store as default2363DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2364 executes only on primary redis store2365 when executing on the default instance is raising an exception2366 raises error and does not execute on non default instance2367 when executing on the non default instance is raising an exception2368 logs the exception and execute on default instance2369 default_store redis store contains correct values2370 when the command is executed within pipelined block2371 is executed only 1 time on each instance2372 primary_store redis store contains correct values2373 secondary_store redis store contains correct values2374 execute :mapped_hmset command2375 RSpec::ExampleGroups::GitlabRedisMultiStore::WithWRITERedisCommands::ExecuteMappedHmsetCommand2376 when executing on primary instance is successful2377 executes on both primary and secondary redis store2378 primary_store redis store contains correct values2379 secondary_store redis store contains correct values2380 when use_primary_and_secondary_stores feature flag is disabled2381 when using secondary store as default2382DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2383DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2384 executes only on secondary redis store2385 when using primary store as default2386DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2387 executes only on primary redis store2388 when executing on the default instance is raising an exception2389 raises error and does not execute on non default instance2390 when executing on the non default instance is raising an exception2391 logs the exception and execute on default instance2392 default_store redis store contains correct values2393 when the command is executed within pipelined block2394 is executed only 1 time on each instance2395 primary_store redis store contains correct values2396 secondary_store redis store contains correct values2397 #multi2398 command execution in a pipelined command2399 when executing on primary instance is successful2400 executes on both primary and secondary redis store2401 primary_store redis store contains correct values2402 secondary_store redis store contains correct values2403 when executing on the default instance is raising an exception2404 raises error and does not execute on non default instance2405 when executing on the non default instance is raising an exception2406 logs the exception and execute on default instance2407 default_store redis store contains correct values2408 return values from a pipelined command2409 when the value exists on both and are equal2410 returns the value2411 when the value exists on both but differ2412 returns the value from the secondary store, logging an error2413 when the value does not exist on the non-default store but it does on the default2414 returns the value from the secondary store, logging an error2415 when the value does not exist in either2416 returns nil without logging an error2417 when use_primary_and_secondary_stores feature flag is disabled2418 when using secondary store as default2419DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2420DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2421 executes on secondary store2422 when using primary store as default2423DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2424 executes on primary store2425 when either store is a an instance of ::Redis::Cluster2426 calls cross-slot pipeline within multistore2427 when with_readonly_pipeline is used2428 calls the default store only2429 when used in a nested manner2430 raises error2431 #pipelined2432 command execution in a pipelined command2433 when executing on primary instance is successful2434 executes on both primary and secondary redis store2435 primary_store redis store contains correct values2436 secondary_store redis store contains correct values2437 when executing on the default instance is raising an exception2438 raises error and does not execute on non default instance2439 when executing on the non default instance is raising an exception2440 logs the exception and execute on default instance2441 default_store redis store contains correct values2442 return values from a pipelined command2443 when the value exists on both and are equal2444 returns the value2445 when the value exists on both but differ2446 returns the value from the secondary store, logging an error2447 when the value does not exist on the non-default store but it does on the default2448 returns the value from the secondary store, logging an error2449 when the value does not exist in either2450 returns nil without logging an error2451 when use_primary_and_secondary_stores feature flag is disabled2452 when using secondary store as default2453DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2454DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2455 executes on secondary store2456 when using primary store as default2457DEPRECATION WARNING: Invalid Feature Flag use_primary_and_secondary_stores_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2458 executes on primary store2459 when either store is a an instance of ::Redis::Cluster2460 calls cross-slot pipeline within multistore2461 when with_readonly_pipeline is used2462 calls the default store only2463 when used in a nested manner2464 raises error2465 #ping2466 when using both stores2467 without message2468 returns PONG2469 with message2470 returns the same message2471 when primary store returns an error2472 behaves like returns an error2473 returns the error2474 when secondary store returns an error2475 behaves like returns an error2476 returns the error2477 when using only one store2478 when using primary_store as default store2479 behaves like single store as default store2480 when the store retuns success2481 returns response from the respective store2482 when the store returns an error2483 returns the error2484 when using secondary_store as default store2485 behaves like single store as default store2486 when the store retuns success2487 returns response from the respective store2488 when the store returns an error2489 returns the error2490 with unsupported command2491 when in test environment2492 raises error2493 when not in test environment2494 responds to missing method2495 executes method missing2496 when command is not in SKIP_LOG_METHOD_MISSING_FOR_COMMANDS2497 logs MethodMissingError2498 increments method missing counter2499 fallback and executes only on the secondary store2500 when command is in SKIP_LOG_METHOD_MISSING_FOR_COMMANDS2501 does not log MethodMissingError2502 does not increment method missing counter2503 with feature flag :use_primary_store_as_default_for_test_store is enabled2504 fallback and executes only on the secondary store2505 with feature flag :use_primary_store_as_default_for_test_store is disabled2506DEPRECATION WARNING: Invalid Feature Flag use_primary_store_as_default_for_test_store stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)2507 fallback and executes only on the secondary store2508 when the command is executed within pipelined block2509 is executed only 1 time on each instance2510 #to_s2511 returns same value as primary_store2512 #is_a?2513 returns true for ::Redis::Store2514 #use_primary_and_secondary_stores?2515 multi store is enabled2516 with empty DB2517 multi store is disabled2518 when FF table guard raises2519 multi store is disabled2520 #use_primary_store_as_default?2521 multi store is disabled2522 with empty DB2523 multi store is disabled2524 when FF table guard raises2525 multi store is disabled2526MergeRequests::CreateService2527 #execute2528 valid params2529 creates an MR2530 does not execute hooks2531 refreshes the number of open merge requests2532 creates exactly 1 create MR event2533 sets the merge_status to preparing2534 checking for spam2535 checks for spam2536 does not persist when spam2537 when marked with /draft2538 in title and in description2539 sets MR to draft2540 in description only2541 sets MR to draft2542 when merge request is assigned to someone2543 is expected to eq [#<User id:657 @user170>]2544 when reviewer is assigned2545 is expected to eq [#<User id:660 @user172>]2546 invalidates counter cache for reviewers2547 when head pipelines already exist for merge request source branch2548 sets head pipeline2549 when the new pipeline is associated with an old sha2550 sets an old pipeline with associated with the latest sha as the head pipeline2551 when there are no pipelines with the diff head sha2552 does not set the head pipeline2553 Pipelines for merge requests2554 when .gitlab-ci.yml has merge_requests keywords2555 creates a detached merge request pipeline and sets it as a head pipeline2556 when merge request is submitted from forked project2557 create detached merge request pipeline for fork merge request2558 when there are no commits between source branch and target branch2559 does not create a detached merge request pipeline2560 when branch pipeline was created before a merge request pipline has been created2561 sets the latest detached merge request pipeline as the head pipeline2562 when .gitlab-ci.yml does not have merge_requests keywords2563 does not create a detached merge request pipeline2564 when .gitlab-ci.yml is invalid2565 persists a pipeline with config error2566 after_save callback to store_mentions2567 when mentionable attributes change2568 saves mentions2569 when mentionable attributes do not change2570 does not call store_mentions2571 when save fails2572 does not call store_mentions2573 with a milestone2574 deletes the cache key for milestone merge request counter2575 behaves like reviewer_ids filter2576 filter_reviewer2577 without reviewer_ids2578 contains no reviewer_ids2579 with reviewer_ids2580 when the current user can admin the merge_request2581 with a reviewer who can read the merge_request2582 contains reviewers who can read the merge_request2583 when the current_user cannot admin the merge_request2584 contains no reviewers2585 when called in a transaction2586 does not raise an error2587 behaves like issuable record that supports quick actions2588 with labels in command only2589 attaches labels to issuable2590 with labels in params and command2591 attaches all labels to issuable2592 with assignee and milestone in command only2593 assigns and sets milestone to issuable2594 Quick actions2595 with assignee and milestone in params and command2596 assigns and sets milestone to issuable from command2597 merge request create service2598 asssignee_id2599 removes assignee_id when user id is invalid2600 removes assignee_id when user id is 02601 saves assignee when user id is valid2602 when assignee is set2603 invalidates open merge request counter for assignees when merge request is assigned2604 records the assignee assignment event2605 when issuable feature is private2606 removes not authorized assignee when project is Internal2607 removes not authorized assignee when project is Public2608 behaves like when source and target projects are different2609 when user can not access source project2610 raises an error2611 when user can not access target project2612 raises an error2613 when the user has access to both projects2614 creates the merge request2615 does not create the merge request when the target project is archived2616 when user sets source project id2617 ignores source_project_id2618Gitlab::GithubImport::Importer::ProtectedBranchImporter2619 # order random2620 #execute2621 when branch is protected on GitLab2622 allow_force_pushes_on_github: true, allow_force_pushes_on_gitlab: true, expected_allow_force_push: true2623 behaves like create branch protection by the strictest ruleset2624 calls service with the correct arguments2625 creates protected branch and access levels for given github rule2626 allow_force_pushes_on_github: true, allow_force_pushes_on_gitlab: false, expected_allow_force_push: false2627 behaves like create branch protection by the strictest ruleset2628 calls service with the correct arguments2629 creates protected branch and access levels for given github rule2630 allow_force_pushes_on_github: false, allow_force_pushes_on_gitlab: true, expected_allow_force_push: false2631 behaves like create branch protection by the strictest ruleset2632 calls service with the correct arguments2633 creates protected branch and access levels for given github rule2634 allow_force_pushes_on_github: false, allow_force_pushes_on_gitlab: false, expected_allow_force_push: false2635 behaves like create branch protection by the strictest ruleset2636 calls service with the correct arguments2637 creates protected branch and access levels for given github rule2638 when branch is not protected on GitLab2639 behaves like create branch protection by the strictest ruleset2640 calls service with the correct arguments2641 creates protected branch and access levels for given github rule2642 when branch is default2643 when "allow force pushes - everyone" rule is enabled2644 when there is any default branch protection2645 behaves like create branch protection by the strictest ruleset2646 calls service with the correct arguments2647 creates protected branch and access levels for given github rule2648 when there is no default branch protection2649 behaves like create branch protection by the strictest ruleset2650 calls service with the correct arguments2651 creates protected branch and access levels for given github rule2652 when required_conversation_resolution rule is enabled2653 changes project settings2654 when required_conversation_resolution rule is disabled2655 behaves like does not change project attributes2656 does not change only_allow_merge_if_all_discussions_are_resolved2657 does not change push_rule for the project2658 when required_signatures rule is enabled2659 when the push_rules feature is available2660 when project push_rules did previously exist2661 updates push_rule reject_unsigned_commits attribute2662 when project push_rules did not previously exist2663 creates project push_rule with the enabled reject_unsigned_commits attribute2664 when the push_rules feature is not available2665 behaves like does not change project attributes2666 does not change only_allow_merge_if_all_discussions_are_resolved2667 does not change push_rule for the project2668 when required_signatures rule is disabled2669 behaves like does not change project attributes2670 does not change only_allow_merge_if_all_discussions_are_resolved2671 does not change push_rule for the project2672 when branch is not default2673 when required_conversation_resolution rule is enabled2674 behaves like does not change project attributes2675 does not change only_allow_merge_if_all_discussions_are_resolved2676 does not change push_rule for the project2677 when required_conversation_resolution rule is disabled2678 behaves like does not change project attributes2679 does not change only_allow_merge_if_all_discussions_are_resolved2680 does not change push_rule for the project2681 when required_signatures rule is enabled2682 behaves like does not change project attributes2683 does not change only_allow_merge_if_all_discussions_are_resolved2684 does not change push_rule for the project2685 when required_signatures rule is disabled2686 behaves like does not change project attributes2687 does not change only_allow_merge_if_all_discussions_are_resolved2688 does not change push_rule for the project2689 when required_pull_request_reviews rule is enabled on GitHub2690 when no user is allowed to bypass push restrictions2691 behaves like create branch protection by the strictest ruleset2692 calls service with the correct arguments2693 creates protected branch and access levels for given github rule2694 when there are users who are allowed to bypass push restrictions2695 when the protected_refs_for_users feature is available2696 when the users are found on GitLab2697 behaves like create branch protection by the strictest ruleset2698 calls service with the correct arguments2699 creates protected branch and access levels for given github rule2700 when one of found users is not a member of the imported project2701 behaves like create branch protection by the strictest ruleset2702 calls service with the correct arguments2703 creates protected branch and access levels for given github rule2704 when the user are not found on GitLab2705 behaves like create branch protection by the strictest ruleset2706 calls service with the correct arguments2707 creates protected branch and access levels for given github rule2708 when the protected_refs_for_users feature is not available2709 behaves like create branch protection by the strictest ruleset2710 calls service with the correct arguments2711 creates protected branch and access levels for given github rule2712 when required_pull_request_reviews rule is disabled on GitHub2713 when branch is default2714 when default branch protection = Gitlab::Access::PROTECTION_DEV_CAN_PUSH2715 behaves like create branch protection by the strictest ruleset2716 calls service with the correct arguments2717 creates protected branch and access levels for given github rule2718 when default branch protection = Gitlab::Access::PROTECTION_DEV_CAN_MERGE2719 behaves like create branch protection by the strictest ruleset2720 calls service with the correct arguments2721 creates protected branch and access levels for given github rule2722 when branch is protected on GitLab2723 when there is branch protection rule for the role2724 when No one can merge2725 behaves like create branch protection by the strictest ruleset2726 calls service with the correct arguments2727 creates protected branch and access levels for given github rule2728 when Maintainers and Developers can merge2729 behaves like create branch protection by the strictest ruleset2730 calls service with the correct arguments2731 creates protected branch and access levels for given github rule2732 when there is no branch protection rule for the role2733 behaves like create branch protection by the strictest ruleset2734 calls service with the correct arguments2735 creates protected branch and access levels for given github rule2736 when branch is neither default nor protected on GitLab2737 behaves like create branch protection by the strictest ruleset2738 calls service with the correct arguments2739 creates protected branch and access levels for given github rule2740 when the code_owner_approval_required feature is available2741 when branch is protected on GitLab2742 require_code_owner_reviews_on_github: true, require_code_owner_reviews_on_gitlab: true, expected_code_owner_approval_required: true2743 behaves like create branch protection by the strictest ruleset2744 calls service with the correct arguments2745 creates protected branch and access levels for given github rule2746 require_code_owner_reviews_on_github: true, require_code_owner_reviews_on_gitlab: false, expected_code_owner_approval_required: true2747 behaves like create branch protection by the strictest ruleset2748 calls service with the correct arguments2749 creates protected branch and access levels for given github rule2750 require_code_owner_reviews_on_github: false, require_code_owner_reviews_on_gitlab: true, expected_code_owner_approval_required: true2751 behaves like create branch protection by the strictest ruleset2752 calls service with the correct arguments2753 creates protected branch and access levels for given github rule2754 require_code_owner_reviews_on_github: false, require_code_owner_reviews_on_gitlab: false, expected_code_owner_approval_required: false2755 behaves like create branch protection by the strictest ruleset2756 calls service with the correct arguments2757 creates protected branch and access levels for given github rule2758 when branch is not protected on GitLab2759 when require_code_owner_reviews rule is enabled on GitHub2760 behaves like create branch protection by the strictest ruleset2761 calls service with the correct arguments2762 creates protected branch and access levels for given github rule2763 when require_code_owner_reviews rule is disabled on GitHub2764 behaves like create branch protection by the strictest ruleset2765 calls service with the correct arguments2766 creates protected branch and access levels for given github rule2767 when the code_owner_approval_required feature is not available2768 behaves like create branch protection by the strictest ruleset2769 calls service with the correct arguments2770 creates protected branch and access levels for given github rule2771SystemNotes::IssuablesService2772 #relate_issuable2773 behaves like a system note2774 has the correct attributes2775 when issue marks another as related2776 sets the note text2777 #unrelate_issuable2778 behaves like a system note2779 has the correct attributes2780 when issue relation is removed2781 sets the note text2782 #change_assignee2783 behaves like a system note2784 has the correct attributes2785 when assignee added2786 sets the note text2787 behaves like a note with overridable created_at2788 the note has the correct time2789 when assignee removed2790 sets the note text2791 behaves like a note with overridable created_at2792 the note has the correct time2793 #change_issuable_assignees2794 builds a correct phrase when an assignee is added to a non-assigned issue2795 builds a correct phrase when assignee removed2796 builds a correct phrase when assignees changed2797 builds a correct phrase when three assignees removed and one added2798 builds a correct phrase when one assignee changed from a set2799 builds a correct phrase when one assignee removed from a set2800 builds a correct phrase when the locale is different2801 behaves like a system note2802 has the correct attributes2803 behaves like a note with overridable created_at2804 the note has the correct time2805 #change_issuable_reviewers2806 builds a correct phrase when a reviewer is added to a non-assigned merge request2807 builds a correct phrase when reviewer is removed2808 builds a correct phrase when reviewers changed2809 builds a correct phrase when three reviewers removed and one added2810 builds a correct phrase when one reviewer is changed from a set2811 builds a correct phrase when one reviewer removed from a set2812 builds a correct phrase when the locale is different2813 behaves like a system note2814 has the correct attributes2815 #change_issuable_contacts2816 builds a correct phrase when one contact is added2817 builds a correct phrase when one contact is removed2818 builds a correct phrase when one contact is added and one contact is removed2819 builds a correct phrase when three contacts are added and one removed2820 builds a correct phrase when three contacts are removed and one added2821 builds a correct phrase when the locale is different2822 behaves like a system note2823 has the correct attributes2824 #change_status2825 creates a resource state event2826 #change_title2827 when noteable responds to `title`2828 sets the note text2829 behaves like a system note2830 has the correct attributes2831 behaves like a note with overridable created_at2832 the note has the correct time2833 #change_description2834 when noteable responds to `description`2835 sets the note text2836 associates the related description version2837 behaves like a system note2838 has the correct attributes2839 behaves like a note with overridable created_at2840 the note has the correct time2841 #change_issue_confidentiality2842 issue has been made confidential2843 sets the note text2844 behaves like a system note2845 has the correct attributes2846 issue has been made visible2847 sets the note text2848 behaves like a system note2849 has the correct attributes2850 #cross_reference2851 behaves like a system note2852 has the correct attributes2853 when cross-reference disallowed2854 returns nil2855 does not create a system note metadata record2856 when cross-reference allowed2857 behaves like a system note2858 has the correct attributes2859 behaves like a note with overridable created_at2860 the note has the correct time2861 note_body2862 cross-project2863 from Commit2864 references the mentioning commit2865 from non-Commit2866 references the mentioning object2867 within the same project2868 from Commit2869 references the mentioning commit2870 from non-Commit2871 references the mentioning object2872 with external issue2873 queues a background worker2874 #cross_reference_exists?2875 issue from commit2876 is truthy when already mentioned2877 is falsey when not already mentioned2878 legacy capitalized cross reference2879 is truthy when already mentioned2880 commit from commit2881 is truthy when already mentioned2882 is falsey when not already mentioned2883 legacy capitalized cross reference2884 is truthy when already mentioned2885 commit with cross-reference from fork2886 is true when a fork mentions an external issue2887 legacy capitalized cross reference2888 is true when a fork mentions an external issue2889 #change_task_status2890 posts the 'marked the checklist item as complete' system note2891 behaves like a system note2892 has the correct attributes2893 #noteable_moved2894 moved to2895 notifies about noteable being moved to2896 behaves like cross project mentionable2897 contains cross reference to new noteable2898 mentions referenced noteable2899 mentions referenced project2900 behaves like a system note2901 has the correct attributes2902 moved from2903 notifies about noteable being moved from2904 behaves like cross project mentionable2905 contains cross reference to new noteable2906 mentions referenced noteable2907 mentions referenced project2908 behaves like a system note2909 has the correct attributes2910 invalid direction2911 raises error2912 #noteable_cloned2913 cloned to2914 notifies about noteable being cloned to2915 behaves like cross project mentionable2916 contains cross reference to new noteable2917 mentions referenced noteable2918 mentions referenced project2919 behaves like a system note2920 has the correct attributes2921 cloned from2922 notifies about noteable being cloned from2923 behaves like cross project mentionable2924 contains cross reference to new noteable2925 mentions referenced noteable2926 mentions referenced project2927 behaves like a system note2928 has the correct attributes2929 invalid direction2930 raises error2931 custom created timestamp2932 allows setting of custom created_at value2933 defaults to current time when created_at is not given2934 metrics2935 cloned from2936 does not tracks usage2937 cloned to2938 tracks usage2939 behaves like issue_edit snowplow tracking2940 behaves like Snowplow event tracking with RedisHLL context2941 behaves like Snowplow event tracking2942 is emitted2943 #mark_duplicate_issue2944 within the same project2945 is expected to eq "marked this issue as a duplicate of #2"2946 behaves like a system note2947 has the correct attributes2948 across different projects2949 is expected to eq "marked this issue as a duplicate of namespace684/project-592#1"2950 behaves like a system note2951 has the correct attributes2952 #mark_canonical_issue_of_duplicate2953 within the same project2954 is expected to eq "marked #2 as a duplicate of this issue"2955 behaves like a system note2956 has the correct attributes2957 across different projects2958 is expected to eq "marked namespace686/project-594#1 as a duplicate of this issue"2959 behaves like a system note2960 has the correct attributes2961 #discussion_lock2962 discussion unlocked2963 creates the note text correctly2964 behaves like a system note2965 has the correct attributes2966 discussion locked2967 creates the note text correctly2968 behaves like a system note2969 has the correct attributes2970 #cross_reference_disallowed?2971 when mentioned_in is not a MergeRequest2972 is falsey2973 when mentioned_in is a MergeRequest2974 is truthy when noteable is in commits2975 is falsey when noteable is not in commits2976 when notable is an ExternalIssue2977 is false with issue tracker supporting referencing2978 is true with issue tracker not supporting referencing2979 is true without issue tracker2980 #close_after_error_tracking_resolve2981 creates the expected state event2982 #auto_resolve_prometheus_alert2983 creates the expected state event2984 #change_issue_type2985 with issue2986 is expected to eq "changed type from incident to issue"2987 behaves like a system note2988 has the correct attributes2989 with work item2990 is expected to eq "changed type from task to issue"2991 behaves like a system note2992 has the correct attributes2993 #hierarchy_changed2994 when task is added as a child2995 sets the correct note text2996 behaves like a system note2997 has the correct attributes2998 when child task is removed2999 sets the correct note text3000 behaves like a system note3001 has the correct attributes3002Gitlab::Color3003 .of3004 parses black to #0000003005 parses silver to #C0C0C03006 parses gray to #8080803007 parses white to #FFFFFF3008 parses maroon to #8000003009 parses red to #FF00003010 parses purple to #8000803011 parses fuchsia to #FF00FF3012 parses green to #0080003013 parses lime to #00FF003014 parses olive to #8080003015 parses yellow to #FFFF003016 parses navy to #0000803017 parses blue to #0000FF3018 parses teal to #0080803019 parses aqua to #00FFFF3020 parses orange to #FFA5003021 parses aliceblue to #F0F8FF3022 parses antiquewhite to #FAEBD73023 parses aquamarine to #7FFFD43024 parses azure to #F0FFFF3025 parses beige to #F5F5DC3026 parses bisque to #FFE4C43027 parses blanchedalmond to #FFEBCD3028 parses blueviolet to #8A2BE23029 parses brown to #A52A2A3030 parses burlywood to #DEB8873031 parses cadetblue to #5F9EA03032 parses chartreuse to #7FFF003033 parses chocolate to #D2691E3034 parses coral to #FF7F503035 parses cornflowerblue to #6495ED3036 parses cornsilk to #FFF8DC3037 parses crimson to #DC143C3038 parses darkblue to #00008B3039 parses darkcyan to #008B8B3040 parses darkgoldenrod to #B8860B3041 parses darkgray to #A9A9A93042 parses darkgreen to #0064003043 parses darkgrey to #A9A9A93044 parses darkkhaki to #BDB76B3045 parses darkmagenta to #8B008B3046 parses darkolivegreen to #556B2F3047 parses darkorange to #FF8C003048 parses darkorchid to #9932CC3049 parses darkred to #8B00003050 parses darksalmon to #E9967A3051 parses darkseagreen to #8FBC8F3052 parses darkslateblue to #483D8B3053 parses darkslategray to #2F4F4F3054 parses darkslategrey to #2F4F4F3055 parses darkturquoise to #00CED13056 parses darkviolet to #9400D33057 parses deeppink to #FF14933058 parses deepskyblue to #00BFFF3059 parses dimgray to #6969693060 parses dimgrey to #6969693061 parses dodgerblue to #1E90FF3062 parses firebrick to #B222223063 parses floralwhite to #FFFAF03064 parses forestgreen to #228B223065 parses gainsboro to #DCDCDC3066 parses ghostwhite to #F8F8FF3067 parses gold to #FFD7003068 parses goldenrod to #DAA5203069 parses greenyellow to #ADFF2F3070 parses grey to #8080803071 parses honeydew to #F0FFF03072 parses hotpink to #FF69B43073 parses indianred to #CD5C5C3074 parses indigo to #4B00823075 parses ivory to #FFFFF03076 parses khaki to #F0E68C3077 parses lavender to #E6E6FA3078 parses lavenderblush to #FFF0F53079 parses lawngreen to #7CFC003080 parses lemonchiffon to #FFFACD3081 parses lightblue to #ADD8E63082 parses lightcoral to #F080803083 parses lightcyan to #E0FFFF3084 parses lightgoldenrodyellow to #FAFAD23085 parses lightgray to #D3D3D33086 parses lightgreen to #90EE903087 parses lightgrey to #D3D3D33088 parses lightpink to #FFB6C13089 parses lightsalmon to #FFA07A3090 parses lightseagreen to #20B2AA3091 parses lightskyblue to #87CEFA3092 parses lightslategray to #7788993093 parses lightslategrey to #7788993094 parses lightsteelblue to #B0C4DE3095 parses lightyellow to #FFFFE03096 parses limegreen to #32CD323097 parses linen to #FAF0E63098 parses mediumaquamarine to #66CDAA3099 parses mediumblue to #0000CD3100 parses mediumorchid to #BA55D33101 parses mediumpurple to #9370DB3102 parses mediumseagreen to #3CB3713103 parses mediumslateblue to #7B68EE3104 parses mediumspringgreen to #00FA9A3105 parses mediumturquoise to #48D1CC3106 parses mediumvioletred to #C715853107 parses midnightblue to #1919703108 parses mintcream to #F5FFFA3109 parses mistyrose to #FFE4E13110 parses moccasin to #FFE4B53111 parses navajowhite to #FFDEAD3112 parses oldlace to #FDF5E63113 parses olivedrab to #6B8E233114 parses orangered to #FF45003115 parses orchid to #DA70D63116 parses palegoldenrod to #EEE8AA3117 parses palegreen to #98FB983118 parses paleturquoise to #AFEEEE3119 parses palevioletred to #DB70933120 parses papayawhip to #FFEFD53121 parses peachpuff to #FFDAB93122 parses peru to #CD853F3123 parses pink to #FFC0CB3124 parses plum to #DDA0DD3125 parses powderblue to #B0E0E63126 parses rosybrown to #BC8F8F3127 parses royalblue to #4169E13128 parses saddlebrown to #8B45133129 parses salmon to #FA80723130 parses sandybrown to #F4A4603131 parses seagreen to #2E8B573132 parses seashell to #FFF5EE3133 parses sienna to #A0522D3134 parses skyblue to #87CEEB3135 parses slateblue to #6A5ACD3136 parses slategray to #7080903137 parses slategrey to #7080903138 parses snow to #FFFAFA3139 parses springgreen to #00FF7F3140 parses steelblue to #4682B43141 parses tan to #D2B48C3142 parses thistle to #D8BFD83143 parses tomato to #FF63473144 parses turquoise to #40E0D03145 parses violet to #EE82EE3146 parses wheat to #F5DEB33147 parses whitesmoke to #F5F5F53148 parses yellowgreen to #9ACD323149 parses rebeccapurple to #6633993150 parses hex literals as colors3151 raises if the input is nil3152 returns an invalid color if the input is not valid3153 .color_for3154 when generating color for nil value3155 is expected to be valid3156 behaves like deterministic3157 is deterministoc3158 when generating color for empty string value3159 is expected to be valid3160 behaves like deterministic3161 is deterministoc3162 when generating color for number value3163 is expected to be valid3164 behaves like deterministic3165 is deterministoc3166 when generating color for string value3167 is expected to be valid3168 behaves like deterministic3169 is deterministoc3170 #new3171 handles nil values3172 strips input3173 #valid?3174 black is a valid color3175 silver is a valid color3176 gray is a valid color3177 white is a valid color3178 maroon is a valid color3179 red is a valid color3180 purple is a valid color3181 fuchsia is a valid color3182 green is a valid color3183 lime is a valid color3184 olive is a valid color3185 yellow is a valid color3186 navy is a valid color3187 blue is a valid color3188 teal is a valid color3189 aqua is a valid color3190 orange is a valid color3191 aliceblue is a valid color3192 antiquewhite is a valid color3193 aquamarine is a valid color3194 azure is a valid color3195 beige is a valid color3196 bisque is a valid color3197 blanchedalmond is a valid color3198 blueviolet is a valid color3199 brown is a valid color3200 burlywood is a valid color3201 cadetblue is a valid color3202 chartreuse is a valid color3203 chocolate is a valid color3204 coral is a valid color3205 cornflowerblue is a valid color3206 cornsilk is a valid color3207 crimson is a valid color3208 darkblue is a valid color3209 darkcyan is a valid color3210 darkgoldenrod is a valid color3211 darkgray is a valid color3212 darkgreen is a valid color3213 darkgrey is a valid color3214 darkkhaki is a valid color3215 darkmagenta is a valid color3216 darkolivegreen is a valid color3217 darkorange is a valid color3218 darkorchid is a valid color3219 darkred is a valid color3220 darksalmon is a valid color3221 darkseagreen is a valid color3222 darkslateblue is a valid color3223 darkslategray is a valid color3224 darkslategrey is a valid color3225 darkturquoise is a valid color3226 darkviolet is a valid color3227 deeppink is a valid color3228 deepskyblue is a valid color3229 dimgray is a valid color3230 dimgrey is a valid color3231 dodgerblue is a valid color3232 firebrick is a valid color3233 floralwhite is a valid color3234 forestgreen is a valid color3235 gainsboro is a valid color3236 ghostwhite is a valid color3237 gold is a valid color3238 goldenrod is a valid color3239 greenyellow is a valid color3240 grey is a valid color3241 honeydew is a valid color3242 hotpink is a valid color3243 indianred is a valid color3244 indigo is a valid color3245 ivory is a valid color3246 khaki is a valid color3247 lavender is a valid color3248 lavenderblush is a valid color3249 lawngreen is a valid color3250 lemonchiffon is a valid color3251 lightblue is a valid color3252 lightcoral is a valid color3253 lightcyan is a valid color3254 lightgoldenrodyellow is a valid color3255 lightgray is a valid color3256 lightgreen is a valid color3257 lightgrey is a valid color3258 lightpink is a valid color3259 lightsalmon is a valid color3260 lightseagreen is a valid color3261 lightskyblue is a valid color3262 lightslategray is a valid color3263 lightslategrey is a valid color3264 lightsteelblue is a valid color3265 lightyellow is a valid color3266 limegreen is a valid color3267 linen is a valid color3268 mediumaquamarine is a valid color3269 mediumblue is a valid color3270 mediumorchid is a valid color3271 mediumpurple is a valid color3272 mediumseagreen is a valid color3273 mediumslateblue is a valid color3274 mediumspringgreen is a valid color3275 mediumturquoise is a valid color3276 mediumvioletred is a valid color3277 midnightblue is a valid color3278 mintcream is a valid color3279 mistyrose is a valid color3280 moccasin is a valid color3281 navajowhite is a valid color3282 oldlace is a valid color3283 olivedrab is a valid color3284 orangered is a valid color3285 orchid is a valid color3286 palegoldenrod is a valid color3287 palegreen is a valid color3288 paleturquoise is a valid color3289 palevioletred is a valid color3290 papayawhip is a valid color3291 peachpuff is a valid color3292 peru is a valid color3293 pink is a valid color3294 plum is a valid color3295 powderblue is a valid color3296 rosybrown is a valid color3297 royalblue is a valid color3298 saddlebrown is a valid color3299 salmon is a valid color3300 sandybrown is a valid color3301 seagreen is a valid color3302 seashell is a valid color3303 sienna is a valid color3304 skyblue is a valid color3305 slateblue is a valid color3306 slategray is a valid color3307 slategrey is a valid color3308 snow is a valid color3309 springgreen is a valid color3310 steelblue is a valid color3311 tan is a valid color3312 thistle is a valid color3313 tomato is a valid color3314 turquoise is a valid color3315 violet is a valid color3316 wheat is a valid color3317 whitesmoke is a valid color3318 yellowgreen is a valid color3319 rebeccapurple is a valid color3320 #fff is a valid color3321 #ffffff is a valid color3322 #ABCDEF is a valid color3323 #123456 is a valid color3324 #1234567 is not a valid color3325 fff is not a valid color3326 #deadbeaf is not a valid color3327 #a1b2c3 is a valid color3328 nil is not a valid color3329 #light?3330 #fff is light3331 #c2c2c2 is light3332 #868686 is dark3333 #000 is dark3334 invalid colors are not light3335 #contrast3336 with light colors3337 is dark3338 with dark colors3339 is light3340 as_json3341 serializes correctly3342Tooling::Danger::ProjectHelper3343 #categories_for_file3344 path: "glfm_specification/example_snapshots/prosemirror_json.yml", expected_categories: [:frontend]3345 is expected to eq [:frontend]3346 path: "glfm_specification/input/glfm_anything.yml", expected_categories: [:frontend, :backend]3347 is expected to eq [:frontend, :backend]3348 path: "doc/api/graphql/reference/index.md", expected_categories: [:docs, :backend]3349 is expected to eq [:docs, :backend]3350 path: "doc/api/graphql/reference/some_other_file.txt", expected_categories: [:docs, :backend]3351 is expected to eq [:docs, :backend]3352 path: "doc/api/openapi/openapi.yaml", expected_categories: [:docs, :backend]3353 is expected to eq [:docs, :backend]3354 path: "doc/api/openapi/any_other_file.yaml", expected_categories: [:docs, :backend]3355 is expected to eq [:docs, :backend]3356 path: "usage_data.rb", expected_categories: [:database, :backend, :analytics_instrumentation]3357 is expected to eq [:database, :backend, :analytics_instrumentation]3358 path: "doc/foo.md", expected_categories: [:docs]3359 is expected to eq [:docs]3360 path: "CONTRIBUTING.md", expected_categories: [:docs]3361 is expected to eq [:docs]3362 path: "LICENSE", expected_categories: [:docs]3363 is expected to eq [:docs]3364 path: "MAINTENANCE.md", expected_categories: [:docs]3365 is expected to eq [:docs]3366 path: "PHILOSOPHY.md", expected_categories: [:docs]3367 is expected to eq [:docs]3368 path: "PROCESS.md", expected_categories: [:docs]3369 is expected to eq [:docs]3370 path: "README.md", expected_categories: [:docs]3371 is expected to eq [:docs]3372 path: "ee/doc/foo", expected_categories: [:none]3373 is expected to eq [:none]3374 path: "ee/README", expected_categories: [:none]3375 is expected to eq [:none]3376 path: "app/assets/foo", expected_categories: [:frontend]3377 is expected to eq [:frontend]3378 path: "app/views/foo", expected_categories: [:frontend, :backend]3379 is expected to eq [:frontend, :backend]3380 path: "public/foo", expected_categories: [:frontend]3381 is expected to eq [:frontend]3382 path: "scripts/frontend/foo", expected_categories: [:frontend]3383 is expected to eq [:frontend]3384 path: "spec/frontend/bar", expected_categories: [:frontend]3385 is expected to eq [:frontend]3386 path: "spec/frontend_integration/bar", expected_categories: [:frontend]3387 is expected to eq [:frontend]3388 path: "vendor/assets/foo", expected_categories: [:frontend]3389 is expected to eq [:frontend]3390 path: "babel.config.js", expected_categories: [:frontend]3391 is expected to eq [:frontend]3392 path: "jest.config.js", expected_categories: [:frontend]3393 is expected to eq [:frontend]3394 path: "package.json", expected_categories: [:frontend]3395 is expected to eq [:frontend]3396 path: "yarn.lock", expected_categories: [:frontend]3397 is expected to eq [:frontend]3398 path: "config/foo.js", expected_categories: [:frontend]3399 is expected to eq [:frontend]3400 path: "config/deep/foo.js", expected_categories: [:frontend]3401 is expected to eq [:frontend]3402 path: "app/components/pajamas/empty_state_component.html.haml", expected_categories: [:frontend, :backend]3403 is expected to eq [:frontend, :backend]3404 path: "ee/app/components/pajamas/empty_state_component.html.haml", expected_categories: [:frontend, :backend]3405 is expected to eq [:frontend, :backend]3406 path: "app/components/diffs/overflow_warning_component.html.haml", expected_categories: [:frontend, :backend]3407 is expected to eq [:frontend, :backend]3408 path: "app/components/layouts/horizontal_section_component.rb", expected_categories: [:frontend, :backend]3409 is expected to eq [:frontend, :backend]3410 path: "ee/app/assets/foo", expected_categories: [:frontend]3411 is expected to eq [:frontend]3412 path: "ee/app/views/foo", expected_categories: [:frontend, :backend]3413 is expected to eq [:frontend, :backend]3414 path: "ee/spec/frontend/bar", expected_categories: [:frontend]3415 is expected to eq [:frontend]3416 path: "ee/spec/frontend_integration/bar", expected_categories: [:frontend]3417 is expected to eq [:frontend]3418 path: "app/models/foo", expected_categories: [:backend]3419 is expected to eq [:backend]3420 path: "bin/foo", expected_categories: [:backend]3421 is expected to eq [:backend]3422 path: "config/foo", expected_categories: [:backend]3423 is expected to eq [:backend]3424 path: "lib/foo", expected_categories: [:backend]3425 is expected to eq [:backend]3426 path: "rubocop/foo", expected_categories: [:backend]3427 is expected to eq [:backend]3428 path: ".rubocop.yml", expected_categories: [:backend]3429 is expected to eq [:backend]3430 path: ".rubocop_todo.yml", expected_categories: [:backend]3431 is expected to eq [:backend]3432 path: ".rubocop_todo/cop/name.yml", expected_categories: [:backend]3433 is expected to eq [:backend]3434 path: "gems/foo/.rubocop.yml", expected_categories: [:backend]3435 is expected to eq [:backend]3436 path: "spec/foo", expected_categories: [:backend]3437 is expected to eq [:backend]3438 path: "spec/foo/bar", expected_categories: [:backend]3439 is expected to eq [:backend]3440 path: "ee/app/foo", expected_categories: [:backend]3441 is expected to eq [:backend]3442 path: "ee/bin/foo", expected_categories: [:backend]3443 is expected to eq [:backend]3444 path: "ee/spec/foo", expected_categories: [:backend]3445 is expected to eq [:backend]3446 path: "ee/spec/foo/bar", expected_categories: [:backend]3447 is expected to eq [:backend]3448 path: "spec/migrations/foo", expected_categories: [:database]3449 is expected to eq [:database]3450 path: "ee/spec/migrations/foo", expected_categories: [:database]3451 is expected to eq [:database]3452 path: "spec/features/foo", expected_categories: [:test]3453 is expected to eq [:test]3454 path: "ee/spec/features/foo", expected_categories: [:test]3455 is expected to eq [:test]3456 path: "spec/support/shared_examples/features/foo", expected_categories: [:test]3457 is expected to eq [:test]3458 path: "ee/spec/support/shared_examples/features/foo", expected_categories: [:test]3459 is expected to eq [:test]3460 path: "spec/support/shared_contexts/features/foo", expected_categories: [:test]3461 is expected to eq [:test]3462 path: "ee/spec/support/shared_contexts/features/foo", expected_categories: [:test]3463 is expected to eq [:test]3464 path: "spec/support/helpers/features/foo", expected_categories: [:test]3465 is expected to eq [:test]3466 path: "ee/spec/support/helpers/features/foo", expected_categories: [:test]3467 is expected to eq [:test]3468 path: "generator_templates/foo", expected_categories: [:backend]3469 is expected to eq [:backend]3470 path: "vendor/languages.yml", expected_categories: [:backend]3471 is expected to eq [:backend]3472 path: "file_hooks/examples/", expected_categories: [:backend]3473 is expected to eq [:backend]3474 path: "Gemfile", expected_categories: [:backend]3475 is expected to eq [:backend]3476 path: "Gemfile.lock", expected_categories: [:backend]3477 is expected to eq [:backend]3478 path: "Gemfile.checksum", expected_categories: [:backend]3479 is expected to eq [:backend]3480 path: "Rakefile", expected_categories: [:backend]3481 is expected to eq [:backend]3482 path: "FOO_VERSION", expected_categories: [:backend]3483 is expected to eq [:backend]3484 path: "lib/gitlab/ci/templates/Security/SAST.gitlab-ci.yml", expected_categories: [:ci_template]3485 is expected to eq [:ci_template]3486 path: "lib/gitlab/ci/templates/dotNET-Core.yml", expected_categories: [:ci_template]3487 is expected to eq [:ci_template]3488 path: "ee/FOO_VERSION", expected_categories: [:none]3489 is expected to eq [:none]3490 path: "db/schema.rb", expected_categories: [:database]3491 is expected to eq [:database]3492 path: "db/structure.sql", expected_categories: [:database]3493 is expected to eq [:database]3494 path: "db/migrate/foo", expected_categories: [:database, :migration]3495 is expected to eq [:database, :migration]3496 path: "db/post_migrate/foo", expected_categories: [:database, :migration]3497 is expected to eq [:database, :migration]3498 path: "ee/db/geo/migrate/foo", expected_categories: [:database, :migration]3499 is expected to eq [:database, :migration]3500 path: "ee/db/geo/post_migrate/foo", expected_categories: [:database, :migration]3501 is expected to eq [:database, :migration]3502 path: "app/models/project_authorization.rb", expected_categories: [:database, :backend]3503 is expected to eq [:database, :backend]3504 path: "app/services/users/refresh_authorized_projects_service.rb", expected_categories: [:database, :backend]3505 is expected to eq [:database, :backend]3506 path: "app/services/authorized_project_update/find_records_due_for_refresh_service.rb", expected_categories: [:database, :backend]3507 is expected to eq [:database, :backend]3508 path: "lib/gitlab/background_migration.rb", expected_categories: [:database, :backend]3509 is expected to eq [:database, :backend]3510 path: "lib/gitlab/background_migration/foo", expected_categories: [:database, :backend]3511 is expected to eq [:database, :backend]3512 path: "ee/lib/gitlab/background_migration/foo", expected_categories: [:database, :backend]3513 is expected to eq [:database, :backend]3514 path: "lib/gitlab/database.rb", expected_categories: [:database, :backend]3515 is expected to eq [:database, :backend]3516 path: "lib/gitlab/database/foo", expected_categories: [:database, :backend]3517 is expected to eq [:database, :backend]3518 path: "ee/lib/gitlab/database/foo", expected_categories: [:database, :backend]3519 is expected to eq [:database, :backend]3520 path: "lib/gitlab/sql/foo", expected_categories: [:database, :backend]3521 is expected to eq [:database, :backend]3522 path: "rubocop/cop/migration/foo", expected_categories: [:database]3523 is expected to eq [:database]3524 path: "db/fixtures/foo.rb", expected_categories: [:backend]3525 is expected to eq [:backend]3526 path: "ee/db/fixtures/foo.rb", expected_categories: [:backend]3527 is expected to eq [:backend]3528 path: "qa/foo", expected_categories: [:qa]3529 is expected to eq [:qa]3530 path: "ee/qa/foo", expected_categories: [:qa]3531 is expected to eq [:qa]3532 path: "workhorse/main.go", expected_categories: [:workhorse]3533 is expected to eq [:workhorse]3534 path: "workhorse/internal/upload/upload.go", expected_categories: [:workhorse]3535 is expected to eq [:workhorse]3536 path: "locale/gitlab.pot", expected_categories: [:none]3537 is expected to eq [:none]3538 path: "FOO", expected_categories: [:none]3539 is expected to eq [:none]3540 path: "foo", expected_categories: [:none]3541 is expected to eq [:none]3542 path: "foo/bar.rb", expected_categories: [:backend]3543 is expected to eq [:backend]3544 path: "foo/bar.js", expected_categories: [:frontend]3545 is expected to eq [:frontend]3546 path: "foo/bar.txt", expected_categories: [:none]3547 is expected to eq [:none]3548 path: "foo/bar.md", expected_categories: [:none]3549 is expected to eq [:none]3550 path: "ee/config/metrics/counts_7d/20210216174919_g_analytics_issues_weekly.yml", expected_categories: [:analytics_instrumentation]3551 is expected to eq [:analytics_instrumentation]3552 path: "lib/gitlab/usage_data_counters/aggregated_metrics/common.yml", expected_categories: [:analytics_instrumentation]3553 is expected to eq [:analytics_instrumentation]3554 path: "lib/gitlab/usage_data_counters/hll_redis_counter.rb", expected_categories: [:backend, :analytics_instrumentation]3555 is expected to eq [:backend, :analytics_instrumentation]3556 path: "lib/gitlab/tracking.rb", expected_categories: [:backend, :analytics_instrumentation]3557 is expected to eq [:backend, :analytics_instrumentation]3558 path: "lib/gitlab/usage/service_ping_report.rb", expected_categories: [:backend, :analytics_instrumentation]3559 is expected to eq [:backend, :analytics_instrumentation]3560 path: "lib/gitlab/usage/metrics/key_path_processor.rb", expected_categories: [:backend, :analytics_instrumentation]3561 is expected to eq [:backend, :analytics_instrumentation]3562 path: "spec/lib/gitlab/tracking_spec.rb", expected_categories: [:backend, :analytics_instrumentation]3563 is expected to eq [:backend, :analytics_instrumentation]3564 path: "app/helpers/tracking_helper.rb", expected_categories: [:backend, :analytics_instrumentation]3565 is expected to eq [:backend, :analytics_instrumentation]3566 path: "spec/helpers/tracking_helper_spec.rb", expected_categories: [:backend, :analytics_instrumentation]3567 is expected to eq [:backend, :analytics_instrumentation]3568 path: "lib/generators/rails/usage_metric_definition_generator.rb", expected_categories: [:backend, :analytics_instrumentation]3569 is expected to eq [:backend, :analytics_instrumentation]3570 path: "spec/lib/generators/usage_metric_definition_generator_spec.rb", expected_categories: [:backend, :analytics_instrumentation]3571 is expected to eq [:backend, :analytics_instrumentation]3572 path: "config/metrics/schema.json", expected_categories: [:analytics_instrumentation]3573 is expected to eq [:analytics_instrumentation]3574 path: "app/assets/javascripts/tracking/foo.js", expected_categories: [:frontend, :analytics_instrumentation]3575 is expected to eq [:frontend, :analytics_instrumentation]3576 path: "spec/frontend/tracking/foo.js", expected_categories: [:frontend, :analytics_instrumentation]3577 is expected to eq [:frontend, :analytics_instrumentation]3578 path: "spec/frontend/tracking_spec.js", expected_categories: [:frontend, :analytics_instrumentation]3579 is expected to eq [:frontend, :analytics_instrumentation]3580 path: "lib/gitlab/usage_database/foo.rb", expected_categories: [:backend]3581 is expected to eq [:backend]3582 path: "config/metrics/counts_7d/test_metric.yml", expected_categories: [:analytics_instrumentation]3583 is expected to eq [:analytics_instrumentation]3584 path: "config/events/snowplow_event.yml", expected_categories: [:analytics_instrumentation]3585 is expected to eq [:analytics_instrumentation]3586 path: "config/metrics/schema.json", expected_categories: [:analytics_instrumentation]3587 is expected to eq [:analytics_instrumentation]3588 path: "doc/api/usage_data.md", expected_categories: [:analytics_instrumentation]3589 is expected to eq [:analytics_instrumentation]3590 path: "spec/lib/gitlab/usage_data_spec.rb", expected_categories: [:analytics_instrumentation]3591 is expected to eq [:analytics_instrumentation]3592 path: "spec/lib/gitlab/usage/service_ping_report.rb", expected_categories: [:backend, :analytics_instrumentation]3593 is expected to eq [:backend, :analytics_instrumentation]3594 path: "spec/lib/gitlab/usage/metrics/key_path_processor.rb", expected_categories: [:backend, :analytics_instrumentation]3595 is expected to eq [:backend, :analytics_instrumentation]3596 path: "app/models/integration.rb", expected_categories: [:import_integrate_be, :backend]3597 is expected to eq [:import_integrate_be, :backend]3598 path: "ee/app/models/integrations/github.rb", expected_categories: [:import_integrate_be, :backend]3599 is expected to eq [:import_integrate_be, :backend]3600 path: "ee/app/models/ee/integrations/jira.rb", expected_categories: [:import_integrate_be, :backend]3601 is expected to eq [:import_integrate_be, :backend]3602 path: "app/models/integrations/chat_message/pipeline_message.rb", expected_categories: [:import_integrate_be, :backend]3603 is expected to eq [:import_integrate_be, :backend]3604 path: "app/models/jira_connect_subscription.rb", expected_categories: [:import_integrate_be, :backend]3605 is expected to eq [:import_integrate_be, :backend]3606 path: "app/models/hooks/service_hook.rb", expected_categories: [:import_integrate_be, :backend]3607 is expected to eq [:import_integrate_be, :backend]3608 path: "ee/app/models/ee/hooks/system_hook.rb", expected_categories: [:import_integrate_be, :backend]3609 is expected to eq [:import_integrate_be, :backend]3610 path: "app/services/concerns/integrations/project_test_data.rb", expected_categories: [:import_integrate_be, :backend]3611 is expected to eq [:import_integrate_be, :backend]3612 path: "ee/app/services/ee/integrations/test/project_service.rb", expected_categories: [:import_integrate_be, :backend]3613 is expected to eq [:import_integrate_be, :backend]3614 path: "app/controllers/concerns/integrations/actions.rb", expected_categories: [:import_integrate_be, :backend]3615 is expected to eq [:import_integrate_be, :backend]3616 path: "ee/app/controllers/concerns/ee/integrations/params.rb", expected_categories: [:import_integrate_be, :backend]3617 is expected to eq [:import_integrate_be, :backend]3618 path: "ee/app/controllers/projects/integrations/jira/issues_controller.rb", expected_categories: [:import_integrate_be, :backend]3619 is expected to eq [:import_integrate_be, :backend]3620 path: "app/controllers/projects/hooks_controller.rb", expected_categories: [:import_integrate_be, :backend]3621 is expected to eq [:import_integrate_be, :backend]3622 path: "app/controllers/admin/hook_logs_controller.rb", expected_categories: [:import_integrate_be, :backend]3623 is expected to eq [:import_integrate_be, :backend]3624 path: "app/controllers/groups/settings/integrations_controller.rb", expected_categories: [:import_integrate_be, :backend]3625 is expected to eq [:import_integrate_be, :backend]3626 path: "app/controllers/jira_connect/branches_controller.rb", expected_categories: [:import_integrate_be, :backend]3627 is expected to eq [:import_integrate_be, :backend]3628 path: "app/controllers/oauth/jira/authorizations_controller.rb", expected_categories: [:import_integrate_be, :backend]3629 is expected to eq [:import_integrate_be, :backend]3630 path: "ee/app/finders/projects/integrations/jira/by_ids_finder.rb", expected_categories: [:import_integrate_be, :database, :backend]3631 is expected to eq [:import_integrate_be, :database, :backend]3632 path: "app/workers/jira_connect/sync_merge_request_worker.rb", expected_categories: [:import_integrate_be, :backend]3633 is expected to eq [:import_integrate_be, :backend]3634 path: "app/workers/propagate_integration_inherit_worker.rb", expected_categories: [:import_integrate_be, :backend]3635 is expected to eq [:import_integrate_be, :backend]3636 path: "app/workers/web_hooks/log_execution_worker.rb", expected_categories: [:import_integrate_be, :backend]3637 is expected to eq [:import_integrate_be, :backend]3638 path: "app/workers/web_hook_worker.rb", expected_categories: [:import_integrate_be, :backend]3639 is expected to eq [:import_integrate_be, :backend]3640 path: "app/workers/project_service_worker.rb", expected_categories: [:import_integrate_be, :backend]3641 is expected to eq [:import_integrate_be, :backend]3642 path: "lib/atlassian/jira_connect/serializers/commit_entity.rb", expected_categories: [:import_integrate_be, :backend]3643 is expected to eq [:import_integrate_be, :backend]3644 path: "lib/api/entities/project_integration.rb", expected_categories: [:import_integrate_be, :backend]3645 is expected to eq [:import_integrate_be, :backend]3646 path: "lib/gitlab/hook_data/note_builder.rb", expected_categories: [:import_integrate_be, :backend]3647 is expected to eq [:import_integrate_be, :backend]3648 path: "lib/gitlab/data_builder/note.rb", expected_categories: [:import_integrate_be, :backend]3649 is expected to eq [:import_integrate_be, :backend]3650 path: "lib/gitlab/web_hooks/recursion_detection.rb", expected_categories: [:import_integrate_be, :backend]3651 is expected to eq [:import_integrate_be, :backend]3652 path: "ee/lib/ee/gitlab/integrations/sti_type.rb", expected_categories: [:import_integrate_be, :backend]3653 is expected to eq [:import_integrate_be, :backend]3654 path: "ee/lib/ee/api/helpers/integrations_helpers.rb", expected_categories: [:import_integrate_be, :backend]3655 is expected to eq [:import_integrate_be, :backend]3656 path: "ee/app/serializers/integrations/jira_serializers/issue_entity.rb", expected_categories: [:import_integrate_be, :backend]3657 is expected to eq [:import_integrate_be, :backend]3658 path: "app/serializers/jira_connect/app_data_serializer.rb", expected_categories: [:import_integrate_be, :backend]3659 is expected to eq [:import_integrate_be, :backend]3660 path: "lib/api/github/entities.rb", expected_categories: [:import_integrate_be, :backend]3661 is expected to eq [:import_integrate_be, :backend]3662 path: "lib/api/v3/github.rb", expected_categories: [:import_integrate_be, :backend]3663 is expected to eq [:import_integrate_be, :backend]3664 path: "app/controllers/clusters/integrations_controller.rb", expected_categories: [:backend]3665 is expected to eq [:backend]3666 path: "app/services/clusters/integrations/prometheus_health_check_service.rb", expected_categories: [:backend]3667 is expected to eq [:backend]3668 path: "app/graphql/types/alert_management/integration_type.rb", expected_categories: [:backend]3669 is expected to eq [:backend]3670 path: "app/views/jira_connect/branches/new.html.haml", expected_categories: [:import_integrate_fe, :frontend]3671 is expected to eq [:import_integrate_fe, :frontend]3672 path: "app/views/layouts/jira_connect.html.haml", expected_categories: [:import_integrate_fe, :frontend]3673 is expected to eq [:import_integrate_fe, :frontend]3674 path: "app/assets/javascripts/jira_connect/branches/pages/index.vue", expected_categories: [:import_integrate_fe, :frontend]3675 is expected to eq [:import_integrate_fe, :frontend]3676 path: "ee/app/views/projects/integrations/jira/issues/show.html.haml", expected_categories: [:import_integrate_fe, :frontend]3677 is expected to eq [:import_integrate_fe, :frontend]3678 path: "ee/app/assets/javascripts/integrations/zentao/issues_list/graphql/queries/get_zentao_issues.query.graphql", expected_categories: [:import_integrate_fe, :frontend]3679 is expected to eq [:import_integrate_fe, :frontend]3680 path: "app/assets/javascripts/pages/projects/settings/integrations/show/index.js", expected_categories: [:import_integrate_fe, :frontend]3681 is expected to eq [:import_integrate_fe, :frontend]3682 path: "ee/app/assets/javascripts/pages/groups/hooks/index.js", expected_categories: [:import_integrate_fe, :frontend]3683 is expected to eq [:import_integrate_fe, :frontend]3684 path: "app/views/clusters/clusters/_integrations_tab.html.haml", expected_categories: [:frontend, :backend]3685 is expected to eq [:frontend, :backend]3686 path: "app/assets/javascripts/alerts_settings/graphql/fragments/integration_item.fragment.graphql", expected_categories: [:frontend]3687 is expected to eq [:frontend]3688 path: "app/assets/javascripts/filtered_search/droplab/hook_input.js", expected_categories: [:frontend]3689 is expected to eq [:frontend]3690 path: "app/views/layouts/header/_default.html.haml", expected_categories: [:frontend, :backend]3691 is expected to eq [:frontend, :backend]3692 path: "app/views/layouts/header/_default.html.erb", expected_categories: [:frontend, :backend]3693 is expected to eq [:frontend, :backend]3694 having specific changes3695 expected_categories: [:analytics_instrumentation], patch: "+data-track-action", changed_files: ["components/welcome.vue"]3696 has the correct categories3697 expected_categories: [:analytics_instrumentation], patch: "+ data: { track_label:", changed_files: ["admin/groups/_form.html.haml"]3698 has the correct categories3699 expected_categories: [:analytics_instrumentation], patch: "+ Gitlab::Tracking.event", changed_files: ["dashboard/todos_controller.rb", "admin/groups/_form.html.haml"]3700 has the correct categories3701 expected_categories: [:database, :backend, :analytics_instrumentation], patch: "+ count(User.active)", changed_files: ["usage_data.rb", "lib/gitlab/usage_data.rb", "ee/lib/ee/gitlab/usage_data.rb"]3702 has the correct categories3703 expected_categories: [:database, :backend, :analytics_instrumentation], patch: "+ estimate_batch_distinct_count(User.active)", changed_files: ["usage_data.rb"]3704 has the correct categories3705 expected_categories: [:backend, :analytics_instrumentation], patch: "+ alt_usage_data(User.active)", changed_files: ["lib/gitlab/usage_data.rb"]3706 has the correct categories3707 expected_categories: [:backend, :analytics_instrumentation], patch: "+ count(User.active)", changed_files: ["lib/gitlab/usage_data/topology.rb"]3708 has the correct categories3709 expected_categories: [:backend, :analytics_instrumentation], patch: "+ foo_count(User.active)", changed_files: ["lib/gitlab/usage_data.rb"]3710 has the correct categories3711 expected_categories: [:backend], patch: "+ count(User.active)", changed_files: ["user.rb"]3712 has the correct categories3713 expected_categories: [:import_integrate_be, :database, :migration], patch: "+ add_column :integrations, :foo, :text", changed_files: ["db/migrate/foo.rb"]3714 has the correct categories3715 expected_categories: [:import_integrate_be, :database, :migration], patch: "+ create_table :zentao_tracker_data do |t|", changed_files: ["ee/db/post_migrate/foo.rb"]3716 has the correct categories3717 expected_categories: [:import_integrate_be, :backend], patch: "+ Integrations::Foo", changed_files: ["app/foo/bar.rb"]3718 has the correct categories3719 expected_categories: [:import_integrate_be, :backend], patch: "+ project.execute_hooks(foo, :bar)", changed_files: ["ee/lib/ee/foo.rb"]3720 has the correct categories3721 expected_categories: [:import_integrate_be, :backend], patch: "+ project.execute_integrations(foo, :bar)", changed_files: ["app/foo.rb"]3722 has the correct categories3723 expected_categories: [:frontend, :analytics_instrumentation], patch: "+ api.trackRedisCounterEvent(\"foo\")", changed_files: ["app/assets/javascripts/telemetry.js", "ee/app/assets/javascripts/mr_widget.vue"]3724 has the correct categories3725 expected_categories: [:frontend, :analytics_instrumentation], patch: "+ api.trackRedisHllUserEvent(\"bar\")", changed_files: ["app/assets/javascripts/telemetry.js", "ee/app/assets/javascripts/mr_widget.vue"]3726 has the correct categories3727 #file_lines3728 returns the chomped file lines3729Releases::GroupReleasesFinder3730 when parent is a group3731 without subgroups3732 behaves like preload3733 preloads associations3734 when preload is false3735 does not preload associations3736 behaves like when the user is not part of the group3737 returns no releases3738 when the user is a project guest on one sibling project3739 does not return any releases3740 when the user is a guest on the group3741 sorts by release date and id3742 with subgroups3743 with a single-level subgroup3744 behaves like when the user is not part of the group3745 returns no releases3746 when the user a project guest in the subgroup project3747 does not return any releases3748 when the user is a guest on the group3749 returns all releases3750 with a multi-level subgroup3751 behaves like when the user is not part of the group3752 returns no releases3753 when the user a project guest in the subgroup and subsubgroup project3754 does not return any releases3755 when the user a project guest in the subsubgroup project3756 does not return any releases3757 performance testing3758 behaves like avoids N+1 queries3759 with subgroups3760 subgroups avoids N+1 queries3761Backup::Repositories3762 #dump3763 avoids N+1 database queries3764 hashed storage3765 behaves like creates repository bundles3766 calls enqueue for each repository type3767 legacy storage3768 behaves like creates repository bundles3769 calls enqueue for each repository type3770 command failure3771 enqueue_project raises an error3772 project query raises an error3773 storages3774 calls enqueue for all repositories on the specified storage3775 paths3776 project path3777 calls enqueue for all repositories on the specified project3778 group path3779 calls enqueue for all repositories on all descendant projects3780 skip_paths3781 project path3782 calls enqueue for all repositories on the specified project3783 group path3784 calls enqueue for all repositories on all descendant projects3785 #restore3786 calls enqueue for each repository type3787 restoring object pools3788 schedules restoring of the pool3789 skips pools when no source project is found3790 cleanup snippets3791 shows the appropriate error3792 removes the snippets from the DB3793 removes the repository from disk3794 storages3795 calls enqueue for all repositories on the specified storage3796 paths3797 project path3798 calls enqueue for all repositories on the specified project3799 group path3800 calls enqueue for all repositories on all descendant projects3801 skip_paths3802 project path3803 calls enqueue for all repositories on the specified project3804 group path3805 calls enqueue for all repositories on all descendant projects3806AlertManagement::ProcessPrometheusAlertService3807 #execute3808 when alert payload is valid3809 behaves like processes new firing alert3810 behaves like creates an alert management alert or errors3811 is expected to match {:alerts=>(all a kind of AlertManagement::Alert(id: integer, created_at: timestamptz, updated_at: timestamptz, start...hosts: text, payload: jsonb, prometheus_alert_id: integer, environment_id: integer, domain: integer))}3812 creates AlertManagement::Alert3813 executes the alert service hooks3814 and fails to save3815 writes a warning to the log3816 behaves like alerts service responds with an error3817 is expected to eq :bad_request3818 behaves like creates expected system notes for alert3819 for new_alert3820 behaves like processes incident issues if enabled3821 is expected to be success3822 with incident setting disabled3823 behaves like does not process incident issues3824 is expected not to receive perform_async(*(any args)) 0 times3825 behaves like sends alert notification emails if enabled3826 is expected to receive prometheus_alerts_fired(*(any args)) 1 time3827 with email setting disabled3828 behaves like does not send alert notification emails3829 is expected not to receive new(*(any args)) 0 times3830 for an existing alert with the same fingerprint3831 which is triggered3832 behaves like adds an alert management alert event3833 is expected to match {:alerts=>(all a kind of AlertManagement::Alert(id: integer, created_at: timestamptz, updated_at: timestamptz, start...hosts: text, payload: jsonb, prometheus_alert_id: integer, environment_id: integer, domain: integer))}3834 behaves like does not create an alert management alert3835 is expected not to change `AlertManagement::Alert.count`3836 behaves like sends alert notification emails if enabled3837 is expected to receive prometheus_alerts_fired(*(any args)) 1 time3838 with email setting disabled3839 behaves like does not send alert notification emails3840 is expected not to receive new(*(any args)) 0 times3841 behaves like processes incident issues if enabled3842 is expected to be success3843 with issue3844 behaves like does not process incident issues3845 is expected not to receive perform_async(*(any args)) 0 times3846 with incident setting disabled3847 behaves like does not process incident issues3848 is expected not to receive perform_async(*(any args)) 0 times3849 behaves like does not create an alert management alert3850 is expected not to change `AlertManagement::Alert.count`3851 behaves like does not create a system note for alert3852 is expected not to change `Note.count`3853 with an existing resolved alert as well3854 behaves like adds an alert management alert event3855 is expected to match {:alerts=>(all a kind of AlertManagement::Alert(id: integer, created_at: timestamptz, updated_at: timestamptz, start...hosts: text, payload: jsonb, prometheus_alert_id: integer, environment_id: integer, domain: integer))}3856 behaves like does not create an alert management alert3857 is expected not to change `AlertManagement::Alert.count`3858 behaves like sends alert notification emails if enabled3859 is expected to receive prometheus_alerts_fired(*(any args)) 1 time3860 with email setting disabled3861 behaves like does not send alert notification emails3862 is expected not to receive new(*(any args)) 0 times3863 behaves like processes incident issues if enabled3864 is expected to be success3865 with issue3866 behaves like does not process incident issues3867 is expected not to receive perform_async(*(any args)) 0 times3868 with incident setting disabled3869 behaves like does not process incident issues3870 is expected not to receive perform_async(*(any args)) 0 times3871 behaves like does not create an alert management alert3872 is expected not to change `AlertManagement::Alert.count`3873 behaves like does not create a system note for alert3874 is expected not to change `Note.count`3875 which is acknowledged3876 behaves like adds an alert management alert event3877 is expected to match {:alerts=>(all a kind of AlertManagement::Alert(id: integer, created_at: timestamptz, updated_at: timestamptz, start...hosts: text, payload: jsonb, prometheus_alert_id: integer, environment_id: integer, domain: integer))}3878 behaves like does not create an alert management alert3879 is expected not to change `AlertManagement::Alert.count`3880 behaves like processes incident issues if enabled3881 is expected to be success3882 with issue3883 behaves like does not process incident issues3884 is expected not to receive perform_async(*(any args)) 0 times3885 with incident setting disabled3886 behaves like does not process incident issues3887 is expected not to receive perform_async(*(any args)) 0 times3888 behaves like does not create an alert management alert3889 is expected not to change `AlertManagement::Alert.count`3890 behaves like does not create a system note for alert3891 is expected not to change `Note.count`3892 behaves like does not send alert notification emails3893 is expected not to receive new(*(any args)) 0 times3894 which is ignored3895 behaves like adds an alert management alert event3896 is expected to match {:alerts=>(all a kind of AlertManagement::Alert(id: integer, created_at: timestamptz, updated_at: timestamptz, start...hosts: text, payload: jsonb, prometheus_alert_id: integer, environment_id: integer, domain: integer))}3897 behaves like does not create an alert management alert3898 is expected not to change `AlertManagement::Alert.count`3899 behaves like processes incident issues if enabled3900 is expected to be success3901 with issue3902 behaves like does not process incident issues3903 is expected not to receive perform_async(*(any args)) 0 times3904 with incident setting disabled3905 behaves like does not process incident issues3906 is expected not to receive perform_async(*(any args)) 0 times3907 behaves like does not create an alert management alert3908 is expected not to change `AlertManagement::Alert.count`3909 behaves like does not create a system note for alert3910 is expected not to change `Note.count`3911 behaves like does not send alert notification emails3912 is expected not to receive new(*(any args)) 0 times3913 which is resolved3914 behaves like creates an alert management alert or errors3915 is expected to match {:alerts=>(all a kind of AlertManagement::Alert(id: integer, created_at: timestamptz, updated_at: timestamptz, start...hosts: text, payload: jsonb, prometheus_alert_id: integer, environment_id: integer, domain: integer))}3916 creates AlertManagement::Alert3917 executes the alert service hooks3918 and fails to save3919 writes a warning to the log3920 behaves like alerts service responds with an error3921 is expected to eq :bad_request3922 behaves like creates expected system notes for alert3923 for new_alert3924 behaves like processes incident issues if enabled3925 is expected to be success3926 with incident setting disabled3927 behaves like does not process incident issues3928 is expected not to receive perform_async(*(any args)) 0 times3929 behaves like sends alert notification emails if enabled3930 is expected to receive prometheus_alerts_fired(*(any args)) 1 time3931 with email setting disabled3932 behaves like does not send alert notification emails3933 is expected not to receive new(*(any args)) 0 times3934 when another alert is saved at the same time3935 finds the other alert and increments the counter3936 when another alert is saved before the validation runes3937 finds the other alert and increments the counter3938 with resolving payload3939 behaves like processes recovery alert3940 seen for the first time3941 behaves like alerts service responds with an error and takes no actions3942 is expected to eq :bad_request3943 behaves like does not create an alert management alert3944 is expected not to change `AlertManagement::Alert.count`3945 behaves like does not create a system note for alert3946 is expected not to change `Note.count`3947 behaves like does not process incident issues3948 is expected not to receive perform_async(*(any args)) 0 times3949 behaves like does not send alert notification emails3950 is expected not to receive new(*(any args)) 0 times3951 for an existing alert with the same fingerprint3952 which is triggered3953 behaves like resolves an existing alert management alert3954 sets the end time and status3955 behaves like creates expected system notes for alert3956 for recovery_alert, resolve_alert3957 behaves like sends alert notification emails if enabled3958 is expected to receive prometheus_alerts_fired(*(any args)) 1 time3959 with email setting disabled3960 behaves like does not send alert notification emails3961 is expected not to receive new(*(any args)) 0 times3962 behaves like closes related incident if enabled3963 with incident3964 is expected to change `alert.issue.reload.closed?` from false to true and change `ResourceStateEvent.count` by 13965 without incident3966 is expected not to receive perform_async(*(any args)) 0 times3967 with incident setting disabled3968 behaves like does not close related incident3969 with incident3970 is expected to not change `alert.issue.reload.state` and not change `ResourceStateEvent.count`3971 without incident3972 is expected not to receive perform_async(*(any args)) 0 times3973 behaves like does not create an alert management alert3974 is expected not to change `AlertManagement::Alert.count`3975 behaves like does not process incident issues3976 is expected not to receive perform_async(*(any args)) 0 times3977 behaves like does not add an alert management alert event3978 is expected not to change `alert.reload.events`3979 which is ignored3980 behaves like resolves an existing alert management alert3981 sets the end time and status3982 behaves like creates expected system notes for alert3983 for recovery_alert, resolve_alert3984 behaves like sends alert notification emails if enabled3985 is expected to receive prometheus_alerts_fired(*(any args)) 1 time3986 with email setting disabled3987 behaves like does not send alert notification emails3988 is expected not to receive new(*(any args)) 0 times3989 behaves like closes related incident if enabled3990 with incident3991 is expected to change `alert.issue.reload.closed?` from false to true and change `ResourceStateEvent.count` by 13992 without incident3993 is expected not to receive perform_async(*(any args)) 0 times3994 with incident setting disabled3995 behaves like does not close related incident3996 with incident3997 is expected to not change `alert.issue.reload.state` and not change `ResourceStateEvent.count`3998 without incident3999 is expected not to receive perform_async(*(any args)) 0 times4000 behaves like does not create an alert management alert4001 is expected not to change `AlertManagement::Alert.count`4002 behaves like does not process incident issues4003 is expected not to receive perform_async(*(any args)) 0 times4004 behaves like does not add an alert management alert event4005 is expected not to change `alert.reload.events`4006 which is acknowledged4007 behaves like resolves an existing alert management alert4008 sets the end time and status4009 behaves like creates expected system notes for alert4010 for recovery_alert, resolve_alert4011 behaves like sends alert notification emails if enabled4012 is expected to receive prometheus_alerts_fired(*(any args)) 1 time4013 with email setting disabled4014 behaves like does not send alert notification emails4015 is expected not to receive new(*(any args)) 0 times4016 behaves like closes related incident if enabled4017 with incident4018 is expected to change `alert.issue.reload.closed?` from false to true and change `ResourceStateEvent.count` by 14019 without incident4020 is expected not to receive perform_async(*(any args)) 0 times4021 with incident setting disabled4022 behaves like does not close related incident4023 with incident4024 is expected to not change `alert.issue.reload.state` and not change `ResourceStateEvent.count`4025 without incident4026 is expected not to receive perform_async(*(any args)) 0 times4027 behaves like does not create an alert management alert4028 is expected not to change `AlertManagement::Alert.count`4029 behaves like does not process incident issues4030 is expected not to receive perform_async(*(any args)) 0 times4031 behaves like does not add an alert management alert event4032 is expected not to change `alert.reload.events`4033 which is resolved4034 behaves like alerts service responds with an error and takes no actions4035 is expected to eq :bad_request4036 behaves like does not create an alert management alert4037 is expected not to change `AlertManagement::Alert.count`4038 behaves like does not create a system note for alert4039 is expected not to change `Note.count`4040 behaves like does not process incident issues4041 is expected not to receive perform_async(*(any args)) 0 times4042 behaves like does not send alert notification emails4043 is expected not to receive new(*(any args)) 0 times4044 environment given4045 sets the environment4046 when alert payload is invalid4047 behaves like alerts service responds with an error and takes no actions4048 is expected to eq :bad_request4049 behaves like does not create an alert management alert4050 is expected not to change `AlertManagement::Alert.count`4051 behaves like does not create a system note for alert4052 is expected not to change `Note.count`4053 behaves like does not process incident issues4054 is expected not to receive perform_async(*(any args)) 0 times4055 behaves like does not send alert notification emails4056 is expected not to receive new(*(any args)) 0 times4057ProtectedBranch4058 Associations4059 is expected to belong to project required: false4060 is expected to belong to group required: false4061 Validation4062 is expected to validate that :name cannot be empty/falsy4063 uniqueness4064 is expected to validate that :name is case-sensitively unique within the scope of :project_id and :namespace_id4065 when the protected_branch was saved previously4066 is expected not to validate that :name is case-sensitively unique4067 and name is changed4068 is expected to validate that :name is case-sensitively unique within the scope of :project_id and :namespace_id4069 #validate_either_project_or_top_group4070 when protected branch does not have project or group association4071 validate failed4072 when protected branch is associated with both project and group4073 validate failed4074 when protected branch is associated with a subgroup4075 validate failed4076 set a group4077 when associated with group4078 create successfully4079 when associated with other namespace4080 create failed with `ActiveRecord::AssociationTypeMismatch`4081 #matches?4082 when the protected branch setting is not a wildcard4083 returns true for branch names that are an exact match4084 returns false for branch names that are not an exact match4085 when the protected branch name contains wildcard(s)4086 when there is a single '*'4087 returns true for branch names matching the wildcard4088 returns false for branch names not matching the wildcard4089 when the wildcard contains regex symbols other than a '*'4090 returns true for branch names matching the wildcard4091 returns false for branch names not matching the wildcard4092 when there are '*'s at either end4093 returns true for branch names matching the wildcard4094 returns false for branch names not matching the wildcard4095 when there are arbitrarily placed '*'s4096 returns true for branch names matching the wildcard4097 returns false for branch names not matching the wildcard4098 #matching4099 for direct matches4100 returns a list of protected branches matching the given branch name4101 accepts a list of protected branches to search from, so as to avoid a DB call4102 for wildcard matches4103 returns a list of protected branches matching the given branch name4104 accepts a list of protected branches to search from, so as to avoid a DB call4105 #protected?4106 existing project4107 returns true when the branch matches a protected branch via direct match4108 returns true when the branch matches a protected branch via wildcard match4109 returns false when the branch does not match a protected branch via direct match4110 returns false when the branch does not match a protected branch via wildcard match4111 returns false when branch name is nil4112 with caching4113 correctly invalidates a cache4114 correctly uses the cached version4115 when project is updated4116 does not invalidate a cache4117 when other project protected branch is updated4118 does not invalidate the current project cache4119 new project4120 when the group has set their own default_branch_protection level4121 default_branch_protection_level: 0, result: false4122 protects the default branch based on the default branch protection setting of the group4123 default_branch_protection_level: 1, result: false4124 protects the default branch based on the default branch protection setting of the group4125 default_branch_protection_level: 3, result: true4126 protects the default branch based on the default branch protection setting of the group4127 default_branch_protection_level: 2, result: true4128 protects the default branch based on the default branch protection setting of the group4129 when the group has not set their own default_branch_protection level4130 default_branch_protection_level: 0, result: false4131 protects the default branch based on the instance level default branch protection setting4132 default_branch_protection_level: 1, result: false4133 protects the default branch based on the instance level default branch protection setting4134 default_branch_protection_level: 3, result: true4135 protects the default branch based on the instance level default branch protection setting4136 default_branch_protection_level: 2, result: true4137 protects the default branch based on the instance level default branch protection setting4138 #allow_force_push?4139 when feature flag disabled4140 when the attr allow_force_push is true4141 returns true4142 when the attr allow_force_push is false4143 returns false4144 when feature flag enabled4145 group_level_value: true, project_level_value: false, result: true4146 returns result4147 group_level_value: false, project_level_value: true, result: false4148 returns result4149 group_level_value: true, project_level_value: nil, result: true4150 returns result4151 group_level_value: false, project_level_value: nil, result: false4152 returns result4153 group_level_value: nil, project_level_value: nil, result: false4154 returns result4155 #any_protected?4156 existing project4157 returns true when any of the branch names match a protected branch via direct match4158 returns true when any of the branch matches a protected branch via wildcard match4159 returns false when none of branches does not match a protected branch via direct match4160 returns false when none of the branches does not match a protected branch via wildcard match4161 .protected_refs4162 when feature flag enabled4163 call `all_protected_branches`4164 when feature flag disabled4165 call `protected_branches`4166 .protected_ref_accessible_to?4167 with guest4168 is expected to eq false4169 with reporter4170 is expected to eq false4171 with developer4172 is expected to eq false4173 with maintainer4174 is expected to eq true4175 with owner4176 is expected to eq true4177 with admin4178 is expected to eq true4179 when project is an empty repository4180 when user is an admin4181 is expected to eq true4182 when user is maintainer4183 is expected to eq true4184 when user is developer and initial push is allowed4185 is expected to eq true4186 when user is developer and initial push is not allowed4187 is expected to eq false4188 .by_name4189 returns protected branches with a matching name4190 returns protected branches with a partially matching name4191 returns protected branches with a matching name regardless of the casing4192 returns nothing when nothing matches4193 return nothing when query is blank4194 .get_ids_by_name4195 returns the id for each protected branch matching name4196 .downcase_humanized_name4197 returns downcase humanized name4198 .default_branch?4199 when the name matches the default branch4200 is expected to be default branch4201 when the name does not match the default branch4202 is expected not to be default branch4203 when a wildcard name matches the default branch4204 is expected not to be default branch4205 #group_level?4206 when entity is a Group4207 is expected to be group level4208 when entity is a Project4209 is expected not to be group level4210EmailsOnPushWorker4211 #perform4212 when push is a new branch4213 sends a mail with the correct subject4214 sends the mail to the correct recipient4215 when push is a deleted branch4216 sends a mail with the correct subject4217 sends the mail to the correct recipient4218 when push is a force push to delete commits4219 sends a mail with the correct subject4220 mentions force pushing in the body4221 sends the mail to the correct recipient4222 when there are no errors in sending4223 sends a mail with the correct subject4224 does not mention force pushing in the body4225 sends the mail to the correct recipient4226 when there is an SMTP error4227 gracefully handles an input SMTP error4228 when there are multiple recipients4229 with mixed-case recipient4230 retains the case4231 when the recipient addresses are a list of email addresses4232 sends the mail to each of the recipients4233 only generates the mail once4234 when SMIME signing is enabled4235 does not sign the email multiple times4236 when recipients are invalid4237 ignores them4238 when the recipient addresses contains angle brackets and are separated by spaces4239 accepts emails separated by whitespace4240 when the recipient addresses contain a mix of emails with and without angle brackets4241 accepts both kind of emails4242 when the recipient addresses contains angle brackets and are separated by newlines4243 accepts emails separated by newlines4244 when the recipient addresses contains duplicates4245 deduplicates recipients while treating the domain part as case-insensitive4246Gitlab::Diff::FileCollection::MergeRequestDiffBatch4247 initialize4248 memoizes pagination_data4249 #diff_files4250 returns paginated diff files4251 returns a valid instance of a DiffCollection4252 first page4253 returns correct diff files4254 another page4255 returns correct diff files4256 nil batch_page4257 returns correct diff files4258 nil batch_size4259 returns correct diff files4260 invalid page4261 returns correct diff files4262 last page4263 returns correct diff files4264 behaves like unfoldable diff4265 calls Gitlab::Diff::File#unfold_diff_lines with correct position4266 behaves like diff statistics4267 when include_stats is true4268 Repository#diff_stats is called4269 Gitlab::Diff::File is initialized with diff stats4270 when should not request diff stats4271 Repository#diff_stats is not called4272 behaves like cacheable diff collection4273 #write_cache4274 calls Gitlab::Diff::HighlightCache#write_if_empty4275 calls Gitlab::Diff::StatsCache#write_if_empty with diff stats4276 #clear_cache4277 calls Gitlab::Diff::HighlightCache#clear4278 calls Gitlab::Diff::StatsCache#clear4279 #diff_files4280 calls Gitlab::Diff::HighlightCache#decorate4281 when there are stats cached4282 does not make a diff stats rpc call4283 when there are no stats cached4284 makes a diff stats rpc call4285 behaves like unsortable diff files4286 #raw_diff_files4287 does not call Gitlab::Diff::FileCollectionSorter even when sorted is true4288Todos::Destroy::GroupPrivateService4289 #execute4290 when a group set to private4291 removes todos only for users who are not group users4292 with nested groups4293 removes todos only for users who are not group users4294 with member via group share4295 does not remove todos for users invited to the group4296 does not remove todos for users invited to an ancestor group4297 when group is not private4298 does not remove any todos4299SearchService4300 #project4301 when the project is accessible4302 returns the project4303 returns the project for guests4304 when the project is not accessible4305 returns nil4306 when there is no project_id4307 returns nil4308 #group4309 when the group is accessible4310 returns the group4311 when the group is not accessible4312 returns nil4313 when there is no group_id4314 returns nil4315 #search_type4316 is expected to eq "basic"4317 #show_snippets?4318 when :snippets is 'true'4319 returns true4320 when :snippets is not 'true'4321 returns false4322 when :snippets is missing4323 returns false4324 #scope4325 with accessible project_id4326 and allowed scope4327 returns the specified scope4328 and disallowed scope4329 returns the default scope4330 and no scope4331 returns the default scope4332 with 'true' snippets4333 and allowed scope4334 returns the specified scope4335 and disallowed scope4336 returns the default scope4337 and no scope4338 returns the default scope4339 with no project_id, no snippets4340 and allowed scope4341 returns the specified scope4342 and disallowed scope4343 returns the default scope4344 and no scope4345 returns the default scope4346 #search_results4347 with accessible project_id4348 returns an instance of Gitlab::ProjectSearchResults4349 with accessible project_id and 'true' snippets4350 returns an instance of Gitlab::ProjectSearchResults4351 with 'true' snippets4352 returns an instance of Gitlab::SnippetSearchResults4353 with no project_id and no snippets4354 returns an instance of Gitlab::SearchResults4355 #search_objects4356 per_page: parameter4357 when nil4358 defaults to 204359 when empty string4360 defaults to 204361 when negative4362 defaults to 204363 when present4364 converts to integer and passes to search results4365 when greater than 2004366 passes 2004367 page: parameter4368 when < 14369 defaults to 14370 when nil4371 defaults to 14372 with accessible project_id4373 returns objects in the project4374 with accessible project_id and 'true' snippets4375 returns objects in the project4376 with 'true' snippets4377 returns objects in snippets4378 with accessible group_id4379 returns objects in the group4380 with no project_id, group_id or snippets4381 returns objects in global4382 behaves like a redacted search results4383 for issues4384 redacts the inaccessible issue4385 for notes4386 redacts the inaccessible notes4387 for merge_requests4388 redacts the inaccessible merge request4389 with :with_api_entity_associations4390 behaves like redaction limits N+1 queries4391 does not exceed the query limit4392 for blobs4393 redacts the inaccessible blob4394 for wiki blobs4395 redacts the inaccessible blob4396 for project snippets4397 redacts the inaccessible snippet4398 with :with_api_entity_associations4399 behaves like redaction limits N+1 queries4400 does not exceed the query limit4401 for personal snippets4402 redacts the inaccessible snippet4403 with :with_api_entity_associations4404 behaves like redaction limits N+1 queries4405 does not exceed the query limit4406 for commits4407 redacts the inaccessible commit4408 for users4409 passes the users through4410 #valid_request?4411 is the return value of params.valid?4412 #abuse_messages4413 returns an empty array when not abusive4414 calls on abuse_detection.errors.full_messages when abusive4415 abusive search handling4416 a search is abusive4417 does NOT execute search service4418 a search is NOT abusive4419 executes search service4420 .global_search_enabled_for_scope?4421 scope: "blobs", feature_flag: :global_search_code_tab, enabled: false, expected: false4422 returns false when feature_flag is not enabled and returns true when feature_flag is enabled4423 scope: "blobs", feature_flag: :global_search_code_tab, enabled: true, expected: true4424 returns false when feature_flag is not enabled and returns true when feature_flag is enabled4425 scope: "commits", feature_flag: :global_search_commits_tab, enabled: false, expected: false4426 returns false when feature_flag is not enabled and returns true when feature_flag is enabled4427 scope: "commits", feature_flag: :global_search_commits_tab, enabled: true, expected: true4428 returns false when feature_flag is not enabled and returns true when feature_flag is enabled4429 scope: "issues", feature_flag: :global_search_issues_tab, enabled: false, expected: false4430 returns false when feature_flag is not enabled and returns true when feature_flag is enabled4431 scope: "issues", feature_flag: :global_search_issues_tab, enabled: true, expected: true4432 returns false when feature_flag is not enabled and returns true when feature_flag is enabled4433 scope: "merge_requests", feature_flag: :global_search_merge_requests_tab, enabled: false, expected: false4434 returns false when feature_flag is not enabled and returns true when feature_flag is enabled4435 scope: "merge_requests", feature_flag: :global_search_merge_requests_tab, enabled: true, expected: true4436 returns false when feature_flag is not enabled and returns true when feature_flag is enabled4437 scope: "snippet_titles", feature_flag: :global_search_snippet_titles_tab, enabled: false, expected: false4438 returns false when feature_flag is not enabled and returns true when feature_flag is enabled4439 scope: "snippet_titles", feature_flag: :global_search_snippet_titles_tab, enabled: true, expected: true4440 returns false when feature_flag is not enabled and returns true when feature_flag is enabled4441 scope: "wiki_blobs", feature_flag: :global_search_wiki_tab, enabled: false, expected: false4442 returns false when feature_flag is not enabled and returns true when feature_flag is enabled4443 scope: "wiki_blobs", feature_flag: :global_search_wiki_tab, enabled: true, expected: true4444 returns false when feature_flag is not enabled and returns true when feature_flag is enabled4445 scope: "users", feature_flag: :global_search_users_tab, enabled: false, expected: false4446 returns false when feature_flag is not enabled and returns true when feature_flag is enabled4447 scope: "users", feature_flag: :global_search_users_tab, enabled: true, expected: true4448 returns false when feature_flag is not enabled and returns true when feature_flag is enabled4449 scope: "random", feature_flag: :random, enabled: nil, expected: true4450DEPRECATION WARNING: Invalid Feature Flag random stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)4451 returns false when feature_flag is not enabled and returns true when feature_flag is enabled4452 when snippet search is enabled4453 returns false when feature_flag is not enabled4454 returns true when feature_flag is enabled4455ResourceLabelEvent4456 behaves like having unique enum values4457 has unique values in "action"4458 behaves like a resource event4459 importable4460 is expected to respond to #importing?4461 is expected to respond to #imported?4462 validations4463 is expected not to allow :user to be ‹nil›4464 when importing4465 is expected to allow :user to be ‹nil›4466 associations4467 is expected to belong to user required: false4468 .created_after4469 returns the expected events4470 returns no events if time is after last record time4471 behaves like a resource event for issues4472 associations4473 is expected to belong to issue required: false4474 .by_issue4475 returns the expected records for an issue with events4476 returns the expected records for an issue with no events4477 .by_issue_ids4478 returns the expected events4479 .by_created_at_earlier_or_equal_to4480 returns the expected events4481 returns the expected events4482 #issuable4483 returns the expected issuable4484 behaves like a resource event for merge requests4485 associations4486 is expected to belong to merge_request required: false4487 .by_merge_request4488 returns the expected records for an issue with events4489 returns the expected records for an issue with no events4490 #issuable4491 returns the expected issuable4492 on callbacks4493 does not trigger note created subscription4494 behaves like a note for work item resource event4495 builds synthetic note with correct synthetic_note_class4496 on callbacks4497 triggers note created subscription4498 associations4499 is expected to belong to label required: false4500 validations4501 is expected to be valid4502 Issuable validation4503 is invalid if issue_id and merge_request_id are missing4504 is invalid if issue_id and merge_request_id are set4505 is valid if only issue_id is set4506 is valid if only merge_request_id is set4507 callbacks4508 #expire_etag_cache4509 expires resource note etag cache on event save4510 expires resource note etag cache on event destroy4511 #outdated_markdown?4512 returns true if label is missing and reference is not empty4513 returns true if reference is not set yet4514 returns true if markdown is outdated4515 returns false if label and reference are set4516 .visible_to_user?4517 returns events with labels accessible by user4518 filters events with public project labels if issues and MRs are private4519 filters events with project labels not accessible by user4520 filters events with group labels not accessible by user4521 #discussion_id4522 generates different discussion ID for events created milliseconds apart4523 with multiple label events4524 builds synthetic note4525Gitlab::Utils::UsageData4526 # order random4527 #track_usage_event4528 tracks redis hll event4529 raise an error for unknown event4530 #average4531 returns the average when operation succeeds4532 records duration4533 when operation fails4534 behaves like failing hardening method4535 with should_raise_for_dev? false4536 returns the fallback4537 with should_raise_for_dev? true4538 raises an error4539 #with_prometheus_client4540 records duration4541 returns fallback with for an exception in yield block4542 when Prometheus server address is available from settings4543 behaves like try to query Prometheus with given address4544 Prometheus is ready4545 Prometheus is reachable through HTTPS4546 behaves like query data from Prometheus4547 yields a client instance and returns the block result4548 Prometheus is not reachable through HTTPS4549 Prometheus is reachable through HTTP4550 behaves like query data from Prometheus4551 yields a client instance and returns the block result4552 Prometheus is not reachable through HTTP4553 behaves like does not query data from Prometheus4554 returns {} by default4555 returns fallback if provided4556 Prometheus is not ready4557 behaves like does not query data from Prometheus4558 returns {} by default4559 returns fallback if provided4560 when Prometheus server address is available from Consul service discovery4561 behaves like try to query Prometheus with given address4562 Prometheus is ready4563 Prometheus is reachable through HTTPS4564 behaves like query data from Prometheus4565 yields a client instance and returns the block result4566 Prometheus is not reachable through HTTPS4567 Prometheus is reachable through HTTP4568 behaves like query data from Prometheus4569 yields a client instance and returns the block result4570 Prometheus is not reachable through HTTP4571 behaves like does not query data from Prometheus4572 returns {} by default4573 returns fallback if provided4574 Prometheus is not ready4575 behaves like does not query data from Prometheus4576 returns {} by default4577 returns fallback if provided4578 when Prometheus server address is not available4579 behaves like does not query data from Prometheus4580 returns {} by default4581 returns fallback if provided4582 #histogram4583 checks bucket bounds to be not equal4584 checks bucket_size being non-zero4585 limits the amount of buckets without providing bucket_size argument4586 limits the amount of buckets when providing bucket_size argument4587 without data4588 aggregates properly within bounds4589 aggregates properly out of bounds4590 records duration4591 when query timeout4592 with should_raise_for_dev? false4593 logs canceled queries4594 returns fallback4595 with should_raise_for_dev? true4596 raises error4597 #add_metric4598 computes the metric value for given metric4599 #alt_usage_data4600 records duration4601 returns the evaluated block when give4602 returns the value when given4603 when method fails4604 behaves like failing hardening method4605 with should_raise_for_dev? false4606 returns the fallback4607 with should_raise_for_dev? true4608 raises an error4609 #estimate_batch_distinct_count4610 delegates counting to counter class instance4611 yield provided block with PostgresHll::Buckets4612 quasi integration test for different counting parameters4613 different counting parameters4614 counts with symbol passed in column argument4615 counts with string passed in column argument4616 counts with table.column passed in column argument4617 counts with Arel passed in column argument4618 counts over joined relations4619 counts with :column field with batch_size of 50K4620 counts with different number of batches and aggregates total result4621 counts with a start and finish4622 error handling4623 when counter raises WRONG_CONFIGURATION_ERROR4624 behaves like failing hardening method4625 with should_raise_for_dev? false4626 returns the fallback4627 with should_raise_for_dev? true4628 raises an error4629 when counting fails due to database error4630 behaves like failing hardening method4631 with should_raise_for_dev? false4632 returns the fallback4633 with should_raise_for_dev? true4634 raises an error4635 #sum4636 returns the count when counting succeeds4637 records duration4638 when counting fails4639 behaves like failing hardening method4640 with should_raise_for_dev? false4641 returns the fallback4642 with should_raise_for_dev? true4643 raises an error4644 #redis_usage_data4645 records duration4646 with block given4647 returns the evaluated block when given4648 when method fails4649 behaves like failing hardening method4650 with should_raise_for_dev? false4651 returns the fallback4652 with should_raise_for_dev? true4653 raises an error4654 when Redis HLL raises any error4655 behaves like failing hardening method4656 with should_raise_for_dev? false4657 returns the fallback4658 with should_raise_for_dev? true4659 raises an error4660 with counter given4661 returns the totals when couter is given4662 when gets an error4663 behaves like failing hardening method4664 with should_raise_for_dev? false4665 returns the fallback4666 with should_raise_for_dev? true4667 raises an error4668 #measure_duration4669 returns block result and execution duration4670 .with_metadata4671 yields passed block4672 #count4673 returns the count when counting succeeds4674 records duration4675 when counting fails4676 behaves like failing hardening method4677 with should_raise_for_dev? false4678 returns the fallback4679 with should_raise_for_dev? true4680 raises an error4681 #with_finished_at4682 adds a timestamp to the hash yielded by the block4683 #distinct_count4684 returns the count when counting succeeds4685 records duration4686 when counting fails4687 behaves like failing hardening method4688 with should_raise_for_dev? false4689 returns the fallback4690 with should_raise_for_dev? true4691 raises an error4692 #add4693 adds given values4694 adds given values4695 records duration4696 returns the fallback value one of the arguments is negative4697 when adding fails4698 behaves like failing hardening method4699 with should_raise_for_dev? false4700 returns the fallback4701 with should_raise_for_dev? true4702 raises an error4703 min/max4704 returns min from the model4705 returns max from the model4706Gitlab::RepositoryCacheAdapter4707 .cache_method_output_as_redis_set4708 with an existing repository4709 caches the output, sorting the results4710 membership checks4711 when the cache key does not exist4712 calls the original method and populates the cache4713 when the cache key exists4714 calls #try_include? on the set cache4715 memoizes the result4716 #cache_method_output4717 with a non-existing repository4718 returns the fallback value4719 avoids calling the original method4720 with a method throwing a non-existing-repository error4721 returns the fallback value4722 does not cache the data4723 with an existing repository4724 caches the output4725 #cache_method_output_asymmetrically4726 with a non-existing repository4727 returns the output of the original method4728 with a method throwing a non-existing-repository error4729 returns nil4730 does not cache the data4731 with an existing repository4732 when it returns truthy4733 caches the output in RequestStore4734 caches the output in RepositoryCache4735 when it returns false4736 caches the output in RequestStore4737 does NOT cache the output in RepositoryCache4738 #memoize_method_output4739 with a non-existing repository4740 returns the fallback value4741 avoids calling the original method4742 does not set the instance variable4743 with a method throwing a non-existing-repository error4744 returns the fallback value4745 does not set the instance variable4746 with an existing repository4747 sets the instance variable4748 #expire_method_caches4749 expires the caches of the given methods4750 does not expire caches for non-existent methods4751Packages::Nuget::UpdatePackageFromMetadataService4752 #execute4753 with no existing package4754 updates package and package file and creates metadatum4755 behaves like taking the lease4756 takes the lease4757 behaves like not updating the package if the lease is taken4758 without obtaining the exclusive lease4759 does not update the package4760 with existing package4761 link existing package and updates package file4762 behaves like taking the lease4763 takes the lease4764 behaves like not updating the package if the lease is taken4765 without obtaining the exclusive lease4766 does not update the package4767 marked as pending_destruction4768 reuses the processing package4769 with a nuspec file with metadata4770 creates tags4771 creates nuget metadatum4772 with existing package and tags4773 creates tags and deletes those not in metadata4774 with too long url4775 behaves like raising an4776 raises an Packages::Nuget::UpdatePackageFromMetadataService::InvalidMetadataError4777 without authors or description4778 behaves like raising an4779 raises an Packages::Nuget::UpdatePackageFromMetadataService::InvalidMetadataError4780 behaves like raising an4781 raises an Packages::Nuget::UpdatePackageFromMetadataService::InvalidMetadataError4782 with nuspec file with dependencies4783 updates package and package file4784 with package file not containing a nuspec file4785 behaves like raising an4786 raises an Packages::Nuget::ExtractMetadataFileService::ExtractionError4787 with a symbol package4788 with no existing package4789 behaves like raising an4790 raises an Packages::Nuget::UpdatePackageFromMetadataService::InvalidMetadataError4791 with existing package4792 link existing package and updates package file4793 behaves like taking the lease4794 takes the lease4795 behaves like not updating the package if the lease is taken4796 without obtaining the exclusive lease4797 does not update the package4798 with an invalid package name4799 invalid_name: "", error_message: "package name, version, authors and/or description not found in metadata"4800 behaves like raising an4801 raises an Packages::Nuget::UpdatePackageFromMetadataService::InvalidMetadataError4802 invalid_name: "My/package", error_message: "Validation failed: Name is invalid"4803 behaves like raising an4804 raises an Packages::Nuget::UpdatePackageFromMetadataService::InvalidMetadataError4805 invalid_name: "../../../my_package", error_message: "Validation failed: Name is invalid"4806 behaves like raising an4807 raises an Packages::Nuget::UpdatePackageFromMetadataService::InvalidMetadataError4808 invalid_name: "%2e%2e%2fmy_package", error_message: "Validation failed: Name is invalid"4809 behaves like raising an4810 raises an Packages::Nuget::UpdatePackageFromMetadataService::InvalidMetadataError4811 with an invalid package version4812 invalid_version: "", error_message: "package name, version, authors and/or description not found in metadata"4813 behaves like raising an4814 raises an Packages::Nuget::UpdatePackageFromMetadataService::InvalidMetadataError4815 invalid_version: "555", error_message: "Validation failed: Version is invalid"4816 behaves like raising an4817 raises an Packages::Nuget::UpdatePackageFromMetadataService::InvalidMetadataError4818 invalid_version: "1./2.3", error_message: "Validation failed: Version is invalid"4819 behaves like raising an4820 raises an Packages::Nuget::UpdatePackageFromMetadataService::InvalidMetadataError4821 invalid_version: "../../../../../1.2.3", error_message: "Validation failed: Version is invalid"4822 behaves like raising an4823 raises an Packages::Nuget::UpdatePackageFromMetadataService::InvalidMetadataError4824 invalid_version: "%2e%2e%2f1.2.3", error_message: "Validation failed: Version is invalid"4825 behaves like raising an4826 raises an Packages::Nuget::UpdatePackageFromMetadataService::InvalidMetadataError4827 with an invalid zip file4828 behaves like raising an4829 raises an Packages::Nuget::UpdatePackageFromMetadataService::ZipError4830CommitRange4831 raises ArgumentError when given an invalid range string4832 modules4833 is expected to includes the Referable module4834 #initialize4835 does not modify strings in-place4836 #to_s4837 is correct for three-dot syntax4838 is correct for two-dot syntax4839 #to_reference4840 returns a String reference to the object4841 returns a String reference to the object4842 supports a cross-project reference4843 #reference_link_text4844 returns a String reference to the object4845 returns a String reference to the object4846 supports a cross-project reference4847 #to_param4848 includes the correct keys4849 includes the correct values for a three-dot range4850 includes the correct values for a two-dot range4851 #exclude_start?4852 is false for three-dot ranges4853 is true for two-dot ranges4854 #valid_commits?4855 with a valid repo4856 is false when `sha_from` is invalid4857 is false when `sha_to` is invalid4858 is true when both `sha_from` and `sha_to` are valid4859 without a valid repo4860 returns false4861Ci::PipelinePresenter4862 inherits from Gitlab::View::Presenter::Delegated4863 #initialize4864 takes a pipeline and optional params4865 exposes pipeline4866 forwards missing methods to pipeline4867 #status_title4868 when pipeline is auto-canceled4869 shows that the pipeline is auto-canceled4870 when pipeline is not auto-canceled4871 does not have a status title4872 #failure_reason4873 when pipeline has a failure reason4874 when failure reason is unknown_failure4875 represents a failure reason sentence4876 when failure reason is config_error4877 represents a failure reason sentence4878 when failure reason is external_validation_failure4879 represents a failure reason sentence4880 when failure reason is user_not_verified4881 represents a failure reason sentence4882 when failure reason is size_limit_exceeded4883 represents a failure reason sentence4884 when failure reason is job_activity_limit_exceeded4885 represents a failure reason sentence4886 when failure reason is deployments_limit_exceeded4887 represents a failure reason sentence4888 when failure reason is project_deleted4889 represents a failure reason sentence4890 when pipeline does not have failure reason4891 returns nil4892 #event_type_name4893 for a detached merge request pipeline4894 is expected to eq "Merge request pipeline"4895 for a merged result pipeline4896 is expected to eq "Merged result pipeline"4897 for a merge train pipeline4898 is expected to eq "Merge train pipeline"4899 when pipeline is branch pipeline4900 is expected to eq "Pipeline"4901 #coverage4902 when pipeline has coverage4903 formats coverage into 2 decimal points4904 when pipeline does not have coverage4905 returns nil4906 #ref_text4907 when pipeline is detached merge request pipeline4908 returns a correct ref text4909 when pipeline is merge request pipeline4910 returns a correct ref text4911 when pipeline is branch pipeline4912 when ref exists in the repository4913 returns a correct ref text4914 when ref contains malicious script4915 does not include the malicious script4916 when ref does not exist in the repository4917 returns a correct ref text4918 when ref contains malicious script4919 does not include the malicious script4920 #all_related_merge_requests4921 memoizes the returned relation4922 for a branch pipeline with two open MRs4923 is expected to contain exactly #<MergeRequest id:75 namespace1000/project-935!1> and #<MergeRequest id:76 namespace1000/project-935!2>4924 permissions4925 with a private project4926 behaves like private merge requests4927 when not logged in4928 is expected to be empty4929 when logged in as a non_member4930 is expected to be empty4931 when logged in as a guest4932 is expected to be empty4933 when logged in as a developer4934 is expected to contain exactly #<MergeRequest id:77 namespace1000/project-935!1>4935 when logged in as a maintainer4936 is expected to contain exactly #<MergeRequest id:77 namespace1000/project-935!1>4937 with a public project with private merge requests4938 behaves like private merge requests4939 when not logged in4940 is expected to be empty4941 when logged in as a non_member4942 is expected to be empty4943 when logged in as a guest4944 is expected to be empty4945 when logged in as a developer4946 is expected to contain exactly #<MergeRequest id:77 namespace1000/project-935!1>4947 when logged in as a maintainer4948 is expected to contain exactly #<MergeRequest id:77 namespace1000/project-935!1>4949 with a public project with public merge requests4950 when not logged in4951 is expected to contain exactly #<MergeRequest id:77 namespace1000/project-935!1>4952 #link_to_merge_request4953 with a related merge request4954 returns a correct link4955 when pipeline is branch pipeline4956 is expected to be nil4957 #link_to_merge_request_source_branch4958 with a related merge request4959 returns a correct link4960 when pipeline is branch pipeline4961 is expected to be nil4962 #link_to_merge_request_target_branch4963 with a related merge request4964 returns a correct link4965 when pipeline is branch pipeline4966 is expected to be nil4967Gitlab::Database::PostgresForeignKey4968 #by_referenced_table_identifier4969 throws an error when the identifier name is not fully qualified4970 finds the foreign keys for the referenced table4971 #by_referenced_table_name4972 finds the foreign keys for the referenced table4973 #by_constrained_table_identifier4974 throws an error when the identifier name is not fully qualified4975 finds the foreign keys for the constrained table4976 #by_constrained_table_name4977 finds the foreign keys for the constrained table4978 #by_constrained_table_name_or_identifier4979 when using table name4980 finds the foreign keys for the constrained table4981 when using identifier4982 finds the foreign keys for the constrained table4983 #by_name4984 finds foreign keys by name4985 when finding columns for foreign keys4986 fk: lazy { described_class.find_by(name: 'fk_constrained_to_referenced') }, expected_constrained: ["referenced_table_id", "referenced_table_id_b"], expected_referenced: ["id", "id_b"]4987 finds the correct constrained column names4988 finds the correct referenced column names4989 #by_constrained_columns4990 finds the correct foreign key4991 #by_referenced_columns4992 finds the correct foreign key4993 fk: lazy { described_class.find_by(name: 'fk_constrained_to_other_referenced') }, expected_constrained: ["other_referenced_table_id"], expected_referenced: ["id"]4994 finds the correct constrained column names4995 finds the correct referenced column names4996 #by_constrained_columns4997 finds the correct foreign key4998 #by_referenced_columns4999 finds the correct foreign key5000 #on_delete_action and #on_update_action5001 with an invalid on_delete_action5002 raises an error5003 fk_name: "fk_no_action", expected_action: "no_action"5004 has the appropriate on delete action5005 has the appropriate on update action5006 #by_on_delete_action5007 finds the key by on delete action5008 #by_on_update_action5009 finds the key by on update action5010 fk_name: "fk_restrict", expected_action: "restrict"5011 has the appropriate on delete action5012 has the appropriate on update action5013 #by_on_delete_action5014 finds the key by on delete action5015 #by_on_update_action5016 finds the key by on update action5017 fk_name: "fk_nullify", expected_action: "nullify"5018 has the appropriate on delete action5019 has the appropriate on update action5020 #by_on_delete_action5021 finds the key by on delete action5022 #by_on_update_action5023 finds the key by on update action5024 fk_name: "fk_cascade", expected_action: "cascade"5025 has the appropriate on delete action5026 has the appropriate on update action5027 #by_on_delete_action5028 finds the key by on delete action5029 #by_on_update_action5030 finds the key by on update action5031 fk_name: "fk_set_default", expected_action: "set_default"5032 has the appropriate on delete action5033 has the appropriate on update action5034 #by_on_delete_action5035 finds the key by on delete action5036 #by_on_update_action5037 finds the key by on update action5038 when supporting foreign keys on partitioned tables5039 #is_inherited5040 fk: lazy { described_class.find_by(name: 'fk_inherited') }, inherited: false5041 has the appropriate inheritance value5042 fk: lazy { described_class.by_referenced_table_identifier(schema_table_name('child')).first! }, inherited: true5043 has the appropriate inheritance value5044 fk: lazy { described_class.find_by(name: 'fk_constrained_to_referenced') }, inherited: false5045 has the appropriate inheritance value5046 #not_inherited5047 lists all non-inherited foreign keys5048 with two tables both partitioned5049 #child_foreign_keys5050 is the child foreign keys of the partitioned parent fk5051Integrations::Datadog5052 behaves like Integrations::ResetSecretFields5053 #exposing_secrets_fields5054 returns an array of strings5055 #reset_secret_fields?5056 returns false if no exposing field has changed5057 returns true if any exposing field has changed5058 validation callback5059 when an exposing field has changed5060 clears all secret fields5061 when a secret field has been updated5062 does not clear this secret field5063 when a secret field has been updated with the same value5064 does not clear this secret field5065 when no exposing field has changed5066 does not clear any secret fields5067 behaves like Integrations::HasWebHook5068 associations5069 is expected to have one service_hook inverse_of => integration5070 callbacks5071 calls #update_web_hook! when enabled5072 does not call #update_web_hook! when disabled5073 does not call #update_web_hook! when validation fails5074 #hook_url5075 returns a string5076 #url_variables5077 returns a hash5078 #hook_ssl_verification5079 returns a boolean5080 delegates to #enable_ssl_verification if the concern is included5081 #update_web_hook!5082 creates or updates a service hook5083 raises an error if the service hook could not be saved5084 does not attempt to save the service hook if there are no changes5085 #execute_web_hook!5086 creates the webhook if necessary and executes it5087 raises an error if the service hook could not be saved5088 validations5089 when service is active5090 is expected to validate that :api_key cannot be empty/falsy5091 is expected to allow :api_key to be ‹"f0f489088931690830ea88e511a195cac2365fddb2f36e7f2a1070fffa1a1e46"›5092 is expected not to allow :api_key to be ‹"87dab2403c9d462 87aec4d9214edb1e"›5093 is expected not to allow :api_key to be ‹"................................"›5094 when selecting site5095 is expected to validate that :datadog_site cannot be empty/falsy5096 is expected not to validate that :api_url cannot be empty/falsy5097 is expected to allow :datadog_site to be ‹"data-dog-hq.com"›5098 is expected to allow :datadog_site to be ‹"dataDOG.com"›5099 is expected not to allow :datadog_site to be ‹"datadog hq.com"›5100 is expected not to allow :datadog_site to be ‹"-datadoghq.com"›5101 is expected not to allow :datadog_site to be ‹".datadoghq.com"›5102 is expected not to allow :datadog_site to be ‹"datadoghq.com_"›5103 is expected not to allow :datadog_site to be ‹"data-dog"›5104 is expected not to allow :datadog_site to be ‹"datadoghq.com-"›5105 is expected not to allow :datadog_site to be ‹"datadoghq.com."›5106 with custom api_url5107 is expected not to validate that :datadog_site cannot be empty/falsy5108 is expected to validate that :api_url cannot be empty/falsy5109 is expected to allow :api_url to be ‹"https://webhook-intake.datad0g.com/api/v2/webhook"›5110 is expected not to allow :api_url to be ‹"example.com"›5111 when missing site and api_url5112 is expected not to be valid5113 is expected to validate that :datadog_site cannot be empty/falsy5114 is expected to validate that :api_url cannot be empty/falsy5115 when providing both site and api_url5116 is expected not to allow :datadog_site to be ‹"datadog hq.com"›5117 is expected not to allow :api_url to be ‹"example.com"›5118 with custom tags5119 is expected to allow :datadog_tags to be ‹""›5120 is expected to allow :datadog_tags to be ‹"key:value"›5121 is expected to allow :datadog_tags to be ‹"key:value\nkey2:value2"›5122 is expected to allow :datadog_tags to be ‹"key:value\nkey2:value with spaces and 123?&$"›5123 is expected to allow :datadog_tags to be ‹"key:value\n\n\n\nkey2:value2\n"›5124 is expected not to allow :datadog_tags to be ‹"value"›5125 is expected not to allow :datadog_tags to be ‹"key:"›5126 is expected not to allow :datadog_tags to be ‹"key: "›5127 is expected not to allow :datadog_tags to be ‹":value"›5128 is expected not to allow :datadog_tags to be ‹"key:value\nINVALID"›5129 when integration is not active5130 is expected to be valid5131 is expected not to validate that :api_key cannot be empty/falsy5132 #help5133 is expected to be a kind of String5134 is expected not to be empty5135 #hook_url5136 with standard site URL5137 is expected to eq "https://webhook-intake.datadoghq.com/api/v2/webhook?dd-api-key={api_key}&env=ci&service=awesome-gitlab"5138 with custom URL5139 is expected to eq "https://webhook-intake.datad0g.com/api/v2/webhook?dd-api-key={api_key}&env=ci&service=awesome-gitlab"5140 blank5141 is expected to eq "https://webhook-intake.datadoghq.com/api/v2/webhook?dd-api-key={api_key}&env=ci&service=awesome-gitlab"5142 without optional params5143 is expected to eq "https://webhook-intake.datadoghq.com/api/v2/webhook?dd-api-key={api_key}"5144 with custom tags5145 is expected to eq "https://webhook-intake.datadoghq.com/api/v2/webhook?dd-api-key={api_key}&env=ci&service=awesome-gitlab&tags=key%3Avalue%2C%22key2%3Avalue%2C+2%22"5146 and empty lines5147 is expected to eq "https://webhook-intake.datadoghq.com/api/v2/webhook?dd-api-key={api_key}&env=ci&service=awesome-gitlab&tags=key%3Avalue%2C%22key2%3Avalue%2C+2%22"5148 #test5149 when request is successful with a HTTP 200 status5150 is expected to eq {:result=>"OK", :success=>true}5151 when request is successful with a HTTP 202 status5152 is expected to eq {:result=>"OK", :success=>true}5153 when request fails with a HTTP 500 status5154 is expected to eq {:result=>"CRASH!!!", :success=>false}5155 #execute5156 with pipeline data5157 is expected to request POST https://webhook-intake.datadoghq.com/api/v2/webhook?dd-api-key=5f7bd3648cf23935a20c66b8415e8ae3b4ab2425fc39d74fa3328e89fbf5350e&env=ci&service=awesome-gitlab with body "{\"object_kind\":\"pipeline\",\"object_attributes\":{\"id\":135,\"iid\":1,\"name\":null,\"ref\":\"master\",\"tag\":false,\"sha\":\"b83d6e391c22777fca1ed3012fce84f633d7fed0\",\"before_sha\":\"0000000000000000000000000000000000000000\",\"source\":\"push\",\"status\":\"pending\",\"detailed_status\":\"pending\",\"stages\":[\"test\"],\"created_at\":\"2023-08-10T12:35:32.368Z\",\"finished_at\":null,\"duration\":null,\"queued_duration\":null,\"variables\":[],\"url\":\"http://localhost/namespace1003/project-938/-/pipelines/135\"},\"merge_request\":null,\"user\":null,\"project\":{\"id\":931,\"name\":\"Project-938 Name\",\"description\":null,\"web_url\":\"http://localhost/namespace1003/project-938\",\"avatar_url\":null,\"git_ssh_url\":\"git@localhost:namespace1003/project-938.git\",\"git_http_url\":\"http://localhost/namespace1003/project-938.git\",\"namespace\":\"Sidney Jones1512\",\"visibility_level\":0,\"path_with_namespace\":\"namespace1003/project-938\",\"default_branch\":null,\"ci_config_path\":null},\"commit\":null,\"builds\":[{\"id\":160,\"stage\":\"test\",\"name\":\"test\",\"status\":\"pending\",\"created_at\":\"2023-08-10T08:50:29.000Z\",\"started_at\":null,\"finished_at\":null,\"duration\":null,\"queued_duration\":13507.0,\"failure_reason\":null,\"when\":\"on_success\",\"manual\":false,\"allow_failure\":false,\"user\":null,\"runner\":null,\"artifacts_file\":{\"filename\":null,\"size\":null},\"environment\":null},{\"id\":161,\"stage\":\"test\",\"name\":\"test\",\"status\":\"pending\",\"created_at\":\"2023-08-10T08:50:29.000Z\",\"started_at\":null,\"finished_at\":null,\"duration\":null,\"queued_duration\":13507.0,\"failure_reason\":null,\"when\":\"on_success\",\"manual\":false,\"allow_failure\":false,\"user\":null,\"runner\":null,\"artifacts_file\":{\"filename\":null,\"size\":null},\"environment\":null}]}" with headers {'X-Gitlab-Event'=>'Pipeline Hook'} 1 time5158 with job data5159 is expected to request POST https://webhook-intake.datadoghq.com/api/v2/webhook?dd-api-key=c12eb12989ed44bbba2b45bd9f5aa122aa1d7c0425c1952812cc096f57ecb77a&env=ci&service=awesome-gitlab with body "{\"object_kind\":\"build\",\"ref\":\"master\",\"tag\":false,\"before_sha\":\"0000000000000000000000000000000000000000\",\"sha\":\"b83d6e391c22777fca1ed3012fce84f633d7fed0\",\"retries_count\":1,\"build_id\":160,\"build_name\":\"test\",\"build_stage\":\"test\",\"build_status\":\"pending\",\"build_created_at\":\"2023-08-10T08:50:29.000Z\",\"build_started_at\":null,\"build_finished_at\":null,\"build_duration\":null,\"build_queued_duration\":13507.0,\"build_allow_failure\":false,\"build_failure_reason\":\"unknown_failure\",\"pipeline_id\":135,\"runner\":null,\"project_id\":931,\"project_name\":\"Sidney Jones1512 / Project-938 Name\",\"user\":null,\"commit\":{\"id\":135,\"name\":null,\"sha\":\"b83d6e391c22777fca1ed3012fce84f633d7fed0\",\"message\":null,\"author_name\":null,\"author_email\":null,\"author_url\":\"mailto:\",\"status\":\"pending\",\"duration\":null,\"started_at\":null,\"finished_at\":null},\"repository\":{\"name\":\"Project-938 Name\",\"url\":\"git@localhost:namespace1003/project-938.git\",\"description\":null,\"homepage\":\"http://localhost/namespace1003/project-938\",\"git_http_url\":\"http://localhost/namespace1003/project-938.git\",\"git_ssh_url\":\"git@localhost:namespace1003/project-938.git\",\"visibility_level\":0},\"environment\":null}" with headers {'X-Gitlab-Event'=>'Job Hook'} 1 time5160 with archive trace data5161 is expected to request POST https://webhook-intake.datadoghq.com/api/v2/webhook?dd-api-key=161540ced9f1cb62bb553181f43154a2e6ad6f1cfcd2849792e065749b80963a&env=ci&service=awesome-gitlab with body "{\"object_kind\":\"archive_trace\",\"trace_url\":\"/2f/74/2f74d62c5e51079f4e0db990f3a44137f37b268c0f159b661420dbf203df0373/2023_08_10/160/1/sample_trace\",\"build_id\":160,\"pipeline_id\":135,\"project\":{\"id\":931,\"name\":\"Project-938 Name\",\"description\":null,\"web_url\":\"http://localhost/namespace1003/project-938\",\"avatar_url\":null,\"git_ssh_url\":\"git@localhost:namespace1003/project-938.git\",\"git_http_url\":\"http://localhost/namespace1003/project-938.git\",\"namespace\":\"Sidney Jones1512\",\"visibility_level\":0,\"path_with_namespace\":\"namespace1003/project-938\",\"default_branch\":null,\"ci_config_path\":null,\"homepage\":\"http://localhost/namespace1003/project-938\",\"url\":\"git@localhost:namespace1003/project-938.git\",\"ssh_url\":\"git@localhost:namespace1003/project-938.git\",\"http_url\":\"http://localhost/namespace1003/project-938.git\"}}" with headers {'X-Gitlab-Event'=>'Archive Trace Hook'} 1 time5162Group Routable5163 creates route with namespace referencing group5164 behaves like routable resource5165 .find_by_full_path5166 finds records by their full path5167 returns nil for unknown paths5168 includes route information when loading a record5169 when path is a negative number5170 returns nil5171 with redirect routes5172 without follow_redirects option5173 does not find records by their redirected path5174 with follow_redirects option set to true5175 finds records by their canonical path5176 finds records by their redirected path5177 returns nil for unknown paths5178 behaves like routable resource with parent5179 behaves like routable resource5180 .find_by_full_path5181 finds records by their full path5182 returns nil for unknown paths5183 includes route information when loading a record5184 when path is a negative number5185 returns nil5186 with redirect routes5187 without follow_redirects option5188 does not find records by their redirected path5189 with follow_redirects option set to true5190 finds records by their canonical path5191 finds records by their redirected path5192 returns nil for unknown paths5193 #full_path5194 is expected to eq "foo/group72"5195 hits the cache when not preloaded5196 #full_name5197 is expected to eq "foo / group72"5198 hits the cache when not preloaded5199 without route name5200 builds full name5201 Validations5202 is expected to validate that :route cannot be empty/falsy5203 Associations5204 is expected to have one route dependent => destroy5205 is expected to have many redirect_routes dependent => destroy5206 Callbacks5207 for a group5208 creates route record on create5209 updates route record on path change5210 ensure route path uniqueness across different objects5211 for a user5212 creates the route for a record on create5213 updates routes and nested routes on name change5214 .where_full_path_in5215 without any paths5216 returns an empty relation5217 without any valid paths5218 returns an empty relation5219 with valid paths5220 returns the projects matching the paths5221 returns projects regardless of the casing of paths5222 #parent_loaded?5223 is false when the parent is not loaded5224 is true when the parent is loaded5225 #route_loaded?5226 is false when the route is not loaded5227 is true when the route is loaded5228Project Routable5229 creates route with namespace referencing project namespace5230 behaves like routable resource with parent5231 behaves like routable resource5232 .find_by_full_path5233 finds records by their full path5234 returns nil for unknown paths5235 includes route information when loading a record5236 when path is a negative number5237 returns nil5238 with redirect routes5239 without follow_redirects option5240 does not find records by their redirected path5241 with follow_redirects option set to true5242 finds records by their canonical path5243 finds records by their redirected path5244 returns nil for unknown paths5245 #full_path5246 is expected to eq "namespace1004/project-939"5247 hits the cache when not preloaded5248 #full_name5249 is expected to eq "Sidney Jones1516 / Project-939 Name"5250 hits the cache when not preloaded5251 without route name5252 builds full name5253Namespaces::ProjectNamespace Routable5254 skips route creation for the resource5255Gitlab::Git::Diff5256 .new5257 using a Hash5258 with a small diff5259 initializes the diff5260 does not prune the diff5261 using a diff that is too large5262 prunes the diff5263 using a GitalyClient::Diff5264 with a small diff5265 initializes the diff5266 does not prune the diff5267 using a diff that is too large5268 prunes the diff5269 logs the event5270 using a collapsable diff that is too large5271 prunes the diff as a large diff instead of as a collapsed diff5272 when the patch passed is not UTF-8-encoded5273 encodes diff patch to UTF-85274 using a Gitaly::CommitDelta5275 initializes the diff5276 is not too large5277 has an empty diff5278 is not a binary5279 when diff contains invalid characters5280 when replace_invalid_utf8_chars is true5281 will convert invalid characters and not cause an encoding error5282 when the diff is binary5283 will not try to replace characters5284 when replace_invalid_utf8_chars is false5285 will not try to convert invalid characters5286 straight diffs5287 has the correct size5288 diff5289 is an instance of Diff5290 has the correct new_path5291 has the correct diff5292 .between5293 is expected to be a kind of Gitlab::Git::DiffCollection5294 #size5295 is expected to eq 15296 diff5297 is expected to be a kind of Gitlab::Git::Diff5298 #new_path5299 is expected to eq "files/ruby/feature.rb"5300 #diff5301 is expected to include "+class Feature"5302 .filter_diff_options5303 without default options5304 filters invalid options5305 with default options5306 filters invalid options5307 merges with default options5308 overrides default options5309 #json_safe_diff5310 fake binary message when it detects binary5311 leave non-binary diffs as-is5312 #submodule?5313 is expected to eq false5314 is expected to eq true5315 #line_count5316 returns the correct number of lines5317 #diff_bytesize5318 returns the size of the diff in bytes5319 #too_large?5320 returns true for a diff that is too large5321 returns false for a diff that is small enough5322 returns true for a diff that was explicitly marked as being too large5323 #collapsed?5324 returns false by default even on quite big diff5325 returns false by default for a diff that is small enough5326 returns true for a diff that was explicitly marked as being collapsed5327 #collapsed?5328 returns true for a diff that is quite large5329 returns false for a diff that is small enough5330 #collapse!5331 prunes the diff5332Search::GlobalService5333 #execute5334 unauthenticated5335 returns public projects only5336 authenticated5337 returns public, internal and private projects5338 returns only public & internal projects5339 project name is searchable5340 does not return archived projects5341 returns archived projects if the include_archived option is passed5342 issues5343 sorting5344 sort: created_desc5345 sorts results by created_at5346 sort: created_asc5347 sorts results by created_at5348 sort: updated_desc5349 sorts results by updated_desc5350 sort: updated_asc5351 sorts results by updated_asc5352 merge_request5353 sorting5354 sort: created_desc5355 sorts results by created_at5356 sort: created_asc5357 sorts results by created_at5358 sort: updated_desc5359 sorts results by updated_desc5360 sort: updated_asc5361 sorts results by updated_asc5362Gitlab::Gpg5363 .fingerprints_from_key5364 returns CurrentKeyChain.fingerprints_from_key5365 .primary_keyids_from_key5366 returns the keyid5367 returns an empty array when the key is invalid5368 .subkeys_from_key5369 returns the subkeys by primary key5370 returns an empty array when there are not subkeys5371 .user_infos_from_key5372 returns the names and emails5373 returns an empty array when the key is invalid5374 downcases the email5375 rejects non UTF-8 names and addresses5376 .current_home_dir5377 returns the default value when no explicit home dir has been set5378 returns the explicitly set home dir5379 returns the default value when explicitly setting the home dir to nil5380 .using_tmp_keychain5381 the second thread does not change the first thread's directory5382 allows recursive execution in the same thread5383 keeps track of created and removed keychains in counters5384 cleans up the tmp directory after finishing5385 does not fail if the homedir was deleted while running5386 tracks an exception when cleaning up the tmp dir fails5387 behaves like multiple deletion attempts of the tmp-dir5388 tries for 1 or 15 times5389 tries at least 2 times to remove the tmp dir before raising5390 does not attempt multiple times when the deletion succeeds5391 when running in Sidekiq5392 behaves like multiple deletion attempts of the tmp-dir5393 tries for 10 or 15 times5394 tries at least 2 times to remove the tmp dir before raising5395 does not attempt multiple times when the deletion succeeds5396Gitlab::Gpg::CurrentKeyChain5397 .add5398 stores the key in the keychain5399 .fingerprints_from_key5400 returns the fingerprint5401 returns an empty array when the key is invalid5402Mutations::Issues::Update5403 is expected to require graphql authorizations :update_issue5404 #resolve5405 behaves like permission level for issue mutation is correctly verified5406 when the user is not a project member5407 behaves like when the user does not have access to the resource5408 raises an error5409 even if assigned to the issue5410 does not modify issue5411 even if author of the issue5412 does not modify issue5413 when the user is a project member5414 with guest role5415 behaves like when the user does not have access to the resource5416 raises an error5417 even if assigned to the issue5418 does not modify issue5419 even if author of the issue5420 does not modify issue5421 when the user can update the issue5422 when all attributes except timeEstimate are provided5423 updates issue with correct values5424 when iid does not exist5425 raises resource not available error5426 when setting milestone to nil5427 changes the milestone corrrectly5428 when changing state5429 closes issue5430 reopens issue5431 when changing labels5432 adds and removes labels correctly5433 does not add label if label id is nil5434 does not add label if label is not found5435 does not modify labels if label is already present5436 does not modify labels if label is addded and removed in the same request5437 when setting labels with label_ids5438 replaces existing labels with provided ones5439 raises error when label_ids is combined with remove_label_ids5440 raises error when label_ids is combined with add_label_ids5441 when changing type5442 changes the type of the issue5443 when timeEstimate attribute is provided5444 when timeEstimate is invalid5445 raises an argument error and changes are not applied5446 when timeEstimate is negative5447 raises an argument error and changes are not applied5448 when timeEstimate is 05449 resets the time estimate5450 when timeEstimate is a valid human readable time5451 updates the time estimate5452Gitlab::Email::Handler::CreateNoteOnIssuableHandler5453 behaves like reply processing shared examples5454 when the user could not be found5455 raises a UserNotFoundError5456 when the user is not authorized to the project5457 raises a ProjectNotFound5458 behaves like note handler shared examples5459 when the noteable could not be found5460 raises a NoteableNotFoundError5461 when the note could not be saved5462 raises an InvalidNoteError5463 because the note was update commands only5464 and current user cannot update noteable5465 does not raise an error5466 and current user can update noteable5467 does not raise an error5468 when the note contains quick actions5469 and current user cannot update the noteable5470 only executes the commands that the user can perform5471 and current user can update noteable5472 posts a note and updates the noteable5473 when the reply is blank5474 allows email to only have quoted text5475 when discussion is locked5476 behaves like checks permissions on noteable examples5477 when user has access5478 creates a comment5479 when user does not have access5480 raises UserNotAuthorizedError5481 when everything is fine5482 adds all attachments5483 when the service desk5484 is enabled5485 when issues are enabled for everyone5486 creates a comment5487 when quick actions are present5488 when author is a normal user5489 extracted the quick actions5490 when issues are protected members only5491 creates a comment5492 when issues are disabled5493 does not create a comment5494 when the recipient address does not include a mail key5495 raises an UnknownIncomingEmail5496 when issue is confidential5497 behaves like checks permissions on noteable examples5498 when user has access5499 creates a comment5500 when user does not have access5501 raises UserNotAuthorizedError5502API::Helpers::Packages::DependencyProxyHelpers5503 #redirect_registry_request5504 with maven packages5505 application_setting: true, group_setting: nil, forward_to_registry: true, example_name: "executing redirect"5506 behaves like executing redirect5507 redirects to package registry5508 application_setting: true, group_setting: nil, forward_to_registry: false, example_name: "executing fallback"5509 behaves like executing fallback5510 redirects to package registry5511 application_setting: false, group_setting: nil, forward_to_registry: true, example_name: "executing fallback"5512 behaves like executing fallback5513 redirects to package registry5514 application_setting: false, group_setting: nil, forward_to_registry: false, example_name: "executing fallback"5515 behaves like executing fallback5516 redirects to package registry5517 application_setting: true, group_setting: false, forward_to_registry: true, example_name: "executing fallback"5518 behaves like executing fallback5519 redirects to package registry5520 application_setting: true, group_setting: false, forward_to_registry: false, example_name: "executing fallback"5521 behaves like executing fallback5522 redirects to package registry5523 application_setting: false, group_setting: true, forward_to_registry: true, example_name: "executing redirect"5524 behaves like executing redirect5525 redirects to package registry5526 application_setting: false, group_setting: true, forward_to_registry: false, example_name: "executing fallback"5527 behaves like executing fallback5528 redirects to package registry5529 when no target is present5530 behaves like executing redirect5531 redirects to package registry5532 when maven_central_request_forwarding is disabled5533 application_setting: true, forward_to_registry: true5534 behaves like executing fallback5535 redirects to package registry5536 application_setting: true, forward_to_registry: false5537 behaves like executing fallback5538 redirects to package registry5539 application_setting: false, forward_to_registry: true5540 behaves like executing fallback5541 redirects to package registry5542 application_setting: false, forward_to_registry: false5543 behaves like executing fallback5544 redirects to package registry5545 with npm packages5546 application_setting: true, group_setting: nil, forward_to_registry: true, example_name: "executing redirect"5547 behaves like executing redirect5548 redirects to package registry5549 application_setting: true, group_setting: nil, forward_to_registry: false, example_name: "executing fallback"5550 behaves like executing fallback5551 redirects to package registry5552 application_setting: false, group_setting: nil, forward_to_registry: true, example_name: "executing fallback"5553 behaves like executing fallback5554 redirects to package registry5555 application_setting: false, group_setting: nil, forward_to_registry: false, example_name: "executing fallback"5556 behaves like executing fallback5557 redirects to package registry5558 application_setting: true, group_setting: false, forward_to_registry: true, example_name: "executing fallback"5559 behaves like executing fallback5560 redirects to package registry5561 application_setting: true, group_setting: false, forward_to_registry: false, example_name: "executing fallback"5562 behaves like executing fallback5563 redirects to package registry5564 application_setting: false, group_setting: true, forward_to_registry: true, example_name: "executing redirect"5565 behaves like executing redirect5566 redirects to package registry5567 application_setting: false, group_setting: true, forward_to_registry: false, example_name: "executing fallback"5568 behaves like executing fallback5569 redirects to package registry5570 when no target is present5571 behaves like executing redirect5572 redirects to package registry5573 when maven_central_request_forwarding is disabled5574 application_setting: true, forward_to_registry: true5575 behaves like executing fallback5576 redirects to package registry5577 application_setting: true, forward_to_registry: false5578 behaves like executing fallback5579 redirects to package registry5580 application_setting: false, forward_to_registry: true5581 behaves like executing fallback5582 redirects to package registry5583 application_setting: false, forward_to_registry: false5584 behaves like executing fallback5585 redirects to package registry5586 with pypi packages5587 application_setting: true, group_setting: nil, forward_to_registry: true, example_name: "executing redirect"5588 behaves like executing redirect5589 redirects to package registry5590 application_setting: true, group_setting: nil, forward_to_registry: false, example_name: "executing fallback"5591 behaves like executing fallback5592 redirects to package registry5593 application_setting: false, group_setting: nil, forward_to_registry: true, example_name: "executing fallback"5594 behaves like executing fallback5595 redirects to package registry5596 application_setting: false, group_setting: nil, forward_to_registry: false, example_name: "executing fallback"5597 behaves like executing fallback5598 redirects to package registry5599 application_setting: true, group_setting: false, forward_to_registry: true, example_name: "executing fallback"5600 behaves like executing fallback5601 redirects to package registry5602 application_setting: true, group_setting: false, forward_to_registry: false, example_name: "executing fallback"5603 behaves like executing fallback5604 redirects to package registry5605 application_setting: false, group_setting: true, forward_to_registry: true, example_name: "executing redirect"5606 behaves like executing redirect5607 redirects to package registry5608 application_setting: false, group_setting: true, forward_to_registry: false, example_name: "executing fallback"5609 behaves like executing fallback5610 redirects to package registry5611 when no target is present5612 behaves like executing redirect5613 redirects to package registry5614 when maven_central_request_forwarding is disabled5615 application_setting: true, forward_to_registry: true5616 behaves like executing fallback5617 redirects to package registry5618 application_setting: true, forward_to_registry: false5619 behaves like executing fallback5620 redirects to package registry5621 application_setting: false, forward_to_registry: true5622 behaves like executing fallback5623 redirects to package registry5624 application_setting: false, forward_to_registry: false5625 behaves like executing fallback5626 redirects to package registry5627 with non-forwardable package type5628 conan5629 raises an error5630 nuget5631 raises an error5632 composer5633 raises an error5634 generic5635 raises an error5636 golang5637 raises an error5638 debian5639 raises an error5640 rubygems5641 raises an error5642 helm5643 raises an error5644 terraform_module5645 raises an error5646 rpm5647 raises an error5648 ml_model5649 raises an error5650 #registry_url5651 package_type: :maven, expected_result: "https://repo.maven.apache.org/maven2/test/123", params: {:path=>"test", :file_name=>"123", :project=>nil}5652 is expected to eq "https://repo.maven.apache.org/maven2/test/123"5653 package_type: :npm, expected_result: "https://registry.npmjs.org/test", params: {:package_name=>"test"}5654 is expected to eq "https://registry.npmjs.org/test"5655 package_type: :pypi, expected_result: "https://pypi.org/simple/test/", params: {:package_name=>"test"}5656 is expected to eq "https://pypi.org/simple/test/"5657 with non-forwardable package type conan5658 raises an error5659 with non-forwardable package type nuget5660 raises an error5661 with non-forwardable package type composer5662 raises an error5663 with non-forwardable package type generic5664 raises an error5665 with non-forwardable package type golang5666 raises an error5667 with non-forwardable package type debian5668 raises an error5669 with non-forwardable package type rubygems5670 raises an error5671 with non-forwardable package type helm5672 raises an error5673 with non-forwardable package type terraform_module5674 raises an error5675 with non-forwardable package type rpm5676 raises an error5677 with non-forwardable package type ml_model5678 raises an error5679ChronicDurationAttribute5680 when default value is not set5681 behaves like ChronicDurationAttribute reader5682 contains dynamically created reader method5683 outputs chronic duration formatted value5684 when value is set to nil5685 outputs nil5686 behaves like ChronicDurationAttribute writer5687 contains dynamically created writer method5688 parses chronic duration input5689 passes validation5690 when negative input is used5691 doesn't raise exception5692 doesn't change value5693 doesn't pass validation5694 when empty input is used5695 writes default value5696 passes validation5697 when nil input is used5698 writes default value5699 passes validation5700 doesn't raise exception5701 when default value is set5702 behaves like ChronicDurationAttribute reader5703 contains dynamically created reader method5704 outputs chronic duration formatted value5705 when value is set to nil5706 outputs nil5707 behaves like ChronicDurationAttribute writer5708 contains dynamically created writer method5709 parses chronic duration input5710 passes validation5711 when negative input is used5712 doesn't raise exception5713 doesn't change value5714 doesn't pass validation5715 when empty input is used5716 writes default value5717 passes validation5718 when nil input is used5719 writes default value5720 passes validation5721 doesn't raise exception5722ChronicDurationAttribute - reader5723 doesn't contain dynamically created writer method5724 behaves like ChronicDurationAttribute reader5725 contains dynamically created reader method5726 outputs chronic duration formatted value5727 when value is set to nil5728 outputs nil5729Types::Ci::JobTokenScopeType5730 is expected to eq "CiJobTokenScopeType"5731 has the correct fields5732 query5733 without access to scope5734 returns no projects5735 with access to scope5736 when multiple projects in the allow lists5737 when linked projects are readable5738 behaves like returns projects5739 returns readable projects in scope5740 when job token scope is disabled5741 behaves like returns projects5742 returns readable projects in scope5743 when linked projects are not readable5744 returns readable projects in scope5745 when job token scope is disabled5746 does not return an error5747 returns readable projects in scope5748SnippetInputAction5749 validations5750 action: :create, file_path: "foobar", content: "foobar", previous_path: "foobar", allowed_actions: nil, is_valid: true, invalid_field: nil5751 is expected to equal true5752 action: :move, file_path: "foobar", content: "foobar", previous_path: "foo1", allowed_actions: nil, is_valid: true, invalid_field: nil5753 is expected to equal true5754 action: :delete, file_path: "foobar", content: "foobar", previous_path: "foobar", allowed_actions: nil, is_valid: true, invalid_field: nil5755 is expected to equal true5756 action: :update, file_path: "foobar", content: "foobar", previous_path: "foobar", allowed_actions: nil, is_valid: true, invalid_field: nil5757 is expected to equal true5758 action: :foo, file_path: "foobar", content: "foobar", previous_path: "foobar", allowed_actions: nil, is_valid: false, invalid_field: :action5759 is expected to include :action5760 action: "create", file_path: "foobar", content: "foobar", previous_path: "foobar", allowed_actions: nil, is_valid: true, invalid_field: nil5761 is expected to equal true5762 action: "move", file_path: "foobar", content: "foobar", previous_path: "foo1", allowed_actions: nil, is_valid: true, invalid_field: nil5763 is expected to equal true5764 action: "delete", file_path: "foobar", content: "foobar", previous_path: "foobar", allowed_actions: nil, is_valid: true, invalid_field: nil5765 is expected to equal true5766 action: "update", file_path: "foobar", content: "foobar", previous_path: "foobar", allowed_actions: nil, is_valid: true, invalid_field: nil5767 is expected to equal true5768 action: "foo", file_path: "foobar", content: "foobar", previous_path: "foobar", allowed_actions: nil, is_valid: false, invalid_field: :action5769 is expected to include :action5770 action: nil, file_path: "foobar", content: "foobar", previous_path: "foobar", allowed_actions: nil, is_valid: false, invalid_field: :action5771 is expected to include :action5772 action: "", file_path: "foobar", content: "foobar", previous_path: "foobar", allowed_actions: nil, is_valid: false, invalid_field: :action5773 is expected to include :action5774 action: :move, file_path: "foobar", content: "foobar", previous_path: nil, allowed_actions: nil, is_valid: false, invalid_field: :previous_path5775 is expected to include :previous_path5776 action: :move, file_path: "foobar", content: "foobar", previous_path: "", allowed_actions: nil, is_valid: false, invalid_field: :previous_path5777 is expected to include :previous_path5778 action: :move, file_path: "foobar", content: "foobar", previous_path: "foobar", allowed_actions: nil, is_valid: false, invalid_field: :file_path5779 is expected to include :file_path5780 action: :move, file_path: nil, content: "foobar", previous_path: "foobar", allowed_actions: nil, is_valid: true, invalid_field: nil5781 is expected to equal true5782 action: :move, file_path: "", content: "foobar", previous_path: "foobar", allowed_actions: nil, is_valid: true, invalid_field: nil5783 is expected to equal true5784 action: :move, file_path: nil, content: "foobar", previous_path: "foo1", allowed_actions: nil, is_valid: true, invalid_field: nil5785 is expected to equal true5786 action: :move, file_path: "foobar", content: nil, previous_path: "foo1", allowed_actions: nil, is_valid: true, invalid_field: nil5787 is expected to equal true5788 action: :move, file_path: "foobar", content: "", previous_path: "foo1", allowed_actions: nil, is_valid: true, invalid_field: nil5789 is expected to equal true5790 action: :create, file_path: "foobar", content: nil, previous_path: "foobar", allowed_actions: nil, is_valid: false, invalid_field: :content5791 is expected to include :content5792 action: :create, file_path: "foobar", content: "", previous_path: "foobar", allowed_actions: nil, is_valid: false, invalid_field: :content5793 is expected to include :content5794 action: :create, file_path: nil, content: "foobar", previous_path: "foobar", allowed_actions: nil, is_valid: true, invalid_field: nil5795 is expected to equal true5796 action: :create, file_path: "", content: "foobar", previous_path: "foobar", allowed_actions: nil, is_valid: true, invalid_field: nil5797 is expected to equal true5798 action: :update, file_path: "foobar", content: nil, previous_path: "foobar", allowed_actions: nil, is_valid: false, invalid_field: :content5799 is expected to include :content5800 action: :update, file_path: "foobar", content: "", previous_path: "foobar", allowed_actions: nil, is_valid: false, invalid_field: :content5801 is expected to include :content5802 action: :update, file_path: "other", content: "foobar", previous_path: "foobar", allowed_actions: nil, is_valid: false, invalid_field: :file_path5803 is expected to include :file_path5804 action: :update, file_path: "foobar", content: "foobar", previous_path: nil, allowed_actions: nil, is_valid: true, invalid_field: nil5805 is expected to equal true5806 action: :update, file_path: "foobar", content: "foobar", previous_path: "", allowed_actions: nil, is_valid: true, invalid_field: nil5807 is expected to equal true5808 action: :update, file_path: "foobar", content: "foobar", previous_path: "", allowed_actions: :update, is_valid: true, invalid_field: nil5809 is expected to equal true5810 action: :update, file_path: "foobar", content: "foobar", previous_path: "", allowed_actions: "update", is_valid: true, invalid_field: nil5811 is expected to equal true5812 action: :update, file_path: "foobar", content: "foobar", previous_path: "", allowed_actions: [:update], is_valid: true, invalid_field: nil5813 is expected to equal true5814 action: :update, file_path: "foobar", content: "foobar", previous_path: "", allowed_actions: [:update, :create], is_valid: true, invalid_field: nil5815 is expected to equal true5816 action: :update, file_path: "foobar", content: "foobar", previous_path: "", allowed_actions: :create, is_valid: false, invalid_field: :action5817 is expected to include :action5818 action: :update, file_path: "foobar", content: "foobar", previous_path: "", allowed_actions: "create", is_valid: false, invalid_field: :action5819 is expected to include :action5820 action: :update, file_path: "foobar", content: "foobar", previous_path: "", allowed_actions: [:create], is_valid: false, invalid_field: :action5821 is expected to include :action5822 action: :foo, file_path: "foobar", content: "foobar", previous_path: "", allowed_actions: :foo, is_valid: false, invalid_field: :action5823 is expected to include :action5824 #to_commit_action5825 transforms attributes to commit action5826 action is update5827 when previous_path is present5828 returns the existing previous_path5829 when previous_path is not present5830 assigns the file_path to the previous_path5831Ci::DeleteUnitTestsService5832 #execute5833 does not delete unit test failures not older than 14 days5834 deletes unit test failures older than 14 days5835 deletes unit tests that have no more associated unit test failures5836Ci::PipelineArtifacts::CreateCodeQualityMrDiffReportService5837 #execute5838 when there are codequality reports5839 when pipeline passes5840 when degradations are present5841 when degradations already present in target branch pipeline5842 does not persist a pipeline artifact5843 when degradation is not present in target branch pipeline5844 persists a pipeline artifact5845 persists the default file name5846 sets expire_at to 1 week5847 artifact has pipeline's locked status5848 does not persist the same artifact twice5849 when there are no codequality reports for head pipeline5850 does not persist a pipeline artifact5851 when there are no codequality reports for base pipeline5852 does not persist a pipeline artifact5853Gitlab::Usage::Metrics::Instrumentations::CountBulkImportsEntitiesMetric5854 with no source_type5855 with all time frame5856 behaves like a correct instrumented metric value and query5857 behaves like a correct instrumented metric value5858 has correct value5859 behaves like a correct instrumented metric query5860 has correct generate query5861 for 28d time frame5862 behaves like a correct instrumented metric value and query5863 behaves like a correct instrumented metric value5864 has correct value5865 behaves like a correct instrumented metric query5866 has correct generate query5867 with invalid source_type5868 raises ArgumentError5869 with source_type project_entity5870 with all time frame5871 behaves like a correct instrumented metric value and query5872 behaves like a correct instrumented metric value5873 has correct value5874 behaves like a correct instrumented metric query5875 has correct generate query5876 for 28d time frame5877 behaves like a correct instrumented metric value and query5878 behaves like a correct instrumented metric value5879 has correct value5880 behaves like a correct instrumented metric query5881 has correct generate query5882 with source_type group_entity5883 with all time frame5884 behaves like a correct instrumented metric value and query5885 behaves like a correct instrumented metric value5886 has correct value5887 behaves like a correct instrumented metric query5888 has correct generate query5889 for 28d time frame5890 behaves like a correct instrumented metric value and query5891 behaves like a correct instrumented metric value5892 has correct value5893 behaves like a correct instrumented metric query5894 has correct generate query5895 with entity status5896 with all time frame5897 behaves like a correct instrumented metric value and query5898 behaves like a correct instrumented metric value5899 has correct value5900 behaves like a correct instrumented metric query5901 has correct generate query5902 for 28d time frame5903 behaves like a correct instrumented metric value and query5904 behaves like a correct instrumented metric value5905 has correct value5906 behaves like a correct instrumented metric query5907 has correct generate query5908 with entity status and source_type5909 with all time frame5910 behaves like a correct instrumented metric value and query5911 behaves like a correct instrumented metric value5912 has correct value5913 behaves like a correct instrumented metric query5914 has correct generate query5915 for 28d time frame5916 behaves like a correct instrumented metric value and query5917 behaves like a correct instrumented metric value5918 has correct value5919 behaves like a correct instrumented metric query5920 has correct generate query5921 with has_failures: true5922 with all time frame5923 with project entity5924 behaves like a correct instrumented metric value and query5925 behaves like a correct instrumented metric value5926 has correct value5927 behaves like a correct instrumented metric query5928 has correct generate query5929 with group entity5930 behaves like a correct instrumented metric value and query5931 behaves like a correct instrumented metric value5932 has correct value5933 behaves like a correct instrumented metric query5934 has correct generate query5935 for 28d time frame5936 behaves like a correct instrumented metric value and query5937 behaves like a correct instrumented metric value5938 has correct value5939 behaves like a correct instrumented metric query5940 has correct generate query5941 with has_failures: false5942 with all time frame5943 with project entity5944 behaves like a correct instrumented metric value and query5945 behaves like a correct instrumented metric value5946 has correct value5947 behaves like a correct instrumented metric query5948 has correct generate query5949 with group entity5950 behaves like a correct instrumented metric value and query5951 behaves like a correct instrumented metric value5952 has correct value5953 behaves like a correct instrumented metric query5954 has correct generate query5955 for 28d time frame5956 with project entity5957 behaves like a correct instrumented metric value and query5958 behaves like a correct instrumented metric value5959 has correct value5960 behaves like a correct instrumented metric query5961 has correct generate query5962 with group entity5963 behaves like a correct instrumented metric value and query5964 behaves like a correct instrumented metric value5965 has correct value5966 behaves like a correct instrumented metric query5967 has correct generate query5968Gitlab::Redis::TraceChunks5969 behaves like redis_shared_examples5970 .config_file_name5971 when there is no config file anywhere5972 is expected to be nil5973 .store5974 with old format5975 behaves like redis store5976 instantiates Redis::Store5977 with the namespace5978 uses specified namespace5979 with new format5980 behaves like redis store5981 instantiates Redis::Store5982 with the namespace5983 uses specified namespace5984 .params5985 withstands mutation5986 when url contains unix socket reference5987 with old format5988 returns path key instead5989 with new format5990 returns path key instead5991 when url is host based5992 with old format5993 returns hash with host, port, db, and password5994 with new format5995 rails_env: "development", host: "development-host"5996 returns hash with host, port, db, and password5997 rails_env: "test", host: "test-host"5998 returns hash with host, port, db, and password5999 rails_env: "production", host: "production-host"6000 returns hash with host, port, db, and password6001 with redis cluster format6002 rails_env: "development", host: "development-master"6003 returns hash with cluster and password6004 rails_env: "test", host: "test-master"6005 returns hash with cluster and password6006 rails_env: "production", host: "production-master"6007 returns hash with cluster and password6008 .url6009 withstands mutation6010 when yml file with env variable6011 reads redis url from env variable6012 .version6013 returns a version6014 .with6015 when running on single-threaded runtime6016 instantiates a connection pool with size 56017 when running on multi-threaded runtime6018 instantiates a connection pool with a size based on the concurrency of the worker6019 when there is no config at all6020 can run an empty block6021 #db6022 with old format6023 returns the correct db6024 with new format6025 returns the correct db6026 with cluster-mode6027 returns the correct db6028 #sentinels6029 when sentinels are defined6030 rails_env: "development", hosts: ["development-replica1", "development-replica2"]6031 returns an array of hashes with host and port keys6032 rails_env: "test", hosts: ["test-replica1", "test-replica2"]6033 returns an array of hashes with host and port keys6034 rails_env: "production", hosts: ["production-replica1", "production-replica2"]6035 returns an array of hashes with host and port keys6036 when sentinels are not defined6037 returns nil6038 when cluster is defined6039 returns nil6040 #sentinels?6041 when sentinels are defined6042 returns true6043 when sentinels are not defined6044 is expected to eq nil6045 when cluster is defined6046 returns false6047 #raw_config_hash6048 returns old-style single url config in a hash6049 returns cluster config without url key in a hash6050 #fetch_config6051 raises an exception when the config file contains invalid yaml6052 when redis.yml exists6053 uses config/redis.yml6054 when no config file exsits6055 returns nil6056 when resque.yml exists6057 returns the config from resque.yml6058 #fetch_config6059 when redis.yml exists6060 when the fallback has a redis.yml entry6061 is expected to eq {"fallback redis.yml"=>123}6062 and an instance config file exists6063 is expected to eq {"instance specific file"=>456}6064 and the instance has a redis.yml entry6065 is expected to eq {"instance redis.yml"=>789}6066 when no redis config file exsits6067 returns nil6068 when resque.yml exists6069 returns the config from resque.yml6070PendingTodosFinder6071 #execute6072 returns all pending todos if no params are passed6073 supports retrieving only pending todos for chosen users6074 supports retrieving of todos for a specific project6075 supports retrieving of todos for a specific todo target6076 supports retrieving of todos for a specific target type6077 supports retrieving of todos from a specific author6078 supports retrieving of todos for a specific commit ID6079 supports retrieving of todos for specific discussion6080 supports retrieving of todos for a specific action6081Clusters::ClusterPolicy6082 rules6083 when developer6084 is expected to be disallowed :update_cluster6085 is expected to be disallowed :admin_cluster6086 when maintainer6087 is expected to be allowed :update_cluster6088 is expected to be allowed :admin_cluster6089 group cluster6090 when group developer6091 is expected to be disallowed :update_cluster6092 is expected to be disallowed :admin_cluster6093 when group maintainer6094 is expected to be allowed :update_cluster6095 is expected to be allowed :admin_cluster6096 when project maintainer6097 is expected to be disallowed :update_cluster6098 is expected to be disallowed :admin_cluster6099 when project developer6100 is expected to be disallowed :update_cluster6101 is expected to be disallowed :admin_cluster6102 instance cluster6103 when user6104 is expected to be disallowed :update_cluster6105 is expected to be disallowed :admin_cluster6106 when admin6107 when admin mode is enabled6108 is expected to be allowed :update_cluster6109 is expected to be allowed :admin_cluster6110 when admin mode is disabled6111 is expected to be disallowed :update_cluster6112 is expected to be disallowed :admin_cluster6113Todos::Destroy::UnauthorizedFeaturesService6114 when user_id is provided6115 when all features have same visibility as the project6116 removes only user issue todos6117 when issues are visible only to project members but the user is a member6118 does not remove any todos6119 when issues are visible only to project members6120 removes only user issue todos6121 when mrs, builds and repository are visible only to project members6122 removes only user mr and commit todos6123 when mrs are visible only to project members6124 removes only user merge request todo6125 when mrs and issues are visible only to project members6126 removes only user merge request and issue todos6127 when user_id is not provided6128 when all features have same visibility as the project6129 does not remove any todos6130 when issues are visible only to project members6131 removes only non members issue todos6132 when mrs, builds and repository are visible only to project members6133 removes only non members mr and commit todos6134 when mrs are visible only to project members6135 removes only non members merge request todos6136 when mrs and issues are visible only to project members6137 removes only non members merge request and issue todos6138Gitlab::DataBuilder::Pipeline6139 .build6140 has correct attributes6141 pipeline with metadata6142 has pipeline name6143 build with runner6144 has runner attributes6145 pipeline without variables6146 has empty variables hash6147 pipeline with variables6148 is expected to be a kind of Array6149 is expected to contain exactly {:key=>"TRIGGER_KEY_1", :value=>"TRIGGER_VALUE_1"}6150 when pipeline is a detached merge request pipeline6151 returns a source ref6152 returns merge request6153 when pipeline has retried builds6154 does not contain retried builds in payload6155 contains retried builds if requested6156 build with environment6157 has environment attributes6158 when the pipeline has an upstream6159 in same project6160 behaves like source pipeline attributes6161 has source pipeline attributes6162 in different project6163 is expected not to eq 10636164 behaves like source pipeline attributes6165 has source pipeline attributes6166 avoids N+1 database queries6167 with multiple builds6168 with multiple retried builds6169 .build failed6170 has failure_reason6171MergeRequests::PostMergeService6172 #execute6173 refreshes the number of open merge requests for a valid MR6174 updates metrics6175 calls the merge request activity counter6176 deletes non-latest diffs6177 clean up environments for the merge request6178 schedules CleanupRefsService6179 behaves like cache counters invalidator6180 invalidates counter cache for assignees6181 behaves like merge request reviewers cache counters invalidator6182 invalidates counter cache for reviewers6183 when there are issues to be closed6184 performs MergeRequests::CloseIssueWorker asynchronously6185 when issue is an external issue6186 executes Issues::CloseService6187 when the merge request has review apps6188 cancels all review app deployments6189Gitlab::ApplicationContext6190 .with_context6191 yields the block6192 passes the expected context on to labkit6193 raises an error when passing invalid options6194 .with_raw_context6195 yields the block6196 passes the attributes unaltered on to labkit6197 .push6198 passes the expected context on to labkit6199 raises an error when passing invalid options6200 .current_context_include?6201 returns true if the key was present in the context6202 returns false if the key was not present in the current context6203 .current_context_attribute6204 returns the raw attribute value6205 returns the attribute value with meta prefix6206 returns nil if the key was not present in the current context6207 #to_lazy_hash6208 does not call the attributes until needed6209 correctly loads the expected values when they are wrapped in a block6210 correctly loads the expected values when passed directly6211 falls back to a projects namespace when a project is passed but no namespace6212 contains known keys6213 setting the client6214 provided_options: [:remote_ip], client: :remote_ip6215 sets the client_id to the expected value6216 provided_options: [:remote_ip, :runner], client: :runner6217 sets the client_id to the expected value6218 provided_options: [:remote_ip, :runner, :user], client: :runner6219 sets the client_id to the expected value6220 provided_options: [:remote_ip, :user], client: :user6221 sets the client_id to the expected value6222 provided_options: [:job], client: :user6223 sets the client_id to the expected value6224 when using a runner project6225 sets project path from runner project6226 when the runner serves multiple projects6227 does not set project path6228 when using an instance runner6229 does not sets project path6230 when using job context6231 sets expected values6232 #use6233 yields control6234 passes the expected context on to labkit6235 does not cause queries6236Gitlab::ContentSecurityPolicy::ConfigLoader6237 .default_enabled6238 is enabled6239 when in production6240 is disabled6241 .default_directives6242 returns default directives6243 the images-src directive6244 can be loaded from anywhere6245 the media-src directive6246 can be loaded from anywhere6247 Webpack dev server websocket connections6248 when in production6249 with secure domain6250 does not include webpack dev server in connect-src6251 with insecure domain6252 does not include webpack dev server in connect-src6253 when in development6254 with secure domain6255 includes secure websocket url for webpack dev server in connect-src6256 with insecure domain6257 includes insecure websocket url for webpack dev server in connect-src6258 Websocket connections6259 with insecure domain6260 with secure domain6261 with custom port6262 with custom port and secure domain6263 when port is included in HTTP_PORTS6264 LFS connect-src headers6265 when LFS is enabled6266 and direct downloads are enabled6267 when provider is AWS6268 is expected to eq "AWS"6269 is expected to be present6270 is expected to include "https://lfs-objects.s3.amazonaws.com/"6271 when provider is AzureRM6272 is expected to eq "AzureRM"6273 is expected to be present6274 is expected to include "https://azuretest.blob.core.windows.net/lfs-objects?sp=r&sv=2018-11-09&sr=b&se=2023-08-10T12%3A47%3A51Z&spr=https&sig=BepB%2BdmAl1o4e40gVwfoZi9AgaZeuOcNarcvwTg50r8%3D"6275 when provider is Google6276 is expected to eq "Google"6277 is expected to be present6278 is expected to include "https://storage.googleapis.com/lfs-objects/"6279 but direct downloads are disabled6280 is expected not to include "https://lfs-objects.s3.amazonaws.com/"6281 when LFS is disabled6282 is expected not to include "https://lfs-objects.s3.amazonaws.com/"6283 CDN connections6284 when CDN host is defined6285 adds CDN host to CSP6286 when CDN host is undefined6287 does not include CDN host in CSP6288 Zuora directives6289 when on SaaS6290 adds Zuora host to CSP6291 when is not Gitlab.com?6292 does not add Zuora host to CSP6293 when sentry is configured6294 when legacy sentry is configured6295 adds legacy sentry path to CSP6296 when sentry is configured6297 adds new sentry path to CSP6298 when sentry settings are from older schemas and sentry setting are missing6299 config is backwards compatible, does not add sentry path to CSP6300 when legacy sentry and sentry are both configured6301 adds both sentry paths to CSP6302 Customer portal frames6303 when CUSTOMER_PORTAL_URL is set6304 adds CUSTOMER_PORTAL_URL to CSP6305 when CUSTOMER_PORTAL_URL is blank6306 adds CUSTOMER_PORTAL_URL to CSP6307 letter_opener application URL6308 when in production6309 does not add letter_opener to CSP6310 when in development6311 adds letter_opener to CSP6312 Snowplow Micro event collector6313 when in production6314 does not add Snowplow Micro URL to connect-src6315 when in development6316 adds Snowplow Micro URL with trailing slash to connect-src6317 when not enabled using config6318 does not add Snowplow Micro URL to connect-src6319 when REVIEW_APPS_ENABLED is set6320 includes review app's merge requests API endpoint in the CSP6321 when REVIEW_APPS_ENABLED is blank6322 does not include review app's merge requests API endpoint in the CSP6323 #load6324 sets the policy properly6325 ignores malformed policy statements6326 returns default values for directives not defined by the user or with <default_value> and disables directives set to false6327Sidebars::Projects::Menus::SettingsMenu6328 #render?6329 returns false when menu does not have any menu items6330 #separated?6331 returns true6332 Menu items6333 General6334 behaves like access rights checks6335 is expected not to be nil6336 when the user does not have access6337 is expected to be nil6338 Integrations6339 behaves like access rights checks6340 is expected not to be nil6341 when the user does not have access6342 is expected to be nil6343 Webhooks6344 behaves like access rights checks6345 is expected not to be nil6346 when the user does not have access6347 is expected to be nil6348 Access Tokens6349 behaves like access rights checks6350 is expected not to be nil6351 when the user does not have access6352 is expected to be nil6353 Repository6354 behaves like access rights checks6355 is expected not to be nil6356 when the user does not have access6357 is expected to be nil6358 CI/CD6359 when project is archived6360 is expected to be nil6361 when project is not archived6362 is expected not to be nil6363 when the user does not have access6364 is expected to be nil6365 Monitor6366 when project is archived6367 is expected to be nil6368 when project is not archived6369 is expected not to be nil6370 is expected to eq "Monitor"6371 when the user does not have access6372 is expected to be nil6373 Merge requests6374 behaves like access rights checks6375 is expected not to be nil6376 when the user does not have access6377 is expected to be nil6378 Packages and registries6379 when container registry setting is disabled6380 is expected to be nil6381 when container registry setting is enabled6382 is expected not to be nil6383 when the user does not have access6384 is expected to be nil6385 when package registry setting is enabled6386 is expected not to be nil6387 when the user does not have access6388 is expected to be nil6389 Usage Quotas6390 is expected not to be nil6391 when the user does not have access6392 is expected to be nil6393CustomerRelations::IssueContact6394 is expected to be valid6395 associations6396 is expected to belong to issue required: true6397 is expected to belong to contact required: true6398 factory6399 for root groups6400 uses objects from the same group6401 for subgroups6402 builds using the root ancestor6403 validation6404 fails when the contact group is unrelated to the issue group6405 succeeds when the contact belongs to a root group and is the same as the issue group6406 succeeds when the contact belongs to a root group and it is an ancestor of the issue group6407 #self.find_contact_ids_by_emails6408 returns ids of contacts from issue6409 does not return ids of contacts from other issues6410 raises ArgumentError when called with too many emails6411 .delete_for_project6412 destroys all issue_contacts for project6413 .delete_for_group6414 destroys all issue_contacts for projects in group and subgroups6415Gitlab::Ci::Config::Entry::Cache6416 validations6417 when entry config value is correct6418 #value6419 behaves like hash key value6420 returns hash value6421 with files6422 behaves like hash key value6423 returns hash value6424 with files and prefix6425 behaves like hash key value6426 returns hash value6427 with prefix6428 key is nil6429 with option `unprotect` specified6430 returns true6431 with `policy`6432 policy: "pull-push", result: "pull-push"6433 is expected to include {:policy => "pull-push"}6434 policy: "push", result: "push"6435 is expected to include {:policy => "push"}6436 policy: "pull", result: "pull"6437 is expected to include {:policy => "pull"}6438 policy: "$VARIABLE", result: "$VARIABLE"6439 is expected to include {:policy => "$VARIABLE"}6440 policy: "unknown", result: "unknown"6441 is expected to include {:policy => "unknown"}6442 without `policy`6443 assigns policy to default6444 with `when`6445 when_config: "on_success", result: "on_success"6446 is expected to include {:when => "on_success"}6447 when_config: "on_failure", result: "on_failure"6448 is expected to include {:when => "on_failure"}6449 when_config: "always", result: "always"6450 is expected to include {:when => "always"}6451 when_config: "unknown", result: "unknown"6452 is expected to include {:when => "unknown"}6453 without `when`6454 assigns when to default6455 with `fallback_keys`6456 matches the list of fallback keys6457 without `fallback_keys`6458 assigns an empty list6459 #valid?6460 is expected to be valid6461 with files6462 is expected to be valid6463 with `policy`6464 policy: "pull-push", valid: true6465 returns expected validity6466 policy: "push", valid: true6467 returns expected validity6468 policy: "pull", valid: true6469 returns expected validity6470 policy: "$VARIABLE", valid: true6471 returns expected validity6472 policy: "unknown", valid: false6473 returns expected validity6474 with `when`6475 when_config: "on_success", valid: true6476 returns expected validity6477 when_config: "on_failure", valid: true6478 returns expected validity6479 when_config: "always", valid: true6480 returns expected validity6481 when_config: "unknown", valid: false6482 returns expected validity6483 with key missing6484 #value6485 sets key with the default6486 when entry value is not correct6487 #errors6488 when is not a hash6489 reports errors with config value6490 when descendants are invalid6491 with invalid keys6492 reports error with descendants6493 with empty key6494 reports error with descendants6495 with invalid files6496 reports error with descendants6497 with prefix without files6498 reports error with descendants6499 when there is an unknown key present6500 reports error with descendants6501 when there is an unknown key present6502 reports error with descendants6503 when the `when` keyword is not a valid string6504 when `when` is unknown6505 returns error6506 when it is an array6507 returns error6508 when it is a boolean6509 returns error6510 when the `policy` keyword is not a valid string6511 when `policy` is unknown6512 returns error6513 when it is an array6514 returns error6515 when it is a boolean6516 returns error6517Todos::Destroy::ProjectPrivateService6518 #execute6519 when a project set to private6520 removes issue todos for a user who is not a member6521 when project is not private6522 does not remove any todos6523Clusters::Cleanup::ProjectNamespaceService6524 #execute6525 when cluster has namespaces to be deleted6526 deletes namespaces from cluster6527 deletes namespaces from database6528 schedules ::ServiceAccountWorker6529 logs all events6530 when cluster.kubeclient is nil6531 schedules ::ServiceAccountWorker6532 deletes namespaces from database6533 when cluster has no namespaces6534 schedules Clusters::Cleanup::ServiceAccountWorker6535 transitions to cleanup_removing_service_account6536 does not try to delete namespaces6537 when there is a Kubeclient::HttpError6538 schedules ::ServiceAccountWorker with accepted errors6539 schedules ::ServiceAccountWorker with accepted errors6540 schedules ::ServiceAccountWorker with accepted errors6541 raises error with unaccepted errors6542Users::DeactivateDormantUsersWorker6543 #perform6544 does not run for SaaS6545 when automatic deactivation of dormant users is enabled6546 deactivates dormant users6547 does not deactivate non-active users6548 does not deactivate recently created users6549 user_type: :human, expected_state: "deactivated"6550 deactivates certain user types6551 user_type: :support_bot, expected_state: "active"6552 deactivates certain user types6553 user_type: :alert_bot, expected_state: "active"6554 deactivates certain user types6555 user_type: :visual_review_bot, expected_state: "active"6556 deactivates certain user types6557 user_type: :service_user, expected_state: "deactivated"6558 deactivates certain user types6559 user_type: :ghost, expected_state: "active"6560 deactivates certain user types6561 user_type: :project_bot, expected_state: "active"6562 deactivates certain user types6563 user_type: :migration_bot, expected_state: "active"6564 deactivates certain user types6565 user_type: :security_bot, expected_state: "active"6566 deactivates certain user types6567 user_type: :automation_bot, expected_state: "active"6568 deactivates certain user types6569 when automatic deactivation of dormant users is disabled6570 does nothing6571Atlassian::JiraConnect::Serializers::DeploymentEntity6572 # order random6573 environment type6574 tier: "other", env_type: "unmapped"6575 has the same type as the environment tier6576 #to_json6577 when the deployment does not belong to any Jira issue6578 can encode the object6579 is invalid, since it has no issue keys6580 when the deployment belongs to Jira issue6581 is valid according to the deployment info schema6582 #issue_keys6583 extracts issue keys from the commits6584 limits the number of commits scanned6585 when deploy happened at an older commit6586 extracts only issue keys from that commit or older6587 when the deployment has an associated merge request6588 includes issue keys extracted from the merge request6589 when there was a successful deploy to the environment6590 behaves like extracts only issue keys from commits made since that deployment6591 is expected to contain exactly "add a" and "add d"6592 when the deploy was for a different environment6593 behaves like ignores that deployment6594 is expected to contain exactly "add a", "add d", and "added"6595 when the deploy was for a different branch or tag6596 behaves like ignores that deployment6597 is expected to contain exactly "add a", "add d", and "added"6598 when the deploy was not successful6599 behaves like ignores that deployment6600 is expected to contain exactly "add a", "add d", and "added"6601 when the deploy commit cannot be found6602 behaves like ignores that deployment6603 is expected to contain exactly "add a", "add d", and "added"6604 when there is a more recent deployment6605 extracts only issue keys from commits made since that deployment6606 when deployment is an external deployment6607 does not raise errors when serializing6608WorkItems::CreateFromTaskService6609 #execute6610 when work item params are valid6611 is expected to be success6612 creates a work item and creates parent link to the original work item6613 replaces the original issue markdown description with new work item reference6614 behaves like title with extra spaces6615 when title has extra spaces6616 removes extra leading and trailing whitespaces from title6617 when last operation fails6618 rollbacks all operations6619 is expected to be error6620 returns an error message6621 when work item params are invalid6622 returns work item errors6623 behaves like CreateFromTask service with invalid params6624 is expected to be error6625 does not create a work item or links6626Gitlab::Diff::Parser6627 #parse6628 is expected to eq 306629 lines6630 first line6631 is expected to eq "match"6632 is expected to eq 66633 is expected to eq 66634 is expected to eq "@@ -6,12 +6,18 @@ module Popen"6635 removal line6636 is expected to eq "old"6637 is expected to eq 146638 is expected to eq 136639 is expected to eq "- options = { chdir: path }"6640 addition line6641 is expected to eq "new"6642 is expected to eq 156643 is expected to eq 186644 is expected to eq "+ options = {"6645 unchanged line6646 is expected to eq nil6647 is expected to eq 246648 is expected to eq 316649 is expected to eq " @cmd_output << stderr.read"6650 \ No newline at end of file6651 parses nonewline in one file correctly6652 parses nonewline in two files correctly6653 when lines is empty6654 is expected to eq []6655 is expected to eq []6656 when it is a binary notice6657 is expected to eq []6658 tolerates special diff markers in a content6659 counts lines correctly6660Commits::CherryPickService6661 #execute6662 behaves like successful cherry-pick6663 picks the commit into the branch6664 supports a custom commit message6665 when picking a merge-request6666 adds a system note6667 behaves like successful cherry-pick6668 picks the commit into the branch6669 supports a custom commit message6670AutoDevops::DisableWorker#perform6671 disables auto devops for project6672 when project owner is a user6673 sends an email to pipeline user and project owner(s)6674 when project does not have owner6675 sends an email to pipeline user6676 when pipeline is not related to a user and project does not have owner6677 does not send an email6678Gitlab::Checks::PushCheck6679 #validate!6680 does not raise any error6681 when the user is not allowed to push to the repo6682 raises an error6683 when using a DeployKeyAccess instance6684 when the deploy key cannot push to the targetted branch6685 raises an error6686 when the deploy key can push to the targetted branch6687 is valid6688Projects::PostCreationWorker6689 behaves like an idempotent worker6690 is labeled as idempotent6691 performs multiple times sequentially without raising an exception6692 Prometheus integration6693 project is nil6694 does not create prometheus integration6695 when project has access to shared integration6696 Prometheus application is shared via group cluster6697 creates an Integrations::Prometheus record6698 Prometheus application is shared via instance cluster6699 creates an Integrations::Prometheus record6700 cleans invalid record and logs warning6701 shared Prometheus application is not available6702 does not persist an Integrations::Prometheus record6703 Incident timeline event tags6704 when project is nil6705 does not create event tags6706 when project is created6707 creates tags for the project6708 raises error if record creation fails6709Gitlab::SlashCommands::IssueNew6710 #execute6711 without description6712 creates the issue6713 with description6714 creates the issue with description6715 with more newlines between the title and the description6716 creates the issue6717 issue cannot be created6718 displays the errors6719 when create issue service return an unrecoverable error6720 displays the errors6721 .match6722 matches the title without description6723 matches the title with description6724 matches the alias new6725AbuseReportsFinder6726 #execute6727 when params is empty6728 returns all abuse reports6729 when params[:user] is present6730 behaves like returns filtered reports6731 returns abuse reports filtered by user_id6732 when no user has username = params[:user]6733 returns all abuse reports6734 when params[:reporter] is present6735 behaves like returns filtered reports6736 returns abuse reports filtered by reporter_id6737 when no user has username = params[:reporter]6738 returns all abuse reports6739 when params[:status] = open6740 returns only open abuse reports6741 when params[:status] = closed6742 returns only closed abuse reports6743 when params[:status] is not a valid status6744 defaults to returning open abuse reports6745 when params[:category] is present6746 returns abuse reports with the specified category6747 aggregating reports6748 when multiple open reports exist6749 aggregates open reports by user and category6750 sorts by aggregated_count in descending order and created_at in descending order6751 returns count with aggregated reports6752 when a different sorting attribute is given6753 returns reports sorted by the specified sort attribute6754 when params[:sort] is invalid6755 sorts reports by aggregated_count in descending order6756 when multiple closed reports exist6757 does not aggregate closed reports6758 sorts reports by created_at in descending order6759 when a different sorting attribute is given6760 returns reports sorted by the specified sort attribute6761 when params[:sort] is invalid6762 sorts reports by created_at in descending order6763 when legacy view is enabled6764 when params is empty6765 returns all abuse reports6766 when params[:user_id] is present6767 returns abuse reports for the specified user6768 when sorting6769 returns reports sorted by id in descending order6770 when any of the new filters are present such as params[:status]6771 returns all abuse reports6772gitlab:artifacts namespace rake task6773 gitlab:artifacts:migrate6774 when local storage is used6775 and remote storage is defined6776 migrates file to remote storage6777 and remote storage is not defined6778 fails to migrate to remote storage6779 when remote storage is used6780 file stays on remote storage6781 gitlab:artifacts:migrate_to_local6782 when remote storage is used6783 and job has remote file store defined6784 migrates file to local storage6785 when local storage is used6786 file stays on local storage6787Resolvers::BlobsResolver6788 .resolver_complexity6789 adds one per path being resolved6790 #resolve6791 when unauthorized6792 generates an error6793 when authorized6794 using no filter6795 returns nothing6796 using paths filter6797 returns the specified blobs for HEAD6798 specifying a non-existent blob6799 returns nothing6800 when specifying a branch ref6801 and no ref_type is specified6802 returns the specified blobs for that ref6803 and a tag with the same name exists6804 returns the specified blobs for the tag6805 and ref_type is for branches6806 returns nothing6807 and ref_type is for tags6808 returns nothing6809 when specifying a tag ref6810 and no ref_type is specified6811 returns the specified blobs for that ref6812 and ref_type is for tags6813 returns the specified blobs for that ref6814 and ref_type is for branches6815 returns nothing6816 when specifying HEAD ref6817 returns the specified blobs for HEAD6818 when specifying an invalid ref6819 raises an ArgumentError6820 when passing an empty ref6821 raises an ArgumentError6822Ci::NamespaceMirror6823 scopes6824 .by_group_and_descendants6825 returns groups having group2.id in traversal_ids6826 .contains_any_of_namespaces6827 returns groups having group2.id in traversal_ids6828 .contains_traversal_ids6829 when passing a top-level group6830 returns only itself and children of that group6831 when passing many levels of groups6832 returns only the asked group6833 when passing invalid data6834 data is properly sanitised6835 .by_namespace_id6836 returns namespace mirrors of namespace id6837 .sync!6838 when namespace mirror does not exist in the first place6839 creates the mirror6840 when namespace mirror does already exist6841 updates the mirror6842MergeRequests::AddContextService6843 #execute6844 when admin mode is enabled6845 adds context commit6846 when admin mode is disabled6847 doesn't add context commit6848 when user doesn't have permission to update merge request6849 doesn't add context commit6850 when the commits array is empty6851 doesn't add context commit6852Packages::Npm::MetadataCache6853 # order random6854 is expected to be a kind of FileStoreMounter6855 is expected to be a kind of Packages::Downloadable6856 save callbacks6857 object_storage_key6858 when the record is created6859 sets object_storage_key6860 when using `update!`6861 sets object_storage_key6862 when the record is updated6863 does not update object_storage_key6864 relationships6865 is expected to belong to project required: false inverse_of => npm_metadata_caches6866 readonly attributes6867 object_storage_key6868 sets object_storage_key6869 when the record is persisted6870 does not re-set object_storage_key6871 validations6872 is expected to validate that :file cannot be empty/falsy6873 is expected to validate that :project cannot be empty/falsy6874 is expected to validate that :size cannot be empty/falsy6875 #package_name6876 is expected to validate that :package_name cannot be empty/falsy6877 uniqueness6878 ensures the package name is unique within a given project6879 allows duplicate file names in different projects6880 format6881 is expected to allow :package_name to be ‹"my.app-11.07.2018"›6882 is expected to allow :package_name to be ‹"@group-1/package"›6883 is expected to allow :package_name to be ‹"@any-scope/package"›6884 is expected to allow :package_name to be ‹"unscoped-package"›6885 is expected not to allow :package_name to be ‹"my(dom$$$ain)com.my-app"›6886 is expected not to allow :package_name to be ‹"@inv@lid-scope/package"›6887 is expected not to allow :package_name to be ‹"@scope/../../package"›6888 is expected not to allow :package_name to be ‹"@scope%2e%2e%fpackage"›6889 is expected not to allow :package_name to be ‹"@scope/sub/package"›6890 .find_or_build6891 when a metadata cache exists6892 finds an existing metadata cache6893 when a metadata cache not found6894 builds a new instance6895Deployments::HooksWorker6896 #perform6897 logs deployment and project IDs as metadata6898 executes project services for deployment_hooks6899 does not execute an inactive service6900 does not execute if a deployment does not exist6901 execute webhooks6902 behaves like worker with data consistency6903 .get_data_consistency_feature_flag_enabled?6904 returns true6905 .get_data_consistency6906 returns correct data consistency6907Types::SnippetType6908 has the correct fields6909 blobs field6910 returns blobs6911 #user_permissions6912 can resolve the snippet permissions6913 when restricted visibility level is set to public6914 returns snippet author6915 when user is not logged in6916 returns snippet author as nil6917 authorizations6918 is expected to require graphql authorizations :read_snippet6919 Repository URLs6920 when RequestStore is disabled6921 behaves like snippets with repositories6922 when snippet has repository6923 responds with repository URLs6924 behaves like snippets without repositories6925 when snippet does not have a repository6926 behaves like response without repository URLs6927 does not respond with repository URLs6928 when RequestStore is enabled6929 behaves like snippets with repositories6930 when snippet has repository6931 responds with repository URLs6932 behaves like snippets without repositories6933 when snippet does not have a repository6934 behaves like response without repository URLs6935 does not respond with repository URLs6936 #blobs6937 when snippet does not have a repository6938 contains the first blob from the snippet6939 behaves like an array6940 returns an array of snippet blobs6941 when snippet has repository6942 contains all the blobs from the repository6943 behaves like an array6944 returns an array of snippet blobs6945 when specific path is set6946 returns specific files6947 behaves like an array6948 returns an array of snippet blobs6949BulkImportWorker6950 #perform6951 when no bulk import is found6952 does nothing6953 when bulk import is finished6954 does nothing6955 when bulk import is failed6956 does nothing6957 when all entities are processed6958 marks bulk import as finished6959 when all entities are failed6960 marks bulk import as failed6961 when maximum allowed number of import entities in progress6962 reenqueues itself6963 when bulk import is created6964 marks bulk import as started6965 creates all the required pipeline trackers6966 when there are created entities to process6967 marks a batch of entities as started, enqueues EntityWorker, ExportRequestWorker and reenqueues6968 when there are project entities to process6969 enqueues ExportRequestWorker6970 when exception occurs6971 tracks the exception & marks import as failed6972Gitlab::Ci::Reports::AccessibilityReportsComparer6973 #status6974 when head report has an error6975 returns status failed6976 when head reports does not have errors6977 returns status success6978 #errors_count6979 when head report has an error6980 returns the number of new errors6981 when head reports does not have an error6982 returns the number new errors6983 #resolved_count6984 when base reports has an error and head has a different error6985 returns the resolved count6986 when base reports has errors head has no errors6987 returns the resolved count6988 when base reports has errors and head has the same error6989 returns zero6990 when base reports does not have errors and head has errors6991 returns the number of resolved errors6992 #total_count6993 when base reports has an error6994 returns zero6995 when head report has an error6996 returns the total count6997 when base report has errors and head report has errors6998 returns the total count6999 when base report has errors and head report has the same error7000 returns the total count7001 #existing_errors7002 when base report has errors and head has a different error7003 returns an empty array7004 when base report does not have errors and head has errors7005 returns an empty array7006 when base report has errors and head report has the same error7007 returns the existing error7008 #new_errors7009 when base reports has errors and head has more errors7010 returns new errors between base and head reports7011 when base reports has an error and head has no errors7012 returns an empty array7013 when base reports does not have errors and head has errors7014 returns the new error7015 #resolved_errors7016 when base report has errors and head has more errors7017 returns an empty array7018 when base reports has errors and head has a different error7019 returns the resolved errors7020 when base reports does not have errors and head has errors7021 returns an empty array7022IssueEmailParticipant7023 Associations7024 is expected to belong to issue required: false7025 Modules7026 is expected to includes the Presentable module7027 Validations7028 is expected to validate that :issue cannot be empty/falsy7029 is expected to validate that :email is unique within the scope of :issue_id7030 is invalid if the email is nil7031 behaves like an object with RFC3696 compliant email-formatted attributes7032 specifically its :email attribute7033 with a value of 'info@example.com'7034 is valid7035 with a value of 'info+test@example.com'7036 is valid7037 with a value of 'o'reilly@example.com'7038 is valid7039 with a value of 'foobar'7040 is invalid7041 with a value of 'test@test@example.com'7042 is invalid7043 with a value of 'test.test.@example.com'7044 is invalid7045 with a value of '.test.test@example.com'7046 is invalid7047 with a value of 'mailto:test@example.com'7048 is invalid7049 with a value of 'lol!'+=?><#$%^&*()@gmail.com'7050 is invalid7051gitlab:service_desk_email:secret rake tasks7052 # order random7053 write7054 creates encrypted file from stdin7055 displays error when key does not exist7056 displays error when write directory does not exist7057somevalue shows a warning when content is invalid7058 edit7059# password: '123'7060# user: 'gitlab-incoming@gmail.com'7061 creates encrypted file7062 displays error when key does not exist7063 displays error when key is changed7064 displays error when write directory does not exist7065somevalue shows a warning when content is invalid7066 displays error when $EDITOR is not set7067 :show7068 displays error when file does not exist7069 displays error when key does not exist7070 displays error when key is changed7071 outputs the unencrypted content when present7072Import::GitlabProjects::FileAcquisitionStrategies::RemoteFileS37073 validation7074 is expected to be valid7075 region validation7076 validates presence of region7077 bucket_name validation7078 validates presence of bucket_name7079 file_key validation7080 validates presence of file_key7081 access_key_id validation7082 validates presence of access_key_id7083 secret_access_key validation7084 validates presence of secret_access_key7085 content-length validation7086 validates the remote content-length7087 content-type validation7088 validates the remote content-type7089 file_url validation7090 validates the file_url scheme7091 when localhost urls are not allowed7092 validates the file_url7093 when the remote file does not exist7094 foo7095 when it fails to build the s3 object7096 foo7097 #project_params7098 returns import_export_upload in the params7099Gitlab::Ci::Config::Entry::Service7100 when configuration is a string7101 #valid?7102 is valid7103 #value7104 returns valid hash7105 #image7106 returns service's image name7107 #alias7108 returns service's alias7109 #command7110 returns service's command7111 #ports7112 returns service's ports7113 when configuration is a hash7114 #valid?7115 is valid7116 #value7117 returns valid hash7118 #image7119 returns service's image name7120 #alias7121 returns service's alias7122 #command7123 returns service's command7124 #entrypoint7125 returns service's entrypoint7126 #pull_policy7127 returns nil7128 when configuration has ports7129 when with_image_ports metadata is not enabled7130 #valid?7131 is not valid7132 when with_image_ports metadata is enabled7133 #valid?7134 is valid7135 when unknown port keys detected7136 is not valid7137 #ports7138 returns image's ports7139 when configuration has pull_policy7140 #valid?7141 is valid7142 #value7143 returns value7144 when entry value is not correct7145 #errors7146 saves errors7147 #valid?7148 is not valid7149 when unexpected key is specified7150 #errors7151 saves errors7152 #valid?7153 is not valid7154 when service has ports7155 alias field is mandatory7156 when service does not have ports7157 alias field is optional7158Gitlab::Database::AsyncConstraints::PostgresAsyncConstraintValidation7159 # order random7160 is expected to be a kind of Gitlab::Database::SharedModel(abstract)7161 validations7162 is expected to validate that :name cannot be empty/falsy7163 is expected to validate that :name is case-sensitively unique within the scope of :table_name7164 is expected to validate that the length of :name is at most 637165 is expected to validate that :table_name cannot be empty/falsy7166 is expected to validate that the length of :table_name is at most 637167 is expected to validate that the length of :last_error is at most 100007168 scopes7169 .ordered7170 is expected to eq [#<Gitlab::Database::AsyncConstraints::PostgresAsyncConstraintValidation id: 3, created_at: "2023-08-..."fk_users_id_2", table_name: "users", last_error: nil, attempts: 1, constraint_type: "foreign_key">]7171 .foreign_key_type7172 is expected to eq [#<Gitlab::Database::AsyncConstraints::PostgresAsyncConstraintValidation id: 4, created_at: "2023-08-..."fk_users_id_4", table_name: "users", last_error: nil, attempts: 1, constraint_type: "foreign_key">]7173 does not apply the filter if the column is not present7174 .check_constraint_type7175 is expected to eq [#<Gitlab::Database::AsyncConstraints::PostgresAsyncConstraintValidation id: 9, created_at: "2023-08-...sers_id_9", table_name: "users", last_error: nil, attempts: 0, constraint_type: "check_constraint">]7176 .constraint_type_exists?7177 is expected to be truthy7178 always asks the database7179 .table_available?7180 is expected to be truthy7181 when the table does not exist7182 is expected to be falsy7183 #handle_exception!7184 increases the attempts number7185 saves error details7186Gitlab::Usage::Metrics::Aggregates::Aggregate7187 .calculate_count_for_aggregation7188 with valid configuration7189 number_of_days: 28, operator: "AND", datasource: "redis_hll", expected_method: :calculate_metrics_intersections7190 returns the number of unique events for aggregation7191 number_of_days: 7, operator: "AND", datasource: "redis_hll", expected_method: :calculate_metrics_intersections7192 returns the number of unique events for aggregation7193 number_of_days: 28, operator: "AND", datasource: "database", expected_method: :calculate_metrics_intersections7194 returns the number of unique events for aggregation7195 number_of_days: 7, operator: "AND", datasource: "database", expected_method: :calculate_metrics_intersections7196 returns the number of unique events for aggregation7197 number_of_days: 28, operator: "OR", datasource: "redis_hll", expected_method: :calculate_metrics_union7198 returns the number of unique events for aggregation7199 number_of_days: 7, operator: "OR", datasource: "redis_hll", expected_method: :calculate_metrics_union7200 returns the number of unique events for aggregation7201 number_of_days: 28, operator: "OR", datasource: "database", expected_method: :calculate_metrics_union7202 returns the number of unique events for aggregation7203 number_of_days: 7, operator: "OR", datasource: "database", expected_method: :calculate_metrics_union7204 returns the number of unique events for aggregation7205 number_of_days: 28, operator: "AND", datasource: "internal_events", expected_method: :calculate_metrics_intersections7206 returns the number of unique events for aggregation7207 number_of_days: 7, operator: "AND", datasource: "internal_events", expected_method: :calculate_metrics_intersections7208 returns the number of unique events for aggregation7209 number_of_days: 28, operator: "OR", datasource: "internal_events", expected_method: :calculate_metrics_union7210 returns the number of unique events for aggregation7211 number_of_days: 7, operator: "OR", datasource: "internal_events", expected_method: :calculate_metrics_union7212 returns the number of unique events for aggregation7213 with invalid configuration7214 time_frame: "28d", operator: "SUM", datasource: "redis_hll", expected_error: Gitlab::Usage::Metrics::Aggregates::UnknownAggregationOperator7215 with non prod environment7216 raises error7217 with prod environment7218 returns fallback value7219 time_frame: "7d", operator: "AND", datasource: "mongodb", expected_error: Gitlab::Usage::Metrics::Aggregates::UnknownAggregationSource7220 with non prod environment7221 raises error7222 with prod environment7223 returns fallback value7224 time_frame: "all", operator: "AND", datasource: "redis_hll", expected_error: Gitlab::Usage::Metrics::Aggregates::DisallowedAggregationTimeFrame7225 with non prod environment7226 raises error7227 with prod environment7228 returns fallback value7229 when union data is not available7230 time_frame: "28d", operator: "OR", datasource: "redis_hll"7231 with non prod environment7232 raises error7233 with prod environment7234 returns fallback value7235 time_frame: "7d", operator: "OR", datasource: "database"7236 with non prod environment7237 raises error7238 with prod environment7239 returns fallback value7240 time_frame: "28d", operator: "OR", datasource: "internal_events"7241 with non prod environment7242 raises error7243 with prod environment7244 returns fallback value7245HangoutsChat::Sender Gitlab::HTTP override7246 HangoutsChat::Sender::HTTP#post7247 calls Gitlab::HTTP.post with default protection settings7248 behaves like a request using Gitlab::UrlBlocker7249 when local requests are not allowed7250 allows an external request with http7251 allows an external request with https7252 raises error when it is a request that resolves to a local address7253 raises error when it is a request that resolves to a localhost address7254 raises error when it is a request to local address7255 raises error when it is a request to localhost address7256 when port different from URL scheme is used7257 allows the request7258 raises error when it is a request to local address7259 raises error when it is a request to localhost address7260 when DNS rebinding protection is disabled7261 allows the request7262 when http(s) proxy environment variable is set7263 allows the request7264 when local requests are allowed7265 allows an external request7266 allows an external request that resolves to a local address7267 allows an external request that resolves to a localhost address7268 allows a local address request7269 allows a localhost address request7270 when a non HTTP/HTTPS URL is provided7271 raises an error7272Packages::Debian::GroupDistributionKey7273 behaves like Debian Distribution Key7274 relationships7275 is expected to belong to distribution class_name => Packages::Debian::GroupDistribution required: false inverse_of => key7276 validations7277 #distribution7278 is expected to validate that :distribution cannot be empty/falsy7279 #private_key7280 is expected to validate that :private_key cannot be empty/falsy7281 is expected to allow :private_key to be ‹"-----BEGIN PGP PRIVATE KEY BLOCK-----\n..."›7282 is expected not to allow :private_key to be ‹"A"›, producing a custom validation error on failure7283 #passphrase7284 is expected to validate that :passphrase cannot be empty/falsy7285 is expected to allow :passphrase to be ‹"P@$$w0rd"›7286 is expected to allow :passphrase to be ‹"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"›7287 is expected not to allow :passphrase to be ‹"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"›7288 #public_key7289 is expected to validate that :public_key cannot be empty/falsy7290 is expected to allow :public_key to be ‹"-----BEGIN PGP PUBLIC KEY BLOCK-----\n..."›7291 is expected not to allow :public_key to be ‹"A"›, producing a custom validation error on failure7292 #fingerprint7293 is expected to validate that :passphrase cannot be empty/falsy7294 is expected to allow :passphrase to be ‹"abc"›7295 is expected to allow :passphrase to be ‹"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"›7296 is expected not to allow :passphrase to be ‹"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"›7297Environments::CanaryIngress::UpdateService7298 #execute_async7299 when the actor does not have permission to update environment7300 behaves like failed request7301 returns an error7302 when weight parameter is invalid7303 behaves like failed request7304 returns an error7305 when no parameters exist7306 behaves like failed request7307 returns an error7308 when environment has a running deployment7309 behaves like failed request7310 returns an error7311 when canary ingress was updated recently7312 behaves like failed request7313 returns an error7314 #execute7315 when canary ingress is present in the environment7316 when patch request succeeds7317 returns success7318 clears all caches7319 when patch request does not succeed7320 behaves like failed request7321 returns an error7322 when canary ingress is not present in the environment7323 behaves like failed request7324 returns an error7325Gitlab::Ci::Pipeline::Expression::Lexeme::Pattern7326 #initialize7327 when the value is a valid regular expression7328 initializes the pattern7329 when the value is a valid regular expression with escaped slashes7330 initializes the pattern7331 when the value is not a valid regular expression7332 raises an error7333 .build7334 creates a new instance of the token7335 raises an error if pattern is invalid7336 .build_and_evaluate7337 when the value is a valid regular expression7338 returns the value as a Gitlab::UntrustedRegexp7339 when the value is a Gitlab::UntrustedRegexp7340 returns the value itself7341 when the value is not a valid regular expression7342 returns the value itself7343 .type7344 is a value lexeme7345 .scan7346 correctly identifies a pattern token7347 does not allow to use an empty pattern7348 support single flag7349 support multiple flags7350 ignores unsupported flags7351 is an eager scanner for regexp boundaries7352 does not match on escaped regexp boundaries7353 recognizes \ as an escape character for /7354 does not recognize \ as an escape character for $7355 #evaluate7356 returns a regular expression7357 raises error if evaluated regexp is not valid7358Admin::AbuseReportDetailsEntity7359 # order random7360 #as_json7361 exposes correct attributes7362 correctly exposes `user`7363 correctly exposes `reporter`7364 correctly exposes `report`7365 users plan7366 does not include the plan7367 when on .com7368 includes the plan7369 users credit card7370 when the user has no verified credit card7371 does not expose the credit card7372 when the user does have a verified credit card7373 exposes the credit card7374 when on ee7375 includes the path to the admin card matches page7376API::Entities::Release7377 evidences7378 when the current user can read code7379 exposes the evidence sha and the json path7380 when the current user cannot read code7381 does not expose any evidence data7382 description_html7383 is inexistent7384 when include_html_description option is true7385 renders special references if current user has access7386 does not render special references if current user has no access7387 links7388 includes links7389FinderWithGroupHierarchy7390 when specifying group7391 returns only the group by default7392 when specifying group_id7393 returns only the group by default7394 when including items from group ancestors7395 returns group and its ancestors7396 ignores groups which user can not read7397 returns them all when skip_authorization is true7398 when including items from group descendants7399 returns items from group and its descendants7400 ignores items from groups which user can not read7401 returns them all when skip_authorization is true7402 with N+1 query check7403 does not produce N+1 query7404Gitlab::WorkItems::WorkItemHierarchy7405 # order random7406 #base_and_ancestors7407 includes the base and its ancestors7408 can find ancestors upto a certain level7409 when same_type option is used7410 includes the base and its ancestors7411 hierarchy_order option7412 for :asc7413 orders by child to ancestor7414 for :desc7415 orders by ancestor to child7416 #base_and_descendants7417 includes the base and its descendants7418 when same_type option is used7419 includes the base and its ancestors7420 when with_depth is true7421 includes depth in the results7422Preloaders::Environments::DeploymentPreloader7423 does not trigger N+1 queries7424 batch loads the dependent associations7425 avoids scoping with IN clause during preload7426 sets environment on the associated deployment7427 does not attempt to set environment on a nil deployment7428Gitlab::Usage::Metrics::Query7429 .count7430 returns the raw SQL7431 does not mix a nil column with keyword arguments7432 removes order from passed relation7433 returns valid raw SQL for join relations7434 returns valid raw SQL for join relations with joined columns7435 .distinct_count7436 returns the raw SQL7437 does not mix a nil column with keyword arguments7438 removes order from passed relation7439 returns valid raw SQL for join relations7440 returns valid raw SQL for join relations with joined columns7441 .sum7442 returns the raw SQL7443 .average7444 returns the raw SQL7445 estimate_batch_distinct_count7446 returns the raw SQL7447 .histogram7448 returns the histogram sql7449 other7450 raise ArgumentError error7451RuboCop::Cop::RSpec::FactoryBot::InlineAssociation7452 # order random7453 offenses7454 recognizes `add_attribute`7455 recognizes `transient` attributes7456 code_snippet: "create(:user)", autocorrected: "association(:user)"7457 registers an offense and corrects7458 code_snippet: "FactoryBot.create(:user)", autocorrected: "association(:user)"7459 registers an offense and corrects7460 code_snippet: "::FactoryBot.create(:user)", autocorrected: "association(:user)"7461 registers an offense and corrects7462 code_snippet: "create(:user, :admin)", autocorrected: "association(:user, :admin)"7463 registers an offense and corrects7464 code_snippet: "create(:user, name: \"any\")", autocorrected: "association(:user, name: \"any\")"7465 registers an offense and corrects7466 code_snippet: "build(:user)", autocorrected: "association(:user)"7467 registers an offense and corrects7468 code_snippet: "FactoryBot.build(:user)", autocorrected: "association(:user)"7469 registers an offense and corrects7470 code_snippet: "::FactoryBot.build(:user)", autocorrected: "association(:user)"7471 registers an offense and corrects7472 code_snippet: "build(:user, :admin)", autocorrected: "association(:user, :admin)"7473 registers an offense and corrects7474 code_snippet: "build(:user, name: \"any\")", autocorrected: "association(:user, name: \"any\")"7475 registers an offense and corrects7476 no offenses7477 for `association(:user)`7478 does not register any offenses7479 for `association(:user, :admin)`7480 does not register any offenses7481 for `association(:user, name: "any")`7482 does not register any offenses7483 for `after(:build) do |object|`7484 does not register any offenses7485 for `initialize_with do`7486 does not register any offenses7487 for `user_id { create(:user).id }`7488 does not register any offenses7489Gitlab::Search::Params7490 detect_abuse conditional7491 does not call AbuseDetection7492 uses AbuseDetection by default7493 #[]7494 feels like regular params7495 has indifferent access7496 also works on attr_reader attributes7497 #query_string7498 uses 'search' parameter7499 uses 'term' parameter7500 prioritizes 'search' over 'term'7501 strips surrounding whitespace from query string7502 #validate7503 validates AbuseDetector on validation7504 when detect_abuse is disabled7505 does NOT validate AbuseDetector7506 #valid?7507 validates AbuseDetector on validation7508 when detect_abuse is disabled7509 does NOT validate AbuseDetector7510 abuse detection7511 when there are abuse validation errors7512 is considered abusive7513 when there are NOT any abuse validation errors7514 and there are other validation errors7515 is NOT considered abusive7516 and there are NO other validation errors7517 is NOT considered abusive7518 #email_lookup?7519 is true if at least 1 word in search is an email7520Lfs::PushService7521 does nothing if there are no LFS objects7522 #execute7523 uploads the object when upload is requested7524 does not upload the object when upload is not requested7525 verifies the upload if requested7526 skips verification if requested but upload fails7527 returns a failure when submitting a batch fails7528 returns a failure when submitting an upload fails7529 non-project-repository LFS objects7530 only tries to upload the project-repository LFS object7531Issues::RebalancingWorker7532 has the `until_executed` deduplicate strategy7533 #perform7534 without root_namespace param7535 is labeled as idempotent7536 performs multiple times sequentially without raising an exception7537 is labeled as idempotent7538 performs multiple times sequentially without raising an exception7539 behaves like running the worker7540 runs an instance of Issues::RelativePositionRebalancingService7541 anticipates there being too many concurent rebalances7542 takes no action if the value is nil7543 does not schedule a new rebalance if it finished under 1h ago7544 behaves like safely handles non-existent ids7545 anticipates the inability to find the issue7546 with root_namespace param7547 is labeled as idempotent7548 performs multiple times sequentially without raising an exception7549 is labeled as idempotent7550 performs multiple times sequentially without raising an exception7551 behaves like running the worker7552 runs an instance of Issues::RelativePositionRebalancingService7553 anticipates there being too many concurent rebalances7554 takes no action if the value is nil7555 does not schedule a new rebalance if it finished under 1h ago7556 behaves like safely handles non-existent ids7557 anticipates the inability to find the issue7558TwoFactor::DestroyService7559 disabling two-factor authentication7560 when the user does not have two-factor authentication enabled7561 returns error7562 behaves like does not send notification email7563 notification7564 does not send a notification7565 when the user has two-factor authentication enabled7566 when the executor is not authorized to disable two-factor authentication7567 disabling the two-factor authentication of another user7568 returns error7569 does not disable two-factor authentication7570 behaves like does not send notification email7571 notification7572 does not send a notification7573 when the executor is authorized to disable two-factor authentication7574 disabling their own two-factor authentication7575 behaves like disables two-factor authentication7576 returns success7577 disables the two-factor authentication of the user7578 notification7579 sends a notification7580 admin disables the two-factor authentication of another user7581 behaves like disables two-factor authentication7582 returns success7583 disables the two-factor authentication of the user7584 notification7585 sends a notification7586Gitlab::SlashCommands::Presenters::IssueShow7587 is expected to be a kind of Hash7588 shows the issue7589 with upvotes7590 shows the upvote count7591 with labels7592 shows the labels7593 confidential issue7594 shows an ephemeral response7595Gitlab::SlashCommands::Presenters::IssueMove7596 is expected to be a kind of Hash7597 shows the new issue7598 mentions the old issue and the new issue in the pretext7599DesignManagement::CopyDesignCollection::QueueService7600 returns an error if user does not have permission7601 when user has permission7602 returns an error if design collection copy_state is not queuable7603 sets the design collection copy state7604 queues a DesignManagement::CopyDesignCollectionWorker7605 returns success7606Gitlab::Prometheus::AdditionalMetricsParser7607 #load_groups_from_yaml7608 parsing sample yaml7609 parses to two metric groups with 2 and 1 metric respectively7610 provide group data7611 provides metrics data7612 provides query data7613 group required fields7614 behaves like required field7615 when metrics is nil7616 throws parsing error7617 when metrics are not specified7618 throws parsing error7619 behaves like required field7620 when name is nil7621 throws parsing error7622 when name are not specified7623 throws parsing error7624 behaves like required field7625 when priority is nil7626 throws parsing error7627 when priority are not specified7628 throws parsing error7629 metrics fields parsing7630 behaves like required field7631 when title is nil7632 throws parsing error7633 when title are not specified7634 throws parsing error7635 behaves like required field7636 when required metrics is nil7637 throws parsing error7638 when required metrics are not specified7639 throws parsing error7640 behaves like required field7641 when weight is nil7642 throws parsing error7643 when weight are not specified7644 throws parsing error7645 behaves like required field7646 when queries is nil7647 throws parsing error7648 when queries are not specified7649 throws parsing error7650Namespace::AggregationSchedule7651 is expected to belong to namespace required: false7652 #default_lease_timeout7653 returns namespace_aggregation_schedule_lease_duration value from Gitlab CurrentSettings7654 #schedule_root_storage_statistics7655 when we can't obtain the lease7656 does not schedule the workers7657 when we can obtain the lease7658 schedules a root storage statistics after create7659 does not release the lease7660 only executes the workers once7661Gitlab::Ci::Config::Entry::Kubernetes7662 attributes7663 is expected to respond to #namespace7664 is expected to respond to #has_namespace?7665 validations7666 config7667 is a hash containing known keys7668 is expected to be valid7669 is a hash containing an unknown key7670 is expected not to be valid7671 is a string7672 is expected not to be valid7673 namespace7674 is a string7675 is expected to be valid7676 is a hash7677 is expected not to be valid7678 is not present7679 is expected not to be valid7680Banzai::FilterArray7681 #insert_after7682 inserts an element after a provided element7683 inserts an element at the end when the provided element does not exist7684 #insert_before7685 inserts an element before a provided element7686 inserts an element at the beginning when the provided element does not exist7687DesignManagement::DesignUserNotesCountService7688 behaves like a counter caching service7689 #count7690 caches the count7691 #refresh_cache7692 refreshes the cache7693 #delete_cache7694 removes the cache7695 #uncached_count7696 does not cache the count7697 #count7698 returns the count of notes7699 #cache_key7700 contains the `VERSION` and `design.id`7701 cache invalidation7702 changes when a new note is created7703 changes when a note is destroyed7704Resolvers::Ci::RunnersResolver7705 #resolve7706 when user cannot see runners7707 returns no runners7708 when user can see runners7709 when admin mode setting is disabled7710 returns all the runners7711 when admin mode setting is enabled7712 when in admin mode7713 returns all the runners7714 when not in admin mode7715 returns no runners7716 with obj not set to nil7717 raises an error7718 Allowed query arguments7719 with active filter7720 calls RunnersFinder with expected arguments7721 with both active and paused filter7722 calls RunnersFinder with expected arguments7723 with paused filter7724 calls RunnersFinder with expected arguments7725 with neither paused or active filters7726 calls RunnersFinder with expected arguments7727Ci::BulkInsertableTags7728 .with_bulk_insert_tags7729 changes the thread key to true7730 #save_tags7731 calls super7732 does not call super with BulkInsertableTags.with_bulk_insert_tags7733 isolates bulk insert behavior between threads7734Todos::Destroy::DestroyedIssuableService7735 #execute7736 when target is merge request7737 deletes todos for specified target ID and type7738 invalidates todos cache counts of todo users7739 when target is an work item7740 deletes todos7741ErrorTracking::BaseService7742 #compose_response7743 returns bad_request error when response has an error key7744 returns server error when response has missing key error_type7745 returns no content when response is nil7746 when result has no errors key7747 raises NotImplementedError7748 when parse_response is implemented7749 returns successful response7750 returns successful response with changes from passed block7751 when tracking_event is provided7752 behaves like tracking unique hll events7753 tracks unique event7754Gitlab::JiraImport::Stage::StartImportWorker7755 modules7756 behaves like include import workers modules7757 is expected to includes the ApplicationWorker module7758 is expected to includes the Gitlab::JiraImport::QueueOptions module7759 is expected to includes the ProjectStartImport module7760 is expected to includes the ProjectImportOptions module7761 #perform7762 when import is not scheduled7763 exits because import not started7764 when import is scheduled7765 advances to importing labels7766 when import is started7767 when this is the same worker that stated import7768 advances to importing labels7769 when this is a different worker that stated import7770 advances to importing labels7771 when import is finished7772 advances to importing labels7773Gitlab::Middleware::BasicHealthCheck7774 #call7775 outside IP7776 returns a 4047777 forwards the call for other paths7778 with X-Forwarded-For headers7779 returns 200 response when endpoint is allowed7780 returns 404 when whitelist is not configured7781 whitelisted IP7782 returns 200 response when endpoint is hit7783 forwards the call for other paths7784Packages::Composer::ComposerJsonService7785 #execute7786 with an existing file7787 with a valid file7788 returns the parsed json7789 with an invalid file7790 raises an error7791 without the composer.json file7792 raises an error7793Import::FogbugzService7794 returns error for unknown error causes7795 when no repo is found7796 returns an error7797 when import source is disabled7798 returns forbidden7799 when user is unauthorized7800 returns an error7801 verify url7802 when host is localhost7803 does not allow requests7804 when host is on local network7805 does not allow requests7806 when host is ftp protocol7807 does not allow requests7808 when import starts succesfully7809 returns success7810 when import fails to start7811 returns error7812RuboCop::Cop::Migration::VersionedMigrationClass7813 # order random7814 outside of a migration7815 behaves like a disabled cop7816 does not register any offenses7817 in migration7818 in an old migration7819 behaves like a disabled cop7820 does not register any offenses7821 that is recent7822 adds an offence if inheriting from ActiveRecord::Migration7823 adds an offence if inheriting from old version of Gitlab::Database::Migration7824 adds an offence if including Gitlab::Database::MigrationHelpers directly7825 excludes ActiveRecord classes defined inside the migration7826Packages::Composer::Metadatum7827 relationships7828 is expected to belong to package required: false7829 validations7830 is expected to validate that :package cannot be empty/falsy7831 is expected to validate that :target_sha cannot be empty/falsy7832 is expected to validate that :composer_json cannot be empty/falsy7833 #composer_package_type7834 when the metadatum package_type is Composer7835 is expected to be valid7836 when the metadatum has no associated package7837 behaves like an invalid record7838 is expected to include "Package type must be Composer"7839 when the metadatum package_type is not Composer7840 behaves like an invalid record7841 is expected to include "Package type must be Composer"7842 scopes7843 .for_package7844 is expected to eq [#<Packages::Composer::Metadatum package_id: 38, target_sha: "33ca62e8d490ef5a207790e73098376203a3d6f8", composer_json: {"name"=>"sample-project"}, version_cache_sha: nil>]7845RuboCop::Cop::RSpec::FactoryBot::AvoidCreate7846 # order random7847 behaves like an offensive factory call7848 registers an offense for create(:user)7849 registers an offense for create_list(:user)7850 behaves like an offensive factory call7851 registers an offense for FactoryBot.create(:user)7852 registers an offense for FactoryBot.create_list(:user)7853Ide::TerminalConfigService7854 #execute7855 content is not valid7856 returns an error7857 terminal not defined7858 returns success7859 terminal enabled7860 returns success7861 custom terminal enabled7862 returns success7863Admin::UserActionsHelper7864 #admin_actions7865 the user is a bot7866 is expected to be empty7867 the current user and user are the same7868 is expected to contain exactly "edit"7869 the user is a standard user7870 is expected to contain exactly "edit", "block", "ban", "deactivate", "delete", and "delete_with_contributions"7871 the user is an admin user7872 is expected to contain exactly "edit", "block", "ban", "deactivate", "delete", and "delete_with_contributions"7873 the user is blocked by LDAP7874 is expected to contain exactly "edit", "ldap", "delete", and "delete_with_contributions"7875 the user is blocked pending approval7876 is expected to contain exactly "edit", "approve", and "reject"7877 the user is blocked7878 is expected to contain exactly "edit", "unblock", "delete", and "delete_with_contributions"7879 the user is deactivated7880 is expected to contain exactly "edit", "block", "ban", "activate", "delete", and "delete_with_contributions"7881 the user is locked7882 is expected to contain exactly "edit", "block", "ban", "deactivate", "unlock", "delete", and "delete_with_contributions"7883 the user is banned7884 is expected to contain exactly "edit", "unban", "delete", and "delete_with_contributions"7885 the current_user does not have permission to delete the user7886 is expected to contain exactly "edit", "block", "ban", and "deactivate"7887 the user is a sole owner of a group7888 is expected to contain exactly "edit", "block", "ban", "deactivate", and "delete_with_contributions"7889 the user is a bot7890 is expected to contain exactly7891Gitlab::Ci::Status::Build::Retried7892 #text7893 does not override status text7894 #icon7895 does not override status icon7896 #group7897 does not override status group7898 #favicon7899 does not override status label7900 #label7901 does not override status label7902 #badge_tooltip7903 returns status7904 #status_tooltip7905 with a failed build7906 does override status_tooltip7907 with another build7908 does override status_tooltip7909 .matches?7910 with a retried build7911 is expected to be truthy7912 with a build that has not been retried7913 is expected to be falsy7914Terraform-Module.gitlab-ci.yml7915 # order random7916 the created pipeline7917 when on default branch7918 behaves like on any branch7919 creates fmt and kics job7920 does not create a deploy job7921 when outside the default branch7922 behaves like on any branch7923 creates fmt and kics job7924 does not create a deploy job7925 when on tag7926 creates fmt and deploy job7927RuboCop::Cop::UsageData::LargeTable7928 # order random7929 when outside of an usage data file7930 does not register an offense7931 in an usage data file7932 with large tables7933 when calling Issue.count7934 registers an offense7935 when calling Issue.active.count7936 registers an offense7937 when calling count(Issue)7938 does not register an offense7939 when calling count(Ci::Build.active)7940 does not register an offense7941 when calling Ci::Build.active.count7942 registers an offense7943 when using allowed methods7944 does not register an offense7945 with non related class7946 does not register an offense7947Projects::FetchStatisticsIncrementService7948 #execute7949 creates a new record for today with count == 17950 doesn't increment previous days statistics7951 when the record already exists for today7952 increments the today record count by 17953IssueAssignee7954 associations7955 is expected to belong to issue class_name => Issue required: false7956 is expected to belong to assignee class_name => User required: false7957 validations7958 is expected to validate that :assignee is case-sensitively unique within the scope of :issue_id7959 scopes7960 in_projects7961 returns issue assignees for given project7962 on_issues7963 returns issue assignees for given issues7964Gitlab::GlobalId7965 .build7966 returns a standard GlobalId if only object is passed7967 returns a GlobalId from params7968 returns a GlobalId from object and `id` param7969 returns a GlobalId from object and `model_name` param7970 returns an error if model_name and id are not able to be determined7971 .as_global_id7972 is the identify function on GlobalID instances7973 wraps URI::GID in GlobalID7974 cannot coerce Integers without a model name7975 can coerce Integers with a model name7976 rejects any other value7977Bitbucket::Representation::Repo7978 #has_wiki?7979 is expected to be falsey7980 is expected to be truthy7981 #name7982 is expected to eq "test"7983 #valid?7984 is expected to be falsey7985 is expected to be truthy7986 #full_name7987 is expected to eq "test_full"7988 #description7989 is expected to eq "desc"7990 #issues_enabled?7991 is expected to be falsey7992 is expected to be truthy7993 #owner_and_slug7994 is expected to eq ["ben", "test"]7995 #owner7996 is expected to eq "ben"7997 #slug7998 is expected to eq "test"7999 #clone_url8000 builds url8001Gitlab::EtagCaching::Router::Graphql8002 matches pipelines endpoint8003 has a valid feature category for every route8004 applies the default urgency for every route8005 .cache_key8006 uses request path and headers as cache key8007 when the header is missing8008 does not raise errors8009BlobViewer::GitlabCiYml8010 #validation_message8011 calls prepare! on the viewer8012 when the configuration is valid8013 returns nil8014 when the configuration is invalid8015 returns the error message8016notify/changed_milestone_email.html.haml8017 milestone without start and due dates8018 renders without date range8019 milestone with start and due dates8020 renders with date range80215-Minute-Production-App.gitlab-ci.yml8022 # order random8023 the created pipeline8024 creates only build job8025 when AWS variables are set8026 creates all jobs8027 when pipeline branch is protected8028 does not create a destroy job8029Packages::RemoveTagService8030 #execute8031 with existing tag8032 is expected to change `Packages::Tag.count` by -18033 with nil8034 is expected to raise ArgumentError8035Gitlab::Database::Partitioning::DetachedPartitionDropper8036 #perform8037 when the partition should not be dropped yet8038 does not drop the partition8039 with a partition to drop8040 drops the partition8041 removing foreign keys8042 removes foreign keys from the table before dropping it8043 does not remove foreign keys from the parent table8044 when another process drops the foreign key8045 skips dropping that foreign key8046 when another process drops the partition8047 skips dropping the foreign key8048 when another process drops the table while the first waits for a lock8049 skips the table8050 when the partition to drop is still attached to its table8051 does not drop the partition, but does remove the DetachedPartition entry8052 when another process removes the entry before this process8053 does nothing8054 with multiple partitions to drop8055 drops both partitions8056 when the first drop returns an error8057 still drops the second partition8058API::Entities::Ci::Pipeline8059 exposes pipeline before_sha8060 exposes pipeline tag8061 exposes pipeline yaml_errors8062 exposes pipeline created_at8063 exposes pipeline updated_at8064 exposes pipeline started_at8065 exposes pipeline finished_at8066 exposes pipeline committed_at8067 exposes pipeline duration8068 exposes pipeline queued_duration8069 exposes pipeline user basic information8070 exposes pipeline detailed status8071 exposes pipeline coverage as a string8072Gitlab::Ci::Status::Pipeline::Blocked8073 #text8074 overrides status text8075 #label8076 overrides status label8077 .matches?8078 when pipeline is blocked8079 is a correct match8080 when pipeline is not blocked8081 does not match8082API::Entities::DeploymentExtended8083 #as_json8084 includes fields from deployment entity8085Pajamas::RadioComponent8086 with default options8087 renders unchecked radio8088 does not render help text8089 with custom options8090 renders help text8091 renders checked radio8092 adds CSS class to label8093 with `label` slot8094 renders unchecked radio8095 with `help_text` slot8096 renders unchecked radio8097 renders help text8098 with `label` and `help_text` slots8099 renders unchecked radio8100 renders help text8101layouts/_head8102 escapes HTML-safe strings in page_title8103 escapes HTML-safe strings in page_description8104 escapes HTML-safe strings in page_image8105DEPRECATION WARNING: The asset "highlight/themes/solarised-light.css" is not present in the asset pipeline.8106Falling back to an asset that may be in the public folder.8107This behavior is deprecated and will be removed.8108To bypass the asset pipeline and preserve this behavior,8109use the `skip_pipeline: true` option.8110 (called from stylesheet_link_tag_defer at /builds/gitlab-org/gitlab/app/helpers/application_helper.rb:279)8111DEPRECATION WARNING: The asset "highlight/themes/solarised-light.css" is not present in the asset pipeline.8112Falling back to an asset that may be in the public folder.8113This behavior is deprecated and will be removed.8114To bypass the asset pipeline and preserve this behavior,8115use the `skip_pipeline: true` option.8116 (called from block in _app_views_layouts__loading_hints_html_haml___1288704806781485837_259946180 at /builds/gitlab-org/gitlab/app/views/layouts/_loading_hints.html.haml:13)8117 adds selected syntax highlight stylesheet8118 when an asset_host is set8119 adds a link dns-prefetch tag8120 adds a link preconnect tag8121 when a Matomo config is set8122 add a Matomo Javascript8123 when matomo_disable_cookies is true8124 disables cookies8125ServiceDesk::CustomEmails::CreateService8126 # order random8127 #execute8128 when feature flag service_desk_custom_email is disabled8129 behaves like a service that exits with error8130 exits early8131 with illegitimate user8132 behaves like a service that exits with error8133 exits early8134 with legitimate user8135 behaves like a service that exits with error8136 exits early8137 with params but custom_email missing8138 behaves like a failing service that does not create records8139 exits with error and does not create records8140 with params but smtp username empty8141 behaves like a failing service that does not create records8142 exits with error and does not create records8143 with params but smtp password is too short8144 behaves like a failing service that does not create records8145 exits with error and does not create records8146 with params but custom_email is invalid8147 behaves like a failing service that does not create records8148 exits with error and does not create records8149 with full set of params8150 creates all records returns a successful response8151 when custom email aready exists8152 behaves like a service that exits with error8153 exits early8154Gitlab::Auth::KeyStatusChecker8155 #show_console_message?8156 for an expired key8157 is expected to eq true8158 for a key expiring in the next 7 days8159 is expected to eq true8160 for a key expiring after the next 7 days8161 is expected to eq false8162 for a key that never expires8163 is expected to eq false8164 #console_message8165 for an expired key8166 is expected to eq "INFO: Your SSH key has expired. Please generate a new key."8167 for a key expiring in the next 7 days8168 is expected to eq "INFO: Your SSH key is expiring soon. Please generate a new key."8169 for a key expiring after the next 7 days8170 is expected to be nil8171 for a key that never expires8172 is expected to be nil8173Preloaders::UserMaxAccessLevelInGroupsPreloader8174 when the preloader is used8175 when user has indirect access to groups8176 when traversal_ids feature flag is disabled8177 behaves like executes N max member permission queries to the DB8178 executes the specified max membership queries8179 caches the correct access_level for each group8180 when traversal_ids feature flag is enabled8181 behaves like executes N max member permission queries to the DB8182 executes the specified max membership queries8183 caches the correct access_level for each group8184 for groups arising from group shares8185 sets the right access level in cache for groups arising from group shares8186 when the preloader is not used8187 behaves like executes N max member permission queries to the DB8188 executes the specified max membership queries8189 caches the correct access_level for each group8190Gitlab::Database::HealthStatus::Indicators::AutovacuumActiveOnTable8191 # order random8192 #evaluate8193 without autovacuum activity8194 returns Normal signal8195 remembers the indicator class8196 with autovacuum activity8197 returns Stop signal8198 explains why8199 remembers the indicator class8200 returns NoSignal signal in case the feature flag is disabled8201Packages::CreatePackageFileService8202 #execute8203 with valid params8204 creates a new package file8205 behaves like assigns build to package file8206 with build info8207 assigns the pipeline to the package8208 creates a new PackageFileBuildInfo record8209 file is missing8210 raises an error8211Webauthn::RegisterService8212 #execute8213 returns a registration if challenge matches8214 returns an error if challenge does not match8215StuckExportJobsWorker8216 with started export status8217 behaves like project export job detection8218 when the job has completed8219 when the export status was already updated8220 does not mark the export as failed8221 when the export status was not updated8222 marks the project as failed8223 when the job is not in queue and db record in queued state8224 marks the project as failed8225 when the job is running in Sidekiq8226 does not mark the project export as failed8227WorkItems::DeleteService8228 #execute8229 when user can delete the work item8230 is expected to be success8231 when there are errors preventing to delete the work item8232 is expected to be error8233 returns error messages8234 when user cannot delete the work item8235 is expected to be error8236 returns error messages8237Issues::RescheduleStuckIssueRebalancesWorker8238 #perform8239 does not schedule a rebalance8240 schedules a rebalance in case there are any rebalances started8241Resolvers::Ci::GroupRunnersResolver8242 #resolve8243 when user cannot see runners8244 returns no runners8245 with user as group owner8246 returns all the runners8247 with membership direct8248 returns only direct runners8249 with obj set to nil8250 raises an error8251 with obj not set to group8252 raises an error8253 Allowed query arguments8254 calls RunnersFinder with expected arguments8255Constraints::GroupUrlConstrainer8256 #matches?8257 valid request8258 is expected to be truthy8259 valid request for nested group8260 is expected to be truthy8261 valid request for nested group with reserved top level name8262 is expected to be truthy8263 invalid request8264 is expected to be falsey8265 when the request matches a redirect route8266 for a root group8267 and is a GET request8268 is expected to be truthy8269 and is NOT a GET request8270 is expected to be falsey8271 for a nested group8272 is expected to be truthy8273Resolvers::DesignManagement::DesignAtVersionResolver8274 #resolve8275 returns the specified design8276 when the user cannot see designs8277 generates ResourceNotAvailable8278 the ID belongs to a design on another issue8279 generates ResourceNotAvailable8280 the current object does not constrain the issue8281 returns the object8282Gitlab::Ci::Reports::Security::AggregatedReport8283 #created_at8284 no reports8285 has no created date8286 report with no created date8287 has no created date8288 has reports8289 has oldest created date8290Packages::Rpm::ParsePackageService8291 # order random8292 dynamic private methods8293 define dynamic build attribute method8294 define dynamic build attribute method8295 define dynamic build attribute method8296 #execute8297 when wrong format file received8298 raise error8299 when valid file uploaded8300 when .rpm file uploaded8301 behaves like valid package parsing8302 return hash8303 has all static attribute keys8304 includes epoch attribute8305 has all built attributes with array values8306 when .src.rpm file uploaded8307 behaves like valid package parsing8308 return hash8309 has all static attribute keys8310 includes epoch attribute8311 has all built attributes with array values8312MergeRequests::Mergeability::CheckDiscussionsStatusService8313 #execute8314 when the merge request is in a mergable state8315 returns a check result with status success8316 when the merge request is not in a mergeable state8317 returns a check result with status failed8318 #skip?8319 when skip check is true8320 returns true8321 when skip check is false8322 returns false8323 #cacheable?8324 returns false8325Gitlab::X509::Tag8326 #signature8327 signed tag8328 is expected not to be nil8329 is expected to eq :unverified8330 is expected to have attributes {:email => "r.meier@siemens.com", :serial_number => 3664232660, :subject => "CN=Meier Roger,O=Siemens,SN=Me...r=Z000NWDH", :subject_key_identifier => "21:7E:82:45:29:5D:0E:B1:19:CD:24:45:65:EE:0C:5C:73:03:5E:33"}8331 is expected to have attributes {:crl_url => "http://ch.siemens.com/pki?ZZZZZZA6.crl", :subject => "CN=Siemens Issuing CA Medium Strength...ayern,C=DE", :subject_key_identifier => "F8:15:5D:47:0C:6C:77:7B:72:C4:02:17:91:68:A2:B6:F7:6A:09:44"}8332 unsigned tag8333 is expected to be nil8334Gitlab::Usage::Metrics::Instrumentations::CountCiRunnersProjectTypeActiveOnlineMetric8335 # order random8336 behaves like a correct instrumented metric value8337 has correct value8338X509Issuer8339 validation8340 is expected to validate that :subject_key_identifier cannot be empty/falsy8341 is expected to validate that :subject cannot be empty/falsy8342 is expected to validate that :crl_url cannot be empty/falsy8343 .safe_create!8344 creates a new issuer if it was not found8345 assigns the correct attributes when creating8346 validators8347 accepts correct subject_key_identifier8348 rejects invalid subject_key_identifier8349 accepts valid crl_url8350 rejects invalid crl_url8351Resolvers::DataTransfer::ProjectDataTransferResolver8352 # order random8353 with anonymous access8354 does not raise an error and returns no data8355 with authorized user but without enough permissions8356 does not raise an error and returns no data8357 when user has permissions to see data transfer8358 returns mock data8359 when data_transfer_monitoring is disabled8360 returns empty result8361 when data_transfer_monitoring_mock_data is disabled8362 calls ProjectDataTransferFinder with expected arguments8363Packages::PackageFileFinder8364 #execute8365 behaves like package file finder examples8366 is expected to eq #<Packages::PackageFile id: 74, package_id: 46, created_at: "2023-08-10 12:41:07.734925000 +0000", up...um: nil, verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>8367 with file_name_like8368 is expected to eq #<Packages::PackageFile id: 74, package_id: 46, created_at: "2023-08-10 12:41:07.734925000 +0000", up...um: nil, verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>8369 behaves like not returning pending_destruction package files8370 returns the correct package file8371 with unknown file_name8372 is expected to be nil8373 #execute!8374 behaves like package file finder examples8375 is expected to eq #<Packages::PackageFile id: 74, package_id: 46, created_at: "2023-08-10 12:41:07.734925000 +0000", up...um: nil, verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>8376 with file_name_like8377 is expected to eq #<Packages::PackageFile id: 74, package_id: 46, created_at: "2023-08-10 12:41:07.734925000 +0000", up...um: nil, verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>8378 behaves like not returning pending_destruction package files8379 returns the correct package file8380 with unknown file_name8381 is expected to raise ActiveRecord::RecordNotFound8382Backup::FileBackupError8383 with lfs file8384 behaves like includes backup path8385 is expected to respond to #app_files_dir8386 is expected to respond to #backup_tarball8387 expects exception message to include file backup path location8388 expects exception message to include file being back-up8389 with uploads file8390 behaves like includes backup path8391 is expected to respond to #app_files_dir8392 is expected to respond to #backup_tarball8393 expects exception message to include file backup path location8394 expects exception message to include file being back-up8395Gitlab::GithubImport::PullRequests::ImportReviewWorker8396 # order random8397 is expected to includes the Gitlab::GithubImport::ObjectImporter module8398 #object_type8399 is expected to eq :pull_request_review8400 #importer_class8401 is expected to eq Gitlab::GithubImport::Importer::PullRequests::ReviewImporter8402 #representation_class8403 is expected to eq Gitlab::GithubImport::Representation::PullRequestReview8404Gitlab::Checks::MatchingMergeRequest8405 #match?8406 matches a merge request8407 does not match any merge request8408 with load balancing enabled8409 behaves like secondary that has caught up to a primary8410 continues to use the secondary8411 only increments total counter8412 on secondary behind primary8413 behaves like secondary that is lagging primary8414 sticks to the primary8415 increments both total and stale counters8416ExpireBuildArtifactsWorker8417 #perform8418 executes a service8419Ci::CreatePipelineService8420 .pre/.post stages8421 when pipeline contains a build except .pre/.post8422 creates a pipeline8423 when pipeline does not contain any other build except .pre/.post8424 does not create a pipeline8425dashboard/projects/_nav.html.haml8426 highlights All tab by default8427 highlights Personal tab personal param is present8428Group::CrmSettings8429 associations8430 is expected to belong to group required: false8431 validations8432 is expected to validate that :group cannot be empty/falsy8433Gitlab::RequestEndpoints8434 .all_api_endpoints8435 selects all feature API classes8436 .all_controller_actions8437 selects all feature controllers and action names8438RuboCop::Cop::Graphql::AuthorizeTypes8439 # order random8440 does not add an offense for base types8441 does not add an offense for classes that only have an authorize call8442 adds add an offense when authorize is empty8443 does not add an offense for Enums8444 does not add an offense for InputTypes8445 does not add an offense for classes that have an authorize call8446 does not add an offense for subtypes of BaseInputObject8447 does not add an offense for subtypes of BaseUnion8448 adds add an offense when authorize has no arguments8449 adds an offense when there is no authorize call8450Import::GithubOrgEntity8451 # order random8452 exposes correct attributes8453Bitbucket::Representation::PullRequestComment8454 #iid8455 is expected to eq 18456 #file_path8457 is expected to eq "/path"8458 #old_pos8459 is expected to eq 38460 #new_pos8461 is expected to eq 38462 #parent_id8463 is expected to eq 28464 is expected to be nil8465 #inline?8466 is expected to be truthy8467 is expected to be falsey8468 #has_parent?8469 is expected to be truthy8470 is expected to be falsey8471BulkImports::Projects::Pipelines::ProjectPipeline8472 #run8473 imports new project into destination group8474 pipeline parts8475 is expected to includes the BulkImports::Pipeline module8476 is expected to includes the BulkImports::Pipeline::Runner module8477 has extractors8478 has transformers8479Packages::Pypi::SimpleIndexPresenter8480 #body8481 for project8482 behaves like pypi package presenter8483 version: ">=2.7", expected_version: ">=2.7"8484 contains links for all packages8485 version: "\"><script>alert(1)</script>", expected_version: ""><script>alert(1)</script>"8486 contains links for all packages8487 version: ">=2.7, !=3.0", expected_version: ">=2.7, !=3.0"8488 contains links for all packages8489 for group8490 behaves like pypi package presenter8491 version: ">=2.7", expected_version: ">=2.7"8492 contains links for all packages8493 version: "\"><script>alert(1)</script>", expected_version: ""><script>alert(1)</script>"8494 contains links for all packages8495 version: ">=2.7, !=3.0", expected_version: ">=2.7, !=3.0"8496 contains links for all packages8497 with package files pending destruction8498 is expected not to include "package_pending_destruction"8499TodosDestroyer::ProjectPrivateWorker8500 calls the Todos::Destroy::ProjectPrivateService with the params it was given8501Integrations::ChatMessage::MergeMessage8502 behaves like Integrations::ChatMessage8503 when input contains link markup8504 strips all link markup characters8505 without markdown8506 open8507 returns a message regarding opening of merge requests8508 close8509 returns a message regarding closing of merge requests8510 with markdown8511 open8512 returns a message regarding opening of merge requests8513 close8514 returns a message regarding closing of merge requests8515 approved8516 returns a message regarding completed approval of merge requests8517 unapproved8518 returns a message regarding revocation of completed approval of merge requests8519 approval8520 returns a message regarding added approval of merge requests8521 unapproval8522 returns a message regarding revoking approval of merge requests8523JiraConnect::SyncDeploymentsWorker8524 behaves like worker with data consistency8525 .get_data_consistency_feature_flag_enabled?8526 returns true8527 .get_data_consistency8528 returns correct data consistency8529 #perform8530 when the object exists8531 calls the Jira sync service8532 when the object does not exist8533 does not call the sync service8534Gitlab::BitbucketServerImport::Stage::ImportPullRequestsWorker8535 # order random8536 behaves like Gitlab::BitbucketServerImport::StageMethods8537 .sidekiq_retries_exhausted8538 tracks the import failure8539 #perform8540 when the import succeeds8541 schedules the next stage8542 logs stage start and finish8543 when project does not exists8544 does not call the importer8545 when project import state is not `started`8546 does not call the importer8547 when the importer fails8548 does not schedule the next stage and raises error8549Projects::CiFeatureUsage8550 associations8551 is expected to belong to project required: false8552 behaves like having unique enum values8553 has unique values in "feature"8554 validations8555 is expected to validate that :project cannot be empty/falsy8556 is expected to validate that :feature cannot be empty/falsy8557 .insert_usage8558 when data is not a duplicate8559 creates a new record8560 when data is a duplicate8561 does not create a new record8562ProtectedTags::CreateService8563 #execute8564 creates a new protected tag8565 protecting a tag with a name that contains HTML tags8566 creates a new protected tag8567Integrations::Irker8568 Validations8569 when integration is active8570 is expected to validate that :recipients cannot be empty/falsy8571 when integration is inactive8572 is expected not to validate that :recipients cannot be empty/falsy8573 Execute8574 sends valid JSON messages to an Irker listener8575Every API endpoint8576 feature categories8577 has feature categories8578 recognizes the feature categories8579 has no routes with multiple paths8580 doesn't define or exclude categories on removed actions8581Constraints::UserUrlConstrainer8582 #matches?8583 valid request8584 is expected to be truthy8585 invalid request8586 is expected to be falsey8587 when the request matches a redirect route8588 and is a GET request8589 is expected to be truthy8590 and is NOT a GET request8591 is expected to be falsey8592Mutations::CustomerRelations::Contacts::Update8593 is expected to require graphql authorizations :admin_crm_contact8594 #resolve8595 when the user does not have permission to update a contact8596 raises an error8597 when the contact does not exist8598 raises an error8599 when the user has permission to update a contact8600 updates the organization with correct values8601pages storage check8602 when local store does not exist yet8603 is expected to be truthy8604 when pages is not enabled8605 is expected to be truthy8606 when pages is enabled8607 local_storage_enabled: false, object_storage_enabled: false, raises_exception: true8608 validates pages storage configuration8609 local_storage_enabled: false, object_storage_enabled: true, raises_exception: false8610 validates pages storage configuration8611 local_storage_enabled: true, object_storage_enabled: false, raises_exception: false8612 validates pages storage configuration8613 local_storage_enabled: true, object_storage_enabled: true, raises_exception: false8614 validates pages storage configuration8615 local_storage_enabled: 1, object_storage_enabled: 0, raises_exception: false8616 validates pages storage configuration8617 local_storage_enabled: nil, object_storage_enabled: nil, raises_exception: true8618 validates pages storage configuration8619Environments::ResetAutoStopService8620 #execute8621 when environment will be stopped automatically8622 resets auto stop8623 when failed to reset auto stop8624 returns error8625 when user is reporter8626 returns error8627 when environment will not be stopped automatically8628 returns error8629ExportCsv::BaseService8630 # order random8631 #associations_to_preload8632 return []8633 #email8634 raises NotImplementedError8635 #header_to_value_hash8636 raises NotImplementedError8637Gitlab::Ci::Build::Credentials::Factory8638 when provider is valid8639 generates an array of credentials objects8640 when provider is not valid8641 generates an array without specific credential object8642WebauthnRegistration8643 relations8644 is expected to belong to user required: false8645 validations8646 is expected to validate that :credential_xid cannot be empty/falsy8647 is expected to validate that :public_key cannot be empty/falsy8648 is expected to validate that :counter cannot be empty/falsy8649 is expected to validate that the length of :name is at least 08650 is expected not to allow :name to be ‹nil›8651 is expected to validate that :counter looks like an integer greater than or equal to 0 and less than or equal to 42949672958652Gitlab::GitalyClient::ConflictFilesStitcher8653 enumeration8654 combines segregated ConflictFile messages together8655RuboCop::Cop::Gitlab::DocUrl8656 # order random8657 when string literal is added with docs url prefix8658 when inlined8659 registers an offense8660 when multilined8661 registers an offense8662 with heredoc8663 registers an offense8664 when string literal is added without docs url prefix8665 when inlined8666 does not register an offense8667 when multilined8668 does not register an offense8669 with heredoc8670 does not register an offense8671RuboCop::Cop::Gitlab::PredicateMemoization8672 # order random8673 when source is a regular method memoizing via ivar8674 behaves like not registering offense8675 does not register offenses8676 when source is a predicate method using local with ||=8677 behaves like not registering offense8678 does not register offenses8679 when source is a predicate method memoizing via ivar8680 when assigning to boolean8681 registers an offense8682 when assigning to another variable that is a boolean8683 registers an offense8684 when source is a predicate method using ivar with assignment8685 behaves like not registering offense8686 does not register offenses8687Packages::Rubygems::CreateDependenciesService8688 #execute8689 creates dependencies8690 links dependencies to the package8691FeatureFlagsHelper8692 #unleash_api_url8693 is expected to end with "/api/v4/feature_flags/unleash/1261"8694 #unleash_api_instance_id8695 is expected not to be empty8696 #edit_feature_flag_data8697 contains all the data needed to edit feature flags8698Ci::BuildPrepareWorker8699 build exists8700 calls the prepare build service8701 build does not exist8702 does not attempt to prepare the build8703Ci::CopyCrossDatabaseAssociationsService8704 #execute8705 returns a success response8706Gitlab::SidekiqSignals8707 .install8708 not a process group leader8709 does nothing8710 as a process group leader8711 installs its own signal handlers for TERM and INT only8712 installs a forwarding signal handler for INT8713 raises if sidekiq no longer traps SIGINT8714 installs a forwarding signal handler for TERM8715 raises if sidekiq no longer traps SIGTERM8716shared/milestones/_top.html.haml8717 does not render a deprecation message for a non-legacy and non-dashboard milestone8718Stepable8719 stops after the first non success status8720 when all methods return success8721 calls all methods in order8722 merges variables returned by all steps8723 can modify results of previous steps8724 with multiple stepable classes8725 does not leak steps8726Gitlab::ImportExport8727 export filename8728 contains the project path8729 contains the namespace path8730 does not go over a certain length8731 #snippet_repo_bundle_filename_for8732 generates the snippet bundle name8733Sidebars::Projects::Menus::SecurityComplianceMenu8734 render?8735 when user is not authenticated8736 is expected to be falsey8737 when user is authenticated8738 when the Security and Compliance is disabled8739 is expected to be falsey8740 when the Security and Compliance is not disabled8741 is expected to be truthy8742Resolvers::Ci::RunnerSetupResolver8743 #resolve8744 with container platforms8745 returns install instructions8746 does not return register instructions8747 with regular platforms8748 returns install and register instructions8749Gitlab::Loggable8750 # order random8751 #build_structured_payload8752 adds class and returns formatted json8753 appends additional params and returns formatted json8754 does not raise an error in loggers when passed non-symbols8755 handles anonymous classes8756 handles duplicate keys8757RuboCop::Cop::DestroyAll8758 # order random8759 flags the use of destroy_all with a send receiver8760 flags the use of destroy_all with a constant receiver8761 flags the use of destroy_all when passing arguments8762 flags the use of destroy_all with a local variable receiver8763 does not flag the use of delete_all8764Metrics::GlobalMetricsUpdateWorker8765 # order random8766 #perform8767 delegates to ::Metrics::GlobalMetricsUpdateService8768 for an idempotent worker8769 is labeled as idempotent8770 performs multiple times sequentially without raising an exception8771 exports metrics8772API::Entities::BulkImports::ExportBatchStatus8773 # order random8774 has the correct attributes8775Resolvers::GroupResolver8776 #resolve8777 batch-resolves groups by full path8778 resolves an unknown full_path to nil8779 treats group full path as case insensitive8780Capybara::Node::Base::SlowFinder8781 # order random8782 without timeout8783 when element is found8784 does not raise error8785 when element is not found8786 raises Capybara::ElementNotFound error8787 with timeout8788 with default timeout8789 raises a timeout error8790 when passed as paramater8791 raises a timeout error8792Sidebars::UserProfile::Panel8793 # order random8794 implements #aria_label8795 implements #super_sidebar_context_header8796 behaves like a panel with uniquely identifiable menu items8797 all menu_items have unique item_id8798 all menu_items have an item_id8799Gitlab::SetupHelper::Workhorse8800 .make8801 when there is a gmake8802 returns gmake8803 when there is no gmake8804 returns make8805 .redis_url8806 matches the SharedState URL8807 .redis_db8808 matches the SharedState DB8809 defaults to 0 if unspecified8810API::Entities::BulkImports::ExportStatus8811 has the correct attributes8812 when export is batched8813 exposes batches8814Import::GithubRealtimeRepoSerializer8815 # order random8816 .entity_class8817 #represent8818 when a single object is being serialized8819 serializes organization object8820 when multiple objects are being serialized8821 serializes array of organizations8822groups/show8823 # order random8824 group README8825 with readme project8826 renders #js-group-readme8827 without readme project8828 does not render #js-group-readme8829Banzai::Filter::AsciiDocPostProcessingFilter8830 adds class for elements with data-math-style8831 adds class for elements with data-mermaid-style8832 keeps content when no data-math-style found8833Ml::FindOrCreateExperimentService8834 # order random8835 #execute8836 creates an experiment using Ml::Experiment.find_or_create8837 when experiment already exists8838 fetches existing experiment8839JiraConnectSubscription8840 associations8841 is expected to belong to installation class_name => JiraConnectInstallation required: false8842 is expected to belong to namespace class_name => Namespace required: false8843 validations8844 is expected to validate that :installation cannot be empty/falsy8845 is expected to validate that :namespace cannot be empty/falsy8846Packages::Rubygems::Metadatum8847 relationships8848 is expected to belong to package required: false8849 validations8850 is expected to validate that :package cannot be empty/falsy8851 #rubygems_package_type8852 will not allow a package with a different package_type8853Gitlab::Ci::Ansi2json::Result8854 #size8855 when offset is at the start8856 returns the full size8857 when offset is not zero8858 returns the remaining size8859 #total8860 returns size of stread8861RuboCop::Cop::AvoidBecomes8862 # order random8863 flags the use of becomes with a dynamic parameter8864 flags the use of becomes with a constant parameter8865 flags the use of becomes with a namespaced constant parameter8866RuboCop::Cop::RSpec::AvoidConditionalStatements8867 # order random8868 when using conditionals8869 flags if conditional8870 flags unless conditional8871 flags ternary operator8872Tooling::Danger::ConfigFiles8873 # order random8874 #add_suggestion_for_missing_introduced_by_url8875 when config file has an empty introduced_by_url line8876 adds suggestions at the correct line8877 when config file has an introduced_by_url line with value8878 does not add suggestion8879 #new_config_files8880 returns added, modified, and renamed_after files by default8881Gitlab::GithubImport::Representation::DiffNotes::DiscussionId8882 # order random8883 #discussion_id8884 when the note is not a reply to a discussion8885 generates and caches new discussion_id8886 when the note is a reply to a discussion8887 uses the cached value as the discussion_id8888 when cached value does not exist8889 falls back to generating a new discussion_id8890Custom URLs milestone8891 # order random8892 milestone8893 with project8894 creates directs8895 with group8896 creates directs8897Sidebars::Organizations::Menus::ScopeMenu8898 # order random8899 behaves like serializable as super_sidebar_menu_args8900 returns hash with provided attributes8901 returns hash with an item_id8902Gitlab::Webpack::GraphqlKnownOperations8903 .load8904 when file loader returns8905 returns memoized value8906 when file loader errors8907 returns empty array8908Hashie::Mash#permitted patch8909 # order random8910 #permitted8911 raises ArgumentError8912 #respond_to? with :permitted?8913 returns false8914Gitlab::Usage::Metrics::Instrumentations::SnowplowEnabledMetric8915 for snowplow enabled option8916 snowplow_enabled: true, expected_value: true8917 behaves like a correct instrumented metric value8918 has correct value8919 snowplow_enabled: false, expected_value: false8920 behaves like a correct instrumented metric value8921 has correct value8922SshKeysHelper8923 #ssh_key_allowed_algorithms8924 returns string with the names of allowed algorithms that are quoted and joined by commas8925 returns only allowed algorithms8926Types::Ci::Config::NeedType8927 is expected to eq "CiConfigNeed"8928 exposes the expected fields8929MemberInvitationReminderEmailsWorker8930 #perform8931 executes the invitation reminder email service8932Gitlab::RenderTimeout8933 utilizes timeout for web8934 utilizes longer timeout for sidekiq8935HtmlSafetyValidator8936 adds an error when a script is included in the name8937 does not add an error when an ampersand is included in the name8938Gitlab::Database::AsyncConstraints::Validators8939 # order random8940 .for8941 with foreign keys validations8942 is expected to be a kind of Gitlab::Database::AsyncConstraints::Validators::ForeignKey8943 with check constraint validations8944 is expected to be a kind of Gitlab::Database::AsyncConstraints::Validators::CheckConstraint8945Gitlab::Usage::Metrics::Instrumentations::CountCiRunnersGroupTypeActiveMetric8946 # order random8947 behaves like a correct instrumented metric value8948 has correct value8949Gitlab::Middleware::SidekiqWebStatic8950 #call8951 with an /admin/sidekiq route8952 deletes the HTTP_X_SENDFILE_TYPE header8953 with some static asset route8954 keeps the HTTP_X_SENDFILE_TYPE header8955Types::Ci::RunnerSetupType8956 is expected to eq "RunnerSetup"8957 exposes the expected fields8958Atlassian::JiraConnect::Serializers::BaseEntity8959 generates the update_sequence_id8960 with update_sequence_id option8961 uses the custom update_sequence_id8962Types::Ci::InstanceVariableType8963 is expected to contain exactly Types::Ci::VariableInterface8964 is expected to have graphql fields :environment_scope, :masked, and :protected8965Gitlab::Email::Hook::AdditionalHeadersInterceptor8966 adds Auto-Submitted header8967 when the same mail object is sent twice8968 does not add the Auto-Submitted header twice8969ActiveJob execute callback8970 is removed in test environment8971BulkImports::Common::Extractors::GraphqlExtractor8972 #extract8973 returns ExtractedData8974WikiPages::BaseService8975 #increment_usage8976 the class implements usage_counter_action incorrectly8977 raises an error on unknown events8978CreateMergeRequestNote8979 # order random8980 #execute8981 requests create_merge_request_comment from the gitlab client8982AuthorizedProjectUpdate::ProjectAccessChangedService8983 #execute8984 executes projects_authorizations refresh8985Tooling::Danger::Specs::ProjectFactorySuggestion8986 # order random8987 adds suggestions at the correct lines8988ExportHelper8989 #project_export_descriptions8990 includes design management8991Gitlab::Metrics::Dashboard::Validator::CustomFormats8992 #format_handlers8993 add_to_metric_id_cache8994 adds data to metric id cache8995TodosDestroyer::GroupPrivateWorker8996 calls the Todos::Destroy::GroupPrivateService with the params it was given8997Gitlab::Ci::Config::External::Mapper::Normalizer8998 # order random8999 #process9000 converts locations to canonical form9001Gitlab::Kubernetes::Role9002 #generate9003 is expected to eq #<Kubeclient::Resource metadata={:name=>"example-name", :namespace=>"example-namespace"}, rules=[{:ap...>["hello.world"], :resources=>["oil", "diamonds", "coffee"], :verbs=>["say", "do", "walk", "run"]}]>9004Knapsack report was generated. Preview:9005{9006 "spec/models/environment_spec.rb": 190.067771597,9007 "spec/models/container_repository_spec.rb": 104.19274065000002,9008 "spec/lib/gitlab/redis/multi_store_spec.rb": 26.496752262999962,9009 "spec/services/merge_requests/create_service_spec.rb": 82.70211775099995,9010 "spec/lib/gitlab/github_import/importer/protected_branch_importer_spec.rb": 55.04449511100006,9011 "spec/services/system_notes/issuables_service_spec.rb": 38.19070032299999,9012 "spec/lib/gitlab/color_spec.rb": 9.62473335499999,9013 "spec/tooling/danger/project_helper_spec.rb": 5.99320005300001,9014 "spec/finders/releases/group_releases_finder_spec.rb": 32.37081006300002,9015 "spec/lib/backup/repositories_spec.rb": 31.096522348999997,9016 "spec/services/alert_management/process_prometheus_alert_service_spec.rb": 17.066714477999994,9017 "spec/models/protected_branch_spec.rb": 24.28414404900002,9018 "spec/workers/emails_on_push_worker_spec.rb": 27.291454556999952,9019 "spec/lib/gitlab/diff/file_collection/merge_request_diff_batch_spec.rb": 22.69519534699998,9020 "spec/services/todos/destroy/group_private_service_spec.rb": 24.366098832000034,9021 "spec/services/search_service_spec.rb": 18.619409015999963,9022 "spec/models/resource_label_event_spec.rb": 16.78331131899995,9023 "spec/lib/gitlab/utils/usage_data_spec.rb": 6.010692275999872,9024 "spec/lib/gitlab/repository_cache_adapter_spec.rb": 12.686509214000125,9025 "spec/services/packages/nuget/update_package_from_metadata_service_spec.rb": 13.25412474299992,9026 "spec/models/commit_range_spec.rb": 16.137029125000026,9027 "spec/presenters/ci/pipeline_presenter_spec.rb": 8.458497250000164,9028 "spec/lib/gitlab/database/postgres_foreign_key_spec.rb": 11.317484837999928,9029 "spec/models/integrations/datadog_spec.rb": 4.515729529000055,9030 "spec/models/concerns/routable_spec.rb": 3.847006798999928,9031 "spec/lib/gitlab/git/diff_spec.rb": 3.4886510920000546,9032 "spec/services/search/global_service_spec.rb": 8.618312692000018,9033 "spec/lib/gitlab/gpg_spec.rb": 6.595566664000216,9034 "spec/graphql/mutations/issues/update_spec.rb": 11.163714751000043,9035 "spec/lib/gitlab/email/handler/create_note_on_issuable_handler_spec.rb": 9.11311876600007,9036 "spec/lib/api/helpers/packages/dependency_proxy_helpers_spec.rb": 3.4300061330000062,9037 "spec/models/concerns/chronic_duration_attribute_spec.rb": 7.261890693999931,9038 "spec/graphql/types/ci/job_token_scope_type_spec.rb": 11.028182446000073,9039 "spec/models/snippet_input_action_spec.rb": 1.6294731099999353,9040 "spec/services/ci/delete_unit_tests_service_spec.rb": 9.99709167800006,9041 "spec/services/ci/pipeline_artifacts/create_code_quality_mr_diff_report_service_spec.rb": 10.342703417000166,9042 "spec/lib/gitlab/usage/metrics/instrumentations/count_bulk_imports_entities_metric_spec.rb": 3.132276303000026,9043 "spec/lib/gitlab/redis/trace_chunks_spec.rb": 1.8593252820000998,9044 "spec/finders/pending_todos_finder_spec.rb": 8.429452136999998,9045 "spec/policies/clusters/cluster_policy_spec.rb": 8.340310159999945,9046 "spec/services/todos/destroy/unauthorized_features_service_spec.rb": 8.942659540000022,9047 "spec/lib/gitlab/data_builder/pipeline_spec.rb": 6.0998515119999865,9048 "spec/services/merge_requests/post_merge_service_spec.rb": 6.6259246759998405,9049 "spec/lib/gitlab/application_context_spec.rb": 3.4547625140000946,9050 "spec/lib/gitlab/content_security_policy/config_loader_spec.rb": 2.33282680100001,9051 "spec/lib/sidebars/projects/menus/settings_menu_spec.rb": 2.055597687000045,9052 "spec/models/customer_relations/issue_contact_spec.rb": 4.422927527999946,9053 "spec/lib/gitlab/ci/config/entry/cache_spec.rb": 2.0258153199999924,9054 "spec/services/todos/destroy/project_private_service_spec.rb": 4.9401094559998455,9055 "spec/services/clusters/cleanup/project_namespace_service_spec.rb": 6.699851901999864,9056 "spec/workers/users/deactivate_dormant_users_worker_spec.rb": 3.2513279269999202,9057 "spec/lib/atlassian/jira_connect/serializers/deployment_entity_spec.rb": 4.286035824999999,9058 "spec/services/work_items/create_from_task_service_spec.rb": 5.231921969000041,9059 "spec/lib/gitlab/diff/parser_spec.rb": 1.3284966610001447,9060 "spec/services/commits/cherry_pick_service_spec.rb": 6.291291465000086,9061 "spec/workers/auto_devops/disable_worker_spec.rb": 5.437866256000007,9062 "spec/lib/gitlab/checks/push_check_spec.rb": 4.095577034999906,9063 "spec/workers/projects/post_creation_worker_spec.rb": 4.5586316579999675,9064 "spec/lib/gitlab/slash_commands/issue_new_spec.rb": 3.5736682780000137,9065 "spec/finders/abuse_reports_finder_spec.rb": 2.56637830700015,9066 "spec/tasks/gitlab/artifacts/migrate_rake_spec.rb": 6.353256503000011,9067 "spec/graphql/resolvers/blobs_resolver_spec.rb": 3.1809147209999082,9068 "spec/models/ci/namespace_mirror_spec.rb": 4.697168521000094,9069 "spec/services/merge_requests/add_context_service_spec.rb": 5.19647363099989,9070 "spec/models/packages/npm/metadata_cache_spec.rb": 2.361225119999972,9071 "spec/workers/deployments/hooks_worker_spec.rb": 4.112224565999895,9072 "spec/graphql/types/snippet_type_spec.rb": 3.9126374070001475,9073 "spec/workers/bulk_import_worker_spec.rb": 2.2852130839999063,9074 "spec/lib/gitlab/ci/reports/accessibility_reports_comparer_spec.rb": 1.3652320090000103,9075 "spec/models/issue_email_participant_spec.rb": 1.2738219039999876,9076 "spec/tasks/gitlab/service_desk_email_rake_spec.rb": 3.034756269999889,9077 "spec/services/import/gitlab_projects/file_acquisition_strategies/remote_file_s3_spec.rb": 1.3963914670000577,9078 "spec/lib/gitlab/ci/config/entry/service_spec.rb": 1.4846551319999435,9079 "spec/lib/gitlab/database/async_constraints/postgres_async_constraint_validation_spec.rb": 1.1390060720000292,9080 "spec/lib/gitlab/usage/metrics/aggregates/aggregate_spec.rb": 0.8035538829999496,9081 "spec/initializers/hangouts_chat_http_override_spec.rb": 1.3543691190000118,9082 "spec/models/packages/debian/group_distribution_key_spec.rb": 0.8017198719999215,9083 "spec/services/environments/canary_ingress/update_service_spec.rb": 1.1211571640001239,9084 "spec/lib/gitlab/ci/pipeline/expression/lexeme/pattern_spec.rb": 1.8148481420000735,9085 "spec/serializers/admin/abuse_report_details_entity_spec.rb": 4.201330220000045,9086 "spec/lib/api/entities/release_spec.rb": 4.026096178999978,9087 "spec/finders/concerns/finder_with_group_hierarchy_spec.rb": 2.720178953999948,9088 "spec/lib/gitlab/work_items/work_item_hierarchy_spec.rb": 0.9250706549998995,9089 "spec/models/preloaders/environments/deployment_preloader_spec.rb": 1.7063888990001033,9090 "spec/lib/gitlab/usage/metrics/query_spec.rb": 0.5313940119999643,9091 "spec/rubocop/cop/rspec/factory_bot/inline_association_spec.rb": 0.7981807749999916,9092 "spec/lib/gitlab/search/params_spec.rb": 0.577796742999908,9093 "spec/services/lfs/push_service_spec.rb": 0.8415154550000352,9094 "spec/workers/issues/rebalancing_worker_spec.rb": 1.0241026849998889,9095 "spec/services/two_factor/destroy_service_spec.rb": 2.043489270000009,9096 "spec/lib/gitlab/slash_commands/presenters/issue_show_spec.rb": 2.8522245250001106,9097 "spec/lib/gitlab/slash_commands/presenters/issue_move_spec.rb": 4.59128742300004,9098 "spec/services/design_management/copy_design_collection/queue_service_spec.rb": 1.2104635270000017,9099 "spec/lib/gitlab/prometheus/additional_metrics_parser_spec.rb": 0.6839518530000532,9100 "spec/models/namespace/aggregation_schedule_spec.rb": 0.7404782639998757,9101 "spec/lib/gitlab/ci/config/entry/kubernetes_spec.rb": 0.3341497620001519,9102 "spec/lib/banzai/filter_array_spec.rb": 0.22172380099982547,9103 "spec/services/design_management/design_user_notes_count_service_spec.rb": 2.353110072000163,9104 "spec/graphql/resolvers/ci/runners_resolver_spec.rb": 0.8202169440000944,9105 "spec/models/concerns/ci/bulk_insertable_tags_spec.rb": 0.21462372099995264,9106 "spec/services/todos/destroy/destroyed_issuable_service_spec.rb": 1.6786303589999534,9107 "spec/services/error_tracking/base_service_spec.rb": 0.40340042200000426,9108 "spec/workers/gitlab/jira_import/stage/start_import_worker_spec.rb": 0.9761152549999679,9109 "spec/lib/gitlab/middleware/basic_health_check_spec.rb": 0.26843382100014423,9110 "spec/services/packages/composer/composer_json_service_spec.rb": 1.7108752589999767,9111 "spec/services/import/fogbugz_service_spec.rb": 1.2636242260000472,9112 "spec/rubocop/cop/migration/versioned_migration_class_spec.rb": 0.3185666609999771,9113 "spec/models/packages/composer/metadatum_spec.rb": 2.003328050000164,9114 "spec/rubocop/cop/rspec/factory_bot/avoid_create_spec.rb": 0.2572632710000562,9115 "spec/services/ide/terminal_config_service_spec.rb": 1.2840000470000632,9116 "spec/helpers/admin/user_actions_helper_spec.rb": 2.1171429010000793,9117 "spec/lib/gitlab/ci/status/build/retried_spec.rb": 2.460467523000034,9118 "spec/lib/gitlab/ci/templates/terraform_module_gitlab_ci_yaml_spec.rb": 2.398965242000031,9119 "spec/rubocop/cop/usage_data/large_table_spec.rb": 0.35667033199979414,9120 "spec/services/projects/fetch_statistics_increment_service_spec.rb": 1.103186394999966,9121 "spec/models/issue_assignee_spec.rb": 2.6798603439999624,9122 "spec/lib/gitlab/global_id_spec.rb": 1.8730277099998602,9123 "spec/lib/bitbucket/representation/repo_spec.rb": 0.5026658219999263,9124 "spec/lib/gitlab/etag_caching/router/graphql_spec.rb": 0.25171302100011417,9125 "spec/models/blob_viewer/gitlab_ci_yml_spec.rb": 1.0261452650001956,9126 "spec/views/notify/changed_milestone_email.html.haml_spec.rb": 0.9946199649998562,9127 "spec/lib/gitlab/ci/templates/5_minute_production_app_ci_yaml_spec.rb": 2.216048041000022,9128 "spec/services/packages/remove_tag_service_spec.rb": 0.7638312139999925,9129 "spec/lib/gitlab/database/partitioning/detached_partition_dropper_spec.rb": 0.9753809549999914,9130 "spec/lib/api/entities/ci/pipeline_spec.rb": 0.885830864999889,9131 "spec/lib/gitlab/ci/status/pipeline/blocked_spec.rb": 0.8574880539999867,9132 "spec/lib/api/entities/deployment_extended_spec.rb": 1.034393234999925,9133 "spec/components/pajamas/radio_component_spec.rb": 0.43604057300012755,9134 "spec/views/layouts/_head.html.haml_spec.rb": 1.2013130269999692,9135 "spec/services/service_desk/custom_emails/create_service_spec.rb": 2.3771575429998393,9136 "spec/lib/gitlab/auth/key_status_checker_spec.rb": 0.40698030200019275,9137 "spec/models/preloaders/user_max_access_level_in_groups_preloader_spec.rb": 1.4034577969998736,9138 "spec/lib/gitlab/database/health_status/indicators/autovacuum_active_on_table_spec.rb": 0.3264683719999084,9139 "spec/services/packages/create_package_file_service_spec.rb": 1.5039243379999334,9140 "spec/services/webauthn/register_service_spec.rb": 0.382350193000093,9141 "spec/workers/stuck_export_jobs_worker_spec.rb": 1.467858127999989,9142 "spec/services/work_items/delete_service_spec.rb": 1.4140843069999391,9143 "spec/workers/issues/reschedule_stuck_issue_rebalances_worker_spec.rb": 0.44753748300013285,9144 "spec/graphql/resolvers/ci/group_runners_resolver_spec.rb": 0.9950616959999934,9145 "spec/lib/constraints/group_url_constrainer_spec.rb": 1.090646905000085,9146 "spec/graphql/resolvers/design_management/design_at_version_resolver_spec.rb": 1.3564578869998059,9147 "spec/lib/gitlab/ci/reports/security/aggregated_report_spec.rb": 1.211108835999994,9148 "spec/services/packages/rpm/parse_package_service_spec.rb": 0.4390265830002136,9149 "spec/services/merge_requests/mergeability/check_discussions_status_service_spec.rb": 0.31085274199995183,9150 "spec/lib/gitlab/x509/tag_spec.rb": 1.2595977159999165,9151 "spec/lib/gitlab/usage/metrics/instrumentations/count_ci_runners_project_type_active_online_metric_spec.rb": 0.4048253019998356,9152 "spec/models/x509_issuer_spec.rb": 0.9250204350000786,9153 "spec/graphql/resolvers/data_transfer/project_data_transfer_resolver_spec.rb": 0.9291837949999717,9154 "spec/finders/packages/package_file_finder_spec.rb": 0.9223638440000741,9155 "spec/lib/backup/file_backup_error_spec.rb": 0.5521945630000573,9156 "spec/workers/gitlab/github_import/pull_requests/import_review_worker_spec.rb": 0.20820715099989684,9157 "spec/lib/gitlab/checks/matching_merge_request_spec.rb": 1.259553287000017,9158 "spec/workers/expire_build_artifacts_worker_spec.rb": 1.1141816259998905,9159 "spec/services/ci/create_pipeline_service/pre_post_stages_spec.rb": 1.3684886760001973,9160 "spec/views/dashboard/projects/_nav.html.haml_spec.rb": 0.250980090999974,9161 "spec/models/group/crm_settings_spec.rb": 0.18390398099995764,9162 "spec/lib/gitlab/request_endpoints_spec.rb": 1.3609319469999264,9163 "spec/rubocop/cop/graphql/authorize_types_spec.rb": 0.425780641999836,9164 "spec/serializers/import/github_org_entity_spec.rb": 0.13116447099992,9165 "spec/lib/bitbucket/representation/pull_request_comment_spec.rb": 0.3637694610001745,9166 "spec/lib/bulk_imports/projects/pipelines/project_pipeline_spec.rb": 0.9143508849999762,9167 "spec/presenters/packages/pypi/simple_index_presenter_spec.rb": 0.7064903839998351,9168 "spec/workers/todos_destroyer/project_private_worker_spec.rb": 0.13054009999996197,9169 "spec/models/integrations/chat_message/merge_message_spec.rb": 0.41302515300003506,9170 "spec/workers/jira_connect/sync_deployments_worker_spec.rb": 0.9963055250000252,9171 "spec/workers/gitlab/bitbucket_server_import/stage/import_pull_requests_worker_spec.rb": 0.8398800339998616,9172 "spec/models/projects/ci_feature_usage_spec.rb": 0.5443540019998636,9173 "spec/services/protected_tags/create_service_spec.rb": 0.8117132940001284,9174 "spec/models/integrations/irker_spec.rb": 1.0731005449999884,9175 "spec/lib/api/every_api_endpoint_spec.rb": 0.5648690929999702,9176 "spec/lib/constraints/user_url_constrainer_spec.rb": 0.5432517829999597,9177 "spec/graphql/mutations/customer_relations/contacts/update_spec.rb": 0.7331733340001847,9178 "spec/initializers/pages_storage_check_spec.rb": 0.33385882100014896,9179 "spec/services/environments/reset_auto_stop_service_spec.rb": 0.7247716740000669,9180 "spec/services/export_csv/base_service_spec.rb": 0.5153818829999182,9181 "spec/lib/gitlab/ci/build/credentials/factory_spec.rb": 1.052376054999968,9182 "spec/models/webauthn_registration_spec.rb": 0.3238692119998632,9183 "spec/lib/gitlab/gitaly_client/conflict_files_stitcher_spec.rb": 0.7980703939999785,9184 "spec/rubocop/cop/gitlab/doc_url_spec.rb": 0.2853119409999181,9185 "spec/rubocop/cop/gitlab/predicate_memoization_spec.rb": 0.2625631110001905,9186 "spec/services/packages/rubygems/create_dependencies_service_spec.rb": 0.7723191540001153,9187 "spec/helpers/feature_flags_helper_spec.rb": 0.5505257120000806,9188 "spec/workers/ci/build_prepare_worker_spec.rb": 0.5646567230000983,9189 "spec/services/ci/copy_cross_database_associations_service_spec.rb": 0.45642043199995896,9190 "spec/lib/gitlab/sidekiq_signals_spec.rb": 0.26706911099995523,9191 "spec/views/shared/milestones/_top.html.haml_spec.rb": 0.6804642540000714,9192 "spec/models/concerns/stepable_spec.rb": 0.2553674419998515,9193 "spec/lib/gitlab/import_export/import_export_spec.rb": 0.2347918610000761,9194 "spec/lib/sidebars/projects/menus/security_compliance_menu_spec.rb": 0.46022568299986233,9195 "spec/graphql/resolvers/ci/runner_setup_resolver_spec.rb": 0.44662117300003956,9196 "spec/lib/gitlab/loggable_spec.rb": 0.23623344099996757,9197 "spec/rubocop/cop/destroy_all_spec.rb": 0.24030004099995494,9198 "spec/workers/metrics/global_metrics_update_worker_spec.rb": 0.2716274120000435,9199 "spec/lib/api/entities/bulk_imports/export_batch_status_spec.rb": 0.3101613119999911,9200 "spec/graphql/resolvers/group_resolver_spec.rb": 0.309733721999919,9201 "spec/support_specs/capybara_slow_finder_spec.rb": 0.2618752109999605,9202 "spec/lib/sidebars/user_profile/panel_spec.rb": 0.26146981100009725,9203 "spec/lib/gitlab/setup_helper/workhorse_spec.rb": 0.2429011320000427,9204 "spec/lib/api/entities/bulk_imports/export_status_spec.rb": 0.2819407909998972,9205 "spec/serializers/import/github_realtime_repo_serializer_spec.rb": 0.20288643100002446,9206 "spec/views/groups/show.html.haml_spec.rb": 0.4671841619999668,9207 "spec/lib/banzai/filter/ascii_doc_post_processing_filter_spec.rb": 0.19193524999991496,9208 "spec/services/ml/find_or_create_experiment_service_spec.rb": 0.4067366030001267,9209 "spec/models/jira_connect_subscription_spec.rb": 0.24456408099990767,9210 "spec/models/packages/rubygems/metadatum_spec.rb": 0.38860728199983896,9211 "spec/lib/gitlab/ci/ansi2json/result_spec.rb": 0.183054120999941,9212 "spec/rubocop/cop/avoid_becomes_spec.rb": 0.2034714310000254,9213 "spec/rubocop/cop/rspec/avoid_conditional_statements_spec.rb": 0.2044534910000948,9214 "spec/tooling/danger/config_files_spec.rb": 0.19184267099990393,9215 "spec/lib/gitlab/github_import/representation/diff_notes/discussion_id_spec.rb": 0.20550248100016688,9216 "spec/routing/directs/milestone_spec.rb": 0.18092919100013205,9217 "spec/lib/sidebars/organizations/menus/scope_menu_spec.rb": 0.1719060709999667,9218 "spec/lib/gitlab/webpack/graphql_known_operations_spec.rb": 0.2024929910000992,9219 "spec/initializers/hashie_mash_permitted_patch_spec.rb": 0.1599218409999139,9220 "spec/lib/gitlab/usage/metrics/instrumentations/snowplow_enabled_metric_spec.rb": 0.1713719609999771,9221 "spec/helpers/ssh_keys_helper_spec.rb": 0.16625711999995474,9222 "spec/graphql/types/ci/config/need_type_spec.rb": 0.15891719999990528,9223 "spec/workers/member_invitation_reminder_emails_worker_spec.rb": 0.3877644419999342,9224 "spec/lib/gitlab/render_timeout_spec.rb": 0.15936098099996343,9225 "spec/validators/html_safety_validator_spec.rb": 0.1567858509999951,9226 "spec/lib/gitlab/database/async_constraints/validators_spec.rb": 0.1556555509998816,9227 "spec/lib/gitlab/usage/metrics/instrumentations/count_ci_runners_group_type_active_metric_spec.rb": 0.24059888099986892,9228 "spec/lib/gitlab/middleware/sidekiq_web_static_spec.rb": 0.15929782000011983,9229 "spec/graphql/types/ci/runner_setup_type_spec.rb": 0.15428565999991406,9230 "spec/lib/atlassian/jira_connect/serializers/base_entity_spec.rb": 0.15463168099995528,9231 "spec/graphql/types/ci/instance_variable_type_spec.rb": 0.15442627099992023,9232 "spec/lib/gitlab/email/hook/additional_headers_interceptor_spec.rb": 0.16706546099999287,9233 "spec/initializers/remove_active_job_execute_callback_spec.rb": 0.1314085310000337,9234 "spec/lib/bulk_imports/common/extractors/graphql_extractor_spec.rb": 0.2204988810001396,9235 "spec/services/wiki_pages/base_service_spec.rb": 0.13572384000008242,9236 "spec/scripts/api/create_merge_request_note_spec.rb": 0.13054295000006277,9237 "spec/services/authorized_project_update/project_access_changed_service_spec.rb": 0.1243794810000054,9238 "spec/tooling/danger/specs/project_factory_suggestion_spec.rb": 0.13498551099996803,9239 "spec/helpers/export_helper_spec.rb": 0.13036148100013634,9240 "spec/lib/gitlab/metrics/dashboard/validator/custom_formats_spec.rb": 0.12951708099990356,9241 "spec/workers/todos_destroyer/group_private_worker_spec.rb": 0.12371160999987296,9242 "spec/lib/gitlab/ci/config/external/mapper/normalizer_spec.rb": 0.12908979999997428,9243 "spec/lib/gitlab/kubernetes/role_spec.rb": 0.132045741000183639244}9245Knapsack global time execution for tests: 19m 25s9246Pending: (Failures listed here are expected and do not affect your suite's status)9247 1) Environment#stop_with_actions! behaves like stop with playing a teardown job when matching action is defined when user is allowed to stop environment if action did finish does nothing when bridge job9248 # No reason given9249 Failure/Error: expect(environment).to receive(:available?).and_call_original9250 (#<Environment id: 98, project_id: 84, name: "environment62", created_at: "2023-08-10 12:23:30.990333072 +0000", updated_at: "2023-08-10 12:23:30.990333072 +0000", external_url: "https://env154.example.gitlab.com", environment_type: nil, state: "available", slug: "environment62", auto_stop_at: nil, auto_delete_at: nil, tier: "other", merge_request_id: nil, cluster_agent_id: nil, kubernetes_namespace: nil>).available?(*(any args))9251 expected: 1 time with any arguments9252 received: 0 times with any arguments9253 Shared Example Group: "stop with playing a teardown job" called from ./spec/models/environment_spec.rb:8919254 # ./spec/models/environment_spec.rb:694:in `block (4 levels) in <top (required)>'9255 # ./spec/spec_helper.rb:448:in `block (3 levels) in <top (required)>'9256 # ./spec/support/sidekiq_middleware.rb:18:in `with_sidekiq_server_middleware'9257 # ./spec/spec_helper.rb:439:in `block (2 levels) in <top (required)>'9258 # ./spec/spec_helper.rb:435:in `block (3 levels) in <top (required)>'9259 # ./lib/gitlab/application_context.rb:66:in `with_raw_context'9260 # ./spec/spec_helper.rb:435:in `block (2 levels) in <top (required)>'9261 # ./spec/spec_helper.rb:266:in `block (2 levels) in <top (required)>'9262 # ./spec/support/system_exit_detected.rb:7:in `block (2 levels) in <top (required)>'9263 # ./spec/support/fast_quarantine.rb:22:in `block (2 levels) in <top (required)>'9264 # ./spec/support/database/prevent_cross_joins.rb:106:in `block (3 levels) in <top (required)>'9265 # ./spec/support/database/prevent_cross_joins.rb:60:in `with_cross_joins_prevented'9266 # ./spec/support/database/prevent_cross_joins.rb:106:in `block (2 levels) in <top (required)>'9267 # ./spec/support/caching.rb:8:in `block (2 levels) in <top (required)>'9268 2) Environment#stop_with_actions! behaves like stop with playing a teardown job when matching action is defined when user is allowed to stop environment close action does not raise ActiveRecord::StaleObjectError does nothing when bridge job9269 # No reason given9270 Failure/Error: expect(environment).to receive(:available?).and_call_original9271 (#<Environment id: 100, project_id: 86, name: "environment64", created_at: "2023-08-10 12:23:33.716826186 +0000", updated_at: "2023-08-10 12:23:33.716826186 +0000", external_url: "https://env156.example.gitlab.com", environment_type: nil, state: "available", slug: "environment64", auto_stop_at: nil, auto_delete_at: nil, tier: "other", merge_request_id: nil, cluster_agent_id: nil, kubernetes_namespace: nil>).available?(*(any args))9272 expected: 1 time with any arguments9273 received: 0 times with any arguments9274 Shared Example Group: "stop with playing a teardown job" called from ./spec/models/environment_spec.rb:8919275 # ./spec/models/environment_spec.rb:694:in `block (4 levels) in <top (required)>'9276 # ./spec/spec_helper.rb:448:in `block (3 levels) in <top (required)>'9277 # ./spec/support/sidekiq_middleware.rb:18:in `with_sidekiq_server_middleware'9278 # ./spec/spec_helper.rb:439:in `block (2 levels) in <top (required)>'9279 # ./spec/spec_helper.rb:435:in `block (3 levels) in <top (required)>'9280 # ./lib/gitlab/application_context.rb:66:in `with_raw_context'9281 # ./spec/spec_helper.rb:435:in `block (2 levels) in <top (required)>'9282 # ./spec/spec_helper.rb:266:in `block (2 levels) in <top (required)>'9283 # ./spec/support/system_exit_detected.rb:7:in `block (2 levels) in <top (required)>'9284 # ./spec/support/fast_quarantine.rb:22:in `block (2 levels) in <top (required)>'9285 # ./spec/support/database/prevent_cross_joins.rb:106:in `block (3 levels) in <top (required)>'9286 # ./spec/support/database/prevent_cross_joins.rb:60:in `with_cross_joins_prevented'9287 # ./spec/support/database/prevent_cross_joins.rb:106:in `block (2 levels) in <top (required)>'9288 # ./spec/support/caching.rb:8:in `block (2 levels) in <top (required)>'9289 3) Environment#stop_with_actions! behaves like stop with playing a teardown job when matching action is defined when user is allowed to stop environment if action did finish returns a new action of the same type when build job9290 # No reason given9291 Failure/Error: expect(environment).to receive(:available?).and_call_original9292 (#<Environment id: 108, project_id: 94, name: "environment72", created_at: "2023-08-10 12:23:42.797956444 +0000", updated_at: "2023-08-10 12:23:42.797956444 +0000", external_url: "https://env164.example.gitlab.com", environment_type: nil, state: "available", slug: "environment72", auto_stop_at: nil, auto_delete_at: nil, tier: "other", merge_request_id: nil, cluster_agent_id: nil, kubernetes_namespace: nil>).available?(*(any args))9293 expected: 1 time with any arguments9294 received: 0 times with any arguments9295 Shared Example Group: "stop with playing a teardown job" called from ./spec/models/environment_spec.rb:8969296 # ./spec/models/environment_spec.rb:694:in `block (4 levels) in <top (required)>'9297 # ./spec/spec_helper.rb:448:in `block (3 levels) in <top (required)>'9298 # ./spec/support/sidekiq_middleware.rb:18:in `with_sidekiq_server_middleware'9299 # ./spec/spec_helper.rb:439:in `block (2 levels) in <top (required)>'9300 # ./spec/spec_helper.rb:435:in `block (3 levels) in <top (required)>'9301 # ./lib/gitlab/application_context.rb:66:in `with_raw_context'9302 # ./spec/spec_helper.rb:435:in `block (2 levels) in <top (required)>'9303 # ./spec/spec_helper.rb:266:in `block (2 levels) in <top (required)>'9304 # ./spec/support/system_exit_detected.rb:7:in `block (2 levels) in <top (required)>'9305 # ./spec/support/fast_quarantine.rb:22:in `block (2 levels) in <top (required)>'9306 # ./spec/support/database/prevent_cross_joins.rb:106:in `block (3 levels) in <top (required)>'9307 # ./spec/support/database/prevent_cross_joins.rb:60:in `with_cross_joins_prevented'9308 # ./spec/support/database/prevent_cross_joins.rb:106:in `block (2 levels) in <top (required)>'9309 # ./spec/support/caching.rb:8:in `block (2 levels) in <top (required)>'9310 4) Environment#stop_with_actions! behaves like stop with playing a teardown job when matching action is defined when user is allowed to stop environment close action does not raise ActiveRecord::StaleObjectError successfully plays the job even if the job was a stale object when build job9311 # No reason given9312 Failure/Error: expect(environment).to receive(:available?).and_call_original9313 (#<Environment id: 110, project_id: 96, name: "environment74", created_at: "2023-08-10 12:23:45.059359242 +0000", updated_at: "2023-08-10 12:23:45.059359242 +0000", external_url: "https://env166.example.gitlab.com", environment_type: nil, state: "available", slug: "environment74", auto_stop_at: nil, auto_delete_at: nil, tier: "other", merge_request_id: nil, cluster_agent_id: nil, kubernetes_namespace: nil>).available?(*(any args))9314 expected: 1 time with any arguments9315 received: 0 times with any arguments9316 Shared Example Group: "stop with playing a teardown job" called from ./spec/models/environment_spec.rb:8969317 # ./spec/models/environment_spec.rb:694:in `block (4 levels) in <top (required)>'9318 # ./spec/spec_helper.rb:448:in `block (3 levels) in <top (required)>'9319 # ./spec/support/sidekiq_middleware.rb:18:in `with_sidekiq_server_middleware'9320 # ./spec/spec_helper.rb:439:in `block (2 levels) in <top (required)>'9321 # ./spec/spec_helper.rb:435:in `block (3 levels) in <top (required)>'9322 # ./lib/gitlab/application_context.rb:66:in `with_raw_context'9323 # ./spec/spec_helper.rb:435:in `block (2 levels) in <top (required)>'9324 # ./spec/spec_helper.rb:266:in `block (2 levels) in <top (required)>'9325 # ./spec/support/system_exit_detected.rb:7:in `block (2 levels) in <top (required)>'9326 # ./spec/support/fast_quarantine.rb:22:in `block (2 levels) in <top (required)>'9327 # ./spec/support/database/prevent_cross_joins.rb:106:in `block (3 levels) in <top (required)>'9328 # ./spec/support/database/prevent_cross_joins.rb:60:in `with_cross_joins_prevented'9329 # ./spec/support/database/prevent_cross_joins.rb:106:in `block (2 levels) in <top (required)>'9330 # ./spec/support/caching.rb:8:in `block (2 levels) in <top (required)>'9331Finished in 19 minutes 27 seconds (files took 1 minute 19.55 seconds to load)93324315 examples, 0 failures, 4 pending9333Randomized with seed 490219334[TEST PROF INFO] Time spent in factories: 12:17.968 (61.28% of total time)9335RSpec exited with 0.9336No examples to retry, congrats!9338Running after script...9339$ echo -e "\e[0Ksection_start:`date +%s`:report_results_section[collapsed=true]\r\e[0KReport results"9344Not uploading cache ruby-gems-debian-bullseye-ruby-3.0-16 due to policy9346Uploading artifacts...9347WARNING: auto_explain/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 9348coverage/: found 5 matching artifact files and directories 9349crystalball/: found 2 matching artifact files and directories 9350deprecations/: found 10 matching artifact files and directories 9351knapsack/: found 4 matching artifact files and directories 9352rspec/: found 16 matching artifact files and directories 9353WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 9354log/*.log: found 19 matching artifact files and directories 9355WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4841631207/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com9356WARNING: Retrying... context=artifacts-uploader error=request redirected9357Uploading artifacts as "archive" to coordinator... 201 Created id=4841631207 responseStatus=201 Created token=64_etVJp9358Uploading artifacts...9359rspec/rspec-*.xml: found 1 matching artifact files and directories 9360WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4841631207/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com9361WARNING: Retrying... context=artifacts-uploader error=request redirected9362Uploading artifacts as "junit" to coordinator... 201 Created id=4841631207 responseStatus=201 Created token=64_etVJp9364Job succeeded