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

🤖 GitLab Bot 🤖
1Running with gitlab-runner 16.1.0~beta.59.g83c66823 (83c66823)2 on green-2.shared-gitlab-org.runners-manager.gitlab.com/default 8zCxmpPt, system ID: s_130a96ce9e653 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-8zcxmppt-project-278964-concurrent-0 via runner-8zcxmppt-shared-gitlab-org-1691669635-32d3a943...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 | 28.13 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_zbdxF48Downloading artifacts for detect-tests (4841630974)...49Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4841630974 responseStatus=200 OK token=64_zbdxF50Downloading artifacts for retrieve-tests-metadata (4841630985)...51Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4841630985 responseStatus=200 OK token=64_zbdxF52Downloading artifacts for setup-test-env (4841630964)...53Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4841630964 responseStatus=200 OK token=64_zbdxF55Using 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_22_28_report.json128FLAKY_RSPEC_SUITE_REPORT_PATH: rspec/flaky/report-suite.json129FLAKY_RSPEC_REPORT_PATH: rspec/flaky/all_rspec_unit_pg14_22_28_report.json130NEW_FLAKY_RSPEC_REPORT_PATH: rspec/flaky/new_rspec_unit_pg14_22_28_report.json131RSPEC_SKIPPED_TESTS_REPORT_PATH: rspec/skipped_tests-4841631224.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-4841631224.json --format RspecJunitFormatter --out rspec/rspec-4841631224.xml --fail-fast=20 --tag ~quarantine --tag ~level:background_migration --tag ~click_house -- spec/services/merge_requests/push_options_handler_service_spec.rb spec/models/repository_spec.rb spec/policies/merge_request_policy_spec.rb spec/services/ci/create_pipeline_service_spec.rb spec/workers/packages/debian/generate_distribution_worker_spec.rb spec/models/concerns/deployment_platform_spec.rb spec/models/concerns/resolvable_note_spec.rb spec/lib/gitlab/database/migrations/background_migration_helpers_spec.rb spec/lib/gitlab/url_blocker_spec.rb spec/lib/gitlab/background_migration/destroy_invalid_group_members_spec.rb spec/models/namespace_setting_spec.rb spec/lib/gitlab/email/message/repository_push_spec.rb spec/lib/gitlab/import_export/members_mapper_spec.rb spec/models/ci/processable_spec.rb spec/models/draft_note_spec.rb spec/lib/gitlab/import_export/project/object_builder_spec.rb spec/uploaders/personal_file_uploader_spec.rb spec/services/projects/move_forks_service_spec.rb spec/policies/project_member_policy_spec.rb spec/services/projects/cleanup_service_spec.rb spec/models/concerns/awardable_spec.rb spec/models/ml/candidate_spec.rb spec/lib/container_registry/client_spec.rb spec/services/milestones/transfer_service_spec.rb spec/uploaders/namespace_file_uploader_spec.rb spec/models/ci/daily_build_group_report_result_spec.rb spec/serializers/pipeline_serializer_spec.rb spec/models/packages/nuget/metadatum_spec.rb spec/models/releases/link_spec.rb spec/services/releases/update_service_spec.rb spec/services/wikis/create_attachment_service_spec.rb spec/lib/gitlab/github_import/client_spec.rb spec/lib/gitlab/suggestions/suggestion_set_spec.rb spec/lib/gitlab/auth/ldap/person_spec.rb spec/workers/merge_requests/mergeability_check_batch_worker_spec.rb spec/presenters/clusters/cluster_presenter_spec.rb spec/graphql/mutations/merge_requests/set_draft_spec.rb spec/lib/gitlab/redis/feature_flag_spec.rb spec/models/project_import_state_spec.rb spec/lib/bulk_imports/projects/pipelines/repository_bundle_pipeline_spec.rb spec/lib/sbom/package_url/argument_validator_spec.rb spec/lib/gitlab/email/handler/create_issue_handler_spec.rb spec/services/merge_requests/resolved_discussion_notification_service_spec.rb spec/lib/api/helpers/packages_helpers_spec.rb spec/finders/access_requests_finder_spec.rb spec/lib/gitlab/database/load_balancing/sidekiq_server_middleware_spec.rb spec/lib/gitlab/ci/trace/checksum_spec.rb spec/services/merge_requests/update_assignees_service_spec.rb spec/services/releases/destroy_service_spec.rb spec/lib/gitlab/ci/pipeline/duration_spec.rb spec/services/todos/destroy/confidential_issue_service_spec.rb spec/lib/gitlab/graphql/pagination/active_record_array_connection_spec.rb spec/views/shared/runners/_runner_details.html.haml_spec.rb spec/graphql/mutations/design_management/delete_spec.rb spec/lib/gitlab/analytics/cycle_analytics/request_params_spec.rb spec/lib/gitlab/ci/pipeline/chain/populate_spec.rb spec/models/packages/tag_spec.rb spec/services/labels/find_or_create_service_spec.rb spec/graphql/mutations/issues/set_escalation_status_spec.rb spec/services/git/base_hooks_service_spec.rb spec/lib/sidebars/groups/menus/settings_menu_spec.rb spec/lib/gitlab/omniauth_initializer_spec.rb spec/models/customer_relations/organization_spec.rb spec/lib/gitlab/gitaly_client/object_pool_service_spec.rb spec/workers/delete_diff_files_worker_spec.rb spec/services/members/request_access_service_spec.rb spec/models/concerns/sanitizable_spec.rb spec/lib/gitlab/quick_actions/command_definition_spec.rb spec/models/sentry_issue_spec.rb spec/services/ci/create_pipeline_service/include_spec.rb spec/lib/banzai/object_renderer_spec.rb spec/lib/gitlab/github_import/importer/note_importer_spec.rb spec/lib/gitlab/database/partitioning_spec.rb spec/services/ci/expire_pipeline_cache_service_spec.rb spec/lib/gitlab/database/migrations/timeout_helpers_spec.rb spec/tasks/gitlab/smtp_rake_spec.rb spec/initializers/00_deprecations_spec.rb spec/models/label_priority_spec.rb spec/models/snippets/repository_storage_move_spec.rb spec/lib/gitlab/lfs/client_spec.rb spec/services/users/ban_service_spec.rb spec/graphql/mutations/issues/set_locked_spec.rb spec/helpers/profiles_helper_spec.rb spec/lib/gitlab/sidekiq_middleware/skip_jobs_spec.rb spec/services/jira_import/cloud_users_mapper_service_spec.rb spec/lib/gitlab/spamcheck/result_spec.rb spec/lib/gitlab/view/presenter/base_spec.rb spec/graphql/resolvers/ci/config_resolver_spec.rb spec/lib/release_highlights/validator/entry_spec.rb spec/services/authorized_project_update/project_recalculate_per_user_service_spec.rb spec/lib/gitlab/analytics/cycle_analytics/aggregated/records_fetcher_spec.rb spec/workers/admin_email_worker_spec.rb spec/lib/gitlab/github_import/representation/note_text_spec.rb spec/lib/gitlab/url_blockers/ip_allowlist_entry_spec.rb spec/services/database/consistency_fix_service_spec.rb spec/models/integrations/custom_issue_tracker_spec.rb spec/lib/gitlab/issuable/clone/attributes_rewriter_spec.rb spec/lib/gitlab/ci/config/yaml/tags/reference_spec.rb spec/lib/gitlab/auth/o_auth/provider_spec.rb spec/lib/gitlab/reactive_cache_set_cache_spec.rb spec/services/integrations/propagate_service_spec.rb spec/lib/gitlab/otp_key_rotator_spec.rb spec/workers/ci/runners/stale_machines_cleanup_cron_worker_spec.rb spec/lib/gitlab/ci/config/entry/product/matrix_spec.rb spec/workers/ci/resource_groups/assign_resource_from_resource_group_worker_spec.rb spec/services/issuable/process_assignees_spec.rb spec/serializers/merge_request_widget_commit_entity_spec.rb spec/models/concerns/ci/track_environment_usage_spec.rb spec/workers/work_items/import_work_items_csv_worker_spec.rb spec/workers/packages/cleanup_package_file_worker_spec.rb spec/services/container_expiration_policies/cleanup_service_spec.rb spec/lib/gitlab/metrics/loose_foreign_keys_slis_spec.rb spec/models/postgresql/replication_slot_spec.rb spec/graphql/types/diff_type_spec.rb spec/helpers/graph_helper_spec.rb spec/models/preloaders/labels_preloader_spec.rb spec/workers/delete_user_worker_spec.rb spec/routing/environments_spec.rb spec/lib/gitlab/instrumentation_helper_spec.rb spec/graphql/mutations/users/set_namespace_commit_email_spec.rb spec/lib/gitlab/other_markup_spec.rb spec/services/clusters/kubernetes/fetch_kubernetes_token_service_spec.rb spec/models/preloaders/group_root_ancestor_preloader_spec.rb spec/lib/gitlab/metrics/subscribers/action_cable_spec.rb spec/services/award_emojis/base_service_spec.rb spec/workers/projects/finalize_project_statistics_refresh_worker_spec.rb spec/lib/gitlab/git/lfs_changes_spec.rb spec/rubocop/cop/rspec/avoid_test_prof_spec.rb spec/rubocop/cop/rspec/factory_bot/local_static_assignment_spec.rb spec/lib/gitlab/data_builder/wiki_page_spec.rb spec/helpers/sessions_helper_spec.rb spec/models/fork_network_member_spec.rb spec/tasks/gitlab/generate_sample_prometheus_data_rake_spec.rb spec/serializers/import/manifest_provider_repo_entity_spec.rb spec/lib/gitlab/push_options_spec.rb spec/rubocop/cop/lint/last_keyword_argument_spec.rb spec/workers/remove_unaccepted_member_invites_worker_spec.rb spec/lib/bulk_imports/groups/graphql/get_projects_query_spec.rb spec/lib/banzai/issuable_extractor_spec.rb spec/lib/atlassian/jira_connect/serializers/feature_flag_entity_spec.rb spec/lib/gitlab/ci/pipeline/chain/metrics_spec.rb spec/lib/gitlab/ci/ansi2json/state_spec.rb spec/presenters/ci/group_variable_presenter_spec.rb spec/lib/gitlab/polling_interval_spec.rb spec/lib/gitlab/kroki_spec.rb spec/serializers/group_link/group_link_entity_spec.rb spec/workers/gitlab/bitbucket_server_import/import_pull_request_notes_worker_spec.rb spec/workers/bulk_imports/relation_export_worker_spec.rb spec/services/award_emojis/copy_service_spec.rb spec/lib/gitlab/memory/upload_and_cleanup_reports_spec.rb spec/lib/error_tracking/sentry_client/token_spec.rb spec/lib/banzai/render_context_spec.rb spec/validators/sha_validator_spec.rb spec/lib/gitlab/sidekiq_middleware/pause_control/strategy_handler_spec.rb spec/services/projects/import_error_filter_spec.rb spec/serializers/clusters/kubernetes_error_entity_spec.rb spec/lib/api/entities/personal_access_token_spec.rb spec/models/concerns/faster_cache_keys_spec.rb spec/tasks/tokens_rake_spec.rb spec/lib/gitlab/ci/config/header/root_spec.rb spec/graphql/resolvers/branch_commit_resolver_spec.rb spec/models/concerns/recoverable_by_any_email_spec.rb spec/lib/gitlab/database/migrations/test_background_runner_spec.rb spec/serializers/ci/trigger_serializer_spec.rb spec/lib/gitlab/code_navigation_path_spec.rb spec/graphql/mutations/alert_management/http_integration/reset_token_spec.rb spec/services/ci/abort_pipelines_service_spec.rb spec/lib/gitlab/github_import/importer/issues_importer_spec.rb spec/initializers/mail_starttls_patch_spec.rb spec/graphql/resolvers/projects/fork_targets_resolver_spec.rb spec/workers/gitlab/github_import/stage/import_notes_worker_spec.rb spec/services/packages/rubygems/metadata_extraction_service_spec.rb spec/models/concerns/triggerable_hooks_spec.rb spec/lib/gitlab/ci/config/entry/inherit/variables_spec.rb spec/lib/gitlab/github_import/milestone_finder_spec.rb spec/lib/gitlab/kubernetes/kubectl_cmd_spec.rb spec/lib/generators/gitlab/snowplow_event_definition_generator_spec.rb spec/lib/gitlab/web_ide/config_spec.rb spec/lib/gitlab/ci/reports/coverage_report_spec.rb spec/lib/gitlab/ci/pipeline/expression/lexeme/variable_spec.rb spec/lib/gitlab/sidekiq_middleware/worker_context/client_spec.rb spec/lib/gitlab/github_import/page_counter_spec.rb spec/lib/gitlab/project_transfer_spec.rb spec/lib/gitlab/slash_commands/incident_management/incident_new_spec.rb spec/lib/gitlab/legacy_github_import/label_formatter_spec.rb spec/lib/bulk_imports/projects/pipelines/auto_devops_pipeline_spec.rb spec/services/users/validate_manual_otp_service_spec.rb spec/workers/ci/pipeline_bridge_status_worker_spec.rb spec/lib/gitlab/bitbucket_server_import/importers/repository_importer_spec.rb spec/lib/gitlab/database/partitioning/replace_table_spec.rb spec/services/analytics/cycle_analytics/stages/list_service_spec.rb spec/initializers/diagnostic_reports_spec.rb spec/graphql/resolvers/group_environment_scopes_resolver_spec.rb spec/models/concerns/safe_url_spec.rb spec/lib/sidebars/projects/menus/snippets_menu_spec.rb spec/lib/banzai/pipeline/broadcast_message_pipeline_spec.rb spec/lib/gitlab/database/migration_helpers/announce_database_spec.rb spec/services/packages/rubygems/create_gemspec_service_spec.rb spec/models/clusters/project_spec.rb spec/lib/gitlab/pagination/keyset/in_operator_optimization/strategies/record_loader_strategy_spec.rb spec/lib/gitlab/lazy_spec.rb spec/lib/sidebars/organizations/super_sidebar_panel_spec.rb spec/lib/gitlab/database/migrations/observers/query_statistics_spec.rb spec/lib/bulk_imports/projects/pipelines/container_expiration_policy_pipeline_spec.rb spec/workers/gitlab/github_import/attachments/import_merge_request_worker_spec.rb spec/services/projects/prometheus/metrics/destroy_service_spec.rb spec/graphql/types/commit_signatures/ssh_signature_type_spec.rb spec/views/admin/application_settings/network.html.haml_spec.rb spec/graphql/types/error_tracking/sentry_detailed_error_type_spec.rb spec/graphql/types/error_tracking/sentry_error_stack_trace_type_spec.rb spec/lib/gitlab/email/message/in_product_marketing/create_spec.rb spec/graphql/types/namespace_type_spec.rb spec/lib/gitlab/ci/reports/security/flag_spec.rb spec/graphql/mutations/members/bulk_update_base_spec.rb spec/graphql/types/users/autocompleted_user_type_spec.rb spec/lib/gitlab/graphql/tracers/application_context_tracer_spec.rb spec/graphql/types/issue_status_count_type_spec.rb spec/graphql/types/ci/config/include_type_enum_spec.rb spec/lib/gitlab/usage_data_counters/service_usage_data_counter_spec.rb spec/routing/organizations/organizations_controller_routing_spec.rb spec/lib/gitlab/github_import/logger_spec.rb spec/graphql/types/projects/repository_language_type_spec.rb spec/lib/gitlab/ci/reports/security/scanned_resource_spec.rb spec/graphql/types/ci/recent_failures_type_spec.rb spec/graphql/types/tree/tree_entry_type_spec.rb spec/helpers/device_registration_helper_spec.rb spec/lib/gitlab/utils/error_message_spec.rb spec/graphql/types/alert_management/http_integration_type_spec.rb spec/lib/gitlab/email/hook/disable_email_interceptor_spec.rb spec/graphql/types/ci_configuration/sast/input_type_spec.rb spec/helpers/routing/packages_helper_spec.rb spec/serializers/namespace_serializer_spec.rb spec/lib/gitlab/utils/delegator_override/error_spec.rb spec/initializers/circuitbox_spec.rb spec/lib/gitlab/kubernetes/role_binding_spec.rb spec/lib/gitlab/sidekiq_middleware/instrumentation_logger_spec.rb spec/graphql/types/packages/package_dependency_type_spec.rb spec/lib/gitlab/memory/diagnostic_reports_logger_spec.rb spec/lib/forever_spec.rb spec/graphql/resolvers/ci/runner_status_resolver_spec.rb spec/graphql/types/packages/composer/metadatum_type_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.790758313 seconds191MergeRequests::PushOptionsHandlerService192 `create` push option193 with a new branch194 behaves like a service that can create a merge request195 creates a merge request with the correct target branch196 when project has been forked197 sets the correct source and target project198 with an existing branch but no open MR199 behaves like a service that can create a merge request200 creates a merge request with the correct target branch201 when project has been forked202 sets the correct source and target project203 with an existing branch that has a merge request open204 behaves like a service that does not create a merge request205 is expected not to change `MergeRequest.count`206 behaves like with a deleted branch207 behaves like a service that does nothing208 is expected not to change `MergeRequest.count`209 is expected not to change `MergeRequest.maximum(:updated_at)`210 behaves like with the project default branch211 behaves like a service that does nothing212 is expected not to change `MergeRequest.count`213 is expected not to change `MergeRequest.maximum(:updated_at)`214 `merge_when_pipeline_succeeds` push option215 with a new branch216 adds an error to the service217 behaves like a service that does not create a merge request218 is expected not to change `MergeRequest.count`219 when coupled with the `create` push option220 behaves like a service that can create a merge request221 creates a merge request with the correct target branch222 when project has been forked223 sets the correct source and target project224 behaves like a service that can set the merge request to merge when pipeline succeeds225 sets auto_merge_enabled226 with an existing branch but no open MR227 adds an error to the service228 behaves like a service that does not create a merge request229 is expected not to change `MergeRequest.count`230 when coupled with the `create` push option231 behaves like a service that can create a merge request232 creates a merge request with the correct target branch233 when project has been forked234 sets the correct source and target project235 behaves like a service that can set the merge request to merge when pipeline succeeds236 sets auto_merge_enabled237 with an existing branch that has a merge request open238 behaves like a service that does not create a merge request239 is expected not to change `MergeRequest.count`240 behaves like a service that can set the merge request to merge when pipeline succeeds241 sets auto_merge_enabled242 behaves like with a deleted branch243 behaves like a service that does nothing244 is expected not to change `MergeRequest.count`245 is expected not to change `MergeRequest.maximum(:updated_at)`246 behaves like with the project default branch247 behaves like a service that does nothing248 is expected not to change `MergeRequest.count`249 is expected not to change `MergeRequest.maximum(:updated_at)`250 `remove_source_branch` push option251 with a new branch252 adds an error to the service253 behaves like a service that does not create a merge request254 is expected not to change `MergeRequest.count`255 when coupled with the `create` push option256 behaves like a service that can create a merge request257 creates a merge request with the correct target branch258 when project has been forked259 sets the correct source and target project260 behaves like a service that can remove the source branch when it is merged261 returns true to force_remove_source_branch?262 with an existing branch but no open MR263 adds an error to the service264 behaves like a service that does not create a merge request265 is expected not to change `MergeRequest.count`266 when coupled with the `create` push option267 behaves like a service that can create a merge request268 creates a merge request with the correct target branch269 when project has been forked270 sets the correct source and target project271 behaves like a service that can remove the source branch when it is merged272 returns true to force_remove_source_branch?273 with an existing branch that has a merge request open274 behaves like a service that does not create a merge request275 is expected not to change `MergeRequest.count`276 behaves like a service that can remove the source branch when it is merged277 returns true to force_remove_source_branch?278 behaves like with a deleted branch279 behaves like a service that does nothing280 is expected not to change `MergeRequest.count`281 is expected not to change `MergeRequest.maximum(:updated_at)`282 behaves like with the project default branch283 behaves like a service that does nothing284 is expected not to change `MergeRequest.count`285 is expected not to change `MergeRequest.maximum(:updated_at)`286 `target` push option287 with a new branch288 adds an error to the service289 behaves like a service that does not create a merge request290 is expected not to change `MergeRequest.count`291 when coupled with the `create` push option292 behaves like a service that can create a merge request293 creates a merge request with the correct target branch294 when project has been forked295 sets the correct source and target project296 behaves like a service that can set the target of a merge request297 sets the target_branch298 with an existing branch but no open MR299 adds an error to the service300 behaves like a service that does not create a merge request301 is expected not to change `MergeRequest.count`302 when coupled with the `create` push option303 behaves like a service that can create a merge request304 creates a merge request with the correct target branch305 when project has been forked306 sets the correct source and target project307 behaves like a service that can set the target of a merge request308 sets the target_branch309 with an existing branch that has a merge request open310 behaves like a service that does not create a merge request311 is expected not to change `MergeRequest.count`312 behaves like a service that can set the target of a merge request313 sets the target_branch314 behaves like with a deleted branch315 behaves like a service that does nothing316 is expected not to change `MergeRequest.count`317 is expected not to change `MergeRequest.maximum(:updated_at)`318 behaves like with the project default branch319 behaves like a service that does nothing320 is expected not to change `MergeRequest.count`321 is expected not to change `MergeRequest.maximum(:updated_at)`322 `title` push option323 with a new branch324 adds an error to the service325 behaves like a service that does not create a merge request326 is expected not to change `MergeRequest.count`327 when coupled with the `create` push option328 behaves like a service that can create a merge request329 creates a merge request with the correct target branch330 when project has been forked331 sets the correct source and target project332 behaves like a service that can set the title of a merge request333 sets the title334 with an existing branch but no open MR335 adds an error to the service336 behaves like a service that does not create a merge request337 is expected not to change `MergeRequest.count`338 when coupled with the `create` push option339 behaves like a service that can create a merge request340 creates a merge request with the correct target branch341 when project has been forked342 sets the correct source and target project343 behaves like a service that can set the title of a merge request344 sets the title345 with an existing branch that has a merge request open346 behaves like a service that does not create a merge request347 is expected not to change `MergeRequest.count`348 behaves like a service that can set the title of a merge request349 sets the title350 behaves like with a deleted branch351 behaves like a service that does nothing352 is expected not to change `MergeRequest.count`353 is expected not to change `MergeRequest.maximum(:updated_at)`354 behaves like with the project default branch355 behaves like a service that does nothing356 is expected not to change `MergeRequest.count`357 is expected not to change `MergeRequest.maximum(:updated_at)`358 `description` push option359 with a new branch360 adds an error to the service361 behaves like a service that does not create a merge request362 is expected not to change `MergeRequest.count`363 when coupled with the `create` push option364 behaves like a service that can create a merge request365 creates a merge request with the correct target branch366 when project has been forked367 sets the correct source and target project368 behaves like a service that can set the description of a merge request369 sets the description370 with an existing branch but no open MR371 adds an error to the service372 behaves like a service that does not create a merge request373 is expected not to change `MergeRequest.count`374 when coupled with the `create` push option375 behaves like a service that can create a merge request376 creates a merge request with the correct target branch377 when project has been forked378 sets the correct source and target project379 behaves like a service that can set the description of a merge request380 sets the description381 with an existing branch that has a merge request open382 behaves like a service that does not create a merge request383 is expected not to change `MergeRequest.count`384 behaves like a service that can set the description of a merge request385 sets the description386 with a multiline description387 behaves like a service that does not create a merge request388 is expected not to change `MergeRequest.count`389 behaves like a service that can set the multiline description of a merge request390 sets the multiline description391 behaves like with a deleted branch392 behaves like a service that does nothing393 is expected not to change `MergeRequest.count`394 is expected not to change `MergeRequest.maximum(:updated_at)`395 behaves like with the project default branch396 behaves like a service that does nothing397 is expected not to change `MergeRequest.count`398 is expected not to change `MergeRequest.maximum(:updated_at)`399 `draft` push option400 with a new branch401 adds an error to the service402 behaves like a service that does not create a merge request403 is expected not to change `MergeRequest.count`404 when coupled with the `create` push option405 behaves like a service that can create a merge request406 creates a merge request with the correct target branch407 when project has been forked408 sets the correct source and target project409 behaves like a service that can set the draft of a merge request410 sets the draft411 with an existing branch but no open MR412 adds an error to the service413 behaves like a service that does not create a merge request414 is expected not to change `MergeRequest.count`415 when coupled with the `create` push option416 behaves like a service that can create a merge request417 creates a merge request with the correct target branch418 when project has been forked419 sets the correct source and target project420 behaves like a service that can set the draft of a merge request421 sets the draft422 with an existing branch that has a merge request open423 behaves like a service that does not create a merge request424 is expected not to change `MergeRequest.count`425 behaves like a service that can set the draft of a merge request426 sets the draft427 draft title provided while `draft` push option is set to false428 behaves like a service that can create a merge request429 creates a merge request with the correct target branch430 when project has been forked431 sets the correct source and target project432 behaves like a service that can set the draft of a merge request433 sets the draft434 behaves like with a deleted branch435 behaves like a service that does nothing436 is expected not to change `MergeRequest.count`437 is expected not to change `MergeRequest.maximum(:updated_at)`438 behaves like with the project default branch439 behaves like a service that does nothing440 is expected not to change `MergeRequest.count`441 is expected not to change `MergeRequest.maximum(:updated_at)`442 `label` push option443 with a new branch444 adds an error to the service445 behaves like a service that does not create a merge request446 is expected not to change `MergeRequest.count`447 when coupled with the `create` push option448 behaves like a service that can create a merge request449 creates a merge request with the correct target branch450 when project has been forked451 sets the correct source and target project452 behaves like a service that can change labels of a merge request453 changes label count454 with an existing branch but no open MR455 adds an error to the service456 behaves like a service that does not create a merge request457 is expected not to change `MergeRequest.count`458 when coupled with the `create` push option459 behaves like a service that can create a merge request460 creates a merge request with the correct target branch461 when project has been forked462 sets the correct source and target project463 behaves like a service that can change labels of a merge request464 changes label count465 with an existing branch that has a merge request open466 behaves like a service that does not create a merge request467 is expected not to change `MergeRequest.count`468 behaves like a service that can change labels of a merge request469 changes label count470 behaves like with a deleted branch471 behaves like a service that does nothing472 is expected not to change `MergeRequest.count`473 is expected not to change `MergeRequest.maximum(:updated_at)`474 behaves like with the project default branch475 behaves like a service that does nothing476 is expected not to change `MergeRequest.count`477 is expected not to change `MergeRequest.maximum(:updated_at)`478 `unlabel` push option479 with a new branch480 adds an error to the service481 behaves like a service that does not create a merge request482 is expected not to change `MergeRequest.count`483 when coupled with the `create` push option484 behaves like a service that can create a merge request485 creates a merge request with the correct target branch486 when project has been forked487 sets the correct source and target project488 behaves like a service that can change labels of a merge request489 changes label count490 with an existing branch but no open MR491 adds an error to the service492 behaves like a service that does not create a merge request493 is expected not to change `MergeRequest.count`494 when coupled with the `create` push option495 behaves like a service that can create a merge request496 creates a merge request with the correct target branch497 when project has been forked498 sets the correct source and target project499 behaves like a service that can change labels of a merge request500 changes label count501 with an existing branch that has a merge request open502 behaves like a service that does not create a merge request503 is expected not to change `MergeRequest.count`504 behaves like a service that can change labels of a merge request505 changes label count506 behaves like with a deleted branch507 behaves like a service that does nothing508 is expected not to change `MergeRequest.count`509 is expected not to change `MergeRequest.maximum(:updated_at)`510 behaves like with the project default branch511 behaves like a service that does nothing512 is expected not to change `MergeRequest.count`513 is expected not to change `MergeRequest.maximum(:updated_at)`514 `milestone` push option515 with a valid milestone516 with a new branch517 adds an error to the service518 behaves like a service that does not create a merge request519 is expected not to change `MergeRequest.count`520 when coupled with the `create` push option521 behaves like a service that can create a merge request522 creates a merge request with the correct target branch523 when project has been forked524 sets the correct source and target project525 behaves like a service that can set the milestone of a merge request526 sets the milestone527 with an existing branch but no open MR528 adds an error to the service529 behaves like a service that does not create a merge request530 is expected not to change `MergeRequest.count`531 when coupled with the `create` push option532 behaves like a service that can create a merge request533 creates a merge request with the correct target branch534 when project has been forked535 sets the correct source and target project536 behaves like a service that can set the milestone of a merge request537 sets the milestone538 with an existing branch that has a merge request open539 behaves like a service that does not create a merge request540 is expected not to change `MergeRequest.count`541 behaves like a service that can set the milestone of a merge request542 sets the milestone543 behaves like with a deleted branch544 behaves like a service that does nothing545 is expected not to change `MergeRequest.count`546 is expected not to change `MergeRequest.maximum(:updated_at)`547 behaves like with the project default branch548 behaves like a service that does nothing549 is expected not to change `MergeRequest.count`550 is expected not to change `MergeRequest.maximum(:updated_at)`551 with invalid milestone552 behaves like a service that can set the milestone of a merge request553 sets the milestone554 with an ancestor milestone555 with immediate parent milestone556 behaves like a service that can create a merge request557 creates a merge request with the correct target branch558 when project has been forked559 sets the correct source and target project560 behaves like a service that can set the milestone of a merge request561 sets the milestone562 with multi-level ancestor milestone563 behaves like a service that can create a merge request564 creates a merge request with the correct target branch565 when project has been forked566 sets the correct source and target project567 behaves like a service that can set the milestone of a merge request568 sets the milestone569 `assign` push option570 behaves like with a new branch571 adds an error to the service572 behaves like a service that does not create a merge request573 is expected not to change `MergeRequest.count`574 behaves like when coupled with the `create` push option575 behaves like a service that can create a merge request576 creates a merge request with the correct target branch577 when project has been forked578 sets the correct source and target project579 behaves like a service that can change assignees of a merge request580 changes assignee count581 behaves like with an existing branch but no open MR582 adds an error to the service583 behaves like a service that does not create a merge request584 is expected not to change `MergeRequest.count`585 behaves like when coupled with the `create` push option586 behaves like a service that can create a merge request587 creates a merge request with the correct target branch588 when project has been forked589 sets the correct source and target project590 behaves like a service that can change assignees of a merge request591 changes assignee count592 behaves like with an existing branch that has a merge request open in foss593 behaves like a service that does not create a merge request594 is expected not to change `MergeRequest.count`595 behaves like a service that can change assignees of a merge request596 changes assignee count597 behaves like with a deleted branch598 behaves like a service that does nothing599 is expected not to change `MergeRequest.count`600 is expected not to change `MergeRequest.maximum(:updated_at)`601 behaves like with the project default branch602 behaves like a service that does nothing603 is expected not to change `MergeRequest.count`604 is expected not to change `MergeRequest.maximum(:updated_at)`605 when passing in usernames606 behaves like with an existing branch that has a merge request open in foss607 behaves like a service that does not create a merge request608 is expected not to change `MergeRequest.count`609 behaves like a service that can change assignees of a merge request610 changes assignee count611 `unassign` push option612 behaves like with a new branch613 adds an error to the service614 behaves like a service that does not create a merge request615 is expected not to change `MergeRequest.count`616 behaves like when coupled with the `create` push option617 behaves like a service that can create a merge request618 creates a merge request with the correct target branch619 when project has been forked620 sets the correct source and target project621 behaves like a service that can change assignees of a merge request622 changes assignee count623 behaves like with an existing branch but no open MR624 adds an error to the service625 behaves like a service that does not create a merge request626 is expected not to change `MergeRequest.count`627 behaves like when coupled with the `create` push option628 behaves like a service that can create a merge request629 creates a merge request with the correct target branch630 when project has been forked631 sets the correct source and target project632 behaves like a service that can change assignees of a merge request633 changes assignee count634 behaves like with an existing branch that has a merge request open in foss635 behaves like a service that does not create a merge request636 is expected not to change `MergeRequest.count`637 behaves like a service that can change assignees of a merge request638 changes assignee count639 behaves like with a deleted branch640 behaves like a service that does nothing641 is expected not to change `MergeRequest.count`642 is expected not to change `MergeRequest.maximum(:updated_at)`643 behaves like with the project default branch644 behaves like a service that does nothing645 is expected not to change `MergeRequest.count`646 is expected not to change `MergeRequest.maximum(:updated_at)`647 when passing in usernames648 behaves like with an existing branch that has a merge request open in foss649 behaves like a service that does not create a merge request650 is expected not to change `MergeRequest.count`651 behaves like a service that can change assignees of a merge request652 changes assignee count653 multiple pushed branches654 creates a merge request per branch655 when there are too many pushed branches656 records an error657 no push options658 behaves like a service that does nothing659 is expected not to change `MergeRequest.count`660 is expected not to change `MergeRequest.maximum(:updated_at)`661 no user662 records an error663 unauthorized user664 records an error665 handling unexpected exceptions666 records an error667 writes to Gitlab::AppLogger668 when target is not a valid branch name669 records an error670 when user does not have access to target project671 records an error672 when MRs are not enabled673 records an error674 when MR has ActiveRecord errors675 adds the error to its errors property676Repository677 #branch_names_contains678 is expected to include "master"679 is expected not to include "feature"680 is expected not to include "fix"681 when limit is provided682 is expected to contain exactly "'test'"683 when storage is broken684 raises a storage error685 #tag_names_contains686 is expected to include "v1.1.0"687 is expected not to include "v1.0.0"688 when limit is provided689 is expected to contain exactly "v1.1.0"690 #tags_sorted_by691 name_desc692 is expected to eq ["v1.1.0", "v1.0.0"]693 name_asc694 is expected to eq ["v1.0.0", "v1.1.0"]695 with pagination696 with limit697 is expected to eq ["v1.0.0"]698 with page token and limit699 is expected to eq ["v1.1.0"]700 with page token only701 raises an ArgumentError702 with negative limit703 returns all tags704 with unknown token705 raises an ArgumentError706 updated707 desc708 is expected to eq ["v0.0.0", "v1.1.0", "v1.0.0"]709 asc710 is expected to eq ["v1.0.0", "v1.1.0", "v0.0.0"]711 annotated tag pointing to a blob712 is expected to eq ["v1.0.0", "v1.1.0", "annotated-tag"]713 semantic versioning sort714 desc715 is expected to eq ["v10.0.0", "v2.0.0", "v1.1.0", "v1.0.0"]716 asc717 is expected to eq ["v1.0.0", "v1.1.0", "v2.0.0", "v10.0.0"]718 unknown option719 is expected to eq ["v1.0.0", "v1.1.0"]720 #ref_exists?721 when ref exists722 returns true723 when ref does not exist724 returns false725 when ref format is incorrect726 returns false727 #search_branch_names728 returns matching branch names729 #list_last_commits_for_tree730 returns the last commits for every entry in the current path731 returns the last commits for every entry in the current path starting from the offset732 returns a limited number of last commits for every entry in the current path starting from the offset733 returns an empty hash when offset is out of bounds734 with a commit with invalid UTF-8 path735 does not raise an error736 #last_commit_for_path737 is expected to eq "c1acaa58bbcbc3eafe538cb8274ba387047b69f8"738 when storage is broken739 raises a storage error740 with filename with pathspec characters741 returns a commit SHA742 #last_commit_id_for_path743 returns last commit id for a given path744 caches last commit id for a given path745 when storage is broken746 raises a storage error747 with filename with pathspec characters748 returns a commit SHA749 #commits750 when neither the all flag nor a ref are specified751 returns every commit from default branch752 when ref is passed753 returns every commit from the specified ref754 when all755 returns every commit from the repository756 with path757 sets follow when it is a single path758 does not set follow when it is multiple paths759 without path760 does not set follow761 when include_referenced_by is passed762 when commit has references763 returns commits with referenced_by excluding that match the patterns764 when matching multiple references765 returns commits with referenced_by that match the patterns766 when 'author' is set767 returns commits from that author768 doesn't returns commits from an unknown author769 when 'all' flag is set770 returns every commit from the repository771 when 'order' flag is set772 passes order option to perform the query773 #new_commits774 when there are no new commits775 returns an empty array776 when new commits are found777 returns the commits778 #commits_by779 finds each commit780 returns only Commit instances781 when some commits are not found782 returns only found commits783 when no oids are passed784 does not call #batch_by_oid785 #commits_between786 delegates to Gitlab::Git::Commit#between, returning decorated commits787 defaults to no limit788 #find_commits_by_message789 returns commits with messages containing a given string790 when query is in UPCASE791 is case insensitive792 when message has surrounding spaces793 removes spaces and returns commits by message794 when storage is broken795 raises a storage error796 #list_commits_by797 returns commits when no filter is applied (FAILED - 1)7991st Try error in ./spec/models/repository_spec.rb:602:800expected ["59e0c7855e68453eaeebe947042d29ed7584f0e0", "a9b5fde0770621b3cba53b183103f8cbe5bee55e"] to include "b83d6e391c22777fca1ed3012fce84f633d7fed0" and "498214de67004b1da3d820901307bed2a68a8ef6"802RSpec::Retry: 2nd try ./spec/models/repository_spec.rb:602803 returns commits with messages containing a given string804 is case insensitive805 returns commits based in before filter806 returns commits based in after filter807 returns commits based in author filter808 when storage is broken809 raises a storage error810 #blob_at811 blank sha812 is expected to be nil813 regular blob814 is expected to be an instance of Blob815 readme blob not on HEAD816 is expected to be an instance of Blob817 #merged_to_root_ref?818 merged branch without ff819 is expected to be truthy820 merged with ff821 is expected to be truthy822 not merged branch823 is expected to be falsey824 default branch825 is expected to be falsey826 non merged branch827 is expected to be falsey828 non existent branch829 is expected to be nil830 when root reference is empty831 is expected to be nil832 #root_ref_sha833 is expected to eq "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3"834 #merged_branch_names835 is expected to eq #<Set: {"definitely_merged"}>836 is expected to be a kind of Set837 cache expiry838 is expired when the branches caches are expired839 is expired when the repository caches are expired840 cache is empty841 is expected to eq #<Set: {"definitely_merged"}>842 cache values843 writes the values to redis844 matches the supplied hash845 cache is not empty846 is expected to eq #<Set: {"definitely_merged"}>847 doesn't fetch from the disk848 cache is partially complete849 is expected to eq #<Set: {"definitely_merged"}>850 does fetch from the disk851 requested branches array is empty852 is expected to eq #<Set: {"definitely_merged"}>853 #can_be_merged?854 mergeable branches855 is expected to be truthy856 non-mergeable branches without conflict sides missing857 is expected to be falsey858 non-mergeable branches with conflict sides missing859 is expected to be falsey860 submodule changes that confuse rugged861 is expected to be falsey862 #commit863 when ref exists864 returns commit object865 when ref does not exist866 returns nil867 when ref is not specified868 is using a root ref869 when ref is not valid870 when preceding tree element exists871 returns nil872 when preceding tree element does not exist873 returns nil874 #create_dir875 commits a change that creates a new directory876 when committing to another project877 creates a fork and commit to the forked project878 when an author is specified879 uses the given email/name to set the commit's author880 #create_file881 commits new file successfully882 creates new file and dir when file_path has a forward slash883 respects the autocrlf setting884 when an author is specified885 uses the given email/name to set the commit's author886 #update_file887 updates file successfully888 updates filename successfully889 when an author is specified890 uses the given email/name to set the commit's author891 #move_dir_files892 move directory files successfully893 skips commit with same path894 #delete_file895 removes file successfully896 when an author is specified897 uses the given email/name to set the commit's author (FAILED - 2)8991st Try error in ./spec/models/repository_spec.rb:1122:900A file with this name doesn't exist902RSpec::Retry: 2nd try ./spec/models/repository_spec.rb:1122903 search_files_by_content904 is expected to be a kind of Array905 regex-escapes the query string906 properly handles an unmatched parenthesis907 properly handles when query is not present908 properly handles query when repo is empty909 when storage is broken910 raises a storage error911 result912 is expected to be a kind of String913 is expected to eq "master:CHANGELOG\u0000190\u0000 - Feature: Replace teams with group membership\n"914 search_files_by_name915 returns result916 ignores leading slashes917 properly handles when query is only slashes918 properly handles when query is not present919 properly handles query when repo is empty920 when storage is broken921 raises a storage error922 #search_files_by_wildcard_path923 when specifying a normal path924 returns the path925 when specifying a wildcard path926 returns files matching the path in the root folder927 when specifying a wildcard path for all928 returns all matching files in all folders929 when specifying a path to subfolders using two asterisks and a slash930 returns all files matching the path931 when specifying a wildcard path to subfolder with just two asterisks932 returns all files in the matching path933 when specifying a wildcard path to subfolder with one asterisk934 returns all files in the matching path935 when specifying a wildcard path for an unknown number of subfolder levels936 returns all matched files in all subfolders937 when specifying a wildcard path to one level of subfolders938 returns all matched files in one subfolder939 when sending regexp940 ignores the regexp and returns an empty array941 when sending another ref942 returns an empty array943 #fetch_as_mirror944 fetches the URL without creating a remote945 with http_host provided946 fetches the URL with resolved_address value947 #fetch_ref948 when storage is broken949 raises a storage error950 #get_raw_changes951 with non-UTF8 bytes in paths952 returns the changes953 #create_ref954 redirects the call to write_ref955 #changelog956 accepts changelog957 accepts news instead of changelog958 accepts history instead of changelog959 accepts changes instead of changelog960 is case-insensitive961 #license_blob962 handles when HEAD points to non-existent ref963 looks in the root_ref only964 detects license file with no recognizable open-source license content965 detects 'LICENSE'966 detects 'LICENCE'967 detects 'LiCensE'968 detects 'LICENSE.md'969 detects 'LICENSE.foo'970 detects 'COPYING'971 detects 'COPYING.md'972 #license_key973 returns nil when no license is detected974 returns nil when the repository does not exist975 returns other when the content is not recognizable976 returns nil when the commit SHA does not exist977 returns nil when master does not exist978 returns the license key979 #license980 returns nil when no license is detected981 returns nil when the repository does not exist982 returns other when the content is not recognizable983 returns the license984 #gitlab_ci_yml985 returns valid file986 returns nil if not exists987 returns nil for empty repository988 #ambiguous_ref?989 when ref is ambiguous990 is true991 when ref is not ambiguous992 is false993 #has_ambiguous_refs?994 branch_names: nil, tag_names: nil, result: false995 is expected to eq false996 branch_names: [], tag_names: [], result: false997 is expected to eq false998 branch_names: ["a", "b"], tag_names: [], result: false999 is expected to eq false1000 branch_names: [], tag_names: ["c", "d"], result: false1001 is expected to eq false1002 branch_names: ["a", "b"], tag_names: ["c", "d"], result: false1003 is expected to eq false1004 branch_names: ["a/b"], tag_names: ["c/d"], result: false1005 is expected to eq false1006 branch_names: ["a", "b"], tag_names: ["c", "d", "a/z"], result: true1007 is expected to eq true1008 branch_names: ["a", "b", "c/z"], tag_names: ["c", "d"], result: true1009 is expected to eq true1010 branch_names: ["a/b/z"], tag_names: ["a/b"], result: false1011 is expected to eq false1012 branch_names: ["a/b/z"], tag_names: ["a/b", "a"], result: true1013 is expected to eq true1014 branch_names: ["ab"], tag_names: ["abc/d", "a", "b"], result: false1015 is expected to eq false1016 #expand_ref1017 when ref is not tag or branch name1018 returns nil1019 when ref is tag name1020 returns the tag ref1021 when ref is branch name1022 returns the branch ref1023 #add_branch1024 calls Gitaly's OperationService1025 creates_the_branch1026 expires branches cache1027 with a non-existing target1028 returns false and doesn't create the branch1029 when expire_cache: false1030 does not expire branches cache1031 #exists?1032 returns true when a repository exists1033 returns false if no full path can be constructed1034 with broken storage1035 raises a storage error1036 behaves like asymmetric cached method1037 asymmetric caching1038 when it returns true1039 caches the output in RequestStore1040 caches the output in RepositoryCache1041 when it returns false1042 caches the output in RequestStore1043 does NOT cache the output in RepositoryCache1044 #has_visible_content?1045 delegates to raw_repository when true1046 delegates to raw_repository when false1047 behaves like asymmetric cached method1048 asymmetric caching1049 when it returns true1050 caches the output in RequestStore1051 caches the output in RepositoryCache1052 when it returns false1053 caches the output in RequestStore1054 does NOT cache the output in RepositoryCache1055 #branch_exists?1056 delegates to branch_names when the cache is empty1057 uses redis set caching when the cache is filled1058 #tag_exists?1059 delegates to tag_names when the cache is empty1060 uses redis set caching when the cache is filled1061 #branch_names1062 gets cached across Repository instances1063 #empty?1064 returns true for an empty repository1065 returns false for a non-empty repository1066 caches the output1067 #blobs_at1068 returns empty array for an empty repository1069 returns blob array for a non-empty repository1070 when Gitaly returns NoRepository1071 returns empty array1072 #root_ref1073 returns a branch name1074 caches the output1075 returns nil if the repository does not exist1076 behaves like asymmetric cached method1077 asymmetric caching1078 when it returns true1079 caches the output in RequestStore1080 caches the output in RepositoryCache1081 when it returns false1082 caches the output in RequestStore1083 does NOT cache the output in RepositoryCache1084 #expire_root_ref_cache1085 expires the root reference cache1086 #expire_branch_cache1087 expires the cache for all branches1088 expires the cache for all branches when the root branch is given1089 expires the cache for a specific branch1090 #expire_emptiness_caches1091 expires the caches for an empty repository1092 does not expire the cache for a non-empty repository1093 expires the memoized repository cache1094 skip_merges option1095 is expected not to include "e56497bb5f03a90a51293fc6d516788730953899"1096 #merge1097 merges the code and returns the commit id1098 sets the `in_progress_merge_commit_sha` flag for the given merge request1099 removes carriage returns from commit message1100 #merge_to_branch1101 merges two branches and returns the merge commit id1102 does not merge if target branch has been changed1103 #merge_to_ref1104 writes merge of source SHA and first parent ref to MR merge_ref_path1105 #ff_merge1106 merges the code and return the commit id1107 sets the `in_progress_merge_commit_sha` flag for the given merge request1108 does not merge if target branch has been changed1109 #rebase1110 executes the new Gitaly RPC1111 behaves like a method that can rebase successfully1112 returns the rebase commit sha1113 sets the `rebase_commit_sha` for the given merge request1114 rolling back the `rebase_commit_sha`1115 does not rollback when there are no errors1116 does rollback when a PreReceiveError is encountered in the second step1117 does rollback when a GitError is encountered in the second step1118 #revert1119 when there is a conflict1120 raises an error1121 when commit was already reverted1122 raises an error1123 when commit can be reverted1124 reverts the changes1125 reverting a merge commit1126 reverts the changes1127 #cherry_pick1128 when there is a conflict1129 raises an error1130 when commit was already cherry-picked1131 raises an error1132 when commit can be cherry-picked1133 cherry-picks the changes1134 cherry-picking a merge commit1135 cherry-picks the changes1136 #before_delete1137 when a repository does not exist1138 does not flush caches that depend on repository data1139 flushes the tags cache1140 flushes the branches cache1141 flushes the root ref cache1142 flushes the emptiness caches1143 flushes the exists cache1144 when a repository exists1145 flushes the tags cache1146 flushes the branches cache1147 flushes the root ref cache1148 flushes the emptiness caches1149 #before_change_head1150 flushes the branch cache1151 flushes the root ref cache1152 #after_change_head1153 flushes the method caches1154 calls after_repository_change_head on container1155 #expires_caches_for_tags1156 flushes the cache1157 #before_push_tag1158 logs an event1159 #after_push_commit1160 expires statistics caches1161 #after_create_branch1162 expires the branch caches1163 does not expire the branch caches when specified1164 #after_remove_branch1165 expires the branch caches1166 does not expire the branch caches when specified1167 #lookup1168 uses the lookup cache1169 returns the correct value1170 #after_create1171 calls expire_status_cache1172 logs an event1173 #expire_status_cache1174 flushes the exists cache1175 flushes the root ref cache1176 flushes the emptiness caches1177 #copy_gitattributes1178 returns true with a valid ref1179 returns false with an invalid ref1180 #before_remove_tag1181 flushes the tag cache1182 #branch_count1183 returns the number of branches1184 #tag_count1185 returns the number of tags1186 #expire_branches_cache1187 expires the cache1188 #expire_protected_branches_cache1189 expires the cache1190 when repository does not have a project1191 does not expire the cache1192 #expire_tags_cache1193 expires the cache1194 #add_tag1195 with a valid target1196 creates the tag1197 returns a Gitlab::Git::Tag object1198 with an invalid target1199 returns false1200 #rm_branch1201 removes a branch1202 when pre hooks failed1203 gets an error and does not delete the branch1204 #rm_tag1205 removes a tag1206 #find_tag1207 finds a tag with specified name by performing FindTag request1208 does not perform Gitaly call when tags are preloaded1209 returns nil when tag does not exists1210 #avatar1211 returns nil if repo does not exist1212 returns the first avatar file found in the repository1213 caches the output1214 #expire_exists_cache1215 expires the cache1216 expires the request store cache1217 #xcode_project?1218 when the root contains a *.xcodeproj directory1219 returns true1220 when the root contains a *.xcworkspace directory1221 returns true1222 when the root contains no Xcode config directory1223 returns false1224 #contribution_guide1225 returns and caches the output1226 #gitignore1227 returns and caches the output1228 #readme1229 with a non-existing repository1230 returns nil1231 with an existing repository1232 when no README exists1233 returns nil1234 #readme_path1235 with a non-existing repository1236 returns nil1237 with an existing repository1238 when no README exists1239 returns nil1240 when a README exists1241 returns the README1242 caches the response1243 #expire_statistics_caches1244 expires the caches1245 #expire_all_method_caches1246 expires the caches of all methods1247 all cache_method definitions are in the lists of method caches1248 #file_on_head1249 with a non-existing repository1250 returns nil1251 with a repository that has no blobs1252 returns nil1253 with an existing repository1254 returns a Gitlab::Git::Tree1255 #head_tree1256 with an existing repository1257 returns a Tree1258 with a non-existing repository1259 returns nil1260 behaves like #tree1261 using a non-existing repository1262 is expected to be nil1263 when path is defined1264 is expected to be nil1265 using an existing repository1266 is expected to be an instance of Tree1267 when different sha is set1268 is expected to be an instance of Tree1269 when recursive is true1270 is expected to be an instance of Tree1271 with pagination parameters1272 is expected to be an instance of Tree1273 #tree? with Rugged enabled1274 behaves like #tree1275 using a non-existing repository1276 is expected to be nil1277 when path is defined1278 is expected to be nil1279 using an existing repository1280 is expected to be an instance of Tree1281 when different sha is set1282 is expected to be an instance of Tree1283 when recursive is true1284 is expected to be an instance of Tree1285 with pagination parameters1286 is expected to be an instance of Tree1287 #size1288 with a non-existing repository1289 returns 01290 with an existing repository1291 returns the repository size as a Float1292 #recent_objects_size1293 with a non-existing repository1294 returns 01295 with an existing repository1296 returns the repository recent_objects_size as a Float1297 #local_branches1298 returns the local branches1299 #commit_count1300 with a non-existing repository1301 returns 01302 with an existing repository1303 returns the commit count1304 #commit_count_for_ref1305 with a non-existing repository1306 returns 01307 with empty repository1308 returns 01309 when searching for the root ref1310 returns the same count as #commit_count1311 #refresh_method_caches1312 refreshes the caches of the given types1313 #gitlab_ci_yml_for1314 when there is a .gitlab-ci.yml at the commit1315 returns the content1316 when there is no .gitlab-ci.yml at the commit1317 returns nil1318 #changelog_config1319 when there is a changelog_config_path at the commit1320 returns the content1321 when there is no changelog_config_path at the commit1322 returns nil1323 #route_map_for1324 when there is a .gitlab/route-map.yml at the commit1325 returns the content1326 when there is no .gitlab/route-map.yml at the commit1327 returns nil1328 #ancestor? with Gitaly enabled1329 behaves like #ancestor?1330 is an ancestor1331 is not an ancestor1332 returns false on nil-values1333 returns false for invalid commit IDs1334 caching1335 only calls out to Gitaly once1336 calls out to Gitaly again after expiration1337 returns the value from the request store1338 returns the value from the redis cache1339 #ancestor? with Rugged enabled1340 calls out to the Rugged implementation1341 behaves like #ancestor?1342 is an ancestor1343 is not an ancestor1344 returns false on nil-values1345 returns false for invalid commit IDs1346 #archive_metadata1347 with hashed storage disabled1348 uses the project path to generate the filename1349 with hashed storage enabled1350 uses the project path to generate the filename1351 commit cache1352 caches based on SHA1353 caches nil values1354 #raw_repository1355 returns a Gitlab::Git::Repository representation of the repository1356 with a wiki repository1357 creates a Gitlab::Git::Repository with the proper attributes1358 #contributors1359 returns the array of Gitlab::Contributor for the repository1360 order_by email1361 asc1362 returns all the contributors ordered by email asc case insensitive1363 desc1364 returns all the contributors ordered by email desc case insensitive1365 order_by name1366 asc1367 returns all the contributors ordered by name asc case insensitive1368 desc1369 returns all the contributors ordered by name desc case insensitive1370 order_by commits1371 asc1372 returns all the contributors ordered by commits asc1373 desc1374 returns all the contributors ordered by commits desc1375 invalid ordering1376 returns the contributors unsorted1377 invalid sorting1378 returns the contributors unsorted1379 #merge_base1380 only makes one gitaly call1381 #create_if_not_exists1382 creates the repository if it did not exist1383 returns true1384 calls out to the repository client to create a repo1385 creates a repository with a default branch name1386 it does nothing if the repository already existed1387 does nothing if the repository already existed1388 returns nil1389 when the repository exists but the cache is not up to date1390 does not raise errors1391 returns nil1392 #create_from_bundle1393 calls out to the raw_repository to create a repo from bundle1394 calls after_create1395 when exception is raised1396 after_create is not executed1397 #blobs_metadata1398 returns blob metadata in batch for HEAD1399 returns blob metadata for a specified ref1400 performs a single gitaly call1401 #project1402 returns the project for a project snippet1403 returns nil for a personal snippet1404 returns the project for a project wiki1405 returns the container if it is a project1406 returns nil if the container is not a project1407 #submodule_links1408 returns an instance of Gitlab::SubmoduleLinks1409 #lfs_enabled?1410 for a project repository1411 returns true when LFS is enabled1412 returns false when LFS is disabled1413 for a project wiki repository1414 delegates to the project1415 for a project snippet repository1416 returns false when LFS is enabled1417 for a personal snippet repository1418 returns false when LFS is enabled1419 for a design repository1420 returns true when LFS is enabled1421 returns false when LFS is disabled1422 .pick_storage_shard1423 when expire is false1424 does not expire existing repository storage value1425 when expire is true1426 expires existing repository storage value1427 #change_head1428 when the branch exists1429 returns truthy1430 does not call container.after_change_head_branch_does_not_exist1431 calls repository hooks1432 copies the gitattributes1433 reloads the default branch1434 when the branch does not exist1435 returns falsey1436 calls container.after_change_head_branch_does_not_exist1437 does not call repository hooks1438 #remove_prohibited_branches1439 when prohibited branch exists1440 deletes prohibited branch1441 when branch name is 40-characters long but not hexadecimal1442 returns without removing the branch1443 when branch name is hexadecimal1444 when branch name is less than 40-characters long1445 returns without removing the branch1446 when branch name is more than 40-characters long1447 returns without removing the branch1448 when prohibited branch does not exist1449 returns without removing the branch1450 when raw repository does not exist1451 returns without removing the branch1452MergeRequestPolicy1453 when user is a direct project member1454 when merge request is public1455 and user is author1456 and the user is a guest1457 is expected to be allowed :update_merge_request1458 is expected to be allowed :reopen_merge_request1459 is expected to be allowed :approve_merge_request1460 is expected to be disallowed :reset_merge_request_approvals1461 and the user is a bot1462 is expected to be allowed :reset_merge_request_approvals1463 when merge requests have been disabled1464 the author1465 behaves like a denied user1466 cannot create_merge_request_in1467 cannot create_merge_request_from1468 cannot read_merge_request1469 cannot update_merge_request1470 cannot create_todo1471 cannot approve_merge_request1472 cannot create_note1473 cannot update_subscription1474 a guest1475 behaves like a denied user1476 cannot create_merge_request_in1477 cannot create_merge_request_from1478 cannot read_merge_request1479 cannot update_merge_request1480 cannot create_todo1481 cannot approve_merge_request1482 cannot create_note1483 cannot update_subscription1484 a developer1485 behaves like a denied user1486 cannot create_merge_request_in1487 cannot create_merge_request_from1488 cannot read_merge_request1489 cannot update_merge_request1490 cannot create_todo1491 cannot approve_merge_request1492 cannot create_note1493 cannot update_subscription1494 a bot1495 is expected to be disallowed :reset_merge_request_approvals1496 when merge requests are private1497 the author1498 behaves like a denied user1499 cannot create_merge_request_in1500 cannot create_merge_request_from1501 cannot read_merge_request1502 cannot update_merge_request1503 cannot create_todo1504 cannot approve_merge_request1505 cannot create_note1506 cannot update_subscription1507 a developer1508 behaves like a user with full access1509 can create_merge_request_in1510 can create_merge_request_from1511 can read_merge_request1512 can update_merge_request1513 can create_todo1514 can approve_merge_request1515 can create_note1516 can update_subscription1517 a bot1518 is expected to be allowed :reset_merge_request_approvals1519 when merge request is unlocked1520 allows author to reopen merge request1521 allows developer to reopen merge request1522 prevents guest from reopening merge request1523 when merge request is locked1524 prevents author from reopening merge request1525 prevents developer from reopening merge request1526 prevents guests from reopening merge request1527 when the user is project member, with at least guest access1528 can create a note1529 with external authorization enabled1530 can read the issue iid without accessing the external service1531 when user is an inherited member from the parent group1532 when project is public1533 the merge request author1534 is expected to be allowed :approve_merge_request1535 is expected to be disallowed :reset_merge_request_approvals1536 a bot1537 is expected to be allowed :approve_merge_request1538 is expected to be allowed :reset_merge_request_approvals1539 and merge requests are private1540 a guest1541 behaves like a denied user1542 cannot create_merge_request_in1543 cannot create_merge_request_from1544 cannot read_merge_request1545 cannot update_merge_request1546 cannot create_todo1547 cannot approve_merge_request1548 cannot create_note1549 cannot update_subscription1550 a reporter1551 behaves like a user with reporter access1552 policy: :create_merge_request_in, is_allowed: true1553 is expected to be allowed :create_merge_request_in1554 policy: :read_merge_request, is_allowed: true1555 is expected to be allowed :read_merge_request1556 policy: :create_todo, is_allowed: true1557 is expected to be allowed :create_todo1558 policy: :create_note, is_allowed: true1559 is expected to be allowed :create_note1560 policy: :update_subscription, is_allowed: true1561 is expected to be allowed :update_subscription1562 policy: :create_merge_request_from, is_allowed: false1563 is expected to be disallowed :create_merge_request_from1564 policy: :approve_merge_request, is_allowed: false1565 is expected to be disallowed :approve_merge_request1566 policy: :update_merge_request, is_allowed: false1567 is expected to be disallowed :update_merge_request1568 a developer1569 behaves like a user with full access1570 can create_merge_request_in1571 can create_merge_request_from1572 can read_merge_request1573 can update_merge_request1574 can create_todo1575 can approve_merge_request1576 can create_note1577 can update_subscription1578 a bot1579 is expected to be allowed :reset_merge_request_approvals1580 when project is private1581 a guest1582 behaves like a denied user1583 cannot create_merge_request_in1584 cannot create_merge_request_from1585 cannot read_merge_request1586 cannot update_merge_request1587 cannot create_todo1588 cannot approve_merge_request1589 cannot create_note1590 cannot update_subscription1591 a reporter1592 behaves like a user with reporter access1593 policy: :create_merge_request_in, is_allowed: true1594 is expected to be allowed :create_merge_request_in1595 policy: :read_merge_request, is_allowed: true1596 is expected to be allowed :read_merge_request1597 policy: :create_todo, is_allowed: true1598 is expected to be allowed :create_todo1599 policy: :create_note, is_allowed: true1600 is expected to be allowed :create_note1601 policy: :update_subscription, is_allowed: true1602 is expected to be allowed :update_subscription1603 policy: :create_merge_request_from, is_allowed: false1604 is expected to be disallowed :create_merge_request_from1605 policy: :approve_merge_request, is_allowed: false1606 is expected to be disallowed :approve_merge_request1607 policy: :update_merge_request, is_allowed: false1608 is expected to be disallowed :update_merge_request1609 a developer1610 behaves like a user with full access1611 can create_merge_request_in1612 can create_merge_request_from1613 can read_merge_request1614 can update_merge_request1615 can create_todo1616 can approve_merge_request1617 can create_note1618 can update_subscription1619 a bot1620 is expected to be allowed :reset_merge_request_approvals1621 when user is an inherited member from a shared group1622 and group is given developer access1623 is expected to be allowed :approve_merge_request1624 is expected to be disallowed :reset_merge_request_approvals1625 and the user is a bot1626 is expected to be allowed :approve_merge_request1627 is expected to be allowed :reset_merge_request_approvals1628 when user is not a project member1629 when merge request is public1630 is expected not to be allowed :approve_merge_request1631 is expected not to be allowed :reset_merge_request_approvals1632 and the user is a bot1633 is expected not to be allowed :approve_merge_request1634 is expected not to be allowed :reset_merge_request_approvals1635 when merge requests are disabled1636 behaves like a denied user1637 cannot create_merge_request_in1638 cannot create_merge_request_from1639 cannot read_merge_request1640 cannot update_merge_request1641 cannot create_todo1642 cannot approve_merge_request1643 cannot create_note1644 cannot update_subscription1645 when merge requests are private1646 behaves like a denied user1647 cannot create_merge_request_in1648 cannot create_merge_request_from1649 cannot read_merge_request1650 cannot update_merge_request1651 cannot create_todo1652 cannot approve_merge_request1653 cannot create_note1654 cannot update_subscription1655 when merge request is locked1656 cannot create a note1657 when user is anonymous1658 when merge request is public1659 is expected to be disallowed :create_todo and :update_subscription1660 when enabling generate diff summary permission1661 when can read_merge_request1662 allows to generate_diff_summary1663 when can not read_merge_request1664 does not allow to generate_diff_summary1665 and when is the LLM bot1666 allows to generate_diff_summary1667 when the author of the merge request is banned1668 does not allow non-admin user to read the merge_request1669 allows admin to read the merge_request1670 when the `hide_merge_requests_from_banned_users` feature flag is disabled1671 allows non-admin users to read the merge_request1672 allows admin users to read the merge_request1673Ci::CreatePipelineService1674 #execute1675 skips creating pipeline for refs without .gitlab-ci.yml1676 performance1677 behaves like pipelines are created without N+1 SQL queries1678 avoids N+1 queries1679 valid params1680 responds with success1681 creates a pipeline1682 increments the prometheus counter1683 records pipeline size in a prometheus histogram1684 tracks included template usage1685 when merge requests already exist for this source branch1686 when the head pipeline sha equals merge request sha1687 updates head pipeline of each merge request1688 auto-cancel enabled1689 does not cancel HEAD pipeline1690 auto cancel pending non-HEAD pipelines1691 cancels running outdated pipelines1692 cancel created outdated pipelines1693 does not cancel pipelines from the other branches1694 when the interruptible attribute is1695 not defined1696 is cancelable1697 set to true1698 is cancelable1699 set to false1700 is not cancelable1701 interruptible builds1702 properly configures interruptible status1703 when only interruptible builds are running1704 when build marked explicitly by interruptible is running1705 cancels running outdated pipelines1706 when build that is not marked as interruptible is running1707 cancels running outdated pipelines1708 when an uninterruptible build is running1709 does not cancel running outdated pipelines1710 when an build is waiting on an interruptible scheduled task1711 cancels running outdated pipelines1712 when a uninterruptible build has finished1713 does not cancel running outdated pipelines1714 auto-cancel disabled1715 does not auto cancel created non-HEAD pipelines1716 skip tag if there is no build for it1717 creates commit if there is appropriate job1718 creates commit if there is no appropriate job but deploy job has right ref setting1719 config evaluation1720 when config is in a file in repository1721 pull it from the repository1722 when config is from Auto-DevOps1723 pull it from Auto-DevOps1724 when config is not found1725 responds with error message1726 when an unexpected error is raised1727 saves error in pipeline1728 logs error1729 when yaml is invalid1730 increments the error metric1731 behaves like a failed pipeline1732 creates failed pipeline1733 when receive git commit1734 behaves like a failed pipeline1735 creates failed pipeline1736 when config has ports1737 in the main image1738 behaves like a failed pipeline1739 creates failed pipeline1740 in the job image1741 behaves like a failed pipeline1742 creates failed pipeline1743 in the service1744 behaves like a failed pipeline1745 creates failed pipeline1746 when an unexpected error is raised1747 saves error in pipeline1748 logs error1749 when commit contains a [ci skip] directive1750 when the commit message is some message[ci skip]1751 behaves like skipping a pipeline1752 skips pipeline creation1753 when the commit message is some message[skip ci]1754 behaves like skipping a pipeline1755 skips pipeline creation1756 when the commit message is some message[CI SKIP]1757 behaves like skipping a pipeline1758 skips pipeline creation1759 when the commit message is some message[SKIP CI]1760 behaves like skipping a pipeline1761 skips pipeline creation1762 when the commit message is some message[ci_skip]1763 behaves like skipping a pipeline1764 skips pipeline creation1765 when the commit message is some message[skip_ci]1766 behaves like skipping a pipeline1767 skips pipeline creation1768 when the commit message is some message[ci-skip]1769 behaves like skipping a pipeline1770 skips pipeline creation1771 when the commit message is some message[skip-ci]1772 behaves like skipping a pipeline1773 skips pipeline creation1774 when commit message does not contain [ci skip] nor [skip ci]1775 behaves like creating a pipeline1776 does not skip pipeline creation1777 when commit message is nil1778 behaves like creating a pipeline1779 does not skip pipeline creation1780 when there is [ci skip] tag in commit message and yaml is invalid1781 behaves like skipping a pipeline1782 skips pipeline creation1783 when push options contain ci.skip1784 creates a pipline in the skipped state1785 when there are no jobs for this pipeline1786 does not create a new pipeline1787 #iid1788 rewinds iid1789 when the configuration includes ID tokens1790 creates variables for the ID tokens1791 with manual actions1792 does not create a new pipeline1793 with environment1794 creates the environment with tags1795 with environment with auto_stop_in1796 creates the environment with auto stop in1797 with environment name including persisted variables1798 skips persisted variables in environment name1799 environment with Kubernetes configuration1800 stores the requested namespace1801 when environment with invalid name1802 does not create an environment1803 when environment with duplicate names1804 creates a pipeline with the environment1805 when builds with auto-retries are configured1806 as an integer1807 correctly creates builds with auto-retry value configured1808 as hash1809 correctly creates builds with auto-retry value configured1810 with resource group1811 when resource group is defined1812 persists the association correctly1813 when resource group key includes predefined variables1814 interpolates the variables into the key correctly1815 when resource group is defined for review app deployment1816 persists the association correctly1817 initializes scoped variables only once for each build1818 with timeout1819 when builds with custom timeouts are configured1820 correctly creates builds with custom timeout value configured1821 with release1822 simple example1823 behaves like a successful release pipeline1824 is valid config1825 example with all release metadata1826 behaves like a successful release pipeline1827 is valid config1828 when ref is a protected branch1829 behaves like when ref is protected1830 when user is developer1831 does not create a pipeline1832 when user is maintainer1833 creates a protected pipeline1834 when trigger belongs to no one1835 does not create a pipeline1836 when trigger belongs to a developer1837 does not create a pipeline1838 when trigger belongs to a maintainer1839 creates a pipeline1840 when ref is a protected tag1841 behaves like when ref is protected1842 when user is developer1843 does not create a pipeline1844 when user is maintainer1845 creates a protected pipeline1846 when trigger belongs to no one1847 does not create a pipeline1848 when trigger belongs to a developer1849 does not create a pipeline1850 when trigger belongs to a maintainer1851 creates a pipeline1852 when pipeline is running for a tag1853 creates a tagged pipeline1854 when pipeline is running for a nonexistant-branch1855 does not create the pipeline1856 when there is a tag with that nonexistant-branch1857 does not create the pipeline1858 when pipeline is running for a branch with the name of both a branch and a tag1859 creates the pipeline for the branch1860 when pipeline is running for a tag with the name of both a branch and a tag1861 creates the pipeline for the tag1862 when pipeline is running for an ambiguous ref1863 does not create the pipeline1864 when pipeline variables are specified1865 with valid pipeline variables1866 creates a pipeline with specified variables1867 with duplicate pipeline variables1868 fails to create the pipeline1869 with more than one duplicate pipeline variable1870 fails to create the pipeline1871 when pipeline has a job with environment1872 when environment name is valid1873 has a job with environment1874 when environment name is invalid1875 has a job without environment1876 Pipeline for external pull requests1877 when source is external pull request1878 when config has external_pull_requests keywords1879 when external pull request is specified1880 creates an external pull request pipeline1881 when ref is tag1882 does not create an extrnal pull request pipeline1883 when pull request is created from fork1884 does not create an external pull request pipeline (PENDING: Not yet implemented)1885 when there are no matched jobs1886 does not create a detached merge request pipeline1887 when external pull request is not specified1888 does not create an external pull request pipeline1889 when config does not have external_pull_requests keywords1890 when external pull request is specified1891 creates an external pull request pipeline1892 when external pull request is not specified1893 does not create an external pull request pipeline1894 Pipelines for merge requests1895 when source is merge request1896 when config has merge_requests keywords1897 when merge request is specified1898 creates a detached merge request pipeline1899 persists the specified source sha1900 does not persist target sha for detached merge request pipeline1901 schedules update for the head pipeline of the merge request1902 schedules a namespace onboarding create action worker1903 when target sha is specified1904 persists the target sha1905 when ref is tag1906 does not create a merge request pipeline1907 when merge request is created from a forked project1908 creates a legacy detached merge request pipeline in the forked project1909 when there are no matched jobs1910 does not create a detached merge request pipeline1911 when config does not have merge_requests keywords1912 when merge request is specified1913 does not create a detached merge request pipeline1914 when config uses regular expression for only keyword1915 when merge request is specified1916 does not create a detached merge request pipeline1917 when config uses variables for only keyword1918 when merge request is specified1919 does not create a detached merge request pipeline1920 when config has 'except: [tags]'1921 when merge request is specified1922 does not create a detached merge request pipeline1923 when source is web1924 when config has merge_requests keywords1925 creates a branch pipeline1926 when needs is used1927 when pipeline on master is created1928 creates a pipeline with build_a and test_a1929 bulk inserts all needs1930 when pipeline on feature is created1931 when save_on_errors is enabled1932 does create a pipeline as test_a depends on build_a1933 behaves like has errors1934 contains the expected errors1935 when save_on_errors is disabled1936 does not create a pipeline as test_a depends on build_a1937 behaves like has errors1938 contains the expected errors1939 when pipeline on v1.0.0 is created1940 does create a pipeline only with deploy1941 pipeline components1942 when there is no version with specified tag1943 does not create a pipeline1944 when there is a proper revision available1945 when component is valid1946 creates a pipeline using a pipeline component1947 when interpolation is invalid1948 does not create a pipeline1949 when there is a syntax error in the template1950 does not create a pipeline1951 pipeline components using include:with instead of include:inputs1952 when there is no version with specified tag1953 does not create a pipeline1954 when there is a proper revision available1955 when component is valid1956 creates a pipeline using a pipeline component1957 when interpolation is invalid1958 does not create a pipeline1959 when there is a syntax error in the template1960 does not create a pipeline1961Packages::Debian::GenerateDistributionWorker1962 #perform1963 for project1964 with mocked service1965 calls GenerateDistributionService1966 with non existing distribution id1967 returns early without error1968 with nil distribution id1969 returns early without error1970 with valid parameters1971 behaves like an idempotent worker1972 is labeled as idempotent1973 performs multiple times sequentially without raising an exception1974 behaves like Generate Debian Distribution and component files1975 with Debian components and architectures1976 generates Debian distribution and component files1977 without components and architectures1978 generates minimal distribution1979 for group1980 with mocked service1981 calls GenerateDistributionService1982 with non existing distribution id1983 returns early without error1984 with nil distribution id1985 returns early without error1986 with valid parameters1987 behaves like an idempotent worker1988 is labeled as idempotent1989 performs multiple times sequentially without raising an exception1990 behaves like Generate Debian Distribution and component files1991 with Debian components and architectures1992 generates Debian distribution and component files1993 without components and architectures1994 generates minimal distribution1995DeploymentPlatform1996 #deployment_platform1997 multiple clusters1998 multiple clusters use the same management project1999 behaves like matching environment scope2000 returns environment specific cluster2001 behaves like certificate_based_clusters is disabled2002 is expected to be nil2003 when project does not have a cluster but has group clusters2004 when environment scope is exactly matched2005 behaves like matching environment scope2006 returns environment specific cluster2007 behaves like certificate_based_clusters is disabled2008 is expected to be nil2009 when environment scope is matched by wildcard2010 behaves like matching environment scope2011 returns environment specific cluster2012 behaves like certificate_based_clusters is disabled2013 is expected to be nil2014 when environment scope does not match2015 behaves like not matching environment scope2016 returns default cluster2017 behaves like certificate_based_clusters is disabled2018 is expected to be nil2019 when group belongs to a parent group2020 when parent_group has a cluster with default scope2021 behaves like matching environment scope2022 returns environment specific cluster2023 behaves like certificate_based_clusters is disabled2024 is expected to be nil2025 when parent_group has a cluster that is an exact match2026 behaves like matching environment scope2027 returns environment specific cluster2028 behaves like certificate_based_clusters is disabled2029 is expected to be nil2030 with instance clusters2031 when environment scope is exactly matched2032 behaves like matching environment scope2033 returns environment specific cluster2034 behaves like certificate_based_clusters is disabled2035 is expected to be nil2036 when environment scope is matched by wildcard2037 behaves like matching environment scope2038 returns environment specific cluster2039 behaves like certificate_based_clusters is disabled2040 is expected to be nil2041 when environment scope does not match2042 behaves like not matching environment scope2043 returns default cluster2044 behaves like certificate_based_clusters is disabled2045 is expected to be nil2046 when environment is specified2047 when environment scope is exactly matched2048 behaves like matching environment scope2049 returns environment specific cluster2050 behaves like certificate_based_clusters is disabled2051 is expected to be nil2052 when environment scope is matched by wildcard2053 behaves like matching environment scope2054 returns environment specific cluster2055 behaves like certificate_based_clusters is disabled2056 is expected to be nil2057 when environment scope does not match2058 behaves like not matching environment scope2059 returns default cluster2060 behaves like certificate_based_clusters is disabled2061 is expected to be nil2062 when environment scope has _2063 does not treat it as wildcard2064 when environment name contains an underscore2065 matches literally for _2066 when environment scope has %2067 does not treat it as wildcard2068 when environment name contains a percent char2069 matches literally for %2070 when perfectly matched cluster exists2071 returns perfectly matched cluster as highest precedence2072 with multiple clusters and multiple environments2073 returns the appropriate cluster2074 with no Kubernetes configuration on CI/CD, no Kubernetes Service2075 is expected to be nil2076 when project is the cluster's management project2077 returns the cluster with management project2078 when project has configured kubernetes from CI/CD > Clusters2079 returns the Kubernetes platform2080 with a group level kubernetes cluster2081 returns the Kubernetes platform from the project cluster2082 when group has configured kubernetes cluster2083 returns the Kubernetes platform2084 when project is the cluster's management project2085 returns the cluster with management project2086 when project is not the cluster's management project2087 returns the group cluster2088 when child group has configured kubernetes cluster2089 returns the Kubernetes platform for the child group2090 deeply nested group2091 returns most nested group cluster Kubernetes platform2092 cluster in the middle of hierarchy is disabled2093 returns closest enabled Kubenetes platform2094 when instance has configured kubernetes cluster2095 returns the Kubernetes platform2096Note ResolvableNote2097 resolvability scopes2098 .potentially_resolvable2099 includes diff and discussion notes on merge requests2100 .resolvable2101 includes non-system diff and discussion notes on merge requests2102 .resolved2103 includes resolved non-system diff and discussion notes on merge requests2104 .unresolved2105 includes non-resolved non-system diff and discussion notes on merge requests2106 .resolve!2107 resolves only the resolvable, not yet resolved notes2108 .unresolve!2109 unresolves the resolved notes2110 #resolvable?2111 when potentially resolvable2112 when a system note2113 returns false2114 when a regular note2115 returns true2116 when not potentially resolvable2117 returns false2118 #to_be_resolved?2119 when not resolvable2120 returns false2121 when resolvable2122 when resolved2123 returns false2124 when not resolved2125 returns true2126 #resolved?2127 when not resolvable2128 returns false2129 when resolvable2130 when the note has been resolved2131 returns true2132 when the note has not been resolved2133 returns false2134 #resolve!2135 when not resolvable2136 returns false2137 doesn't set resolved_at2138 doesn't set resolved_by2139 doesn't mark as resolved2140 when resolvable2141 when already resolved2142 returns false2143 doesn't change resolved_at2144 doesn't change resolved_by2145 doesn't change resolved status2146 when not yet resolved2147 returns true2148 sets resolved_at2149 sets resolved_by2150 marks as resolved2151 updates the updated_at timestamp2152 #unresolve!2153 when not resolvable2154 returns false2155 when resolvable2156 when resolved2157 returns true2158 unsets resolved_at2159 unsets resolved_by2160 unmarks as resolved2161 updates the updated_at timestamp2162 when not resolved2163 returns false2164 #potentially_resolvable?2165 returns false if noteable could not be found2166Gitlab::Database::Migrations::BackgroundMigrationHelpers2167 when the migration is running against the main database2168 behaves like helpers that enqueue background migrations2169 #queue_background_migration_jobs_by_range_at_intervals2170 when the model has an ID column2171-- Scheduled 2 FooJob jobs with a maximum of 2 records per batch and an interval of 600 seconds.2172The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2023-08-10 12:55:00 UTC."2173 returns the final expected delay2174-- Scheduled 0 FooJob jobs with a maximum of 1000 records per batch and an interval of 600 seconds.2175The migration is expected to take at least 0 seconds. Expect all jobs to have completed after 2023-08-10 12:35:01 UTC."2176 returns zero when nothing gets queued2177 when the delay_interval is smaller than the minimum2178-- Scheduled 2 FooJob jobs with a maximum of 2 records per batch and an interval of 120 seconds.2179The migration is expected to take at least 240 seconds. Expect all jobs to have completed after 2023-08-10 12:39:01 UTC."2180 sets the delay_interval to the minimum value2181 with batch_size option2182-- Scheduled 2 FooJob jobs with a maximum of 2 records per batch and an interval of 600 seconds.2183The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2023-08-10 12:55:01 UTC."2184 queues jobs correctly2185 without batch_size option2186-- Scheduled 1 FooJob jobs with a maximum of 1000 records per batch and an interval of 600 seconds.2187The migration is expected to take at least 600 seconds. Expect all jobs to have completed after 2023-08-10 12:45:02 UTC."2188 queues jobs correctly2189 with other_job_arguments option2190-- Scheduled 1 FooJob jobs with a maximum of 1000 records per batch and an interval of 600 seconds.2191The migration is expected to take at least 600 seconds. Expect all jobs to have completed after 2023-08-10 12:45:02 UTC."2192 queues jobs correctly2193 with initial_delay option2194-- Scheduled 1 FooJob jobs with a maximum of 1000 records per batch and an interval of 600 seconds.2195The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2023-08-10 12:55:03 UTC."2196 queues jobs correctly2197 with track_jobs option2198-- Scheduled 1 ::FooJob jobs with a maximum of 1000 records per batch and an interval of 600 seconds.2199The migration is expected to take at least 600 seconds. Expect all jobs to have completed after 2023-08-10 12:45:03 UTC."2200 creates a record for each job in the database2201 without track_jobs option2202-- Scheduled 1 FooJob jobs with a maximum of 1000 records per batch and an interval of 600 seconds.2203The migration is expected to take at least 600 seconds. Expect all jobs to have completed after 2023-08-10 12:45:03 UTC."2204 does not create records in the database2205 when the model specifies a primary_column_name2206-- Scheduled 2 FooJob jobs with a maximum of 2 records per batch and an interval of 600 seconds.2207The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2023-08-10 12:55:04 UTC."2208 returns the final expected delay2209 when the primary_column_name is a string2210-- Scheduled 1 FooJob jobs with a maximum of 1000 records per batch and an interval of 600 seconds.2211The migration is expected to take at least 600 seconds. Expect all jobs to have completed after 2023-08-10 12:45:05 UTC."2212 does not raise error2213 when the primary_column_name is not an integer or a string2214 raises error2215 when the primary_column_name does not exist2216 raises error2217 when the model doesn't have an ID or primary_column_name column2218 raises error (for now)2219 when using Migration[2.0]2220 when restriction is set to gitlab_shared2221 does raise an exception2222 when within transaction2223 does raise an exception2224 #requeue_background_migration_jobs_by_range_at_intervals2225-- Scheduled 2 TestJob jobs with an interval of 600 seconds.2226The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2023-08-10 12:55:08 UTC."2227 returns the expected duration2228-- Scheduled 2 TestJob jobs with an interval of 600 seconds.2229The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2023-08-10 12:55:08 UTC."2230 queues pending jobs2231 when using Migration[2.0]2232main: -- Scheduled 2 TestJob jobs with an interval of 600 seconds.2233The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2023-08-10 12:55:08 UTC."2234 does re-enqueue pending jobs2235 when restriction is set2236 does raise an exception2237 when within transaction2238 does raise an exception2239 when nothing is queued2240-- Scheduled 0 FakeJob jobs with an interval of 600 seconds.2241The migration is expected to take at least 0 seconds. Expect all jobs to have completed after 2023-08-10 12:35:08 UTC."2242 returns expected duration of zero when nothing gets queued2243 with batch_size option2244-- Scheduled 2 TestJob jobs with an interval of 600 seconds.2245The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2023-08-10 12:55:08 UTC."2246 returns the expected duration2247-- Scheduled 2 TestJob jobs with an interval of 600 seconds.2248The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2023-08-10 12:55:08 UTC."2249 queues pending jobs2250-- Scheduled 0 TestJob jobs with an interval of 600 seconds.2251The migration is expected to take at least 0 seconds. Expect all jobs to have completed after 2023-08-10 12:35:08 UTC."2252 retrieve jobs in batches2253 with initial_delay option2254-- Scheduled 2 TestJob jobs with an interval of 600 seconds.2255The migration is expected to take at least 1380 seconds. Expect all jobs to have completed after 2023-08-10 12:58:08 UTC."2256 returns the expected duration2257-- Scheduled 2 TestJob jobs with an interval of 600 seconds.2258The migration is expected to take at least 1380 seconds. Expect all jobs to have completed after 2023-08-10 12:58:09 UTC."2259 queues pending jobs2260 when nothing is queued2261-- Scheduled 0 FakeJob jobs with an interval of 600 seconds.2262The migration is expected to take at least 0 seconds. Expect all jobs to have completed after 2023-08-10 12:35:09 UTC."2263 returns expected duration of zero when nothing gets queued2264 #finalize_background_migration2265 behaves like finalized tracked background migration2266 processed the scheduled sidekiq queue2267 processed the async sidekiq queue2268 removes 'pending' tracked jobs2269 removes 'succeeded' tracked jobs2270 when within transaction2271 does raise an exception2272 when using Migration[2.0]2273 behaves like finalized tracked background migration2274 processed the scheduled sidekiq queue2275 processed the async sidekiq queue2276 removes 'pending' tracked jobs2277 removes 'succeeded' tracked jobs2278 when restriction is set2279 does raise an exception2280 when running migration in reconfigured ActiveRecord::Base context2281 behaves like reconfigures connection stack2282 does restore connection hierarchy2283 when removing all tracked job records2284 behaves like finalized tracked background migration2285 processed the scheduled sidekiq queue2286 processed the async sidekiq queue2287 removes 'pending' tracked jobs2288 removes 'succeeded' tracked jobs2289 behaves like removed tracked jobs2290 removes 'pending' tracked jobs2291 behaves like removed tracked jobs2292 removes 'succeeded' tracked jobs2293 when retaining all tracked job records2294 retains 'succeeded' tracked jobs2295 behaves like finalized background migration2296 processed the scheduled sidekiq queue2297 processed the async sidekiq queue2298 removes 'pending' tracked jobs2299 during retry race condition2300 behaves like finalized tracked background migration2301 processed the scheduled sidekiq queue2302 processed the async sidekiq queue2303 removes 'pending' tracked jobs2304 removes 'succeeded' tracked jobs2305 #migrate_in2306 calls perform_in for the correct worker2307 pushes a context with the current class name as caller_id2308 when a specific coordinator is given2309 uses that coordinator2310 #delete_queued_jobs2311 deletes all queued jobs for the given background migration2312 when the migration is running against the ci database2313 behaves like helpers that enqueue background migrations2314 #queue_background_migration_jobs_by_range_at_intervals2315 when the model has an ID column2316-- Scheduled 2 FooJob jobs with a maximum of 2 records per batch and an interval of 600 seconds.2317The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2023-08-10 12:55:12 UTC."2318 returns the final expected delay2319-- Scheduled 0 FooJob jobs with a maximum of 1000 records per batch and an interval of 600 seconds.2320The migration is expected to take at least 0 seconds. Expect all jobs to have completed after 2023-08-10 12:35:12 UTC."2321 returns zero when nothing gets queued2322 when the delay_interval is smaller than the minimum2323-- Scheduled 2 FooJob jobs with a maximum of 2 records per batch and an interval of 120 seconds.2324The migration is expected to take at least 240 seconds. Expect all jobs to have completed after 2023-08-10 12:39:12 UTC."2325 sets the delay_interval to the minimum value2326 with batch_size option2327-- Scheduled 2 FooJob jobs with a maximum of 2 records per batch and an interval of 600 seconds.2328The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2023-08-10 12:55:13 UTC."2329 queues jobs correctly2330 without batch_size option2331-- Scheduled 1 FooJob jobs with a maximum of 1000 records per batch and an interval of 600 seconds.2332The migration is expected to take at least 600 seconds. Expect all jobs to have completed after 2023-08-10 12:45:13 UTC."2333 queues jobs correctly2334 with other_job_arguments option2335-- Scheduled 1 FooJob jobs with a maximum of 1000 records per batch and an interval of 600 seconds.2336The migration is expected to take at least 600 seconds. Expect all jobs to have completed after 2023-08-10 12:45:13 UTC."2337 queues jobs correctly2338 with initial_delay option2339-- Scheduled 1 FooJob jobs with a maximum of 1000 records per batch and an interval of 600 seconds.2340The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2023-08-10 12:55:14 UTC."2341 queues jobs correctly2342 with track_jobs option2343-- Scheduled 1 ::FooJob jobs with a maximum of 1000 records per batch and an interval of 600 seconds.2344The migration is expected to take at least 600 seconds. Expect all jobs to have completed after 2023-08-10 12:45:14 UTC."2345 creates a record for each job in the database2346 without track_jobs option2347-- Scheduled 1 FooJob jobs with a maximum of 1000 records per batch and an interval of 600 seconds.2348The migration is expected to take at least 600 seconds. Expect all jobs to have completed after 2023-08-10 12:45:15 UTC."2349 does not create records in the database2350 when the model specifies a primary_column_name2351-- Scheduled 2 FooJob jobs with a maximum of 2 records per batch and an interval of 600 seconds.2352The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2023-08-10 12:55:15 UTC."2353 returns the final expected delay2354 when the primary_column_name is a string2355-- Scheduled 1 FooJob jobs with a maximum of 1000 records per batch and an interval of 600 seconds.2356The migration is expected to take at least 600 seconds. Expect all jobs to have completed after 2023-08-10 12:45:16 UTC."2357 does not raise error2358 when the primary_column_name is not an integer or a string2359 raises error2360 when the primary_column_name does not exist2361 raises error2362 when the model doesn't have an ID or primary_column_name column2363 raises error (for now)2364 when using Migration[2.0]2365 when restriction is set to gitlab_shared2366 does raise an exception2367 when within transaction2368 does raise an exception2369 #requeue_background_migration_jobs_by_range_at_intervals2370-- Scheduled 2 TestJob jobs with an interval of 600 seconds.2371The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2023-08-10 12:55:19 UTC."2372 returns the expected duration2373-- Scheduled 2 TestJob jobs with an interval of 600 seconds.2374The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2023-08-10 12:55:19 UTC."2375 queues pending jobs2376 when using Migration[2.0]2377ci: -- Scheduled 2 TestJob jobs with an interval of 600 seconds.2378The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2023-08-10 12:55:19 UTC."2379 does re-enqueue pending jobs2380 when restriction is set2381 does raise an exception2382 when within transaction2383 does raise an exception2384 when nothing is queued2385-- Scheduled 0 FakeJob jobs with an interval of 600 seconds.2386The migration is expected to take at least 0 seconds. Expect all jobs to have completed after 2023-08-10 12:35:19 UTC."2387 returns expected duration of zero when nothing gets queued2388 with batch_size option2389-- Scheduled 2 TestJob jobs with an interval of 600 seconds.2390The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2023-08-10 12:55:19 UTC."2391 returns the expected duration2392-- Scheduled 2 TestJob jobs with an interval of 600 seconds.2393The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2023-08-10 12:55:19 UTC."2394 queues pending jobs2395-- Scheduled 0 TestJob jobs with an interval of 600 seconds.2396The migration is expected to take at least 0 seconds. Expect all jobs to have completed after 2023-08-10 12:35:19 UTC."2397 retrieve jobs in batches2398 with initial_delay option2399-- Scheduled 2 TestJob jobs with an interval of 600 seconds.2400The migration is expected to take at least 1380 seconds. Expect all jobs to have completed after 2023-08-10 12:58:20 UTC."2401 returns the expected duration2402-- Scheduled 2 TestJob jobs with an interval of 600 seconds.2403The migration is expected to take at least 1380 seconds. Expect all jobs to have completed after 2023-08-10 12:58:20 UTC."2404 queues pending jobs2405 when nothing is queued2406-- Scheduled 0 FakeJob jobs with an interval of 600 seconds.2407The migration is expected to take at least 0 seconds. Expect all jobs to have completed after 2023-08-10 12:35:20 UTC."2408 returns expected duration of zero when nothing gets queued2409 #finalize_background_migration2410 behaves like finalized tracked background migration2411 processed the scheduled sidekiq queue2412 processed the async sidekiq queue2413 removes 'pending' tracked jobs2414 removes 'succeeded' tracked jobs2415 when within transaction2416 does raise an exception2417 when using Migration[2.0]2418 behaves like finalized tracked background migration2419 processed the scheduled sidekiq queue2420 processed the async sidekiq queue2421 removes 'pending' tracked jobs2422 removes 'succeeded' tracked jobs2423 when restriction is set2424 does raise an exception2425 when running migration in reconfigured ActiveRecord::Base context2426 behaves like reconfigures connection stack2427 does restore connection hierarchy2428 when removing all tracked job records2429 behaves like finalized tracked background migration2430 processed the scheduled sidekiq queue2431 processed the async sidekiq queue2432 removes 'pending' tracked jobs2433 removes 'succeeded' tracked jobs2434 behaves like removed tracked jobs2435 removes 'pending' tracked jobs2436 behaves like removed tracked jobs2437 removes 'succeeded' tracked jobs2438 when retaining all tracked job records2439 retains 'succeeded' tracked jobs2440 behaves like finalized background migration2441 processed the scheduled sidekiq queue2442 processed the async sidekiq queue2443 removes 'pending' tracked jobs2444 during retry race condition2445 behaves like finalized tracked background migration2446 processed the scheduled sidekiq queue2447 processed the async sidekiq queue2448 removes 'pending' tracked jobs2449 removes 'succeeded' tracked jobs2450 #migrate_in2451 calls perform_in for the correct worker2452 pushes a context with the current class name as caller_id2453 when a specific coordinator is given2454 uses that coordinator2455 #delete_queued_jobs2456 deletes all queued jobs for the given background migration2457 #delete_job_tracking2458 with default status2459 retains 'pending' tracked jobs2460 removes 'succeeded' tracked jobs2461 with explicit status2462 removes 'pending' tracked jobs2463 removes 'succeeded' tracked jobs2464Gitlab::UrlBlocker2465 #validate!2466 when the URL hostname is a domain2467 when domain can be resolved2468 behaves like validates URI and hostname2469 runs the url validations2470 #validate_url_with_proxy!2471 when URI is nil2472 behaves like validates URI and hostname2473 runs the url validations2474 behaves like a URI exempt from `deny_all_requests_except_allowed`2475 does not block the request2476 when URI is internal2477 behaves like validates URI and hostname2478 runs the url validations2479 behaves like a URI exempt from `deny_all_requests_except_allowed`2480 does not block the request2481 when URI is for a local object storage2482 when allow_object_storage is true2483 with a local domain name2484 behaves like validates URI and hostname2485 runs the url validations2486 behaves like a URI exempt from `deny_all_requests_except_allowed`2487 does not block the request2488 with an IP address2489 behaves like validates URI and hostname2490 runs the url validations2491 behaves like a URI exempt from `deny_all_requests_except_allowed`2492 does not block the request2493 when LFS object storage is enabled2494 when LFS is disabled2495 raises an error2496 when LFS is enabled with no connection endpoint2497 raises an error2498 when allow_object_storage is false2499 with a local domain name2500 raises an error2501 with an IP address2502 raises an error2503 when the URL hostname is a domain2504 when domain can be resolved2505 behaves like validates URI and hostname2506 runs the url validations2507 behaves like a URI denied by `deny_all_requests_except_allowed`2508 when instance setting is enabled2509 blocks the request2510 when instance setting is not enabled2511 does not block the request2512 when passed as an argument2513 when argument is a proc that evaluates to true2514 blocks the request2515 when argument is a proc that evaluates to false2516 does not block the request2517 when argument is true2518 blocks the request2519 when argument is false2520 does not block the request2521 when domain cannot be resolved2522 raises an error2523 with HTTP_PROXY2524 behaves like validates URI and hostname2525 runs the url validations2526 with no_proxy2527 behaves like validates URI and hostname2528 runs the url validations2529 when domain is too long2530 raises an error2531 when the URL hostname is an IP address2532 behaves like validates URI and hostname2533 runs the url validations2534 behaves like a URI denied by `deny_all_requests_except_allowed`2535 when instance setting is enabled2536 blocks the request2537 when instance setting is not enabled2538 does not block the request2539 when passed as an argument2540 when argument is a proc that evaluates to true2541 blocks the request2542 when argument is a proc that evaluates to false2543 does not block the request2544 when argument is true2545 blocks the request2546 when argument is false2547 does not block the request2548 when the address is invalid2549 raises an error2550 when DNS rebinding protection with IP allowed2551 behaves like validates URI and hostname2552 runs the url validations2553 behaves like a URI exempt from `deny_all_requests_except_allowed`2554 does not block the request2555 with HTTP_PROXY2556 behaves like validates URI and hostname2557 runs the url validations2558 when domain is in no_proxy env2559 behaves like validates URI and hostname2560 runs the url validations2561 with disabled DNS rebinding protection2562 when URI is internal2563 behaves like validates URI and hostname2564 runs the url validations2565 behaves like a URI exempt from `deny_all_requests_except_allowed`2566 does not block the request2567 when the URL hostname is a domain2568 when domain can be resolved2569 behaves like validates URI and hostname2570 runs the url validations2571 behaves like a URI denied by `deny_all_requests_except_allowed`2572 when instance setting is enabled2573 blocks the request2574 when instance setting is not enabled2575 does not block the request2576 when passed as an argument2577 when argument is a proc that evaluates to true2578 blocks the request2579 when argument is a proc that evaluates to false2580 does not block the request2581 when argument is true2582 blocks the request2583 when argument is false2584 does not block the request2585 when domain cannot be resolved2586 behaves like validates URI and hostname2587 runs the url validations2588 behaves like a URI denied by `deny_all_requests_except_allowed`2589 when instance setting is enabled2590 blocks the request2591 when instance setting is not enabled2592 does not block the request2593 when passed as an argument2594 when argument is a proc that evaluates to true2595 blocks the request2596 when argument is a proc that evaluates to false2597 does not block the request2598 when argument is true2599 blocks the request2600 when argument is false2601 does not block the request2602 when the URL hostname is an IP address2603 behaves like validates URI and hostname2604 runs the url validations2605 behaves like a URI denied by `deny_all_requests_except_allowed`2606 when instance setting is enabled2607 blocks the request2608 when instance setting is not enabled2609 does not block the request2610 when passed as an argument2611 when argument is a proc that evaluates to true2612 blocks the request2613 when argument is a proc that evaluates to false2614 does not block the request2615 when argument is true2616 blocks the request2617 when argument is false2618 does not block the request2619 when it is invalid2620 behaves like validates URI and hostname2621 runs the url validations2622 behaves like a URI denied by `deny_all_requests_except_allowed`2623 when instance setting is enabled2624 blocks the request2625 when instance setting is not enabled2626 does not block the request2627 when passed as an argument2628 when argument is a proc that evaluates to true2629 blocks the request2630 when argument is a proc that evaluates to false2631 does not block the request2632 when argument is true2633 blocks the request2634 when argument is false2635 does not block the request2636 #blocked_url?2637 allows imports from configured web host and port2638 allows mirroring from configured SSH host and port2639 returns true for bad localhost hostname2640 returns true for bad port2641 returns true for bad scheme2642 returns true for bad protocol on configured web/SSH host and ports2643 returns true for localhost IPs2644 returns true for loopback IP2645 returns true for alternative version of 127.0.0.1 (0177.1)2646 returns true for alternative version of 127.0.0.1 (017700000001)2647 returns true for alternative version of 127.0.0.1 (0x7f.1)2648 returns true for alternative version of 127.0.0.1 (0x7f.0.0.1)2649 returns true for alternative version of 127.0.0.1 (0x7f000001)2650 returns true for alternative version of 127.0.0.1 (2130706433)2651 returns true for alternative version of 127.0.0.1 (127.000.000.001)2652 returns true for alternative version of 127.0.0.1 (127.0.1)2653 returns true for a non-alphanumeric hostname2654 returns true for invalid URL2655 returns false for legitimate URL2656 blocks urls with invalid ip address2657 blocks urls whose hostname cannot be resolved2658 with ipv6 mapped address2659 returns true for localhost IPs2660 returns true for loopback IPs2661 allow_local_network2662 when true (default)2663 behaves like allows local requests2664 does not block urls from private networks2665 allows localhost endpoints2666 allows loopback endpoints2667 allows IPv4 link-local endpoints2668 allows IPv6 link-local endpoints2669 allows limited broadcast address 255.255.255.255 and variants2670 when false2671 blocks urls from private networks2672 blocks IPv4 link-local endpoints2673 blocks IPv6 link-local endpoints2674 blocks limited broadcast address 255.255.255.255 and variants2675 when local domain/IP is allowed2676 with IPs in allowlist2677 allows IP when dns_rebind_protection is disabled2678 allows the limited broadcast address 255.255.255.2552679 behaves like allows local requests2680 does not block urls from private networks2681 allows localhost endpoints2682 allows loopback endpoints2683 allows IPv4 link-local endpoints2684 allows IPv6 link-local endpoints2685 allows limited broadcast address 255.255.255.255 and variants2686 with domains in allowlist2687 allows domains present in allowlist2688 works with unicode and idna encoded domains2689 when the domain cannot be resolved2690 behaves like dns rebinding checks2691 dns_rebinding_setting2692 when enabled2693 behaves like allowlists the domain2694 is expected not to be blocked url "http://foobar.x" and {:dns_rebind_protection=>true, :schemes=>["http", "https"]}2695 when disabled2696 behaves like allowlists the domain2697 is expected not to be blocked url "http://foobar.x" and {:dns_rebind_protection=>false, :schemes=>["http", "https"]}2698 when the domain can be resolved2699 behaves like dns rebinding checks2700 dns_rebinding_setting2701 when enabled2702 behaves like allowlists the domain2703 is expected not to be blocked url "http://example.com" and {:dns_rebind_protection=>true, :schemes=>["http", "https"]}2704 when disabled2705 behaves like allowlists the domain2706 is expected not to be blocked url "http://example.com" and {:dns_rebind_protection=>false, :schemes=>["http", "https"]}2707 with ports2708 allows domain with port when resolved ip has port allowed2709 enforce_user2710 when false (default)2711 does not block urls with a non-alphanumeric username2712 when true2713 blocks urls with a non-alphanumeric username2714 when ascii_only is true2715 returns true for unicode domain2716 returns true for unicode tld2717 returns true for unicode path2718 returns true for IDNA deviations2719 when gitlab is running on a non-default port2720 returns true for url targeting the wrong port2721 does not block url on gitlab port2722 #validate_hostname2723 does not raise error for valid Ip addresses2724NamespaceSetting2725 is expected to define :jobs_to_be_done as an enum backed by an integer with values ‹[:basics, :move_repository, :code_storage, :exploring, :ci, :other]›, suffix: true2726 is expected to define :enabled_git_access_protocol as an enum backed by an integer with values ‹[:all, :ssh, :http]›, suffix: true2727 behaves like sanitizable2728 includes Sanitizable2729 #default_branch_name2730 when input includes javascript tags2731 gets sanitized2732 #default_branch_name validation2733 when input contains pre-escaped html entities2734 is not valid2735 when it contains a path component2736 is not valid2737 Associations2738 is expected to belong to namespace required: false2739 default values2740 is expected to eq {}2741 validations2742************************************************************************2743Warning from shoulda-matchers:2744You are using `validate_inclusion_of` to assert that a boolean column2745allows boolean values and disallows non-boolean ones. Be aware that it2746is not possible to fully test this, as boolean columns will2747automatically convert non-boolean values to boolean ones. Hence, you2748should consider removing this test.2749************************************************************************2750 is expected to validate that :code_suggestions is either ‹true› or ‹false›2751 #default_branch_name_content2752 when not set2753 behaves like doesn't return an error2754 doesn't return an error2755 when set2756 behaves like doesn't return an error2757 doesn't return an error2758 when an empty string2759 behaves like doesn't return an error2760 doesn't return an error2761 #code_suggestions2762 when group namespaces2763 when group is created2764 sets default code_suggestions value to true2765 when setting is updated2766 persists the code suggestions setting2767 when user namespace2768 defaults to false2769 #allow_mfa_for_group2770 group is top-level group2771 is valid2772 group is a subgroup2773 is invalid2774 #allow_resource_access_token_creation_for_group2775 group is top-level group2776 is valid2777 group is a subgroup2778 is invalid when resource access token creation is not enabled2779 is valid when resource access tokens are enabled2780 default_branch_protections_defaults validations2781 is expected to validate jsonb schema "default_branch_protection_defaults"2782 when json is more than 1kb2783 is expected not to allow :default_branch_protection_defaults to be ‹{name: "9whck81r01cfgjclpxcetefnuxw799k4w3ybzobccma1se0iqqta2n7k4oiythwx3oa5p9e9fq3bbezjmshvhrdw71wug913z1mdtwon2b3gmtktem5bp70dkyg5g9mpzx9xmhn63ocni37hw1fqzyq0iqtfck3r13xxpp95fojq34dhi09jjpmy4m8pzis4deyocmgtqm5qb5bp9mszjd2xx6exjkm4be3op9dj61wsxufajyakpjrxm9m9xd0vloxxnxt42k526w4tismwhuo8dw6c8f75wz44e5k6wm76pk9ngu9je1luguyauj3mzodeo48nzqmm2rcqtx6tc5foh0fh22u7d8fa4wladonqjkqc6oguybc7nab28j4f2o2diwshyzvtrgfwwuvzt8gzgn01dwhdllx1fder3zr8b4eyi9rl2zo4sca6gnywms3zwmjwbcz4up69e6unvdhbvtuv69l27ssy805763tvkai3p9ka4uwz9xlljgicvca2toeakq6gev4h3ojvmbxhoosf0h8ovycogu59j438bba57michr0hlro74rowx97cej8mtfg4ns0cbrrpais88030fya88b28jsmt6jfp8ihqdbv29301tepv22asxtkrz0mkuay76md68b8kxq8tvrsm6el7ba9f09aj2xhn0lgfddl4d6dvm47xc9hfci5fwown29h74gexosbb46zmwabpx3ac1vgxtflt1byakppoh68ojaptoxdrg9x54om4rg6v49f02bupodhk4s52gnq53rud1uhjog8lutstyf0x09iupvduekyb5f3eg60jfq2uyv37uk6lbw97xyavg2g6vraw44j214nk24r924ae88i78gl1vsu61arqjj3sbyv6mdglw96hcpe3bfqaj3yy37s3488ham4rb5543mbyulec1qdhq8oezhxheuv82y50np4vc7scqxdurug1xd3sx54ekciyddf2ek3cjuvqn211m35mplrdcordqs4znmcmkp4b2gtkni6k0etvx6xe15h246ru7h6jypquopt4jnzcqqqwpq547zaw83sq5yrk17qff5xnqq9knpzj5fd36zlyw8k3p5"}›2784 when json less than 1kb2785 is expected to allow :default_branch_protection_defaults to be ‹{name: "gv2ehp5f2vrbt5zou08zfpgv46ra0djeyf847u24znfpbsf6cymupt4rutle9s8flbs6ltrunizs4gn72a4k9oq5z9fjyna0e3lkrtdk9xclby2lgjuzg4uhq7f2i3y32j8bl877f7m1bd00g718rc0y5t4ofm3v15nepgqwangr9cvgduquseli0k1bjaq84uo13uot5wr5315aa0y543hrvod6otqy11dzefug6qqkp50zqw00jbvw2znmdvepsoh45aisnr4hnt6wq82e0iyzhcieiwx5cbodyxbvi4q6940vu8it3rjzfr9fjwcgshgmwxnmb3et6zz0wb1nvi6k3g3vxw2dqq1w6n0874k0crt37kt4i0o0vtuo7uh4pzn5ks7lyj4f2isphehlw9twh9lnndw0y065itroky4x7ku6p4blcd1pkxw2ijf97qa50a4x1ifxb7dn3n60it9uog35l5ndlm256ykk3gvq468mlssnnv4ne0daorar"}›2786 #prevent_sharing_groups_outside_hierarchy2787 when this namespace is a root ancestor2788 returns the actual stored value2789 when this namespace is a descendant2790 returns the value stored for the parent settings2791 #show_diff_preview_in_email?2792 when not a subgroup2793 does not query the db when there is no parent group2794 when :show_diff_preview_in_email is false2795 returns false2796 when :show_diff_preview_in_email is true2797 returns true2798 #emails_enabled?2799 when the groups setting is changed2800 returns false when the attribute is false2801 when a group has a parent2802 returns true when no parent has disabled emails2803 when ancestor emails are disabled2804 returns false2805 when a group has parent groups2806 when a parent group has disabled diff previews2807 returns false2808 when all parent groups have enabled diff previews2809 returns true2810 runner registration settings2811 #runner_registration_enabled?2812 when runner registration is enabled2813 is expected to be truthy2814 behaves like with runner registration settings changing in hierarchy2815 when there are no parents2816 is expected to be truthy2817 when no group can register runners2818 is expected to be falsey2819 when there are parents2820 when a parent group has runner registration disabled2821 is expected to be falsey2822 when all parent groups have runner registration enabled2823 is expected to be truthy2824 when runner registration is disabled2825 is expected to be falsey2826 does not query the db2827 when group runner registration is disallowed2828 is expected to be falsey2829 #all_ancestors_have_runner_registration_enabled?2830 behaves like with runner registration settings changing in hierarchy2831 when there are no parents2832 is expected to be truthy2833 when no group can register runners2834 is expected to be falsey2835 when there are parents2836 when a parent group has runner registration disabled2837 is expected to be falsey2838 when all parent groups have runner registration enabled2839 is expected to be truthy2840 #allow_runner_registration_token?2841 when a top-level group2842 when :allow_runner_registration_token is false2843 returns false2844 does not query the db2845 when :allow_runner_registration_token is true2846 returns true2847 when disallowed by application setting2848 is expected to be falsey2849 when a group has parent groups2850 when a parent group has runner registration disabled2851 is expected to be falsey2852 when all parent groups have runner registration enabled2853 is expected to be truthy2854 when disallowed by application setting2855 is expected to be falsey2856 #delayed_project_removal2857 behaves like a cascading namespace setting boolean attribute2858 #delayed_project_removal2859 when there is no parent2860 and the value is not nil2861 returns the local value2862 and the value is nil2863 returns the application settings value2864 when parent does not lock the attribute2865 and value is not nil2866 returns local setting when present2867 returns the parent value when local value is nil2868 returns the correct dirty value2869 does not return the application setting value when parent value is false2870 and the value is nil2871 cascades to the application settings value2872 when multiple ancestors set a value2873 returns the closest ancestor value2874 when parent locks the attribute2875 returns the parent value2876 does not allow the local value to be saved2877 when the application settings locks the attribute2878 returns the application setting value2879 does not allow the local value to be saved2880 when parent locked the attribute then the application settings locks it2881 returns the application setting value2882 #delayed_project_removal?2883 aliases the method when the attribute is a boolean2884 #delayed_project_removal=2885 parent_value: true, current_subgroup_value: nil, new_subgroup_value: true, expected_subgroup_value_after_update: nil2886 validates starting values from before block2887 does not save the value locally when it matches cascaded value2888 when mass assigned2889 does not save the value locally when it matches cascaded value2890 parent_value: true, current_subgroup_value: nil, new_subgroup_value: "true", expected_subgroup_value_after_update: nil2891 validates starting values from before block2892 does not save the value locally when it matches cascaded value2893 when mass assigned2894 does not save the value locally when it matches cascaded value2895 parent_value: true, current_subgroup_value: false, new_subgroup_value: true, expected_subgroup_value_after_update: true2896 validates starting values from before block2897 does not save the value locally when it matches cascaded value2898 when mass assigned2899 does not save the value locally when it matches cascaded value2900 parent_value: true, current_subgroup_value: false, new_subgroup_value: "true", expected_subgroup_value_after_update: true2901 validates starting values from before block2902 does not save the value locally when it matches cascaded value2903 when mass assigned2904 does not save the value locally when it matches cascaded value2905 parent_value: true, current_subgroup_value: true, new_subgroup_value: false, expected_subgroup_value_after_update: false2906 validates starting values from before block2907 does not save the value locally when it matches cascaded value2908 when mass assigned2909 does not save the value locally when it matches cascaded value2910 parent_value: true, current_subgroup_value: true, new_subgroup_value: "false", expected_subgroup_value_after_update: false2911 validates starting values from before block2912 does not save the value locally when it matches cascaded value2913 when mass assigned2914 does not save the value locally when it matches cascaded value2915 parent_value: false, current_subgroup_value: nil, new_subgroup_value: false, expected_subgroup_value_after_update: nil2916 validates starting values from before block2917 does not save the value locally when it matches cascaded value2918 when mass assigned2919 does not save the value locally when it matches cascaded value2920 parent_value: false, current_subgroup_value: nil, new_subgroup_value: true, expected_subgroup_value_after_update: true2921 validates starting values from before block2922 does not save the value locally when it matches cascaded value2923 when mass assigned2924 does not save the value locally when it matches cascaded value2925 parent_value: false, current_subgroup_value: true, new_subgroup_value: false, expected_subgroup_value_after_update: false2926 validates starting values from before block2927 does not save the value locally when it matches cascaded value2928 when mass assigned2929 does not save the value locally when it matches cascaded value2930 parent_value: false, current_subgroup_value: false, new_subgroup_value: true, expected_subgroup_value_after_update: true2931 validates starting values from before block2932 does not save the value locally when it matches cascaded value2933 when mass assigned2934 does not save the value locally when it matches cascaded value2935 #delayed_project_removal_locked?2936 when attribute is locked by self2937 is not locked by default2938 is locked when including self2939 when parent does not lock the attribute2940 behaves like not locked2941 is not locked by an ancestor2942 is not locked by application setting2943 does not return a locked namespace2944 when parent locks the attribute2945 is locked by an ancestor2946 is not locked by application setting2947 returns a locked namespace settings object2948 when not locked by application settings2949 behaves like not locked2950 is not locked by an ancestor2951 is not locked by application setting2952 does not return a locked namespace2953 when locked by application settings2954 is not locked by an ancestor2955 is locked by application setting2956 does not return a locked namespace2957 #lock_delayed_project_removal=2958 when parent locks the attribute2959 does not allow the attribute to be saved2960 when parent does not lock the attribute2961 allows the lock to be set when the attribute is not nil2962 does not allow the lock to be saved when the attribute is nil2963 copies the cascaded value when locking the attribute if the local value is nil2964 when application settings locks the attribute2965 does not allow the attribute to be saved2966 when application_settings does not lock the attribute2967 allows the attribute to be saved2968 after update callback2969 clears descendant locks2970 default_branch_protection_defaults2971 returns the value for default_branch_protection_defaults2972 when provided with content that does not match the JSON schema2973 is expected to allow :default_branch_protection_defaults to be ‹{name: "bar"}›2974 is expected not to allow :default_branch_protection_defaults to be ‹{foo: "bar"}›2975Gitlab::Email::Message::RepositoryPush2976 new commits have been pushed to repository2977 #project2978 is expected to eq #<Project id:428 my_group/project-483>>2979 is expected to be an instance of Project2980 #project_namespace2981 is expected to eq #<Group id:1639 @my_group>2982 is expected to be a kind of Namespace(id: integer, name: string, path: string, owner_id: integer, created_at: datetime, updated_a...endants_override_disabled_shared_runners: boolean, traversal_ids: integer, organization_id: integer)2983 #project_name_with_namespace2984 is expected to eq "my_group / Project-487 Name"2985 #author2986 is expected to eq #<User id:1085 @user454>2987 is expected to be an instance of User2988 #author_name2989 is expected to eq "Author"2990 #commits2991 is expected to be a kind of CommitCollection2992 is expected to all be an instance of Commit2993 #diffs2994 is expected to all be an instance of Gitlab::Diff::File2995 #diffs_count2996 is expected to eq 92997 #compare2998 is expected to be an instance of Compare2999 #compare_timeout3000 is expected to eq false3001 #reverse_compare?3002 is expected to eq false3003 #disable_diffs?3004 is expected to eq false3005 #send_from_committer_email?3006 is expected to eq true3007 #action_name3008 is expected to eq "pushed to"3009 #ref_name3010 is expected to eq "master"3011 #ref_type3012 is expected to eq "branch"3013 #target_url3014 is expected to include "compare"3015 is expected to include "2f63565e7aac07bcdadb654e253078b727143ec4"3016 is expected to include "570e7b2abdd848b95f2f578043fc23bd6f6fd24d"3017 #subject3018 is expected to include "[Git][my_group/project-506]"3019 is expected to include "6 commits"3020 is expected to include "Ruby files modified"3021Gitlab::ImportExport::MembersMapper3022 map members3023 when importable is Project3024 includes the exported user ID in the map3025 maps a member3026 defaults to importer member if it does not exist3027 has invited members with no user3028 maps created_by_id to user on new instance3029 replaced user_id with user_id from new instance3030 adds users to project members3031 maps an owner as a maintainer3032 logging3033 logs member addition3034 when exporter member is invalid3035 logs member addition failure3036 user is not an admin3037 does not map a member3038 defaults to importer member if it does not exist3039 chooses the one with an email3040 maps the member that has a matching email3041 when user has email exported3042 maps a member3043 importer same as group member3044 maps the project member3045 maps the project member if it already exists3046 importing group members3047 maps the importer3048 maps the group member3049 when importer mapping fails3050 includes importer specific error message3051 when importer is not an admin3052 and the imported project is part of a group3053 behaves like it fetches the access level from parent group3054 and resolves it correctly3055 behaves like it fetches the access level from parent group3056 and resolves it correctly3057 behaves like it fetches the access level from parent group3058 and resolves it correctly3059 and the imported group is part of another group3060 behaves like it fetches the access level from parent group3061 and resolves it correctly3062 behaves like it fetches the access level from parent group3063 and resolves it correctly3064 behaves like it fetches the access level from parent group3065 and resolves it correctly3066 when importable is Group3067 includes the exported user ID in the map3068 maps a member3069 defaults to importer member if it does not exist3070 has invited members with no user3071 maps created_by_id to user on new instance3072 replaced user_id with user_id from new instance3073 does not lower owner access level3074 logging3075 logs member addition3076 when exporter member is invalid3077 logs member addition failure3078 user is not an admin3079 does not map a member3080 defaults to importer member if it does not exist3081 chooses the one with an email3082 maps the member that has a matching email3083 when user has email exported3084 maps a member3085Ci::Processable3086 delegations3087 is expected to delegate #merge_request? to the #pipeline object3088 is expected to delegate #merge_request_ref? to the #pipeline object3089 is expected to delegate #legacy_detached_merge_request_pipeline? to the #pipeline object3090 #clone3091 when the processable to be cloned is a bridge3092 behaves like clones the processable3093 creates a new processable that represents the old processable3094 clone accessors3095 clones the processable attributes3096 clones only the needs attributes3097 when the processable has protected: nil3098 clones the protected job attribute3099 reject accessors3100 does not clone rejected attributes3101 when the processable to be cloned is a build3102 has the correct number of known attributes3103 behaves like clones the processable3104 creates a new processable that represents the old processable3105 clone accessors3106 clones the processable attributes3107 clones only the needs attributes3108 when the processable has protected: nil3109 clones the protected job attribute3110 reject accessors3111 does not clone rejected attributes3112 when it has a deployment3113 persists the expanded environment name3114 when it has a dynamic environment3115 re-uses the previous persisted environment3116 when the processable has job variables3117 only clones the internal job variables3118 #retryable3119 when the processable is a bridge3120 behaves like retryable processable3121 when processable is successful3122 is expected to be retryable3123 when processable is failed3124 is expected to be retryable3125 when processable is canceled3126 is expected to be retryable3127 when the processable is a build3128 when the processable is retryable3129 behaves like retryable processable3130 when processable is successful3131 is expected to be retryable3132 when processable is failed3133 is expected to be retryable3134 when processable is canceled3135 is expected to be retryable3136 when deployment is rejected3137 is expected not to be retryable3138 when build is waiting for deployment approval3139 is expected not to be retryable3140 when the processable is non-retryable3141 behaves like non-retryable processable3142 when processable is skipped3143 is expected not to be retryable3144 when processable is degenerated3145 is expected not to be retryable3146 when a canceled processable has been retried already3147 is expected not to be retryable3148 when processable is running3149 is expected not to be retryable3150 #aggregated_needs_names3151 with created status3152 with needs3153 returns all processables3154 returns all needs3155 without needs3156 returns all processables3157 returns empty needs3158 validate presence of scheduling_type3159 importing: false, should_validate: true3160 on create3161 validates presence3162 on update3163 is expected not to validate that :scheduling_type cannot be empty/falsy3164 importing: true, should_validate: false3165 on create3166 validates presence3167 on update3168 is expected not to validate that :scheduling_type cannot be empty/falsy3169 .populate_scheduling_type!3170 populates scheduling_type of processables3171 does not affect processables from other pipelines3172 #needs_attributes3173 with needs3174 returns all needs attributes3175 without needs3176 is expected to be empty3177 state transition with resource group3178 when build status is created3179 is waiting for resource when build is enqueued3180 when build is waiting for resource3181 is enqueued when build requests resource3182 releases a resource when build finished3183 re-checks the resource group even if the processable does not retain a resource3184 when build has prerequisites3185 is preparing when build is enqueued3186 when there are no available resources3187 stays as waiting for resource when build requests resource3188 .manual_actions3189 behaves like manual actions for a job3190 is expected to include #<Ci::Build status: "manual", finished_at: nil, created_at: "2023-08-10 08:50:29.000000000 +0000", up...rocessed: false, scheduling_type: "stage", id: 290, stage_id: 204, partition_id: 100, tag_list: nil>3191 is expected to include #<Ci::Build status: "success", finished_at: nil, created_at: "2023-08-10 08:50:29.000000000 +0000", u...rocessed: false, scheduling_type: "stage", id: 292, stage_id: 205, partition_id: 100, tag_list: nil>3192 is expected not to include #<Ci::Build status: "created", finished_at: nil, created_at: "2023-08-10 08:50:29.000000000 +0000", u...rocessed: false, scheduling_type: "stage", id: 294, stage_id: 206, partition_id: 100, tag_list: nil>3193 behaves like manual actions for a job3194 is expected to include #<Ci::Bridge status: "manual", finished_at: nil, created_at: "2013-10-29 08:50:00.000000000 +0000", u...urce_at: nil, processed: false, scheduling_type: "stage", id: 299, stage_id: 207, partition_id: 100>3195 is expected to include #<Ci::Bridge status: "success", finished_at: nil, created_at: "2013-10-29 08:50:00.000000000 +0000", ...urce_at: nil, processed: false, scheduling_type: "stage", id: 301, stage_id: 208, partition_id: 100>3196 is expected not to include #<Ci::Bridge status: "created", finished_at: nil, created_at: "2013-10-29 08:50:00.000000000 +0000", ...urce_at: nil, processed: false, scheduling_type: "stage", id: 303, stage_id: 209, partition_id: 100>3197 #other_manual_actions3198 behaves like other manual actions for a job3199 returns other actions3200 when job is retried3201 does not return any of them3202 behaves like other manual actions for a job3203 returns other actions3204 when job is retried3205 does not return any of them3206DraftNote3207 validations3208 behaves like a valid diff positionable note3209 for commit3210 position diff refs matches commit diff refs3211 is valid3212 position diff refs does not match commit diff refs3213 is invalid3214 commit does not exist3215 is invalid3216 original_position=3217 doesn't accept non-hash JSON passed as a string3218 does accept a position hash as a string3219 doesn't accept an array3220 does accept a hash3221 position=3222 doesn't accept non-hash JSON passed as a string3223 does accept a position hash as a string3224 doesn't accept an array3225 does accept a hash3226 change_position=3227 doesn't accept non-hash JSON passed as a string3228 does accept a position hash as a string3229 doesn't accept an array3230 does accept a hash3231 schema validation3232 position_attrs: {:old_path=>"GKIuilQq1fiyQFXxoWoVWED4E6tT7axiV2YUSMNelNtl1nZdPlVspf4YIwSiFnqnZmDcmxWwH7k9UQcDK2LnMxUI7eRwIBzoBAhF4wuLRTASkOR72XQNc5beUQnZKcgFY9jm1ng3conRUgOIx828k5f5u7CzmLAcIZRdxg8ALRxu5YvPktj2HICtEzOHMDzq6rRmKo7sZZ5nXYSqrrUzNRLO0pl9Sy2Ao2gIFztnDMvpbLmWIcrM8BPQZtqhVtxnXWlrfOwpKdaoXL8PPBBHEVBrmTw08QzUH42nAm54neqZPggfNQAKsKlQzrqC22nQi9FLz51uq9B0w8Y8BpOleYT9t3W2vKozYS2Ozl8ETfOgrGz2ZuEhwDCenRVlBSn2l59Ssw7VAKOxGBxWCBUsC86HA9yL6Ya1UuINrjDnUsW9EJK7xHnyLg7TYoQRURSrvO48wURjlAWPfaKpNUpC7CqGbXHDltPyfP615wdGC7zNnyjjNK6HlWz3S72pphW5G4NsCyHcIVmiNPqWCI3Fyd9JDquMeX8RoCJcGdEmmSDUnRYcOcwcP0fReUAnx1kBa18bEUXQi8cFzW3mbauoLzKtIvRANB8woRmQmBEAQ64z5tT1NvJKSLbWP342TV2U7h03SA9j0LGjfVXv5B9EYUerjNxBpSRJtTKktWtjNwOkxg97otxLdLuhQ8FjNqDCZwRX93DG9PzGaEk20XfBXk5e8P0UaZMZ3RUbVhCLDHcszaQDZX8cmN2QeC4H5MnPmsSP0rhd9B2ZFOwwTFkcMCougyU7mZSzijVvblAFpUNT7iFAbahyOeDpFU4FyIa3uBUTpT2rO3XX7H4jrDI227HMPd54vcAgsLLCfs4dqUGFhNrpJgDspO07TOha9WnYRbgq4ubhMlZyoqA1sWiG7epaxsaUwdpZ9xpPBqNJ50vmBjDhFWAectyCu8GRcsZ9IEbtm53ruGK8UWFm42SC0NYLYJedyETbXdo0Sk5GQ"}3233 is expected to be invalid3234 position_attrs: {:new_path=>"Ba12zamRmY6qAqjrVUBRhMGFBZHqlRnruryUe3NBuJU5PQN2DMh96TX4UDhG6diyu6qzor42NFQxEMFQz60E8Mq5OErxJ2BBdLVRQb3m313CDCrgMQnjonZt4fqipMnXOKVtH344oeotCbJ3aZmFfL4VgFfaGnxKgSnUUkp8Prm3rD8iWZxVa0vzTHLLyHkeJCRUCpYi5qExd1xM1o0Fjws6J6m99vjLqDKDUTApm6ZJSIsUsgP22184Lz76vw6DP5XKrIoglhQ59jfksr9kv4dVh5TyHKVWYBRDHvxUIRHShS8ohoElrXDsxVvfQIDMlRHrvdbhONqKdWmhwDiaqPkq6m1eDZTSNGh5eVJNDNZ90WJrXfeZK46k8JBM0WtA1lgkBQgFVAjFSsJ4EVAzXSOKevvy3trmcFL7S5o31nUdRs0THXn46bBt5ldrJjr6IIqFzgb0jIiJsQQfCB5xEYtl3OtzRdYbxVYlmbXQJFFyeG7z0ZOFVMpck1BBZZHgCNighNlVUIIuqjsFlnyvhz8SqQ4d3Tvfsm4VjWmoCbho5x1CX0P3LfBfklwWqE6pEHNHUMxM8npMZF8k6hMonghstsY9o2m3uvvL6ZveuBj25vjeDvLFiGkQwYL1pagXam3NNGwCBzpfu4FEPwWhCUe1RQXbzR14suoRQ5GsS2dBfy5GvlcqpAY767nf5dpTjcGT8i6k04seeUXr3ir6rUeM4jxAsdSxeIwUUpMHqnVedMUkHX8LotLmdAUHKXXkxyGjRTGRChG17glPY7UPRxXKHjxn3OeEBedhMti4ugPUOh5Yw162BRDWHgQ5qBruKt0489wEAeepavPtcfAWcYqOwpoznEZvpZsNLGeSv2GFhWhzXNFYwd9bbmuQccHdoonfchl5MsFhfDiJChFShGS3UwWuYKiYz8R5Ba5lUbphlQqfB2eRD8Wg7CEREJ6VmB1DnyZvlmz5hgeLl8IPZyFeBxVyVtLvAIyBv9skX"}3235 is expected to be invalid3236 position_attrs: {:old_line=>"foo"}3237 is expected to be invalid3238 position_attrs: {:new_line=>"foo"}3239 is expected to be invalid3240 position_attrs: {:line_range=>{:foo=>"bar"}}3241 is expected to be invalid3242 position_attrs: {:line_range=>{:line_code=>"7xG6aqC1u2dw6w8Ce4ZT9SpXxoex6y0lrEtu0DczuMKqoG2wMp7mqeOKU0Le8pcaTYpMxtkIoksgoaiXEDJudR7s4Lt9PsRVs2JVG"}}3243 is expected to be invalid3244 position_attrs: {:line_range=>{:type=>"4hRFMPZucKtbfSnvPKJ2yvaCEA8iyPsyzFqse13D9MbAMogKioxoayeqtXDXOdnSgdMy51a89WJlOVilOepXTvM1U457MR91rM1lv"}}3245 is expected to be invalid3246 position_attrs: {:line_range=>{:old_line=>"foo"}}3247 is expected to be invalid3248 position_attrs: {:line_range=>{:new_line=>"foo"}}3249 is expected to be invalid3250 delegations3251 is expected to delegate #file_path to the #diff_file object, allowing #diff_file to return nil3252 is expected to delegate #file_hash to the #diff_file object, allowing #diff_file to return nil3253 is expected to delegate #file_identifier_hash to the #diff_file object, allowing #diff_file to return nil3254 #line_code3255 stored line_code3256 returns stored line_code3257 none stored line_code3258 returns found line_code3259 #diff_file3260 when diff_file exists3261 returns an unfolded diff_file3262 when diff_file does not exist3263 returns nil3264Gitlab::ImportExport::Project::ObjectBuilder3265 request store is not active3266 ignore cache initialize3267 request store is active3268 initialize cache in memory3269 cache object when first time find the object3270 read from cache when object has been cached3271 labels3272 finds the existing group label3273 finds the existing group label in root ancestor3274 creates a new project label3275 milestones3276 finds the existing group milestone3277 finds the existing group milestone in root ancestor3278 creates a new milestone3279 with clashing iid3280 creates milestone and claims iid for the new milestone3281 work item types3282 returns the correct type by base type3283 caches the results3284 merge_request3285 finds the existing merge_request3286 creates a new merge_request3287 merge request diff commit users3288 finds the existing user3289 creates a new user3290 merge request diff commits3291 when the "committer" object is present3292 uses this object as the committer3293 when the "committer" object is missing3294 creates one from the committer name and Email3295 when the "commit_author" object is present3296 uses this object as the author3297 when the "commit_author" object is missing3298 creates one from the author name and Email3299 #find_or_create_diff_commit_user3300 caches the results3301 when the user already exists3302 returns the existing user3303 when the user does not exist3304 creates the user3305PersonalFileUploader3306 #upload_paths3307 builds correct paths for both local and remote storage3308 object_store is LOCAL3309 behaves like builds correct paths3310 #store_dir3311 behaves like matches the method pattern3312 is expected to match /uploads\/-\/system\/personal_snippet\/\d+\/\h+/3313 #cache_dir3314 behaves like matches the method pattern3315 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3316 #work_dir3317 behaves like matches the method pattern3318 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3319 #upload_path3320 behaves like matches the method pattern3321 is expected to match /\h+\/\S+/3322 #relative_path3323 is relative (PENDING: Path not set, skipping.)3324 .absolute_path3325 behaves like matches the method pattern3326 is expected to match /\/builds\/gitlab-org\/gitlab\/tmp\/tests\/public\/uploads\/-\/system\/personal_snippet\/\d+\/\h+\/\S+$/3327 .base_dir3328 behaves like matches the method pattern3329 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3330 path traversal exploits3331 throws an exception3332 behaves like #base_dir3333 is prefixed with uploads/-/system3334 behaves like #to_h3335 is correct3336 object_store is REMOTE3337 behaves like builds correct paths3338 #store_dir3339 behaves like matches the method pattern3340 is expected to match /\d+\/\h+/3341 #cache_dir3342 behaves like matches the method pattern3343 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3344 #work_dir3345 behaves like matches the method pattern3346 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3347 #upload_path3348 behaves like matches the method pattern3349 is expected to match /^personal_snippet\/\d+\/\h+\/<filename>/3350 #relative_path3351 is relative (PENDING: Path not set, skipping.)3352 .absolute_path3353 behaves like matches the method pattern3354 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3355 .base_dir3356 behaves like matches the method pattern3357 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3358 path traversal exploits3359 throws an exception3360 behaves like #base_dir3361 is prefixed with uploads/-/system3362 behaves like #to_h3363 is correct3364 #migrate!3365 behaves like migrates3366 returns corresponding file type3367 does nothing when migrating to the current store3368 migrate to the specified store3369 removes the original file after the migration3370 can access to the original file during migration3371 when migrate! is not occupied by another process3372 executes migrate!3373 executes use_file3374 when migrate! is occupied by another process3375 does not execute migrate!3376 does not execute use_file3377 migration is unsuccessful3378 when the store is not supported3379 does not update the object_store3380 does not delete the original file3381 upon a fog failure3382 does not update the object_store3383 does not delete the original file3384 upon a database failure3385 does not update the object_store3386 does not delete the original file3387 behaves like migrates3388 returns corresponding file type3389 does nothing when migrating to the current store3390 migrate to the specified store3391 removes the original file after the migration3392 can access to the original file during migration3393 when migrate! is not occupied by another process3394 executes migrate!3395 executes use_file3396 when migrate! is occupied by another process3397 does not execute migrate!3398 does not execute use_file3399 migration is unsuccessful3400 when the store is not supported3401 does not update the object_store3402 does not delete the original file3403 upon a fog failure3404 does not update the object_store3405 does not delete the original file3406 upon a database failure3407 does not update the object_store3408 does not delete the original file3409Projects::MoveForksService3410 #execute3411 rollbacks changes if transaction fails3412 when moving a root forked project3413 moves the descendant forks3414 updates the fork network3415 when moving a intermediate forked project3416 moves the descendant forks3417 moves the ascendant fork3418 does not update fork network3419 when moving a leaf forked project3420 moves the ascendant fork3421 does not update fork network3422ProjectMemberPolicy3423 with regular member3424 is expected to be allowed :read_project3425 is expected to be allowed :update_project_member3426 is expected to be allowed :destroy_project_member3427 is expected not to be allowed :destroy_project_bot_member3428 when user is the holder of personal namespace in which the project resides3429 is expected to be allowed :read_project3430 is expected to be disallowed :update_project_member3431 is expected to be disallowed :destroy_project_member3432 with a bot member3433 is expected to be allowed :destroy_project_bot_member3434 is expected not to be allowed :update_project_member3435 is expected not to be allowed :destroy_project_member3436 for access requests3437 for own access request3438 is expected to be allowed :withdraw_member_access_request3439 for another user's access request3440 is expected not to be allowed :withdraw_member_access_request3441 for own, valid membership3442 is expected not to be allowed :withdraw_member_access_request3443Projects::CleanupService3444 .enqueue3445 makes the repository read-only3446 sets the bfg_object_map of the project3447 enqueues a RepositoryCleanupWorker3448 returns success3449 returns an error if making the repository read-only fails3450 returns an error if updating the project fails3451 .cleanup_after3452 sets the repository read-write3453 removes the BFG object map3454 #execute3455 runs the apply_bfg_object_map_stream gitaly RPC3456 runs garbage collection on the repository3457 clears the repository cache3458 removes the object map file3459 makes the repository read-write again3460 raises an error if no object map can be found3461 with a tainted merge request diff3462 removes the tainted commit from the database3463 ignores non-commit responses from Gitaly3464 with a tainted diff note3465 removes the tainted commit from the database3466 removes the highlight cache from redis3467 ignores non-commit responses from Gitaly3468Awardable3469 Associations3470 is expected to have many award_emoji dependent => destroy3471 ClassMethods3472 orders3473 orders on upvotes3474 orders on downvotes3475 #awarded3476 filters by user and emoji name3477 filters by user and any emoji3478 #not_awarded3479 returns notes not awarded by user3480 #upvotes3481 counts the number of upvotes3482 #downvotes3483 counts the number of downvotes3484 #user_can_award?3485 is truthy when the user is allowed to award emoji3486 is falsy when the project is archived3487 querying award_emoji on an Awardable3488 sorts in ascending fashion3489 #grouped_awards3490 default award emojis3491 includes unused thumbs buttons by default3492 doesn't include unused thumbs buttons when disabled in project3493 includes unused thumbs buttons when enabled in project3494 doesn't include unused thumbs buttons in summary3495 includes used thumbs buttons when disabled in project3496 includes used thumbs buttons in summary3497Ml::Candidate3498 associations3499 is expected to belong to experiment required: false3500 is expected to belong to project required: false3501 is expected to belong to user required: false3502 is expected to belong to package required: false3503 is expected to belong to ci_build class_name => Ci::Build required: false3504 is expected to have many params3505 is expected to have many metrics3506 is expected to have many metadata3507 modules3508 behaves like AtomicInternalId3509 .has_internal_id3510 Module inclusion3511 is expected to includes the AtomicInternalId module3512 Validation3513 when presence validation is required3514 when creating an object3515 raises an error if the internal id is blank3516 when updating an object3517 raises an error if the internal id is blank3518 when presence validation is not required3519 when creating an object3520 does not raise an error if the internal id is blank (PENDING: No reason given)3521 when updating an object3522 does not raise an error if the internal id is blank (PENDING: No reason given)3523 Creating an instance3524 saves a new instance properly3525 internal id generation3526 calls InternalId.generate_next and sets internal id attribute3527 does not overwrite an existing internal id3528 when the instance has an internal ID set3529 calls InternalId.update_last_value and sets the `last_value` to that of the instance3530 unsetting the instance internal id on rollback3531 when the internal id has been changed3532 when the internal id is automatically set3533 clears it on the instance3534 when the internal id is manually set3535 does not clear it on the instance3536 when the internal id has not been changed3537 preserves the value on the instance3538 supply of internal ids3539 provides a persistent supply of IID values, sensitive to the current state3540 #reset_scope_internal_id_attribute3541 rewinds the allocated IID3542 allocates the same IID3543 default values3544 is expected to be present3545 .destroy3546 destroys metrics, params and metadata, but not the artifact3547 .artifact_root3548 is expected to eq "/ml_experiment_1/1/"3549 .package_version3550 is expected to eq 13551 .eid3552 is expected to eq "c1e7bdb4-0485-4871-877e-63d3d3e0e484"3553 .artifact3554 when has logged artifacts3555 returns the package3556 when does not have logged artifacts3557 is expected to be nil3558 #by_project_id_and_eid3559 when eid exists and belongs to project3560 is expected to eq #<Ml::Candidate id: 1, created_at: "2023-08-10 12:39:53.125855026 +0000", updated_at: "2023-08-10 12:... 42, eid: "72e02db5-446c-4ecc-936a-f1914a7efe1c", project_id: 663, internal_id: 1, ci_build_id: nil>3561 when eid exists and does not belong to project3562 is expected to be nil3563 when eid does not exist3564 is expected to be nil3565 #by_project_id_and_iid3566 when internal_id exists and belongs to project3567 is expected to eq #<Ml::Candidate id: 1, created_at: "2023-08-10 12:39:53.125855026 +0000", updated_at: "2023-08-10 12:... 42, eid: "72e02db5-446c-4ecc-936a-f1914a7efe1c", project_id: 663, internal_id: 1, ci_build_id: nil>3568 when internal_id exists and does not belong to project3569 is expected to be nil3570 when internal_id does not exist3571 is expected to be nil3572 #latest_metrics3573 fetches only the last metric for the name3574 #including_relationships3575 loads latest metrics and params3576 #by_name3577 when name matches3578 gets the correct candidates3579 when name matches partially3580 gets the correct candidates3581 when name does not match3582 does not fetch any candidate3583 from_ci?3584 is false if candidate does not have ci_build_id3585 is true if candidate does has ci_build_id3586 #order_by_metric3587 orders correctly3588 when direction is asc3589 orders correctly3590 with loose foreign key on ml_candidates.ci_build_id3591 behaves like cleanup by a loose foreign key3592 cleans up (delete or nullify) the model3593ContainerRegistry::Client3594 #repository_manifest3595 behaves like handling repository manifest3596 GET /v2/:name/manifests/mytag3597 behaves like handling timeouts3598 handles network timeouts3599 logs the error3600 behaves like handling repository manifest3601 GET /v2/:name/manifests/mytag3602 behaves like handling timeouts3603 handles network timeouts3604 logs the error3605 #blob3606 GET /v2/:name/blobs/:digest3607 with a 307 redirect3608 behaves like handling redirects3609 follows the redirect3610 with a redirect location with params ending with =3611 behaves like handling redirects3612 follows the redirect3613 with a redirect location with params ending with %3D3614 behaves like handling redirects3615 follows the redirect3616 behaves like handling timeouts3617 handles network timeouts3618 logs the error3619 #upload_blob3620 with successful uploads3621 starts the upload and posts the blob3622 with a failed upload3623 returns a failure3624 #generate_empty_manifest3625 uploads a random image and returns the manifest3626 when upload fails3627 is expected to equal nil3628 #put_tag3629 uploads the manifest and returns the digest3630 #delete_repository_tag_by_name3631 when the tag exists3632 is expected to be truthy3633 when the tag does not exist3634 is expected to be truthy3635 when an error occurs3636 is expected to be falsey3637 #supports_tag_delete?3638 registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: true3639 returns the expected result3640 registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: true, expected_result: true3641 returns the expected result3642 registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: true3643 returns the expected result3644 registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: true3645 returns the expected result3646 registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: true3647 returns the expected result3648 registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: true, expected_result: false3649 returns the expected result3650 registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: false3651 returns the expected result3652 registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: false3653 returns the expected result3654 #registry_info3655 behaves like handling repository info3656 when the check is successful3657 when using the GitLab container registry3658 identifies the vendor as "gitlab"3659 identifies version and features3660 when using a third-party container registry3661 identifies the vendor as "other"3662 does not identify version or features3663 when the check is not successful3664 does not identify vendor, version or features3665 .supports_tag_delete?3666 registry_api_url: "http://sandbox.local", registry_enabled: true, registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: true3667 returns the expected result3668 registry_api_url: "http://sandbox.local", registry_enabled: true, registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: true, expected_result: true3669 returns the expected result3670 registry_api_url: "http://sandbox.local", registry_enabled: true, registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: true3671 returns the expected result3672 registry_api_url: "http://sandbox.local", registry_enabled: true, registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: true, expected_result: false3673 returns the expected result3674 registry_api_url: "http://sandbox.local", registry_enabled: false, registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false3675 returns the expected result3676 registry_api_url: "http://sandbox.local", registry_enabled: false, registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false3677 returns the expected result3678 registry_api_url: "http://sandbox.local", registry_enabled: false, registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false3679 returns the expected result3680 registry_api_url: "http://sandbox.local", registry_enabled: false, registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false3681 returns the expected result3682 registry_api_url: "http://sandbox.local", registry_enabled: true, registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: true3683 returns the expected result3684 registry_api_url: "http://sandbox.local", registry_enabled: true, registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: true3685 returns the expected result3686 registry_api_url: "http://sandbox.local", registry_enabled: true, registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: false3687 returns the expected result3688 registry_api_url: "http://sandbox.local", registry_enabled: true, registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: false3689 returns the expected result3690 registry_api_url: "http://sandbox.local", registry_enabled: false, registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false3691 returns the expected result3692 registry_api_url: "http://sandbox.local", registry_enabled: false, registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false3693 returns the expected result3694 registry_api_url: "http://sandbox.local", registry_enabled: false, registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false3695 returns the expected result3696 registry_api_url: "http://sandbox.local", registry_enabled: false, registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false3697 returns the expected result3698 registry_api_url: "", registry_enabled: true, registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false3699 returns the expected result3700 registry_api_url: "", registry_enabled: true, registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false3701 returns the expected result3702 registry_api_url: "", registry_enabled: true, registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false3703 returns the expected result3704 registry_api_url: "", registry_enabled: true, registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false3705 returns the expected result3706 registry_api_url: "", registry_enabled: false, registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false3707 returns the expected result3708 registry_api_url: "", registry_enabled: false, registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false3709 returns the expected result3710 registry_api_url: "", registry_enabled: false, registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false3711 returns the expected result3712 registry_api_url: "", registry_enabled: false, registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false3713 returns the expected result3714 registry_api_url: "", registry_enabled: true, registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false3715 returns the expected result3716 registry_api_url: "", registry_enabled: true, registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false3717 returns the expected result3718 registry_api_url: "", registry_enabled: true, registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false3719 returns the expected result3720 registry_api_url: "", registry_enabled: true, registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false3721 returns the expected result3722 registry_api_url: "", registry_enabled: false, registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false3723 returns the expected result3724 registry_api_url: "", registry_enabled: false, registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false3725 returns the expected result3726 registry_api_url: "", registry_enabled: false, registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false3727 returns the expected result3728 registry_api_url: "", registry_enabled: false, registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false3729 returns the expected result3730 #repository_tags3731 returns a successful response3732 .registry_info3733 behaves like handling repository info3734 when the check is successful3735 when using the GitLab container registry3736 identifies the vendor as "gitlab"3737 identifies version and features3738 when using a third-party container registry3739 identifies the vendor as "other"3740 does not identify version or features3741 when the check is not successful3742 does not identify vendor, version or features3743Milestones::TransferService3744 #execute3745 when old_group is present3746 without existing milestone at the new group level3747 recreates the missing group milestones at project level3748 applies new project milestone to issues with group milestone3749 deletes milestone counters cache for both milestones3750 does not apply new project milestone to issues with project milestone3751 applies new project milestone to merge_requests with group milestone3752 does not apply new project milestone to issuables with project milestone3753 does not recreate missing group milestones that are not applied to issues or merge requests3754 when milestone is from an ancestor group3755 recreates the missing group milestones at project level3756 when find_or_create_milestone returns nil3757 removes issues group milestone3758 removes merge requests group milestone3759 with existing milestone at the new group level3760 does not create a new milestone3761 applies existing milestone to issues with group milestone3762 applies existing milestone to merge_requests with group milestone3763 when old_group is not present3764 returns nil3765NamespaceFileUploader3766 behaves like builds correct paths3767 #store_dir3768 behaves like matches the method pattern3769 is expected to match /uploads\/-\/system\/namespace\/\d+/3770 #cache_dir3771 behaves like matches the method pattern3772 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3773 #work_dir3774 behaves like matches the method pattern3775 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3776 #upload_path3777 behaves like matches the method pattern3778 is expected to match /\h+\/\S+/3779 #relative_path3780 is relative (PENDING: Path not set, skipping.)3781 .absolute_path3782 behaves like matches the method pattern3783 is expected to match /\/builds\/gitlab-org\/gitlab\/tmp\/tests\/public\/uploads\/-\/system\/namespace\/\d+\/(?-mix:\h+\/\S+)/3784 .base_dir3785 behaves like matches the method pattern3786 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3787 path traversal exploits3788 throws an exception3789 object_store is REMOTE3790 behaves like builds correct paths3791 #store_dir3792 behaves like matches the method pattern3793 is expected to match /namespace\/\d+\/\h+/3794 #cache_dir3795 behaves like matches the method pattern3796 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3797 #work_dir3798 behaves like matches the method pattern3799 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3800 #upload_path3801 behaves like matches the method pattern3802 is expected to match /\h+\/\S+/3803 #relative_path3804 is relative (PENDING: Path not set, skipping.)3805 .absolute_path3806 behaves like matches the method pattern3807 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3808 .base_dir3809 behaves like matches the method pattern3810 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3811 path traversal exploits3812 throws an exception3813 .base_dir3814 returns local storage base_dir without store param3815 returns local storage base_dir when store param is Store::LOCAL3816 returns remote base_dir when store param is Store::REMOTE3817 #workhorse_local_upload_path3818 returns the correct path in uploads directory3819 #migrate!3820 behaves like migrates3821 returns corresponding file type3822 does nothing when migrating to the current store3823 migrate to the specified store3824 removes the original file after the migration3825 can access to the original file during migration3826 when migrate! is not occupied by another process3827 executes migrate!3828 executes use_file3829 when migrate! is occupied by another process3830 does not execute migrate!3831 does not execute use_file3832 migration is unsuccessful3833 when the store is not supported3834 does not update the object_store3835 does not delete the original file3836 upon a fog failure3837 does not update the object_store3838 does not delete the original file3839 upon a database failure3840 does not update the object_store3841 does not delete the original file3842 behaves like migrates3843 returns corresponding file type3844 does nothing when migrating to the current store3845 migrate to the specified store3846 removes the original file after the migration3847 can access to the original file during migration3848 when migrate! is not occupied by another process3849 executes migrate!3850 executes use_file3851 when migrate! is occupied by another process3852 does not execute migrate!3853 does not execute use_file3854 migration is unsuccessful3855 when the store is not supported3856 does not update the object_store3857 does not delete the original file3858 upon a fog failure3859 does not update the object_store3860 does not delete the original file3861 upon a database failure3862 does not update the object_store3863 does not delete the original file3864 copy_to3865 files are stored locally3866 generates a new secret3867 creates new upload correctly3868 copies the file3869 copies the file to the correct location3870 files are stored remotely3871 generates a new secret3872 creates new upload correctly3873 copies the file3874 copies the file to the correct location3875Ci::DailyBuildGroupReportResult3876 associations3877 is expected to belong to last_pipeline class_name => Ci::Pipeline required: false inverse_of => daily_build_group_report_results3878 is expected to belong to project required: false3879 is expected to belong to group required: false3880 validations3881 when attributes are valid3882 returns no errors3883 when data is invalid3884 returns errors3885 .upsert_reports3886 creates or updates matching report results3887 when given data is empty3888 does nothing3889 scopes3890 .by_projects3891 returns records by projects3892 .by_group3893 returns records by group3894 .by_ref_path3895 returns coverages by ref_path3896 .ordered_by_date_and_group_name3897 returns coverages ordered by data and group name3898 .by_dates3899 when daily coverages exist during those dates3900 returns coverages3901 .with_coverage3902 returns data with coverage3903 .with_default_branch3904 when coverage for the default branch exist3905 returns coverage with the default branch3906 when coverage for the default branch does not exist3907 returns an empty collection3908 behaves like cleanup by a loose foreign key3909 cleans up (delete or nullify) the model3910 behaves like cleanup by a loose foreign key3911 cleans up (delete or nullify) the model3912PipelineSerializer3913 # order random3914 #represent3915 when used without pagination3916 created a not paginated serializer3917 when a single object is being serialized3918 serializers the pipeline object3919 when multiple objects are being serialized3920 serializers the array of pipelines3921 when used with pagination3922 created a paginated serializer3923 when resource is not paginatable3924 when a single pipeline object is being serialized3925 raises error3926 when resource is paginatable relation3927 when a single pipeline object is present in relation3928 serializes pipeline relation3929 when a multiple pipeline objects are being serialized3930 serializes appropriate number of objects3931 appends relevant headers3932 when there are pipelines for merge requests3933 includes merge requests information3934 preloads related merge requests3935 number of queries when preloaded3936 with the same ref3937 verifies number of queries3938 with different refs3939 verifies number of queries3940 with triggered pipelines3941 verifies number of queries3942 with build environments3943 executes one query to fetch all related environments3944 with scheduled and manual builds3945 sends at most one metadata query for each type of build3946 #represent_status3947 when represents only status3948 serializes only status3949Packages::Nuget::Metadatum3950 is expected to be a kind of Packages::Nuget::VersionNormalizable3951 is expected to delegate #package_version to the #package object as #version3952 relationships3953 is expected to belong to package required: false inverse_of => nuget_metadatum3954 validations3955 is expected to validate that :package cannot be empty/falsy3956 is expected to validate that :authors cannot be empty/falsy3957 is expected to validate that the length of :authors is at most 2553958 is expected to validate that :description cannot be empty/falsy3959 is expected to validate that the length of :description is at most 40003960 for normalized_version presence3961 is expected to validate that :normalized_version cannot be empty/falsy3962 when nuget_normalized_version feature flag is disabled3963 is expected not to validate that :normalized_version cannot be empty/falsy3964 #license_url3965 is expected to allow :license_url to be ‹"http://sandbox.com"›3966 is expected to allow :license_url to be ‹"https://sandbox.com"›3967 is expected not to allow :license_url to be ‹"123"›3968 is expected not to allow :license_url to be ‹"sandbox.com"›3969 is expected to validate that the length of :license_url is at most 2553970 #ensure_nuget_package_type3971 rejects if not linked to a nuget package3972 #project_url3973 is expected to allow :project_url to be ‹"http://sandbox.com"›3974 is expected to allow :project_url to be ‹"https://sandbox.com"›3975 is expected not to allow :project_url to be ‹"123"›3976 is expected not to allow :project_url to be ‹"sandbox.com"›3977 is expected to validate that the length of :project_url is at most 2553978 #ensure_nuget_package_type3979 rejects if not linked to a nuget package3980 #icon_url3981 is expected to allow :icon_url to be ‹"http://sandbox.com"›3982 is expected to allow :icon_url to be ‹"https://sandbox.com"›3983 is expected not to allow :icon_url to be ‹"123"›3984 is expected not to allow :icon_url to be ‹"sandbox.com"›3985 is expected to validate that the length of :icon_url is at most 2553986 #ensure_nuget_package_type3987 rejects if not linked to a nuget package3988 .normalized_version_in3989 is expected to contain exactly #<Packages::Nuget::Metadatum package_id: 44, license_url: "http://www.gitlab.com", project_url: "http...: "http://www.gitlab.com", authors: "Authors", description: [FILTERED], normalized_version: "1.0.4">3990 callbacks3991 #set_normalized_version3992 version: "1.0", normalized_version: "1.0.0"3993 saves the normalized version3994 when the nuget_normalized_version feature flag is disabled3995 does not save the normalized version3996 version: "1.0.0.0", normalized_version: "1.0.0"3997 saves the normalized version3998 when the nuget_normalized_version feature flag is disabled3999 does not save the normalized version4000 version: "0.1", normalized_version: "0.1.0"4001 saves the normalized version4002 when the nuget_normalized_version feature flag is disabled4003 does not save the normalized version4004 version: "1.0.7+r3456", normalized_version: "1.0.7"4005 saves the normalized version4006 when the nuget_normalized_version feature flag is disabled4007 does not save the normalized version4008 version: "8.0.0.00+RC.54", normalized_version: "8.0.0"4009 saves the normalized version4010 when the nuget_normalized_version feature flag is disabled4011 does not save the normalized version4012 version: "1.0.0-Alpha", normalized_version: "1.0.0-alpha"4013 saves the normalized version4014 when the nuget_normalized_version feature flag is disabled4015 does not save the normalized version4016 version: "1.0.00-RC-02", normalized_version: "1.0.0-rc-02"4017 saves the normalized version4018 when the nuget_normalized_version feature flag is disabled4019 does not save the normalized version4020 version: "8.0.000-preview.0.546.0", normalized_version: "8.0.0-preview.0.546.0"4021 saves the normalized version4022 when the nuget_normalized_version feature flag is disabled4023 does not save the normalized version4024 version: "0.1.0-dev.37+0999370", normalized_version: "0.1.0-dev.37"4025 saves the normalized version4026 when the nuget_normalized_version feature flag is disabled4027 does not save the normalized version4028 version: "1.2.3", normalized_version: "1.2.3"4029 saves the normalized version4030 when the nuget_normalized_version feature flag is disabled4031 does not save the normalized version4032Releases::Link4033 associations4034 is expected to belong to release required: false4035 validation4036 is expected to validate that :url cannot be empty/falsy4037 is expected to validate that :name cannot be empty/falsy4038 is expected to validate that the length of :filepath is at most 1284039 when url is invalid4040 will be invalid4041 when duplicate name is added to a release4042 raises an error4043 when duplicate url is added to a release4044 raises an error4045 when duplicate filepath is added to a release4046 raises an error4047 .sorted4048 returns a list of links by created_at order4049 #internal?4050 is expected to be truthy4051 when link does not include project web url4052 is expected to be falsy4053 supported protocols4054 protocol: "http"4055 will be valid4056 protocol: "https"4057 will be valid4058 protocol: "ftp"4059 will be valid4060 unsupported protocol4061 for torrent4062 will be invalid4063 when filepath is greater than max length4064 will not execute regex4065 FILEPATH_REGEX with table4066 reason: "cannot contain `//`", filepath: "/https//www.example.com", result: #<RSpec::Matchers::BuiltIn::BePredicate:0x00007abfb431ea90 @method_name=:be_invalid, @args=[], @block=nil>4067 is expected to be invalid4068 reason: "cannot start with `//`", filepath: "//www.example.com", result: #<RSpec::Matchers::BuiltIn::BePredicate:0x00007abfb431c8a8 @method_name=:be_invalid, @args=[], @block=nil>4069 is expected to be invalid4070 reason: "cannot contain a `?`", filepath: "/example.com/?stuff=true", result: #<RSpec::Matchers::BuiltIn::BePredicate:0x00007abfb4316408 @method_name=:be_invalid, @args=[], @block=nil>4071 is expected to be invalid4072 reason: "cannot contain a `:`", filepath: "/example:5000", result: #<RSpec::Matchers::BuiltIn::BePredicate:0x00007abfb43147c0 @method_name=:be_invalid, @args=[], @block=nil>4073 is expected to be invalid4074 reason: "cannot end in a `-`", filepath: "/binaries/awesome-app.dmg-", result: #<RSpec::Matchers::BuiltIn::BePredicate:0x00007abfb430e168 @method_name=:be_invalid, @args=[], @block=nil>4075 is expected to be invalid4076 reason: "cannot end in a `.`", filepath: "/binaries/awesome-app.dmg.", result: #<RSpec::Matchers::BuiltIn::BePredicate:0x00007abfb430c3b8 @method_name=:be_invalid, @args=[], @block=nil>4077 is expected to be invalid4078 reason: "cannot end in a `_`", filepath: "/binaries/awesome-app.dmg_", result: #<RSpec::Matchers::BuiltIn::BePredicate:0x00007abfb4305f68 @method_name=:be_invalid, @args=[], @block=nil>4079 is expected to be invalid4080 reason: "cannot start with a `.`", filepath: ".binaries/awesome-app.dmg", result: #<RSpec::Matchers::BuiltIn::BePredicate:0x00007abfb4304208 @method_name=:be_invalid, @args=[], @block=nil>4081 is expected to be invalid4082 reason: "cannot start with a `-`", filepath: "-binaries/awesome-app.dmg", result: #<RSpec::Matchers::BuiltIn::BePredicate:0x00007abfb42fe4e8 @method_name=:be_invalid, @args=[], @block=nil>4083 is expected to be invalid4084 reason: "cannot start with a `_`", filepath: "_binaries/awesome-app.dmg", result: #<RSpec::Matchers::BuiltIn::BePredicate:0x00007abfb42fc468 @method_name=:be_invalid, @args=[], @block=nil>4085 is expected to be invalid4086 reason: "cannot start with a number", filepath: "3binaries/awesome-app.dmg", result: #<RSpec::Matchers::BuiltIn::BePredicate:0x00007abfb42f26c0 @method_name=:be_invalid, @args=[], @block=nil>4087 is expected to be invalid4088 reason: "cannot start with a letter", filepath: "binaries/awesome-app.dmg", result: #<RSpec::Matchers::BuiltIn::BePredicate:0x00007abfb42f06e0 @method_name=:be_invalid, @args=[], @block=nil>4089 is expected to be invalid4090 reason: "cannot contain accents", filepath: "/binarïes/âwésome-app.dmg", result: #<RSpec::Matchers::BuiltIn::BePredicate:0x00007abfb42ea178 @method_name=:be_invalid, @args=[], @block=nil>4091 is expected to be invalid4092 reason: "can end in a character", filepath: "/binaries/awesome-app.dmg", result: #<RSpec::Rails::Matchers::BeValid:0x00007abfb42e82d8 @args=[]>4093 is expected to be valid4094 reason: "can end in a number", filepath: "/binaries/awesome-app-1", result: #<RSpec::Rails::Matchers::BeValid:0x00007abfb42e2540 @args=[]>4095 is expected to be valid4096 reason: "can contain one or more dots, dashes or underscores", filepath: "/sub_tr__ee.ex..ample-2--1/v99.com", result: #<RSpec::Rails::Matchers::BeValid:0x00007abfb42e0740 @args=[]>4097 is expected to be valid4098 reason: "can contain multiple non-sequential slashes", filepath: "/example.com/path/to/file.exe", result: #<RSpec::Rails::Matchers::BeValid:0x00007abfb42da480 @args=[]>4099 is expected to be valid4100 reason: "can be nil", filepath: nil, result: #<RSpec::Rails::Matchers::BeValid:0x00007abfb42d8b30 @args=[]>4101 is expected to be valid4102Releases::UpdateService4103 #execute4104 successfully updates an existing release4105 executes hooks4106 when the tag does not exists4107 behaves like a failed update4108 raises an error4109 when the release does not exist4110 behaves like a failed update4111 raises an error4112 when a milestone is passed in4113 a different milestone4114 behaves like updates milestones4115 updates the related milestone accordingly4116 an identical milestone4117 raises an error4118 by ids4119 behaves like updates milestones4120 updates the related milestone accordingly4121 when an 'empty' milestone is passed in4122 by title4123 behaves like removes milestones4124 removes the old milestone and does not associate any new milestone4125 by id4126 behaves like removes milestones4127 removes the old milestone and does not associate any new milestone4128 when multiple new milestones are passed in4129 by title4130 behaves like updates multiple milestones4131 removes the old milestone and update the release with the new ones4132 by id4133 behaves like updates multiple milestones4134 removes the old milestone and update the release with the new ones4135Wikis::CreateAttachmentService4136 initialization4137 author commit info4138 does not raise error if user is nil4139 when no author info provided4140 fills author_email and author_name from current_user info4141 when author info provided4142 fills author_email and author_name from params4143 commit message4144 when no commit message provided4145 sets a default commit message4146 when commit message provided4147 use the commit message from params4148 branch name4149 when no branch provided4150 sets the branch from the wiki default_branch4151 when branch provided4152 use the commit message from params4153 #parse_file_name4154 when file_name4155 has white spaces4156 replaces all of them with '_'4157 has other invalid characters4158 replaces all of them with '_'4159 is not present4160 returns error4161 length4162 is bigger than 2554163 truncates file name4164 is less or equal to 255 does not return error4165 does not return error4166 when user4167 does not have permission4168 behaves like wiki attachment user validations4169 returns error4170 is nil4171 behaves like wiki attachment user validations4172 returns error4173 behaves like Wikis::CreateAttachmentService#execute4174 adds file to the repository4175 creates wiki repository if it does not exist4176 creates wiki repository4177 if an error is raised creating the repository4178 catches error and return gracefully4179 creates branch if it does not exists4180 is expected to eq "new_branch"4181 returns4182 returns related information4183Gitlab::GithubImport::Client4184 #parallel?4185 when the client is running in parallel mode4186 is expected to be parallel4187 when the client is running in sequential mode4188 is expected not to be parallel4189 #user4190 returns the details for the given username4191 #pull_request_reviews4192 returns the pull request reviews4193 #pull_request_review_requests4194 returns the pull request review requests4195 #repos4196 returns the user's repositories as a hash4197 #repository4198 returns the details of a repository4199 returns repository data as a hash4200 #pull_request4201 returns the details of a pull_request4202 #labels4203 returns the labels4204 #milestones4205 returns the milestones4206 #releases4207 returns the releases4208 #branches4209 returns the branches4210 #collaborators4211 returns the collaborators4212 #branch_protection4213 returns the protection details for the given branch4214 #each_object4215 converts each object into a hash4216 #each_page4217 without a block4218 returns an Enumerator4219 the returned Enumerator returns Page objects4220 with a block4221 yields every retrieved page to the supplied block4222 starts at the given page4223 #with_rate_limit4224 yields the supplied block when enough requests remain4225 waits before yielding if not enough requests remain4226 waits and retries the operation if all requests were consumed in the supplied block4227 increments the request count counter4228 ignores rate limiting when disabled4229 when Faraday error received from octokit4230 when rate_limiting_enabled is true4231 retries on error and succeeds4232 retries and does not succeed4233 when rate_limiting_enabled is false4234 retries on error and succeeds4235 retries and does not succeed4236 #requests_remaining?4237 when default requests limit is set4238 returns true if enough requests remain4239 returns false if not enough requests remain4240 when search requests limit is set4241 returns true if enough requests remain4242 returns false if not enough requests remain4243 #raise_or_wait_for_rate_limit4244 when running in parallel mode4245 raises RateLimitError4246 when running in sequential mode4247 sleeps4248 increments the rate limit counter4249 #remaining_requests4250 returns the number of remaining requests4251 #requests_limit4252 returns requests limit4253 #rate_limit_resets_in4254 returns the number of seconds after which the rate limit is reset4255 #api_endpoint4256 without a custom endpoint configured in Omniauth4257 returns the default API endpoint4258 with a custom endpoint configured in Omniauth4259 returns the custom endpoint4260 #web_endpoint4261 without a custom endpoint configured in Omniauth4262 returns the default web endpoint4263 with a custom endpoint configured in Omniauth4264 returns the custom endpoint4265 #custom_api_endpoint4266 without a custom endpoint4267 returns nil4268 with a custom endpoint4269 returns the API endpoint4270 #default_api_endpoint4271 returns the default API endpoint4272 #verify_ssl4273 without a custom configuration4274 returns true4275 with a custom configuration4276 returns the configured value4277 #github_omniauth_provider4278 without a configured provider4279 returns an empty Hash4280 with a configured provider4281 returns the provider details as a Hash4282 #rate_limiting_enabled?4283 returns true when using GitHub.com4284 returns false for GitHub enterprise installations4285 search4286 #search_repos_by_name_graphql4287 searches for repositories based on name4288 when relation type option present4289 when relation type is owned4290 searches for repositories within the organization based on name4291 when relation type is organization4292 searches for repositories within the organization based on name4293 when relation type is collaborated4294 searches for collaborated repositories based on name4295 when pagination options present4296 with "first" option4297 searches for repositories via expected query4298 with "after" option4299 searches for repositories via expected query4300 when Faraday error received from octokit4301 retries on error and succeeds4302 retries and does not succeed4303 #count_repos_by_relation_type_graphql4304 returns count by relation_type4305 returns count by relation_type4306 returns count by relation_type4307Gitlab::Suggestions::SuggestionSet4308 merge_request: merge_request_same_project4309 #source_project4310 returns the source project associated with the suggestions4311 #target_project4312 returns the target project associated with the suggestions4313 #branch4314 returns the branch associated with the suggestions4315 #valid?4316 returns true if no errors are found4317 returns false if an error is found4318 #error_message4319 returns an error message if an error is found4320 returns nil if no errors are found4321 #actions4322 returns an array of hashes with proper key/value pairs4323 #file_paths4324 returns an array of unique file paths associated with the suggestions4325 merge_request: merge_request_from_fork4326 #source_project4327 returns the source project associated with the suggestions4328 #target_project4329 returns the target project associated with the suggestions4330 #branch4331 returns the branch associated with the suggestions4332 #valid?4333 returns true if no errors are found4334 returns false if an error is found4335 #error_message4336 returns an error message if an error is found4337 returns nil if no errors are found4338 #actions4339 returns an array of hashes with proper key/value pairs4340 #file_paths4341 returns an array of unique file paths associated with the suggestions4342Gitlab::Auth::Ldap::Person4343 .normalize_dn4344 behaves like normalizes a DN4345 test_description: "strips extraneous whitespace", given: "uid =John Smith , ou = People, dc= example,dc =com", expected: "uid=john smith,ou=people,dc=example,dc=com"4346 normalizes the DN4347 test_description: "strips extraneous whitespace for a DN with a single RDN", given: "uid = John Smith", expected: "uid=john smith"4348 normalizes the DN4349 test_description: "unescapes non-reserved, non-special Unicode characters", given: "uid = Sebasti\\c3\\a1n\\ C.\\20Smith, ou=People (aka. \\22humans\\\") ,dc=example, dc=com", expected: "uid=sebastián c. smith,ou=people (aka. \\\"humans\\\"),dc=example,dc=com"4350 normalizes the DN4351 test_description: "downcases the whole string", given: "UID=John Smith,ou=People,dc=example,dc=com", expected: "uid=john smith,ou=people,dc=example,dc=com"4352 normalizes the DN4353 test_description: "for a null DN (empty string), returns empty string and does not error", given: "", expected: ""4354 normalizes the DN4355 test_description: "does not strip an escaped leading space in an attribute value", given: "uid=\\ John Smith,ou=People,dc=example,dc=com", expected: "uid=\\ john smith,ou=people,dc=example,dc=com"4356 normalizes the DN4357 test_description: "does not strip an escaped leading space in the last attribute value", given: "uid=\\ John Smith", expected: "uid=\\ john smith"4358 normalizes the DN4359 test_description: "does not strip an escaped trailing space in an attribute value", given: "uid=John Smith\\ ,ou=People,dc=example,dc=com", expected: "uid=john smith\\ ,ou=people,dc=example,dc=com"4360 normalizes the DN4361 test_description: "strips extraneous spaces after an escaped trailing space", given: "uid=John Smith\\ ,ou=People,dc=example,dc=com", expected: "uid=john smith\\ ,ou=people,dc=example,dc=com"4362 normalizes the DN4363 test_description: "strips extraneous spaces after an escaped trailing space at the end of the DN", given: "uid=John Smith,ou=People,dc=example,dc=com\\ ", expected: "uid=john smith,ou=people,dc=example,dc=com\\ "4364 normalizes the DN4365 test_description: "properly preserves escaped trailing space after unescaped trailing spaces", given: "uid=John Smith \\ ,ou=People,dc=example,dc=com", expected: "uid=john smith \\ ,ou=people,dc=example,dc=com"4366 normalizes the DN4367 test_description: "preserves multiple inner spaces in an attribute value", given: "uid=John Smith,ou=People,dc=example,dc=com", expected: "uid=john smith,ou=people,dc=example,dc=com"4368 normalizes the DN4369 test_description: "preserves inner spaces after an escaped space", given: "uid=John\\ Smith,ou=People,dc=example,dc=com", expected: "uid=john smith,ou=people,dc=example,dc=com"4370 normalizes the DN4371 test_description: "hex-escapes an escaped leading newline in an attribute value", given: "uid=\\\nJohn Smith,ou=People,dc=example,dc=com", expected: "uid=\\0ajohn smith,ou=people,dc=example,dc=com"4372 normalizes the DN4373 test_description: "hex-escapes and does not strip an escaped trailing newline in an attribute value", given: "uid=John Smith\\\n,ou=People,dc=example,dc=com", expected: "uid=john smith\\0a,ou=people,dc=example,dc=com"4374 normalizes the DN4375 test_description: "hex-escapes an unescaped leading newline (actually an invalid DN?)", given: "uid=\nJohn Smith,ou=People,dc=example,dc=com", expected: "uid=\\0ajohn smith,ou=people,dc=example,dc=com"4376 normalizes the DN4377 test_description: "strips an unescaped trailing newline (actually an invalid DN?)", given: "uid=John Smith\n,ou=People,dc=example,dc=com", expected: "uid=john smith,ou=people,dc=example,dc=com"4378 normalizes the DN4379 test_description: "does not strip if no extraneous whitespace", given: "uid=John Smith,ou=People,dc=example,dc=com", expected: "uid=john smith,ou=people,dc=example,dc=com"4380 normalizes the DN4381 test_description: "does not modify an escaped equal sign in an attribute value", given: "uid= foo \\= bar", expected: "uid=foo \\= bar"4382 normalizes the DN4383 test_description: "converts an escaped hex equal sign to an escaped equal sign in an attribute value", given: "uid= foo \\3D bar", expected: "uid=foo \\= bar"4384 normalizes the DN4385 test_description: "does not modify an escaped comma in an attribute value", given: "uid= John C. Smith, ou=San Francisco\\, CA", expected: "uid=john c. smith,ou=san francisco\\, ca"4386 normalizes the DN4387 test_description: "converts an escaped hex comma to an escaped comma in an attribute value", given: "uid= John C. Smith, ou=San Francisco\\2C CA", expected: "uid=john c. smith,ou=san francisco\\, ca"4388 normalizes the DN4389 test_description: "does not modify an escaped hex carriage return character in an attribute value", given: "uid= John C. Smith, ou=San Francisco\\,\\0DCA", expected: "uid=john c. smith,ou=san francisco\\,\\0dca"4390 normalizes the DN4391 test_description: "does not modify an escaped hex line feed character in an attribute value", given: "uid= John C. Smith, ou=San Francisco\\,\\0ACA", expected: "uid=john c. smith,ou=san francisco\\,\\0aca"4392 normalizes the DN4393 test_description: "does not modify an escaped hex CRLF in an attribute value", given: "uid= John C. Smith, ou=San Francisco\\,\\0D\\0ACA", expected: "uid=john c. smith,ou=san francisco\\,\\0d\\0aca"4394 normalizes the DN4395 test_description: "allows attribute type name OIDs", given: "0.9.2342.19200300.100.1.25=Example,0.9.2342.19200300.100.1.25=Com", expected: "0.9.2342.19200300.100.1.25=example,0.9.2342.19200300.100.1.25=com"4396 normalizes the DN4397 test_description: "strips extraneous whitespace from attribute type name OIDs", given: "0.9.2342.19200300.100.1.25 = Example, 0.9.2342.19200300.100.1.25 = Com", expected: "0.9.2342.19200300.100.1.25=example,0.9.2342.19200300.100.1.25=com"4398 normalizes the DN4399 with an exception during normalization4400 returns the given DN unmodified4401 .normalize_uid4402 behaves like normalizes a DN attribute value4403 test_description: "strips extraneous whitespace", given: " John Smith ", expected: "john smith"4404 normalizes the DN attribute value4405 test_description: "unescapes non-reserved, non-special Unicode characters", given: "Sebasti\\c3\\a1n\\ C.\\20Smith", expected: "sebastián c. smith"4406 normalizes the DN attribute value4407 test_description: "downcases the whole string", given: "JoHn C. Smith", expected: "john c. smith"4408 normalizes the DN attribute value4409 test_description: "does not strip an escaped leading space in an attribute value", given: "\\ John Smith", expected: "\\ john smith"4410 normalizes the DN attribute value4411 test_description: "does not strip an escaped trailing space in an attribute value", given: "John Smith\\ ", expected: "john smith\\ "4412 normalizes the DN attribute value4413 test_description: "hex-escapes an escaped leading newline in an attribute value", given: "\\\nJohn Smith", expected: "\\0ajohn smith"4414 normalizes the DN attribute value4415 test_description: "hex-escapes and does not strip an escaped trailing newline in an attribute value", given: "John Smith\\\n", expected: "john smith\\0a"4416 normalizes the DN attribute value4417 test_description: "hex-escapes an unescaped leading newline (actually an invalid DN value?)", given: "\nJohn Smith", expected: "\\0ajohn smith"4418 normalizes the DN attribute value4419 test_description: "strips an unescaped trailing newline (actually an invalid DN value?)", given: "John Smith\n", expected: "john smith"4420 normalizes the DN attribute value4421 test_description: "does not strip if no extraneous whitespace", given: "John Smith", expected: "john smith"4422 normalizes the DN attribute value4423 test_description: "does not modify an escaped equal sign in an attribute value", given: " foo \\= bar", expected: "foo \\= bar"4424 normalizes the DN attribute value4425 test_description: "converts an escaped hex equal sign to an escaped equal sign in an attribute value", given: " foo \\3D bar", expected: "foo \\= bar"4426 normalizes the DN attribute value4427 test_description: "does not modify an escaped comma in an attribute value", given: "San Francisco\\, CA", expected: "san francisco\\, ca"4428 normalizes the DN attribute value4429 test_description: "converts an escaped hex comma to an escaped comma in an attribute value", given: "San Francisco\\2C CA", expected: "san francisco\\, ca"4430 normalizes the DN attribute value4431 test_description: "does not modify an escaped hex carriage return character in an attribute value", given: "San Francisco\\,\\0DCA", expected: "san francisco\\,\\0dca"4432 normalizes the DN attribute value4433 test_description: "does not modify an escaped hex line feed character in an attribute value", given: "San Francisco\\,\\0ACA", expected: "san francisco\\,\\0aca"4434 normalizes the DN attribute value4435 test_description: "does not modify an escaped hex CRLF in an attribute value", given: "San Francisco\\,\\0D\\0ACA", expected: "san francisco\\,\\0d\\0aca"4436 normalizes the DN attribute value4437 with an exception during normalization4438 returns the given UID unmodified4439 .ldap_attributes4440 returns a compact and unique array4441 #name4442 uses the configured name attribute and handles values as an array4443 #email4444 returns the value of mail, if present4445 returns the value of userPrincipalName, if mail and email are not present4446 #username4447 with default uid username attribute4448 returns the proper username value4449 with a different username attribute4450 returns the proper username value4451 with a non-standard username attribute4452 returns the proper username value4453 if lowercase_usernames setting is4454 enabled the username attribute is lower cased4455 disabled the username attribute is not lower cased4456MergeRequests::MergeabilityCheckBatchWorker4457 # order random4458 #perform4459 when some merge_requests do not exist4460 ignores unknown merge request ids4461 when some merge_requests needs mergeability checks4462 executes MergeabilityCheckService on merge requests that needs to be checked4463 structurally logs a failed mergeability check4464 when user is nil4465 does not run any mergeability checks4466 behaves like an idempotent worker4467 is labeled as idempotent4468 performs multiple times sequentially without raising an exception4469 is mergeable4470Clusters::ClusterPresenter4471 inherits from Gitlab::View::Presenter::Delegated4472 #initialize4473 takes a cluster and optional params4474 exposes cluster4475 forwards missing methods to cluster4476 #provider_label4477 AWS provider4478 is expected to eq "Elastic Kubernetes Service"4479 GCP provider4480 is expected to eq "Google Kubernetes Engine"4481 #provider_management_url4482 AWS provider4483 is expected to include "us-east-1"4484 is expected to include "test-cluster"4485 GCP provider4486 is expected to include "us-central1-a"4487 is expected to include "test-cluster"4488 #show_path4489 project_type cluster4490 is expected to eq "/namespace757/project-854/-/clusters/224"4491 group_type cluster4492 is expected to eq "/groups/group335/-/clusters/227"4493 instance_type cluster4494 is expected to eq "/admin/clusters/230"4495 #read_only_kubernetes_platform_fields?4496 with a user-provided cluster4497 is expected to be falsy4498 with a GCP-provided cluster4499 is expected to be truthy4500 #health_data4501 with project cluster4502 behaves like cluster health data4503 is expected to include {:"clusters-path" => "/namespace758/project-855/-/clusters", :"dashboard-endpoint" => "/namespace758/project-855/-/clusters/233/metrics_dashboard", :"documentation-path" => "/help/user/infrastructure/clusters/manage/clusters_health", :"add-dashboard-documentation-path" => "/help/operations/metrics/dashboards/index.md#add-a-new-dashboard-to-your-project", :"empty-getting-started-svg-path" => (match asset path "/assets/illustrations/monitoring/getting_started.svg"), :"empty-loading-svg-path" => (match asset path "/assets/illustrations/monitoring/loading.svg"), :"empty-no-data-svg-path" => (match asset path "/assets/illustrations/monitoring/no_data.svg"), :"empty-no-data-small-svg-path" => (match asset path "illustrations/chart-empty-state-small.svg"), :"empty-unable-to-connect-svg-path" => (match asset path "/assets/illustrations/monitoring/unable_to_connect.svg"), :"settings-path" => "", :"project-path" => "", :"tags-path" => ""}4504 with group cluster4505 behaves like cluster health data4506 is expected to include {:"clusters-path" => "/groups/group336/-/clusters", :"dashboard-endpoint" => "/groups/group336/-/clusters/236/metrics_dashboard", :"documentation-path" => "/help/user/infrastructure/clusters/manage/clusters_health", :"add-dashboard-documentation-path" => "/help/operations/metrics/dashboards/index.md#add-a-new-dashboard-to-your-project", :"empty-getting-started-svg-path" => (match asset path "/assets/illustrations/monitoring/getting_started.svg"), :"empty-loading-svg-path" => (match asset path "/assets/illustrations/monitoring/loading.svg"), :"empty-no-data-svg-path" => (match asset path "/assets/illustrations/monitoring/no_data.svg"), :"empty-no-data-small-svg-path" => (match asset path "illustrations/chart-empty-state-small.svg"), :"empty-unable-to-connect-svg-path" => (match asset path "/assets/illustrations/monitoring/unable_to_connect.svg"), :"settings-path" => "", :"project-path" => "", :"tags-path" => ""}4507Mutations::MergeRequests::SetDraft4508 is expected to require graphql authorizations :update_merge_request4509 #resolve4510 behaves like permission level for merge request mutation is correctly verified4511 when the user is not a project member4512 behaves like when the user does not have access to the resource4513 raises an error4514 even if assigned to the merge request4515 does not modify merge request4516 even if reviewer of the merge request4517 raises an error4518 even if author of the merge request4519 raises an error4520 when the user is a project member4521 with guest role4522 behaves like when the user does not have access to the resource4523 raises an error4524 even if assigned to the merge request4525 does not modify merge request4526 even if reviewer of the merge request4527 raises an error4528 even if author of the merge request4529 raises an error4530 with reporter role4531 behaves like when the user does not have access to the resource4532 raises an error4533 even if assigned to the merge request4534 does not modify merge request4535 even if reviewer of the merge request4536 raises an error4537 even if author of the merge request4538 raises an error4539 when the user can update the merge request4540 returns the merge request as a draft4541 returns errors if/when merge request could not be updated4542 when passing draft as false4543 removes `Draft` from the title4544 does not do anything if the title did not start with draft4545Gitlab::Redis::FeatureFlag4546 # order random4547 #fetch_config4548 when redis.yml exists4549 when the fallback has a redis.yml entry4550 is expected to eq {"fallback redis.yml"=>123}4551 and an instance config file exists4552 is expected to eq {"instance specific file"=>456}4553 and the instance has a redis.yml entry4554 is expected to eq {"instance redis.yml"=>789}4555 when no redis config file exsits4556 returns nil4557 when resque.yml exists4558 returns the config from resque.yml4559 behaves like redis_shared_examples4560 .config_file_name4561 when there is no config file anywhere4562 is expected to be nil4563 .store4564 with old format4565 behaves like redis store4566 instantiates Redis::Store4567 with the namespace4568 uses specified namespace4569 with new format4570 behaves like redis store4571 instantiates Redis::Store4572 with the namespace4573 uses specified namespace4574 .params4575 withstands mutation4576 when url contains unix socket reference4577 with old format4578 returns path key instead4579 with new format4580 returns path key instead4581 when url is host based4582 with old format4583 returns hash with host, port, db, and password4584 with new format4585 rails_env: "development", host: "development-host"4586 returns hash with host, port, db, and password4587 rails_env: "test", host: "test-host"4588 returns hash with host, port, db, and password4589 rails_env: "production", host: "production-host"4590 returns hash with host, port, db, and password4591 with redis cluster format4592 rails_env: "development", host: "development-master"4593 returns hash with cluster and password4594 rails_env: "test", host: "test-master"4595 returns hash with cluster and password4596 rails_env: "production", host: "production-master"4597 returns hash with cluster and password4598 .url4599 withstands mutation4600 when yml file with env variable4601 reads redis url from env variable4602 .version4603 returns a version4604 .with4605 when running on single-threaded runtime4606 instantiates a connection pool with size 54607 when running on multi-threaded runtime4608 instantiates a connection pool with a size based on the concurrency of the worker4609 when there is no config at all4610 can run an empty block4611 #db4612 with old format4613 returns the correct db4614 with new format4615 returns the correct db4616 with cluster-mode4617 returns the correct db4618 #sentinels4619 when sentinels are defined4620 rails_env: "development", hosts: ["development-replica1", "development-replica2"]4621 returns an array of hashes with host and port keys4622 rails_env: "test", hosts: ["test-replica1", "test-replica2"]4623 returns an array of hashes with host and port keys4624 rails_env: "production", hosts: ["production-replica1", "production-replica2"]4625 returns an array of hashes with host and port keys4626 when sentinels are not defined4627 returns nil4628 when cluster is defined4629 returns nil4630 #sentinels?4631 when sentinels are defined4632 returns true4633 when sentinels are not defined4634 is expected to eq nil4635 when cluster is defined4636 returns false4637 #raw_config_hash4638 returns old-style single url config in a hash4639 returns cluster config without url key in a hash4640 #fetch_config4641 raises an exception when the config file contains invalid yaml4642 when redis.yml exists4643 uses config/redis.yml4644 when no config file exsits4645 returns nil4646 when resque.yml exists4647 returns the config from resque.yml4648 .cache_store4649 has a default ttl of 1 hour4650ProjectImportState4651 associations4652 is expected to belong to project required: false4653 validations4654 is expected to validate that :project cannot be empty/falsy4655 checksums attribute4656 when the checksums attribute has invalid fields4657 adds errors4658 when the checksums attribute has valid fields4659 does not add errors4660 Project import job4661 imports a project4662 records job and correlation IDs4663 #relation_hard_failures4664 returns hard relation failures related to this import4665 limits returned collection to given maximum4666 #mark_as_failed4667 logs error when update column fails4668 updates last_error with error message4669 removes project import data4670 #human_status_name4671 when import_state exists4672 returns the humanized status name4673 #expire_etag_cache4674 when project import type has realtime changes endpoint4675 expires revelant etag cache4676 when project import type does not have realtime changes endpoint4677 does not touch etag caches4678 import state transitions4679 state transition: [:started] => [:finished]4680 resets last_error4681 enqueues housekeeping when an import of a fresh project is completed4682 does not perform housekeeping when project repository does not exist4683 does not enqueue housekeeping when project does not have a valid import type4684 state transition: [:none, :scheduled, :started] => [:canceled]4685 updates the import status4686 unsets the JID4687 removes import data4688 state transition: started: [:finished, :canceled, :failed]4689 import_type: "github", import_status: :started, transition: :finish, expected_checksums: {"fetched"=>{}, "imported"=>{}}4690 updates (or does not update) checksums4691 import_type: "github", import_status: :started, transition: :cancel, expected_checksums: {"fetched"=>{}, "imported"=>{}}4692 updates (or does not update) checksums4693 import_type: "github", import_status: :started, transition: :fail_op, expected_checksums: {"fetched"=>{}, "imported"=>{}}4694 updates (or does not update) checksums4695 import_type: "github", import_status: :scheduled, transition: :cancel, expected_checksums: {}4696 updates (or does not update) checksums4697 import_type: "gitlab_project", import_status: :started, transition: :cancel, expected_checksums: {}4698 updates (or does not update) checksums4699 clearing `jid` after finish4700 without an JID4701 does nothing4702 with a JID4703 unsets the JID4704 callbacks4705 after_commit :expire_etag_cache4706 expires etag cache4707BulkImports::Projects::Pipelines::RepositoryBundlePipeline4708 #run4709 imports repository into destination project and removes tmpdir4710 when something goes wrong during import4711 marks entity as failed4712 #extract4713 downloads & extracts repository bundle filepath4714 #load4715 creates repository from bundle4716 when file does not exist4717 returns4718 when path is directory4719 returns4720 when path is symlink4721 returns4722 when path has mutiple hard links4723 returns4724 when path is not under tmpdir4725 returns4726 when path is being traversed4727 raises an error4728 #after_run4729 removes tmpdir4730 when tmpdir does not exist4731 does not attempt to remove tmpdir4732Sbom::PackageUrl::ArgumentValidator4733 # order random4734 with valid arguments4735 valid maven purl4736 does not raise error4737 basic valid maven purl without version4738 does not raise error4739 valid go purl without version and with subpath4740 does not raise error4741 valid go purl with version and subpath4742 does not raise error4743 bitbucket namespace and name should be lowercased4744 does not raise error4745 github namespace and name should be lowercased4746 does not raise error4747 debian can use qualifiers4748 does not raise error4749 docker uses qualifiers and hash image id as versions4750 does not raise error4751 Java gem can use a qualifier4752 does not raise error4753 maven often uses qualifiers4754 does not raise error4755 maven pom reference4756 does not raise error4757 maven can come with a type qualifier4758 does not raise error4759 npm can be scoped4760 does not raise error4761 nuget names are case sensitive4762 does not raise error4763 pypi names have special rules and not case sensitive4764 does not raise error4765 rpm often use qualifiers4766 does not raise error4767 slash / after scheme is not significant4768 does not raise error4769 double slash // after scheme is not significant4770 does not raise error4771 slash /// after type is not significant4772 does not raise error4773 valid maven purl with case sensitive namespace and name4774 does not raise error4775 valid maven purl containing a space in the version and qualifier4776 does not raise error4777 valid conan purl4778 does not raise error4779 valid conan purl with namespace and qualifier channel4780 does not raise error4781 valid conda purl with qualifiers4782 does not raise error4783 valid cran purl4784 does not raise error4785 valid swift purl4786 does not raise error4787 valid hackage purl4788 does not raise error4789 with invalid arguments4790 a scheme is always required4791 raises an ArgumentError4792 a type is always required4793 raises an ArgumentError4794 a name is required4795 raises an ArgumentError4796 checks for invalid qualifier keys4797 raises an ArgumentError4798 invalid conan purl only namespace4799 raises an ArgumentError4800 invalid conan purl only channel qualifier4801 raises an ArgumentError4802 invalid cran purl without name4803 raises an ArgumentError4804 invalid cran purl without version4805 raises an ArgumentError4806 invalid swift purl without namespace4807 raises an ArgumentError4808 invalid swift purl without name4809 raises an ArgumentError4810 invalid swift purl without version4811 raises an ArgumentError4812 name and version are always required4813 raises an ArgumentError4814 with multiple errors4815 reports all errors4816Gitlab::Email::Handler::CreateIssueHandler4817 behaves like reply processing shared examples4818 when the user could not be found4819 raises a UserNotFoundError4820 when the user is not authorized to the project4821 raises a ProjectNotFound4822 when email key4823 matches the new format4824 matches the legacy format4825 doesn't match either format4826 when everything is fine4827 behaves like a new issue4828 creates a new issue4829 creates a new issue with legacy email address4830 behaves like a new issue4831 creates a new issue4832 when the reply is blank4833 creates a new issue4834 when there are quotes in email4835 creates a new issue4836 when all lines of email are quotes4837 creates email with correct body4838 something is wrong4839 raises a RateLimitedService::RateLimitedError4840 when the issue could not be saved4841 raises an InvalidIssueError4842 when we can't find the incoming_email_token4843 raises an UserNotFoundError4844 when project is private4845 raises a ProjectNotFound if the user is not a member4846 when project ID is invalid4847 raises a ProjectNotFound4848MergeRequests::ResolvedDiscussionNotificationService4849 #execute4850 when not all discussions are resolved4851 doesn't add a system note4852 doesn't send a notification email4853 doesn't send a webhook4854 when all discussions are resolved4855 adds a system note4856 sends a notification email4857 sends a webhook4858API::Helpers::PackagesHelpers4859 authorize_packages_access!4860 authorizes packages access4861 with an allowed required permission4862 authorizes packages access4863 with a not allowed permission4864 rejects packages access4865 authorize_read_package!4866 subject: project, expected_class: Packages::Policies::Project4867 calls authorize! with correct subject4868 subject: group, expected_class: Packages::Policies::Group4869 calls authorize! with correct subject4870 subject: package, expected_class: Packages::Package(id: integer, project_id: integer, created_at: timestamptz, updated_at: timestamptz, name: string, version: string, package_type: integer, creator_id: integer, status: integer, last_downloaded_at: timestamptz, status_message: text)4871 calls authorize! with correct subject4872 authorize_create_package!4873 calls authorize!4874 authorize_destroy_package!4875 calls authorize!4876 require_packages_enabled!4877 with packages enabled4878 doesn't call not_found!4879 with package disabled4880 calls not_found!4881 #authorize_workhorse!4882 authorizes workhorse4883 without length4884 authorizes workhorse4885 #authorize_upload!4886 authorizes the upload4887 #user_project4888 calls find_project! on default action4889 calls find_project! on read_project action4890 calls user_project_with_read_package on read_package action4891 throws ArgumentError on unexpected action4892 #user_project_with_read_package4893 with non-existing project4894 with current user4895 returns Not Found4896 without current user4897 returns Unauthorized4898 with existing project4899 with current user4900 as developer member4901 returns project4902 as guest member4903 returns Forbidden4904 without current user4905 returns Unauthorized4906 if no authorized project scope4907 returns Forbidden4908 #track_package_event4909 behaves like Snowplow event tracking with RedisHLL context4910 behaves like Snowplow event tracking4911 is emitted4912 when using deploy token and action is push package4913 logs a snowplow event4914 when guest and action is pull package4915 logs a snowplow event4916AccessRequestsFinder4917 behaves like #execute4918 when current user cannot see project access requests4919 behaves like a finder returning no results4920 raises Gitlab::Access::AccessDeniedError4921 behaves like a finder returning no results4922 raises Gitlab::Access::AccessDeniedError4923 when current user can see access requests4924 behaves like a finder returning access requesters4925 returns access requesters4926 behaves like a finder returning access requesters4927 returns access requesters4928 behaves like #execute!4929 when current user cannot see access requests4930 behaves like a finder raising Gitlab::Access::AccessDeniedError4931 raises Gitlab::Access::AccessDeniedError4932 behaves like a finder raising Gitlab::Access::AccessDeniedError4933 raises Gitlab::Access::AccessDeniedError4934 when current user can see access requests4935 behaves like a finder returning access requesters4936 returns access requesters4937 behaves like a finder returning access requesters4938 returns access requesters4939Gitlab::Database::LoadBalancing::SidekiqServerMiddleware4940 #call4941 when worker class does not include WorkerAttributes4942 sticks to the primary4943 sets load balancing strategy to primary4944 when job contains wrapped worker class4945 uses wrapped job if available4946 when worker data consistency is :always4947 sticks to the primary4948 sets load balancing strategy to primary4949 when delay interval has not elapsed4950 does not sleep4951 when worker data consistency is :delayed4952 when database wal location is set4953 behaves like replica is up to date4954 does not stick to the primary4955 sets load balancing strategy to replica4956 when deduplication wal location is set4957 behaves like replica is up to date4958 does not stick to the primary4959 sets load balancing strategy to replica4960 when database location is not set4961 sticks to the primary4962 sets load balancing strategy to primary_no_wal4963 when WAL locations are blank4964 does not sleep4965 when WAL locations are present4966 when delay interval has not elapsed4967 when replica is up to date4968 does not sleep4969 when replica is not up to date4970 sleeps until the minimum delay is reached4971 when replica is never not up to date4972 sleeps until the maximum delay is reached4973 when replica is not up to date4974 when job is executed first4975 raises an error and retries4976 sets load balancing strategy to retry4977 when job is retried4978 and replica still lagging behind4979 sticks to the primary4980 sets load balancing strategy to primary4981 and replica is now up-to-date4982 does not stick to the primary4983 sets load balancing strategy to replica_retried4984 when worker data consistency is :sticky4985 when database wal location is set4986 behaves like replica is up to date4987 does not stick to the primary4988 sets load balancing strategy to replica4989 when deduplication wal location is set4990 behaves like replica is up to date4991 does not stick to the primary4992 sets load balancing strategy to replica4993 when database location is not set4994 sticks to the primary4995 sets load balancing strategy to primary_no_wal4996 when WAL locations are blank4997 does not sleep4998 when WAL locations are present4999 when delay interval has not elapsed5000 when replica is up to date5001 does not sleep5002 when replica is not up to date5003 sleeps until the minimum delay is reached5004 when replica is never not up to date5005 sleeps until the maximum delay is reached5006 when replica is not up to date5007 sticks to the primary5008 sets load balancing strategy to primary5009 #databases_in_sync?5010 treats load balancers without WAL entries as in sync5011 returns true when all load balancers are in sync5012 returns false when the load balancers are not in sync5013 when locations have string keys5014 returns false when the load balancers are not in sync5015Gitlab::Ci::Trace::Checksum5016 when build pending state exists5017 when matching persisted trace chunks exist5018 calculates combined trace chunks CRC32 correctly5019 when trace chunks were persisted in a wrong order5020 makes trace checksum invalid but not corrupted5021 when one of the trace chunks is missing5022 makes trace checksum invalid and corrupted5023 when checksums of persisted trace chunks do not match5024 makes trace checksum invalid but not corrupted5025 when persisted trace chunks are missing5026 makes trace checksum invalid5027 when build pending state is missing5028 #state_crc325029 returns nil5030 #valid?5031 is expected not to be valid5032 #trace_chunks5033 does not load raw_data from a database store5034 #last_chunk5035 when there are no chunks5036 returns nil5037 is not a valid trace5038 is not a corrupted trace5039 when there are multiple chunks5040 returns chunk with the highest index5041 is not a valid trace5042 is not a corrupted trace5043 #trace_size5044 returns total trace size in bytes5045MergeRequests::UpdateAssigneesService5046 execute5047 when the parameters are valid5048 does not update the assignees if they do not have access5049 is more efficient than using the full update-service5050 when using sentinel values5051 when using assignee_ids5052 behaves like removing all assignees5053 removes all assignees5054 enqueues the correct background work5055 when using assignee_id5056 behaves like removing all assignees5057 removes all assignees5058 enqueues the correct background work5059 when the assignee_ids parameter is the empty list5060 behaves like removing all assignees5061 removes all assignees5062 enqueues the correct background work5063 behaves like it updates and enqueues the job5064 correctly updates the MR and enqueues the job5065Releases::DestroyService5066 #execute5067 when there is a release5068 removes the release5069 returns the destroyed object5070 when tag does not exist in the repository5071 removes the orphaned release5072 when release is not found5073 returns an error5074 when user does not have permission5075 returns an error5076 when a milestone is tied to the release5077 destroys the release but leave the milestone intact5078Gitlab::Ci::Pipeline::Duration5079 .from_periods5080 test sample A5081 behaves like calculating duration5082 is expected to eq 45083 test sample B5084 behaves like calculating duration5085 is expected to eq 45086 test sample C5087 behaves like calculating duration5088 is expected to eq 85089 test sample D5090 behaves like calculating duration5091 is expected to eq 45092 test sample E5093 behaves like calculating duration5094 is expected to eq 75095 test sample F5096 behaves like calculating duration5097 is expected to eq 65098 test sample G5099 behaves like calculating duration5100 is expected to eq 45101 .from_pipeline5102 returns the duration of the running build5103 does not generate N+1 queries if more builds are added5104 does not generate N+1 queries if more bridges and their pipeline builds are added5105 when there is no running build5106 returns the duration for all the builds5107 when there are direct bridge jobs5108 returns the duration of the running build5109 when there is no running build5110 returns the duration for all the builds (including self and downstreams)5111 when there are downstream bridge jobs5112 returns the duration of the running build5113 when there is no running build5114 returns the duration for all the builds (including self and downstreams)5115Todos::Destroy::ConfidentialIssueService5116 #execute5117 when issue_id parameter is present5118 when provided issue is confidential5119 removes issue todos for users who can not access the confidential issue5120 when provided issue is not confidential5121 does not remove any todos5122 when project_id parameter is present5123 removes issues todos for users that cannot access confidential issues5124Gitlab::Graphql::Pagination::ActiveRecordArrayConnection5125 behaves like a connection with collection methods5126 responds to to_a5127 responds to size5128 responds to map5129 responds to include?5130 responds to empty?5131 behaves like a redactable connection5132 no redactor set5133 contains the unwanted item5134 does not redact more than once5135 redactor is set5136 does not contain the unwanted item5137 does not redact more than once5138 #nodes5139 is expected to contain exactly #<Packages::BuildInfo id: 1, package_id: 48, pipeline_id: nil>, #<Packages::BuildInfo id: 2, package_id: 49, pipeline_id: nil>, and #<Packages::BuildInfo id: 3, package_id: 50, pipeline_id: nil>5140 with first set5141 is expected to contain exactly #<Packages::BuildInfo id: 1, package_id: 48, pipeline_id: nil> and #<Packages::BuildInfo id: 2, package_id: 49, pipeline_id: nil>5142 with last set5143 is expected to contain exactly #<Packages::BuildInfo id: 2, package_id: 49, pipeline_id: nil> and #<Packages::BuildInfo id: 3, package_id: 50, pipeline_id: nil>5144 #next_page?5145 before: nil, first: nil, max_page_size: nil, result: false5146 is expected to eq false5147 before: 1, first: nil, max_page_size: nil, result: true5148 is expected to eq true5149 before: nil, first: 1, max_page_size: nil, result: true5150 is expected to eq true5151 before: nil, first: 10, max_page_size: nil, result: false5152 is expected to eq false5153 before: nil, first: 1, max_page_size: 1, result: true5154 is expected to eq true5155 before: nil, first: 1, max_page_size: 10, result: true5156 is expected to eq true5157 before: nil, first: 10, max_page_size: 10, result: false5158 is expected to eq false5159 #previous_page?5160 after: nil, last: nil, max_page_size: nil, result: false5161 is expected to eq false5162 after: 1, last: nil, max_page_size: nil, result: true5163 is expected to eq true5164 after: nil, last: 1, max_page_size: nil, result: true5165 is expected to eq true5166 after: nil, last: 10, max_page_size: nil, result: false5167 is expected to eq false5168 after: nil, last: 1, max_page_size: 1, result: true5169 is expected to eq true5170 after: nil, last: 1, max_page_size: 10, result: true5171 is expected to eq true5172 after: nil, last: 10, max_page_size: 10, result: false5173 is expected to eq false5174 #cursor_for5175 is expected to eq "eyJpZCI6IjEifQ"5176 with a BatchLoader::GraphQL item5177 is expected to eq "eyJpZCI6IjIwMTgifQ"5178 #dup5179 properly handles items duplication5180shared/runners/_runner_details.html.haml5181 # order random5182 Locked to this project value5183 when runner locked is not set5184 is expected to have text "Locked to this project No"5185 when runner is of type group5186 is expected not to have text "Locked to this project"5187 when runner locked is set5188 is expected to have text "Locked to this project Yes"5189 when runner is of type group5190 is expected not to have text "Locked to this project"5191 Protected value5192 when runner is not protected5193 is expected to have text "Protected No"5194 when runner is protected5195 is expected to have text "Protected Yes"5196 Metadata values5197 is expected to have text "Name test runner"5198 is expected to have text "Version 11.4.0"5199 is expected to have text "IP Address 127.1.2.3"5200 is expected to have text "Revision abcd1234"5201 is expected to have text "Platform darwin"5202 is expected to have text "Architecture amd64"5203 is expected to have text "Description My runner2"5204 Active value5205 when runner is active5206 is expected to have text "Active Yes"5207 when runner is inactive5208 is expected to have text "Active No"5209 Tags value5210 when runner does not have tags5211 is expected to have text "Tags"5212 is expected not to have visible css "span.gl-badge.badge.badge-info"5213 when runner have tags5214 is expected to have text "Tags tag1 tag2 tag3"5215 is expected to have visible css "span.gl-badge.badge.badge-info"5216 Runner id and type5217 when runner is of type instance5218 is expected to have text "Runner #1079 shared"5219 when runner is of type group5220 is expected to have text "Runner #1087 group"5221 when runner is of type project5222 is expected to have text "Runner #1088 project"5223 Can run untagged jobs value5224 when runner run untagged job is set5225 is expected to have text "Can run untagged jobs Yes"5226 when runner run untagged job is unset5227 is expected to have text "Can run untagged jobs No"5228 Last contact value5229 when runner have not contacted yet5230 is expected to have text "Last contact Never"5231 when runner have already contacted5232 is expected to have text "Last contact Aug 04, 2023"5233 Maximum job timeout value5234 is expected to have text "Maximum job timeout 1h 30m"5235Mutations::DesignManagement::Delete5236 #resolve5237 when the feature is not available5238 behaves like resource not available5239 behaves like failures5240 raises Gitlab::Graphql::Errors::ResourceNotAvailable5241 when the feature is available5242 when the user is not allowed to delete designs5243 behaves like resource not available5244 behaves like failures5245 raises Gitlab::Graphql::Errors::ResourceNotAvailable5246 deleting an already deleted file5247 fails with an argument error5248 when deleting all the designs5249 returns a new version, and no errors5250 runs no more than 31 queries5251 the current designs5252 is empty5253 when deleting a design5254 returns the expected response5255 the current designs5256 does contain designs b and c5257Gitlab::Analytics::CycleAnalytics::RequestParams5258 # order random5259 behaves like unlicensed cycle analytics request params5260 casts `created_after` to `Time`5261 casts `created_before` to `Time`5262 validations5263 is valid5264 when `created_before` is missing5265 is valid5266 when `created_before` is earlier than `created_after`5267 is invalid5268 when the date range exceeds 180 days5269 is invalid5270 optional `value_stream`5271 when `value_stream` is not empty5272 is expected to eq #<InstanceDouble(Analytics::CycleAnalytics::ValueStream) (anonymous)>5273 when `value_stream` is nil5274 is expected to eq nil5275 sorting params5276 converts sorting params to symbol when passing it to data collector5277 adds sorting params to data attributes5278 aggregation params5279 when not licensed5280 returns nil5281 use_aggregated_data_collector param5282 is expected to eq false5283 feature availablity data attributes5284 disables all paid features5285 project-level data attributes5286 includes the namespace attribute5287 with a subgroup project5288 includes the correct group_path5289Gitlab::Ci::Pipeline::Chain::Populate5290 when pipeline doesn not have seeds block5291 does not persist the pipeline5292 does not break the chain5293 populates pipeline with stages5294 correctly assigns user5295 has pipeline iid5296 when pipeline is empty5297 breaks the chain5298 appends an error about missing stages5299 wastes pipeline iid5300 increments the error metric5301 pipeline protect5302 when ref is protected5303 does not protect the pipeline5304 when ref is not protected5305 does not protect the pipeline5306 when pipeline has validation errors5307 breaks the chain5308 appends validation error5309 wastes pipeline iid5310 when there is a seed blocks present5311 when seeds block builds some resources5312 populates pipeline with resources described in the seeds block5313 has pipeline iid5314 when seeds block tries to persist some resources5315 raises error5316 when pipeline gets persisted during the process5317 raises error5318 when variables policy is specified5319 when using only/except build policies5320 behaves like a correct pipeline5321 populates pipeline according to used policies5322 when variables expression is specified5323 when pipeline iid is the subject5324 behaves like a correct pipeline5325 populates pipeline according to used policies5326Packages::Tag5327 relationships5328 is expected to belong to package required: false inverse_of => tags5329 validations5330 is expected to validate that :package cannot be empty/falsy5331 is expected to validate that :name cannot be empty/falsy5332 .for_package_ids5333 is expected to contain exactly #<Packages::Tag id: 3, package_id: 57, name: "tag-3", created_at: "2023-08-10 12:44:57.516189728 +0000", updated_at: "2023-08-10 12:44:57.516189728 +0000">, #<Packages::Tag id: 4, package_id: 58, name: "tag-4", created_at: "2023-08-10 12:44:57.534205416 +0000", updated_at: "2023-08-10 12:44:57.534205416 +0000">, and #<Packages::Tag id: 5, package_id: 59, name: "tag-5", created_at: "2023-08-10 12:44:57.549541624 +0000", updated_at: "2023-08-10 12:44:57.549541624 +0000">5334 with too many tags5335 is expected to contain exactly #<Packages::Tag id: 7, package_id: 61, name: "tag-7", created_at: "2023-08-10 12:44:58.090059762 +0000", updated_at: "2023-08-10 12:44:58.090059762 +0000"> and #<Packages::Tag id: 8, package_id: 62, name: "tag-8", created_at: "2023-08-10 12:44:58.106217060 +0000", updated_at: "2023-08-10 12:44:58.106217060 +0000">5336 with package ids5337 is expected to contain exactly #<Packages::Tag id: 9, package_id: 63, name: "tag-9", created_at: "2023-08-10 12:44:58.570612728 +0000", updated_at: "2023-08-10 12:44:58.570612728 +0000">, #<Packages::Tag id: 10, package_id: 64, name: "tag-10", created_at: "2023-08-10 12:44:58.586516996 +0000", updated_at: "2023-08-10 12:44:58.586516996 +0000">, and #<Packages::Tag id: 11, package_id: 65, name: "tag-11", created_at: "2023-08-10 12:44:58.601110424 +0000", updated_at: "2023-08-10 12:44:58.601110424 +0000">5338 .with_name5339 is expected to contain exactly #<Packages::Tag id: 12, package_id: 66, name: "tag1", created_at: "2023-08-10 12:44:58.909148963 +0000", updated_at: "2023-08-10 12:44:58.909148963 +0000">5340 with nil name5341 is expected to eq []5342 with multiple names5343 is expected to contain exactly #<Packages::Tag id: 12, package_id: 66, name: "tag1", created_at: "2023-08-10 12:44:58.909148963 +0000", updated_at: "2023-08-10 12:44:58.909148963 +0000"> and #<Packages::Tag id: 14, package_id: 66, name: "tag3", created_at: "2023-08-10 12:44:58.915671972 +0000", updated_at: "2023-08-10 12:44:58.915671972 +0000">5344Labels::FindOrCreateService5345 #execute5346 when acting on behalf of a specific user5347 when finding labels on project level5348 when existing_labels_by_title is provided5349 when label exists5350 returns preloaded label5351 when label does not exists5352 does not generates additional label search5353 when label does not exist at group level5354 creates a new label at project level5355 when label exists at group level5356 returns the group label5357 when label exists at project level5358 returns the project label5359 when include_ancestor_groups is true5360 returns the ancestor group labels5361 creates new labels if labels are not found5362 when finding labels on group level5363 when label does not exist at group level5364 creates a new label at group level5365 when label exists at group level5366 returns the group label5367 when authorization is not required5368 when finding labels on project level5369 returns the project label5370 when finding labels on group level5371 returns the group label5372Mutations::Issues::SetEscalationStatus5373 #resolve5374 behaves like permission level for issue mutation is correctly verified5375 when the user is not a project member5376 behaves like when the user does not have access to the resource5377 raises an error5378 even if assigned to the issue5379 does not modify issue5380 even if author of the issue5381 does not modify issue5382 when the user is a project member5383 with guest role5384 behaves like when the user does not have access to the resource5385 raises an error5386 even if assigned to the issue5387 does not modify issue5388 even if author of the issue5389 does not modify issue5390 when the user can update the issue5391 behaves like permission level for issue mutation is correctly verified5392 when the user is not a project member5393 behaves like when the user does not have access to the resource5394 raises an error5395 even if assigned to the issue5396 does not modify issue5397 even if author of the issue5398 does not modify issue5399 when the user is a project member5400 with guest role5401 behaves like when the user does not have access to the resource5402 raises an error5403 even if assigned to the issue5404 does not modify issue5405 even if author of the issue5406 does not modify issue5407 when the user can update the escalation status5408 returns the issue with the escalation policy5409 returns errors when issue update fails5410 with non-incident issue is provided5411 raises an error5412Git::BaseHooksService5413 push event5414 creates push event5415 create_push_event is set to false5416 does not create push event5417 project hooks and integrations5418 hooks5419 active hooks5420 executes the hooks5421 inactive hooks5422 does not execute the hooks5423 with integrations5424 with active integrations5425 executes the services5426 with integrations.skip_ci push option5427 executes the services5428 with inactive integrations5429 does not execute the services5430 when execute_project_hooks param is set to false5431 does not execute hooks and integrations5432 Generating CI variables from push options5433 with empty push options5434 behaves like creates pipeline with params and expected variables5435 calls the create pipeline service5436 with push options not specifying variables5437 behaves like creates pipeline with params and expected variables5438 calls the create pipeline service5439 with push options specifying variables5440 behaves like creates pipeline with params and expected variables5441 calls the create pipeline service5442 with push options not specifying variables in correct format5443 behaves like creates pipeline with params and expected variables5444 calls the create pipeline service5445 Pipeline creation5446 when the pipeline is persisted5447 and there are no errors5448 returns success5449 and there are errors5450 does not log errors and returns success5451 when the pipeline wasn't persisted5452 and there are no errors5453 returns success5454 and there are errors5455 logs errors and returns success5456 notifying KAS5457 enqueues the notification worker5458 when KAS is disabled5459 is expected not to receive perform_async(*(any args)) 0 times5460Sidebars::Groups::Menus::SettingsMenu5461 #render?5462 when user cannot admin group5463 returns false5464 #separated?5465 returns true5466 Menu items5467 General menu5468 behaves like access rights checks5469 is expected not to be nil5470 when the user does not have access5471 is expected to be nil5472 Integrations menu5473 behaves like access rights checks5474 is expected not to be nil5475 when the user does not have access5476 is expected to be nil5477 Projects menu5478 behaves like access rights checks5479 is expected not to be nil5480 when the user does not have access5481 is expected to be nil5482 Access Tokens5483 behaves like access rights checks5484 is expected not to be nil5485 when the user does not have access5486 is expected to be nil5487 Repository menu5488 behaves like access rights checks5489 is expected not to be nil5490 when the user does not have access5491 is expected to be nil5492 CI/CD menu5493 behaves like access rights checks5494 is expected not to be nil5495 when the user does not have access5496 is expected to be nil5497 Applications menu5498 behaves like access rights checks5499 is expected not to be nil5500 when the user does not have access5501 is expected to be nil5502 Packages and registries5503 when packages feature is disabled5504 is expected to be nil5505 when packages feature is enabled5506 behaves like access rights checks5507 is expected not to be nil5508 when the user does not have access5509 is expected to be nil5510Gitlab::OmniauthInitializer5511 .arguments_for5512 when there are no args at all5513 returns an empty array5514 when there is an app_id and an app_secret5515 includes both of them, in positional order5516 when there is an app_id and an app_secret, and an array of args5517 concatenates the args on the end5518 when there is an app_id and an app_secret, and an array of args, and default values5519 concatenates the args on the end5520 when there is an app_id and an app_secret, and a hash of args5521 concatenates the args on the end5522 when there is an app_id and an app_secret, and a hash of args, and default arguments5523 concatenates the args on the end5524 when there is an app_id and an app_secret, no args, and default values5525 concatenates the args on the end5526 when there are args, of an unsupported type5527 when there are default arguments5528 tracks a configuration error5529 when there are no default arguments5530 tracks a configuration error5531 #execute5532 configures providers from array5533 allows "args" array for app_id and app_secret5534 passes app_id and app_secret as additional arguments5535 passes "args" hash as symbolized hash argument5536 normalizes a String strategy_class5537 allows a class to be specified in strategy_class5538 throws an error for an invalid strategy_class5539 configures fail_with_empty_uid for shibboleth5540 configures defaults for google_oauth25541 configures defaults for gitlab5542 configures defaults for gitlab, when arguments are not provided5543 configures defaults for gitlab, when array arguments are provided5544 tracks a configuration error if the arguments are neither a hash nor an array5545 .full_host5546 is expected to eq "http://localhost/test"5547CustomerRelations::Organization5548 associations5549 is expected to belong to group required: false5550 validations5551 is expected to validate that :group cannot be empty/falsy5552 is expected to validate that :name cannot be empty/falsy5553 is expected to validate that :name is case-insensitively unique within the scope of :group_id5554 is expected to validate that the length of :name is at most 2555555 is expected to validate that the length of :description is at most 10245556 #root_group5557 when root group5558 is expected to be valid5559 when subgroup5560 is expected to be invalid5561 #name5562 strips name5563 #find_by_name5564 strips name5565 #self.move_to_root_group5566 moves organizations with unique names and deletes the rest5567 updates contact.organization_id for dupes and leaves the rest untouched5568 .search5569 when search term is empty5570 returns all group crm_organizations5571 when search term is not empty5572 when searching for name5573 is expected to contain exactly #<CustomerRelations::Organization id: 17, group_id: 3326, created_at: "2023-08-10 12:45:20.462019220 ...45:20.462019220 +0000", state: "active", default_rate: nil, name: "ABC_st", description: [FILTERED]>5574 when searching for description5575 is expected to contain exactly #<CustomerRelations::Organization id: 16, group_id: 3326, created_at: "2023-08-10 12:45:20.456097071 ...:45:20.456097071 +0000", state: "inactive", default_rate: nil, name: "DEF", description: [FILTERED]>5576 when searching for name and description5577 is expected to contain exactly #<CustomerRelations::Organization id: 16, group_id: 3326, created_at: "2023-08-10 12:45:20.456097071 ...:45:20.456097071 +0000", state: "inactive", default_rate: nil, name: "DEF", description: [FILTERED]> and #<CustomerRelations::Organization id: 17, group_id: 3326, created_at: "2023-08-10 12:45:20.462019220 ...45:20.462019220 +0000", state: "active", default_rate: nil, name: "ABC_st", description: [FILTERED]>5578 .search_by_state5579 when searching for crm_organizations state5580 returns only inactive crm_organizations5581 returns only active crm_organizations5582 .counts_by_state5583 returns correct crm_organization counts5584 returns 0 with no results5585 sorting5586 .sort_by_name5587 sorts them by name in ascendent order5588 .sort_by_field5589 sorts them by description in descending order5590Gitlab::GitalyClient::ObjectPoolService5591 #create5592 exists on disk5593 when the pool already exists5594 returns an error5595 #delete5596 removes the repository from disk5597 when called twice5598 doesn't raise an error5599 #fetch5600 without changes5601 fetches changes5602 with new reference in source repository5603 fetches changes5604DeleteDiffFilesWorker5605 #perform5606 deletes all merge request diff files5607 updates state to without_files5608 resets the files_count of the diff5609 does nothing if diff was already marked as "without_files"5610 rollsback if something goes wrong5611Members::RequestAccessService5612 when source is nil5613 behaves like a service raising Gitlab::Access::AccessDeniedError5614 raises Gitlab::Access::AccessDeniedError5615 when current user cannot request access to the project5616 behaves like a service raising Gitlab::Access::AccessDeniedError5617 raises Gitlab::Access::AccessDeniedError5618 behaves like a service raising Gitlab::Access::AccessDeniedError5619 raises Gitlab::Access::AccessDeniedError5620 when access requests are disabled5621 behaves like a service raising Gitlab::Access::AccessDeniedError5622 raises Gitlab::Access::AccessDeniedError5623 behaves like a service raising Gitlab::Access::AccessDeniedError5624 raises Gitlab::Access::AccessDeniedError5625 when current user can request access to the project5626 behaves like a service creating a access request5627 succeeds5628 returns a <Source>Member5629 behaves like a service creating a access request5630 succeeds5631 returns a <Source>Member5632Sanitizable5633 behaves like a non-sanitizable field5634 id5635 has no effect5636 behaves like a non-sanitizable field5637 html_body5638 has no effect5639 behaves like a sanitizable field5640 name5641 when input is nil5642 behaves like noop5643 has no effect5644 when input does not contain any html5645 behaves like noop5646 has no effect5647 when input contains html5648 sanitizes the input5649 when input includes html entities5650 does not escape them5651 when input contains pre-escaped html entities5652 is not valid5653 behaves like noop5654 has no effect5655 when input contains double-escaped data5656 is not valid5657 behaves like noop5658 has no effect5659 when input contains a path traversal attempt5660 is not valid5661 behaves like noop5662 has no effect5663 when input contains both path traversal attempt and pre-escaped entities5664 is not valid5665 behaves like noop5666 has no effect5667 behaves like a sanitizable field5668 description5669 when input is nil5670 behaves like noop5671 has no effect5672 when input does not contain any html5673 behaves like noop5674 has no effect5675 when input contains html5676 sanitizes the input5677 when input includes html entities5678 does not escape them5679 when input contains pre-escaped html entities5680 is not valid5681 behaves like noop5682 has no effect5683 when input contains double-escaped data5684 is not valid5685 behaves like noop5686 has no effect5687 when input contains a path traversal attempt5688 is not valid5689 behaves like noop5690 has no effect5691 when input contains both path traversal attempt and pre-escaped entities5692 is not valid5693 behaves like noop5694 has no effect5695Gitlab::QuickActions::CommandDefinition5696 #all_names5697 when the command has aliases5698 returns an array with the name and aliases5699 when the command doesn't have aliases5700 returns an array with the name5701 #noop?5702 when the command has an action block5703 returns false5704 when the command doesn't have an action block5705 returns true5706 #available?5707 when the command has a condition block5708 when the condition block returns true5709 returns true5710 when the condition block returns false5711 returns false5712 when the command doesn't have a condition block5713 returns true5714 when the command has types5715 when the command target type is allowed5716 returns true5717 when the command target type is Work Item5718 when the command is not allowed5719 returns false5720 when the command is allowed5721 returns true5722 when the command target type is not allowed5723 returns true5724 when the command has no types5725 any target type is allowed5726 #execute5727 when the command is a noop5728 doesn't execute the command5729 when the command is not a noop5730 when the command is not available5731 counts the command as executed5732 when the command is available5733 when the commnd has no arguments5734 when the command is provided an argument5735 executes the command5736 when the command is not provided an argument5737 executes the command5738 when the command has 1 required argument5739 when the command is provided an argument5740 executes the command5741 when the command is not provided an argument5742 doesn't execute the command5743 when the command has 1 optional argument5744 when the command is provided an argument5745 executes the command5746 when the command is not provided an argument5747 executes the command5748 when the command defines parse_params block5749 executes the command passing the parsed param5750 #execute_message5751 when the command is a noop5752 returns nil5753 when the command is not a noop5754 when the command is not available5755 returns an error message5756 when the command is available5757 when the execution_message is a static string5758 returns this static string5759 when the explanation is dynamic5760 invokes the proc5761 #explain5762 when the command is not available5763 returns nil5764 when the explanation is a static string5765 returns this static string5766 when warning is set5767 returns this static string5768 when the explanation is dynamic5769 invokes the proc5770SentryIssue5771 associations5772 is expected to belong to issue required: false5773 validations5774 is expected to validate that :issue cannot be empty/falsy5775 is expected to validate that :issue is case-sensitively unique5776 is expected to validate that :sentry_issue_identifier cannot be empty/falsy5777 allows duplicated sentry_issue_identifier5778 validates uniqueness of sentry_issue_identifier per project5779 when importing5780 is expected not to validate that :issue cannot be empty/falsy5781 callbacks5782 after create commit do5783 updates Sentry with a reciprocal link on creation5784 .for_project_and_identifier5785 finds the most recent per project and sentry_issue_identifier5786Ci::CreatePipelineService5787 include:5788 with a local file5789 behaves like including the file5790 includes the job in the file5791 with a local file with rules with a project variable5792 when the rules matches5793 behaves like including the file5794 includes the job in the file5795 when the rules does not match5796 behaves like not including the file5797 does not include the job in the file5798 with a local file with rules with a predefined pipeline variable5799 when the rules matches5800 behaves like including the file5801 includes the job in the file5802 when the rules does not match5803 behaves like not including the file5804 does not include the job in the file5805 with a local file with rules with a run pipeline variable5806 when the rules matches5807 behaves like including the file5808 includes the job in the file5809 when the rules does not match5810 behaves like not including the file5811 does not include the job in the file5812Banzai::ObjectRenderer5813 #render5814 with cache5815 renders and redacts an Array of objects5816 calls Banzai::ReferenceRedactor to perform redaction5817 retrieves field content using Banzai::Renderer.render_field5818 passes context to PostProcessPipeline5819 without cache5820 renders and redacts an Array of objects5821 calls Banzai::ReferenceRedactor to perform redaction5822 retrieves field content using Banzai::Renderer.cacheless_render_field5823Gitlab::GithubImport::Importer::NoteImporter5824 #execute5825 produces a valid Note5826 skips markdown field cache callback5827 when the noteable exists5828 when the author could be found5829 imports the note with the found author as the note author5830 when the note author could not be found5831 imports the note with the project creator as the note author5832 when the note have invalid chars5833 removes invalid chars5834 when note is invalid5835 fails validation5836 when the noteable does not exist5837 does not import the note5838 when the import fails due to a foreign key error5839 does not raise any errors5840 #find_noteable_id5841 returns the ID of the noteable5842Gitlab::Database::Partitioning5843 .register_models5844 ensure that the registered models have partitioning strategy5845 fails when partitioning_strategy is not specified for the model5846 .sync_partitions_ignore_db_error5847 calls sync_partitions5848 when ActiveRecord::ActiveRecordError is raised5849 ignores it5850 when PG::Error is raised5851 ignores it5852 when DISABLE_POSTGRES_PARTITION_CREATION_ON_STARTUP is set5853 does not call sync_partitions5854 .sync_partitions5855 manages partitions for each given model5856 with multiple databases5857 creates partitions in each database5858 without ci database5859 only creates partitions for main database (PENDING: Skipping because database ci exists)5860 when no partitioned models are given5861 manages partitions for each registered model5862 when only a specific database is requested5863 manages partitions for models for the given database5864 when partition_manager_sync_partitions feature flag is disabled5865 skips sync_partitions5866 .report_metrics5867 when no partitioned models are given5868 reports metrics for each registered model5869 when partitioned models are given5870 reports metrics for each given model5871 .drop_detached_partitions5872 drops detached partitions for each database5873 when the feature flag is disabled5874 does not call the DetachedPartitionDropper5875Ci::ExpirePipelineCacheService5876 #execute5877 invalidates Etag caching for project pipelines path5878 invalidates Etag caching for merge request pipelines if pipeline runs on any commit of that source branch5879 updates the cached status for a project5880 does not do N+1 queries5881 destroyed pipeline5882 clears the cache5883 when the pipeline is triggered by another pipeline5884 updates the cache of dependent pipeline5885 when the pipeline triggered another pipeline5886 updates the cache of dependent pipeline5887Gitlab::Database::Migrations::TimeoutHelpers5888 # order random5889 #disable_statement_timeout5890-- transaction_open?()5891 -> 0.0002s5892 disables statement timeouts to current transaction only5893 with real environment5894-- execute("SET statement_timeout TO '20000'")5895 -> 0.0012s5896-- execute("SHOW statement_timeout")5897 -> 0.0008s5898-- transaction_open?()5899 -> 0.0001s5900-- execute("SET LOCAL statement_timeout TO 0")5901 -> 0.0016s5902-- execute("SHOW statement_timeout")5903 -> 0.0008s5904-- execute("SHOW statement_timeout")5905 -> 0.0012s5906-- execute("RESET statement_timeout")5907 -> 0.0008s5908 defines statement to 0 only for current transaction5909 when passing a blocks5910-- execute("SET statement_timeout TO '20000'")5911 -> 0.0082s5912 disables statement timeouts on session level and executes the block5913 with real environment5914-- execute("SET statement_timeout TO '20000'")5915 -> 0.0077s5916-- execute("SET statement_timeout TO '20000'")5917 -> 0.0011s5918-- execute("SHOW statement_timeout")5919 -> 0.0008s5920-- execute("SET statement_timeout TO 0")5921 -> 0.0009s5922-- execute("SHOW statement_timeout")5923 -> 0.0014s5924-- execute("SHOW statement_timeout")5925 -> 0.0008s5926-- execute("RESET statement_timeout")5927 -> 0.0009s5928-- execute("RESET statement_timeout")5929 -> 0.0008s5930-- execute("RESET statement_timeout")5931 -> 0.0008s5932 defines statement to 0 for any code run inside the block5933 when the statement_timeout is already disabled5934 yields control without disabling the timeout or resetting5935gitlab:smtp:secret rake tasks5936 :show5937 displays error when file does not exist5938 displays error when key does not exist5939 displays error when key is changed5940 outputs the unencrypted content when present5941 edit5942# password: '123'5943# user_name: 'gitlab-inst'5944 creates encrypted file5945 displays error when key does not exist5946 displays error when key is changed5947 displays error when write directory does not exist5948somevalue shows a warning when content is invalid5949 displays error when $EDITOR is not set5950 write5951 creates encrypted file from stdin5952 displays error when key does not exist5953 displays error when write directory does not exist5954somevalue shows a warning when content is invalid595500_deprecations5956 # order random5957 Ruby deprecations5958 when catching deprecations through Kernel#warn5959ABC gem is deprecated and will be removed5960 logs them to Gitlab::DeprecationJsonLogger5961 logs them to stderr5962 when in production environment5963ABC gem is deprecated and will be removed5964 does not log them to Gitlab::DeprecationJsonLogger5965 logs them to stderr5966 when GITLAB_LOG_DEPRECATIONS is set5967ABC gem is deprecated and will be removed5968 logs them to Gitlab::DeprecationJsonLogger5969 logs them to stderr5970 when other messages from Kernel#warn5971Sure is hot today5972 does not log them to Gitlab::DeprecationJsonLogger5973 logs them to stderr5974 Rails deprecations5975 when catching deprecation warnings5976DEPRECATION WARNING: ABC will be removed (called from block (3 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/initializers/00_deprecations_spec.rb:40)5977 logs them to Gitlab::DeprecationJsonLogger5978 logs them to stderr5979 when in production environment5980 does not log them to Gitlab::DeprecationJsonLogger5981 does not log them to stderr5982 when GITLAB_LOG_DEPRECATIONS is set5983 logs them to Gitlab::DeprecationJsonLogger5984 does not log them to stderr5985 when catching disallowed warnings5986 raises Exception and warns on stderr5987 when in production environment5988 does not raise5989 behaves like does not log to stderr5990 does not log them to stderr5991 when GITLAB_LOG_DEPRECATIONS is set5992 does not raise5993 behaves like does not log to stderr5994 does not log them to stderr5995 configuring ActiveSupport::Deprecation.disallowed_warnings5996 sets disallowed warnings5997 when in production environment5998 does not set disallowed warnings5999 when GITLAB_LOG_DEPRECATIONS is set6000 does not set disallowed warnings6001LabelPriority6002 relationships6003 is expected to belong to project required: false6004 is expected to belong to label required: false6005 validations6006 is expected to validate that :project cannot be empty/falsy6007 is expected to validate that :label cannot be empty/falsy6008 is expected to validate that :priority looks like an integer greater than or equal to 06009 validates uniqueness of label_id scoped to project_id6010 when importing6011 is expected not to validate that :label cannot be empty/falsy6012Snippets::RepositoryStorageMove6013 behaves like handles repository moves6014 associations6015 is expected to belong to container required: false6016 validations6017 is expected to validate that :container cannot be empty/falsy6018 is expected to validate that :state cannot be empty/falsy6019 is expected to validate that :source_storage_name cannot be empty/falsy6020 is expected to validate that :destination_storage_name cannot be empty/falsy6021 source_storage_name inclusion6022 does not allow repository storages that don't match a label in the configuration6023 destination_storage_name inclusion6024 does not allow repository storages that don't match a label in the configuration6025 container repository read-only6026 does not allow the container to be read-only on create6027 defaults6028 destination_storage_name6029 can pick new storage6030 state transitions6031 when in the default state6032 and transits to scheduled6033 triggers the corresponding repository storage worker6034 when the transition fails6035 does not trigger the corresponding repository storage worker and adds an error6036 and transits to started6037 does not allow the transition6038 when started6039 and transits to replicated6040 marks the container as writable6041 updates the updated_at column of the container6042 and transits to failed6043 marks the container as writable6044Gitlab::Lfs::Client6045 #batch6046 server returns 200 OK6047 makes a successful batch request6048 server returns 400 error6049 raises an error6050 server returns 500 error6051 raises an error6052 server returns an exotic transfer method6053 raises an error6054 #upload6055 server returns 200 OK to an authenticated request6056 makes an HTTP PUT with expected parameters6057 server returns 200 OK with a chunked transfer request6058 makes an HTTP PUT with expected parameters6059 server returns 200 OK with a username and password in the URL6060 makes an HTTP PUT with expected parameters6061 no credentials in client6062 server returns 200 OK with credentials in URL6063 makes an HTTP PUT with expected parameters6064 server returns 200 OK to an unauthenticated request6065 makes an HTTP PUT with expected parameters6066 request is not marked as authenticated but includes an authorization header6067 prefers the provided authorization header6068 LFS object has no file6069 makes an HTTP PUT with expected parameters6070 server returns 400 error6071 raises an error6072 server returns 500 error6073 raises an error6074 #verify6075 server returns 200 OK to an authenticated request6076 makes an HTTP POST with expected parameters6077 server returns 200 OK with a username and password in the URL6078 makes an HTTP PUT with expected parameters6079 server returns 200 OK to an unauthenticated request6080 makes an HTTP POST with expected parameters6081 request is not marked as authenticated but includes an authorization header6082 prefers the provided authorization header6083 server returns 400 error6084 raises an error6085 server returns 500 error6086 raises an error6087Users::BanService6088 ban6089 when successful6090 returns success status6091 bans the user6092 creates a BannedUser6093 logs ban in application logs6094 tracks the event6095 when failed6096 when user is blocked6097 returns state error message6098 behaves like does not modify the BannedUser record or user state6099 does not modify the BannedUser record or user state6100 when user is not an admin6101 returns permissions error message6102 behaves like does not modify the BannedUser record or user state6103 does not modify the BannedUser record or user state6104Mutations::Issues::SetLocked6105 is expected to require graphql authorizations :update_issue6106 #resolve6107 behaves like permission level for issue mutation is correctly verified6108 when the user is not a project member6109 behaves like when the user does not have access to the resource6110 raises an error6111 even if assigned to the issue6112 does not modify issue6113 even if author of the issue6114 does not modify issue6115 when the user is a project member6116 with guest role6117 behaves like when the user does not have access to the resource6118 raises an error6119 even if assigned to the issue6120 does not modify issue6121 even if author of the issue6122 does not modify issue6123 when the user can update the issue6124 returns the issue as discussion locked6125 when passing locked as false6126 unlocks the discussion6127ProfilesHelper6128 #commit_email_select_options6129 returns an array with private commit email along with all the verified emails6130 #email_provider_label6131 returns nil for users without external email6132 returns omniauth provider label for users with external attributes6133 returns the correct omniauth provider label for users with some external attributes6134 returns 'LDAP' for users with external email but no email provider6135 #ssh_key_expiration_tooltip6136 error: false, expired: false, result: nil6137 is expected to eq nil6138 error: true, expired: false, result: "Key type is forbidden. Must be DSA, ECDSA, or ED25519"6139 is expected to eq "Key type is forbidden. Must be DSA, ECDSA, or ED25519"6140 error: true, expired: true, result: "Key type is forbidden. Must be DSA, ECDSA, or ED25519"6141 is expected to eq "Key type is forbidden. Must be DSA, ECDSA, or ED25519"6142 #ssh_key_expires_field_description6143 is expected to eq "Optional but recommended. If set, key becomes invalid on the specified date."6144 #middle_dot_divider_classes6145 stacking: nil, breakpoint: nil, expected: ["gl-mb-3", "gl-display-inline-block", "middle-dot-divider"]6146 returns CSS classes needed to render the middle dot divider6147 stacking: true, breakpoint: nil, expected: ["gl-mb-3", "middle-dot-divider-sm", "gl-display-block", "gl-sm-display-inline-block"]6148 returns CSS classes needed to render the middle dot divider6149 stacking: nil, breakpoint: :sm, expected: ["gl-mb-3", "gl-display-inline-block", "middle-dot-divider-sm"]6150 returns CSS classes needed to render the middle dot divider6151 #prevent_delete_account?6152 returns false6153 #user_profile_data6154 returns user profile data6155Gitlab::SidekiqMiddleware::SkipJobs6156 # order random6157 #call6158 with worker not opted for database health check6159 with all combinations of drop and defer FFs6160 drop_ff: false, run_ff: true, resulting_behavior: "runs the job normally"6161 behaves like runs the job normally6162 yields control6163 does not increment any metric counter6164 does not increment deferred_count6165 drop_ff: true, run_ff: true, resulting_behavior: "drops the job"6166 behaves like drops the job6167 does not yield control6168 increments counter6169 does not increment deferred_count6170 has dropped field in job equal to true6171 drop_ff: false, run_ff: false, resulting_behavior: "defers the job"6172 behaves like defers the job6173 does not yield control6174 delays the job6175 increments counter6176 has deferred related fields in job payload6177 drop_ff: true, run_ff: false, resulting_behavior: "drops the job"6178 behaves like drops the job6179 does not yield control6180 increments counter6181 does not increment deferred_count6182 has dropped field in job equal to true6183 with worker opted for database health check6184 without any stop signal from database health check6185 runs the job normally6186 with stop signal from database health check6187 defers the job by set time6188JiraImport::CloudUsersMapperService6189 #execute6190 behaves like mapping jira users6191 jira_users is nil6192 returns an empty array6193 when jira_users is present6194 returns users mapped to Gitlab6195 runs only 4 queries6196Gitlab::Spamcheck::Result6197 # order random6198 #initialize6199 verdict_value: 0, expected: "allow", verdict_evaluated: true, verdict_score: 0.016200 returns expected verdict6201 returns expected evaluated?6202 returns expected score6203 verdict_value: 1, expected: "conditional_allow", verdict_evaluated: true, verdict_score: 0.56204 returns expected verdict6205 returns expected evaluated?6206 returns expected score6207 verdict_value: 2, expected: "disallow", verdict_evaluated: true, verdict_score: 0.756208 returns expected verdict6209 returns expected evaluated?6210 returns expected score6211 verdict_value: 3, expected: "block", verdict_evaluated: true, verdict_score: 0.996212 returns expected verdict6213 returns expected evaluated?6214 returns expected score6215 verdict_value: 4, expected: "noop", verdict_evaluated: false, verdict_score: 0.06216 returns expected verdict6217 returns expected evaluated?6218 returns expected score6219Gitlab::View::Presenter::Base6220 .presenter?6221 returns true6222 .presents6223 raises an error when symbol is passed6224 when the presenter class specifies a custom keyword6225 exposes the subject with the given keyword6226 when the presenter class inherits Presenter::Delegated6227 sets the delegator target6228 when the presenter class inherits Presenter::Simple6229 does not set the delegator target6230 #__subject__6231 returns the subject6232 #can?6233 user is not allowed6234 returns false6235 user is allowed6236 returns true6237 subject is overridden6238 returns true6239 #present6240 returns self6241 #url_builder6242 returns the UrlBuilder instance6243 #web_url6244 delegates to the UrlBuilder6245 #web_path6246 delegates to the UrlBuilder6247Resolvers::Ci::ConfigResolver6248 #resolve6249 when the user can create a pipeline6250 with a valid .gitlab-ci.yml6251 with a sha6252 behaves like a valid config file6253 lints the ci config file and returns the merged yaml file6254 without a sha6255 behaves like a valid config file6256 lints the ci config file and returns the merged yaml file6257 with an invalid .gitlab-ci.yml6258 responds with errors about invalid syntax6259 with an invalid SHA6260 logs the invalid SHA to Sentry6261 when the user cannot create a pipeline6262 returns an error stating that the user cannot access the linting6263ReleaseHighlights::Validator::Entry6264 validations6265 with a valid entry6266 is expected to be valid6267 with an invalid entry6268 is expected to be invalid6269 with a blank entry6270 is expected to validate that :name cannot be empty/falsy, producing a custom validation error on failure6271 is expected to validate that :description cannot be empty/falsy, producing a custom validation error on failure6272 is expected to validate that :stage cannot be empty/falsy, producing a custom validation error on failure6273 is expected to validate that :self_managed cannot be empty/falsy, producing a custom validation error on failure6274 is expected to validate that :gitlab_com cannot be empty/falsy, producing a custom validation error on failure6275 is expected to allow :image_url to be ‹nil›6276 is expected to validate that :available_in cannot be empty/falsy, producing a custom validation error on failure6277 is expected to validate that :published_at cannot be empty/falsy, producing a custom validation error on failure6278 is expected to validate that :release looks like a number, producing a custom validation error on failure6279 validates URI of "documentation_link" and "image_url"6280 validates published_at is a date6281 validates available_in are included in list6282AuthorizedProjectUpdate::ProjectRecalculatePerUserService#execute6283 returns success6284 when there are no changes to be made6285 does not change authorizations6286 when there are changes to be made6287 when addition is required6288 adds a new authorization record for the specific user6289 does not add a new authorization record for the other user6290 adds a new authorization record with the correct access level for the specific user6291 when removal is required6292 removes the authorization record for the specific user6293 does not remove the authorization record for the other user6294 when an update in access level is required6295 updates the authorization of the specific user to the correct access level6296 does not update the authorization of the other user to the correct access level6297Gitlab::Analytics::CycleAnalytics::Aggregated::RecordsFetcher6298 #serialized_records6299 sorting6300 when sorting by end event DESC6301 behaves like match returned records6302 returns issues in the correct order6303 passes a hash with all expected attributes to the serializer6304 when intervalstyle setting is configured to "postgres"6305 avoids nil durations6306 when sorting by end event ASC6307 behaves like match returned records6308 returns issues in the correct order6309 passes a hash with all expected attributes to the serializer6310 when sorting by duration DESC6311 behaves like match returned records6312 returns issues in the correct order6313 passes a hash with all expected attributes to the serializer6314 when sorting by duration ASC6315 behaves like match returned records6316 returns issues in the correct order6317 passes a hash with all expected attributes to the serializer6318 pagination6319 behaves like match returned records6320 returns issues in the correct order6321 passes a hash with all expected attributes to the serializer6322 when passing a block to serialized_records method6323 yields the underlying stage event scope6324 when the issue record no longer exists6325 skips non-existing issue records6326AdminEmailWorker6327 .perform6328 does not attempt to send repository check mail when they are disabled6329 repository_checks enabled6330 checks if repository check mail should be sent6331 does not send mail when there are no failed repos6332 send mail when there is a failed repo6333Gitlab::GithubImport::Representation::NoteText6334 # order random6335 #github_identifiers6336 with Release6337 returns a hash with needed identifiers6338 with Issue6339 returns a hash with needed identifiers6340 with Merge Request6341 returns a hash with needed identifiers6342 with Note6343 returns a hash with needed identifiers6344 .from_db_record6345 with Release6346 includes tag6347 behaves like a Note text data6348 returns an instance of NoteText6349 includes record DB id6350 includes record type6351 includes note text6352 with Issue6353 includes noteable iid6354 behaves like a Note text data6355 returns an instance of NoteText6356 includes record DB id6357 includes record type6358 includes note text6359 with MergeRequest6360 includes noteable iid6361 behaves like a Note text data6362 returns an instance of NoteText6363 includes record DB id6364 includes record type6365 includes note text6366 with Note6367 includes noteable type6368 behaves like a Note text data6369 returns an instance of NoteText6370 includes record DB id6371 includes record type6372 includes note text6373 .from_json_hash6374 behaves like a Note text data6375 returns an instance of NoteText6376 includes record DB id6377 includes record type6378 includes note text6379Gitlab::UrlBlockers::IpAllowlistEntry6380 #initialize6381 initializes without port6382 initializes with port6383 #match?6384 matches with equivalent IP and port6385 matches any port when port is nil6386 does not match when port is present but requested_port is nil6387 matches when port and requested_port are nil6388 works with ipv66389 matches ipv4 within IPv4 range6390 matches IPv6 within IPv6 range6391 matches IPv4 to IPv6 mapped addresses in allow list6392 matches IPv4 to IPv6 mapped addresses in requested IP6393Database::ConsistencyFixService6394 #execute6395 fixing namespaces inconsistencies6396 when both objects exist6397 creates a Namespaces::SyncEvent to modify the target object6398 enqueues the worker to process the Namespaces::SyncEvents6399 when the source object has been deleted, but not the target6400 deletes the target object6401 fixing projects inconsistencies6402 when both objects exist6403 creates a Projects::SyncEvent to modify the target object6404 enqueues the worker to process the Projects::SyncEvents6405 when the source object has been deleted, but not the target6406 deletes the target object6407 #create_sync_event_for6408 when the source model is Namespace6409 creates a Namespaces::SyncEvent object6410 when the source model is Project6411 creates a Projects::SyncEvent object6412 when the source model is User6413 raises an error6414Integrations::CustomIssueTracker6415 Validations6416 when integration is active6417 is expected to validate that :project_url cannot be empty/falsy6418 is expected to validate that :issues_url cannot be empty/falsy6419 is expected to validate that :new_issue_url cannot be empty/falsy6420 behaves like issue tracker integration URL attribute6421 is expected to allow :project_url to be ‹"https://example.com"›6422 is expected not to allow :project_url to be ‹"example.com"›6423 is expected not to allow :project_url to be ‹"ftp://example.com"›6424 is expected not to allow :project_url to be ‹"herp-and-derp"›6425 behaves like issue tracker integration URL attribute6426 is expected to allow :issues_url to be ‹"https://example.com"›6427 is expected not to allow :issues_url to be ‹"example.com"›6428 is expected not to allow :issues_url to be ‹"ftp://example.com"›6429 is expected not to allow :issues_url to be ‹"herp-and-derp"›6430 behaves like issue tracker integration URL attribute6431 is expected to allow :new_issue_url to be ‹"https://example.com"›6432 is expected not to allow :new_issue_url to be ‹"example.com"›6433 is expected not to allow :new_issue_url to be ‹"ftp://example.com"›6434 is expected not to allow :new_issue_url to be ‹"herp-and-derp"›6435 when integration is inactive6436 is expected not to validate that :project_url cannot be empty/falsy6437 is expected not to validate that :issues_url cannot be empty/falsy6438 is expected not to validate that :new_issue_url cannot be empty/falsy6439Gitlab::Issuable::Clone::AttributesRewriter6440 with missing target parent6441 raises an ArgumentError6442 setting labels6443 sets labels present in the new project and group labels6444 does not set any labels when not used on the original issue6445 setting milestones6446 sets milestone to nil when old issue milestone is not in the new project6447 copies the milestone when old issue milestone title is in the new project6448 copies the milestone when old issue milestone is a group milestone6449 when include_milestone is false6450 does not return any milestone6451 when target parent is a group6452 setting labels6453 keeps group labels and merges project labels where possible6454Gitlab::Ci::Config::Yaml::Tags::Reference6455 .tag6456 implements the tag method6457 #resolve6458 with circular references6459 raises CircularReferenceError6460 with nested circular references6461 raises CircularReferenceError6462 with missing references6463 raises MissingReferenceError6464 with invalid references6465 yaml: "a: !reference", error_message: "!reference [] is not valid"6466 raises an error6467 yaml: "a: !reference str", error_message: "!reference \"str\" is not valid"6468 raises an error6469 yaml: "a: !reference 1", error_message: "!reference \"1\" is not valid"6470 raises an error6471 yaml: "a: !reference [1]", error_message: "!reference [1] is not valid"6472 raises an error6473 yaml: "a: !reference { b: c }", error_message: "!reference {\"b\"=>\"c\"} is not valid"6474 raises an error6475 when the references are valid but do not match the config6476 raises a MissingReferenceError6477 with arrays6478 is expected to match (a hash including {:f => {:g => [[1, 2], 5, [3, 4]]}})6479 with hashes6480 when referencing an entire hash6481 is expected to match (a hash including {:e => {:f => {:c => "c", :d => "d"}}})6482 when referencing only a hash value6483 is expected to match (a hash including {:i => {:g => "c", :h => "h"}})6484 when referencing a value before its definition6485 is expected to match (a hash including {:a => {:b => {:e => 1, :f => "f"}}})6486Gitlab::Auth::OAuth::Provider6487 .enabled?6488 when OmniAuth is disabled6489 allows database auth6490 allows LDAP auth6491 does not allow other OmniAuth providers6492 when OmniAuth is enabled6493 allows database auth6494 allows LDAP auth6495 allows other OmniAuth providers6496 .config_for6497 for an LDAP provider6498 when the provider exists6499 returns the config6500 when the provider does not exist6501 returns nil6502 for an OmniAuth provider6503 when the provider exists6504 returns the config6505 merges defaults with the given configuration6506 when the provider does not exist6507 returns nil6508 for an OpenID Connect provider6509 when the provider exists6510 returns the config6511 .label_for6512 when configuration specifies a custom label6513 returns the custom label name6514 when configuration does not specify a custom label6515 when the name does not correspond to a label mapping6516 returns the titleized name6517 when the name corresponds to a label mapping6518 returns the mapped name6519Gitlab::ReactiveCacheSetCache6520 #cache_key6521 includes the suffix6522 #read6523 is expected to be empty6524 after item added6525 is expected to contain exactly "test_item"6526 #write6527 writes the value to the cache6528 sets the expiry of the set6529 #clear_cache!6530 deletes the cached items6531 when key size is large6532 sends multiple pipelines of 1000 unlinks6533 #include?6534 is expected to equal false6535 item added6536 is expected to equal true6537 count6538 is expected to equal 06539 item added6540 is expected to equal 16541Integrations::PropagateService6542 .propagate6543 with inherited integration6544 calls to PropagateIntegrationProjectWorker6545 with a project without integration6546 calls to PropagateIntegrationProjectWorker6547 with a group without integration6548 calls to PropagateIntegrationProjectWorker6549 for a group-level integration6550 with a project without integration6551 calls to PropagateIntegrationProjectWorker6552 with a subgroup without integration6553 calls to PropagateIntegrationGroupWorker6554 with a subgroup with integration6555 calls to PropagateIntegrationInheritDescendantWorker6556Gitlab::OtpKeyRotator6557 #rotate!6558 stores the calculated values in a spreadsheet6559 new key is too short6560 is expected to raise ArgumentError6561 new key is the same as the old key6562 is expected to raise ArgumentError6563 #rollback!6564 updates rows to the old value6565Ci::Runners::StaleMachinesCleanupCronWorker6566 # order random6567 #perform6568 behaves like an idempotent worker6569 is labeled as idempotent6570 performs multiple times sequentially without raising an exception6571 delegates to Ci::Runners::StaleMachinesCleanupService6572 cleans up stale runner managers6573Gitlab::Ci::Config::Entry::Product::Matrix6574 validations6575 when entry config value is correct6576 #valid?6577 is expected to be valid6578 when entry config generates too many jobs6579 #valid?6580 is expected not to be valid6581 #errors6582 returns error about too many jobs6583 when entry config has only one variable with multiple values6584 #valid?6585 is expected to be valid6586 #errors6587 returns no errors6588 #value6589 returns the value without raising an error6590 when entry config has only one variable with one value6591 #valid?6592 is expected to be valid6593 #errors6594 returns no errors6595 #value6596 returns the value without raising an error6597 when config value has wrong type6598 #valid?6599 is expected not to be valid6600 #errors6601 returns error about incorrect type6602 .compose!6603 when valid job entries composed6604 #value6605 returns key value6606 #descendants6607 creates valid descendant nodes6608 with empty config6609 #value6610 returns empty value6611 #number_of_generated_jobs6612 with empty config6613 is expected to be zero6614 with only one variable6615 is expected to eq 106616 with two variables6617 is expected to eq 506618 with two sets of variables6619 is expected to eq 566620Ci::ResourceGroups::AssignResourceFromResourceGroupWorker6621 has the `until_executed` deduplicate strategy6622 has an option to reschedule once if deduplicated6623 #perform6624 is labeled as idempotent6625 performs multiple times sequentially without raising an exception6626 when resource group exists6627 executes AssignResourceFromResourceGroupService6628 when build does not exist6629 does not execute AssignResourceFromResourceGroupService6630Issuable::ProcessAssignees6631 #execute6632 returns assignee_ids when add_assignee_ids and remove_assignee_ids are not specified6633 combines other ids when assignee_ids is nil6634 combines other ids when both add_assignee_ids and remove_assignee_ids are not empty6635 combines other ids when remove_assignee_ids is not empty6636 combines other ids when add_assignee_ids is not empty6637 combines ids when existing_assignee_ids and extra_assignee_ids are omitted6638 handles mixed string and integer arrays6639MergeRequestWidgetCommitEntity6640 as json6641 is expected to eq "Merge branch 'branch-merged' into 'master'\r\n\r\nadds bar folder and branch-test text file to check Repository merged_to_root_ref method\r\n\r\n\r\n\r\nSee merge request !12"6642 is expected to eq "b83d6e39"6643 is expected to eq "Merge branch 'branch-merged' into 'master'"6644Ci::TrackEnvironmentUsage6645 # order random6646 deployment_name?6647 does detect deployment names6648 does detect partial deployment names6649 does not detect non-deployment names6650 is case insensitive6651 #verifies_environment?6652 when build is the verify action for the environment6653 is expected to be truthy6654 when build is not the verify action for the environment6655 is expected to be falsey6656WorkItems::ImportWorkItemsCsvWorker6657 # order random6658 .sidekiq_retries_exhausted6659 destroys upload6660 #perform6661 calls #execute on WorkItems::ImportCsvService and destroys upload6662 behaves like an idempotent worker6663 is labeled as idempotent6664 performs multiple times sequentially without raising an exception6665Packages::CleanupPackageFileWorker6666 #perform_work6667 with no work to do6668 is expected to be nil6669 with work to do6670 deletes the oldest package file pending destruction based on id6671 with a duplicated PyPI package file6672 deletes one of the duplicates6673 with a package file to destroy6674 with an error during the destroy6675 handles the error6676 when trying to destroy a destroyed record6677 handles the error6678 removing the last package file6679 deletes the package file and the package6680 #max_running_jobs6681 is expected to eq 56682 #remaining_work_count6683 is expected to eq 26684ContainerExpirationPolicies::CleanupService6685 #execute6686 with a successful cleanup tags service execution6687 completely clean up the repository6688 without a successful cleanup tags service execution6689 partially clean up the repository6690 with a truncated cleanup tags service response6691 partially clean up the repository6692 with no repository6693 returns an error response6694 with an invalid policy6695 returns an error response6696 with a network error6697 raises an error6698 next run scheduling6699 with cleanups started_at before policy next_run_at6700 behaves like not scheduling the next run6701 does not scheduled the next run6702 with cleanups started_at around policy next_run_at6703 behaves like not scheduling the next run6704 does not scheduled the next run6705 with only the current repository started_at before the policy next_run_at6706 behaves like scheduling the next run6707 schedules the next run6708 with cleanups started_at after policy next_run_at6709 behaves like scheduling the next run6710 schedules the next run6711 with a future policy next_run_at6712 behaves like not scheduling the next run6713 does not scheduled the next run6714Gitlab::Metrics::LooseForeignKeysSlis6715 # order random6716 #record_apdex6717 with success: true6718 increments the loose_foreign_key_clean_ups Apdex as a success6719 with success: false6720 increments the loose_foreign_key_clean_ups Apdex as not a success6721 #initialize_slis!6722 initializes Apdex and ErrorRate SLIs for loose_foreign_key_clean_ups6723 #record_error_rate6724 with error: true6725 increments the loose_foreign_key_clean_ups ErrorRate as an error6726 with error: false6727 increments the loose_foreign_key_clean_ups ErrorRate as not an error6728Postgresql::ReplicationSlot6729 is expected to be a kind of Gitlab::Database::SharedModel(abstract)6730 .in_use?6731 returns true when replication slots are present6732 returns false when replication slots are not present6733 returns false if the existence check is invalid6734 .lag_too_great?6735 does not raise an exception6736 returns true when replication lag is too great6737 returns false when more than one replicas is up to date enough6738 returns false when replication lag is not too great6739 returns false when there is a nil replication lag6740 #max_replication_slots6741 returns the maximum number of replication slots6742 with enough slots available6743 #slots_count6744 returns the number of replication slots6745 #unused_slots_count6746 returns the number of unused replication slots6747 #max_retained_wal6748 returns the retained WAL size6749 #slots_retained_bytes6750 returns the number of retained bytes6751Types::DiffType6752 # order random6753 is expected to eq "Diff"6754 contains attributes related to diff6755 #diff6756 returns the diff of the passed commit6757GraphHelper6758 #get_refs6759 filters our refs used by GitLab6760 #should_render_dora_charts6761 always returns false6762 #should_render_quality_summary6763 always returns false6764Preloaders::LabelsPreloader6765 project labels6766 preloads the max access level6767 behaves like an efficient database query6768 does not make n+1 queries6769 group labels6770 behaves like an efficient database query6771 does not make n+1 queries6772DeleteUserWorker6773 calls the DeleteUserWorker with the params it was given6774 uses symbolized keys6775 when user is banned6776 behaves like does nothing6777 does not instantiate a DeleteUserWorker6778 when delay_delete_own_user feature flag is disabled6779 proceeds with deletion6780 when user to delete does not exist6781 behaves like does nothing6782 does not instantiate a DeleteUserWorker6783 when current user does not exist6784 behaves like does nothing6785 does not instantiate a DeleteUserWorker6786 when user to delete and current user do not exist6787 behaves like does nothing6788 does not instantiate a DeleteUserWorker6789environments routing6790 routing environment folders6791 when using JSON format6792 correctly matches environment name and JSON format6793 when using HTML format6794 correctly matches environment name and HTML format6795 when using implicit format6796 correctly matches environment name6797Gitlab::InstrumentationHelper6798 .add_instrumentation_data6799 includes DB counts6800 logs cpu_s duration6801 logs the process ID6802 logs the worker ID6803 includes DB counts6804 when Gitaly calls are made6805 adds Gitaly and Redis data6806 when Redis calls are made6807 adds Redis data and omits Gitaly data6808 when LDAP requests are made6809 adds LDAP data6810 when the request matched a Rack::Attack safelist6811 logs the safelist name6812 rate-limiting gates6813 when the request did not pass through any rate-limiting gates6814 logs an empty array of gates6815 when the request passed through rate-limiting gates6816 logs an array of gates used6817 when logging memory allocations6818 logs memory usage metrics6819 when replica caught up search was made6820 includes related metrics6821 when only a single counter was updated6822 includes only that counter into logging6823 when there is an uploaded file6824 adds upload data6825 when an api call to the search api is made6826 adds search data6827Mutations::Users::SetNamespaceCommitEmail6828 # order random6829 is expected to require graphql authorizations :read_namespace6830 #resolve6831 when current_user does not have permission6832 raises an error6833 when the user has permission6834 when the email does not belong to the target user6835 returns the validation error6836 when namespace is a group6837 behaves like success6838 creates namespace commit email with correct values6839 when namespace is a user6840 behaves like success6841 creates namespace commit email with correct values6842 when namespace is a project6843 behaves like success6844 creates namespace commit email with correct values6845Gitlab::OtherMarkup6846 XSS Checks6847 does not convert dangerous links into HTML6848 when rendering takes too long6849 times out6850Clusters::Kubernetes::FetchKubernetesTokenService6851 #execute6852 when params correct6853 when the secret exists6854 is expected to eq "xxx.token.xxx"6855 when there is a 500 error6856 is expected to raise Kubeclient::HttpError6857 when the secret does not exist on the first try6858 retries and finds the token6859 when the secret permanently does not exist6860 is expected to be nil6861 when the secret is missing a token on the first try6862 retries and finds the token6863 when the secret is permanently missing a token6864 is expected to be nil6865Preloaders::GroupRootAncestorPreloader6866 when the preloader is used6867 when no additional preloads are provided6868 behaves like executes N matching DB queries6869 executes the specified root_ancestor queries6870 strong_memoizes the correct root_ancestor6871 when additional preloads are provided6872 behaves like executes N matching DB queries6873 executes the specified root_ancestor queries6874 strong_memoizes the correct root_ancestor6875 when the preloader is not used6876 behaves like executes N matching DB queries6877 executes the specified root_ancestor queries6878 strong_memoizes the correct root_ancestor6879Gitlab::Metrics::Subscribers::ActionCable6880 #transmit6881 for transmissions initiated by Channel instance6882 tracks the event with "caller" set to "channel"6883 for transmissions initiated by GraphQL event subscriber6884 tracks the event with correct "caller" and "broadcasting"6885 is indifferent to keys being symbols or strings in result payload6886 when transmission is coming from unknown source6887 tracks the event with "caller" set to "unknown"6888 #broadcast6889 when broadcast is for a GraphQL event6890 tracks the event with broadcasting set to event topic6891 when broadcast is for a GraphQL channel subscription6892 strips out subscription ID from broadcasting6893 when broadcast is something else6894 tracks the event as "unknown"6895 #transmit_subscription_confirmation6896 tracks the subscription confirmation event6897 #transmit_subscription_rejection6898 tracks the subscription rejection event6899AwardEmojis::BaseService6900 .initialize6901 uses same emoji name if not an alias6902 uses emoji original name if its an alias6903 .execute_hooks6904 with no emoji hooks configured6905 does not build hook_data6906 with emoji hooks configured6907 builds hook_data and calls execute_hooks for project6908Projects::FinalizeProjectStatisticsRefreshWorker6909 # order random6910 #perform6911 stores the refresh increment to the buffered counter6912 when record class does not exist6913 does nothing6914 when record does not exist6915 does nothing6916Gitlab::Git::LfsChanges6917 #new_pointers6918 filters new objects to find lfs pointers6919 limits new_objects using object_limit6920 times out if given a small dynamic timeout6921RuboCop::Cop::RSpec::AvoidTestProf6922 # order random6923 when there are offenses6924 method_call: "let_it_be(:user)", method_name: "let_it_be", alternatives: "`let` or `let!`"6925 registers the offense6926 method_call: "let_it_be_with_reload(:user)", method_name: "let_it_be_with_reload", alternatives: "`let` or `let!`"6927 registers the offense6928 method_call: "let_it_be_with_refind(:user)", method_name: "let_it_be_with_refind", alternatives: "`let` or `let!`"6929 registers the offense6930 method_call: "before_all", method_name: "before_all", alternatives: "`before` or `before(:all)`"6931 registers the offense6932 when there are no offenses6933 method_call: "let(:user)"6934 does not register an offense6935 method_call: "let!(:user)"6936 does not register an offense6937 method_call: "before"6938 does not register an offense6939 method_call: "before(:all)"6940 does not register an offense6941RuboCop::Cop::RSpec::FactoryBot::LocalStaticAssignment6942 # order random6943 does not flag local assignments in unrelated blocks6944 behaves like local static assignment6945 flags static local assignment in `transient`6946 does not flag correct use6947 behaves like local static assignment6948 flags static local assignment in `factory :project`6949 does not flag correct use6950 behaves like local static assignment6951 flags static local assignment in `trait :closed`6952 does not flag correct use6953Gitlab::DataBuilder::WikiPage6954 .build6955 is expected to be a kind of Hash6956 is expected to eq "wiki_page"6957 is expected to eq {:avatar_url=>"https://www.gravatar.com/avatar/402fce09c73861756abb87e3f175b071?s=80&d=identicon", :email=>"[REDACTED]", :id=>2284, :name=>"Sidney Jones2326", :username=>"user1184"}6958 is expected to eq {:avatar_url=>nil, :ci_config_path=>nil, :default_branch=>"master", :description=>nil, :git_http_url=...25/project-1112.git", :visibility_level=>0, :web_url=>"http://localhost/namespace1025/project-1112"}6959 is expected to eq {:default_branch=>"master", :git_http_url=>"http://localhost/namespace1025/project-1112.wiki.git", :g...espace1025/project-1112.wiki", :web_url=>"http://localhost/namespace1025/project-1112/-/wikis/home"}6960 is expected to include {:slug => "Page-1", :title => "Page 1", :content => "Content for wiki page", :format => :markdown, :message => nil, "content" => "Content for wiki page"}6961 is expected to include {:url => "http://localhost/namespace1025/project-1112/-/wikis/Page-1"}6962 is expected to include {:action => "create"}6963 is expected to include {:diff_url => "http://localhost/namespace1025/project-1112/-/wikis/Page-1/diff?version_id=d08120ae8f0603f7b6d1cafb6d8d31a546f98ce7"}6964SessionsHelper6965 #recently_confirmed_com?6966 when on .com6967 when flash notice is empty it is false6968 when flash notice is anything it is false6969 when flash notice is devise confirmed message it is true6970 when not on .com6971 when flash notice is devise confirmed message it is false6972 #unconfirmed_email?6973 returns true when the flash alert contains a devise failure unconfirmed message6974 returns false when the flash alert does not contain a devise failure unconfirmed message6975 #unconfirmed_verification_email?6976 reset_first_offer?: true, unconfirmed_email_present?: true, token_valid?: true, result: true6977 is expected to eq true6978 reset_first_offer?: false, unconfirmed_email_present?: true, token_valid?: true, result: false6979 is expected to eq false6980 reset_first_offer?: true, unconfirmed_email_present?: false, token_valid?: true, result: false6981 is expected to eq false6982 reset_first_offer?: true, unconfirmed_email_present?: true, token_valid?: false, result: false6983 is expected to eq false6984 #verification_email6985 when there is an unconfirmed verification email6986 is expected to eq "unconfirmed@email"6987 when there is no unconfirmed verification email6988 is expected to eq "user2311@example.org"6989 #verification_data6990 returns the expected data6991 #obfuscated_email6992 delegates to Gitlab::Utils::Email.obfuscated_email6993 #remember_me_enabled?6994 when application setting is enabled6995 is expected to equal true6996 when application setting is disabled6997 is expected to equal false6998ForkNetworkMember6999 validations7000 is expected to validate that :project cannot be empty/falsy7001 is expected to validate that :fork_network cannot be empty/falsy7002 destroying a ForkNetworkMember7003 removes the fork network if it was the last member7004 does not destroy the fork network if there are members left7005gitlab:generate_sample_prometheus_data rake task7006 # order random7007 creates the file correctly7008Import::ManifestProviderRepoEntity7009 behaves like exposes required fields for import entity7010 exposes required fields7011 correctly exposes id7012 correctly exposes full name7013 correctly exposes sanitized name7014 correctly exposes provider link7015Gitlab::PushOptions7016 can parse multiple push options7017 stores options internally as a HashWithIndifferentAccess7018 selects the last option when options contain duplicate namespace and key pairs7019 defaults values to true7020 expands aliases7021 forgives broken push options7022 namespace and key validation7023 ignores unrecognised namespaces7024 ignores unrecognised keys7025 ignores blank keys7026 parses recognised namespace and key pairs7027 #get7028 can emulate Hash#dig7029 #as_json7030 returns all options7031RuboCop::Cop::Lint::LastKeywordArgument7032 # order random7033 deprecation files does not exist7034 does not register an offense7035 deprecation files does exist7036 registers an offense for last keyword warning7037 does not register an offense for other warning types7038 registers an offense for the new method call7039 registers an offense and corrects by converting hash to kwarg7040 registers an offense on the last non-block argument7041 does not register an offense if the only argument is a block argument7042 registers an offense and corrects by converting splat to double splat7043 does not register an offense if already a kwarg7044 does not register an offense if the method name does not match7045 does not register an offense if the line number does not match7046 does not register an offense if the filename does not match7047 with Ruby 3.07048 does not register an offense with known warning7049RemoveUnacceptedMemberInvitesWorker7050 #perform7051 unaccepted members7052 removes unaccepted members7053 invited members still within expiration threshold7054 leaves invited members7055 accepted members7056 leaves accepted members7057BulkImports::Groups::Graphql::GetProjectsQuery7058 has a valid query7059 with invalid variables7060 raises an error7061 #data_path7062 returns data path7063 #page_info_path7064 returns pagination information path7065Banzai::IssuableExtractor7066 returns instances of issuables for nodes with references7067 caching7068 saves records to cache7069Atlassian::JiraConnect::Serializers::FeatureFlagEntity7070 when the feature flag does not belong to any Jira issue7071 #issue_keys7072 is empty7073 #to_json7074 can encode the object7075 is invalid, since it has no issue keys7076 when the feature flag does belong to a Jira issue7077 #issue_keys7078 is not empty7079 #to_json7080 is valid according to the feature flag info schema7081 it has a percentage strategy7082 is valid according to the feature flag info schema7083 has the correct summary7084 includes the correct environments7085Gitlab::Ci::Pipeline::Chain::Metrics7086 # order random7087 does not break the chain7088 with pipeline name7089 creates snowplow event7090 without pipeline name7091 does not create snowplow event7092Gitlab::Ci::Ansi2json::State7093 # order random7094 #initialize7095 restores valid prior state7096 ignores unsigned prior state7097 ignores bad input7098 #encode7099 deterministically signs the state7100Ci::GroupVariablePresenter7101 inherits from Gitlab::View::Presenter::Delegated7102 #initialize7103 takes a variable and optional params7104 exposes variable7105 forwards missing methods to variable7106 #placeholder7107 is expected to eq "GROUP_VARIABLE"7108 #form_path7109 is expected to eq "/groups/group401/-/settings/ci_cd"7110 #edit_path7111 is expected to eq "/groups/group402/-/variables"7112 #delete_path7113 is expected to eq "/groups/group403/-/variables"7114Gitlab::PollingInterval7115 .set_header7116 when polling is disabled7117 sets value to -17118 when polling is enabled7119 applies modifier to base interval7120 .set_api_header7121 when polling is disabled7122 sets value to -17123 when polling is enabled7124 applies modifier to base interval7125Gitlab::Kroki7126 .formats7127 enabled_formats: "", expected_formats: ["bytefield", "c4plantuml", "d2", "dbml", "diagramsnet", "ditaa", "erd", "graphviz", "nomnoml", "pikchr", "plantuml", "structurizr", "svgbob", "umlet", "vega", "vegalite", "wavedrom"]7128 returns the expected formats7129 enabled_formats: "blockdiag", expected_formats: ["bytefield", "c4plantuml", "d2", "dbml", "diagramsnet", "ditaa", "erd", "graphviz", "nomnoml", "pikchr", "plantuml", "structurizr", "svgbob", "umlet", "vega", "vegalite", "wavedrom", "actdiag", "blockdiag", "nwdiag", "packetdiag", "rackdiag", "seqdiag"]7130 returns the expected formats7131 enabled_formats: "bpmn", expected_formats: ["bytefield", "c4plantuml", "d2", "dbml", "diagramsnet", "ditaa", "erd", "graphviz", "nomnoml", "pikchr", "plantuml", "structurizr", "svgbob", "umlet", "vega", "vegalite", "wavedrom", "bpmn"]7132 returns the expected formats7133 enabled_formats: "excalidraw", expected_formats: ["bytefield", "c4plantuml", "d2", "dbml", "diagramsnet", "ditaa", "erd", "graphviz", "nomnoml", "pikchr", "plantuml", "structurizr", "svgbob", "umlet", "vega", "vegalite", "wavedrom", "excalidraw"]7134 returns the expected formats7135GroupLink::GroupLinkEntity7136 matches json schema7137 correctly exposes `valid_roles`7138 correctly exposes `shared_with_group.avatar_url`7139Gitlab::BitbucketServerImport::ImportPullRequestNotesWorker7140 # order random7141 behaves like Gitlab::BitbucketServerImport::ObjectImporter7142 .sidekiq_retries_exhausted7143 notifies the waiter7144 #perform7145 when project does not exist7146 behaves like notifies the waiter7147 is expected to receive notify("key", anything) 1 time7148 when project has import started7149 calls the importer7150 behaves like notifies the waiter7151 is expected to receive notify("key", anything) 1 time7152 when project import has been cancelled7153 does not call the importer7154 behaves like notifies the waiter7155 is expected to receive notify("key", anything) 1 time7156BulkImports::RelationExportWorker7157 #perform7158 is labeled as idempotent7159 performs multiple times sequentially without raising an exception7160 when export record does not exist7161 creates export record7162 when export is batched7163 when relation is batchable7164 executes export service7165 when relation is not batchable7166 executes export service7167 when export is not batched7168 executes export service7169AwardEmojis::CopyService7170 #initialize7171 validates that we cannot copy AwardEmoji to the same Awardable7172 #execute7173 copies AwardEmojis7174 returns success7175Gitlab::Memory::UploadAndCleanupReports7176 # order random7177 #call7178 invokes the uploader and cleans the files7179 when there is an exception7180 logs it and does not crash the loop7181 #initalize7182 when sleep_time_seconds is passed through the environment7183 initializes with these settings7184 when sleep_time_seconds is passed through the initializer7185 initializes with these settings7186 when `sleep_time_seconds` is not passed7187 initialized with the default7188ErrorTracking::SentryClient::Token7189 # order random7190 .masked_token?7191 with masked token7192 is expected to be truthy7193 without masked token7194 is expected to be falsey7195Banzai::RenderContext7196 #project_for_node7197 returns the default project if no associated project was found7198 returns the associated project if one was associated explicitly7199 returns the project associated with a DocumentFragment when using a node7200ShaValidator7201 with empty value7202 does not add any error if value is empty7203 with valid sha7204 does not add any error7205 with invalid sha7206 adds error to the record7207Gitlab::SidekiqMiddleware::PauseControl::StrategyHandler7208 # order random7209 #perform7210 calls perform on the strategy7211 pauses job7212 #schedule7213 behaves like scheduling with pause control class7214 calls schedule on the strategy7215Projects::ImportErrorFilter7216 filters any full paths7217 filters any relative paths ignoring single slash ones7218Clusters::KubernetesErrorEntity7219 #as_json7220 when connection_error is present7221 is expected to eq {:connection_error=>:connection_error, :metrics_connection_error=>nil, :node_connection_error=>nil}7222 when metrics_connection_error is present7223 is expected to eq {:connection_error=>nil, :metrics_connection_error=>:http_error, :node_connection_error=>nil}7224 when node_connection_error is present7225 is expected to eq {:connection_error=>nil, :metrics_connection_error=>nil, :node_connection_error=>:unknown_error}7226API::Entities::PersonalAccessToken7227 #as_json7228 returns token data7229FasterCacheKeys7230 #cache_key7231 returns a String7232tokens rake tasks7233 # order random7234 reset_all_feed task7235 changes the feed token for the user7236 reset_all_email task7237 changes the incoming email token7238Gitlab::Ci::Config::Header::Root7239 # order random7240 when header contains unknown keywords7241 behaves like an invalid header7242 fails validations7243 returns the value7244 when header contains required inputs7245 behaves like a valid header7246 passes validations7247 returns the value7248 when header contains minimal data7249 behaves like a valid header7250 passes validations7251 returns the value7252 when header contains default and required values for inputs7253 behaves like a valid header7254 passes validations7255 returns the value7256 #inputs_value7257 returns the inputs7258 when header input entry has an unknown key7259 behaves like an invalid header7260 fails validations7261 returns the value7262Resolvers::BranchCommitResolver7263 #resolve7264 resolves commit7265 sets project container7266 is N+1 safe7267 when branch does not exist7268 returns nil7269RecoverableByAnyEmail7270 # order random7271 .send_reset_password_instructions7272 with user primary email7273 behaves like sends the password reset email7274 finds the user7275 sends the email7276 with user verified email7277 behaves like sends the password reset email7278 finds the user7279 sends the email7280 with user unverified email7281 behaves like does not send the password reset email7282 does not find the user7283 does not send any email7284 #send_reset_password_instructions7285 sends the email7286 calls send_reset_password_instructions_notification with correct arguments7287 returns the generated token7288Gitlab::Database::Migrations::TestBackgroundRunner7289 without jobs to run7290 returns immediately7291 with jobs to run7292 finding pending background jobs7293 finds all the migrations7294 running migrations7295 runs the migration class correctly7296 runs the migration for a uniform amount of time7297 with multiple migrations to run7298 splits the time between migrations when all migrations use all their time7299 does not give leftover time to extra migrations7300Ci::TriggerSerializer7301 #represent7302 matches schema7303Gitlab::CodeNavigationPath7304 when there is an artifact with code navigation data7305 when a pipeline exist for a sha7306 returns path to a file in the artifact7307 when passed commit sha is nil7308 returns path to a file in the artifact7309 when a pipeline exist for the latest commits7310 returns path to a file in the artifact7311Mutations::AlertManagement::HttpIntegration::ResetToken7312 is expected to require graphql authorizations :admin_operations7313 #resolve7314 user has sufficient access to project7315 when HttpIntegrations::UpdateService responds with success7316 returns the integration with no errors7317 when HttpIntegrations::UpdateService responds with an error7318 returns errors7319 when resource is not accessible to the user7320 raises an error if the resource is not accessible to the user7321Ci::AbortPipelinesService7322 #execute7323 with project pipelines7324 fails all running pipelines and related jobs7325 avoids N+1 queries7326 with live build logs7327 makes failed builds with stale trace visible7328Gitlab::GithubImport::Importer::IssuesImporter7329 #parallel?7330 returns true when running in parallel mode7331 returns false when running in sequential mode7332 #execute7333 when running in parallel mode7334 imports issues in parallel7335 when running in sequential mode7336 imports issues in sequence7337 #sequential_import7338 imports each issue in sequence7339 #parallel_import7340 imports each issue in parallel7341 #id_for_already_imported_cache7342 returns the issue number of the given issue7343 #increment_object_counter?7344 when issue is a pull request7345 returns false7346 when issue is a regular issue7347 returns true7348Mail STARTTLS patch7349 # order random7350 when enable_starttls and tls are enabled7351 raises an argument exception7352 ssl: false, tls: false, enable_starttls: false, enable_starttls_auto: nil, smtp_tls: false, smtp_starttls_mode: false7353 sets TLS and STARTTLS settings properly7354 ssl: false, tls: nil, enable_starttls: :always, enable_starttls_auto: nil, smtp_tls: false, smtp_starttls_mode: :always7355 sets TLS and STARTTLS settings properly7356 ssl: nil, tls: false, enable_starttls: nil, enable_starttls_auto: nil, smtp_tls: false, smtp_starttls_mode: :auto7357 sets TLS and STARTTLS settings properly7358 ssl: false, tls: nil, enable_starttls: false, enable_starttls_auto: false, smtp_tls: false, smtp_starttls_mode: false7359 sets TLS and STARTTLS settings properly7360 ssl: false, tls: false, enable_starttls: true, enable_starttls_auto: false, smtp_tls: false, smtp_starttls_mode: :always7361 sets TLS and STARTTLS settings properly7362 ssl: nil, tls: false, enable_starttls: nil, enable_starttls_auto: true, smtp_tls: false, smtp_starttls_mode: :auto7363 sets TLS and STARTTLS settings properly7364 ssl: false, tls: nil, enable_starttls: :auto, enable_starttls_auto: nil, smtp_tls: false, smtp_starttls_mode: :auto7365 sets TLS and STARTTLS settings properly7366 ssl: true, tls: nil, enable_starttls: nil, enable_starttls_auto: nil, smtp_tls: true, smtp_starttls_mode: false7367 sets TLS and STARTTLS settings properly7368Resolvers::Projects::ForkTargetsResolver7369 #resolve7370 returns forkable namespaces7371 when a user cannot fork the project7372 does not return results7373Gitlab::GithubImport::Stage::ImportNotesWorker7374 #import7375 imports all the notes7376 #importers7377 when settings single_endpoint_notes_import is enabled7378 includes single endpoint mr and issue notes importers7379 when settings single_endpoint_notes_import is disabled7380 includes default notes importer7381Packages::Rubygems::MetadataExtractionService7382 #execute7383 creates the metadata7384 stores the metadata7385 with an existing metadatum7386 updates it7387TriggerableHooks7388 scopes7389 defines a scope for each of the requested triggers7390 .hooks_for7391 the model has the required trigger scope7392 returns the record7393 the model does not have the required trigger scope7394 returns an empty relation7395 the stock scope ".all" is accepted7396 returns the record7397 .select_active7398 returns hooks that match the active filter7399 returns empty list if no hooks match the active filter7400Gitlab::Ci::Config::Entry::Inherit::Variables7401 validations7402 config: true, valid: true7403 is expected to eq true7404 config: false, valid: true7405 is expected to eq true7406 config: ["A"], valid: true7407 is expected to eq true7408 config: ["A", "B"], valid: true7409 is expected to eq true7410 config: [:image], valid: true7411 is expected to eq true7412 config: [true], valid: false7413 is expected to eq false7414 config: "string", valid: false7415 is expected to eq false7416Gitlab::GithubImport::MilestoneFinder7417 #id_for7418 with a cache in place7419 returns the milestone ID of the given issuable7420 returns nil for an empty cache key7421 returns nil for an issuable with a non-existing milestone7422 without a cache in place7423 returns nil7424 #build_cache7425 builds the cache of all project milestones7426 #cache_key_for7427 returns the cache key for an IID7428Gitlab::Kubernetes::KubectlCmd7429 .delete7430 constructs string properly7431 .apply_file7432 without optional args7433 requires filename to be present7434 constructs string properly7435 with optional args7436 constructs command properly with many args7437 constructs command properly with single arg7438 .api_resources7439 constructs string properly7440 .delete_crds_from_group7441 constructs string properly7442Gitlab::SnowplowEventDefinitionGenerator7443 Creating event definition file7444 creates CE event definition file using the template7445 generated filename7446 includes timestamp7447 removes special characters7448 cuts name if longer than 100 characters7449 when event definition with same file name already exists7450 raises error7451 EE7452 creates EE event definition file using the template7453Gitlab::WebIde::Config7454 when config is valid7455 #to_hash7456 returns hash created from string7457 #valid?7458 is valid7459 has no errors7460 when config is invalid7461 when yml is incorrect7462 .new7463 raises error7464 when config logic is incorrect7465 #valid?7466 is not valid7467 has errors7468 #errors7469 returns an array of strings7470Gitlab::Ci::Reports::CoverageReport7471 is expected to eq {}7472 #empty?7473 when no file has been added7474 is expected to equal true7475 when file has been added7476 is expected to equal false7477 #pick7478 returns only picked files while ignoring nonexistent ones7479 #add_file7480 when providing two individual files7481 initializes a new test suite and returns it7482 when providing the same files twice7483 with different line coverage7484 initializes a new test suite and returns it7485 with identical line coverage7486 initializes a new test suite and returns it7487Gitlab::Ci::Pipeline::Expression::Lexeme::Variable7488 .build7489 creates a new instance of the token7490 .type7491 is a value lexeme7492 #evaluate7493 returns variable value if it is defined7494 allows to use a string as a variable key too7495 returns nil if it is not defined7496 returns an empty string if it is empty7497 does not call with_indifferent_access unnecessarily7498Gitlab::SidekiqMiddleware::WorkerContext::Client7499 #call7500 applies a context for jobs scheduled in batch7501 root_caller_id7502 uses caller_id of the current context7503 uses root_caller_id instead of caller_id of the current context7504 when the feature category is set in the context_proc7505 takes the feature category from the worker, not the caller7506 takes the feature category from the caller if the worker is not owned7507 does not set any explicit feature category for mailers7508 when the feature category is already set in the surrounding block7509 takes the feature category from the worker, not the caller7510 takes the feature category from the caller if the worker is not owned7511Gitlab::GithubImport::PageCounter7512 #initialize7513 sets the initial page number to 1 when no value is cached7514 sets the initial page number to the cached value when one is present7515 when gists import7516 uses gists specific key7517 #set7518 overwrites the page number when the given number is greater than the current number7519 does not overwrite the page number when the given number is lower than the current number7520 #expire!7521 expires the current page counter7522Gitlab::ProjectTransfer7523 #move_project7524 moves project upload to another namespace7525 #move_namespace7526 when moving namespace from root into another namespace7527 moves namespace projects' upload7528 when moving namespace from one parent to another7529 moves namespace projects' upload7530 when moving namespace from having a parent to root7531 moves namespace projects' upload7532 #rename_project7533 renames project7534 #rename_namespace7535 renames namespace7536Gitlab::SlashCommands::IncidentManagement::IncidentNew7537 # order random7538 #collection7539 when collection method id called7540 calls IssuesFinder7541 #allowed?7542 returns true7543 when feature flag is disabled7544 returns false in allowed?7545 #execute7546 when invoked7547 sends ephemeral response7548Gitlab::LegacyGithubImport::LabelFormatter7549 #attributes7550 returns formatted attributes7551 #create!7552 when label does not exist7553 creates a new label7554 when label exists7555 does not create a new label7556BulkImports::Projects::Pipelines::AutoDevopsPipeline7557 #run7558 imports auto devops options into destination project7559Users::ValidateManualOtpService7560 Devise7561 calls Devise strategy7562 FortiAuthenticator7563 calls ManualOtp strategy7564 handles unexpected error7565 FortiTokenCloud7566 calls FortiTokenCloud strategy7567 DuoAuth7568 calls DuoAuth strategy7569 handles unexpected error7570Ci::PipelineBridgeStatusWorker7571 #perform7572 when pipeline exists7573 calls the service7574 when pipeline does not exist7575 does not call the service7576Gitlab::BitbucketServerImport::Importers::RepositoryImporter7577 # order random7578 #execute7579 when repository is empty7580 imports the repository7581 when repository is not empty7582 does not import the repository7583 when a Git CommandError is raised and the repository exists7584 expires repository caches7585Gitlab::Database::Partitioning::ReplaceTable#perform7586 replaces the current table, archiving the old7587 transfers the primary key sequence to the replacement table7588 renames the primary key constraints to match the new table names7589 when the table has partitions7590 renames the partitions to match the new table name7591 renames the primary key constraints to match the new partition names7592Analytics::CycleAnalytics::Stages::ListService7593 returns only the default stages7594 provides the default stages as non-persisted objects7595diagnostic reports7596 when GITLAB_DIAGNOSTIC_REPORTS_ENABLED is set to true7597 when run in Puma context7598 modifies worker startup hooks, starts Gitlab::Memory::ReportsDaemon7599 writes scheduled heap dumps in on_worker_stop7600 when run in non-Puma context, such as rails console, tests, Sidekiq7601 is expected not to receive new(*(any args)) 0 times7602 when GITLAB_DIAGNOSTIC_REPORTS_ENABLED is not set7603 is expected not to receive new(*(any args)) 0 times7604 when GITLAB_DIAGNOSTIC_REPORTS_ENABLED is set to false7605 is expected not to receive new(*(any args)) 0 times7606Resolvers::GroupEnvironmentScopesResolver7607 # order random7608 with a group7609 #resolve7610 finds all environment scopes7611 without a group7612 #resolve7613 rails to find any environment scopes7614SafeUrl7615 #safe_url7616 is expected to eq "http://example.com"7617 when URL contains credentials7618 masks username and password7619 when username is allowed7620 masks the password, but not the username7621 when URL is empty7622 is expected to be nil7623 when URI raises an error7624 is expected to be nil7625Sidebars::Projects::Menus::SnippetsMenu7626 behaves like serializable as super_sidebar_menu_args7627 returns hash with provided attributes7628 returns hash with an item_id7629 #render?7630 when user cannot access snippets7631 returns false7632 when user can access snippets7633 returns true7634Banzai::Pipeline::BroadcastMessagePipeline7635 allows `a` elements7636 is expected to eq "<p><a>Link</a></p>"7637 allows `br` elements7638 is expected to eq "<p>Hello<br>World</p>"7639Gitlab::Database::MigrationHelpers::AnnounceDatabase7640 #announce7641 prefixes message with database name7642 #say7643 prefixes message with database name7644 prefixes subitem message with database name7645 #write7646 does not prefix empty write7647Packages::Rubygems::CreateGemspecService7648 #execute7649 creates a new package file7650 with FIPS mode7651 does not generate file_md57652Clusters::Project7653 is expected to belong to cluster required: false7654 is expected to belong to project required: false7655 is expected to have many kubernetes_namespaces7656Gitlab::Pagination::Keyset::InOperatorOptimization::Strategies::RecordLoaderStrategy7657 #initializer_columns7658 returns a NULL table row as the result column7659 #columns7660 uses the finder query to load the row in the result column7661 #final_projections7662 when model does not have ignored columns7663 does not specify the selected column names7664 when model has ignored columns7665 specifies the selected column names7666Gitlab::Lazy7667 when not calling any methods7668 does not call the supplied block7669 when calling a method on the object7670 lazy loads the value returned by the block7671 #respond_to?7672 returns true for a method defined on the wrapped object7673 returns false for a method not defined on the wrapped object7674Sidebars::Organizations::SuperSidebarPanel7675 # order random7676 implements #super_sidebar_context_header7677 behaves like a panel with uniquely identifiable menu items7678 all menu_items have unique item_id7679 all menu_items have an item_id7680 #renderable_menus7681 is exposed as a renderable menu7682Gitlab::Database::Migrations::Observers::QueryStatistics7683 #before7684 with pgss available7685 resets pg_stat_statements7686 without pgss available7687 executes nothing7688 #record7689 with pgss available7690 fetches data from pg_stat_statements and stores on the observation7691 without pgss available7692 executes nothing7693BulkImports::Projects::Pipelines::ContainerExpirationPolicyPipeline7694 #run7695 imports project feature7696Gitlab::GithubImport::Attachments::ImportMergeRequestWorker7697 # order random7698 #import7699 imports an merge request attachments7700Projects::Prometheus::Metrics::DestroyService7701 destroys metric7702Types::CommitSignatures::SshSignatureType7703 # order random7704 is expected to require graphql authorizations :download_code7705 is expected to eq "SshSignature"7706 contains attributes related to SSH signatures7707 is expected to include Types::CommitSignatureInterface7708admin/application_settings/network.html.haml7709 # order random7710 for Projects API rate limit7711 renders the `projects_api_rate_limit_unauthenticated` field7712Types::ErrorTracking::SentryDetailedErrorType7713 is expected to eq "SentryDetailedError"7714 is expected to require graphql authorizations :read_sentry_issue7715 exposes the expected fields7716Types::ErrorTracking::SentryErrorStackTraceType7717 is expected to eq "SentryErrorStackTrace"7718 is expected to require graphql authorizations :read_sentry_issue7719 exposes the expected fields7720Gitlab::Email::Message::InProductMarketing::Create7721 public methods7722 series: 07723 returns value for series7724 series: 17725 returns value for series7726 series: 27727 returns value for series7728Types::NamespaceType7729 is expected to eq "Namespace"7730 has the expected fields7731 is expected to require graphql authorizations :read_namespace7732Gitlab::Ci::Reports::Security::Flag7733 #initialize7734 when all params are given7735 initializes an instance7736 #to_h7737 returns expected hash7738 #false_positive?7739 is expected to be truthy7740Mutations::Members::BulkUpdateBase7741 # order random7742 raises a NotImplementedError error if the source_type method is called on the base class7743Types::Users::AutocompletedUserType7744 # order random7745 is expected to require graphql authorizations :read_user7746 #merge_request_interaction7747 returns the correct type7748 has the correct arguments7749Gitlab::Graphql::Tracers::ApplicationContextTracer7750 sets application context during execute_query and cleans up afterwards7751 sets caller_id when operation is not known7752Types::IssueStatusCountsType7753 is expected to eq "IssueStatusCountsType"7754 exposes the expected fields7755Types::Ci::Config::IncludeTypeEnum7756 is expected to eq "CiConfigIncludeType"7757 exposes all the existing include types7758Gitlab::UsageDataCounters::ServiceUsageDataCounter7759 behaves like a redis usage counter7760 .count(download_payload_click)7761 increments the Service Usage Data download_payload_click counter by 17762 .read(download_payload_click)7763 returns the total number of download_payload_click events7764Organizations::OrganizationsController7765 # order random7766 routes to #groups_and_projects7767 routes to #show7768Gitlab::GithubImport::Logger7769 behaves like a json logger7770 formats strings7771 formats hashes7772Types::Projects::RepositoryLanguageType7773 # order random7774 is expected to eq "RepositoryLanguage"7775 is expected to have graphql fields :name, :share, and :color7776Gitlab::Ci::Reports::Security::ScannedResource7777 when the URI is not a URI7778 raises an error7779 when the URL is valid7780 sets the URL attributes7781Types::Ci::RecentFailuresType7782 is expected to eq "RecentFailures"7783 contains attributes related to a recent failure history for a test case7784Types::Tree::TreeEntryType7785 is expected to eq "TreeEntry"7786 is expected to have graphql fields :id, :sha, :name, :type, :path, :flat_path, :web_url, and :web_path7787DeviceRegistrationHelper7788 # order random7789 #device_registration_data7790 returns a hash with device registration properties without initial error7791 returns a hash with device registration properties with initial error7792Gitlab::Utils::ErrorMessage7793 # order random7794 #prefixed_error_message7795 returns a message with the given prefix7796 #to_user_facing7797 returns a user-facing error message with the UF prefix7798Types::AlertManagement::HttpIntegrationType7799 is expected to eq "AlertManagementHttpIntegration"7800 is expected to require graphql authorizations :admin_operations7801Gitlab::Email::Hook::DisableEmailInterceptor7802 does not send emails7803Types::CiConfiguration::Sast::InputType7804 is expected to eq "SastCiConfigurationInput"7805 is expected to contain exactly "global", "pipeline", and "analyzers"7806Routing::PackagesHelper7807 # order random7808 #package_path7809 creates package's path7810NamespaceSerializer7811 represents NamespaceBasicEntity entities7812Gitlab::Utils::DelegatorOverride::Error7813 # order random7814 #to_s7815 is expected to eq "Delegator#foo is overriding Target#foo. delegator_location: /path/to/delegator target_location: /path/to/target"7816circuitbox7817 # order random7818 configures Circuitbox7819Gitlab::Kubernetes::RoleBinding#generate7820 builds a Kubeclient Resource7821Gitlab::SidekiqMiddleware::InstrumentationLogger7822 #call7823 merges all instrumentation data in the job7824Types::Packages::PackageDependencyType7825 includes package file fields7826Gitlab::Memory::DiagnosticReportsLogger7827 # order random7828 #format_message7829 formats incoming hash properly7830Forever7831 .date7832 returns Postgresql future date7833Resolvers::Ci::RunnerStatusResolver7834 #resolve7835 calls runner.status and returns it7836Types::Packages::Composer::MetadatumType7837 includes composer metadatum fields7838Knapsack report was generated. Preview:7839{7840 "spec/services/merge_requests/push_options_handler_service_spec.rb": 198.69693623100005,7841 "spec/models/repository_spec.rb": 136.84498971099993,7842 "spec/policies/merge_request_policy_spec.rb": 123.40349836500002,7843 "spec/services/ci/create_pipeline_service_spec.rb": 103.55892653299998,7844 "spec/workers/packages/debian/generate_distribution_worker_spec.rb": 85.591639063,7845 "spec/models/concerns/deployment_platform_spec.rb": 67.16901451500007,7846 "spec/models/concerns/resolvable_note_spec.rb": 56.13542388299993,7847 "spec/lib/gitlab/database/migrations/background_migration_helpers_spec.rb": 22.844457137000063,7848 "spec/lib/gitlab/url_blocker_spec.rb": 20.634649828999954,7849 "spec/models/namespace_setting_spec.rb": 16.13642513900004,7850 "spec/lib/gitlab/email/message/repository_push_spec.rb": 29.211802906000003,7851 "spec/lib/gitlab/import_export/members_mapper_spec.rb": 28.650355018000027,7852 "spec/models/ci/processable_spec.rb": 16.742532127000004,7853 "spec/models/draft_note_spec.rb": 24.59797046199992,7854 "spec/lib/gitlab/import_export/project/object_builder_spec.rb": 31.15593375100002,7855 "spec/uploaders/personal_file_uploader_spec.rb": 11.99308408600018,7856 "spec/services/projects/move_forks_service_spec.rb": 23.394422920000125,7857 "spec/policies/project_member_policy_spec.rb": 19.265369123000028,7858 "spec/services/projects/cleanup_service_spec.rb": 20.88707129699992,7859 "spec/models/concerns/awardable_spec.rb": 26.170081988999982,7860 "spec/models/ml/candidate_spec.rb": 11.732021222000185,7861 "spec/lib/container_registry/client_spec.rb": 6.3772605700000895,7862 "spec/services/milestones/transfer_service_spec.rb": 26.184843196999964,7863 "spec/uploaders/namespace_file_uploader_spec.rb": 6.391282429000057,7864 "spec/models/ci/daily_build_group_report_result_spec.rb": 15.358155731999886,7865 "spec/serializers/pipeline_serializer_spec.rb": 17.735090456999842,7866 "spec/models/packages/nuget/metadatum_spec.rb": 8.67015582199997,7867 "spec/models/releases/link_spec.rb": 8.945766267999943,7868 "spec/services/releases/update_service_spec.rb": 16.238173955999855,7869 "spec/services/wikis/create_attachment_service_spec.rb": 15.227020431000028,7870 "spec/lib/gitlab/github_import/client_spec.rb": 5.538002671999948,7871 "spec/lib/gitlab/suggestions/suggestion_set_spec.rb": 11.588590525999962,7872 "spec/lib/gitlab/auth/ldap/person_spec.rb": 4.923855864000188,7873 "spec/workers/merge_requests/mergeability_check_batch_worker_spec.rb": 17.361271677000104,7874 "spec/presenters/clusters/cluster_presenter_spec.rb": 9.206434743000045,7875 "spec/graphql/mutations/merge_requests/set_draft_spec.rb": 8.49633768800004,7876 "spec/lib/gitlab/redis/feature_flag_spec.rb": 3.9400330249998206,7877 "spec/models/project_import_state_spec.rb": 6.5928752410000016,7878 "spec/lib/bulk_imports/projects/pipelines/repository_bundle_pipeline_spec.rb": 9.95034359400006,7879 "spec/lib/sbom/package_url/argument_validator_spec.rb": 1.7259584199998699,7880 "spec/lib/gitlab/email/handler/create_issue_handler_spec.rb": 10.237982184999964,7881 "spec/services/merge_requests/resolved_discussion_notification_service_spec.rb": 8.785650369999985,7882 "spec/lib/api/helpers/packages_helpers_spec.rb": 2.35066619600002,7883 "spec/finders/access_requests_finder_spec.rb": 7.88655385900006,7884 "spec/lib/gitlab/database/load_balancing/sidekiq_server_middleware_spec.rb": 1.6993070739999894,7885 "spec/lib/gitlab/ci/trace/checksum_spec.rb": 7.974169476999805,7886 "spec/services/merge_requests/update_assignees_service_spec.rb": 7.239011585000071,7887 "spec/services/releases/destroy_service_spec.rb": 9.093078948000084,7888 "spec/lib/gitlab/ci/pipeline/duration_spec.rb": 5.285435345999986,7889 "spec/services/todos/destroy/confidential_issue_service_spec.rb": 6.904182310999886,7890 "spec/lib/gitlab/graphql/pagination/active_record_array_connection_spec.rb": 2.616239222000104,7891 "spec/views/shared/runners/_runner_details.html.haml_spec.rb": 2.83516484200004,7892 "spec/graphql/mutations/design_management/delete_spec.rb": 9.01298253899995,7893 "spec/lib/gitlab/analytics/cycle_analytics/request_params_spec.rb": 4.429264200000034,7894 "spec/lib/gitlab/ci/pipeline/chain/populate_spec.rb": 3.94929937400002,7895 "spec/models/packages/tag_spec.rb": 5.317371180999999,7896 "spec/services/labels/find_or_create_service_spec.rb": 7.405050733000053,7897 "spec/graphql/mutations/issues/set_escalation_status_spec.rb": 4.525286096999935,7898 "spec/services/git/base_hooks_service_spec.rb": 3.6008645300000808,7899 "spec/lib/sidebars/groups/menus/settings_menu_spec.rb": 1.904496576999918,7900 "spec/lib/gitlab/omniauth_initializer_spec.rb": 1.1533170159998463,7901 "spec/models/customer_relations/organization_spec.rb": 2.296988543999987,7902 "spec/lib/gitlab/gitaly_client/object_pool_service_spec.rb": 7.183253622999928,7903 "spec/workers/delete_diff_files_worker_spec.rb": 6.7424708309999914,7904 "spec/services/members/request_access_service_spec.rb": 4.007958120000012,7905 "spec/models/concerns/sanitizable_spec.rb": 1.3392536269998345,7906 "spec/lib/gitlab/quick_actions/command_definition_spec.rb": 2.87536424599989,7907 "spec/models/sentry_issue_spec.rb": 5.497660454999959,7908 "spec/services/ci/create_pipeline_service/include_spec.rb": 4.839420650999955,7909 "spec/lib/banzai/object_renderer_spec.rb": 6.968031549999978,7910 "spec/lib/gitlab/github_import/importer/note_importer_spec.rb": 5.312072933999843,7911 "spec/lib/gitlab/database/partitioning_spec.rb": 1.8509305359998507,7912 "spec/services/ci/expire_pipeline_cache_service_spec.rb": 5.48762095699999,7913 "spec/lib/gitlab/database/migrations/timeout_helpers_spec.rb": 6.150509120000152,7914 "spec/tasks/gitlab/smtp_rake_spec.rb": 3.245144509000056,7915 "spec/initializers/00_deprecations_spec.rb": 1.005397450999908,7916 "spec/models/label_priority_spec.rb": 2.192920522000122,7917 "spec/models/snippets/repository_storage_move_spec.rb": 1.0831356529999994,7918 "spec/lib/gitlab/lfs/client_spec.rb": 1.3966844219999075,7919 "spec/services/users/ban_service_spec.rb": 1.7352927880001516,7920 "spec/graphql/mutations/issues/set_locked_spec.rb": 3.0244222399999217,7921 "spec/helpers/profiles_helper_spec.rb": 1.541764338000121,7922 "spec/lib/gitlab/sidekiq_middleware/skip_jobs_spec.rb": 0.8188834380000571,7923 "spec/services/jira_import/cloud_users_mapper_service_spec.rb": 3.4947160940000686,7924 "spec/lib/gitlab/spamcheck/result_spec.rb": 0.6888356719998683,7925 "spec/lib/gitlab/view/presenter/base_spec.rb": 0.6983663809999143,7926 "spec/graphql/resolvers/ci/config_resolver_spec.rb": 1.854076237000072,7927 "spec/lib/release_highlights/validator/entry_spec.rb": 1.0787020129998837,7928 "spec/services/authorized_project_update/project_recalculate_per_user_service_spec.rb": 2.2681931250001526,7929 "spec/lib/gitlab/analytics/cycle_analytics/aggregated/records_fetcher_spec.rb": 1.5795633039999757,7930 "spec/workers/admin_email_worker_spec.rb": 0.6836163520001719,7931 "spec/lib/gitlab/github_import/representation/note_text_spec.rb": 1.5267149690000679,7932 "spec/lib/gitlab/url_blockers/ip_allowlist_entry_spec.rb": 0.6025346199999149,7933 "spec/services/database/consistency_fix_service_spec.rb": 2.5556701370001065,7934 "spec/models/integrations/custom_issue_tracker_spec.rb": 1.278050113000063,7935 "spec/lib/gitlab/issuable/clone/attributes_rewriter_spec.rb": 2.167323736000071,7936 "spec/lib/gitlab/ci/config/yaml/tags/reference_spec.rb": 0.6731358629999704,7937 "spec/lib/gitlab/auth/o_auth/provider_spec.rb": 0.6948423320000074,7938 "spec/lib/gitlab/reactive_cache_set_cache_spec.rb": 3.1146865209998396,7939 "spec/services/integrations/propagate_service_spec.rb": 3.060928567000019,7940 "spec/lib/gitlab/otp_key_rotator_spec.rb": 2.605252432000043,7941 "spec/workers/ci/runners/stale_machines_cleanup_cron_worker_spec.rb": 0.5941129509999428,7942 "spec/lib/gitlab/ci/config/entry/product/matrix_spec.rb": 0.7415711060000376,7943 "spec/workers/ci/resource_groups/assign_resource_from_resource_group_worker_spec.rb": 1.2925073220001195,7944 "spec/services/issuable/process_assignees_spec.rb": 0.40865371999984745,7945 "spec/serializers/merge_request_widget_commit_entity_spec.rb": 2.870606364999958,7946 "spec/models/concerns/ci/track_environment_usage_spec.rb": 2.189067373000171,7947 "spec/workers/work_items/import_work_items_csv_worker_spec.rb": 1.943284267000081,7948 "spec/workers/packages/cleanup_package_file_worker_spec.rb": 1.3894146420000197,7949 "spec/services/container_expiration_policies/cleanup_service_spec.rb": 1.4422641870000916,7950 "spec/lib/gitlab/metrics/loose_foreign_keys_slis_spec.rb": 0.32069694799997706,7951 "spec/models/postgresql/replication_slot_spec.rb": 0.6947642509999241,7952 "spec/graphql/types/diff_type_spec.rb": 1.6011836220000077,7953 "spec/helpers/graph_helper_spec.rb": 2.2263018289997945,7954 "spec/models/preloaders/labels_preloader_spec.rb": 3.2034267930000624,7955 "spec/workers/delete_user_worker_spec.rb": 1.8148260799998752,7956 "spec/routing/environments_spec.rb": 1.4432288170000902,7957 "spec/lib/gitlab/instrumentation_helper_spec.rb": 1.2387605679998615,7958 "spec/graphql/mutations/users/set_namespace_commit_email_spec.rb": 2.8964967639999486,7959 "spec/lib/gitlab/other_markup_spec.rb": 1.1091505900001266,7960 "spec/services/clusters/kubernetes/fetch_kubernetes_token_service_spec.rb": 1.1578688350000448,7961 "spec/models/preloaders/group_root_ancestor_preloader_spec.rb": 0.7752645529999427,7962 "spec/lib/gitlab/metrics/subscribers/action_cable_spec.rb": 0.5186002479999843,7963 "spec/services/award_emojis/base_service_spec.rb": 1.5922749730000305,7964 "spec/workers/projects/finalize_project_statistics_refresh_worker_spec.rb": 0.5222906579999744,7965 "spec/lib/gitlab/git/lfs_changes_spec.rb": 1.0365998570000556,7966 "spec/rubocop/cop/rspec/avoid_test_prof_spec.rb": 0.5114068000000316,7967 "spec/rubocop/cop/rspec/factory_bot/local_static_assignment_spec.rb": 0.426127526999835,7968 "spec/lib/gitlab/data_builder/wiki_page_spec.rb": 1.6425242380000782,7969 "spec/helpers/sessions_helper_spec.rb": 0.9232175380000172,7970 "spec/models/fork_network_member_spec.rb": 1.6386518770000293,7971 "spec/tasks/gitlab/generate_sample_prometheus_data_rake_spec.rb": 2.207439200999943,7972 "spec/serializers/import/manifest_provider_repo_entity_spec.rb": 0.7933286909999424,7973 "spec/lib/gitlab/push_options_spec.rb": 0.5130737490001138,7974 "spec/rubocop/cop/lint/last_keyword_argument_spec.rb": 0.7349951270000474,7975 "spec/workers/remove_unaccepted_member_invites_worker_spec.rb": 2.1184007500000916,7976 "spec/lib/bulk_imports/groups/graphql/get_projects_query_spec.rb": 0.3987951700000849,7977 "spec/lib/banzai/issuable_extractor_spec.rb": 2.14364797799999,7978 "spec/lib/atlassian/jira_connect/serializers/feature_flag_entity_spec.rb": 0.9507209259998035,7979 "spec/lib/gitlab/ci/pipeline/chain/metrics_spec.rb": 0.6465903559999333,7980 "spec/lib/gitlab/ci/ansi2json/state_spec.rb": 0.31701894800016817,7981 "spec/presenters/ci/group_variable_presenter_spec.rb": 1.1842425030001777,7982 "spec/lib/gitlab/polling_interval_spec.rb": 0.3268729879998773,7983 "spec/lib/gitlab/kroki_spec.rb": 0.3475454350000291,7984 "spec/serializers/group_link/group_link_entity_spec.rb": 0.4071635800000877,7985 "spec/workers/gitlab/bitbucket_server_import/import_pull_request_notes_worker_spec.rb": 1.3501197059999868,7986 "spec/workers/bulk_imports/relation_export_worker_spec.rb": 1.7492544960000487,7987 "spec/services/award_emojis/copy_service_spec.rb": 1.9766787040000509,7988 "spec/lib/gitlab/memory/upload_and_cleanup_reports_spec.rb": 0.37979850200008514,7989 "spec/lib/error_tracking/sentry_client/token_spec.rb": 0.19351158099993881,7990 "spec/lib/banzai/render_context_spec.rb": 0.24147292599991488,7991 "spec/validators/sha_validator_spec.rb": 0.28764166099995236,7992 "spec/lib/gitlab/sidekiq_middleware/pause_control/strategy_handler_spec.rb": 0.24149641600001814,7993 "spec/services/projects/import_error_filter_spec.rb": 0.19614772099998845,7994 "spec/serializers/clusters/kubernetes_error_entity_spec.rb": 1.676057683999943,7995 "spec/lib/api/entities/personal_access_token_spec.rb": 0.2706023230000483,7996 "spec/models/concerns/faster_cache_keys_spec.rb": 0.18253869199998007,7997 "spec/tasks/tokens_rake_spec.rb": 1.7802757140000267,7998 "spec/lib/gitlab/ci/config/header/root_spec.rb": 0.5818929630002003,7999 "spec/graphql/resolvers/branch_commit_resolver_spec.rb": 1.1234304989998236,8000 "spec/models/concerns/recoverable_by_any_email_spec.rb": 0.8545231159998821,8001 "spec/lib/gitlab/database/migrations/test_background_runner_spec.rb": 1.1071901200000411,8002 "spec/serializers/ci/trigger_serializer_spec.rb": 0.17195532300002014,8003 "spec/lib/gitlab/code_navigation_path_spec.rb": 1.271001694000006,8004 "spec/graphql/mutations/alert_management/http_integration/reset_token_spec.rb": 1.0040032009999322,8005 "spec/services/ci/abort_pipelines_service_spec.rb": 1.1618376639999042,8006 "spec/lib/gitlab/github_import/importer/issues_importer_spec.rb": 0.47321383300004527,8007 "spec/initializers/mail_starttls_patch_spec.rb": 0.5167021789998216,8008 "spec/graphql/resolvers/projects/fork_targets_resolver_spec.rb": 1.347360326999933,8009 "spec/workers/gitlab/github_import/stage/import_notes_worker_spec.rb": 1.4448141580000993,8010 "spec/services/packages/rubygems/metadata_extraction_service_spec.rb": 1.126903928000047,8011 "spec/models/concerns/triggerable_hooks_spec.rb": 0.7977681710003708,8012 "spec/lib/gitlab/ci/config/entry/inherit/variables_spec.rb": 0.37203980399999637,8013 "spec/lib/gitlab/github_import/milestone_finder_spec.rb": 0.7729181330000756,8014 "spec/lib/gitlab/kubernetes/kubectl_cmd_spec.rb": 0.517137219000233,8015 "spec/lib/generators/gitlab/snowplow_event_definition_generator_spec.rb": 0.40238345999978264,8016 "spec/lib/gitlab/web_ide/config_spec.rb": 0.38198795199969027,8017 "spec/lib/gitlab/ci/reports/coverage_report_spec.rb": 0.3912503309998101,8018 "spec/lib/gitlab/ci/pipeline/expression/lexeme/variable_spec.rb": 0.3907641309997416,8019 "spec/lib/gitlab/sidekiq_middleware/worker_context/client_spec.rb": 0.45087265600022874,8020 "spec/lib/gitlab/github_import/page_counter_spec.rb": 0.38007276200005435,8021 "spec/lib/gitlab/project_transfer_spec.rb": 0.3902466910003568,8022 "spec/lib/gitlab/slash_commands/incident_management/incident_new_spec.rb": 0.6548684849999518,8023 "spec/lib/gitlab/legacy_github_import/label_formatter_spec.rb": 0.5550356649996502,8024 "spec/lib/bulk_imports/projects/pipelines/auto_devops_pipeline_spec.rb": 0.9722642130000168,8025 "spec/services/users/validate_manual_otp_service_spec.rb": 0.42231053800014706,8026 "spec/workers/ci/pipeline_bridge_status_worker_spec.rb": 0.640544267000223,8027 "spec/lib/gitlab/bitbucket_server_import/importers/repository_importer_spec.rb": 0.7594157039998208,8028 "spec/lib/gitlab/database/partitioning/replace_table_spec.rb": 0.48157379299982495,8029 "spec/services/analytics/cycle_analytics/stages/list_service_spec.rb": 0.681937822999771,8030 "spec/initializers/diagnostic_reports_spec.rb": 0.3013501299997188,8031 "spec/graphql/resolvers/group_environment_scopes_resolver_spec.rb": 0.708389299999908,8032 "spec/models/concerns/safe_url_spec.rb": 0.2874965709997923,8033 "spec/lib/sidebars/projects/menus/snippets_menu_spec.rb": 0.32028260800007047,8034 "spec/lib/banzai/pipeline/broadcast_message_pipeline_spec.rb": 0.5676965329998893,8035 "spec/lib/gitlab/database/migration_helpers/announce_database_spec.rb": 0.2585446449998017,8036 "spec/services/packages/rubygems/create_gemspec_service_spec.rb": 0.5585675739998806,8037 "spec/models/clusters/project_spec.rb": 0.303203559999929,8038 "spec/lib/gitlab/pagination/keyset/in_operator_optimization/strategies/record_loader_strategy_spec.rb": 0.2918174810001801,8039 "spec/lib/gitlab/lazy_spec.rb": 0.25272230500013393,8040 "spec/lib/sidebars/organizations/super_sidebar_panel_spec.rb": 0.3125864589997036,8041 "spec/lib/gitlab/database/migrations/observers/query_statistics_spec.rb": 0.2679139130000294,8042 "spec/lib/bulk_imports/projects/pipelines/container_expiration_policy_pipeline_spec.rb": 0.5624818139999661,8043 "spec/workers/gitlab/github_import/attachments/import_merge_request_worker_spec.rb": 0.5482036849998622,8044 "spec/services/projects/prometheus/metrics/destroy_service_spec.rb": 0.5470820059999824,8045 "spec/graphql/types/commit_signatures/ssh_signature_type_spec.rb": 0.26510823399985384,8046 "spec/views/admin/application_settings/network.html.haml_spec.rb": 0.5978154309996171,8047 "spec/graphql/types/error_tracking/sentry_detailed_error_type_spec.rb": 0.2337064759999521,8048 "spec/graphql/types/error_tracking/sentry_error_stack_trace_type_spec.rb": 0.23139438699990933,8049 "spec/lib/gitlab/email/message/in_product_marketing/create_spec.rb": 0.2438164959999085,8050 "spec/graphql/types/namespace_type_spec.rb": 0.22506682799985356,8051 "spec/lib/gitlab/ci/reports/security/flag_spec.rb": 0.2207003979997353,8052 "spec/graphql/mutations/members/bulk_update_base_spec.rb": 0.409905518999949,8053 "spec/graphql/types/users/autocompleted_user_type_spec.rb": 0.23436817700030588,8054 "spec/lib/gitlab/graphql/tracers/application_context_tracer_spec.rb": 0.20071908999989319,8055 "spec/graphql/types/issue_status_count_type_spec.rb": 0.24443956599998273,8056 "spec/graphql/types/ci/config/include_type_enum_spec.rb": 0.1974180899997009,8057 "spec/lib/gitlab/usage_data_counters/service_usage_data_counter_spec.rb": 0.21136687900025208,8058 "spec/routing/organizations/organizations_controller_routing_spec.rb": 0.1901225310002701,8059 "spec/lib/gitlab/github_import/logger_spec.rb": 0.1871131019997847,8060 "spec/graphql/types/projects/repository_language_type_spec.rb": 0.18575883099993007,8061 "spec/lib/gitlab/ci/reports/security/scanned_resource_spec.rb": 0.19421480099981636,8062 "spec/graphql/types/ci/recent_failures_type_spec.rb": 0.18999799099992742,8063 "spec/graphql/types/tree/tree_entry_type_spec.rb": 0.1962128909999592,8064 "spec/helpers/device_registration_helper_spec.rb": 0.21891315799985023,8065 "spec/lib/gitlab/utils/error_message_spec.rb": 0.18843590100004803,8066 "spec/graphql/types/alert_management/http_integration_type_spec.rb": 0.18807784199998423,8067 "spec/lib/gitlab/email/hook/disable_email_interceptor_spec.rb": 0.3463758749999215,8068 "spec/graphql/types/ci_configuration/sast/input_type_spec.rb": 0.19798150099995837,8069 "spec/helpers/routing/packages_helper_spec.rb": 0.19977014999994935,8070 "spec/serializers/namespace_serializer_spec.rb": 0.16564765400016768,8071 "spec/lib/gitlab/utils/delegator_override/error_spec.rb": 0.15020926399984091,8072 "spec/initializers/circuitbox_spec.rb": 0.15488441499974215,8073 "spec/lib/gitlab/kubernetes/role_binding_spec.rb": 0.16696824300015578,8074 "spec/lib/gitlab/sidekiq_middleware/instrumentation_logger_spec.rb": 0.16369623399987177,8075 "spec/graphql/types/packages/package_dependency_type_spec.rb": 0.16439449400013473,8076 "spec/lib/gitlab/memory/diagnostic_reports_logger_spec.rb": 0.1695209029999205,8077 "spec/lib/forever_spec.rb": 0.15716167500022493,8078 "spec/graphql/resolvers/ci/runner_status_resolver_spec.rb": 0.17511670300018523,8079 "spec/graphql/types/packages/composer/metadatum_type_spec.rb": 0.156276644000172388080}8081Knapsack global time execution for tests: 26m 36s8082Pending: (Failures listed here are expected and do not affect your suite's status)8083 1) Ci::CreatePipelineService#execute Pipeline for external pull requests when source is external pull request when config has external_pull_requests keywords when external pull request is specified when pull request is created from fork does not create an external pull request pipeline8084 # Not yet implemented8085 # ./spec/services/ci/create_pipeline_service_spec.rb:14168086 2) PersonalFileUploader object_store is LOCAL behaves like builds correct paths #cache_dir behaves like matches the method pattern 8087 # No pattern provided, skipping.8088 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88089 3) PersonalFileUploader object_store is LOCAL behaves like builds correct paths #work_dir behaves like matches the method pattern 8090 # No pattern provided, skipping.8091 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88092 4) PersonalFileUploader object_store is LOCAL behaves like builds correct paths #relative_path is relative8093 # Path not set, skipping.8094 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:408095 5) PersonalFileUploader object_store is LOCAL behaves like builds correct paths .base_dir behaves like matches the method pattern 8096 # No pattern provided, skipping.8097 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88098 6) PersonalFileUploader object_store is REMOTE behaves like builds correct paths #cache_dir behaves like matches the method pattern 8099 # No pattern provided, skipping.8100 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88101 7) PersonalFileUploader object_store is REMOTE behaves like builds correct paths #work_dir behaves like matches the method pattern 8102 # No pattern provided, skipping.8103 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88104 8) PersonalFileUploader object_store is REMOTE behaves like builds correct paths #relative_path is relative8105 # Path not set, skipping.8106 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:408107 9) PersonalFileUploader object_store is REMOTE behaves like builds correct paths .absolute_path behaves like matches the method pattern 8108 # No pattern provided, skipping.8109 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88110 10) PersonalFileUploader object_store is REMOTE behaves like builds correct paths .base_dir behaves like matches the method pattern 8111 # No pattern provided, skipping.8112 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88113 11) Ml::Candidate modules behaves like AtomicInternalId .has_internal_id Validation when presence validation is not required when creating an object does not raise an error if the internal id is blank8114 # No reason given8115 # ./spec/support/shared_examples/models/atomic_internal_id_shared_examples.rb:498116 12) Ml::Candidate modules behaves like AtomicInternalId .has_internal_id Validation when presence validation is not required when updating an object does not raise an error if the internal id is blank8117 # No reason given8118 # ./spec/support/shared_examples/models/atomic_internal_id_shared_examples.rb:578119 13) NamespaceFileUploader behaves like builds correct paths #cache_dir behaves like matches the method pattern 8120 # No pattern provided, skipping.8121 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88122 14) NamespaceFileUploader behaves like builds correct paths #work_dir behaves like matches the method pattern 8123 # No pattern provided, skipping.8124 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88125 15) NamespaceFileUploader behaves like builds correct paths #relative_path is relative8126 # Path not set, skipping.8127 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:408128 16) NamespaceFileUploader behaves like builds correct paths .base_dir behaves like matches the method pattern 8129 # No pattern provided, skipping.8130 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88131 17) NamespaceFileUploader object_store is REMOTE behaves like builds correct paths #cache_dir behaves like matches the method pattern 8132 # No pattern provided, skipping.8133 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88134 18) NamespaceFileUploader object_store is REMOTE behaves like builds correct paths #work_dir behaves like matches the method pattern 8135 # No pattern provided, skipping.8136 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88137 19) NamespaceFileUploader object_store is REMOTE behaves like builds correct paths #relative_path is relative8138 # Path not set, skipping.8139 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:408140 20) NamespaceFileUploader object_store is REMOTE behaves like builds correct paths .absolute_path behaves like matches the method pattern 8141 # No pattern provided, skipping.8142 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88143 21) NamespaceFileUploader object_store is REMOTE behaves like builds correct paths .base_dir behaves like matches the method pattern 8144 # No pattern provided, skipping.8145 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88146 22) Gitlab::Database::Partitioning.sync_partitions without ci database only creates partitions for main database8147 # Skipping because database ci exists8148 # ./spec/lib/gitlab/database/partitioning_spec.rb:1168149Failures:8150 1) Repository#list_commits_by returns commits when no filter is applied8151 Failure/Error:8152 expect(commit_ids).to include(8153 'b83d6e391c22777fca1ed3012fce84f633d7fed0',8154 '498214de67004b1da3d820901307bed2a68a8ef6'8155 )8156 expected ["59e0c7855e68453eaeebe947042d29ed7584f0e0", "a9b5fde0770621b3cba53b183103f8cbe5bee55e"] to include "b83d6e391c22777fca1ed3012fce84f633d7fed0" and "498214de67004b1da3d820901307bed2a68a8ef6"8157 # ./spec/models/repository_spec.rb:605:in `block (3 levels) in <top (required)>'8158 # ./spec/spec_helper.rb:448:in `block (3 levels) in <top (required)>'8159 # ./spec/support/sidekiq_middleware.rb:18:in `with_sidekiq_server_middleware'8160 # ./spec/spec_helper.rb:439:in `block (2 levels) in <top (required)>'8161 # ./spec/spec_helper.rb:435:in `block (3 levels) in <top (required)>'8162 # ./lib/gitlab/application_context.rb:66:in `with_raw_context'8163 # ./spec/spec_helper.rb:435:in `block (2 levels) in <top (required)>'8164 # ./spec/spec_helper.rb:266:in `block (2 levels) in <top (required)>'8165 # ./spec/support/system_exit_detected.rb:7:in `block (2 levels) in <top (required)>'8166 # ./spec/support/fast_quarantine.rb:22:in `block (2 levels) in <top (required)>'8167 # ./spec/support/database/prevent_cross_joins.rb:106:in `block (3 levels) in <top (required)>'8168 # ./spec/support/database/prevent_cross_joins.rb:60:in `with_cross_joins_prevented'8169 # ./spec/support/database/prevent_cross_joins.rb:106:in `block (2 levels) in <top (required)>'8170 2) Repository#delete_file when an author is specified uses the given email/name to set the commit's author8171 Failure/Error: raise Gitlab::Git::Index::IndexError, index_error_message(detailed_error.index_update)8172 Gitlab::Git::Index::IndexError:8173 A file with this name doesn't exist8174 # ./lib/gitlab/gitaly_client/operation_service.rb:489:in `rescue in user_commit_files'8175 # ./lib/gitlab/gitaly_client/operation_service.rb:436:in `user_commit_files'8176 # ./lib/gitlab/git/repository.rb:1036:in `block in commit_files'8177 # ./lib/gitlab/git/wraps_gitaly_errors.rb:7:in `wrapped_gitaly_errors'8178 # ./lib/gitlab/git/repository.rb:1035:in `commit_files'8179 # ./app/models/repository.rb:886:in `block in commit_files'8180 # ./app/models/repository.rb:869:in `with_cache_hooks'8181 # ./app/models/repository.rb:886:in `commit_files'8182 # ./app/models/repository.rb:865:in `delete_file'8183 # ./spec/models/repository_spec.rb:1124:in `block (5 levels) in <top (required)>'8184 # ./spec/models/repository_spec.rb:1123:in `block (4 levels) in <top (required)>'8185 # ./spec/spec_helper.rb:448:in `block (3 levels) in <top (required)>'8186 # ./spec/support/sidekiq_middleware.rb:18:in `with_sidekiq_server_middleware'8187 # ./spec/spec_helper.rb:439:in `block (2 levels) in <top (required)>'8188 # ./spec/spec_helper.rb:435:in `block (3 levels) in <top (required)>'8189 # ./lib/gitlab/application_context.rb:66:in `with_raw_context'8190 # ./spec/spec_helper.rb:435:in `block (2 levels) in <top (required)>'8191 # ./spec/spec_helper.rb:266:in `block (2 levels) in <top (required)>'8192 # ./spec/support/system_exit_detected.rb:7:in `block (2 levels) in <top (required)>'8193 # ./spec/support/fast_quarantine.rb:22:in `block (2 levels) in <top (required)>'8194 # ./spec/support/database/prevent_cross_joins.rb:106:in `block (3 levels) in <top (required)>'8195 # ./spec/support/database/prevent_cross_joins.rb:60:in `with_cross_joins_prevented'8196 # ./spec/support/database/prevent_cross_joins.rb:106:in `block (2 levels) in <top (required)>'8197 # ------------------8198 # --- Caused by: ---8199 # GRPC::NotFound:8200 # 5:A file with this name doesn't exist. debug_error_string:{UNKNOWN:Error received from peer {created_time:"2023-08-10T12:25:42.501421432+00:00", grpc_status:5, grpc_message:"A file with this name doesn\'t exist"}}8201 # ./lib/gitlab/gitaly_client.rb:185:in `execute'8202Finished in 26 minutes 40 seconds (files took 1 minute 43.72 seconds to load)82033689 examples, 2 failures, 22 pending8204Failed examples:8205rspec ./spec/models/repository_spec.rb:602 # Repository#list_commits_by returns commits when no filter is applied8206rspec ./spec/models/repository_spec.rb:1122 # Repository#delete_file when an author is specified uses the given email/name to set the commit's author8207Randomized with seed 399888208[TEST PROF INFO] Time spent in factories: 14:23.658 (52.51% of total time)8209Stopped processing SimpleCov as a previous error not related to SimpleCov has been detected8210RSpec exited with 1.8211RSPEC_RETRIED_TESTS_REPORT_PATH: rspec/retried_tests-4841631224.txt8212Retrying the failing examples in a new RSpec process...8213$ gem install junit_merge --no-document --version 0.1.28214Successfully installed nokogiri-1.15.3-x86_64-linux8215Successfully installed junit_merge-0.1.282162 gems installed8217==> 'gem install junit_merge --no-document --version 0.1.2' succeeded in 1 seconds.8218Running RSpec command: bin/rspec -Ispec -rspec_helper --color --failure-exit-code 1 --error-exit-code 2 --format documentation --format Support::Formatters::JsonFormatter --out rspec/rspec-retry-4841631224.json --format RspecJunitFormatter --out rspec/rspec-retry-4841631224.xml --only-failures --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.rb"8219/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!8220/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!8221/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!8222/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!8223/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!8224/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!8225/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!8226/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!8227/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!8228/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!8229/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!8230/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!8231/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!8232/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!8233/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!8234/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!8235/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!8236/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!8237/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!8238/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!8239/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!8240/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!8241/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!8242/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!8243/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!8244/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!8245/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!8246/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!8247/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!8248/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!8249/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!8250/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!8251/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!8252/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!8253/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!8254/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!8255/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!8256/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!8257/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!8258/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!8259/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!8260/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!8261/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!8262/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!8263/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!8264/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!8265/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!8266/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!8267Run options: include {:last_run_status=>"failed"}8268Test environment set up in 0.420876647 seconds8269Repository8270 #list_commits_by8271 returns commits when no filter is applied8272 #delete_file8273 when an author is specified8274 uses the given email/name to set the commit's author8275Finished in 4.86 seconds (files took 49.61 seconds to load)82762 examples, 0 failures8277[TEST PROF INFO] Time spent in factories: 00:02.383 (30.94% of total time)8278Loading rspec/rspec-4841631224.json...8279Merged rspec/rspec-retry-4841631224.json adding 4 results.8280Saved rspec/rspec-4841631224.json.8281A test was flaky and succeeded after being retried. Checking to see if flaky test is part of this MR...8282Flaky test was not part of this MR.8284Running after script...8285$ echo -e "\e[0Ksection_start:`date +%s`:report_results_section[collapsed=true]\r\e[0KReport results"8290Not uploading cache ruby-gems-debian-bullseye-ruby-3.0-16 due to policy8292Uploading artifacts...8293WARNING: auto_explain/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 8294coverage/: found 4 matching artifact files and directories 8295crystalball/: found 2 matching artifact files and directories 8296WARNING: deprecations/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 8297knapsack/: found 4 matching artifact files and directories 8298rspec/: found 19 matching artifact files and directories 8299WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 8300log/*.log: found 19 matching artifact files and directories 8301WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4841631224/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com8302WARNING: Retrying... context=artifacts-uploader error=request redirected8303Uploading artifacts as "archive" to coordinator... 201 Created id=4841631224 responseStatus=201 Created token=64_zbdxF8304Uploading artifacts...8305rspec/rspec-*.xml: found 2 matching artifact files and directories 8306WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4841631224/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com8307WARNING: Retrying... context=artifacts-uploader error=request redirected8308Uploading artifacts as "junit" to coordinator... 201 Created id=4841631224 responseStatus=201 Created token=64_zbdxF8310Job succeeded