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

🤖 GitLab Bot 🤖
1 when buffer size is larger than file size2 behaves like appends a trace3 is expected to eq "exist data\e[0KRunning with gitlab-runner 10.6.0 (a3543a27)\n\e[0;m\e[0K on docker-auto-scale-com 30d62d59\n\e[0;m\e[0KUsing Docker executor with image dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.3.6-golang-1.9-git-2.16-chrome-63.0-node-8.x-yarn-1.2-postgresql-9.6 ...\n\e[0;m\e[0KStarting service mysql:latest ...\n\e[0;m\e[0KPulling docker image mysql:latest ...\n\e[0;m\e[0KUsing docker image sha256:5195076672a7e30525705a18f7d352c920bbd07a5ae72b30e374081fe660a011 for mysql:latest ...\n\e[0;m\e[0KStarting service redis:alpine ...\n\e[0;m\e[0KPulling docker image redis:alpine ...\n\e[0;m\e[0KUsing docker image sha256:98bd7cfc43b8ef0ff130465e3d5427c0771002c2f35a6a9b62cb2d04602bed0a for redis:alpine ...\n\e[0;m\e[0KWaiting for services to be up and running...\n\e[0;m\e[0KPulling docker image dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.3.6-golang-1.9-git-2.16-chrome-63.0-node-8.x-yarn-1.2-postgresql-9.6 ...\n\e[0;m\e[0KUsing docker image sha256:1b06077bb03d9d42d801b53f45701bb6a7e862ca02e1e75f30ca7fcf1270eb02 for dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.3.6-golang-1.9-git-2.16-chrome-63.0-node-8.x-yarn-1.2-postgresql-9.6 ...\n\e[0;msection_start:1522927103:prepare_script\n\e[0KRunning on runner-30d62d59-project-13083-concurrent-0 via runner-30d62d59-prm-1522922015-ddc29478...\nsection_end:1522927104:prepare_script\n\e[0Ksection_start:1522927104:get_sources\n\e[0K\e[32;1mFetching changes for master with git depth set to 20...\e[0;m\nRemoving .gitlab_shell_secret\nRemoving .gitlab_workhorse_secret\nRemoving .yarn-cache/\nRemoving builds/2018_04/\nRemoving config/database.yml\nRemoving config/gitlab.yml\nRemoving config/redis.cache.yml\nRemoving config/redis.queues.yml\nRemoving config/redis.shared_state.yml\nRemoving config/resque.yml\nRemoving config/secrets.yml\nRemoving log/api_json.log\nRemoving log/application.log\nRemoving log/gitaly-test.log\nRemoving log/grpc.log\nRemoving log/test_json.log\nRemoving tmp/tests/\nRemoving vendor/ruby/\nHEAD is now at b7cbff3d Add `direct_upload` setting for artifacts\nFrom https://gitlab.com/gitlab-org/gitlab-foss\n 2dbcb9cb..641bb13b master -> origin/master\n\e[32;1mChecking out 21488c74 as master...\e[0;m\n\e[32;1mSkipping Git submodules setup\e[0;m\nsection_end:1522927113:get_sources\n\e[0Ksection_start:1522927113:restore_cache\n\e[0K\e[32;1mChecking cache for ruby-2.3.6-with-yarn...\e[0;m\nDownloading cache.zip from http://runners-cache-5-internal.gitlab.com:444/runner/project/13083/ruby-2.3.6-with-yarn\e[0;m\n\e[32;1mSuccessfully extracted cache\e[0;m\nsection_end:1522927128:restore_cache\n\e[0Ksection_start:1522927128:download_artifacts\n\e[0K\e[32;1mDownloading artifacts for retrieve-tests-metadata (61303215)...\e[0;m\nDownloading artifacts from coordinator... ok \e[0;m id\e[0;m=61303215 responseStatus\e[0;m=200 OK token\e[0;m=AdWPNg2R\n\e[32;1mDownloading artifacts for compile-assets (61303216)...\e[0;m\nDownloading artifacts from coordinator... ok \e[0;m id\e[0;m=61303216 responseStatus\e[0;m=200 OK token\e[0;m=iy2yYbq8\n\e[32;1mDownloading artifacts for setup-test-env (61303217)...\e[0;m\nDownloading artifacts from coordinator... ok \e[0;m id\e[0;m=61303217 responseStatus\e[0;m=200 OK token\e[0;m=ur1g79-4\n\e[0;33mWARNING: tmp/tests/gitlab-shell/.gitlab_shell_secret: chmod tmp/tests/gitlab-shell/.gitlab_shell_secret: no such file or directory (suppressing repeats)\e[0;m\nsection_end:1522927141:download_artifacts\n\e[0Ksection_start:1522927141:build_script\n\e[0K\e[32;1m$ bundle --version\e[0;m\nBundler version 1.16.1\n\e[32;1m$ date\e[0;m\nThu Apr 5 11:19:01 UTC 2018\n\e[32;1m$ source scripts/utils.sh\e[0;m\n\e[32;1m$ date\e[0;m\nThu Apr 5 11:19:01 UTC 2018\n\e[32;1m$ source scripts/prepare_build.sh\e[0;m\nThe Gemfile's dependencies are satisfied\nSuccessfully installed knapsack-1.16.0\n1 gem installed\n-- enable_extension(\"plpgsql\")\n -> 0.0010s\n-- enable_extension(\"pg_trgm\")\n -> 0.0000s\n-- create_table(\"abuse_reports\", {:force=>:cascade})\n -> 0.0401s\n-- create_table(\"appearances\", {:force=>:cascade})\n -> 0.1035s\n-- create_table(\"application_settings\", {:force=>:cascade})\n -> 0.0871s\n-- create_table(\"audit_events\", {:force=>:cascade})\n -> 0.0539s\n-- add_index(\"audit_events\", [\"entity_id\", \"entity_type\"], {:name=>\"index_audit_events_on_entity_id_and_entity_type\", :using=>:btree})\n -> 0.0647s\n-- create_table(\"award_emoji\", {:force=>:cascade})\n -> 0.0134s\n-- add_index(\"award_emoji\", [\"awardable_type\", \"awardable_id\"], {:name=>\"index_award_emoji_on_awardable_type_and_awardable_id\", :using=>:btree})\n -> 0.0074s\n-- add_index(\"award_emoji\", [\"user_id\", \"name\"], {:name=>\"index_award_emoji_on_user_id_and_name\", :using=>:btree})\n -> 0.0072s\n-- create_table(\"badges\", {:force=>:cascade})\n -> 0.0122s\n-- add_index(\"badges\", [\"group_id\"], {:name=>\"index_badges_on_group_id\", :using=>:btree})\n -> 0.0086s\n-- add_index(\"badges\", [\"project_id\"], {:name=>\"index_badges_on_project_id\", :using=>:btree})\n -> 0.0069s\n-- create_table(\"boards\", {:force=>:cascade})\n -> 0.0075s\n-- add_index(\"boards\", [\"group_id\"], {:name=>\"index_boards_on_group_id\", :using=>:btree})\n -> 0.0050s\n-- add_index(\"boards\", [\"project_id\"], {:name=>\"index_boards_on_project_id\", :using=>:btree})\n -> 0.0051s\n-- create_table(\"broadcast_messages\", {:force=>:cascade})\n -> 0.0082s\n-- add_index(\"broadcast_messages\", [\"starts_at\", \"ends_at\", \"id\"], {:name=>\"index_broadcast_messages_on_starts_at_and_ends_at_and_id\", :using=>:btree})\n -> 0.0063s\n-- create_table(\"chat_names\", {:force=>:cascade})\n -> 0.0084s\n-- add_index(\"chat_names\", [\"service_id\", \"team_id\", \"chat_id\"], {:name=>\"index_chat_names_on_service_id_and_team_id_and_chat_id\", :unique=>true, :using=>:btree})\n -> 0.0088s\n-- add_index(\"chat_names\", [\"user_id\", \"service_id\"], {:name=>\"index_chat_names_on_user_id_and_service_id\", :unique=>true, :using=>:btree})\n -> 0.0077s\n-- create_table(\"chat_teams\", {:force=>:cascade})\n -> 0.0120s\n-- add_index(\"chat_teams\", [\"namespace_id\"], {:name=>\"index_chat_teams_on_namespace_id\", :unique=>true, :using=>:btree})\n -> 0.0135s\n-- create_table(\"ci_build_trace_section_names\", {:force=>:cascade})\n -> 0.0125s\n-- add_index(\"ci_build_trace_section_names\", [\"project_id\", \"name\"], {:name=>\"index_ci_build_trace_section_names_on_project_id_and_name\", :unique=>true, :using=>:btree})\n -> 0.0087s\n-- create_table(\"ci_build_trace_sections\", {:force=>:cascade})\n -> 0.0094s\n-- add_index(\"ci_build_trace_sections\", [\"build_id\", \"section_name_id\"], {:name=>\"index_ci_build_trace_sections_on_build_id_and_section_name_id\", :unique=>true, :using=>:btree})\n -> 0.0916s\n-- add_index(\"ci_build_trace_sections\", [\"project_id\"], {:name=>\"index_ci_build_trace_sections_on_project_id\", :using=>:btree})\n -> 0.0089s\n-- add_index(\"ci_build_trace_sections\", [\"section_name_id\"], {:name=>\"index_ci_build_trace_sections_on_section_name_id\", :using=>:btree})\n -> 0.0132s\n-- create_table(\"ci_builds\", {:force=>:cascade})\n -> 0.0140s\n-- add_index(\"ci_builds\", [\"artifacts_expire_at\"], {:name=>\"index_ci_builds_on_artifacts_expire_at\", :where=>\"(artifacts_file <> ''::text)\", :using=>:btree})\n -> 0.0325s\n-- add_index(\"ci_builds\", [\"auto_canceled_by_id\"], {:name=>\"index_ci_builds_on_auto_canceled_by_id\", :using=>:btree})\n -> 0.0081s\n-- add_index(\"ci_builds\", [\"commit_id\", \"stage_idx\", \"created_at\"], {:name=>\"index_ci_builds_on_commit_id_and_stage_idx_and_created_at\", :using=>:btree})\n -> 0.0114s\n-- add_index(\"ci_builds\", [\"commit_id\", \"status\", \"type\"], {:name=>\"index_ci_builds_on_commit_id_and_status_and_type\", :using=>:btree})\n -> 0.0119s\n-- add_index(\"ci_builds\", [\"commit_id\", \"type\", \"name\", \"ref\"], {:name=>\"index_ci_builds_on_commit_id_and_type_and_name_and_ref\", :using=>:btree})\n -> 0.0116s\n-- add_index(\"ci_builds\", [\"commit_id\", \"type\", \"ref\"], {:name=>\"index_ci_builds_on_commit_id_and_type_and_ref\", :using=>:btree})\n -> 0.0144s\n-- add_index(\"ci_builds\", [\"project_id\", \"id\"], {:name=>\"index_ci_builds_on_project_id_and_id\", :using=>:btree})\n -> 0.0136s\n-- add_index(\"ci_builds\", [\"protected\"], {:name=>\"index_ci_builds_on_protected\", :using=>:btree})\n -> 0.0113s\n-- add_index(\"ci_builds\", [\"runner_id\"], {:name=>\"index_ci_builds_on_runner_id\", :using=>:btree})\n -> 0.0082s\n-- add_index(\"ci_builds\", [\"stage_id\"], {:name=>\"index_ci_builds_on_stage_id\", :using=>:btree})\n -> 0.0086s\n-- add_index(\"ci_builds\", [\"status\", \"type\", \"runner_id\"], {:name=>\"index_ci_builds_on_status_and_type_and_runner_id\", :using=>:btree})\n -> 0.0091s\n-- add_index(\"ci_builds\", [\"status\"], {:name=>\"index_ci_builds_on_status\", :using=>:btree})\n -> 0.0081s\n-- add_index(\"ci_builds\", [\"token\"], {:name=>\"index_ci_builds_on_token\", :unique=>true, :using=>:btree})\n -> 0.0103s\n-- add_index(\"ci_builds\", [\"updated_at\"], {:name=>\"index_ci_builds_on_updated_at\", :using=>:btree})\n -> 0.0149s\n-- add_index(\"ci_builds\", [\"user_id\"], {:name=>\"index_ci_builds_on_user_id\", :using=>:btree})\n -> 0.0156s\n-- create_table(\"ci_builds_metadata\", {:force=>:cascade})\n -> 0.0134s\n-- add_index(\"ci_builds_metadata\", [\"build_id\"], {:name=>\"index_ci_builds_metadata_on_build_id\", :unique=>true, :using=>:btree})\n -> 0.0067s\n-- add_index(\"ci_builds_metadata\", [\"project_id\"], {:name=>\"index_ci_builds_metadata_on_project_id\", :using=>:btree})\n -> 0.0061s\n-- create_table(\"ci_group_variables\", {:force=>:cascade})\n -> 0.0088s\n-- add_index(\"ci_group_variables\", [\"group_id\", \"key\"], {:name=>\"index_ci_group_variables_on_group_id_and_key\", :unique=>true, :using=>:btree})\n -> 0.0073s\n-- create_table(\"ci_job_artifacts\", {:force=>:cascade})\n -> 0.0089s\n-- add_index(\"ci_job_artifacts\", [\"expire_at\", \"job_id\"], {:name=>\"index_ci_job_artifacts_on_expire_at_and_job_id\", :using=>:btree})\n -> 0.0061s\n-- add_index(\"ci_job_artifacts\", [\"job_id\", \"file_type\"], {:name=>\"index_ci_job_artifacts_on_job_id_and_file_type\", :unique=>true, :using=>:btree})\n -> 0.0077s\n-- add_index(\"ci_job_artifacts\", [\"project_id\"], {:name=>\"index_ci_job_artifacts_on_project_id\", :using=>:btree})\n -> 0.0071s\n-- create_table(\"ci_pipeline_schedule_variables\", {:force=>:cascade})\n -> 0.0512s\n-- add_index(\"ci_pipeline_schedule_variables\", [\"pipeline_schedule_id\", \"key\"], {:name=>\"index_ci_pipeline_schedule_variables_on_schedule_id_and_key\", :unique=>true, :using=>:btree})\n -> 0.0144s\n-- create_table(\"ci_pipeline_schedules\", {:force=>:cascade})\n -> 0.0603s\n-- add_index(\"ci_pipeline_schedules\", [\"next_run_at\", \"active\"], {:name=>\"index_ci_pipeline_schedules_on_next_run_at_and_active\", :using=>:btree})\n -> 0.0247s\n-- add_index(\"ci_pipeline_schedules\", [\"project_id\"], {:name=>\"index_ci_pipeline_schedules_on_project_id\", :using=>:btree})\n -> 0.0082s\n-- create_table(\"ci_pipeline_variables\", {:force=>:cascade})\n -> 0.0112s\n-- add_index(\"ci_pipeline_variables\", [\"pipeline_id\", \"key\"], {:name=>\"index_ci_pipeline_variables_on_pipeline_id_and_key\", :unique=>true, :using=>:btree})\n -> 0.0075s\n-- create_table(\"ci_pipelines\", {:force=>:cascade})\n -> 0.0111s\n-- add_index(\"ci_pipelines\", [\"auto_canceled_by_id\"], {:name=>\"index_ci_pipelines_on_auto_canceled_by_id\", :using=>:btree})\n -> 0.0074s\n-- add_index(\"ci_pipelines\", [\"pipeline_schedule_id\"], {:name=>\"index_ci_pipelines_on_pipeline_schedule_id\", :using=>:btree})\n -> 0.0086s\n-- add_index(\"ci_pipelines\", [\"project_id\", \"ref\", \"status\", \"id\"], {:name=>\"index_ci_pipelines_on_project_id_and_ref_and_status_and_id\", :using=>:btree})\n -> 0.0104s\n-- add_index(\"ci_pipelines\", [\"project_id\", \"sha\"], {:name=>\"index_ci_pipelines_on_project_id_and_sha\", :using=>:btree})\n -> 0.0107s\n-- add_index(\"ci_pipelines\", [\"project_id\"], {:name=>\"index_ci_pipelines_on_project_id\", :using=>:btree})\n -> 0.0084s\n-- add_index(\"ci_pipelines\", [\"status\"], {:name=>\"index_ci_pipelines_on_status\", :using=>:btree})\n -> 0.0065s\n-- add_index(\"ci_pipelines\", [\"user_id\"], {:name=>\"index_ci_pipelines_on_user_id\", :using=>:btree})\n -> 0.0071s\n-- create_table(\"ci_runner_projects\", {:force=>:cascade})\n -> 0.0077s\n-- add_index(\"ci_runner_projects\", [\"project_id\"], {:name=>\"index_ci_runner_projects_on_project_id\", :using=>:btree})\n -> 0.0072s\n-- add_index(\"ci_runner_projects\", [\"runner_id\"], {:name=>\"index_ci_runner_projects_on_runner_id\", :using=>:btree})\n -> 0.0064s\n-- create_table(\"ci_runners\", {:force=>:cascade})\n -> 0.0090s\n-- add_index(\"ci_runners\", [\"contacted_at\"], {:name=>\"index_ci_runners_on_contacted_at\", :using=>:btree})\n -> 0.0078s\n-- add_index(\"ci_runners\", [\"is_shared\"], {:name=>\"index_ci_runners_on_is_shared\", :using=>:btree})\n -> 0.0054s\n-- add_index(\"ci_runners\", [\"locked\"], {:name=>\"index_ci_runners_on_locked\", :using=>:btree})\n -> 0.0052s\n-- add_index(\"ci_runners\", [\"token\"], {:name=>\"index_ci_runners_on_token\", :using=>:btree})\n -> 0.0057s\n-- create_table(\"ci_stages\", {:force=>:cascade})\n -> 0.0059s\n-- add_index(\"ci_stages\", [\"pipeline_id\", \"name\"], {:name=>\"index_ci_stages_on_pipeline_id_and_name\", :unique=>true, :using=>:btree})\n -> 0.0054s\n-- add_index(\"ci_stages\", [\"pipeline_id\"], {:name=>\"index_ci_stages_on_pipeline_id\", :using=>:btree})\n -> 0.0045s\n-- add_index(\"ci_stages\", [\"project_id\"], {:name=>\"index_ci_stages_on_project_id\", :using=>:btree})\n -> 0.0053s\n-- create_table(\"ci_trigger_requests\", {:force=>:cascade})\n -> 0.0079s\n-- add_index(\"ci_trigger_requests\", [\"commit_id\"], {:name=>\"index_ci_trigger_requests_on_commit_id\", :using=>:btree})\n -> 0.0059s\n-- create_table(\"ci_triggers\", {:force=>:cascade})\n -> 0.0100s\n-- add_index(\"ci_triggers\", [\"project_id\"], {:name=>\"index_ci_triggers_on_project_id\", :using=>:btree})\n -> 0.0059s\n-- create_table(\"ci_variables\", {:force=>:cascade})\n -> 0.0110s\n-- add_index(\"ci_variables\", [\"project_id\", \"key\", \"environment_scope\"], {:name=>\"index_ci_variables_on_project_id_and_key_and_environment_scope\", :unique=>true, :using=>:btree})\n -> 0.0066s\n-- create_table(\"cluster_platforms_kubernetes\", {:force=>:cascade})\n -> 0.0082s\n-- add_index(\"cluster_platforms_kubernetes\", [\"cluster_id\"], {:name=>\"index_cluster_platforms_kubernetes_on_cluster_id\", :unique=>true, :using=>:btree})\n -> 0.0047s\n-- create_table(\"cluster_projects\", {:force=>:cascade})\n -> 0.0079s\n-- add_index(\"cluster_projects\", [\"cluster_id\"], {:name=>\"index_cluster_projects_on_cluster_id\", :using=>:btree})\n -> 0.0045s\n-- add_index(\"cluster_projects\", [\"project_id\"], {:name=>\"index_cluster_projects_on_project_id\", :using=>:btree})\n -> 0.0044s\n-- create_table(\"cluster_providers_gcp\", {:force=>:cascade})\n -> 0.0247s\n-- add_index(\"cluster_providers_gcp\", [\"cluster_id\"], {:name=>\"index_cluster_providers_gcp_on_cluster_id\", :unique=>true, :using=>:btree})\n -> 0.0088s\n-- create_table(\"clusters\", {:force=>:cascade})\n -> 0.0767s\n-- add_index(\"clusters\", [\"enabled\"], {:name=>\"index_clusters_on_enabled\", :using=>:btree})\n -> 0.0162s\n-- add_index(\"clusters\", [\"user_id\"], {:name=>\"index_clusters_on_user_id\", :using=>:btree})\n -> 0.0216s\n-- create_table(\"clusters_applications_helm\", {:force=>:cascade})\n -> 0.0379s\n-- create_table(\"clusters_applications_ingress\", {:force=>:cascade})\n -> 0.0409s\n-- create_table(\"clusters_applications_prometheus\", {:force=>:cascade})\n -> 0.0178s\n-- create_table(\"clusters_applications_runners\", {:force=>:cascade})\n -> 0.0471s\n-- add_index(\"clusters_applications_runners\", [\"cluster_id\"], {:name=>\"index_clusters_applications_runners_on_cluster_id\", :unique=>true, :using=>:btree})\n -> 0.0487s\n-- add_index(\"clusters_applications_runners\", [\"runner_id\"], {:name=>\"index_clusters_applications_runners_on_runner_id\", :using=>:btree})\n -> 0.0094s\n-- create_table(\"container_repositories\", {:force=>:cascade})\n -> 0.0142s\n-- add_index(\"container_repositories\", [\"project_id\", \"name\"], {:name=>\"index_container_repositories_on_project_id_and_name\", :unique=>true, :using=>:btree})\n -> 0.0080s\n-- add_index(\"container_repositories\", [\"project_id\"], {:name=>\"index_container_repositories_on_project_id\", :using=>:btree})\n -> 0.0070s\n-- create_table(\"conversational_development_index_metrics\", {:force=>:cascade})\n -> 0.0204s\n-- create_table(\"deploy_keys_projects\", {:force=>:cascade})\n -> 0.0154s\n-- add_index(\"deploy_keys_projects\", [\"project_id\"], {:name=>\"index_deploy_keys_projects_on_project_id\", :using=>:btree})\n -> 0.0471s\n-- create_table(\"deployments\", {:force=>:cascade})\n -> 0.0191s\n-- add_index(\"deployments\", [\"created_at\"], {:name=>\"index_deployments_on_created_at\", :using=>:btree})\n -> 0.0552s\n-- add_index(\"deployments\", [\"environment_id\", \"id\"], {:name=>\"index_deployments_on_environment_id_and_id\", :using=>:btree})\n -> 0.0294s\n-- add_index(\"deployments\", [\"environment_id\", \"iid\", \"project_id\"], {:name=>\"index_deployments_on_environment_id_and_iid_and_project_id\", :using=>:btree})\n -> 0.0408s\n-- add_index(\"deployments\", [\"project_id\", \"iid\"], {:name=>\"index_deployments_on_project_id_and_iid\", :unique=>true, :using=>:btree})\n -> 0.0094s\n-- create_table(\"emails\", {:force=>:cascade})\n -> 0.0127s\n-- add_index(\"emails\", [\"confirmation_token\"], {:name=>\"index_emails_on_confirmation_token\", :unique=>true, :using=>:btree})\n -> 0.0082s\n-- add_index(\"emails\", [\"email\"], {:name=>\"index_emails_on_email\", :unique=>true, :using=>:btree})\n -> 0.0110s\n-- add_index(\"emails\", [\"user_id\"], {:name=>\"index_emails_on_user_id\", :using=>:btree})\n -> 0.0079s\n-- create_table(\"environments\", {:force=>:cascade})\n -> 0.0106s\n-- add_index(\"environments\", [\"project_id\", \"name\"], {:name=>\"index_environments_on_project_id_and_name\", :unique=>true, :using=>:btree})\n -> 0.0086s\n-- add_index(\"environments\", [\"project_id\", \"slug\"], {:name=>\"index_environments_on_project_id_and_slug\", :unique=>true, :using=>:btree})\n -> 0.0076s\n-- create_table(\"events\", {:force=>:cascade})\n -> 0.0122s\n-- add_index(\"events\", [\"action\"], {:name=>\"index_events_on_action\", :using=>:btree})\n -> 0.0068s\n-- add_index(\"events\", [\"author_id\", \"project_id\"], {:name=>\"index_events_on_author_id_and_project_id\", :using=>:btree})\n -> 0.0081s\n-- add_index(\"events\", [\"project_id\", \"id\"], {:name=>\"index_events_on_project_id_and_id\", :using=>:btree})\n -> 0.0064s\n-- add_index(\"events\", [\"target_type\", \"target_id\"], {:name=>\"index_events_on_target_type_and_target_id\", :using=>:btree})\n -> 0.0087s\n-- create_table(\"feature_gates\", {:force=>:cascade})\n -> 0.0105s\n-- add_index(\"feature_gates\", [\"feature_key\", \"key\", \"value\"], {:name=>\"index_feature_gates_on_feature_key_and_key_and_value\", :unique=>true, :using=>:btree})\n -> 0.0080s\n-- create_table(\"features\", {:force=>:cascade})\n -> 0.0086s\n-- add_index(\"features\", [\"key\"], {:name=>\"index_features_on_key\", :unique=>true, :using=>:btree})\n -> 0.0058s\n-- create_table(\"fork_network_members\", {:force=>:cascade})\n -> 0.0081s\n-- add_index(\"fork_network_members\", [\"fork_network_id\"], {:name=>\"index_fork_network_members_on_fork_network_id\", :using=>:btree})\n -> 0.0056s\n-- add_index(\"fork_network_members\", [\"project_id\"], {:name=>\"index_fork_network_members_on_project_id\", :unique=>true, :using=>:btree})\n -> 0.0053s\n-- create_table(\"fork_networks\", {:force=>:cascade})\n -> 0.0081s\n-- add_index(\"fork_networks\", [\"root_project_id\"], {:name=>\"index_fork_networks_on_root_project_id\", :unique=>true, :using=>:btree})\n -> 0.0051s\n-- create_table(\"forked_project_links\", {:force=>:cascade})\n -> 0.0070s\n-- add_index(\"forked_project_links\", [\"forked_to_project_id\"], {:name=>\"index_forked_project_links_on_forked_to_project_id\", :unique=>true, :using=>:btree})\n -> 0.0061s\n-- create_table(\"gcp_clusters\", {:force=>:cascade})\n -> 0.0090s\n-- add_index(\"gcp_clusters\", [\"project_id\"], {:name=>\"index_gcp_clusters_on_project_id\", :unique=>true, :using=>:btree})\n -> 0.0073s\n-- create_table(\"gpg_key_subkeys\", {:force=>:cascade})\n -> 0.0092s\n-- add_index(\"gpg_key_subkeys\", [\"fingerprint\"], {:name=>\"index_gpg_key_subkeys_on_fingerprint\", :unique=>true, :using=>:btree})\n -> 0.0063s\n-- add_index(\"gpg_key_subkeys\", [\"gpg_key_id\"], {:name=>\"index_gpg_key_subkeys_on_gpg_key_id\", :using=>:btree})\n -> 0.0603s\n-- add_index(\"gpg_key_subkeys\", [\"keyid\"], {:name=>\"index_gpg_key_subkeys_on_keyid\", :unique=>true, :using=>:btree})\n -> 0.0705s\n-- create_table(\"gpg_keys\", {:force=>:cascade})\n -> 0.0235s\n-- add_index(\"gpg_keys\", [\"fingerprint\"], {:name=>\"index_gpg_keys_on_fingerprint\", :unique=>true, :using=>:btree})\n -> 0.0220s\n-- add_index(\"gpg_keys\", [\"primary_keyid\"], {:name=>\"index_gpg_keys_on_primary_keyid\", :unique=>true, :using=>:btree})\n -> 0.0329s\n-- add_index(\"gpg_keys\", [\"user_id\"], {:name=>\"index_gpg_keys_on_user_id\", :using=>:btree})\n -> 0.0087s\n-- create_table(\"gpg_signatures\", {:force=>:cascade})\n -> 0.0126s\n-- add_index(\"gpg_signatures\", [\"commit_sha\"], {:name=>\"index_gpg_signatures_on_commit_sha\", :unique=>true, :using=>:btree})\n -> 0.0105s\n-- add_index(\"gpg_signatures\", [\"gpg_key_id\"], {:name=>\"index_gpg_signatures_on_gpg_key_id\", :using=>:btree})\n -> 0.0094s\n-- add_index(\"gpg_signatures\", [\"gpg_key_primary_keyid\"], {:name=>\"index_gpg_signatures_on_gpg_key_primary_keyid\", :using=>:btree})\n -> 0.0100s\n-- add_index(\"gpg_signatures\", [\"gpg_key_subkey_id\"], {:name=>\"index_gpg_signatures_on_gpg_key_subkey_id\", :using=>:btree})\n -> 0.0079s\n-- add_index(\"gpg_signatures\", [\"project_id\"], {:name=>\"index_gpg_signatures_on_project_id\", :using=>:btree})\n -> 0.0081s\n-- create_table(\"group_custom_attributes\", {:force=>:cascade})\n -> 0.0092s\n-- add_index(\"group_custom_attributes\", [\"group_id\", \"key\"], {:name=>\"index_group_custom_attributes_on_group_id_and_key\", :unique=>true, :using=>:btree})\n -> 0.0086s\n-- add_index(\"group_custom_attributes\", [\"key\", \"value\"], {:name=>\"index_group_custom_attributes_on_key_and_value\", :using=>:btree})\n -> 0.0071s\n-- create_table(\"identities\", {:force=>:cascade})\n -> 0.0114s\n-- add_index(\"identities\", [\"user_id\"], {:name=>\"index_identities_on_user_id\", :using=>:btree})\n -> 0.0064s\n-- create_table(\"internal_ids\", {:id=>:bigserial, :force=>:cascade})\n -> 0.0097s\n-- add_index(\"internal_ids\", [\"usage\", \"project_id\"], {:name=>\"index_internal_ids_on_usage_and_project_id\", :unique=>true, :using=>:btree})\n -> 0.0073s\n-- create_table(\"issue_assignees\", {:id=>false, :force=>:cascade})\n -> 0.0127s\n-- add_index(\"issue_assignees\", [\"issue_id\", \"user_id\"], {:name=>\"index_issue_assignees_on_issue_id_and_user_id\", :unique=>true, :using=>:btree})\n -> 0.0110s\n-- add_index(\"issue_assignees\", [\"user_id\"], {:name=>\"index_issue_assignees_on_user_id\", :using=>:btree})\n -> 0.0079s\n-- create_table(\"issue_metrics\", {:force=>:cascade})\n -> 0.0098s\n-- add_index(\"issue_metrics\", [\"issue_id\"], {:name=>\"index_issue_metrics\", :using=>:btree})\n -> 0.0053s\n-- create_table(\"issues\", {:force=>:cascade})\n -> 0.0090s\n-- add_index(\"issues\", [\"author_id\"], {:name=>\"index_issues_on_author_id\", :using=>:btree})\n -> 0.0056s\n-- add_index(\"issues\", [\"confidential\"], {:name=>\"index_issues_on_confidential\", :using=>:btree})\n -> 0.0055s\n-- add_index(\"issues\", [\"description\"], {:name=>\"index_issues_on_description_trigram\", :using=>:gin, :opclasses=>{\"description\"=>\"gin_trgm_ops\"}})\n -> 0.0006s\n-- add_index(\"issues\", [\"milestone_id\"], {:name=>\"index_issues_on_milestone_id\", :using=>:btree})\n -> 0.0061s\n-- add_index(\"issues\", [\"moved_to_id\"], {:name=>\"index_issues_on_moved_to_id\", :where=>\"(moved_to_id IS NOT NULL)\", :using=>:btree})\n -> 0.0051s\n-- add_index(\"issues\", [\"project_id\", \"created_at\", \"id\", \"state\"], {:name=>\"index_issues_on_project_id_and_created_at_and_id_and_state\", :using=>:btree})\n -> 0.0069s\n-- add_index(\"issues\", [\"project_id\", \"due_date\", \"id\", \"state\"], {:name=>\"idx_issues_on_project_id_and_due_date_and_id_and_state_partial\", :where=>\"(due_date IS NOT NULL)\", :using=>:btree})\n -> 0.0073s\n-- add_index(\"issues\", [\"project_id\", \"iid\"], {:name=>\"index_issues_on_project_id_and_iid\", :unique=>true, :using=>:btree})\n -> 0.0060s\n-- add_index(\"issues\", [\"project_id\", \"updated_at\", \"id\", \"state\"], {:name=>\"index_issues_on_project_id_and_updated_at_and_id_and_state\", :using=>:btree})\n -> 0.0094s\n-- add_index(\"issues\", [\"relative_position\"], {:name=>\"index_issues_on_relative_position\", :using=>:btree})\n -> 0.0070s\n-- add_index(\"issues\", [\"state\"], {:name=>\"index_issues_on_state\", :using=>:btree})\n -> 0.0078s\n-- add_index(\"issues\", [\"title\"], {:name=>\"index_issues_on_title_trigram\", :using=>:gin, :opclasses=>{\"title\"=>\"gin_trgm_ops\"}})\n -> 0.0007s\n-- add_index(\"issues\", [\"updated_at\"], {:name=>\"index_issues_on_updated_at\", :using=>:btree})\n -> 0.0068s\n-- add_index(\"issues\", [\"updated_by_id\"], {:name=>\"index_issues_on_updated_by_id\", :where=>\"(updated_by_id IS NOT NULL)\", :using=>:btree})\n -> 0.0066s\n-- create_table(\"keys\", {:force=>:cascade})\n -> 0.0087s\n-- add_index(\"keys\", [\"fingerprint\"], {:name=>\"index_keys_on_fingerprint\", :unique=>true, :using=>:btree})\n -> 0.0066s\n-- add_index(\"keys\", [\"user_id\"], {:name=>\"index_keys_on_user_id\", :using=>:btree})\n -> 0.0063s\n-- create_table(\"label_links\", {:force=>:cascade})\n -> 0.0073s\n-- add_index(\"label_links\", [\"label_id\"], {:name=>\"index_label_links_on_label_id\", :using=>:btree})\n -> 0.0050s\n-- add_index(\"label_links\", [\"target_id\", \"target_type\"], {:name=>\"index_label_links_on_target_id_and_target_type\", :using=>:btree})\n -> 0.0062s\n-- create_table(\"label_priorities\", {:force=>:cascade})\n -> 0.0073s\n-- add_index(\"label_priorities\", [\"priority\"], {:name=>\"index_label_priorities_on_priority\", :using=>:btree})\n -> 0.0058s\n-- add_index(\"label_priorities\", [\"project_id\", \"label_id\"], {:name=>\"index_label_priorities_on_project_id_and_label_id\", :unique=>true, :using=>:btree})\n -> 0.0056s\n-- create_table(\"labels\", {:force=>:cascade})\n -> 0.0087s\n-- add_index(\"labels\", [\"group_id\", \"project_id\", \"title\"], {:name=>\"index_labels_on_group_id_and_project_id_and_title\", :unique=>true, :using=>:btree})\n -> 0.0074s\n-- add_index(\"labels\", [\"project_id\"], {:name=>\"index_labels_on_project_id\", :using=>:btree})\n -> 0.0061s\n-- add_index(\"labels\", [\"template\"], {:name=>\"index_labels_on_template\", :where=>\"template\", :using=>:btree})\n -> 0.0060s\n-- add_index(\"labels\", [\"title\"], {:name=>\"index_labels_on_title\", :using=>:btree})\n -> 0.0076s\n-- add_index(\"labels\", [\"type\", \"project_id\"], {:name=>\"index_labels_on_type_and_project_id\", :using=>:btree})\n -> 0.0061s\n-- create_table(\"lfs_file_locks\", {:force=>:cascade})\n -> 0.0078s\n-- add_index(\"lfs_file_locks\", [\"project_id\", \"path\"], {:name=>\"index_lfs_file_locks_on_project_id_and_path\", :unique=>true, :using=>:btree})\n -> 0.0067s\n-- add_index(\"lfs_file_locks\", [\"user_id\"], {:name=>\"index_lfs_file_locks_on_user_id\", :using=>:btree})\n -> 0.0060s\n-- create_table(\"lfs_objects\", {:force=>:cascade})\n -> 0.0109s\n-- add_index(\"lfs_objects\", [\"oid\"], {:name=>\"index_lfs_objects_on_oid\", :unique=>true, :using=>:btree})\n -> 0.0059s\n-- create_table(\"lfs_objects_projects\", {:force=>:cascade})\n -> 0.0091s\n-- add_index(\"lfs_objects_projects\", [\"project_id\"], {:name=>\"index_lfs_objects_projects_on_project_id\", :using=>:btree})\n -> 0.0060s\n-- create_table(\"lists\", {:force=>:cascade})\n -> 0.0115s\n-- add_index(\"lists\", [\"board_id\", \"label_id\"], {:name=>\"index_lists_on_board_id_and_label_id\", :unique=>true, :using=>:btree})\n -> 0.0055s\n-- add_index(\"lists\", [\"label_id\"], {:name=>\"index_lists_on_label_id\", :using=>:btree})\n -> 0.0055s\n-- create_table(\"members\", {:force=>:cascade})\n -> 0.0140s\n-- add_index(\"members\", [\"access_level\"], {:name=>\"index_members_on_access_level\", :using=>:btree})\n -> 0.0067s\n-- add_index(\"members\", [\"invite_token\"], {:name=>\"index_members_on_invite_token\", :unique=>true, :using=>:btree})\n -> 0.0069s\n-- add_index(\"members\", [\"requested_at\"], {:name=>\"index_members_on_requested_at\", :using=>:btree})\n -> 0.0057s\n-- add_index(\"members\", [\"source_id\", \"source_type\"], {:name=>\"index_members_on_source_id_and_source_type\", :using=>:btree})\n -> 0.0057s\n-- add_index(\"members\", [\"user_id\"], {:name=>\"index_members_on_user_id\", :using=>:btree})\n -> 0.0073s\n-- create_table(\"merge_request_diff_commits\", {:id=>false, :force=>:cascade})\n -> 0.0087s\n-- add_index(\"merge_request_diff_commits\", [\"merge_request_diff_id\", \"relative_order\"], {:name=>\"index_merge_request_diff_commits_on_mr_diff_id_and_order\", :unique=>true, :using=>:btree})\n -> 0.0151s\n-- add_index(\"merge_request_diff_commits\", [\"sha\"], {:name=>\"index_merge_request_diff_commits_on_sha\", :using=>:btree})\n -> 0.0057s\n-- create_table(\"merge_request_diff_files\", {:id=>false, :force=>:cascade})\n -> 0.0094s\n-- add_index(\"merge_request_diff_files\", [\"merge_request_diff_id\", \"relative_order\"], {:name=>\"index_merge_request_diff_files_on_mr_diff_id_and_order\", :unique=>true, :using=>:btree})\n -> 0.0138s\n-- create_table(\"merge_request_diffs\", {:force=>:cascade})\n -> 0.0077s\n-- add_index(\"merge_request_diffs\", [\"merge_request_id\", \"id\"], {:name=>\"index_merge_request_diffs_on_merge_request_id_and_id\", :using=>:btree})\n -> 0.0060s\n-- create_table(\"merge_request_metrics\", {:force=>:cascade})\n -> 0.0098s\n-- add_index(\"merge_request_metrics\", [\"first_deployed_to_production_at\"], {:name=>\"index_merge_request_metrics_on_first_deployed_to_production_at\", :using=>:btree})\n -> 0.0060s\n-- add_index(\"merge_request_metrics\", [\"merge_request_id\"], {:name=>\"index_merge_request_metrics\", :using=>:btree})\n -> 0.0050s\n-- add_index(\"merge_request_metrics\", [\"pipeline_id\"], {:name=>\"index_merge_request_metrics_on_pipeline_id\", :using=>:btree})\n -> 0.0045s\n-- create_table(\"merge_requests\", {:force=>:cascade})\n -> 0.0066s\n-- add_index(\"merge_requests\", [\"assignee_id\"], {:name=>\"index_merge_requests_on_assignee_id\", :using=>:btree})\n -> 0.0072s\n-- add_index(\"merge_requests\", [\"author_id\"], {:name=>\"index_merge_requests_on_author_id\", :using=>:btree})\n -> 0.0050s\n-- add_index(\"merge_requests\", [\"created_at\"], {:name=>\"index_merge_requests_on_created_at\", :using=>:btree})\n -> 0.0053s\n-- add_index(\"merge_requests\", [\"description\"], {:name=>\"index_merge_requests_on_description_trigram\", :using=>:gin, :opclasses=>{\"description\"=>\"gin_trgm_ops\"}})\n -> 0.0008s\n-- add_index(\"merge_requests\", [\"head_pipeline_id\"], {:name=>\"index_merge_requests_on_head_pipeline_id\", :using=>:btree})\n -> 0.0053s\n-- add_index(\"merge_requests\", [\"latest_merge_request_diff_id\"], {:name=>\"index_merge_requests_on_latest_merge_request_diff_id\", :using=>:btree})\n -> 0.0048s\n-- add_index(\"merge_requests\", [\"merge_user_id\"], {:name=>\"index_merge_requests_on_merge_user_id\", :where=>\"(merge_user_id IS NOT NULL)\", :using=>:btree})\n -> 0.0051s\n-- add_index(\"merge_requests\", [\"milestone_id\"], {:name=>\"index_merge_requests_on_milestone_id\", :using=>:btree})\n -> 0.0055s\n-- add_index(\"merge_requests\", [\"source_branch\"], {:name=>\"index_merge_requests_on_source_branch\", :using=>:btree})\n -> 0.0055s\n-- add_index(\"merge_requests\", [\"source_project_id\", \"source_branch\"], {:name=>\"index_merge_requests_on_source_project_and_branch_state_opened\", :where=>\"((state)::text = 'opened'::text)\", :using=>:btree})\n -> 0.0061s\n-- add_index(\"merge_requests\", [\"source_project_id\", \"source_branch\"], {:name=>\"index_merge_requests_on_source_project_id_and_source_branch\", :using=>:btree})\n -> 0.0068s\n-- add_index(\"merge_requests\", [\"target_branch\"], {:name=>\"index_merge_requests_on_target_branch\", :using=>:btree})\n -> 0.0054s\n-- add_index(\"merge_requests\", [\"target_project_id\", \"iid\"], {:name=>\"index_merge_requests_on_target_project_id_and_iid\", :unique=>true, :using=>:btree})\n -> 0.0061s\n-- add_index(\"merge_requests\", [\"target_project_id\", \"merge_commit_sha\", \"id\"], {:name=>\"index_merge_requests_on_tp_id_and_merge_commit_sha_and_id\", :using=>:btree})\n -> 0.0077s\n-- add_index(\"merge_requests\", [\"title\"], {:name=>\"index_merge_requests_on_title\", :using=>:btree})\n -> 0.0105s\n-- add_index(\"merge_requests\", [\"title\"], {:name=>\"index_merge_requests_on_title_trigram\", :using=>:gin, :opclasses=>{\"title\"=>\"gin_trgm_ops\"}})\n -> 0.0008s\n-- add_index(\"merge_requests\", [\"updated_by_id\"], {:name=>\"index_merge_requests_on_updated_by_id\", :where=>\"(updated_by_id IS NOT NULL)\", :using=>:btree})\n -> 0.0074s\n-- create_table(\"merge_requests_closing_issues\", {:force=>:cascade})\n -> 0.0125s\n-- add_index(\"merge_requests_closing_issues\", [\"issue_id\"], {:name=>\"index_merge_requests_closing_issues_on_issue_id\", :using=>:btree})\n -> 0.0064s\n-- add_index(\"merge_requests_closing_issues\", [\"merge_request_id\"], {:name=>\"index_merge_requests_closing_issues_on_merge_request_id\", :using=>:btree})\n -> 0.0061s\n-- create_table(\"milestones\", {:force=>:cascade})\n -> 0.0064s\n-- add_index(\"milestones\", [\"description\"], {:name=>\"index_milestones_on_description_trigram\", :using=>:gin, :opclasses=>{\"description\"=>\"gin_trgm_ops\"}})\n -> 0.0007s\n-- add_index(\"milestones\", [\"due_date\"], {:name=>\"index_milestones_on_due_date\", :using=>:btree})\n -> 0.0053s\n-- add_index(\"milestones\", [\"group_id\"], {:name=>\"index_milestones_on_group_id\", :using=>:btree})\n -> 0.0068s\n-- add_index(\"milestones\", [\"project_id\", \"iid\"], {:name=>\"index_milestones_on_project_id_and_iid\", :unique=>true, :using=>:btree})\n -> 0.0057s\n-- add_index(\"milestones\", [\"title\"], {:name=>\"index_milestones_on_title\", :using=>:btree})\n -> 0.0051s\n-- add_index(\"milestones\", [\"title\"], {:name=>\"index_milestones_on_title_trigram\", :using=>:gin, :opclasses=>{\"title\"=>\"gin_trgm_ops\"}})\n -> 0.0006s\n-- create_table(\"namespaces\", {:force=>:cascade})\n -> 0.0083s\n-- add_index(\"namespaces\", [\"created_at\"], {:name=>\"index_namespaces_on_created_at\", :using=>:btree})\n -> 0.0061s\n-- add_index(\"namespaces\", [\"name\", \"parent_id\"], {:name=>\"index_namespaces_on_name_and_parent_id\", :unique=>true, :using=>:btree})\n -> 0.0062s\n-- add_index(\"namespaces\", [\"name\"], {:name=>\"index_namespaces_on_name_trigram\", :using=>:gin, :opclasses=>{\"name\"=>\"gin_trgm_ops\"}})\n -> 0.0006s\n-- add_index(\"namespaces\", [\"owner_id\"], {:name=>\"index_namespaces_on_owner_id\", :using=>:btree})\n -> 0.0061s\n-- add_index(\"namespaces\", [\"parent_id\", \"id\"], {:name=>\"index_namespaces_on_parent_id_and_id\", :unique=>true, :using=>:btree})\n -> 0.0072s\n-- add_index(\"namespaces\", [\"path\"], {:name=>\"index_namespaces_on_path\", :using=>:btree})\n -> 0.0056s\n-- add_index(\"namespaces\", [\"path\"], {:name=>\"index_namespaces_on_path_trigram\", :using=>:gin, :opclasses=>{\"path\"=>\"gin_trgm_ops\"}})\n -> 0.0006s\n-- add_index(\"namespaces\", [\"require_two_factor_authentication\"], {:name=>\"index_namespaces_on_require_two_factor_authentication\", :using=>:btree})\n -> 0.0061s\n-- add_index(\"namespaces\", [\"type\"], {:name=>\"index_namespaces_on_type\", :using=>:btree})\n -> 0.0055s\n-- create_table(\"notes\", {:force=>:cascade})\n -> 0.0092s\n-- add_index(\"notes\", [\"author_id\"], {:name=>\"index_notes_on_author_id\", :using=>:btree})\n -> 0.0072s\n-- add_index(\"notes\", [\"commit_id\"], {:name=>\"index_notes_on_commit_id\", :using=>:btree})\n -> 0.0057s\n-- add_index(\"notes\", [\"created_at\"], {:name=>\"index_notes_on_created_at\", :using=>:btree})\n -> 0.0065s\n-- add_index(\"notes\", [\"discussion_id\"], {:name=>\"index_notes_on_discussion_id\", :using=>:btree})\n -> 0.0064s\n-- add_index(\"notes\", [\"line_code\"], {:name=>\"index_notes_on_line_code\", :using=>:btree})\n -> 0.0078s\n-- add_index(\"notes\", [\"note\"], {:name=>\"index_notes_on_note_trigram\", :using=>:gin, :opclasses=>{\"note\"=>\"gin_trgm_ops\"}})\n -> 0.0006s\n-- add_index(\"notes\", [\"noteable_id\", \"noteable_type\"], {:name=>\"index_notes_on_noteable_id_and_noteable_type\", :using=>:btree})\n -> 0.0102s\n-- add_index(\"notes\", [\"noteable_type\"], {:name=>\"index_notes_on_noteable_type\", :using=>:btree})\n -> 0.0092s\n-- add_index(\"notes\", [\"project_id\", \"noteable_type\"], {:name=>\"index_notes_on_project_id_and_noteable_type\", :using=>:btree})\n -> 0.0082s\n-- add_index(\"notes\", [\"updated_at\"], {:name=>\"index_notes_on_updated_at\", :using=>:btree})\n -> 0.0062s\n-- create_table(\"notification_settings\", {:force=>:cascade})\n -> 0.0088s\n-- add_index(\"notification_settings\", [\"source_id\", \"source_type\"], {:name=>\"index_notification_settings_on_source_id_and_source_type\", :using=>:btree})\n -> 0.0405s\n-- add_index(\"notification_settings\", [\"user_id\", \"source_id\", \"source_type\"], {:name=>\"index_notifications_on_user_id_and_source_id_and_source_type\", :unique=>true, :using=>:btree})\n -> 0.0677s\n-- add_index(\"notification_settings\", [\"user_id\"], {:name=>\"index_notification_settings_on_user_id\", :using=>:btree})\n -> 0.1199s\n-- create_table(\"oauth_access_grants\", {:force=>:cascade})\n -> 0.0140s\n-- add_index(\"oauth_access_grants\", [\"token\"], {:name=>\"index_oauth_access_grants_on_token\", :unique=>true, :using=>:btree})\n -> 0.0076s\n-- create_table(\"oauth_access_tokens\", {:force=>:cascade})\n -> 0.0167s\n-- add_index(\"oauth_access_tokens\", [\"refresh_token\"], {:name=>\"index_oauth_access_tokens_on_refresh_token\", :unique=>true, :using=>:btree})\n -> 0.0098s\n-- add_index(\"oauth_access_tokens\", [\"resource_owner_id\"], {:name=>\"index_oauth_access_tokens_on_resource_owner_id\", :using=>:btree})\n -> 0.0074s\n-- add_index(\"oauth_access_tokens\", [\"token\"], {:name=>\"index_oauth_access_tokens_on_token\", :unique=>true, :using=>:btree})\n -> 0.0078s\n-- create_table(\"oauth_applications\", {:force=>:cascade})\n -> 0.0112s\n-- add_index(\"oauth_applications\", [\"owner_id\", \"owner_type\"], {:name=>\"index_oauth_applications_on_owner_id_and_owner_type\", :using=>:btree})\n -> 0.0079s\n-- add_index(\"oauth_applications\", [\"uid\"], {:name=>\"index_oauth_applications_on_uid\", :unique=>true, :using=>:btree})\n -> 0.0114s\n-- create_table(\"oauth_openid_requests\", {:force=>:cascade})\n -> 0.0102s\n-- create_table(\"pages_domains\", {:force=>:cascade})\n -> 0.0102s\n-- add_index(\"pages_domains\", [\"domain\"], {:name=>\"index_pages_domains_on_domain\", :unique=>true, :using=>:btree})\n -> 0.0067s\n-- add_index(\"pages_domains\", [\"project_id\", \"enabled_until\"], {:name=>\"index_pages_domains_on_project_id_and_enabled_until\", :using=>:btree})\n -> 0.0114s\n-- add_index(\"pages_domains\", [\"project_id\"], {:name=>\"index_pages_domains_on_project_id\", :using=>:btree})\n -> 0.0066s\n-- add_index(\"pages_domains\", [\"verified_at\", \"enabled_until\"], {:name=>\"index_pages_domains_on_verified_at_and_enabled_until\", :using=>:btree})\n -> 0.0073s\n-- add_index(\"pages_domains\", [\"verified_at\"], {:name=>\"index_pages_domains_on_verified_at\", :using=>:btree})\n -> 0.0063s\n-- create_table(\"personal_access_tokens\", {:force=>:cascade})\n -> 0.0084s\n-- add_index(\"personal_access_tokens\", [\"token\"], {:name=>\"index_personal_access_tokens_on_token\", :unique=>true, :using=>:btree})\n -> 0.0075s\n-- add_index(\"personal_access_tokens\", [\"user_id\"], {:name=>\"index_personal_access_tokens_on_user_id\", :using=>:btree})\n -> 0.0066s\n-- create_table(\"project_authorizations\", {:id=>false, :force=>:cascade})\n -> 0.0087s\n-- add_index(\"project_authorizations\", [\"project_id\"], {:name=>\"index_project_authorizations_on_project_id\", :using=>:btree})\n -> 0.0056s\n-- add_index(\"project_authorizations\", [\"user_id\", \"project_id\", \"access_level\"], {:name=>\"index_project_authorizations_on_user_id_project_id_access_level\", :unique=>true, :using=>:btree})\n -> 0.0075s\n-- create_table(\"project_auto_devops\", {:force=>:cascade})\n -> 0.0079s\n-- add_index(\"project_auto_devops\", [\"project_id\"], {:name=>\"index_project_auto_devops_on_project_id\", :unique=>true, :using=>:btree})\n -> 0.0067s\n-- create_table(\"project_custom_attributes\", {:force=>:cascade})\n -> 0.0071s\n-- add_index(\"project_custom_attributes\", [\"key\", \"value\"], {:name=>\"index_project_custom_attributes_on_key_and_value\", :using=>:btree})\n -> 0.0060s\n-- add_index(\"project_custom_attributes\", [\"project_id\", \"key\"], {:name=>\"index_project_custom_attributes_on_project_id_and_key\", :unique=>true, :using=>:btree})\n -> 0.0069s\n-- create_table(\"project_features\", {:force=>:cascade})\n -> 0.0100s\n-- add_index(\"project_features\", [\"project_id\"], {:name=>\"index_project_features_on_project_id\", :using=>:btree})\n -> 0.0069s\n-- create_table(\"project_group_links\", {:force=>:cascade})\n -> 0.0117s\n-- add_index(\"project_group_links\", [\"group_id\"], {:name=>\"index_project_group_links_on_group_id\", :using=>:btree})\n -> 0.0121s\n-- add_index(\"project_group_links\", [\"project_id\"], {:name=>\"index_project_group_links_on_project_id\", :using=>:btree})\n -> 0.0076s\n-- create_table(\"project_import_data\", {:force=>:cascade})\n -> 0.0084s\n-- add_index(\"project_import_data\", [\"project_id\"], {:name=>\"index_project_import_data_on_project_id\", :using=>:btree})\n -> 0.0058s\n-- create_table(\"project_statistics\", {:force=>:cascade})\n -> 0.0075s\n-- add_index(\"project_statistics\", [\"namespace_id\"], {:name=>\"index_project_statistics_on_namespace_id\", :using=>:btree})\n -> 0.0054s\n-- add_index(\"project_statistics\", [\"project_id\"], {:name=>\"index_project_statistics_on_project_id\", :unique=>true, :using=>:btree})\n -> 0.0054s\n-- create_table(\"projects\", {:force=>:cascade})\n -> 0.0077s\n-- add_index(\"projects\", [\"ci_id\"], {:name=>\"index_projects_on_ci_id\", :using=>:btree})\n -> 0.0070s\n-- add_index(\"projects\", [\"created_at\"], {:name=>\"index_projects_on_created_at\", :using=>:btree})\n -> 0.0060s\n-- add_index(\"projects\", [\"creator_id\"], {:name=>\"index_projects_on_creator_id\", :using=>:btree})\n -> 0.0071s\n-- add_index(\"projects\", [\"description\"], {:name=>\"index_projects_on_description_trigram\", :using=>:gin, :opclasses=>{\"description\"=>\"gin_trgm_ops\"}})\n -> 0.0009s\n-- add_index(\"projects\", [\"id\"], {:name=>\"index_projects_on_id_partial_for_visibility\", :unique=>true, :where=>\"(visibility_level = ANY (ARRAY[10, 20]))\", :using=>:btree})\n -> 0.0062s\n-- add_index(\"projects\", [\"last_activity_at\"], {:name=>\"index_projects_on_last_activity_at\", :using=>:btree})\n -> 0.0060s\n-- add_index(\"projects\", [\"last_repository_check_failed\"], {:name=>\"index_projects_on_last_repository_check_failed\", :using=>:btree})\n -> 0.0063s\n-- add_index(\"projects\", [\"last_repository_updated_at\"], {:name=>\"index_projects_on_last_repository_updated_at\", :using=>:btree})\n -> 0.0633s\n-- add_index(\"projects\", [\"name\"], {:name=>\"index_projects_on_name_trigram\", :using=>:gin, :opclasses=>{\"name\"=>\"gin_trgm_ops\"}})\n -> 0.0012s\n-- add_index(\"projects\", [\"namespace_id\"], {:name=>\"index_projects_on_namespace_id\", :using=>:btree})\n -> 0.0167s\n-- add_index(\"projects\", [\"path\"], {:name=>\"index_projects_on_path\", :using=>:btree})\n -> 0.0222s\n-- add_index(\"projects\", [\"path\"], {:name=>\"index_projects_on_path_trigram\", :using=>:gin, :opclasses=>{\"path\"=>\"gin_trgm_ops\"}})\n -> 0.0010s\n-- add_index(\"projects\", [\"pending_delete\"], {:name=>\"index_projects_on_pending_delete\", :using=>:btree})\n -> 0.0229s\n-- add_index(\"projects\", [\"repository_storage\"], {:name=>\"index_projects_on_repository_storage\", :using=>:btree})\n -> 0.0173s\n-- add_index(\"projects\", [\"runners_token\"], {:name=>\"index_projects_on_runners_token\", :using=>:btree})\n -> 0.0167s\n-- add_index(\"projects\", [\"star_count\"], {:name=>\"index_projects_on_star_count\", :using=>:btree})\n -> 0.0491s\n-- add_index(\"projects\", [\"visibility_level\"], {:name=>\"index_projects_on_visibility_level\", :using=>:btree})\n -> 0.0598s\n-- create_table(\"protected_branch_merge_access_levels\", {:force=>:cascade})\n -> 0.1964s\n-- add_index(\"protected_branch_merge_access_levels\", [\"protected_branch_id\"], {:name=>\"index_protected_branch_merge_access\", :using=>:btree})\n -> 0.1112s\n-- create_table(\"protected_branch_push_access_levels\", {:force=>:cascade})\n -> 0.0195s\n-- add_index(\"protected_branch_push_access_levels\", [\"protected_branch_id\"], {:name=>\"index_protected_branch_push_access\", :using=>:btree})\n -> 0.0069s\n-- create_table(\"protected_branches\", {:force=>:cascade})\n -> 0.0113s\n-- add_index(\"protected_branches\", [\"project_id\"], {:name=>\"index_protected_branches_on_project_id\", :using=>:btree})\n -> 0.0071s\n-- create_table(\"protected_tag_create_access_levels\", {:force=>:cascade})\n -> 0.0180s\n-- add_index(\"protected_tag_create_access_levels\", [\"protected_tag_id\"], {:name=>\"index_protected_tag_create_access\", :using=>:btree})\n -> 0.0068s\n-- add_index(\"protected_tag_create_access_levels\", [\"user_id\"], {:name=>\"index_protected_tag_create_access_levels_on_user_id\", :using=>:btree})\n -> 0.0077s\n-- create_table(\"protected_tags\", {:force=>:cascade})\n -> 0.0115s\n-- add_index(\"protected_tags\", [\"project_id\"], {:name=>\"index_protected_tags_on_project_id\", :using=>:btree})\n -> 0.0081s\n-- create_table(\"push_event_payloads\", {:id=>false, :force=>:cascade})\n -> 0.0108s\n-- add_index(\"push_event_payloads\", [\"event_id\"], {:name=>\"index_push_event_payloads_on_event_id\", :unique=>true, :using=>:btree})\n -> 0.0189s\n-- create_table(\"redirect_routes\", {:force=>:cascade})\n -> 0.0106s\n-- add_index(\"redirect_routes\", [\"path\"], {:name=>\"index_redirect_routes_on_path\", :unique=>true, :using=>:btree})\n -> 0.0075s\n-- add_index(\"redirect_routes\", [\"source_type\", \"source_id\"], {:name=>\"index_redirect_routes_on_source_type_and_source_id\", :using=>:btree})\n -> 0.0099s\n-- create_table(\"releases\", {:force=>:cascade})\n -> 0.0126s\n-- add_index(\"releases\", [\"project_id\", \"tag\"], {:name=>\"index_releases_on_project_id_and_tag\", :using=>:btree})\n -> 0.0066s\n-- add_index(\"releases\", [\"project_id\"], {:name=>\"index_releases_on_project_id\", :using=>:btree})\n -> 0.0060s\n-- create_table(\"routes\", {:force=>:cascade})\n -> 0.0091s\n-- add_index(\"routes\", [\"path\"], {:name=>\"index_routes_on_path\", :unique=>true, :using=>:btree})\n -> 0.0073s\n-- add_index(\"routes\", [\"path\"], {:name=>\"index_routes_on_path_text_pattern_ops\", :using=>:btree, :opclasses=>{\"path\"=>\"varchar_pattern_ops\"}})\n -> 0.0004s\n-- add_index(\"routes\", [\"source_type\", \"source_id\"], {:name=>\"index_routes_on_source_type_and_source_id\", :unique=>true, :using=>:btree})\n -> 0.0111s\n-- create_table(\"sent_notifications\", {:force=>:cascade})\n -> 0.0093s\n-- add_index(\"sent_notifications\", [\"reply_key\"], {:name=>\"index_sent_notifications_on_reply_key\", :unique=>true, :using=>:btree})\n -> 0.0060s\n-- create_table(\"services\", {:force=>:cascade})\n -> 0.0099s\n-- add_index(\"services\", [\"project_id\"], {:name=>\"index_services_on_project_id\", :using=>:btree})\n -> 0.0068s\n-- add_index(\"services\", [\"template\"], {:name=>\"index_services_on_template\", :using=>:btree})\n -> 0.0076s\n-- create_table(\"snippets\", {:force=>:cascade})\n -> 0.0073s\n-- add_index(\"snippets\", [\"author_id\"], {:name=>\"index_snippets_on_author_id\", :using=>:btree})\n -> 0.0055s\n-- add_index(\"snippets\", [\"file_name\"], {:name=>\"index_snippets_on_file_name_trigram\", :using=>:gin, :opclasses=>{\"file_name\"=>\"gin_trgm_ops\"}})\n -> 0.0006s\n-- add_index(\"snippets\", [\"project_id\"], {:name=>\"index_snippets_on_project_id\", :using=>:btree})\n -> 0.0058s\n-- add_index(\"snippets\", [\"title\"], {:name=>\"index_snippets_on_title_trigram\", :using=>:gin, :opclasses=>{\"title\"=>\"gin_trgm_ops\"}})\n -> 0.0005s\n-- add_index(\"snippets\", [\"updated_at\"], {:name=>\"index_snippets_on_updated_at\", :using=>:btree})\n -> 0.0100s\n-- add_index(\"snippets\", [\"visibility_level\"], {:name=>\"index_snippets_on_visibility_level\", :using=>:btree})\n -> 0.0091s\n-- create_table(\"spam_logs\", {:force=>:cascade})\n -> 0.0129s\n-- create_table(\"subscriptions\", {:force=>:cascade})\n -> 0.0094s\n-- add_index(\"subscriptions\", [\"subscribable_id\", \"subscribable_type\", \"user_id\", \"project_id\"], {:name=>\"index_subscriptions_on_subscribable_and_user_id_and_project_id\", :unique=>true, :using=>:btree})\n -> 0.0107s\n-- create_table(\"system_note_metadata\", {:force=>:cascade})\n -> 0.0138s\n-- add_index(\"system_note_metadata\", [\"note_id\"], {:name=>\"index_system_note_metadata_on_note_id\", :unique=>true, :using=>:btree})\n -> 0.0060s\n-- create_table(\"taggings\", {:force=>:cascade})\n -> 0.0121s\n-- add_index(\"taggings\", [\"tag_id\", \"taggable_id\", \"taggable_type\", \"context\", \"tagger_id\", \"tagger_type\"], {:name=>\"taggings_idx\", :unique=>true, :using=>:btree})\n -> 0.0078s\n-- add_index(\"taggings\", [\"tag_id\"], {:name=>\"index_taggings_on_tag_id\", :using=>:btree})\n -> 0.0058s\n-- add_index(\"taggings\", [\"taggable_id\", \"taggable_type\", \"context\"], {:name=>\"index_taggings_on_taggable_id_and_taggable_type_and_context\", :using=>:btree})\n -> 0.0059s\n-- add_index(\"taggings\", [\"taggable_id\", \"taggable_type\"], {:name=>\"index_taggings_on_taggable_id_and_taggable_type\", :using=>:btree})\n -> 0.0056s\n-- create_table(\"tags\", {:force=>:cascade})\n -> 0.0063s\n-- add_index(\"tags\", [\"name\"], {:name=>\"index_tags_on_name\", :unique=>true, :using=>:btree})\n -> 0.0055s\n-- create_table(\"timelogs\", {:force=>:cascade})\n -> 0.0061s\n-- add_index(\"timelogs\", [\"issue_id\"], {:name=>\"index_timelogs_on_issue_id\", :using=>:btree})\n -> 0.0063s\n-- add_index(\"timelogs\", [\"merge_request_id\"], {:name=>\"index_timelogs_on_merge_request_id\", :using=>:btree})\n -> 0.0052s\n-- add_index(\"timelogs\", [\"user_id\"], {:name=>\"index_timelogs_on_user_id\", :using=>:btree})\n -> 0.0055s\n-- create_table(\"todos\", {:force=>:cascade})\n -> 0.0065s\n-- add_index(\"todos\", [\"author_id\"], {:name=>\"index_todos_on_author_id\", :using=>:btree})\n -> 0.0081s\n-- add_index(\"todos\", [\"commit_id\"], {:name=>\"index_todos_on_commit_id\", :using=>:btree})\n -> 0.0085s\n-- add_index(\"todos\", [\"note_id\"], {:name=>\"index_todos_on_note_id\", :using=>:btree})\n -> 0.0083s\n-- add_index(\"todos\", [\"project_id\"], {:name=>\"index_todos_on_project_id\", :using=>:btree})\n -> 0.0094s\n-- add_index(\"todos\", [\"target_type\", \"target_id\"], {:name=>\"index_todos_on_target_type_and_target_id\", :using=>:btree})\n -> 0.0070s\n-- add_index(\"todos\", [\"user_id\", \"id\"], {:name=>\"index_todos_on_user_id_and_id_done\", :where=>\"((state)::text = 'done'::text)\", :using=>:btree})\n -> 0.0099s\n-- add_index(\"todos\", [\"user_id\", \"id\"], {:name=>\"index_todos_on_user_id_and_id_pending\", :where=>\"((state)::text = 'pending'::text)\", :using=>:btree})\n -> 0.0080s\n-- add_index(\"todos\", [\"user_id\"], {:name=>\"index_todos_on_user_id\", :using=>:btree})\n -> 0.0061s\n-- create_table(\"trending_projects\", {:force=>:cascade})\n -> 0.0081s\n-- add_index(\"trending_projects\", [\"project_id\"], {:name=>\"index_trending_projects_on_project_id\", :unique=>true, :using=>:btree})\n -> 0.0046s\n-- create_table(\"u2f_registrations\", {:force=>:cascade})\n -> 0.0063s\n-- add_index(\"u2f_registrations\", [\"key_handle\"], {:name=>\"index_u2f_registrations_on_key_handle\", :using=>:btree})\n -> 0.0052s\n-- add_index(\"u2f_registrations\", [\"user_id\"], {:name=>\"index_u2f_registrations_on_user_id\", :using=>:btree})\n -> 0.0072s\n-- create_table(\"uploads\", {:force=>:cascade})\n -> 0.0067s\n-- add_index(\"uploads\", [\"checksum\"], {:name=>\"index_uploads_on_checksum\", :using=>:btree})\n -> 0.0046s\n-- add_index(\"uploads\", [\"model_id\", \"model_type\"], {:name=>\"index_uploads_on_model_id_and_model_type\", :using=>:btree})\n -> 0.0049s\n-- add_index(\"uploads\", [\"uploader\", \"path\"], {:name=>\"index_uploads_on_uploader_and_path\", :using=>:btree})\n -> 0.0052s\n-- create_table(\"user_agent_details\", {:force=>:cascade})\n -> 0.0059s\n-- add_index(\"user_agent_details\", [\"subject_id\", \"subject_type\"], {:name=>\"index_user_agent_details_on_subject_id_and_subject_type\", :using=>:btree})\n -> 0.0052s\n-- create_table(\"user_callouts\", {:force=>:cascade})\n -> 0.0059s\n-- add_index(\"user_callouts\", [\"user_id\", \"feature_name\"], {:name=>\"index_user_callouts_on_user_id_and_feature_name\", :unique=>true, :using=>:btree})\n -> 0.0094s\n-- add_index(\"user_callouts\", [\"user_id\"], {:name=>\"index_user_callouts_on_user_id\", :using=>:btree})\n -> 0.0064s\n-- create_table(\"user_custom_attributes\", {:force=>:cascade})\n -> 0.0086s\n-- add_index(\"user_custom_attributes\", [\"key\", \"value\"], {:name=>\"index_user_custom_attributes_on_key_and_value\", :using=>:btree})\n -> 0.0080s\n-- add_index(\"user_custom_attributes\", [\"user_id\", \"key\"], {:name=>\"index_user_custom_attributes_on_user_id_and_key\", :unique=>true, :using=>:btree})\n -> 0.0066s\n-- create_table(\"user_interacted_projects\", {:id=>false, :force=>:cascade})\n -> 0.0108s\n-- add_index(\"user_interacted_projects\", [\"project_id\", \"user_id\"], {:name=>\"index_user_interacted_projects_on_project_id_and_user_id\", :unique=>true, :using=>:btree})\n -> 0.0114s\n-- add_index(\"user_interacted_projects\", [\"user_id\"], {:name=>\"index_user_interacted_projects_on_user_id\", :using=>:btree})\n -> 0.0056s\n-- create_table(\"user_synced_attributes_metadata\", {:force=>:cascade})\n -> 0.0115s\n-- add_index(\"user_synced_attributes_metadata\", [\"user_id\"], {:name=>\"index_user_synced_attributes_metadata_on_user_id\", :unique=>true, :using=>:btree})\n -> 0.0054s\n-- create_table(\"users\", {:force=>:cascade})\n -> 0.0111s\n-- add_index(\"users\", [\"admin\"], {:name=>\"index_users_on_admin\", :using=>:btree})\n -> 0.0065s\n-- add_index(\"users\", [\"confirmation_token\"], {:name=>\"index_users_on_confirmation_token\", :unique=>true, :using=>:btree})\n -> 0.0065s\n-- add_index(\"users\", [\"created_at\"], {:name=>\"index_users_on_created_at\", :using=>:btree})\n -> 0.0068s\n-- add_index(\"users\", [\"email\"], {:name=>\"index_users_on_email\", :unique=>true, :using=>:btree})\n -> 0.0066s\n-- add_index(\"users\", [\"email\"], {:name=>\"index_users_on_email_trigram\", :using=>:gin, :opclasses=>{\"email\"=>\"gin_trgm_ops\"}})\n -> 0.0011s\n-- add_index(\"users\", [\"ghost\"], {:name=>\"index_users_on_ghost\", :using=>:btree})\n -> 0.0063s\n-- add_index(\"users\", [\"incoming_email_token\"], {:name=>\"index_users_on_incoming_email_token\", :using=>:btree})\n -> 0.0057s\n-- add_index(\"users\", [\"name\"], {:name=>\"index_users_on_name\", :using=>:btree})\n -> 0.0056s\n-- add_index(\"users\", [\"name\"], {:name=>\"index_users_on_name_trigram\", :using=>:gin, :opclasses=>{\"name\"=>\"gin_trgm_ops\"}})\n -> 0.0011s\n-- add_index(\"users\", [\"reset_password_token\"], {:name=>\"index_users_on_reset_password_token\", :unique=>true, :using=>:btree})\n -> 0.0055s\n-- add_index(\"users\", [\"rss_token\"], {:name=>\"index_users_on_rss_token\", :using=>:btree})\n -> 0.0068s\n-- add_index(\"users\", [\"state\"], {:name=>\"index_users_on_state\", :using=>:btree})\n -> 0.0067s\n-- add_index(\"users\", [\"username\"], {:name=>\"index_users_on_username\", :using=>:btree})\n -> 0.0072s\n-- add_index(\"users\", [\"username\"], {:name=>\"index_users_on_username_trigram\", :using=>:gin, :opclasses=>{\"username\"=>\"gin_trgm_ops\"}})\n -> 0.0012s\n-- create_table(\"users_star_projects\", {:force=>:cascade})\n -> 0.0100s\n-- add_index(\"users_star_projects\", [\"project_id\"], {:name=>\"index_users_star_projects_on_project_id\", :using=>:btree})\n -> 0.0061s\n-- add_index(\"users_star_projects\", [\"user_id\", \"project_id\"], {:name=>\"index_users_star_projects_on_user_id_and_project_id\", :unique=>true, :using=>:btree})\n -> 0.0068s\n-- create_table(\"web_hook_logs\", {:force=>:cascade})\n -> 0.0097s\n-- add_index(\"web_hook_logs\", [\"web_hook_id\"], {:name=>\"index_web_hook_logs_on_web_hook_id\", :using=>:btree})\n -> 0.0057s\n-- create_table(\"web_hooks\", {:force=>:cascade})\n -> 0.0080s\n-- add_index(\"web_hooks\", [\"project_id\"], {:name=>\"index_web_hooks_on_project_id\", :using=>:btree})\n -> 0.0062s\n-- add_index(\"web_hooks\", [\"type\"], {:name=>\"index_web_hooks_on_type\", :using=>:btree})\n -> 0.0065s\n-- add_foreign_key(\"badges\", \"namespaces\", {:column=>\"group_id\", :on_delete=>:cascade})\n -> 0.0158s\n-- add_foreign_key(\"badges\", \"projects\", {:on_delete=>:cascade})\n -> 0.0140s\n-- add_foreign_key(\"boards\", \"namespaces\", {:column=>\"group_id\", :on_delete=>:cascade})\n -> 0.0138s\n-- add_foreign_key(\"boards\", \"projects\", {:name=>\"fk_f15266b5f9\", :on_delete=>:cascade})\n -> 0.0118s\n-- add_foreign_key(\"chat_teams\", \"namespaces\", {:on_delete=>:cascade})\n -> 0.0130s\n-- add_foreign_key(\"ci_build_trace_section_names\", \"projects\", {:on_delete=>:cascade})\n -> 0.0131s\n-- add_foreign_key(\"ci_build_trace_sections\", \"ci_build_trace_section_names\", {:column=>\"section_name_id\", :name=>\"fk_264e112c66\", :on_delete=>:cascade})\n -> 0.0210s\n-- add_foreign_key(\"ci_build_trace_sections\", \"ci_builds\", {:column=>\"build_id\", :name=>\"fk_4ebe41f502\", :on_delete=>:cascade})\n -> 0.0823s\n-- add_foreign_key(\"ci_build_trace_sections\", \"projects\", {:on_delete=>:cascade})\n -> 0.0942s\n-- add_foreign_key(\"ci_builds\", \"ci_pipelines\", {:column=>\"auto_canceled_by_id\", :name=>\"fk_a2141b1522\", :on_delete=>:nullify})\n -> 0.1346s\n-- add_foreign_key(\"ci_builds\", \"ci_stages\", {:column=>\"stage_id\", :name=>\"fk_3a9eaa254d\", :on_delete=>:cascade})\n -> 0.0506s\n-- add_foreign_key(\"ci_builds\", \"projects\", {:name=>\"fk_befce0568a\", :on_delete=>:cascade})\n -> 0.0403s\n-- add_foreign_key(\"ci_builds_metadata\", \"ci_builds\", {:column=>\"build_id\", :on_delete=>:cascade})\n -> 0.0160s\n-- add_foreign_key(\"ci_builds_metadata\", \"projects\", {:on_delete=>:cascade})\n -> 0.0165s\n-- add_foreign_key(\"ci_group_variables\", \"namespaces\", {:column=>\"group_id\", :name=>\"fk_33ae4d58d8\", :on_delete=>:cascade})\n -> 0.0153s\n-- add_foreign_key(\"ci_job_artifacts\", \"ci_builds\", {:column=>\"job_id\", :on_delete=>:cascade})\n -> 0.0160s\n-- add_foreign_key(\"ci_job_artifacts\", \"projects\", {:on_delete=>:cascade})\n -> 0.0278s\n-- add_foreign_key(\"ci_pipeline_schedule_variables\", \"ci_pipeline_schedules\", {:column=>\"pipeline_schedule_id\", :name=>\"fk_41c35fda51\", :on_delete=>:cascade})\n -> 0.0193s\n-- add_foreign_key(\"ci_pipeline_schedules\", \"projects\", {:name=>\"fk_8ead60fcc4\", :on_delete=>:cascade})\n -> 0.0184s\n-- add_foreign_key(\"ci_pipeline_schedules\", \"users\", {:column=>\"owner_id\", :name=>\"fk_9ea99f58d2\", :on_delete=>:nullify})\n -> 0.0158s\n-- add_foreign_key(\"ci_pipeline_variables\", \"ci_pipelines\", {:column=>\"pipeline_id\", :name=>\"fk_f29c5f4380\", :on_delete=>:cascade})\n -> 0.0097s\n-- add_foreign_key(\"ci_pipelines\", \"ci_pipeline_schedules\", {:column=>\"pipeline_schedule_id\", :name=>\"fk_3d34ab2e06\", :on_delete=>:nullify})\n -> 0.0693s\n-- add_foreign_key(\"ci_pipelines\", \"ci_pipelines\", {:column=>\"auto_canceled_by_id\", :name=>\"fk_262d4c2d19\", :on_delete=>:nullify})\n -> 0.1599s\n-- add_foreign_key(\"ci_pipelines\", \"projects\", {:name=>\"fk_86635dbd80\", :on_delete=>:cascade})\n -> 0.1505s\n-- add_foreign_key(\"ci_runner_projects\", \"projects\", {:name=>\"fk_4478a6f1e4\", :on_delete=>:cascade})\n -> 0.0984s\n-- add_foreign_key(\"ci_stages\", \"ci_pipelines\", {:column=>\"pipeline_id\", :name=>\"fk_fb57e6cc56\", :on_delete=>:cascade})\n -> 0.1152s\n-- add_foreign_key(\"ci_stages\", \"projects\", {:name=>\"fk_2360681d1d\", :on_delete=>:cascade})\n -> 0.1062s\n-- add_foreign_key(\"ci_trigger_requests\", \"ci_triggers\", {:column=>\"trigger_id\", :name=>\"fk_b8ec8b7245\", :on_delete=>:cascade})\n -> 0.0455s\n-- add_foreign_key(\"ci_triggers\", \"projects\", {:name=>\"fk_e3e63f966e\", :on_delete=>:cascade})\n -> 0.0725s\n-- add_foreign_key(\"ci_triggers\", \"users\", {:column=>\"owner_id\", :name=>\"fk_e8e10d1964\", :on_delete=>:cascade})\n -> 0.0774s\n-- add_foreign_key(\"ci_variables\", \"projects\", {:name=>\"fk_ada5eb64b3\", :on_delete=>:cascade})\n -> 0.0626s\n-- add_foreign_key(\"cluster_platforms_kubernetes\", \"clusters\", {:on_delete=>:cascade})\n -> 0.0529s\n-- add_foreign_key(\"cluster_projects\", \"clusters\", {:on_delete=>:cascade})\n -> 0.0678s\n-- add_foreign_key(\"cluster_projects\", \"projects\", {:on_delete=>:cascade})\n -> 0.0391s\n-- add_foreign_key(\"cluster_providers_gcp\", \"clusters\", {:on_delete=>:cascade})\n -> 0.0328s\n-- add_foreign_key(\"clusters\", \"users\", {:on_delete=>:nullify})\n -> 0.1266s\n-- add_foreign_key(\"clusters_applications_helm\", \"clusters\", {:on_delete=>:cascade})\n -> 0.0489s\n-- add_foreign_key(\"clusters_applications_ingress\", \"clusters\", {:name=>\"fk_753a7b41c1\", :on_delete=>:cascade})\n -> 0.0565s\n-- add_foreign_key(\"clusters_applications_prometheus\", \"clusters\", {:name=>\"fk_557e773639\", :on_delete=>:cascade})\n -> 0.0174s\n-- add_foreign_key(\"clusters_applications_runners\", \"ci_runners\", {:column=>\"runner_id\", :name=>\"fk_02de2ded36\", :on_delete=>:nullify})\n -> 0.0182s\n-- add_foreign_key(\"clusters_applications_runners\", \"clusters\", {:on_delete=>:cascade})\n -> 0.0208s\n-- add_foreign_key(\"container_repositories\", \"projects\")\n -> 0.0186s\n-- add_foreign_key(\"deploy_keys_projects\", \"projects\", {:name=>\"fk_58a901ca7e\", :on_delete=>:cascade})\n -> 0.0140s\n-- add_foreign_key(\"deployments\", \"projects\", {:name=>\"fk_b9a3851b82\", :on_delete=>:cascade})\n -> 0.0328s\n-- add_foreign_key(\"environments\", \"projects\", {:name=>\"fk_d1c8c1da6a\", :on_delete=>:cascade})\n -> 0.0221s\n-- add_foreign_key(\"events\", \"projects\", {:on_delete=>:cascade})\n -> 0.0212s\n-- add_foreign_key(\"events\", \"users\", {:column=>\"author_id\", :name=>\"fk_edfd187b6f\", :on_delete=>:cascade})\n -> 0.0150s\n-- add_foreign_key(\"fork_network_members\", \"fork_networks\", {:on_delete=>:cascade})\n -> 0.0134s\n-- add_foreign_key(\"fork_network_members\", \"projects\", {:column=>\"forked_from_project_id\", :name=>\"fk_b01280dae4\", :on_delete=>:nullify})\n -> 0.0200s\n-- add_foreign_key(\"fork_network_members\", \"projects\", {:on_delete=>:cascade})\n -> 0.0162s\n-- add_foreign_key(\"fork_networks\", \"projects\", {:column=>\"root_project_id\", :name=>\"fk_e7b436b2b5\", :on_delete=>:nullify})\n -> 0.0138s\n-- add_foreign_key(\"forked_project_links\", \"projects\", {:column=>\"forked_to_project_id\", :name=>\"fk_434510edb0\", :on_delete=>:cascade})\n -> 0.0137s\n-- add_foreign_key(\"gcp_clusters\", \"projects\", {:on_delete=>:cascade})\n -> 0.0148s\n-- add_foreign_key(\"gcp_clusters\", \"services\", {:on_delete=>:nullify})\n -> 0.0216s\n-- add_foreign_key(\"gcp_clusters\", \"users\", {:on_delete=>:nullify})\n -> 0.0156s\n-- add_foreign_key(\"gpg_key_subkeys\", \"gpg_keys\", {:on_delete=>:cascade})\n -> 0.0139s\n-- add_foreign_key(\"gpg_keys\", \"users\", {:on_delete=>:cascade})\n -> 0.0142s\n-- add_foreign_key(\"gpg_signatures\", \"gpg_key_subkeys\", {:on_delete=>:nullify})\n -> 0.0216s\n-- add_foreign_key(\"gpg_signatures\", \"gpg_keys\", {:on_delete=>:nullify})\n -> 0.0211s\n-- add_foreign_key(\"gpg_signatures\", \"projects\", {:on_delete=>:cascade})\n -> 0.0215s\n-- add_foreign_key(\"group_custom_attributes\", \"namespaces\", {:column=>\"group_id\", :on_delete=>:cascade})\n -> 0.0174s\n-- add_foreign_key(\"internal_ids\", \"projects\", {:on_delete=>:cascade})\n -> 0.0143s\n-- add_foreign_key(\"issue_assignees\", \"issues\", {:name=>\"fk_b7d881734a\", :on_delete=>:cascade})\n -> 0.0139s\n-- add_foreign_key(\"issue_assignees\", \"users\", {:name=>\"fk_5e0c8d9154\", :on_delete=>:cascade})\n -> 0.0138s\n-- add_foreign_key(\"issue_metrics\", \"issues\", {:on_delete=>:cascade})\n -> 0.0106s\n-- add_foreign_key(\"issues\", \"issues\", {:column=>\"moved_to_id\", :name=>\"fk_a194299be1\", :on_delete=>:nullify})\n -> 0.0366s\n-- add_foreign_key(\"issues\", \"milestones\", {:name=>\"fk_96b1dd429c\", :on_delete=>:nullify})\n -> 0.0309s\n-- add_foreign_key(\"issues\", \"projects\", {:name=>\"fk_899c8f3231\", :on_delete=>:cascade})\n -> 0.0314s\n-- add_foreign_key(\"issues\", \"users\", {:column=>\"author_id\", :name=>\"fk_05f1e72feb\", :on_delete=>:nullify})\n -> 0.0504s\n-- add_foreign_key(\"issues\", \"users\", {:column=>\"closed_by_id\", :name=>\"fk_c63cbf6c25\", :on_delete=>:nullify})\n -> 0.0428s\n-- add_foreign_key(\"issues\", \"users\", {:column=>\"updated_by_id\", :name=>\"fk_ffed080f01\", :on_delete=>:nullify})\n -> 0.0333s\n-- add_foreign_key(\"label_priorities\", \"labels\", {:on_delete=>:cascade})\n -> 0.0143s\n-- add_foreign_key(\"label_priorities\", \"projects\", {:on_delete=>:cascade})\n -> 0.0160s\n-- add_foreign_key(\"labels\", \"namespaces\", {:column=>\"group_id\", :on_delete=>:cascade})\n -> 0.0176s\n-- add_foreign_key(\"labels\", \"projects\", {:name=>\"fk_7de4989a69\", :on_delete=>:cascade})\n -> 0.0216s\n-- add_foreign_key(\"lfs_file_locks\", \"projects\", {:on_delete=>:cascade})\n -> 0.0144s\n-- add_foreign_key(\"lfs_file_locks\", \"users\", {:on_delete=>:cascade})\n -> 0.0178s\n-- add_foreign_key(\"lists\", \"boards\", {:name=>\"fk_0d3f677137\", :on_delete=>:cascade})\n -> 0.0161s\n-- add_foreign_key(\"lists\", \"labels\", {:name=>\"fk_7a5553d60f\", :on_delete=>:cascade})\n -> 0.0137s\n-- add_foreign_key(\"members\", \"users\", {:name=>\"fk_2e88fb7ce9\", :on_delete=>:cascade})\n -> 0.0171s\n-- add_foreign_key(\"merge_request_diff_commits\", \"merge_request_diffs\", {:on_delete=>:cascade})\n -> 0.0143s\n-- add_foreign_key(\"merge_request_diff_files\", \"merge_request_diffs\", {:on_delete=>:cascade})\n -> 0.0106s\n-- add_foreign_key(\"merge_request_diffs\", \"merge_requests\", {:name=>\"fk_8483f3258f\", :on_delete=>:cascade})\n -> 0.0119s\n-- add_foreign_key(\"merge_request_metrics\", \"ci_pipelines\", {:column=>\"pipeline_id\", :on_delete=>:cascade})\n -> 0.0163s\n-- add_foreign_key(\"merge_request_metrics\", \"merge_requests\", {:on_delete=>:cascade})\n -> 0.0204s\n-- add_foreign_key(\"merge_request_metrics\", \"users\", {:column=>\"latest_closed_by_id\", :name=>\"fk_ae440388cc\", :on_delete=>:nullify})\n -> 0.0196s\n-- add_foreign_key(\"merge_request_metrics\", \"users\", {:column=>\"merged_by_id\", :name=>\"fk_7f28d925f3\", :on_delete=>:nullify})\n -> 0.0202s\n-- add_foreign_key(\"merge_requests\", \"ci_pipelines\", {:column=>\"head_pipeline_id\", :name=>\"fk_fd82eae0b9\", :on_delete=>:nullify})\n -> 0.0394s\n-- add_foreign_key(\"merge_requests\", \"merge_request_diffs\", {:column=>\"latest_merge_request_diff_id\", :name=>\"fk_06067f5644\", :on_delete=>:nullify})\n -> 0.0532s\n-- add_foreign_key(\"merge_requests\", \"milestones\", {:name=>\"fk_6a5165a692\", :on_delete=>:nullify})\n -> 0.0291s\n-- add_foreign_key(\"merge_requests\", \"projects\", {:column=>\"source_project_id\", :name=>\"fk_3308fe130c\", :on_delete=>:nullify})\n -> 0.0278s\n-- add_foreign_key(\"merge_requests\", \"projects\", {:column=>\"target_project_id\", :name=>\"fk_a6963e8447\", :on_delete=>:cascade})\n -> 0.0367s\n-- add_foreign_key(\"merge_requests\", \"users\", {:column=>\"assignee_id\", :name=>\"fk_6149611a04\", :on_delete=>:nullify})\n -> 0.0327s\n-- add_foreign_key(\"merge_requests\", \"users\", {:column=>\"author_id\", :name=>\"fk_e719a85f8a\", :on_delete=>:nullify})\n -> 0.0337s\n-- add_foreign_key(\"merge_requests\", \"users\", {:column=>\"merge_user_id\", :name=>\"fk_ad525e1f87\", :on_delete=>:nullify})\n -> 0.0517s\n-- add_foreign_key(\"merge_requests\", \"users\", {:column=>\"updated_by_id\", :name=>\"fk_641731faff\", :on_delete=>:nullify})\n -> 0.0335s\n-- add_foreign_key(\"merge_requests_closing_issues\", \"issues\", {:on_delete=>:cascade})\n -> 0.0167s\n-- add_foreign_key(\"merge_requests_closing_issues\", \"merge_requests\", {:on_delete=>:cascade})\n -> 0.0191s\n-- add_foreign_key(\"milestones\", \"namespaces\", {:column=>\"group_id\", :name=>\"fk_95650a40d4\", :on_delete=>:cascade})\n -> 0.0206s\n-- add_foreign_key(\"milestones\", \"projects\", {:name=>\"fk_9bd0a0c791\", :on_delete=>:cascade})\n -> 0.0221s\n-- add_foreign_key(\"notes\", \"projects\", {:name=>\"fk_99e097b079\", :on_delete=>:cascade})\n -> 0.0332s\n-- add_foreign_key(\"oauth_openid_requests\", \"oauth_access_grants\", {:column=>\"access_grant_id\", :name=>\"fk_oauth_openid_requests_oauth_access_grants_access_grant_id\"})\n -> 0.0128s\n-- add_foreign_key(\"pages_domains\", \"projects\", {:name=>\"fk_ea2f6dfc6f\", :on_delete=>:cascade})\n -> 0.0220s\n-- add_foreign_key(\"personal_access_tokens\", \"users\")\n -> 0.0187s\n-- add_foreign_key(\"project_authorizations\", \"projects\", {:on_delete=>:cascade})\n -> 0.0149s\n-- add_foreign_key(\"project_authorizations\", \"users\", {:on_delete=>:cascade})\n -> 0.0167s\n-- add_foreign_key(\"project_auto_devops\", \"projects\", {:on_delete=>:cascade})\n -> 0.0142s\n-- add_foreign_key(\"project_custom_attributes\", \"projects\", {:on_delete=>:cascade})\n -> 0.0218s\n-- add_foreign_key(\"project_features\", \"projects\", {:name=>\"fk_18513d9b92\", :on_delete=>:cascade})\n -> 0.0204s\n-- add_foreign_key(\"project_group_links\", \"projects\", {:name=>\"fk_daa8cee94c\", :on_delete=>:cascade})\n -> 0.0174s\n-- add_foreign_key(\"project_import_data\", \"projects\", {:name=>\"fk_ffb9ee3a10\", :on_delete=>:cascade})\n -> 0.0138s\n-- add_foreign_key(\"project_statistics\", \"projects\", {:on_delete=>:cascade})\n -> 0.0125s\n-- add_foreign_key(\"protected_branch_merge_access_levels\", \"protected_branches\", {:name=>\"fk_8a3072ccb3\", :on_delete=>:cascade})\n -> 0.0157s\n-- add_foreign_key(\"protected_branch_push_access_levels\", \"protected_branches\", {:name=>\"fk_9ffc86a3d9\", :on_delete=>:cascade})\n -> 0.0112s\n-- add_foreign_key(\"protected_branches\", \"projects\", {:name=>\"fk_7a9c6d93e7\", :on_delete=>:cascade})\n -> 0.0122s\n-- add_foreign_key(\"protected_tag_create_access_levels\", \"namespaces\", {:column=>\"group_id\"})\n -> 0.0131s\n-- add_foreign_key(\"protected_tag_create_access_levels\", \"protected_tags\", {:name=>\"fk_f7dfda8c51\", :on_delete=>:cascade})\n -> 0.0168s\n-- add_foreign_key(\"protected_tag_create_access_levels\", \"users\")\n -> 0.0221s\n-- add_foreign_key(\"protected_tags\", \"projects\", {:name=>\"fk_8e4af87648\", :on_delete=>:cascade})\n -> 0.0135s\n-- add_foreign_key(\"push_event_payloads\", \"events\", {:name=>\"fk_36c74129da\", :on_delete=>:cascade})\n -> 0.0107s\n-- add_foreign_key(\"releases\", \"projects\", {:name=>\"fk_47fe2a0596\", :on_delete=>:cascade})\n -> 0.0131s\n-- add_foreign_key(\"services\", \"projects\", {:name=>\"fk_71cce407f9\", :on_delete=>:cascade})\n -> 0.0142s\n-- add_foreign_key(\"snippets\", \"projects\", {:name=>\"fk_be41fd4bb7\", :on_delete=>:cascade})\n -> 0.0178s\n-- add_foreign_key(\"subscriptions\", \"projects\", {:on_delete=>:cascade})\n -> 0.0160s\n-- add_foreign_key(\"system_note_metadata\", \"notes\", {:name=>\"fk_d83a918cb1\", :on_delete=>:cascade})\n -> 0.0156s\n-- add_foreign_key(\"timelogs\", \"issues\", {:name=>\"fk_timelogs_issues_issue_id\", :on_delete=>:cascade})\n -> 0.0183s\n-- add_foreign_key(\"timelogs\", \"merge_requests\", {:name=>\"fk_timelogs_merge_requests_merge_request_id\", :on_delete=>:cascade})\n -> 0.0198s\n-- add_foreign_key(\"todos\", \"notes\", {:name=>\"fk_91d1f47b13\", :on_delete=>:cascade})\n -> 0.0276s\n-- add_foreign_key(\"todos\", \"projects\", {:name=>\"fk_45054f9c45\", :on_delete=>:cascade})\n -> 0.0175s\n-- add_foreign_key(\"todos\", \"users\", {:column=>\"author_id\", :name=>\"fk_ccf0373936\", :on_delete=>:cascade})\n -> 0.0182s\n-- add_foreign_key(\"todos\", \"users\", {:name=>\"fk_d94154aa95\", :on_delete=>:cascade})\n -> 0.0184s\n-- add_foreign_key(\"trending_projects\", \"projects\", {:on_delete=>:cascade})\n -> 0.0338s\n-- add_foreign_key(\"u2f_registrations\", \"users\")\n -> 0.0176s\n-- add_foreign_key(\"user_callouts\", \"users\", {:on_delete=>:cascade})\n -> 0.0160s\n-- add_foreign_key(\"user_custom_attributes\", \"users\", {:on_delete=>:cascade})\n -> 0.0191s\n-- add_foreign_key(\"user_interacted_projects\", \"projects\", {:name=>\"fk_722ceba4f7\", :on_delete=>:cascade})\n -> 0.0171s\n-- add_foreign_key(\"user_interacted_projects\", \"users\", {:name=>\"fk_0894651f08\", :on_delete=>:cascade})\n -> 0.0155s\n-- add_foreign_key(\"user_synced_attributes_metadata\", \"users\", {:on_delete=>:cascade})\n -> 0.0164s\n-- add_foreign_key(\"users_star_projects\", \"projects\", {:name=>\"fk_22cd27ddfc\", :on_delete=>:cascade})\n -> 0.0180s\n-- add_foreign_key(\"web_hook_logs\", \"web_hooks\", {:on_delete=>:cascade})\n -> 0.0164s\n-- add_foreign_key(\"web_hooks\", \"projects\", {:name=>\"fk_0c8ca6d9d1\", :on_delete=>:cascade})\n -> 0.0172s\n-- initialize_schema_migrations_table()\n -> 0.0212s\nAdding limits to schema.rb for mysql\n-- column_exists?(:merge_request_diffs, :st_commits)\n -> 0.0010s\n-- column_exists?(:merge_request_diffs, :st_diffs)\n -> 0.0006s\n-- change_column(:snippets, :content, :text, {:limit=>2147483647})\n -> 0.0308s\n-- change_column(:notes, :st_diff, :text, {:limit=>2147483647})\n -> 0.0366s\n-- change_column(:snippets, :content_html, :text, {:limit=>2147483647})\n -> 0.0272s\n-- change_column(:merge_request_diff_files, :diff, :text, {:limit=>2147483647})\n -> 0.0170s\n\e[32;1m$ date\e[0;m\nThu Apr 5 11:19:41 UTC 2018\n\e[32;1m$ JOB_NAME=( $CI_JOB_NAME )\e[0;m\n\e[32;1m$ export CI_NODE_INDEX=${JOB_NAME[-2]}\e[0;m\n\e[32;1m$ export CI_NODE_TOTAL=${JOB_NAME[-1]}\e[0;m\n\e[32;1m$ export KNAPSACK_REPORT_PATH=knapsack/${CI_PROJECT_NAME}/${JOB_NAME[0]}_node_${CI_NODE_INDEX}_${CI_NODE_TOTAL}_report.json\e[0;m\n\e[32;1m$ export KNAPSACK_GENERATE_REPORT=true\e[0;m\n\e[32;1m$ export SUITE_FLAKY_RSPEC_REPORT_PATH=${FLAKY_RSPEC_SUITE_REPORT_PATH}\e[0;m\n\e[32;1m$ export FLAKY_RSPEC_REPORT_PATH=rspec_flaky/all_${JOB_NAME[0]}_${CI_NODE_INDEX}_${CI_NODE_TOTAL}_report.json\e[0;m\n\e[32;1m$ export NEW_FLAKY_RSPEC_REPORT_PATH=rspec_flaky/new_${JOB_NAME[0]}_${CI_NODE_INDEX}_${CI_NODE_TOTAL}_report.json\e[0;m\n\e[32;1m$ export FLAKY_RSPEC_GENERATE_REPORT=true\e[0;m\n\e[32;1m$ export CACHE_CLASSES=true\e[0;m\n\e[32;1m$ cp ${KNAPSACK_RSPEC_SUITE_REPORT_PATH} ${KNAPSACK_REPORT_PATH}\e[0;m\n\e[32;1m$ [[ -f $FLAKY_RSPEC_REPORT_PATH ]] || echo \"{}\" > ${FLAKY_RSPEC_REPORT_PATH}\e[0;m\n\e[32;1m$ [[ -f $NEW_FLAKY_RSPEC_REPORT_PATH ]] || echo \"{}\" > ${NEW_FLAKY_RSPEC_REPORT_PATH}\e[0;m\n\e[32;1m$ scripts/gitaly-test-spawn\e[0;m\n59\n\e[32;1m$ knapsack rspec \"--color --format documentation\"\e[0;m\n\nReport specs:\nspec/services/todo_service_spec.rb\nspec/lib/gitlab/import_export/project_tree_saver_spec.rb\nspec/lib/gitlab/background_migration/deserialize_merge_request_diffs_and_commits_spec.rb\nspec/controllers/projects/merge_requests_controller_spec.rb\nspec/controllers/groups_controller_spec.rb\nspec/features/projects/import_export/import_file_spec.rb\nspec/lib/gitlab/middleware/go_spec.rb\nspec/services/groups/transfer_service_spec.rb\nspec/features/projects/blobs/edit_spec.rb\nspec/services/boards/lists/move_service_spec.rb\nspec/services/create_deployment_service_spec.rb\nspec/controllers/groups/milestones_controller_spec.rb\nspec/helpers/groups_helper_spec.rb\nspec/requests/api/v3/todos_spec.rb\nspec/models/project_services/teamcity_service_spec.rb\nspec/lib/gitlab/conflict/file_spec.rb\nspec/lib/banzai/filter/snippet_reference_filter_spec.rb\nspec/finders/autocomplete_users_finder_spec.rb\nspec/models/service_spec.rb\nspec/services/test_hooks/project_service_spec.rb\nspec/features/projects/merge_requests/user_views_open_merge_request_spec.rb\nspec/finders/runner_jobs_finder_spec.rb\nspec/features/projects/snippets_spec.rb\nspec/requests/api/v3/environments_spec.rb\nspec/requests/api/namespaces_spec.rb\nspec/services/merge_requests/get_urls_service_spec.rb\nspec/models/lfs_file_lock_spec.rb\nspec/lib/gitlab/ci/config/entry/boolean_spec.rb\n\nLeftover specs:\n\nKnapsack report generator started!\n\n==> Setting up GitLab Shell...\n GitLab Shell setup in 0.307428917 seconds...\n\n==> Setting up Gitaly...\n Gitaly setup in 0.000135767 seconds...\n\nTodoService\n updates cached counts when a todo is created\n Issues\n #new_issue\n creates a todo if assigned\n does not create a todo if unassigned\n creates a todo if assignee is the current user\n creates a todo for each valid mentioned user\n creates a directly addressed todo for each valid addressed user\n creates correct todos for each valid user based on the type of mention\n does not create todo if user can not see the issue when issue is confidential\n does not create directly addressed todo if user cannot see the issue when issue is confidential\n when a private group is mentioned\n creates a todo for group members\n #update_issue\n creates a todo for each valid mentioned user not included in skip_users\n creates a todo for each valid user not included in skip_users based on the type of mention\n creates a directly addressed todo for each valid addressed user not included in skip_users\n does not create a todo if user was already mentioned and todo is pending\n does not create a todo if user was already mentioned and todo is done\n does not create a directly addressed todo if user was already mentioned or addressed and todo is pending\n does not create a directly addressed todo if user was already mentioned or addressed and todo is done\n does not create todo if user can not see the issue when issue is confidential\n does not create a directly addressed todo if user can not see the issue when issue is confidential\n issues with a task list\n does not create todo when tasks are marked as completed\n does not create directly addressed todo when tasks are marked as completed\n does not raise an error when description not change\n #close_issue\n marks related pending todos to the target for the user as done\n #destroy_target\n refreshes the todos count cache for users with todos on the target\n does not refresh the todos count cache for users with only done todos on the target\n yields the target to the caller\n #reassigned_issue\n creates a pending todo for new assignee\n does not create a todo if unassigned\n creates a todo if new assignee is the current user\n #mark_pending_todos_as_done\n marks related pending todos to the target for the user as done\n cached counts\n updates when todos change\n #mark_todos_as_done\n behaves like updating todos state\n updates related todos for the user with the new_state\n returns the updated ids\n cached counts\n updates when todos change\n #mark_todos_as_done_by_ids\n behaves like updating todos state\n updates related todos for the user with the new_state\n returns the updated ids\n cached counts\n updates when todos change\n #mark_todos_as_pending\n behaves like updating todos state\n updates related todos for the user with the new_state\n returns the updated ids\n cached counts\n updates when todos change\n #mark_todos_as_pending_by_ids\n behaves like updating todos state\n updates related todos for the user with the new_state\n returns the updated ids\n cached counts\n updates when todos change\n #new_note\n mark related pending todos to the noteable for the note author as done\n does not mark related pending todos it is a system note\n creates a todo for each valid mentioned user\n creates a todo for each valid user based on the type of mention\n creates a directly addressed todo for each valid addressed user\n does not create todo if user can not see the issue when leaving a note on a confidential issue\n does not create a directly addressed todo if user can not see the issue when leaving a note on a confidential issue\n does not create todo when leaving a note on snippet\n on commit\n creates a todo for each valid mentioned user when leaving a note on commit\n creates a directly addressed todo for each valid mentioned user when leaving a note on commit\n #mark_todo\n creates a todo from a issue\n #todo_exists?\n returns false when no todo exist for the given issuable\n returns true when a todo exist for the given issuable\n Merge Requests\n #new_merge_request\n creates a pending todo if assigned\n does not create a todo if unassigned\n does not create a todo if assignee is the current user\n creates a todo for each valid mentioned user\n creates a todo for each valid user based on the type of mention\n creates a directly addressed todo for each valid addressed user\n #update_merge_request\n creates a todo for each valid mentioned user not included in skip_users\n creates a todo for each valid user not included in skip_users based on the type of mention\n creates a directly addressed todo for each valid addressed user not included in skip_users\n does not create a todo if user was already mentioned and todo is pending\n does not create a todo if user was already mentioned and todo is done\n does not create a directly addressed todo if user was already mentioned or addressed and todo is pending\n does not create a directly addressed todo if user was already mentioned or addressed and todo is done\n with a task list\n does not create todo when tasks are marked as completed\n does not create directly addressed todo when tasks are marked as completed\n does not raise an error when description not change\n #close_merge_request\n marks related pending todos to the target for the user as done\n #reassigned_merge_request\n creates a pending todo for new assignee\n does not create a todo if unassigned\n creates a todo if new assignee is the current user\n does not create a todo for guests\n does not create a directly addressed todo for guests\n #merge_merge_request\n marks related pending todos to the target for the user as done\n does not create todo for guests\n does not create directly addressed todo for guests\n #new_award_emoji\n marks related pending todos to the target for the user as done\n #merge_request_build_failed\n creates a pending todo for the merge request author\n creates a pending todo for merge_user\n #merge_request_push\n marks related pending todos to the target for the user as done\n #merge_request_became_unmergeable\n creates a pending todo for a merge_user\n #mark_todo\n creates a todo from a merge request\n #new_note\n creates a todo for mentioned user on new diff note\n creates a directly addressed todo for addressed user on new diff note\n creates a todo for mentioned user on legacy diff note\n does not create todo for guests\n #update_note\n creates a todo for each valid mentioned user not included in skip_users\n creates a todo for each valid user not included in skip_users based on the type of mention\n creates a directly addressed todo for each valid addressed user not included in skip_users\n does not create a todo if user was already mentioned and todo is pending\n does not create a todo if user was already mentioned and todo is done\n does not create a directly addressed todo if user was already mentioned or addressed and todo is pending\n does not create a directly addressed todo if user was already mentioned or addressed and todo is done\n #mark_todos_as_done\n marks a relation of todos as done\n marks an array of todos as done\n returns the ids of updated todos\n when some of the todos are done already\n returns the ids of those still pending\n returns an empty array if all are done\n #mark_todos_as_done_by_ids\n marks an array of todo ids as done\n marks a single todo id as done\n caches the number of todos of a user\n\nGitlab::ImportExport::Project::TreeSaver\n saves the project tree into a json object\n saves project successfully\n JSON\n saves the correct json\n has milestones\n has merge requests\n has merge request's milestones\n has merge request's source branch SHA\n has merge request's target branch SHA\n has events\n has snippets\n has snippet notes\n has releases\n has issues\n has issue comments\n has issue assignees\n has author on issue comments\n has project members\n has merge requests diffs\n has merge request diff files\n has merge request diff commits\n has merge requests comments\n has author on merge requests comments\n has pipeline stages\n has pipeline statuses\n has pipeline builds\n has no when YML attributes but only the DB column\n has pipeline commits\n has ci pipeline notes\n has labels with no associations\n has labels associated to records\n has project and group labels\n has priorities associated to labels\n saves the correct service type\n saves the properties for a service\n has project feature\n has custom attributes\n has badges\n does not complain about non UTF-8 characters in MR diff files\n with description override\n overrides the project description\n group members\n does not export group members if it has no permission\n does not export group members as maintainer\n exports group members as group owner\n as admin\n exports group members as admin\n exports group members as project members\n project attributes\n contains the html description\n does not contain the runners token\n\nGitlab::BackgroundMigration::DeserializeMergeRequestDiffsAndCommits\n #perform\n when the diff IDs passed do not exist\n does not raise\n when the merge request diff has no serialised commits or diffs\n does not raise\n processing multiple merge request diffs\n when BUFFER_ROWS is exceeded\n inserts commit rows in chunks of BUFFER_ROWS\n inserts diff rows in chunks of DIFF_FILE_BUFFER_ROWS\n when BUFFER_ROWS is not exceeded\n only updates once\n when some rows were already inserted due to a previous failure\n does not raise\n logs a message\n ends up with the correct rows\n when the merge request diff update fails\n raises an error\n logs the error\n still adds diff commits\n still adds diff files\n when the merge request diff has valid commits and diffs\n creates correct entries in the merge_request_diff_commits table\n creates correct entries in the merge_request_diff_files table\n sets the st_commits and st_diffs columns to nil\n when the merge request diff has diffs but no commits\n creates correct entries in the merge_request_diff_commits table\n creates correct entries in the merge_request_diff_files table\n sets the st_commits and st_diffs columns to nil\n when the merge request diffs do not have too_large set\n creates correct entries in the merge_request_diff_commits table\n creates correct entries in the merge_request_diff_files table\n sets the st_commits and st_diffs columns to nil\n when the merge request diffs do not have a_mode and b_mode set\n creates correct entries in the merge_request_diff_commits table\n creates correct entries in the merge_request_diff_files table\n sets the st_commits and st_diffs columns to nil\n when the merge request diffs have binary content\n creates correct entries in the merge_request_diff_commits table\n creates correct entries in the merge_request_diff_files table\n sets the st_commits and st_diffs columns to nil\n when the merge request diff has commits, but no diffs\n creates correct entries in the merge_request_diff_commits table\n creates correct entries in the merge_request_diff_files table\n sets the st_commits and st_diffs columns to nil\n when the merge request diffs have invalid content\n creates correct entries in the merge_request_diff_commits table\n creates correct entries in the merge_request_diff_files table\n sets the st_commits and st_diffs columns to nil\n when the merge request diffs are Rugged::Patch instances\n creates correct entries in the merge_request_diff_commits table\n creates correct entries in the merge_request_diff_files table\n sets the st_commits and st_diffs columns to nil\n when the merge request diffs are Rugged::Diff::Delta instances\n creates correct entries in the merge_request_diff_commits table\n creates correct entries in the merge_request_diff_files table\n sets the st_commits and st_diffs columns to nil\n\nProjects::MergeRequestsController\n GET commit_change_content\n renders commit_change_content template\n GET show\n behaves like loads labels\n loads labels into the @labels variable\n as html\n renders merge request page\n loads notes\n with special_role FIRST_TIME_CONTRIBUTOR\n as json\n with basic serializer param\n renders basic MR entity as json\n with widget serializer param\n renders widget MR entity as json\n when no serialiser was passed\n renders widget MR entity as json\n as diff\n triggers workhorse to serve the request\n as patch\n triggers workhorse to serve the request\n GET index\n behaves like issuables list meta-data\n creates indexed meta-data object for issuable notes and votes count\n when given empty collection\n doesn't execute any queries with false conditions\n when page param\n redirects to last_page if page number is larger than number of pages\n redirects to specified page\n does not redirect to external sites when provided a host field\n when filtering by opened state\n with opened merge requests\n lists those merge requests\n with reopened merge requests\n lists those merge requests\n PUT update\n changing the assignee\n limits the attributes exposed on the assignee\n when user does not have access to update issue\n responds with 404\n there is no source project\n closes MR without errors\n allows editing of a closed merge request\n does not allow to update target branch closed merge request\n behaves like update invalid issuable\n when updating causes conflicts\n renders edit when format is html\n renders json error message when format is json\n when updating an invalid issuable\n renders edit when merge request is invalid\n POST merge\n when user cannot access\n returns 404\n when the merge request is not mergeable\n returns :failed\n when the sha parameter does not match the source SHA\n returns :sha_mismatch\n when the sha parameter matches the source SHA\n returns :success\n starts the merge immediately\n when the pipeline succeeds is passed\n returns :merge_when_pipeline_succeeds\n sets the MR to merge when the pipeline succeeds\n when project.only_allow_merge_if_pipeline_succeeds? is true\n returns :merge_when_pipeline_succeeds\n and head pipeline is not the current one\n returns :failed\n only_allow_merge_if_all_discussions_are_resolved? setting\n when enabled\n with unresolved discussion\n returns :failed\n with all discussions resolved\n returns :success\n when disabled\n with unresolved discussion\n returns :success\n with all discussions resolved\n returns :success\n DELETE destroy\n denies access to users unless they're admin or project owner\n when the user is owner\n deletes the merge request\n delegates the update of the todos count cache to TodoService\n GET commits\n renders the commits template to a string\n GET pipelines\n responds with serialized pipelines\n POST remove_wip\n removes the wip status\n renders MergeRequest as JSON\n POST cancel_merge_when_pipeline_succeeds\n calls MergeRequests::MergeWhenPipelineSucceedsService\n should respond with numeric status code success\n renders MergeRequest as JSON\n POST assign_related_issues\n shows a flash message on success\n correctly pluralizes flash message on success\n calls MergeRequests::AssignIssuesService\n is skipped when not signed in\n GET ci_environments_status\n the environment is from a forked project\n links to the environment on that project\n GET pipeline_status.json\n when head_pipeline exists\n return a detailed head_pipeline status in json\n when head_pipeline does not exist\n return empty\n POST #rebase\n successfully\n enqeues a RebaseWorker\n with a forked project\n user cannot push to source branch\n returns 404\n user can push to source branch\n returns 200\n\nGroupsController\n GET #show\n as html\n assigns whether or not a group has children\n as atom\n assigns events for all the projects in the group\n GET #new\n when creating subgroups\n and can_create_group is true\n and logged in as Admin\n behaves like member with ability to create subgroups\n renders the new page (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example)\n and logged in as Owner\n behaves like member with ability to create subgroups\n renders the new page (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example)\n and logged in as Guest\n behaves like member without ability to create subgroups\n renders the 404 page (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example)\n and logged in as Developer\n behaves like member without ability to create subgroups\n renders the 404 page (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example)\n and logged in as Maintainer\n behaves like member without ability to create subgroups\n renders the 404 page (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example)\n and can_create_group is false\n and logged in as Admin\n behaves like member with ability to create subgroups\n renders the new page (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example)\n and logged in as Owner\n behaves like member with ability to create subgroups\n renders the new page (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example)\n and logged in as Guest\n behaves like member without ability to create subgroups\n renders the 404 page (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example)\n and logged in as Developer\n behaves like member without ability to create subgroups\n renders the 404 page (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example)\n and logged in as Maintainer\n behaves like member without ability to create subgroups\n renders the 404 page (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example)\n GET #activity\n as json\n includes all projects in event feed\n POST #create\n when creating subgroups\n and can_create_group is true\n and logged in as Owner\n creates the subgroup (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example)\n and logged in as Developer\n renders the new template (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example)\n and can_create_group is false\n and logged in as Owner\n creates the subgroup (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example)\n and logged in as Developer\n renders the new template (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example)\n when creating a top level group\n and can_create_group is enabled\n creates the Group\n and can_create_group is disabled\n does not create the Group\n GET #index\n as a user\n redirects to Groups Dashboard\n as a guest\n redirects to Explore Groups\n GET #issues\n sorting by votes\n sorts most popular issues\n sorts least popular issues\n GET #merge_requests\n sorting by votes\n sorts most popular merge requests\n sorts least popular merge requests\n DELETE #destroy\n as another user\n returns 404\n as the group owner\n schedules a group destroy\n redirects to the root path\n PUT update\n updates the path successfully\n does not update the path on error\n #ensure_canonical_path\n for a GET request\n when requesting groups at the root path\n when requesting the canonical path with different casing\n redirects to the correct casing\n when requesting a redirected path\n redirects to the canonical path\n when the old group path is a substring of the scheme or host\n does not modify the requested host\n when the old group path is substring of groups\n does not modify the /groups part of the path\n when requesting groups under the /groups path\n when requesting the canonical path\n non-show path\n with exactly matching casing\n does not redirect\n with different casing\n redirects to the correct casing\n show path\n with exactly matching casing\n does not redirect\n with different casing\n redirects to the correct casing at the root path\n when requesting a redirected path\n redirects to the canonical path\n when the old group path is a substring of the scheme or host\n does not modify the requested host\n when the old group path is substring of groups\n does not modify the /groups part of the path\n when the old group path is substring of groups plus the new path\n does not modify the /groups part of the path\n for a POST request\n when requesting the canonical path with different casing\n does not 404\n does not redirect to the correct casing\n when requesting a redirected path\n returns not found\n for a DELETE request\n when requesting the canonical path with different casing\n does not 404\n does not redirect to the correct casing\n when requesting a redirected path\n returns not found\n PUT transfer\n when transferring to a subgroup goes right\n should return a notice (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n should redirect to the new path (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n when converting to a root group goes right\n should return a notice (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n should redirect to the new path (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n When the transfer goes wrong\n should return an alert (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n should redirect to the current path (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n when the user is not allowed to transfer the group\n should be denied (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n\nImport/Export - project import integration test\nStarting the Capybara driver server...\n invalid project\n when selecting the namespace\n prefilled the path\n user imports an exported project successfully\n path is not prefilled\n user imports an exported project successfully\n\nGitlab::Middleware::Go\n #call\n when go-get=0\n skips go-import generation\n when go-get=1\n with SSH disabled\n with simple 2-segment project path\n with subpackages\n returns the full project path\n without subpackages\n returns the full project path\n with a nested project path\n with subpackages\n behaves like a nested project\n when the project is public\n returns the full project path\n when the project is private\n when not authenticated\n behaves like unauthorized\n returns the 2-segment group path\n when authenticated\n using warden\n when active\n behaves like authenticated\n with access to the project\n returns the full project path\n without access to the project\n behaves like unauthorized\n returns the 2-segment group path\n when blocked\n behaves like unauthorized\n returns the 2-segment group path\n using a personal access token\n with api scope\n behaves like authenticated\n with access to the project\n returns the full project path\n without access to the project\n behaves like unauthorized\n returns the 2-segment group path\n with read_user scope\n behaves like unauthorized\n returns the 2-segment group path\n with a subpackage that is not a valid project path\n behaves like a nested project\n when the project is public\n returns the full project path\n when the project is private\n when not authenticated\n behaves like unauthorized\n returns the 2-segment group path\n when authenticated\n using warden\n when active\n behaves like authenticated\n with access to the project\n returns the full project path\n without access to the project\n behaves like unauthorized\n returns the 2-segment group path\n when blocked\n behaves like unauthorized\n returns the 2-segment group path\n using a personal access token\n with api scope\n behaves like authenticated\n with access to the project\n returns the full project path\n without access to the project\n behaves like unauthorized\n returns the 2-segment group path\n with read_user scope\n behaves like unauthorized\n returns the 2-segment group path\n without subpackages\n behaves like a nested project\n when the project is public\n returns the full project path\n when the project is private\n when not authenticated\n behaves like unauthorized\n returns the 2-segment group path\n when authenticated\n using warden\n when active\n behaves like authenticated\n with access to the project\n returns the full project path\n without access to the project\n behaves like unauthorized\n returns the 2-segment group path\n when blocked\n behaves like unauthorized\n returns the 2-segment group path\n using a personal access token\n with api scope\n behaves like authenticated\n with access to the project\n returns the full project path\n without access to the project\n behaves like unauthorized\n returns the 2-segment group path\n with read_user scope\n behaves like unauthorized\n returns the 2-segment group path\n with a bogus path\n skips go-import generation\n with HTTP disabled\n with simple 2-segment project path\n with subpackages\n returns the full project path\n without subpackages\n returns the full project path\n with a nested project path\n with subpackages\n behaves like a nested project\n when the project is public\n returns the full project path\n when the project is private\n when not authenticated\n behaves like unauthorized\n returns the 2-segment group path\n when authenticated\n using warden\n when active\n behaves like authenticated\n with access to the project\n returns the full project path\n without access to the project\n behaves like unauthorized\n returns the 2-segment group path\n when blocked\n behaves like unauthorized\n returns the 2-segment group path\n using a personal access token\n with api scope\n behaves like authenticated\n with access to the project\n returns the full project path\n without access to the project\n behaves like unauthorized\n returns the 2-segment group path\n with read_user scope\n behaves like unauthorized\n returns the 2-segment group path\n with a subpackage that is not a valid project path\n behaves like a nested project\n when the project is public\n returns the full project path\n when the project is private\n when not authenticated\n behaves like unauthorized\n returns the 2-segment group path\n when authenticated\n using warden\n when active\n behaves like authenticated\n with access to the project\n returns the full project path\n without access to the project\n behaves like unauthorized\n returns the 2-segment group path\n when blocked\n behaves like unauthorized\n returns the 2-segment group path\n using a personal access token\n with api scope\n behaves like authenticated\n with access to the project\n returns the full project path\n without access to the project\n behaves like unauthorized\n returns the 2-segment group path\n with read_user scope\n behaves like unauthorized\n returns the 2-segment group path\n without subpackages\n behaves like a nested project\n when the project is public\n returns the full project path\n when the project is private\n when not authenticated\n behaves like unauthorized\n returns the 2-segment group path\n when authenticated\n using warden\n when active\n behaves like authenticated\n with access to the project\n returns the full project path\n without access to the project\n behaves like unauthorized\n returns the 2-segment group path\n when blocked\n behaves like unauthorized\n returns the 2-segment group path\n using a personal access token\n with api scope\n behaves like authenticated\n with access to the project\n returns the full project path\n without access to the project\n behaves like unauthorized\n returns the 2-segment group path\n with read_user scope\n behaves like unauthorized\n returns the 2-segment group path\n with a bogus path\n skips go-import generation\n with nothing disabled\n with simple 2-segment project path\n with subpackages\n returns the full project path\n without subpackages\n returns the full project path\n with a nested project path\n with subpackages\n behaves like a nested project\n when the project is public\n returns the full project path\n when the project is private\n when not authenticated\n behaves like unauthorized\n returns the 2-segment group path\n when authenticated\n using warden\n when active\n behaves like authenticated\n with access to the project\n returns the full project path\n without access to the project\n behaves like unauthorized\n returns the 2-segment group path\n when blocked\n behaves like unauthorized\n returns the 2-segment group path\n using a personal access token\n with api scope\n behaves like authenticated\n with access to the project\n returns the full project path\n without access to the project\n behaves like unauthorized\n returns the 2-segment group path\n with read_user scope\n behaves like unauthorized\n returns the 2-segment group path\n with a subpackage that is not a valid project path\n behaves like a nested project\n when the project is public\n returns the full project path\n when the project is private\n when not authenticated\n behaves like unauthorized\n returns the 2-segment group path\n when authenticated\n using warden\n when active\n behaves like authenticated\n with access to the project\n returns the full project path\n without access to the project\n behaves like unauthorized\n returns the 2-segment group path\n when blocked\n behaves like unauthorized\n returns the 2-segment group path\n using a personal access token\n with api scope\n behaves like authenticated\n with access to the project\n returns the full project path\n without access to the project\n behaves like unauthorized\n returns the 2-segment group path\n with read_user scope\n behaves like unauthorized\n returns the 2-segment group path\n without subpackages\n behaves like a nested project\n when the project is public\n returns the full project path\n when the project is private\n when not authenticated\n behaves like unauthorized\n returns the 2-segment group path\n when authenticated\n using warden\n when active\n behaves like authenticated\n with access to the project\n returns the full project path\n without access to the project\n behaves like unauthorized\n returns the 2-segment group path\n when blocked\n behaves like unauthorized\n returns the 2-segment group path\n using a personal access token\n with api scope\n behaves like authenticated\n with access to the project\n returns the full project path\n without access to the project\n behaves like unauthorized\n returns the 2-segment group path\n with read_user scope\n behaves like unauthorized\n returns the 2-segment group path\n with a bogus path\n skips go-import generation\n with nothing disabled (blank string)\n with simple 2-segment project path\n with subpackages\n returns the full project path\n without subpackages\n returns the full project path\n with a nested project path\n with subpackages\n behaves like a nested project\n when the project is public\n returns the full project path\n when the project is private\n when not authenticated\n behaves like unauthorized\n returns the 2-segment group path\n when authenticated\n using warden\n when active\n behaves like authenticated\n with access to the project\n returns the full project path\n without access to the project\n behaves like unauthorized\n returns the 2-segment group path\n when blocked\n behaves like unauthorized\n returns the 2-segment group path\n using a personal access token\n with api scope\n behaves like authenticated\n with access to the project\n returns the full project path\n without access to the project\n behaves like unauthorized\n returns the 2-segment group path\n with read_user scope\n behaves like unauthorized\n returns the 2-segment group path\n with a subpackage that is not a valid project path\n behaves like a nested project\n when the project is public\n returns the full project path\n when the project is private\n when not authenticated\n behaves like unauthorized\n returns the 2-segment group path\n when authenticated\n using warden\n when active\n behaves like authenticated\n with access to the project\n returns the full project path\n without access to the project\n behaves like unauthorized\n returns the 2-segment group path\n when blocked\n behaves like unauthorized\n returns the 2-segment group path\n using a personal access token\n with api scope\n behaves like authenticated\n with access to the project\n returns the full project path\n without access to the project\n behaves like unauthorized\n returns the 2-segment group path\n with read_user scope\n behaves like unauthorized\n returns the 2-segment group path\n without subpackages\n behaves like a nested project\n when the project is public\n returns the full project path\n when the project is private\n when not authenticated\n behaves like unauthorized\n returns the 2-segment group path\n when authenticated\n using warden\n when active\n behaves like authenticated\n with access to the project\n returns the full project path\n without access to the project\n behaves like unauthorized\n returns the 2-segment group path\n when blocked\n behaves like unauthorized\n returns the 2-segment group path\n using a personal access token\n with api scope\n behaves like authenticated\n with access to the project\n returns the full project path\n without access to the project\n behaves like unauthorized\n returns the 2-segment group path\n with read_user scope\n behaves like unauthorized\n returns the 2-segment group path\n with a bogus path\n skips go-import generation\n\nGroups::TransferService\n #execute\n when transforming a group into a root group\n behaves like ensuring allowed transfer for a group\n with other database than PostgreSQL\n should return false (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n should add an error on group (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n when there's an exception on Gitlab shell directories\n should return false (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n should add an error on group (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n when the group is already a root group\n should add an error on group (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n when the user does not have the right policies\n should return false (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n should add an error on group (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n when there is a group with the same path\n should return false (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n should add an error on group (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n when the group is a subgroup and the transfer is valid\n should update group attributes (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n should update group children path (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n should update group projects path (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n when transferring a subgroup into another group\n behaves like ensuring allowed transfer for a group\n with other database than PostgreSQL\n should return false (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n should add an error on group (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n when there's an exception on Gitlab shell directories\n should return false (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n should add an error on group (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n when the new parent group is the same as the previous parent group\n should return false (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n should add an error on group (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n when the user does not have the right policies\n should return false (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n should add an error on group (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n when the parent has a group with the same path\n should return false (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n should add an error on group (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n when the parent group has a project with the same path\n should return false (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n should add an error on group (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n when the group is allowed to be transferred\n should update visibility for the group based on the parent group (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n should update parent group to the new parent (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n should return the group as children of the new parent (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n should create a redirect for the group (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n when the group has a lower visibility than the parent group\n should not update the visibility for the group (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n when the group has a higher visibility than the parent group\n should update visibility level based on the parent group (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n when transferring a group with group descendants\n should update subgroups path (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n should create redirects for the subgroups (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n when the new parent has a higher visibility than the children\n should not update the children visibility (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n when the new parent has a lower visibility than the children\n should update children visibility to match the new parent (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n when transferring a group with project descendants\n should update projects path (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n should create permanent redirects for the projects (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n when the new parent has a higher visibility than the projects\n should not update projects visibility (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n when the new parent has a lower visibility than the projects\n should update projects visibility to match the new parent (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n when transferring a group with subgroups & projects descendants\n should update subgroups path (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n should update projects path (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n should create redirect for the subgroups and projects (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n when transferring a group with nested groups and projects\n should update subgroups path (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n should update projects path (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n should create redirect for the subgroups and projects (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n when updating the group goes wrong\n should restore group and projects visibility (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example)\n\nEditing file blob\n as a developer\n from MR diff\n returns me to the mr\n from blob file path\n updates content\n previews content\n visit blob edit\n redirects to sign in and returns\n as developer\n redirects to sign in and returns\n as guest\n redirects to sign in and returns\n as developer\n on some branch\n shows blob editor with same branch\n with protected branch\n shows blob editor with patch branch\n as maintainer\n shows blob editor with same branch\n\nBoards::Lists::MoveService\n #execute\n when board parent is a project\n behaves like lists move service\n keeps position of lists when list type is closed\n when list type is set to label\n keeps position of lists when new position is nil\n keeps position of lists when new position is equal to old position\n keeps position of lists when new position is negative\n keeps position of lists when new position is equal to number of labels lists\n keeps position of lists when new position is greater than number of labels lists\n increments position of intermediate lists when new position is equal to first position\n decrements position of intermediate lists when new position is equal to last position\n decrements position of intermediate lists when new position is greater than old position\n increments position of intermediate lists when new position is lower than old position\n when board parent is a group\n behaves like lists move service\n keeps position of lists when list type is closed\n when list type is set to label\n keeps position of lists when new position is nil\n keeps position of lists when new position is equal to old position\n keeps position of lists when new position is negative\n keeps position of lists when new position is equal to number of labels lists\n keeps position of lists when new position is greater than number of labels lists\n increments position of intermediate lists when new position is equal to first position\n decrements position of intermediate lists when new position is equal to last position\n decrements position of intermediate lists when new position is greater than old position\n increments position of intermediate lists when new position is lower than old position\n\nCreateDeploymentService\n #execute\n when environment exists\n creates a deployment\n when environment does not exist\n does not create a deployment\n when start action is defined\n and environment is stopped\n makes environment available\n creates a deployment\n when stop action is defined\n and environment is available\n makes environment stopped\n does not create a deployment\n when variables are used\n creates a new deployment\n does not create a new environment\n updates external url\n when project was removed\n does not create deployment or environment\n #expanded_environment_url\n when yaml environment uses $CI_COMMIT_REF_NAME\n should eq \"http://review/master\"\n when yaml environment uses $CI_ENVIRONMENT_SLUG\n should eq \"http://review/prod-slug\"\n when yaml environment uses yaml_variables containing symbol keys\n should eq \"http://review/host\"\n when yaml environment does not have url\n returns the external_url from persisted environment\n processing of builds\n without environment specified\n behaves like does not create deployment\n does not create a new deployment\n does not call a service\n when environment is specified\n when job succeeds\n behaves like creates deployment\n creates a new deployment\n calls a service\n is set as deployable\n updates environment URL\n when job fails\n behaves like does not create deployment\n does not create a new deployment\n does not call a service\n when job is retried\n behaves like creates deployment\n creates a new deployment\n calls a service\n is set as deployable\n updates environment URL\n merge request metrics\n while updating the 'first_deployed_to_production_at' time\n for merge requests merged before the current deploy\n sets the time if the deploy's environment is 'production'\n doesn't set the time if the deploy's environment is not 'production'\n does not raise errors if the merge request does not have a metrics record\n for merge requests merged before the previous deploy\n if the 'first_deployed_to_production_at' time is already set\n does not overwrite the older 'first_deployed_to_production_at' time\n if the 'first_deployed_to_production_at' time is not already set\n does not overwrite the older 'first_deployed_to_production_at' time\n\nGroups::MilestonesController\n #index\n shows group milestones page\n as JSON\n lists legacy group milestones and group milestones\n #show\n when there is a title parameter\n searches for a legacy group milestone\n when there is not a title parameter\n searches for a group milestone\n behaves like milestone tabs\n #merge_requests\n as html\n redirects to milestone#show\n as json\n renders the merge requests tab template to a string\n #participants\n as html\n redirects to milestone#show\n as json\n renders the participants tab template to a string\n #labels\n as html\n redirects to milestone#show\n as json\n renders the labels tab template to a string\n #create\n creates group milestone with Chinese title\n #update\n updates group milestone\n legacy group milestones\n updates only group milestones state\n #ensure_canonical_path\n for a GET request\n when requesting the canonical path\n non-show path\n with exactly matching casing\n does not redirect\n with different casing\n redirects to the correct casing\n show path\n with exactly matching casing\n does not redirect\n with different casing\n redirects to the correct casing\n when requesting a redirected path\n redirects to the canonical path\n when the old group path is a substring of the scheme or host\n does not modify the requested host\n when the old group path is substring of groups\n does not modify the /groups part of the path\n when the old group path is substring of groups plus the new path\n does not modify the /groups part of the path\n for a non-GET request\n when requesting the canonical path with different casing\n does not 404\n does not redirect to the correct casing\n when requesting a redirected path\n returns not found\n\nGroupsHelper\n group_icon\n returns an url for the avatar\n group_icon_url\n returns an url for the avatar\n gives default avatar_icon when no avatar is present\n group_lfs_status\n only one project in group\n returns all projects as enabled\n returns all projects as disabled\n more than one project in group\n LFS enabled in group\n returns both projects as enabled\n returns only one as enabled\n LFS disabled in group\n returns both projects as disabled\n returns only one as disabled\n group_title\n outputs the groups in the correct order (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example)\n #share_with_group_lock_help_text\n root_share_with_group_locked: false, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: false, current_user: :root_owner, help_text: :default_help, linked_ancestor: nil\n has the correct help text with correct ancestor links (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example)\n root_share_with_group_locked: false, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: false, current_user: :sub_owner, help_text: :default_help, linked_ancestor: nil\n has the correct help text with correct ancestor links (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example)\n root_share_with_group_locked: false, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: false, current_user: :sub_sub_owner, help_text: :default_help, linked_ancestor: nil\n has the correct help text with correct ancestor links (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example)\n root_share_with_group_locked: false, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: true, current_user: :root_owner, help_text: :default_help, linked_ancestor: nil\n has the correct help text with correct ancestor links (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example)\n root_share_with_group_locked: false, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: true, current_user: :sub_owner, help_text: :default_help, linked_ancestor: nil\n has the correct help text with correct ancestor links (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example)\n root_share_with_group_locked: false, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: true, current_user: :sub_sub_owner, help_text: :default_help, linked_ancestor: nil\n has the correct help text with correct ancestor links (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example)\n root_share_with_group_locked: false, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: false, current_user: :root_owner, help_text: :ancestor_locked_and_has_been_overridden, linked_ancestor: :subgroup\n has the correct help text with correct ancestor links (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example)\n root_share_with_group_locked: false, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: false, current_user: :sub_owner, help_text: :ancestor_locked_and_has_been_overridden, linked_ancestor: :subgroup\n has the correct help text with correct ancestor links (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example)\n root_share_with_group_locked: false, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: false, current_user: :sub_sub_owner, help_text: :ancestor_locked_and_has_been_overridden, linked_ancestor: :subgroup\n has the correct help text with correct ancestor links (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example)\n root_share_with_group_locked: false, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: true, current_user: :root_owner, help_text: :ancestor_locked_but_you_can_override, linked_ancestor: :subgroup\n has the correct help text with correct ancestor links (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example)\n root_share_with_group_locked: false, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: true, current_user: :sub_owner, help_text: :ancestor_locked_but_you_can_override, linked_ancestor: :subgroup\n has the correct help text with correct ancestor links (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example)\n root_share_with_group_locked: false, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: true, current_user: :sub_sub_owner, help_text: :ancestor_locked_so_ask_the_owner, linked_ancestor: :subgroup\n has the correct help text with correct ancestor links (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example)\n root_share_with_group_locked: true, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: false, current_user: :root_owner, help_text: :default_help, linked_ancestor: nil\n has the correct help text with correct ancestor links (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example)\n root_share_with_group_locked: true, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: false, current_user: :sub_owner, help_text: :default_help, linked_ancestor: nil\n has the correct help text with correct ancestor links (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example)\n root_share_with_group_locked: true, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: false, current_user: :sub_sub_owner, help_text: :default_help, linked_ancestor: nil\n has the correct help text with correct ancestor links (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example)\n root_share_with_group_locked: true, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: true, current_user: :root_owner, help_text: :default_help, linked_ancestor: nil\n has the correct help text with correct ancestor links (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example)\n root_share_with_group_locked: true, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: true, current_user: :sub_owner, help_text: :default_help, linked_ancestor: nil\n has the correct help text with correct ancestor links (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example)\n root_share_with_group_locked: true, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: true, current_user: :sub_sub_owner, help_text: :default_help, linked_ancestor: nil\n has the correct help text with correct ancestor links (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example)\n root_share_with_group_locked: true, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: false, current_user: :root_owner, help_text: :ancestor_locked_and_has_been_overridden, linked_ancestor: :root_group\n has the correct help text with correct ancestor links (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example)\n root_share_with_group_locked: true, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: false, current_user: :sub_owner, help_text: :ancestor_locked_and_has_been_overridden, linked_ancestor: :root_group\n has the correct help text with correct ancestor links (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example)\n root_share_with_group_locked: true, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: false, current_user: :sub_sub_owner, help_text: :ancestor_locked_and_has_been_overridden, linked_ancestor: :root_group\n has the correct help text with correct ancestor links (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example)\n root_share_with_group_locked: true, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: true, current_user: :root_owner, help_text: :ancestor_locked_but_you_can_override, linked_ancestor: :root_group\n has the correct help text with correct ancestor links (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example)\n root_share_with_group_locked: true, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: true, current_user: :sub_owner, help_text: :ancestor_locked_so_ask_the_owner, linked_ancestor: :root_group\n has the correct help text with correct ancestor links (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example)\n root_share_with_group_locked: true, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: true, current_user: :sub_sub_owner, help_text: :ancestor_locked_so_ask_the_owner, linked_ancestor: :root_group\n has the correct help text with correct ancestor links (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example)\n #group_sidebar_links\n returns all the expected links\n includes settings when the user can admin the group\n excludes cross project features when the user cannot read cross project\n\nAPI::V3::Todos\n DELETE /todos/:id\n when unauthenticated\n returns authentication error\n when authenticated\n marks a todo as done\n updates todos cache\n returns 404 if the todo does not belong to the current user\n DELETE /todos\n when unauthenticated\n returns authentication error\n when authenticated\n marks all todos as done\n updates todos cache\n\nTeamcityService\n Associations\n should belong to project\n should have one service_hook\n Validations\n when service is active\n should validate that :build_type cannot be empty/falsy\n should validate that :teamcity_url cannot be empty/falsy\n behaves like issue tracker service URL attribute\n should allow :teamcity_url to be \xE2\x80\xB9\"https://example.com\"\xE2\x80\xBA\n should not allow :teamcity_url to be \xE2\x80\xB9\"example.com\"\xE2\x80\xBA\n should not allow :teamcity_url to be \xE2\x80\xB9\"ftp://example.com\"\xE2\x80\xBA\n should not allow :teamcity_url to be \xE2\x80\xB9\"herp-and-derp\"\xE2\x80\xBA\n #username\n does not validate the presence of username if password is nil\n validates the presence of username if password is present\n #password\n does not validate the presence of password if username is nil\n validates the presence of password if username is present\n when service is inactive\n should not validate that :build_type cannot be empty/falsy\n should not validate that :teamcity_url cannot be empty/falsy\n should not validate that :username cannot be empty/falsy\n should not validate that :password cannot be empty/falsy\n Callbacks\n before_validation :reset_password\n saves password if new url is set together with password when no password was previously set\n when a password was previously set\n resets password if url changed\n does not reset password if username changed\n does not reset password if new url is set together with password, even if it's the same password\n #build_page\n returns the contents of the reactive cache\n #commit_status\n returns the contents of the reactive cache\n #calculate_reactive_cache\n build_page\n returns a specific URL when status is 500\n returns a build URL when teamcity_url has no trailing slash\n teamcity_url has trailing slash\n returns a build URL\n commit_status\n sets commit status to :error when status is 500\n sets commit status to \"pending\" when status is 404\n sets commit status to \"success\" when build status contains SUCCESS\n sets commit status to \"failed\" when build status contains FAILURE\n sets commit status to \"pending\" when build status contains Pending\n sets commit status to :error when build status is unknown\n\nGitlab::Conflict::File\n #resolve_lines\n raises ResolutionError when passed a hash without resolutions for all sections\n when resolving everything to the same side\n has the correct number of lines\n has content matching the chosen lines\n with mixed resolutions\n has the correct number of lines\n returns a file containing only the chosen parts of the resolved sections\n #highlight_lines!\n modifies the existing lines\n is called implicitly when rich_text is accessed on a line\n sets the rich_text of the lines matching the text content\n highlights the lines correctly\n #sections\n only inserts match lines when there is a gap between sections\n sets conflict to false for sections with only unchanged lines\n only includes a maximum of CONTEXT_LINES (plus an optional match line) in context sections\n sets conflict to true for sections with only changed lines\n adds unique IDs to conflict sections, and not to other sections\n with an example file\n sets the correct match line headers\n does not add match lines where they are not needed\n creates context sections of the correct length\n #as_json\n includes the blob path for the file\n includes the blob icon for the file\n with the full_content option passed\n includes the full content of the conflict\n includes the detected language of the conflict file\n\nBanzai::Filter::SnippetReferenceFilter\n requires project context\n ignores valid references contained inside 'pre' element\n ignores valid references contained inside 'code' element\n ignores valid references contained inside 'a' element\n ignores valid references contained inside 'style' element\n internal reference\n links to a valid reference\n links with adjacent text\n ignores invalid snippet IDs\n includes a title attribute\n escapes the title attribute\n includes default classes\n includes a data-project attribute\n includes a data-snippet attribute\n supports an :only_path context\n cross-project / cross-namespace complete reference\n links to a valid reference\n link has valid text\n has valid text\n ignores invalid snippet IDs on the referenced project\n cross-project / same-namespace complete reference\n links to a valid reference\n link has valid text\n has valid text\n ignores invalid snippet IDs on the referenced project\n cross-project shorthand reference\n links to a valid reference\n link has valid text\n has valid text\n ignores invalid snippet IDs on the referenced project\n cross-project URL reference\n links to a valid reference\n links with adjacent text\n ignores invalid snippet IDs on the referenced project\n group context\n links to a valid reference\n\nAutocompleteUsersFinder\n #execute\n should contain exactly #<User id:2126 @johndoe>, #<User id:2128 @user2119>, #<User id:2129 @user2120>, and #<User id:2130 @user2121>\n when current_user not passed or nil\n should contain exactly\n when project passed\n should contain exactly #<User id:2140 @user2127>\n when author_id passed\n should contain exactly #<User id:2146 @user2131> and #<User id:2142 @notsorandom>\n when group passed and project not passed\n should contain exactly #<User id:2147 @johndoe>\n when passed a subgroup\n includes users from parent groups as well (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example)\n when filtered by search\n should contain exactly #<User id:2152 @johndoe>\n when filtered by skip_users\n should contain exactly #<User id:2157 @johndoe> and #<User id:2159 @user2138>\n when todos exist\n when filtered by todo_filter without todo_state_filter\n should contain exactly\n when filtered by todo_filter with pending todo_state_filter\n should contain exactly #<User id:2175 @johndoe>\n when filtered by todo_filter with done todo_state_filter\n should contain exactly #<User id:2190 @user2163>\n when filtered by current_user\n should contain exactly #<User id:2202 @notsorandom>, #<User id:2201 @johndoe>, #<User id:2203 @user2174>, and #<User id:2204 @user2175>\n when filtered by author_id\n should contain exactly #<User id:2206 @notsorandom>, #<User id:2205 @johndoe>, #<User id:2207 @user2176>, #<User id:2208 @user2177>, and #<User id:2209 @user2178>\n\nService\n Associations\n should belong to project\n should have one service_hook\n Validations\n should validate that :type cannot be empty/falsy\n Scopes\n .confidential_note_hooks\n includes services where confidential_note_events is true\n excludes services where confidential_note_events is false\n Test Button\n #can_test?\n when repository is not empty\n returns true\n when repository is empty\n returns true\n #test\n when repository is not empty\n test runs execute\n when repository is empty\n test runs execute\n Template\n for pushover service\n is prefilled for projects pushover service\n has all fields prefilled\n {property}_changed?\n returns false when the property has not been assigned a new value\n returns true when the property has been assigned a different value\n returns true when the property has been assigned a different value twice\n returns false when the property has been re-assigned the same value\n returns false when the property has been assigned a new value then saved\n {property}_touched?\n returns false when the property has not been assigned a new value\n returns true when the property has been assigned a different value\n returns true when the property has been assigned a different value twice\n returns true when the property has been re-assigned the same value\n returns false when the property has been assigned a new value then saved\n {property}_was\n returns nil when the property has not been assigned a new value\n returns the previous value when the property has been assigned a different value\n returns initial value when the property has been re-assigned the same value\n returns initial value when the property has been assigned multiple values\n returns nil when the property has been assigned a new value then saved\n initialize service with no properties\n does not raise error\n creates the properties\n callbacks\n on create\n updates the has_external_issue_tracker boolean\n on update\n updates the has_external_issue_tracker boolean\n #api_field_names\n filters out sensitive fields\n\nTestHooks::ProjectService\n #execute\n hook with not implemented test\n returns error message\n push_events\n returns error message if not enough data\n executes hook\n tag_push_events\n returns error message if not enough data\n executes hook\n note_events\n returns error message if not enough data\n executes hook\n issues_events\n returns error message if not enough data\n executes hook\n confidential_issues_events\n returns error message if not enough data\n executes hook\n merge_requests_events\n returns error message if not enough data\n executes hook\n job_events\n returns error message if not enough data\n executes hook\n pipeline_events\n returns error message if not enough data\n executes hook\n wiki_page_events\n returns error message if wiki disabled\n returns error message if not enough data\n executes hook\n\nUser views an open merge request\n when a merge request does not have repository\n renders both the title and the description\n when a merge request has repository\n when rendering description preview\n renders empty description preview\n renders description preview\n when the branch is rebased on the target\n does not show diverged commits count\n when the branch is diverged on the target\n shows diverged commits count\n\nRunnerJobsFinder\n #execute\n when params is empty\n returns all jobs assigned to Runner\n when params contains status\n when status is created\n returns matched job\n when status is pending\n returns matched job\n when status is running\n returns matched job\n when status is success\n returns matched job\n when status is failed\n returns matched job\n when status is canceled\n returns matched job\n when status is skipped\n returns matched job\n when status is manual\n returns matched job\n\nProject snippets\n when the project has snippets\n pagination\n behaves like paginated snippets\n is limited to 20 items per page\n clicking on the link to the second page\n shows the remaining snippets\n list content\n contains all project snippets\n when submitting a note\n should have autocomplete\n should have zen mode\n\nAPI::V3::Environments\n GET /projects/:id/environments\n as member of the project\n returns project environments\n behaves like a paginated resources\n has pagination headers\n as non member\n returns a 404 status code\n POST /projects/:id/environments\n as a member\n creates a environment with valid params\n requires name to be passed\n returns a 400 if environment already exists\n returns a 400 if slug is specified\n a non member\n rejects the request\n returns a 400 when the required params are missing\n PUT /projects/:id/environments/:environment_id\n returns a 200 if name and external_url are changed\n won't allow slug to be changed\n won't update the external_url if only the name is passed\n returns a 404 if the environment does not exist\n DELETE /projects/:id/environments/:environment_id\n as a maintainer\n returns a 200 for an existing environment\n returns a 404 for non existing id\n a non member\n rejects the request\n\nAPI::Namespaces\n GET /namespaces\n when unauthenticated\n returns authentication error\n when authenticated as admin\n returns correct attributes\n admin: returns an array of all namespaces\n admin: returns an array of matched namespaces\n when authenticated as a regular user\n returns correct attributes when user can admin group\n returns correct attributes when user cannot admin group\n user: returns an array of namespaces\n admin: returns an array of matched namespaces\n GET /namespaces/:id\n when unauthenticated\n returns authentication error\n when authenticated as regular user\n when requested namespace is not owned by user\n when requesting group\n returns not-found\n when requesting personal namespace\n returns not-found\n when requested namespace is owned by user\n behaves like namespace reader\n when namespace exists\n when requested by ID\n when requesting group\n behaves like can access namespace\n returns namespace details\n when requesting personal namespace\n behaves like can access namespace\n returns namespace details\n when requested by path\n when requesting group\n behaves like can access namespace\n returns namespace details\n when requesting personal namespace\n behaves like can access namespace\n returns namespace details\n when namespace doesn't exist\n returns not-found\n when authenticated as admin\n when requested namespace is not owned by user\n when requesting group\n behaves like can access namespace\n returns namespace details\n when requesting personal namespace\n behaves like can access namespace\n returns namespace details\n when requested namespace is owned by user\n behaves like namespace reader\n when namespace exists\n when requested by ID\n when requesting group\n behaves like can access namespace\n returns namespace details\n when requesting personal namespace\n behaves like can access namespace\n returns namespace details\n when requested by path\n when requesting group\n behaves like can access namespace\n returns namespace details\n when requesting personal namespace\n behaves like can access namespace\n returns namespace details\n when namespace doesn't exist\n returns not-found\n\nMergeRequests::GetUrlsService\n #execute\n pushing to default branch\n behaves like no_merge_request_url\n returns no URL\n pushing to project with MRs disabled\n behaves like no_merge_request_url\n returns no URL\n pushing one completely new branch\n behaves like new_merge_request_link\n returns url to create new merge request\n pushing to existing branch but no merge request\n behaves like new_merge_request_link\n returns url to create new merge request\n pushing to deleted branch\n behaves like no_merge_request_url\n returns no URL\n pushing to existing branch and merge request opened\n behaves like show_merge_request_url\n returns url to view merge request\n pushing to existing branch and merge request is reopened\n behaves like show_merge_request_url\n returns url to view merge request\n pushing to existing branch from forked project\n behaves like show_merge_request_url\n returns url to view merge request\n pushing to existing branch and merge request is closed\n behaves like new_merge_request_link\n returns url to create new merge request\n pushing to existing branch and merge request is merged\n behaves like new_merge_request_link\n returns url to create new merge request\n pushing new branch and existing branch (with merge request created) at once\n returns 2 urls for both creating new and showing merge request\n when printing_merge_request_link_enabled is false\n returns empty array\n\nLfsFileLock\n should belong to project\n should belong to user\n should validate that :project_id cannot be empty/falsy\n should validate that :user_id cannot be empty/falsy\n should validate that :path cannot be empty/falsy\n #can_be_unlocked_by?\n when it's forced\n can be unlocked by the author\n can be unlocked by a maintainer\n can't be unlocked by other user\n when it isn't forced\n can be unlocked by the author\n can't be unlocked by a maintainer\n can't be unlocked by other user\n\nGitlab::Ci::Config::Entry::Boolean\n validations\n when entry config value is valid\n #value\n returns key value\n #valid?\n is valid\n when entry value is not valid\n #errors\n saves errors\nKnapsack report was generated. Preview:\n{\n \"spec/services/todo_service_spec.rb\": 53.71851348876953,\n \"spec/lib/gitlab/import_export/project_tree_saver_spec.rb\": 48.39624857902527,\n \"spec/lib/gitlab/background_migration/deserialize_merge_request_diffs_and_commits_spec.rb\": 35.17360734939575,\n \"spec/controllers/projects/merge_requests_controller_spec.rb\": 25.50887441635132,\n \"spec/controllers/groups_controller_spec.rb\": 13.007296323776245,\n \"spec/features/projects/import_export/import_file_spec.rb\": 16.827879428863525,\n \"spec/lib/gitlab/middleware/go_spec.rb\": 12.497276306152344,\n \"spec/features/projects/blobs/edit_spec.rb\": 11.511932134628296,\n \"spec/services/boards/lists/move_service_spec.rb\": 8.695446491241455,\n \"spec/services/create_deployment_service_spec.rb\": 6.754847526550293,\n \"spec/controllers/groups/milestones_controller_spec.rb\": 6.8740551471710205,\n \"spec/helpers/groups_helper_spec.rb\": 0.9002459049224854,\n \"spec/requests/api/v3/todos_spec.rb\": 6.5924904346466064,\n \"spec/models/project_services/teamcity_service_spec.rb\": 2.9881808757781982,\n \"spec/lib/gitlab/conflict/file_spec.rb\": 5.294132709503174,\n \"spec/lib/banzai/filter/snippet_reference_filter_spec.rb\": 4.118850469589233,\n \"spec/finders/autocomplete_users_finder_spec.rb\": 3.864232063293457,\n \"spec/models/service_spec.rb\": 3.1697962284088135,\n \"spec/services/test_hooks/project_service_spec.rb\": 4.167759656906128,\n \"spec/features/projects/merge_requests/user_views_open_merge_request_spec.rb\": 4.707003355026245,\n \"spec/finders/runner_jobs_finder_spec.rb\": 3.2137575149536133,\n \"spec/features/projects/snippets_spec.rb\": 3.631467580795288,\n \"spec/requests/api/v3/environments_spec.rb\": 2.314746856689453,\n \"spec/requests/api/namespaces_spec.rb\": 2.352935314178467,\n \"spec/services/merge_requests/get_urls_service_spec.rb\": 2.8039824962615967,\n \"spec/models/lfs_file_lock_spec.rb\": 0.7295050621032715,\n \"spec/lib/gitlab/ci/config/entry/boolean_spec.rb\": 0.007024049758911133\n}\n\nKnapsack global time execution for tests: 04m 49s\n\nPending: (Failures listed here are expected and do not affect your suite's status)\n\n 1) GroupsController GET #new when creating subgroups and can_create_group is true and logged in as Admin behaves like member with ability to create subgroups renders the new page\n # around hook at ./spec/spec_helper.rb:186 did not execute the example\n # ./spec/controllers/groups_controller_spec.rb:15\n\n 2) GroupsController GET #new when creating subgroups and can_create_group is true and logged in as Owner behaves like member with ability to create subgroups renders the new page\n # around hook at ./spec/spec_helper.rb:186 did not execute the example\n # ./spec/controllers/groups_controller_spec.rb:15\n\n 3) GroupsController GET #new when creating subgroups and can_create_group is true and logged in as Guest behaves like member without ability to create subgroups renders the 404 page\n # around hook at ./spec/spec_helper.rb:186 did not execute the example\n # ./spec/controllers/groups_controller_spec.rb:25\n\n 4) GroupsController GET #new when creating subgroups and can_create_group is true and logged in as Developer behaves like member without ability to create subgroups renders the 404 page\n # around hook at ./spec/spec_helper.rb:186 did not execute the example\n # ./spec/controllers/groups_controller_spec.rb:25\n\n 5) GroupsController GET #new when creating subgroups and can_create_group is true and logged in as Maintainer behaves like member without ability to create subgroups renders the 404 page\n # around hook at ./spec/spec_helper.rb:186 did not execute the example\n # ./spec/controllers/groups_controller_spec.rb:25\n\n 6) GroupsController GET #new when creating subgroups and can_create_group is false and logged in as Admin behaves like member with ability to create subgroups renders the new page\n # around hook at ./spec/spec_helper.rb:186 did not execute the example\n # ./spec/controllers/groups_controller_spec.rb:15\n\n 7) GroupsController GET #new when creating subgroups and can_create_group is false and logged in as Owner behaves like member with ability to create subgroups renders the new page\n # around hook at ./spec/spec_helper.rb:186 did not execute the example\n # ./spec/controllers/groups_controller_spec.rb:15\n\n 8) GroupsController GET #new when creating subgroups and can_create_group is false and logged in as Guest behaves like member without ability to create subgroups renders the 404 page\n # around hook at ./spec/spec_helper.rb:186 did not execute the example\n # ./spec/controllers/groups_controller_spec.rb:25\n\n 9) GroupsController GET #new when creating subgroups and can_create_group is false and logged in as Developer behaves like member without ability to create subgroups renders the 404 page\n # around hook at ./spec/spec_helper.rb:186 did not execute the example\n # ./spec/controllers/groups_controller_spec.rb:25\n\n 10) GroupsController GET #new when creating subgroups and can_create_group is false and logged in as Maintainer behaves like member without ability to create subgroups renders the 404 page\n # around hook at ./spec/spec_helper.rb:186 did not execute the example\n # ./spec/controllers/groups_controller_spec.rb:25\n\n 11) GroupsController POST #create when creating subgroups and can_create_group is true and logged in as Owner creates the subgroup\n # around hook at ./spec/spec_helper.rb:186 did not execute the example\n # ./spec/controllers/groups_controller_spec.rb:117\n\n 12) GroupsController POST #create when creating subgroups and can_create_group is true and logged in as Developer renders the new template\n # around hook at ./spec/spec_helper.rb:186 did not execute the example\n # ./spec/controllers/groups_controller_spec.rb:129\n\n 13) GroupsController POST #create when creating subgroups and can_create_group is false and logged in as Owner creates the subgroup\n # around hook at ./spec/spec_helper.rb:186 did not execute the example\n # ./spec/controllers/groups_controller_spec.rb:117\n\n 14) GroupsController POST #create when creating subgroups and can_create_group is false and logged in as Developer renders the new template\n # around hook at ./spec/spec_helper.rb:186 did not execute the example\n # ./spec/controllers/groups_controller_spec.rb:129\n\n 15) GroupsController PUT transfer when transferring to a subgroup goes right should return a notice\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/controllers/groups_controller_spec.rb:516\n\n 16) GroupsController PUT transfer when transferring to a subgroup goes right should redirect to the new path\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/controllers/groups_controller_spec.rb:520\n\n 17) GroupsController PUT transfer when converting to a root group goes right should return a notice\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/controllers/groups_controller_spec.rb:535\n\n 18) GroupsController PUT transfer when converting to a root group goes right should redirect to the new path\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/controllers/groups_controller_spec.rb:539\n\n 19) GroupsController PUT transfer When the transfer goes wrong should return an alert\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/controllers/groups_controller_spec.rb:557\n\n 20) GroupsController PUT transfer When the transfer goes wrong should redirect to the current path\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/controllers/groups_controller_spec.rb:561\n\n 21) GroupsController PUT transfer when the user is not allowed to transfer the group should be denied\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/controllers/groups_controller_spec.rb:577\n\n 22) Groups::TransferService#execute when transforming a group into a root group behaves like ensuring allowed transfer for a group with other database than PostgreSQL should return false\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:15\n\n 23) Groups::TransferService#execute when transforming a group into a root group behaves like ensuring allowed transfer for a group with other database than PostgreSQL should add an error on group\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:19\n\n 24) Groups::TransferService#execute when transforming a group into a root group behaves like ensuring allowed transfer for a group when there's an exception on Gitlab shell directories should return false\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:33\n\n 25) Groups::TransferService#execute when transforming a group into a root group behaves like ensuring allowed transfer for a group when there's an exception on Gitlab shell directories should add an error on group\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:37\n\n 26) Groups::TransferService#execute when transforming a group into a root group when the group is already a root group should add an error on group\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:53\n\n 27) Groups::TransferService#execute when transforming a group into a root group when the user does not have the right policies should return false\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:62\n\n 28) Groups::TransferService#execute when transforming a group into a root group when the user does not have the right policies should add an error on group\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:66\n\n 29) Groups::TransferService#execute when transforming a group into a root group when there is a group with the same path should return false\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:79\n\n 30) Groups::TransferService#execute when transforming a group into a root group when there is a group with the same path should add an error on group\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:83\n\n 31) Groups::TransferService#execute when transforming a group into a root group when the group is a subgroup and the transfer is valid should update group attributes\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:99\n\n 32) Groups::TransferService#execute when transforming a group into a root group when the group is a subgroup and the transfer is valid should update group children path\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:103\n\n 33) Groups::TransferService#execute when transforming a group into a root group when the group is a subgroup and the transfer is valid should update group projects path\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:109\n\n 34) Groups::TransferService#execute when transferring a subgroup into another group behaves like ensuring allowed transfer for a group with other database than PostgreSQL should return false\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:15\n\n 35) Groups::TransferService#execute when transferring a subgroup into another group behaves like ensuring allowed transfer for a group with other database than PostgreSQL should add an error on group\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:19\n\n 36) Groups::TransferService#execute when transferring a subgroup into another group behaves like ensuring allowed transfer for a group when there's an exception on Gitlab shell directories should return false\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:33\n\n 37) Groups::TransferService#execute when transferring a subgroup into another group behaves like ensuring allowed transfer for a group when there's an exception on Gitlab shell directories should add an error on group\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:37\n\n 38) Groups::TransferService#execute when transferring a subgroup into another group when the new parent group is the same as the previous parent group should return false\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:125\n\n 39) Groups::TransferService#execute when transferring a subgroup into another group when the new parent group is the same as the previous parent group should add an error on group\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:129\n\n 40) Groups::TransferService#execute when transferring a subgroup into another group when the user does not have the right policies should return false\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:138\n\n 41) Groups::TransferService#execute when transferring a subgroup into another group when the user does not have the right policies should add an error on group\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:142\n\n 42) Groups::TransferService#execute when transferring a subgroup into another group when the parent has a group with the same path should return false\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:155\n\n 43) Groups::TransferService#execute when transferring a subgroup into another group when the parent has a group with the same path should add an error on group\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:159\n\n 44) Groups::TransferService#execute when transferring a subgroup into another group when the parent group has a project with the same path should return false\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:174\n\n 45) Groups::TransferService#execute when transferring a subgroup into another group when the parent group has a project with the same path should add an error on group\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:178\n\n 46) Groups::TransferService#execute when transferring a subgroup into another group when the group is allowed to be transferred should update visibility for the group based on the parent group\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:212\n\n 47) Groups::TransferService#execute when transferring a subgroup into another group when the group is allowed to be transferred should update parent group to the new parent\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:216\n\n 48) Groups::TransferService#execute when transferring a subgroup into another group when the group is allowed to be transferred should return the group as children of the new parent\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:220\n\n 49) Groups::TransferService#execute when transferring a subgroup into another group when the group is allowed to be transferred should create a redirect for the group\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:225\n\n 50) Groups::TransferService#execute when transferring a subgroup into another group when the group is allowed to be transferred when the group has a lower visibility than the parent group should not update the visibility for the group\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:194\n\n 51) Groups::TransferService#execute when transferring a subgroup into another group when the group is allowed to be transferred when the group has a higher visibility than the parent group should update visibility level based on the parent group\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:205\n\n 52) Groups::TransferService#execute when transferring a subgroup into another group when transferring a group with group descendants should update subgroups path\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:239\n\n 53) Groups::TransferService#execute when transferring a subgroup into another group when transferring a group with group descendants should create redirects for the subgroups\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:246\n\n 54) Groups::TransferService#execute when transferring a subgroup into another group when transferring a group with group descendants when the new parent has a higher visibility than the children should not update the children visibility\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:253\n\n 55) Groups::TransferService#execute when transferring a subgroup into another group when transferring a group with group descendants when the new parent has a lower visibility than the children should update children visibility to match the new parent\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:264\n\n 56) Groups::TransferService#execute when transferring a subgroup into another group when transferring a group with project descendants should update projects path\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:282\n\n 57) Groups::TransferService#execute when transferring a subgroup into another group when transferring a group with project descendants should create permanent redirects for the projects\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:289\n\n 58) Groups::TransferService#execute when transferring a subgroup into another group when transferring a group with project descendants when the new parent has a higher visibility than the projects should not update projects visibility\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:296\n\n 59) Groups::TransferService#execute when transferring a subgroup into another group when transferring a group with project descendants when the new parent has a lower visibility than the projects should update projects visibility to match the new parent\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:307\n\n 60) Groups::TransferService#execute when transferring a subgroup into another group when transferring a group with subgroups & projects descendants should update subgroups path\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:327\n\n 61) Groups::TransferService#execute when transferring a subgroup into another group when transferring a group with subgroups & projects descendants should update projects path\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:334\n\n 62) Groups::TransferService#execute when transferring a subgroup into another group when transferring a group with subgroups & projects descendants should create redirect for the subgroups and projects\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:341\n\n 63) Groups::TransferService#execute when transferring a subgroup into another group when transferring a group with nested groups and projects should update subgroups path\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:363\n\n 64) Groups::TransferService#execute when transferring a subgroup into another group when transferring a group with nested groups and projects should update projects path\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:375\n\n 65) Groups::TransferService#execute when transferring a subgroup into another group when transferring a group with nested groups and projects should create redirect for the subgroups and projects\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:383\n\n 66) Groups::TransferService#execute when transferring a subgroup into another group when updating the group goes wrong should restore group and projects visibility\n # around hook at ./spec/spec_helper.rb:190 did not execute the example\n # ./spec/services/groups/transfer_service_spec.rb:405\n\n 67) GroupsHelper group_title outputs the groups in the correct order\n # around hook at ./spec/spec_helper.rb:186 did not execute the example\n # ./spec/helpers/groups_helper_spec.rb:106\n\n 68) GroupsHelper#share_with_group_lock_help_text root_share_with_group_locked: false, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: false, current_user: :root_owner, help_text: :default_help, linked_ancestor: nil has the correct help text with correct ancestor links\n # around hook at ./spec/spec_helper.rb:186 did not execute the example\n # ./spec/helpers/groups_helper_spec.rb:198\n\n 69) GroupsHelper#share_with_group_lock_help_text root_share_with_group_locked: false, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: false, current_user: :sub_owner, help_text: :default_help, linked_ancestor: nil has the correct help text with correct ancestor links\n # around hook at ./spec/spec_helper.rb:186 did not execute the example\n # ./spec/helpers/groups_helper_spec.rb:198\n\n 70) GroupsHelper#share_with_group_lock_help_text root_share_with_group_locked: false, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: false, current_user: :sub_sub_owner, help_text: :default_help, linked_ancestor: nil has the correct help text with correct ancestor links\n # around hook at ./spec/spec_helper.rb:186 did not execute the example\n # ./spec/helpers/groups_helper_spec.rb:198\n\n 71) GroupsHelper#share_with_group_lock_help_text root_share_with_group_locked: false, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: true, current_user: :root_owner, help_text: :default_help, linked_ancestor: nil has the correct help text with correct ancestor links\n # around hook at ./spec/spec_helper.rb:186 did not execute the example\n # ./spec/helpers/groups_helper_spec.rb:198\n\n 72) GroupsHelper#share_with_group_lock_help_text root_share_with_group_locked: false, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: true, current_user: :sub_owner, help_text: :default_help, linked_ancestor: nil has the correct help text with correct ancestor links\n # around hook at ./spec/spec_helper.rb:186 did not execute the example\n # ./spec/helpers/groups_helper_spec.rb:198\n\n 73) GroupsHelper#share_with_group_lock_help_text root_share_with_group_locked: false, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: true, current_user: :sub_sub_owner, help_text: :default_help, linked_ancestor: nil has the correct help text with correct ancestor links\n # around hook at ./spec/spec_helper.rb:186 did not execute the example\n # ./spec/helpers/groups_helper_spec.rb:198\n\n 74) GroupsHelper#share_with_group_lock_help_text root_share_with_group_locked: false, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: false, current_user: :root_owner, help_text: :ancestor_locked_and_has_been_overridden, linked_ancestor: :subgroup has the correct help text with correct ancestor links\n # around hook at ./spec/spec_helper.rb:186 did not execute the example\n # ./spec/helpers/groups_helper_spec.rb:198\n\n 75) GroupsHelper#share_with_group_lock_help_text root_share_with_group_locked: false, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: false, current_user: :sub_owner, help_text: :ancestor_locked_and_has_been_overridden, linked_ancestor: :subgroup has the correct help text with correct ancestor links\n # around hook at ./spec/spec_helper.rb:186 did not execute the example\n # ./spec/helpers/groups_helper_spec.rb:198\n\n 76) GroupsHelper#share_with_group_lock_help_text root_share_with_group_locked: false, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: false, current_user: :sub_sub_owner, help_text: :ancestor_locked_and_has_been_overridden, linked_ancestor: :subgroup has the correct help text with correct ancestor links\n # around hook at ./spec/spec_helper.rb:186 did not execute the example\n # ./spec/helpers/groups_helper_spec.rb:198\n\n 77) GroupsHelper#share_with_group_lock_help_text root_share_with_group_locked: false, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: true, current_user: :root_owner, help_text: :ancestor_locked_but_you_can_override, linked_ancestor: :subgroup has the correct help text with correct ancestor links\n # around hook at ./spec/spec_helper.rb:186 did not execute the example\n # ./spec/helpers/groups_helper_spec.rb:198\n\n 78) GroupsHelper#share_with_group_lock_help_text root_share_with_group_locked: false, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: true, current_user: :sub_owner, help_text: :ancestor_locked_but_you_can_override, linked_ancestor: :subgroup has the correct help text with correct ancestor links\n # around hook at ./spec/spec_helper.rb:186 did not execute the example\n # ./spec/helpers/groups_helper_spec.rb:198\n\n 79) GroupsHelper#share_with_group_lock_help_text root_share_with_group_locked: false, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: true, current_user: :sub_sub_owner, help_text: :ancestor_locked_so_ask_the_owner, linked_ancestor: :subgroup has the correct help text with correct ancestor links\n # around hook at ./spec/spec_helper.rb:186 did not execute the example\n # ./spec/helpers/groups_helper_spec.rb:198\n\n 80) GroupsHelper#share_with_group_lock_help_text root_share_with_group_locked: true, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: false, current_user: :root_owner, help_text: :default_help, linked_ancestor: nil has the correct help text with correct ancestor links\n # around hook at ./spec/spec_helper.rb:186 did not execute the example\n # ./spec/helpers/groups_helper_spec.rb:198\n\n 81) GroupsHelper#share_with_group_lock_help_text root_share_with_group_locked: true, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: false, current_user: :sub_owner, help_text: :default_help, linked_ancestor: nil has the correct help text with correct ancestor links\n # around hook at ./spec/spec_helper.rb:186 did not execute the example\n # ./spec/helpers/groups_helper_spec.rb:198\n\n 82) GroupsHelper#share_with_group_lock_help_text root_share_with_group_locked: true, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: false, current_user: :sub_sub_owner, help_text: :default_help, linked_ancestor: nil has the correct help text with correct ancestor links\n # around hook at ./spec/spec_helper.rb:186 did not execute the example\n # ./spec/helpers/groups_helper_spec.rb:198\n\n 83) GroupsHelper#share_with_group_lock_help_text root_share_with_group_locked: true, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: true, current_user: :root_owner, help_text: :default_help, linked_ancestor: nil has the correct help text with correct ancestor links\n # around hook at ./spec/spec_helper.rb:186 did not execute the example\n # ./spec/helpers/groups_helper_spec.rb:198\n\n 84) GroupsHelper#share_with_group_lock_help_text root_share_with_group_locked: true, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: true, current_user: :sub_owner, help_text: :default_help, linked_ancestor: nil has the correct help text with correct ancestor links\n # around hook at ./spec/spec_helper.rb:186 did not execute the example\n # ./spec/helpers/groups_helper_spec.rb:198\n\n 85) GroupsHelper#share_with_group_lock_help_text root_share_with_group_locked: true, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: true, current_user: :sub_sub_owner, help_text: :default_help, linked_ancestor: nil has the correct help text with correct ancestor links\n # around hook at ./spec/spec_helper.rb:186 did not execute the example\n # ./spec/helpers/groups_helper_spec.rb:198\n\n 86) GroupsHelper#share_with_group_lock_help_text root_share_with_group_locked: true, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: false, current_user: :root_owner, help_text: :ancestor_locked_and_has_been_overridden, linked_ancestor: :root_group has the correct help text with correct ancestor links\n # around hook at ./spec/spec_helper.rb:186 did not execute the example\n # ./spec/helpers/groups_helper_spec.rb:198\n\n 87) GroupsHelper#share_with_group_lock_help_text root_share_with_group_locked: true, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: false, current_user: :sub_owner, help_text: :ancestor_locked_and_has_been_overridden, linked_ancestor: :root_group has the correct help text with correct ancestor links\n # around hook at ./spec/spec_helper.rb:186 did not execute the example\n # ./spec/helpers/groups_helper_spec.rb:198\n\n 88) GroupsHelper#share_with_group_lock_help_text root_share_with_group_locked: true, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: false, current_user: :sub_sub_owner, help_text: :ancestor_locked_and_has_been_overridden, linked_ancestor: :root_group has the correct help text with correct ancestor links\n # around hook at ./spec/spec_helper.rb:186 did not execute the example\n # ./spec/helpers/groups_helper_spec.rb:198\n\n 89) GroupsHelper#share_with_group_lock_help_text root_share_with_group_locked: true, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: true, current_user: :root_owner, help_text: :ancestor_locked_but_you_can_override, linked_ancestor: :root_group has the correct help text with correct ancestor links\n # around hook at ./spec/spec_helper.rb:186 did not execute the example\n # ./spec/helpers/groups_helper_spec.rb:198\n\n 90) GroupsHelper#share_with_group_lock_help_text root_share_with_group_locked: true, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: true, current_user: :sub_owner, help_text: :ancestor_locked_so_ask_the_owner, linked_ancestor: :root_group has the correct help text with correct ancestor links\n # around hook at ./spec/spec_helper.rb:186 did not execute the example\n # ./spec/helpers/groups_helper_spec.rb:198\n\n 91) GroupsHelper#share_with_group_lock_help_text root_share_with_group_locked: true, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: true, current_user: :sub_sub_owner, help_text: :ancestor_locked_so_ask_the_owner, linked_ancestor: :root_group has the correct help text with correct ancestor links\n # around hook at ./spec/spec_helper.rb:186 did not execute the example\n # ./spec/helpers/groups_helper_spec.rb:198\n\n 92) AutocompleteUsersFinder#execute when passed a subgroup includes users from parent groups as well\n # around hook at ./spec/spec_helper.rb:186 did not execute the example\n # ./spec/finders/autocomplete_users_finder_spec.rb:55\n\nFinished in 5 minutes 7 seconds (files took 16.6 seconds to load)\n819 examples, 0 failures, 92 pending\n\nsection_end:1522927514:build_script\n\e[0Ksection_start:1522927514:after_script\n\e[0K\e[32;1mRunning after script...\e[0;m\n\e[32;1m$ date\e[0;m\nThu Apr 5 11:25:14 UTC 2018\nsection_end:1522927515:after_script\n\e[0Ksection_start:1522927515:archive_cache\n\e[0K\e[32;1mNot uploading cache ruby-2.3.6-with-yarn due to policy\e[0;m\nsection_end:1522927516:archive_cache\n\e[0Ksection_start:1522927516:upload_artifacts\n\e[0K\e[32;1mUploading artifacts...\e[0;m\ncoverage/: found 5 matching files \e[0;m\nknapsack/: found 5 matching files \e[0;m\nrspec_flaky/: found 4 matching files \e[0;m\n\e[0;33mWARNING: tmp/capybara/: no matching files \e[0;m\nUploading artifacts to coordinator... ok \e[0;m id\e[0;m=61303283 responseStatus\e[0;m=201 Created token\e[0;m=rusBKvxM\nsection_end:1522927520:upload_artifacts\n\e[0K\e[32;1mJob succeeded\n\e[0;m\n"4 #truncate5 when data does not exist6 when buffer size is smaller than file size7 behaves like truncates a trace8 is expected to eq "\e[0KRunnin"9 when buffer size is larger than file size10 behaves like truncates a trace11 is expected to eq "\e[0KRunnin"12 #destroy!13 deletes14UsersFinder15 #execute16 with a normal user17 behaves like executes users finder as normal user18 returns searchable users19 filters by username20 filters by id21 filters by username (case insensitive)22 filters by search23 does not filter by private emails search24 filters by external users25 filters by non external users26 filters by created_at27 filters by non internal users28 does not filter by custom attributes29 orders returned results30 does not filter by admins31 minimum character limit for search32 passes use_minimum_char_limit from params33 allows searching with 2 characters when use_minimum_char_limit is false34 does not allow searching with 2 characters when use_minimum_char_limit is not set35 with an admin user36 when admin mode setting is disabled37 behaves like executes users finder as admin38 filters by external users39 returns all users40 filters by blocked users41 filters by active users42 returns only admins43 filters by custom attributes44 filters by private emails search45 when admin mode setting is enabled46 when in admin mode47 behaves like executes users finder as admin48 filters by external users49 returns all users50 filters by blocked users51 filters by active users52 returns only admins53 filters by custom attributes54 filters by private emails search55 when not in admin mode56 behaves like executes users finder as normal user57 returns searchable users58 filters by username59 filters by id60 filters by username (case insensitive)61 filters by search62 does not filter by private emails search63 filters by external users64 filters by non external users65 filters by created_at66 filters by non internal users67 does not filter by custom attributes68 orders returned results69 does not filter by admins70 minimum character limit for search71 passes use_minimum_char_limit from params72 allows searching with 2 characters when use_minimum_char_limit is false73 does not allow searching with 2 characters when use_minimum_char_limit is not set74DiffViewer::Base75 .can_render?76 when the extension is supported77 when the binaryness matches78 returns true79 when the binaryness does not match80 returns false81 when the extension and file type are not supported82 returns false83 when the file was renamed and only the old blob is supported84 returns false85 #collapsed?86 when the combined blob size is larger than the collapse limit87 returns true88 when the combined blob size is smaller than the collapse limit89 returns false90 #too_large?91 when the combined blob size is larger than the size limit92 returns true93 when the blob size is smaller than the size limit94 returns false95 #render_error96 when the combined blob size is larger than the size limit97 returns :too_large98 when the combined blob size is smaller than the size limit99 returns nil100 #render_error_message101 returns nothing when no render_error102 when render_error error103 returns an error message104 includes a "view the blob" link105Gitlab::Prometheus::Queries::AdditionalMetricsDeploymentQuery106 queries using specific time107 metrics query context108 project has Kubernetes service109 when user configured kubernetes from CI/CD > Clusters110 query context contains kube_namespace111 behaves like query context containing environment slug and filter112 contains ci_environment_slug113 contains environment filter114 project without Kubernetes service115 query context contains empty kube_namespace116 behaves like query context containing environment slug and filter117 contains ci_environment_slug118 contains environment filter119 with one group where two metrics is found120 when some queries return results121 return group data only for queries with results122 with two groups with one metric each123 when both queries return results124 return group data both queries125 when one query returns result126 return group data only for query with results127Ci::UpdateBuildStateService128 when build has unknown failure reason129 updates a build status130 when build has failed131 sends a build failed event to Snowplow132 when build does not have checksum133 when state has changed134 updates a state of a running build135 returns 200 OK status136 does not increment finalized trace metric137 when it is a heartbeat request138 updates a build timestamp139 when state is unknown140 responds with 400 bad request141 when build has a checksum142 when build does not have associated trace chunks143 updates a build status144 updates the allow_failure flag145 does not increment invalid trace metric146 does not increment chunks_invalid_checksum trace metric147 when build trace has been migrated148 updates a build state149 updates the allow_failure flag150 responds with 200 OK status151 does not set a backoff value152 increments trace finalized operation metric153 records migration duration in a histogram154 when trace checksum is not valid155 increments invalid trace metric156 increments chunks_invalid_checksum trace metric157 when trace checksum is valid158 does not increment invalid or corrupted trace metric159 when using deprecated parameters160 does not increment invalid or corrupted trace metric161 when trace checksum is invalid and the log is corrupted162 increments invalid and corrupted trace metrics163 when trace checksum is invalid but the log seems fine164 does not increment corrupted trace metric165 when failed to acquire a build trace lock166 accepts a state update request167 increment locked trace metric168 when build trace has not been migrated yet169 does not update a build state170 responds with 202 accepted171 sets a request backoff value172 schedules live chunks for migration173 creates a pending state record174 increments trace accepted operation metric175 does not increment invalid trace metric176 when build pending state is outdated177 responds with 200 OK178 updates build state179 increments discarded traces metric180 does not increment finalized trace metric181 when build pending state has changes182 uses stored state and responds with 200 OK183 increments conflict trace metric184 when live traces are disabled185 responds with 200 OK186Gitlab::Database::MigrationHelpers::V2187 #rename_column_concurrently188 behaves like Setting up to rename a column189 creates the renamed column, syncing existing data190 installs triggers to sync new data191 requires the helper to run in ddl mode192 when called inside a transaction block193 raises an error194 when the existing column has a default function195 raises an error196 when passing a batch column197 when the batch column does not exist198 raises an error199 when the batch column does exist200 passes it when creating the column201 when the existing column has a default value202 creates the renamed column, syncing existing data203 installs triggers to sync new data204 when the existing column has a default value that evaluates to NULL205 creates the renamed column, syncing existing data206 installs triggers to sync new data207 when the column to rename does not exist208 raises an error209 #undo_cleanup_concurrent_column_rename210 behaves like Setting up to rename a column211 creates the renamed column, syncing existing data212 installs triggers to sync new data213 requires the helper to run in ddl mode214 when called inside a transaction block215 raises an error216 when the existing column has a default function217 raises an error218 when passing a batch column219 when the batch column does not exist220 raises an error221 when the batch column does exist222 passes it when creating the column223 when the existing column has a default value224 creates the renamed column, syncing existing data225 installs triggers to sync new data226 when the existing column has a default value that evaluates to NULL227 creates the renamed column, syncing existing data228 installs triggers to sync new data229 when the renamed column does not exist230 raises an error231 #undo_rename_column_concurrently232 behaves like Cleaning up from renaming a column233 when the helper is called repeatedly234 does not make repeated attempts to cleanup235 when the renamed column exists236 removes the sync triggers and renamed columns237 #cleanup_concurrent_column_rename238 behaves like Cleaning up from renaming a column239 when the helper is called repeatedly240 does not make repeated attempts to cleanup241 when the renamed column exists242 removes the sync triggers and renamed columns243 #create_table244 using a limit: attribute on .text245 creates the table as expected246 #with_lock_retries247-- transaction_open?()248 -> 0.0002s249 sets the migration class name in the logs250-- transaction_open?()251 -> 0.0002s252 does not raise on exhaustion by default253-- transaction_open?()254 -> 0.0002s255 defaults to disallowing subtransactions256 raise_on_exhaustion: true257-- transaction_open?()258 -> 0.0002s259 sets raise_on_exhaustion as requested260 raise_on_exhaustion: false261-- transaction_open?()262 -> 0.0002s263 sets raise_on_exhaustion as requested264 when in transaction265 when lock retries are enabled266 does not use Gitlab::Database::WithLockRetries and executes the provided block directly267 when lock retries are not enabled268 raises an error269 #truncate_tables!270 truncates the table271 truncates multiple tables272 raises an ArgumentError if truncating multiple gitlab_schema273 with multiple databases274 for ci database275 skips the TRUNCATE statement tables not in schema for connection276 for main database277 executes a TRUNCATE statement278 with single database279 executes a TRUNCATE statement (PENDING: Skipping because database ci exists)280Gitlab::Git::Tag281 #tags282 is expected to be > 0283 unsigned tag284 is expected to eq "v1.0.0"285 is expected to eq "f4e6814c3e4e7a0de82a9e7cd20c626cc963a2f8"286 is expected to eq "6f6d7e7ed97bb5f0054f2b1df789b39ca89b6ff9"287 is expected to eq "Release"288 is expected to be falsey289 is expected to eq :NONE290 is expected to be nil291 is expected to eq "Dmitriy Zaporozhets"292 is expected to eq "dmitriy.zaporozhets@gmail.com"293 is expected to eq 2014-02-27 08:54:59.000000000 +0000294 signed tag295 is expected to eq "v1.1.1"296 is expected to eq "8f03acbcd11c53d9c9468078f32a2622005a4841"297 is expected to eq "189a6c924013fc3fe40d6f1ec1dc20214183bc97"298 is expected to eq "x509 signed tag\n-----BEGIN SIGNED MESSAGE-----\nMIISfwYJKoZIhvcNAQcCoIIScDCCEmwCAQExDTALBglghkgBZQMEAgEwCwYJKoZI\nhvcNAQcBoIIP8zCCB3QwggVcoAMCAQICBBXXLOIwDQYJKoZIhvcNAQELBQAwgbYx\nCzAJBgNVBAYTAkRFMQ8wDQYDVQQIDAZCYXllcm4xETAPBgNVBAcMCE11ZW5jaGVu\nMRAwDgYDVQQKDAdTaWVtZW5zMREwDwYDVQQFEwhaWlpaWlpBNjEdMBsGA1UECwwU\nU2llbWVucyBUcnVzdCBDZW50ZXIxPzA9BgNVBAMMNlNpZW1lbnMgSXNzdWluZyBD\nQSBNZWRpdW0gU3RyZW5ndGggQXV0aGVudGljYXRpb24gMjAxNjAeFw0xNzAyMDMw\nNjU4MzNaFw0yMDAyMDMwNjU4MzNaMFsxETAPBgNVBAUTCFowMDBOV0RIMQ4wDAYD\nVQQqDAVSb2dlcjEOMAwGA1UEBAwFTWVpZXIxEDAOBgNVBAoMB1NpZW1lbnMxFDAS\nBgNVBAMMC01laWVyIFJvZ2VyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC\nAQEAuBNea/68ZCnHYQjpm/k3ZBG0wBpEKSwG6lk9CEQlSxsqVLQHAoAKBIlJm1in\nYVLcK/Sq1yhYJ/qWcY/M53DhK2rpPuhtrWJUdOUy8EBWO20F4bd4Fw9pO7jt8bme\nu33TSrK772vKjuppzB6SeG13Cs08H+BIeD106G27h7ufsO00pvsxoSDL+uc4slnr\npBL+2TAL7nSFnB9QHWmRIK27SPqJE+lESdb0pse11x1wjvqKy2Q7EjL9fpqJdHzX\nNLKHXd2r024TOORTa05DFTNR+kQEKKV96XfpYdtSBomXNQ44cisiPBJjFtYvfnFE\nwgrHa8fogn/b0C+A+HAoICN12wIDAQABo4IC4jCCAt4wHQYDVR0OBBYEFCF+gkUp\nXQ6xGc0kRWXuDFxzA14zMEMGA1UdEQQ8MDqgIwYKKwYBBAGCNxQCA6AVDBNyLm1l\naWVyQHNpZW1lbnMuY29tgRNyLm1laWVyQHNpZW1lbnMuY29tMA4GA1UdDwEB/wQE\nAwIHgDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwgcoGA1UdHwSBwjCB\nvzCBvKCBuaCBtoYmaHR0cDovL2NoLnNpZW1lbnMuY29tL3BraT9aWlpaWlpBNi5j\ncmyGQWxkYXA6Ly9jbC5zaWVtZW5zLm5ldC9DTj1aWlpaWlpBNixMPVBLST9jZXJ0\naWZpY2F0ZVJldm9jYXRpb25MaXN0hklsZGFwOi8vY2wuc2llbWVucy5jb20vQ049\nWlpaWlpaQTYsbz1UcnVzdGNlbnRlcj9jZXJ0aWZpY2F0ZVJldm9jYXRpb25MaXN0\nMEUGA1UdIAQ+MDwwOgYNKwYBBAGhaQcCAgMBAzApMCcGCCsGAQUFBwIBFhtodHRw\nOi8vd3d3LnNpZW1lbnMuY29tL3BraS8wDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAW\ngBT4FV1HDGx3e3LEAheRaKK292oJRDCCAQQGCCsGAQUFBwEBBIH3MIH0MDIGCCsG\nAQUFBzAChiZodHRwOi8vYWguc2llbWVucy5jb20vcGtpP1paWlpaWkE2LmNydDBB\nBggrBgEFBQcwAoY1bGRhcDovL2FsLnNpZW1lbnMubmV0L0NOPVpaWlpaWkE2LEw9\nUEtJP2NBQ2VydGlmaWNhdGUwSQYIKwYBBQUHMAKGPWxkYXA6Ly9hbC5zaWVtZW5z\nLmNvbS9DTj1aWlpaWlpBNixvPVRydXN0Y2VudGVyP2NBQ2VydGlmaWNhdGUwMAYI\nKwYBBQUHMAGGJGh0dHA6Ly9vY3NwLnBraS1zZXJ2aWNlcy5zaWVtZW5zLmNvbTAN\nBgkqhkiG9w0BAQsFAAOCAgEAXPVcX6vaEcszJqg5IemF9aFTlwTrX5ITNIpzcqG+\nkD5haOf2mZYLjl+MKtLC1XfmIsGCUZNb8bjP6QHQEI+2d6x/ZOqPq7Kd7PwVu6x6\nxZrkDjUyhUbUntT5+RBy++l3Wf6Cq6Kx+K8ambHBP/bu90/p2U8KfFAG3Kr2gI2q\nfZrnNMOxmJfZ3/sXxssgLkhbZ7hRa+MpLfQ6uFsSiat3vlawBBvTyHnoZ/7oRc8y\nqi6QzWcd76CPpMElYWibl+hJzKbBZUWvc71AzHR6i1QeZ6wubYz7vr+FF5Y7tnxB\nVz6omPC9XAg0F+Dla6Zlz3Awj5imCzVXa+9SjtnsidmJdLcKzTAKyDewewoxYOOJ\nj3cJU7VSjJPl+2fVmDBaQwcNcUcu/TPAKApkegqO7tRF9IPhjhW8QkRnkqMetO3D\nOXmAFVIsEI0Hvb2cdb7B6jSpjGUuhaFm9TCKhQtCk2p8JCDTuaENLm1x34rrJKbT\n2vzyYN0CZtSkUdgD4yQxK9VWXGEzexRisWb4AnZjD2NAquLPpXmw8N0UwFD7MSpC\ndpaX7FktdvZmMXsnGiAdtLSbBgLVWOD1gmJFDjrhNbI8NOaOaNk4jrfGqNh5lhGU\n4DnBT2U6Cie1anLmFH/oZooAEXR2o3Nu+1mNDJChnJp0ovs08aa3zZvBdcloOvfU\nqdowggh3MIIGX6ADAgECAgQtyi/nMA0GCSqGSIb3DQEBCwUAMIGZMQswCQYDVQQG\nEwJERTEPMA0GA1UECAwGQmF5ZXJuMREwDwYDVQQHDAhNdWVuY2hlbjEQMA4GA1UE\nCgwHU2llbWVuczERMA8GA1UEBRMIWlpaWlpaQTExHTAbBgNVBAsMFFNpZW1lbnMg\nVHJ1c3QgQ2VudGVyMSIwIAYDVQQDDBlTaWVtZW5zIFJvb3QgQ0EgVjMuMCAyMDE2\nMB4XDTE2MDcyMDEzNDYxMFoXDTIyMDcyMDEzNDYxMFowgbYxCzAJBgNVBAYTAkRF\nMQ8wDQYDVQQIDAZCYXllcm4xETAPBgNVBAcMCE11ZW5jaGVuMRAwDgYDVQQKDAdT\naWVtZW5zMREwDwYDVQQFEwhaWlpaWlpBNjEdMBsGA1UECwwUU2llbWVucyBUcnVz\ndCBDZW50ZXIxPzA9BgNVBAMMNlNpZW1lbnMgSXNzdWluZyBDQSBNZWRpdW0gU3Ry\nZW5ndGggQXV0aGVudGljYXRpb24gMjAxNjCCAiIwDQYJKoZIhvcNAQEBBQADggIP\nADCCAgoCggIBAL9UfK+JAZEqVMVvECdYF9IK4KSw34AqyNl3rYP5x03dtmKaNu+2\n0fQqNESA1NGzw3s6LmrKLh1cR991nB2cvKOXu7AvEGpSuxzIcOROd4NpvRx+Ej1p\nJIPeqf+ScmVK7lMSO8QL/QzjHOpGV3is9sG+ZIxOW9U1ESooy4Hal6ZNs4DNItsz\npiCKqm6G3et4r2WqCy2RRuSqvnmMza7Y8BZsLy0ZVo5teObQ37E/FxqSrbDI8nxn\nB7nVUve5ZjrqoIGSkEOtyo11003dVO1vmWB9A0WQGDqE/q3w178hGhKfxzRaqzyi\nSoADUYS2sD/CglGTUxVq6u0pGLLsCFjItcCWqW+T9fPYfJ2CEd5b3hvqdCn+pXjZ\n/gdX1XAcdUF5lRnGWifaYpT9n4s4adzX8q6oHSJxTppuAwLRKH6eXALbGQ1I9lGQ\nDSOipD/09xkEsPw6HOepmf2U3YxZK1VU2sHqugFJboeLcHMzp6E1n2ctlNG1GKE9\nFDHmdyFzDi0Nnxtf/GgVjnHF68hByEE1MYdJ4nJLuxoT9hyjYdRW9MpeNNxxZnmz\nW3zh7QxIqP0ZfIz6XVhzrI9uZiqwwojDiM5tEOUkQ7XyW6grNXe75yt6mTj89LlB\nH5fOW2RNmCy/jzBXDjgyskgK7kuCvUYTuRv8ITXbBY5axFA+CpxZqokpAgMBAAGj\nggKmMIICojCCAQUGCCsGAQUFBwEBBIH4MIH1MEEGCCsGAQUFBzAChjVsZGFwOi8v\nYWwuc2llbWVucy5uZXQvQ049WlpaWlpaQTEsTD1QS0k/Y0FDZXJ0aWZpY2F0ZTAy\nBggrBgEFBQcwAoYmaHR0cDovL2FoLnNpZW1lbnMuY29tL3BraT9aWlpaWlpBMS5j\ncnQwSgYIKwYBBQUHMAKGPmxkYXA6Ly9hbC5zaWVtZW5zLmNvbS91aWQ9WlpaWlpa\nQTEsbz1UcnVzdGNlbnRlcj9jQUNlcnRpZmljYXRlMDAGCCsGAQUFBzABhiRodHRw\nOi8vb2NzcC5wa2ktc2VydmljZXMuc2llbWVucy5jb20wHwYDVR0jBBgwFoAUcG2g\nUOyp0CxnnRkV/v0EczXD4tQwEgYDVR0TAQH/BAgwBgEB/wIBADBABgNVHSAEOTA3\nMDUGCCsGAQQBoWkHMCkwJwYIKwYBBQUHAgEWG2h0dHA6Ly93d3cuc2llbWVucy5j\nb20vcGtpLzCBxwYDVR0fBIG/MIG8MIG5oIG2oIGzhj9sZGFwOi8vY2wuc2llbWVu\ncy5uZXQvQ049WlpaWlpaQTEsTD1QS0k/YXV0aG9yaXR5UmV2b2NhdGlvbkxpc3SG\nJmh0dHA6Ly9jaC5zaWVtZW5zLmNvbS9wa2k/WlpaWlpaQTEuY3JshkhsZGFwOi8v\nY2wuc2llbWVucy5jb20vdWlkPVpaWlpaWkExLG89VHJ1c3RjZW50ZXI/YXV0aG9y\naXR5UmV2b2NhdGlvbkxpc3QwJwYDVR0lBCAwHgYIKwYBBQUHAwIGCCsGAQUFBwME\nBggrBgEFBQcDCTAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFPgVXUcMbHd7csQC\nF5Foorb3aglEMA0GCSqGSIb3DQEBCwUAA4ICAQBw+sqMp3SS7DVKcILEmXbdRAg3\nlLO1r457KY+YgCT9uX4VG5EdRKcGfWXK6VHGCi4Dos5eXFV34Mq/p8nu1sqMuoGP\nYjHn604eWDprhGy6GrTYdxzcE/GGHkpkuE3Ir/45UcmZlOU41SJ9SNjuIVrSHMOf\nccSY42BCspR/Q1Z/ykmIqQecdT3/Kkx02GzzSN2+HlW6cEO4GBW5RMqsvd2n0h2d\nfe2zcqOgkLtx7u2JCR/U77zfyxG3qXtcymoz0wgSHcsKIl+GUjITLkHfS9Op8V7C\nGr/dX437sIg5pVHmEAWadjkIzqdHux+EF94Z6kaHywohc1xG0KvPYPX7iSNjkvhz\n4NY53DHmxl4YEMLffZnaS/dqyhe1GTpcpyN8WiR4KuPfxrkVDOsuzWFtMSvNdlOV\ngdI0MXcLMP+EOeANZWX6lGgJ3vWyemo58nzgshKd24MY3w3i6masUkxJH2KvI7UH\n/1Db3SC8oOUjInvSRej6M3ZhYWgugm6gbpUgFoDw/o9Cg6Qm71hY0JtcaPC13rzm\nN8a2Br0+Fa5e2VhwLmAxyfe1JKzqPwuHT0S5u05SQghL5VdzqfA8FCL/j4XC9yI6\ncsZTAQi73xFQYVjZt3+aoSz84lOlTmVo/jgvGMY/JzH9I4mETGgAJRNj34Z/0meh\nM+pKWCojNH/dgyJSwDGCAlIwggJOAgEBMIG/MIG2MQswCQYDVQQGEwJERTEPMA0G\nA1UECAwGQmF5ZXJuMREwDwYDVQQHDAhNdWVuY2hlbjEQMA4GA1UECgwHU2llbWVu\nczERMA8GA1UEBRMIWlpaWlpaQTYxHTAbBgNVBAsMFFNpZW1lbnMgVHJ1c3QgQ2Vu\ndGVyMT8wPQYDVQQDDDZTaWVtZW5zIElzc3VpbmcgQ0EgTWVkaXVtIFN0cmVuZ3Ro\nIEF1dGhlbnRpY2F0aW9uIDIwMTYCBBXXLOIwCwYJYIZIAWUDBAIBoGkwHAYJKoZI\nhvcNAQkFMQ8XDTE5MTEyMDE0NTYyMFowLwYJKoZIhvcNAQkEMSIEIJDnZUpcVLzC\nOdtpkH8gtxwLPIDE0NmAmFC9uM8q2z+OMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0B\nBwEwCwYJKoZIhvcNAQEBBIIBAH/Pqv2xp3a0jSPkwU1K3eGA/1lfoNJMUny4d/PS\nLVWlkgrmedXdLmuBzAGEaaZOJS0lEpNd01pR/reHs7xxZ+RZ0olTs2ufM0CijQSx\nOL9HDl2O3OoD77NWx4tl3Wy1yJCeV3XH/cEI7AkKHCmKY9QMoMYWh16ORBtr+YcS\nYK+gONOjpjgcgTJgZ3HSFgQ50xiD4WT1kFBHsuYsLqaOSbTfTN6Ayyg4edjrPQqa\nVcVf1OQcIrfWA3yMQrnEZfOYfN/D4EPjTfxBV+VCi/F2bdZmMbJ7jNk1FbewSwWO\nSDH1i0K32NyFbnh0BSos7njq7ELqKlYBsoB/sZfaH2vKy5U=\n-----END SIGNED MESSAGE-----"299 is expected to be truthy300 is expected to eq :X509301 is expected not to be nil302 is expected to eq "Roger Meier"303 is expected to eq "r.meier@siemens.com"304 is expected to eq 2019-11-20 14:56:20.000000000 +0000305 .get_message306 gets tag messages307 gets messages in one batch308 .extract_signature_lazily309 when the tag is signed310 returns signature and signed text311 when the tag has no signature312 returns empty signature and message as signed text313 when the tag cannot be found314 raises GRPC::Internal315 when the tag ID is invalid316 raises GRPC::Internal317 when loading signatures in batch once318 fetches signatures in batch once319 tag into from Gitaly tag320 message_size != message.size321 message_size less than threshold322 fetches tag message separately323 message_size greater than threshold324 returns a notice about message size325 #cache_key326 returns a cache key that changes based on changeable values327projects/commit/branches.html.haml328 when branches and tags are available329 shows default branch330 shows js expand link331 shows branch and tag links332 when branches are available but no tags333 shows branches334 shows js expand link335 shows limit exceeded message for tags336 when tags are available but no branches (just default)337 shows default branch338 shows js expand link339 shows tags340 shows limit exceeded for branches341 when branches and tags are not available342 shows default branch343 shows js expand link344 shows too many to search345Mutations::DesignManagement::Upload346 #resolve347 when the feature is not available348 behaves like resource not available349 raises an error350 when the feature is available351 contention in the design repo352 running requests in parallel353 does not cause errors354 running requests in parallel on different issues355 does not cause errors356 running requests in serial357 does not cause errors358 when the user is not allowed to upload designs359 behaves like resource not available360 raises an error361 with a valid design362 returns the updated designs363 when passing an invalid project364 behaves like resource not available365 raises an error366 when passing an invalid issue367 behaves like resource not available368 raises an error369 when creating designs causes errors370 wraps the errors371Gitlab::Redis::RateLimiting372 behaves like redis_shared_examples373 .config_file_name374 when there is no config file anywhere375 is expected to be nil376 .store377 with old format378 behaves like redis store379 instantiates Redis::Store380 with the namespace381 uses specified namespace382 with new format383 behaves like redis store384 instantiates Redis::Store385 with the namespace386 uses specified namespace387 .params388 withstands mutation389 when url contains unix socket reference390 with old format391 returns path key instead392 with new format393 returns path key instead394 when url is host based395 with old format396 returns hash with host, port, db, and password397 with new format398 rails_env: "development", host: "development-host"399 returns hash with host, port, db, and password400 rails_env: "test", host: "test-host"401 returns hash with host, port, db, and password402 rails_env: "production", host: "production-host"403 returns hash with host, port, db, and password404 with redis cluster format405 rails_env: "development", host: "development-master"406 returns hash with cluster and password407 rails_env: "test", host: "test-master"408 returns hash with cluster and password409 rails_env: "production", host: "production-master"410 returns hash with cluster and password411 .url412 withstands mutation413 when yml file with env variable414 reads redis url from env variable415 .version416 returns a version417 .with418 when running on single-threaded runtime419 instantiates a connection pool with size 5420 when running on multi-threaded runtime421 instantiates a connection pool with a size based on the concurrency of the worker422 when there is no config at all423 can run an empty block424 #db425 with old format426 returns the correct db427 with new format428 returns the correct db429 with cluster-mode430 returns the correct db431 #sentinels432 when sentinels are defined433 rails_env: "development", hosts: ["development-replica1", "development-replica2"]434 returns an array of hashes with host and port keys435 rails_env: "test", hosts: ["test-replica1", "test-replica2"]436 returns an array of hashes with host and port keys437 rails_env: "production", hosts: ["production-replica1", "production-replica2"]438 returns an array of hashes with host and port keys439 when sentinels are not defined440 returns nil441 when cluster is defined442 returns nil443 #sentinels?444 when sentinels are defined445 returns true446 when sentinels are not defined447 is expected to eq nil448 when cluster is defined449 returns false450 #raw_config_hash451 returns old-style single url config in a hash452 returns cluster config without url key in a hash453 #fetch_config454 raises an exception when the config file contains invalid yaml455 when redis.yml exists456 uses config/redis.yml457 when no config file exsits458 returns nil459 when resque.yml exists460 returns the config from resque.yml461 #fetch_config462 when redis.yml exists463 when the fallback has a redis.yml entry464 is expected to eq {"fallback redis.yml"=>123}465 and an instance config file exists466 is expected to eq {"instance specific file"=>456}467 and the instance has a redis.yml entry468 is expected to eq {"instance redis.yml"=>789}469 when no redis config file exsits470 returns nil471 when resque.yml exists472 returns the config from resque.yml473Gitlab::Usage::Metrics::Instrumentations::JiraActiveIntegrationsMetric474 # order random475 raises an exception if option has invalid value476 raises an exception if option is not present477 behaves like a correct instrumented metric value and query478 behaves like a correct instrumented metric value479 has correct value480 behaves like a correct instrumented metric query481 has correct generate query482Clusters::AgentToken483 is expected to belong to agent class_name => Clusters::Agent required: true484 is expected to belong to created_by_user class_name => User optional: true485 is expected to validate that the length of :description is at most 1024486 is expected to validate that the length of :name is at most 255487 is expected to validate that :name cannot be empty/falsy488 behaves like having unique enum values489 has unique values in "status"490 scopes491 .order_last_used_at_desc492 sorts by last_used_at descending, with null values at last493 status-related scopes494 .with_status495 when filtering by active status496 is expected to contain exactly #<Clusters::AgentToken id: 4, created_at: "2023-08-10 12:35:03.191231196 +0000", updated_at: "2023-08-10 12:35:03.191231196 +0000", agent_id: 2, token_encrypted: "vo7GWRPexyNq02BscNPzC4Z1nmT1M8HJhP3Gz7m8uYEKdzhQCa...", created_by_user_id: 1030, description: nil, name: "agent-token-4", last_used_at: nil, status: "active">497 when filtering by revoked status498 is expected to contain exactly #<Clusters::AgentToken id: 7, created_at: "2023-08-10 12:35:04.809556685 +0000", updated_at: "2023-08-10 12:35:04.809556685 +0000", agent_id: 5, token_encrypted: "uYqUX0iFxXRm12NkJdbzWdN3zWb3Z5aYgqzGz7m6vtJcdDJSWK...", created_by_user_id: 1039, description: nil, name: "agent-token-7", last_used_at: nil, status: "revoked">499 .active500 is expected to contain exactly #<Clusters::AgentToken id: 8, created_at: "2023-08-10 12:35:05.430126534 +0000", updated_at: "2023-08-10 12:35:05.430126534 +0000", agent_id: 6, token_encrypted: "6oidDEjdynQzgTVhcNapDYFwzW+pZcDN1qnBnr6+v4YKdGAFXv...", created_by_user_id: 1042, description: nil, name: "agent-token-8", last_used_at: nil, status: "active">501 #token502 is generated on save503 is at least 50 characters504 #to_ability_name505 is :cluster506Gitlab::DiscussionsDiff::FileCollection507 #load_highlight508 writes uncached diffs highlight509 does not write cache for already cached file510 does not write cache for empty mapping511 does not write cache for resolved notes512 loaded diff files have highlighted lines loaded513 not loaded diff files does not have highlighted lines loaded514bin/audit-event-type515 # order random516 AuditEventTypeCreator517 properly creates an audit event type518 when running on master519 requires feature branch520 with invalid audit event type names521 argv: [".invalid.audit.type"], ex: /Provide a name for the audit event type that is/522 is expected to raise /Provide a name for the audit event type that is/523 argv: ["existing_audit_event_type"], ex: /already exists!/524 is expected to raise /already exists!/525 AuditEventTypeOptionParser526 .parse527 raises an error when name of the audit event type is missing528 parses -h529 param: :name, argv: ["foo"], result: "foo"530 is expected to eq "foo"531 param: :amend, argv: ["foo", "--amend"], result: true532 is expected to eq true533 param: :force, argv: ["foo", "-f"], result: true534 is expected to eq true535 param: :force, argv: ["foo", "--force"], result: true536 is expected to eq true537 param: :description, argv: ["foo", "-d", "desc"], result: "desc"538 is expected to eq "desc"539 param: :description, argv: ["foo", "--description", "desc"], result: "desc"540 is expected to eq "desc"541 param: :feature_category, argv: ["foo", "-c", "audit_events"], result: "audit_events"542 is expected to eq "audit_events"543 param: :feature_category, argv: ["foo", "--feature-category", "audit_events"], result: "audit_events"544 is expected to eq "audit_events"545 param: :milestone, argv: ["foo", "-M", "15.6"], result: "15.6"546 is expected to eq "15.6"547 param: :milestone, argv: ["foo", "--milestone", "15.6"], result: "15.6"548 is expected to eq "15.6"549 param: :saved_to_database, argv: ["foo", "-s"], result: true550 is expected to eq true551 param: :saved_to_database, argv: ["foo", "--saved-to-database"], result: true552 is expected to eq true553 param: :saved_to_database, argv: ["foo", "--no-saved-to-database"], result: false554 is expected to eq false555 param: :streamed, argv: ["foo", "-t"], result: true556 is expected to eq true557 param: :streamed, argv: ["foo", "--streamed"], result: true558 is expected to eq true559 param: :streamed, argv: ["foo", "--no-streamed"], result: false560 is expected to eq false561 param: :dry_run, argv: ["foo", "-n"], result: true562 is expected to eq true563 param: :dry_run, argv: ["foo", "--dry-run"], result: true564 is expected to eq true565 param: :ee, argv: ["foo", "-e"], result: true566 is expected to eq true567 param: :ee, argv: ["foo", "--ee"], result: true568 is expected to eq true569 param: :jh, argv: ["foo", "-j"], result: true570 is expected to eq true571 param: :jh, argv: ["foo", "--jh"], result: true572 is expected to eq true573 param: :introduced_by_mr, argv: ["foo", "-m", "https://url"], result: "https://url"574 is expected to eq "https://url"575 param: :introduced_by_mr, argv: ["foo", "--introduced-by-mr", "https://url"], result: "https://url"576 is expected to eq "https://url"577 param: :introduced_by_issue, argv: ["foo", "-i", "https://url"], result: "https://url"578 is expected to eq "https://url"579 param: :introduced_by_issue, argv: ["foo", "--introduced-by-issue", "https://url"], result: "https://url"580 is expected to eq "https://url"581 .read_description582 reads description from stdin583 when description is empty584 shows error message and retries585 .read_feature_category586 reads feature_category from stdin587 when feature category is empty588 shows error message and retries589 .read_saved_to_database590 reads saved_to_database from stdin591 when saved_to_database is invalid592 shows error message and retries593 .read_streamed594 reads streamed from stdin595 when streamed is invalid596 shows error message and retries597 .read_introduced_by_mr598 reads introduced_by_mr from stdin599 when URL is empty600 does not raise an error601 when URL is invalid602 shows error message and retries603 .read_introduced_by_issue604 reads type from stdin605 when URL is invalid606 shows error message and retries607 .read_milestone608 returns the correct milestone from the VERSION file609ProjectLabel610 relationships611 is expected to belong to project required: false612 validations613 is expected to validate that :project cannot be empty/falsy614 validates if title must not exist at group level615 returns error if title already exists at group level616 does not returns error if title does not exist at group level617 does not returns error if project does not belong to group618 does not returns error when title does not change619 when attempting to add more than one priority to the project label620 returns error621 #subject622 aliases project to subject623 #to_reference624 using id625 returns a String reference to the object626 using name627 returns a String reference to the object628 uses id when name contains double quote629 using invalid format630 raises error631 cross project reference632 using name633 returns cross reference with label name634 using id635 returns cross reference with label id636 #preloaded_parent_container637 when project is loaded638 does not invoke a DB query639 when parent_container is loaded640 does not invoke a DB query641 when none of them are loaded642 invokes a DB query643Gitlab::Kubernetes::DefaultNamespace644 #from_environment_name645 generates a slug and passes it to #from_environment_slug646 #from_environment_slug647 namespace per environment is enabled648 platform namespace is specified649 is expected to eq "platform-namespace-environment12"650 cluster is unmanaged651 is expected to eq "platform-namespace"652 platform namespace is blank653 constructs a namespace from the project and environment slug654 behaves like handles very long project paths655 is expected to satisfy expression `s.length <= 63`656 namespace per environment is disabled657 platform namespace is specified658 is expected to eq "platform-namespace"659 platform namespace is blank660 constructs a namespace from just the project661 behaves like handles very long project paths662 is expected to satisfy expression `s.length <= 63`663Gitlab::Email::ReplyParser664 #execute665 returns an empty string if the message is blank666 returns an empty string if the message is not an email667 returns an empty string if there is no reply content668 properly renders plaintext-only email669 properly renders html-only email with table and blockquote670 supports a Dutch reply671 removes an 'on date wrote' quoting line672 handles multiple paragraphs673 handles multiple paragraphs when parsing html674 handles newlines675 handles inline reply676 properly renders email reply from gmail web client677 properly renders email reply from iOS default mail client678 properly renders email reply from Android 5 gmail client679 properly renders email reply from Windows 8.1 Metro default mail client680 properly renders email reply from MS Outlook client681 properly renders html-only email from MS Outlook682 does not wrap links with no href in unnecessary brackets683 does not trim reply if trim_reply option is false684 appends trimmed reply when when append_reply option is true685 when allow_only_quotes is true686 returns quoted text from email687 properly renders email reply from gmail web client688 is expected to eq "### This is a reply from standard GMail in Google Chrome.\n\nThe quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.\n\nHere's some **bold** text, **strong** text and *italic* in Markdown.\n\nHere's a link http://example.com\n\nHere's an img <details>\n<summary>\nOne</summary>\nSome details</details>\n\n<details>\n<summary>\nTwo</summary>\nSome details</details>\n\nTest reply.\n\nFirst paragraph.\n\nSecond paragraph."689 non-UTF-8 content690 parses body under UTF-8 encoding691 charset is absent and reply trimming is disabled692 parses body under UTF-8 encoding693 multipart email694 parses body under UTF-8 encoding695 iso-8859-2 content696 parses body under UTF-8 encoding697Projects::LfsPointers::LfsDownloadLinkListService698 #each_link699 retrieves each download link of every non existent lfs object700 stores headers701 when lfs objects size is larger than the batch size702 when batch size703 retrieves them in batches704 when request fails with PayloadTooLarge error705 when the smaller batch eventually works706 retreives them eventually and logs exceptions707 when batch size cannot be any smaller708 raises an error and logs exceptions709 credentials710 when the download link and the lfs_endpoint have the same host711 when lfs_endpoint has credentials712 adds credentials to the download_link713 when lfs_endpoint does not have any credentials714 does not add any credentials715 when the download link and the lfs_endpoint have different hosts716 downloads without any credentials717 #download_links_for718 if request fails719 raises an error720 behaves like JSON parse errors721 raises an error722 behaves like JSON parse errors723 raises an error724 behaves like JSON parse errors725 raises an error726 #parse_response_links727 does not add oid entry if href not found728GrafanaIntegration729 associations730 is expected to belong to project required: false731 validations732 is expected to validate that :project cannot be empty/falsy733 is expected to validate that :encrypted_token cannot be empty/falsy734 disallows invalid urls for grafana_url735 allows valid urls for grafana_url736 disallows non-booleans in enabled column737 allows booleans in enabled column738 .client739 with grafana integration disabled740 returns a grafana client741 with grafana integration enabled742 returns nil743 attribute encryption744 token745 encrypts original value into encrypted_token attribute746 locks access to raw value in private method747 prevents overriding token value with its encrypted or masked version748 Callbacks749 before_validation :reset_token750 when a token was previously set751 resets token if url changed752 does not reset token if new url is set together with the same token753 does not reset token if new url is set together with a new token754Gitlab::Redis::SharedState755 .config_file_name756 when there is no config file anywhere757 is expected to be nil758 .store759 with old format760 behaves like redis store761 instantiates Redis::Store762 with the namespace763 uses specified namespace764 with new format765 behaves like redis store766 instantiates Redis::Store767 with the namespace768 uses specified namespace769 .params770 withstands mutation771 when url contains unix socket reference772 with old format773 returns path key instead774 with new format775 returns path key instead776 when url is host based777 with old format778 returns hash with host, port, db, and password779 with new format780 rails_env: "development", host: "development-host"781 returns hash with host, port, db, and password782 rails_env: "test", host: "test-host"783 returns hash with host, port, db, and password784 rails_env: "production", host: "production-host"785 returns hash with host, port, db, and password786 with redis cluster format787 rails_env: "development", host: "development-master"788 returns hash with cluster and password789 rails_env: "test", host: "test-master"790 returns hash with cluster and password791 rails_env: "production", host: "production-master"792 returns hash with cluster and password793 .url794 withstands mutation795 when yml file with env variable796 reads redis url from env variable797 .version798 returns a version799 .with800 when running on single-threaded runtime801 instantiates a connection pool with size 5802 when running on multi-threaded runtime803 instantiates a connection pool with a size based on the concurrency of the worker804 when there is no config at all805 can run an empty block806 #db807 with old format808 returns the correct db809 with new format810 returns the correct db811 with cluster-mode812 returns the correct db813 #sentinels814 when sentinels are defined815 rails_env: "development", hosts: ["development-replica1", "development-replica2"]816 returns an array of hashes with host and port keys817 rails_env: "test", hosts: ["test-replica1", "test-replica2"]818 returns an array of hashes with host and port keys819 rails_env: "production", hosts: ["production-replica1", "production-replica2"]820 returns an array of hashes with host and port keys821 when sentinels are not defined822 returns nil823 when cluster is defined824 returns nil825 #sentinels?826 when sentinels are defined827 returns true828 when sentinels are not defined829 is expected to eq nil830 when cluster is defined831 returns false832 #raw_config_hash833 returns old-style single url config in a hash834 returns cluster config without url key in a hash835 #fetch_config836 raises an exception when the config file contains invalid yaml837 when redis.yml exists838 uses config/redis.yml839 when no config file exsits840 returns nil841 when resque.yml exists842 returns the config from resque.yml843Analytics::CycleAnalytics::IssueStageEvent844 is expected to validate that :stage_event_hash_id cannot be empty/falsy845 is expected to validate that :issue_id cannot be empty/falsy846 is expected to validate that :group_id cannot be empty/falsy847 is expected to validate that :project_id cannot be empty/falsy848 is expected to validate that :start_event_timestamp cannot be empty/falsy849 has state enum850 behaves like StageEventModel851 .upsert_data852 inserts the data853 does not produce duplicate rows854 inserts the data correctly855 scopes856 filters by stage_event_hash_id857 filters by project_id858 filters by group_id859 filters by author_id860 filters by assignee861 filters by milestone_id862 start_event_timestamp filtering863 when range is given864 when specifying upper bound865 when specifying the lower bound866 end_event_timestamp filtering867 when range is given868 when specifying upper bound869 when specifying the lower bound870 #total_time871 calcualtes total time from the start_event_timestamp and end_event_timestamp columns872 when total time is calculated in SQL as an extra column873 returns the SQL calculated time874ProjectAuthorizations::Changes875 # order random876 .apply!877 when new authorizations should be added878 when the total number of records to be inserted is greater than the batch size879 inserts the rows in batches, as per the `per_batch` size, with a delay between each batch880 behaves like logs the detail881 logs the detail882 when the GitLab installation does not have a replica database configured883 behaves like inserts the rows in batches, as per the `per_batch` size, without a delay between batches884 is expected to contain exactly [1128, 707, 40], [1128, 708, 40], and [1128, 709, 40]885 behaves like does not log any detail886 does not log any detail887 when the total number of records to be inserted is less than the batch size888 behaves like inserts the rows in batches, as per the `per_batch` size, without a delay between batches889 is expected to contain exactly [1128, 707, 40], [1128, 708, 40], and [1128, 709, 40]890 behaves like does not log any detail891 does not log any detail892 when authorizations should be deleted for a project893 when the total number of records to be removed is greater than the batch size894 removes project authorizations of the users in the current project, with a delay895 behaves like logs the detail896 logs the detail897 when the GitLab installation does not have a replica database configured898 behaves like removes project authorizations of the users in the current project, without a delay899 is expected not to include 1133, 1134, and 1135900 behaves like does not log any detail901 does not log any detail902 when the total number of records to be removed is less than the batch size903 behaves like removes project authorizations of the users in the current project, without a delay904 is expected not to include 1133, 1134, and 1135905 behaves like does not log any detail906 does not log any detail907 when the user_ids list is empty908 behaves like does not removes project authorizations of the users in the current project909 does not delete any project authorization910 when the user_ids list is nil911 behaves like does not removes project authorizations of the users in the current project912 does not delete any project authorization913 when authorizations should be deleted for an user914 when the total number of records to be removed is greater than the batch size915 removes the project authorizations of projects from the current user, with a delay between each batch916 behaves like logs the detail917 logs the detail918 when the GitLab installation does not have a replica database configured919 behaves like removes project authorizations of projects from the current user, without a delay920 is expected not to include 711, 712, and 713921 behaves like does not log any detail922 does not log any detail923 when the total number of records to be removed is less than the batch size924 behaves like removes project authorizations of projects from the current user, without a delay925 is expected not to include 711, 712, and 713926 behaves like does not log any detail927 does not log any detail928 when the project_ids list is empty929 behaves like does not removes any project authorizations from the current user930 does not delete any project authorization931 when the user_ids list is nil932 behaves like does not removes any project authorizations from the current user933 does not delete any project authorization934Gitlab::Ci::Config::Entry::Needs935 validations936 when entry config value is correct937 #valid?938 is expected to be valid939 when config value has wrong type940 #valid?941 is expected not to be valid942 #errors943 returns error about incorrect type944 when wrong needs type is used945 #valid?946 is expected not to be valid947 #errors948 returns error about incorrect type949 when wrong needs type is used950 #valid?951 is expected not to be valid952 #errors953 returns error about incorrect type954 when needs value is a hash955 with a job value956 #valid?957 is expected to be valid958 with a parallel value that is a numeric value959 #valid?960 is expected not to be valid961 #errors962 returns errors about number values being invalid for needs:parallel963 when needs:parallel value is incorrect964 with a keyword that is not "matrix"965 #valid?966 is expected not to be valid967 #errors968 returns errors about incorrect matrix keyword969 with a number value970 #valid?971 is expected not to be valid972 #errors973 returns errors about number values being invalid for needs:parallel974 when needs:parallel:matrix value is empty975 #valid?976 is expected not to be valid977 #errors978 returns error about incorrect type979 when needs:parallel:matrix value is incorrect980 #valid?981 is expected not to be valid982 #errors983 returns error about incorrect type984 when needs:parallel:matrix value is correct985 with a simple config986 #valid?987 is expected to be valid988 with a complex config989 #valid?990 is expected to be valid991 with too many cross pipeline dependencies992 #valid?993 is expected not to be valid994 #errors995 returns error about incorrect type996 .compose!997 when valid job entries composed998 #value999 returns key value1000 behaves like entry with descendant nodes1001 #descendants1002 creates valid descendant nodes1003 with complex job entries composed1004 #value1005 returns key value1006 behaves like entry with descendant nodes1007 #descendants1008 creates valid descendant nodes1009 with mixed job entries composed1010 #value1011 returns key value1012 behaves like entry with descendant nodes1013 #descendants1014 creates valid descendant nodes1015 with empty config1016 #value1017 returns empty value1018Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas1019 properly analyzes queries1020 for SELECT on projects for allowed_gitlab_schema=no_schema1021 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DMLNotAllowedError1022 for SELECT on projects for allowed_gitlab_schema=gitlab_main1023 is expected not to raise Exception1024 for SELECT on projects for allowed_gitlab_schema=gitlab_main_clusterwide1025 is expected not to raise Exception1026 for SELECT on projects for allowed_gitlab_schema=gitlab_main_cell1027 is expected not to raise Exception1028 for SELECT on projects for allowed_gitlab_schema=gitlab_ci1029 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DMLAccessDeniedError1030 for SELECT on namespaces for allowed_gitlab_schema=no_schema1031 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DMLNotAllowedError1032 for SELECT on namespaces for allowed_gitlab_schema=gitlab_main1033 is expected not to raise Exception1034 for SELECT on namespaces for allowed_gitlab_schema=gitlab_main_clusterwide1035 is expected not to raise Exception1036 for SELECT on namespaces for allowed_gitlab_schema=gitlab_main_cell1037 is expected not to raise Exception1038 for SELECT on namespaces for allowed_gitlab_schema=gitlab_ci1039 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DMLAccessDeniedError1040 for INSERT on projects for allowed_gitlab_schema=no_schema1041 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DMLNotAllowedError1042 for INSERT on projects for allowed_gitlab_schema=gitlab_main1043 is expected not to raise Exception1044 for INSERT on projects for allowed_gitlab_schema=gitlab_main_clusterwide1045 is expected not to raise Exception1046 for INSERT on projects for allowed_gitlab_schema=gitlab_main_cell1047 is expected not to raise Exception1048 for INSERT on projects for allowed_gitlab_schema=gitlab_ci1049 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DMLAccessDeniedError1050 for INSERT on namespaces for allowed_gitlab_schema=no_schema1051 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DMLNotAllowedError1052 for INSERT on namespaces for allowed_gitlab_schema=gitlab_main1053 is expected not to raise Exception1054 for INSERT on namespaces for allowed_gitlab_schema=gitlab_main_clusterwide1055 is expected not to raise Exception1056 for INSERT on namespaces for allowed_gitlab_schema=gitlab_main_cell1057 is expected not to raise Exception1058 for INSERT on namespaces for allowed_gitlab_schema=gitlab_ci1059 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DMLAccessDeniedError1060 for CREATE INDEX for allowed_gitlab_schema=no_schema1061 is expected not to raise Exception1062 for CREATE INDEX for allowed_gitlab_schema=gitlab_main1063 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DDLNotAllowedError1064 for CREATE INDEX for allowed_gitlab_schema=gitlab_ci1065 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DDLNotAllowedError1066 for CREATE SCHEMA for allowed_gitlab_schema=no_schema1067 is expected not to raise Exception1068 for CREATE SCHEMA for allowed_gitlab_schema=gitlab_main1069 is expected not to raise Exception1070 for CREATE SCHEMA for allowed_gitlab_schema=gitlab_ci1071 is expected not to raise Exception1072 for CREATE FUNCTION for allowed_gitlab_schema=no_schema1073 is expected not to raise Exception1074 for CREATE FUNCTION for allowed_gitlab_schema=gitlab_main1075 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DDLNotAllowedError1076 for CREATE FUNCTION for allowed_gitlab_schema=gitlab_ci1077 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DDLNotAllowedError1078 for CREATE TRIGGER for allowed_gitlab_schema=no_schema1079 is expected not to raise Exception1080 for CREATE TRIGGER for allowed_gitlab_schema=gitlab_main1081 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DDLNotAllowedError1082 for CREATE TRIGGER for allowed_gitlab_schema=gitlab_ci1083 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DDLNotAllowedError1084 .require_ddl_mode!1085 when not configured does not raise exception1086 when no schemas are configured does not raise exception (DDL mode)1087 with schemas configured does raise exception (DML mode)1088 .require_dml_mode!1089 when not configured does not raise exception1090 when no schemas are configured does raise exception (DDL mode)1091 with schemas configured does raise exception (DML mode)1092Sidebars::Menu1093 #all_active_routes1094 gathers all active routes of items and the current menu1095 #serialize_for_super_sidebar1096 returns a tree-like structure of itself and all menu items1097 returns pill data if defined1098 #serialize_as_menu_item_args1099 returns hash of title, link, active_routes, container_html_options1100 #render?1101 when the menus has no items1102 returns false1103 when menu has a partial1104 returns true1105 when the menu has items1106 returns true1107 when menu items are NilMenuItem1108 returns false1109 #has_items?1110 returns true when there are regular menu items1111 returns true when there are nil menu items1112 #has_renderable_items?1113 returns true when there are regular menu items1114 returns false when there are nil menu items1115 returns true when there are both regular and nil menu items1116 #renderable_items1117 returns only regular menu items1118 #insert_element_before1119 adds element before the specific element class1120 does not add nil elements1121 when reference element does not exist1122 adds the element to the top of the list1123 #insert_element_after1124 adds element after the specific element class1125 does not add nil elements1126 when reference element does not exist1127 adds the element to the end of the list1128 #replace_placeholder1129 when a NilMenuItem reference element exists1130 replaces the reference element with the provided item1131 when a MenuItem reference element exists1132 does not replace the reference element and adds to the end of the list1133 when reference element does not exist1134 adds the element to the end of the list1135 #remove_element1136 removes specific element1137 does not remove nil elements1138 #remove_item1139 removes the item from the menu1140 #container_html_options1141 when menu can be rendered1142 when menu has renderable items1143 contains the special class1144 when menu already has other classes1145 appends special class1146 when menu does not have renderable items1147 does not contain the special class1148 when menu cannot be rendered1149 does not contain special class1150 #link1151 returns first visible menu item link1152 returns nil if there are no visible menu items1153Metrics::Dashboard::SystemDashboardService1154 #raw_dashboard1155 behaves like #raw_dashboard raises error if dashboard loading fails1156 when yaml is too large1157 raises error1158 when yaml loader returns error1159 raises error1160 when yaml is not a hash1161 returns nil1162 #get_dashboard1163 behaves like valid dashboard service response1164 behaves like valid dashboard service response for schema1165 returns a json representation of the dashboard1166 behaves like raises error for users with insufficient permissions1167 when the user does not have sufficient access1168 behaves like misconfigured dashboard service response1169 returns an appropriate message and status code1170 when the user is anonymous1171 behaves like misconfigured dashboard service response1172 returns an appropriate message and status code1173 behaves like caches the unprocessed dashboard for subsequent calls1174 is expected to receive load_raw!(*(any args)) 1 time1175 behaves like refreshes cache when dashboard_version is changed1176 is expected to receive read(#<Pathname:/builds/gitlab-org/gitlab/config/prometheus/common_metrics.yml>) 2 times1177 behaves like updates gitlab_metrics_dashboard_processing_time_ms metric1178 prometheus1179 behaves like dashboard_version contains SHA256 hash of dashboard file content1180 is expected to eq "ce9ae27d2913f637de851d61099bc4151583eae68b1386a2176339ef6e653223"1181 when called with a non-system dashboard1182 behaves like valid dashboard service response1183 behaves like valid dashboard service response for schema1184 returns a json representation of the dashboard1185 .all_dashboard_paths1186 returns the dashboard attributes1187 .valid_params?1188 is expected to be truthy1189 missing dashboard_path1190 is expected to be falsey1191 non-matching dashboard_path1192 is expected to be falsey1193MergeRequestDiffEntity1194 as json1195 exposes needed attributes1196 #version_index1197 when diff is not present1198 behaves like version_index is nil1199 returns nil1200 when diff is not included in @merge_request_diffs1201 behaves like version_index is nil1202 returns nil1203 when @merge_request_diffs.size <= 11204 behaves like version_index is nil1205 returns nil1206 when @merge_request_diffs.size > 11207 returns difference between size and diff index1208 #short_commit_sha1209 returns short sha1210 returns nil if head_commit_sha does not exist1211 #head_version_path1212 merge request can be merged1213 returns diff path with diff_head param set1214 merge request cannot be merged1215 returns diff path with diff_head param set1216Labels::TransferService1217 behaves like transfer labels1218 #execute1219 recreates missing group labels at project level and assigns them to the issuables1220 recreates missing ancestor group labels at project level and assigns them to the issuables1221 recreates label priorities related to the missing group labels1222 does not recreate missing group labels that are not applied to issues or merge requests1223 does not recreate missing group labels that already exist in the project group1224 updates only label links in the given project1225 when moving within the same ancestor group1226 does not recreate ancestor group labels1227EventFilter1228 #filter1229 returns "all" if given filter is nil1230 returns "all" if given filter is ""1231 returns "all" if given filter is "foo"1232 #apply_filter1233 with the "push" filter1234 filters push events only1235 with the "merged" filter1236 filters merged events only1237 with the "issue" filter1238 filters issue and work item events only1239 with the "comments" filter1240 filters comment events only1241 with the "team" filter1242 filters team events only1243 with the "all" filter1244 returns all events1245 with the "design" filter1246 returns only design events1247 with the "wiki" filter1248 returns only wiki page events1249 with an unknown filter1250 returns all events1251 with a nil filter1252 returns all events1253 #in_operator_query_builder_params1254 with the "issue" filter1255 also includes work item events1256 #active?1257 returns false if filter does not include the given key1258 returns false if the given key is nil1259 returns true if filter does not include the given key1260gitlab:db:truncate_legacy_tables1261 # order random1262 when truncating main tables on the ci database1263 behaves like truncating legacy tables1264 when tables are not locked for writes1265 raises an error when trying to truncate the tables1266 when tables are locked for writes1267 calls TablesTruncate with the correct parameters and default minimum batch size1268 truncates the legacy table1269 does not truncate the table that belongs to the connection schema1270 when running in dry_run mode1271 does not truncate any tables1272 prints the truncation sql statement to the output1273 when passing until_table parameter via environment variable1274 sends the table name to TablesTruncate1275 when truncating ci tables on the main database1276 behaves like truncating legacy tables1277 when tables are not locked for writes1278 raises an error when trying to truncate the tables1279 when tables are locked for writes1280 calls TablesTruncate with the correct parameters and default minimum batch size1281 truncates the legacy table1282 does not truncate the table that belongs to the connection schema1283 when running in dry_run mode1284 does not truncate any tables1285 prints the truncation sql statement to the output1286 when passing until_table parameter via environment variable1287 sends the table name to TablesTruncate1288PagesDomainAcmeOrder1289 .expired1290 returns only expired orders1291 .find_by_domain_and_token1292 domain_name: "test.com", challenge_token: "righttoken", present: true1293 is expected to eq true1294 domain_name: "test.com", challenge_token: "wrongtoken", present: false1295 is expected to eq false1296 domain_name: "test.org", challenge_token: "righttoken", present: false1297 is expected to eq false1298 associations1299 is expected to belong to pages_domain required: false1300 validations1301 is expected to validate that :pages_domain cannot be empty/falsy1302 is expected to validate that :expires_at cannot be empty/falsy1303 is expected to validate that :url cannot be empty/falsy1304 is expected to validate that :challenge_token cannot be empty/falsy1305 is expected to validate that :challenge_file_content cannot be empty/falsy1306 is expected to validate that :private_key cannot be empty/falsy1307PreferencesHelper1308 #dashboard_choices1309 raises an exception when defined choices may be missing1310 raises an exception when defined choices may be using the wrong key1311 provides better option descriptions1312 #first_day_of_week_choices1313 returns Saturday, Sunday and Monday as choices1314 #first_day_of_week_choices_with_default1315 returns choices including system default1316 returns choices including system default set to Monday1317 returns choices including system default set to Saturday1318 #user_application_theme1319 with a user1320 returns user's theme's css_class1321 returns the default when id is invalid1322 without a user1323 returns the default theme1324 #user_application_dark_mode?1325 with a user1326 returns true if user's selected dark theme1327 returns false if user's selected any light theme1328 without a user1329 returns false1330 #user_color_scheme1331 with a user1332 returns user's scheme's css_class1333 returns the default when id is invalid1334 without a user1335 returns the default theme1336 #user_diffs_colors1337 with a user1338 returns user's diffs colors1339 omits property if nil1340 omits property if blank1341 without a user1342 returns no properties1343 #custom_diff_color_classes1344 with a user1345 returns color classes1346 omits property if nil1347 omits property if blank1348 without a user1349 returns no classes1350 #language_choices1351 lists all the selectable language options with their translation percent1352 #integration_views1353 when Gitpod is not enabled1354 does not include Gitpod integration1355 when Gitpod is enabled1356 includes Gitpod integration1357 returns the Gitpod url configured in settings1358 when Gitpod url is not set1359 returns the Gitpod default url1360layouts/devise1361 behaves like a layout which reflects the application theme setting1362 as a themed layout1363 when no theme is explicitly selected1364 renders with the default theme1365 when user is authenticated & has selected a specific theme1366 chosen_theme: #<struct Gitlab::Themes::Theme id=1, name="Indigo", css_class="ui-indigo", css_filename="theme_indigo", primary_color="#292961">1367 renders with the Indigo theme1368 chosen_theme: #<struct Gitlab::Themes::Theme id=6, name="Light Indigo", css_class="ui-light-indigo", css_filename="theme_light_indigo", primary_color="#4b4ba3">1369 renders with the Light Indigo theme1370 chosen_theme: #<struct Gitlab::Themes::Theme id=4, name="Blue", css_class="ui-blue", css_filename="theme_blue", primary_color="#1a3652">1371 renders with the Blue theme1372 chosen_theme: #<struct Gitlab::Themes::Theme id=7, name="Light Blue", css_class="ui-light-blue", css_filename="theme_light_blue", primary_color="#2261a1">1373 renders with the Light Blue theme1374 chosen_theme: #<struct Gitlab::Themes::Theme id=5, name="Green", css_class="ui-green", css_filename="theme_green", primary_color="#0d4524">1375 renders with the Green theme1376 chosen_theme: #<struct Gitlab::Themes::Theme id=8, name="Light Green", css_class="ui-light-green", css_filename="theme_light_green", primary_color="#156b39">1377 renders with the Light Green theme1378 chosen_theme: #<struct Gitlab::Themes::Theme id=9, name="Red", css_class="ui-red", css_filename="theme_red", primary_color="#691a16">1379 renders with the Red theme1380 chosen_theme: #<struct Gitlab::Themes::Theme id=10, name="Light Red", css_class="ui-light-red", css_filename="theme_light_red", primary_color="#a62e21">1381 renders with the Light Red theme1382 chosen_theme: #<struct Gitlab::Themes::Theme id=2, name="Gray", css_class="ui-gray", css_filename="theme_gray", primary_color="#303030">1383 renders with the Gray theme1384 chosen_theme: #<struct Gitlab::Themes::Theme id=3, name="Light Gray", css_class="ui-light-gray", css_filename="theme_light_gray", primary_color="#666">1385 renders with the Light Gray theme1386 chosen_theme: #<struct Gitlab::Themes::Theme id=11, name="Dark Mode (alpha)", css_class="gl-dark", css_filename=nil, primary_color="#303030">1387 renders with the Dark Mode (alpha) theme1388 behaves like a layout which reflects the preferred language1389 when changing the a preferred language1390 renders the correct `lang` attribute in the html element1391 logo1392 renders GitLab logo1393 with custom logo1394 renders custom logo1395Banzai::Filter::References::ReferenceCache1396 #load_references_per_parent1397 loads references grouped per parent paths1398 when rendered_html is memoized1399 reuses memoized rendered HTML when available1400 when result is not available1401 is expected not to raise Exception1402 #load_parent_per_reference1403 returns a Hash containing projects grouped per parent paths1404 #load_records_per_parent1405 returns a Hash containing projects grouped per parent paths1406 #initialize_reference_cache1407 does not have an N+1 query problem with cross projects1408 #find_for_paths1409 with RequestStore disabled1410 returns a list of Projects for a list of paths1411 return an empty array for paths that do not exist1412 with RequestStore enabled1413 returns a list of Projects for a list of paths1414 when no project with that path exists1415 returns no value1416 adds the ref to the project refs cache1417 #current_parent_path1418 returns the path of the current parent1419 #current_project_namespace_path1420 returns the path of the current project namespace1421 #full_project_path1422 returns current parent path when no ref specified1423 returns combined namespace and project ref1424 returns uses default namespace and project ref when namespace nil1425 #full_group_path1426 returns current parent path when no group ref specified1427 returns group ref1428layouts/devise_empty1429 behaves like a layout which reflects the application theme setting1430 as a themed layout1431 when no theme is explicitly selected1432 renders with the default theme1433 when user is authenticated & has selected a specific theme1434 chosen_theme: #<struct Gitlab::Themes::Theme id=1, name="Indigo", css_class="ui-indigo", css_filename="theme_indigo", primary_color="#292961">1435 renders with the Indigo theme1436 chosen_theme: #<struct Gitlab::Themes::Theme id=6, name="Light Indigo", css_class="ui-light-indigo", css_filename="theme_light_indigo", primary_color="#4b4ba3">1437 renders with the Light Indigo theme1438 chosen_theme: #<struct Gitlab::Themes::Theme id=4, name="Blue", css_class="ui-blue", css_filename="theme_blue", primary_color="#1a3652">1439 renders with the Blue theme1440 chosen_theme: #<struct Gitlab::Themes::Theme id=7, name="Light Blue", css_class="ui-light-blue", css_filename="theme_light_blue", primary_color="#2261a1">1441 renders with the Light Blue theme1442 chosen_theme: #<struct Gitlab::Themes::Theme id=5, name="Green", css_class="ui-green", css_filename="theme_green", primary_color="#0d4524">1443 renders with the Green theme1444 chosen_theme: #<struct Gitlab::Themes::Theme id=8, name="Light Green", css_class="ui-light-green", css_filename="theme_light_green", primary_color="#156b39">1445 renders with the Light Green theme1446 chosen_theme: #<struct Gitlab::Themes::Theme id=9, name="Red", css_class="ui-red", css_filename="theme_red", primary_color="#691a16">1447 renders with the Red theme1448 chosen_theme: #<struct Gitlab::Themes::Theme id=10, name="Light Red", css_class="ui-light-red", css_filename="theme_light_red", primary_color="#a62e21">1449 renders with the Light Red theme1450 chosen_theme: #<struct Gitlab::Themes::Theme id=2, name="Gray", css_class="ui-gray", css_filename="theme_gray", primary_color="#303030">1451 renders with the Gray theme1452 chosen_theme: #<struct Gitlab::Themes::Theme id=3, name="Light Gray", css_class="ui-light-gray", css_filename="theme_light_gray", primary_color="#666">1453 renders with the Light Gray theme1454 chosen_theme: #<struct Gitlab::Themes::Theme id=11, name="Dark Mode (alpha)", css_class="gl-dark", css_filename=nil, primary_color="#303030">1455 renders with the Dark Mode (alpha) theme1456 behaves like a layout which reflects the preferred language1457 when changing the a preferred language1458 renders the correct `lang` attribute in the html element1459Gitlab::Database::BackgroundMigration::PrometheusMetrics1460 #track1461 reports batch_size1462 reports sub_batch_size1463 reports interval1464 reports job duration1465 increments updated tuples (currently based on batch_size)1466 reports migrated tuples1467 reports the total tuple count for the migration1468 reports last updated at timestamp1469 reports summary of query timings1470 when the tracking record does not having timing metrics1471 does not attempt to report query timings1472Gitlab::Consul::Internal1473 .api_url1474 returns correct value1475 when consul setting is not present in gitlab.yml1476 does not fail1477 .discover_service1478 behaves like returns nil given blank value of1479 with1480 is expected to be nil1481 with1482 is expected to be nil1483 behaves like returns nil given blank value of1484 with1485 is expected to be nil1486 with1487 is expected to be nil1488 one service discovered1489 returns the service address and port1490 multiple services discovered1491 uses the first service1492 behaves like handles failure response1493 raises Gitlab::Consul::Internal::SocketError when SocketError is rescued1494 raises Gitlab::Consul::Internal::SSLError when OpenSSL::SSL::SSLError is rescued1495 raises Gitlab::Consul::Internal::ECONNREFUSED when Errno::ECONNREFUSED is rescued1496 raises Consul::Internal::UnexpectedResponseError when StandardError is rescued1497 raises Consul::Internal::UnexpectedResponseError when request returns 5001498 raises Consul::Internal::UnexpectedResponseError when request returns non json data1499 .discover_prometheus_server_address1500 returns the server address1501 behaves like returns nil given blank value of1502 with1503 is expected to be nil1504 with1505 is expected to be nil1506 behaves like handles failure response1507 raises Gitlab::Consul::Internal::SocketError when SocketError is rescued1508 raises Gitlab::Consul::Internal::SSLError when OpenSSL::SSL::SSLError is rescued1509 raises Gitlab::Consul::Internal::ECONNREFUSED when Errno::ECONNREFUSED is rescued1510 raises Consul::Internal::UnexpectedResponseError when StandardError is rescued1511 raises Consul::Internal::UnexpectedResponseError when request returns 5001512 raises Consul::Internal::UnexpectedResponseError when request returns non json data1513Gitlab::GithubImport::ParallelScheduling1514 #parallel?1515 returns true when running in parallel mode1516 returns false when running in sequential mode1517 #execute1518 imports data in parallel when running in parallel mode1519 imports data in parallel when running in sequential mode1520 expires the cache used for tracking already imported objects1521 logs the the process1522 when abort_on_failure is false1523 logs the error when it fails1524 when abort_on_failure is true1525 logs the error when it fails and marks import as failed1526 #sequential_import1527 imports data in sequence1528 #parallel_import1529 imports data in parallel with delays respecting parallel_import_batch definition and return job waiter1530 when job restarts due to API rate limit or Sidekiq interruption1531 restores job waiter's key and jobs_remaining1532 #each_object_to_import1533 yields every object to import1534 resumes from the last page1535 does not yield any objects if the page number was not set1536 does not yield the object if it was already imported1537 #already_imported?1538 returns false when an object has not yet been imported1539 returns true when an object has already been imported1540 #mark_as_imported1541 marks an object as already imported1542 #increment_object_counter?1543 returns true1544Gitlab::Diff::Highlight1545 #highlight1546 with a diff file1547 returns Gitlab::Diff::Line elements1548 does not modify "match" lines1549 highlights and marks unchanged lines1550 highlights and marks removed lines1551 highlights and marks added lines1552 when no diff_refs1553 when no inline diffs1554 behaves like without inline diffs1555 returns html escaped diff text1556 with diff lines1557 returns Gitlab::Diff::Line elements1558 does not modify "match" lines1559 marks unchanged lines1560 marks removed lines1561 marks added lines1562 when the inline diff marker has an invalid range1563 keeps the original rich line1564 reports to Sentry if configured1565 when no inline diffs1566 behaves like without inline diffs1567 returns html escaped diff text1568 when blob is too large1569 blobs are highlighted as plain text without loading all data1570Ci::PipelineSchedules::UpdateService1571 # order random1572 execute1573 when user does not have permission1574 returns ServiceResponse.error1575 when user has permission1576 updates database values with passed params1577 returns ServiceResponse.success1578 when creating a variable1579 creates the new variable1580 when deleting a variable1581 deletes the existing variable1582 when schedule update fails1583 returns ServiceResponse.error1584 behaves like pipeline schedules checking variables permission1585 when sending variables1586 when user is maintainer1587 behaves like success response with variables1588 saves variables1589 behaves like success response1590 saves values with passed params1591 when user is developer1592 behaves like success response with variables1593 saves variables1594 behaves like success response1595 saves values with passed params1596 when restrict_user_defined_variables is true1597 behaves like success response with variables1598 saves variables1599 behaves like success response1600 saves values with passed params1601 when user is developer1602 behaves like failure response1603 does not save1604 when not sending variables1605 when user is maintainer1606 behaves like success response1607 saves values with passed params1608 when user is developer1609 behaves like success response1610 saves values with passed params1611 when restrict_user_defined_variables is true1612 behaves like success response1613 saves values with passed params1614 when user is developer1615 behaves like success response1616 saves values with passed params1617ProductAnalyticsEvent1618 is expected to belong to project required: false1619 is expected to respond to #order_by_time1620 validations1621 is expected to validate that :project_id cannot be empty/falsy1622 is expected to validate that :event_id cannot be empty/falsy1623 is expected to validate that :v_collector cannot be empty/falsy1624 is expected to validate that :v_etl cannot be empty/falsy1625 .timerange1626 is expected to contain exactly #<ProductAnalyticsEvent id: 1, project_id: 732, platform: "web", etl_tstamp: nil, collector_tstamp: "2023-08-09 12:36:44.034975335 +0000", dvce_created_tstamp: "2023-08-10 12:36:44.291720161 +0000", event: nil, event_id: "e9829888-14ef-4f27-92b6-67ab3189621c", txn_id: nil, name_tracker: "sp", v_tracker: "js-2.14.0", v_collector: "GitLab 13.1.0-pre", v_etl: "GitLab 13.1.0-pre", user_id: nil, user_ipaddress: nil, user_fingerprint: nil, domain_userid: "a0d69150-b1ee-4274-a815-1fcbbfb864c3", domain_sessionidx: 4, network_userid: nil, geo_country: nil, geo_region: nil, geo_city: nil, geo_zipcode: nil, geo_latitude: nil, geo_longitude: nil, geo_region_name: nil, ip_isp: nil, ip_organization: nil, ip_domain: nil, ip_netspeed: nil, page_url: "http://localhost:3333/products/123", page_title: nil, page_referrer: nil, page_urlscheme: nil, page_urlhost: nil, page_urlport: nil, page_urlpath: nil, page_urlquery: nil, page_urlfragment: nil, refr_urlscheme: nil, refr_urlhost: nil, refr_urlport: nil, refr_urlpath: nil, refr_urlquery: nil, refr_urlfragment: nil, refr_medium: nil, refr_source: nil, refr_term: nil, mkt_medium: nil, mkt_source: nil, mkt_term: nil, mkt_content: nil, mkt_campaign: nil, se_category: nil, se_action: nil, se_label: nil, se_property: nil, se_value: nil, tr_orderid: nil, tr_affiliation: nil, tr_total: nil, tr_tax: nil, tr_shipping: nil, tr_city: nil, tr_state: nil, tr_country: nil, ti_orderid: nil, ti_sku: nil, ti_name: nil, ti_category: nil, ti_price: nil, ti_quantity: nil, pp_xoffset_min: nil, pp_xoffset_max: nil, pp_yoffset_min: nil, pp_yoffset_max: nil, useragent: nil, br_name: nil, br_family: nil, br_version: nil, br_type: nil, br_renderengine: nil, br_lang: "en-US", br_features_pdf: nil, br_features_flash: nil, br_features_java: nil, br_features_director: nil, br_features_quicktime: nil, br_features_realplayer: nil, br_features_windowsmedia: nil, br_features_gears: nil, br_features_silverlight: nil, br_cookies: true, br_colordepth: "24", br_viewwidth: nil, br_viewheight: nil, os_name: nil, os_family: nil, os_manufacturer: nil, os_timezone: "America/Los_Angeles", dvce_type: nil, dvce_ismobile: nil, dvce_screenwidth: nil, dvce_screenheight: nil, doc_charset: "UTF-8", doc_width: nil, doc_height: nil, tr_currency: nil, tr_total_base: nil, tr_tax_base: nil, tr_shipping_base: nil, ti_currency: nil, ti_price_base: nil, base_currency: nil, geo_timezone: nil, mkt_clickid: nil, mkt_network: nil, etl_tags: nil, dvce_sent_tstamp: nil, refr_domain_userid: nil, refr_dvce_tstamp: nil, domain_sessionid: "7d141bdc-b9ac-4a1d-b3c5-7d1ad1a4a379", derived_tstamp: nil, event_vendor: nil, event_name: nil, event_format: nil, event_version: nil, event_fingerprint: nil, true_tstamp: nil>1627 is expected to contain exactly #<ProductAnalyticsEvent id: 1, project_id: 732, platform: "web", etl_tstamp: nil, collector_tstamp: "2023-08-09 12:36:44.034975335 +0000", dvce_created_tstamp: "2023-08-10 12:36:44.291720161 +0000", event: nil, event_id: "e9829888-14ef-4f27-92b6-67ab3189621c", txn_id: nil, name_tracker: "sp", v_tracker: "js-2.14.0", v_collector: "GitLab 13.1.0-pre", v_etl: "GitLab 13.1.0-pre", user_id: nil, user_ipaddress: nil, user_fingerprint: nil, domain_userid: "a0d69150-b1ee-4274-a815-1fcbbfb864c3", domain_sessionidx: 4, network_userid: nil, geo_country: nil, geo_region: nil, geo_city: nil, geo_zipcode: nil, geo_latitude: nil, geo_longitude: nil, geo_region_name: nil, ip_isp: nil, ip_organization: nil, ip_domain: nil, ip_netspeed: nil, page_url: "http://localhost:3333/products/123", page_title: nil, page_referrer: nil, page_urlscheme: nil, page_urlhost: nil, page_urlport: nil, page_urlpath: nil, page_urlquery: nil, page_urlfragment: nil, refr_urlscheme: nil, refr_urlhost: nil, refr_urlport: nil, refr_urlpath: nil, refr_urlquery: nil, refr_urlfragment: nil, refr_medium: nil, refr_source: nil, refr_term: nil, mkt_medium: nil, mkt_source: nil, mkt_term: nil, mkt_content: nil, mkt_campaign: nil, se_category: nil, se_action: nil, se_label: nil, se_property: nil, se_value: nil, tr_orderid: nil, tr_affiliation: nil, tr_total: nil, tr_tax: nil, tr_shipping: nil, tr_city: nil, tr_state: nil, tr_country: nil, ti_orderid: nil, ti_sku: nil, ti_name: nil, ti_category: nil, ti_price: nil, ti_quantity: nil, pp_xoffset_min: nil, pp_xoffset_max: nil, pp_yoffset_min: nil, pp_yoffset_max: nil, useragent: nil, br_name: nil, br_family: nil, br_version: nil, br_type: nil, br_renderengine: nil, br_lang: "en-US", br_features_pdf: nil, br_features_flash: nil, br_features_java: nil, br_features_director: nil, br_features_quicktime: nil, br_features_realplayer: nil, br_features_windowsmedia: nil, br_features_gears: nil, br_features_silverlight: nil, br_cookies: true, br_colordepth: "24", br_viewwidth: nil, br_viewheight: nil, os_name: nil, os_family: nil, os_manufacturer: nil, os_timezone: "America/Los_Angeles", dvce_type: nil, dvce_ismobile: nil, dvce_screenwidth: nil, dvce_screenheight: nil, doc_charset: "UTF-8", doc_width: nil, doc_height: nil, tr_currency: nil, tr_total_base: nil, tr_tax_base: nil, tr_shipping_base: nil, ti_currency: nil, ti_price_base: nil, base_currency: nil, geo_timezone: nil, mkt_clickid: nil, mkt_network: nil, etl_tags: nil, dvce_sent_tstamp: nil, refr_domain_userid: nil, refr_dvce_tstamp: nil, domain_sessionid: "7d141bdc-b9ac-4a1d-b3c5-7d1ad1a4a379", derived_tstamp: nil, event_vendor: nil, event_name: nil, event_format: nil, event_version: nil, event_fingerprint: nil, true_tstamp: nil> and #<ProductAnalyticsEvent id: 2, project_id: 733, platform: "web", etl_tstamp: nil, collector_tstamp: "2023-08-05 12:36:44.296727641 +0000", dvce_created_tstamp: "2023-08-10 12:36:44.541155117 +0000", event: nil, event_id: "7cf7f136-8edf-4d08-87dc-c44eebfb498f", txn_id: nil, name_tracker: "sp", v_tracker: "js-2.14.0", v_collector: "GitLab 13.1.0-pre", v_etl: "GitLab 13.1.0-pre", user_id: nil, user_ipaddress: nil, user_fingerprint: nil, domain_userid: "42818791-1aeb-47c8-a032-a0e3fad90216", domain_sessionidx: 4, network_userid: nil, geo_country: nil, geo_region: nil, geo_city: nil, geo_zipcode: nil, geo_latitude: nil, geo_longitude: nil, geo_region_name: nil, ip_isp: nil, ip_organization: nil, ip_domain: nil, ip_netspeed: nil, page_url: "http://localhost:3333/products/123", page_title: nil, page_referrer: nil, page_urlscheme: nil, page_urlhost: nil, page_urlport: nil, page_urlpath: nil, page_urlquery: nil, page_urlfragment: nil, refr_urlscheme: nil, refr_urlhost: nil, refr_urlport: nil, refr_urlpath: nil, refr_urlquery: nil, refr_urlfragment: nil, refr_medium: nil, refr_source: nil, refr_term: nil, mkt_medium: nil, mkt_source: nil, mkt_term: nil, mkt_content: nil, mkt_campaign: nil, se_category: nil, se_action: nil, se_label: nil, se_property: nil, se_value: nil, tr_orderid: nil, tr_affiliation: nil, tr_total: nil, tr_tax: nil, tr_shipping: nil, tr_city: nil, tr_state: nil, tr_country: nil, ti_orderid: nil, ti_sku: nil, ti_name: nil, ti_category: nil, ti_price: nil, ti_quantity: nil, pp_xoffset_min: nil, pp_xoffset_max: nil, pp_yoffset_min: nil, pp_yoffset_max: nil, useragent: nil, br_name: nil, br_family: nil, br_version: nil, br_type: nil, br_renderengine: nil, br_lang: "en-US", br_features_pdf: nil, br_features_flash: nil, br_features_java: nil, br_features_director: nil, br_features_quicktime: nil, br_features_realplayer: nil, br_features_windowsmedia: nil, br_features_gears: nil, br_features_silverlight: nil, br_cookies: true, br_colordepth: "24", br_viewwidth: nil, br_viewheight: nil, os_name: nil, os_family: nil, os_manufacturer: nil, os_timezone: "America/Los_Angeles", dvce_type: nil, dvce_ismobile: nil, dvce_screenwidth: nil, dvce_screenheight: nil, doc_charset: "UTF-8", doc_width: nil, doc_height: nil, tr_currency: nil, tr_total_base: nil, tr_tax_base: nil, tr_shipping_base: nil, ti_currency: nil, ti_price_base: nil, base_currency: nil, geo_timezone: nil, mkt_clickid: nil, mkt_network: nil, etl_tags: nil, dvce_sent_tstamp: nil, refr_domain_userid: nil, refr_dvce_tstamp: nil, domain_sessionid: "a9736174-2d89-4967-8ce5-9703e49924aa", derived_tstamp: nil, event_vendor: nil, event_name: nil, event_format: nil, event_version: nil, event_fingerprint: nil, true_tstamp: nil>1628 is expected to contain exactly #<ProductAnalyticsEvent id: 1, project_id: 732, platform: "web", etl_tstamp: nil, collector_tstamp: "2023-08-09 12:36:44.034975335 +0000", dvce_created_tstamp: "2023-08-10 12:36:44.291720161 +0000", event: nil, event_id: "e9829888-14ef-4f27-92b6-67ab3189621c", txn_id: nil, name_tracker: "sp", v_tracker: "js-2.14.0", v_collector: "GitLab 13.1.0-pre", v_etl: "GitLab 13.1.0-pre", user_id: nil, user_ipaddress: nil, user_fingerprint: nil, domain_userid: "a0d69150-b1ee-4274-a815-1fcbbfb864c3", domain_sessionidx: 4, network_userid: nil, geo_country: nil, geo_region: nil, geo_city: nil, geo_zipcode: nil, geo_latitude: nil, geo_longitude: nil, geo_region_name: nil, ip_isp: nil, ip_organization: nil, ip_domain: nil, ip_netspeed: nil, page_url: "http://localhost:3333/products/123", page_title: nil, page_referrer: nil, page_urlscheme: nil, page_urlhost: nil, page_urlport: nil, page_urlpath: nil, page_urlquery: nil, page_urlfragment: nil, refr_urlscheme: nil, refr_urlhost: nil, refr_urlport: nil, refr_urlpath: nil, refr_urlquery: nil, refr_urlfragment: nil, refr_medium: nil, refr_source: nil, refr_term: nil, mkt_medium: nil, mkt_source: nil, mkt_term: nil, mkt_content: nil, mkt_campaign: nil, se_category: nil, se_action: nil, se_label: nil, se_property: nil, se_value: nil, tr_orderid: nil, tr_affiliation: nil, tr_total: nil, tr_tax: nil, tr_shipping: nil, tr_city: nil, tr_state: nil, tr_country: nil, ti_orderid: nil, ti_sku: nil, ti_name: nil, ti_category: nil, ti_price: nil, ti_quantity: nil, pp_xoffset_min: nil, pp_xoffset_max: nil, pp_yoffset_min: nil, pp_yoffset_max: nil, useragent: nil, br_name: nil, br_family: nil, br_version: nil, br_type: nil, br_renderengine: nil, br_lang: "en-US", br_features_pdf: nil, br_features_flash: nil, br_features_java: nil, br_features_director: nil, br_features_quicktime: nil, br_features_realplayer: nil, br_features_windowsmedia: nil, br_features_gears: nil, br_features_silverlight: nil, br_cookies: true, br_colordepth: "24", br_viewwidth: nil, br_viewheight: nil, os_name: nil, os_family: nil, os_manufacturer: nil, os_timezone: "America/Los_Angeles", dvce_type: nil, dvce_ismobile: nil, dvce_screenwidth: nil, dvce_screenheight: nil, doc_charset: "UTF-8", doc_width: nil, doc_height: nil, tr_currency: nil, tr_total_base: nil, tr_tax_base: nil, tr_shipping_base: nil, ti_currency: nil, ti_price_base: nil, base_currency: nil, geo_timezone: nil, mkt_clickid: nil, mkt_network: nil, etl_tags: nil, dvce_sent_tstamp: nil, refr_domain_userid: nil, refr_dvce_tstamp: nil, domain_sessionid: "7d141bdc-b9ac-4a1d-b3c5-7d1ad1a4a379", derived_tstamp: nil, event_vendor: nil, event_name: nil, event_format: nil, event_version: nil, event_fingerprint: nil, true_tstamp: nil>, #<ProductAnalyticsEvent id: 2, project_id: 733, platform: "web", etl_tstamp: nil, collector_tstamp: "2023-08-05 12:36:44.296727641 +0000", dvce_created_tstamp: "2023-08-10 12:36:44.541155117 +0000", event: nil, event_id: "7cf7f136-8edf-4d08-87dc-c44eebfb498f", txn_id: nil, name_tracker: "sp", v_tracker: "js-2.14.0", v_collector: "GitLab 13.1.0-pre", v_etl: "GitLab 13.1.0-pre", user_id: nil, user_ipaddress: nil, user_fingerprint: nil, domain_userid: "42818791-1aeb-47c8-a032-a0e3fad90216", domain_sessionidx: 4, network_userid: nil, geo_country: nil, geo_region: nil, geo_city: nil, geo_zipcode: nil, geo_latitude: nil, geo_longitude: nil, geo_region_name: nil, ip_isp: nil, ip_organization: nil, ip_domain: nil, ip_netspeed: nil, page_url: "http://localhost:3333/products/123", page_title: nil, page_referrer: nil, page_urlscheme: nil, page_urlhost: nil, page_urlport: nil, page_urlpath: nil, page_urlquery: nil, page_urlfragment: nil, refr_urlscheme: nil, refr_urlhost: nil, refr_urlport: nil, refr_urlpath: nil, refr_urlquery: nil, refr_urlfragment: nil, refr_medium: nil, refr_source: nil, refr_term: nil, mkt_medium: nil, mkt_source: nil, mkt_term: nil, mkt_content: nil, mkt_campaign: nil, se_category: nil, se_action: nil, se_label: nil, se_property: nil, se_value: nil, tr_orderid: nil, tr_affiliation: nil, tr_total: nil, tr_tax: nil, tr_shipping: nil, tr_city: nil, tr_state: nil, tr_country: nil, ti_orderid: nil, ti_sku: nil, ti_name: nil, ti_category: nil, ti_price: nil, ti_quantity: nil, pp_xoffset_min: nil, pp_xoffset_max: nil, pp_yoffset_min: nil, pp_yoffset_max: nil, useragent: nil, br_name: nil, br_family: nil, br_version: nil, br_type: nil, br_renderengine: nil, br_lang: "en-US", br_features_pdf: nil, br_features_flash: nil, br_features_java: nil, br_features_director: nil, br_features_quicktime: nil, br_features_realplayer: nil, br_features_windowsmedia: nil, br_features_gears: nil, br_features_silverlight: nil, br_cookies: true, br_colordepth: "24", br_viewwidth: nil, br_viewheight: nil, os_name: nil, os_family: nil, os_manufacturer: nil, os_timezone: "America/Los_Angeles", dvce_type: nil, dvce_ismobile: nil, dvce_screenwidth: nil, dvce_screenheight: nil, doc_charset: "UTF-8", doc_width: nil, doc_height: nil, tr_currency: nil, tr_total_base: nil, tr_tax_base: nil, tr_shipping_base: nil, ti_currency: nil, ti_price_base: nil, base_currency: nil, geo_timezone: nil, mkt_clickid: nil, mkt_network: nil, etl_tags: nil, dvce_sent_tstamp: nil, refr_domain_userid: nil, refr_dvce_tstamp: nil, domain_sessionid: "a9736174-2d89-4967-8ce5-9703e49924aa", derived_tstamp: nil, event_vendor: nil, event_name: nil, event_format: nil, event_version: nil, event_fingerprint: nil, true_tstamp: nil>, and #<ProductAnalyticsEvent id: 3, project_id: 734, platform: "web", etl_tstamp: nil, collector_tstamp: "2023-07-26 12:36:44.545667197 +0000", dvce_created_tstamp: "2023-08-10 12:36:44.784763444 +0000", event: nil, event_id: "499d52e9-082b-4f70-b899-981b93cc6120", txn_id: nil, name_tracker: "sp", v_tracker: "js-2.14.0", v_collector: "GitLab 13.1.0-pre", v_etl: "GitLab 13.1.0-pre", user_id: nil, user_ipaddress: nil, user_fingerprint: nil, domain_userid: "d5fa9cf4-8b9f-4f49-b0bc-59a00c93b295", domain_sessionidx: 4, network_userid: nil, geo_country: nil, geo_region: nil, geo_city: nil, geo_zipcode: nil, geo_latitude: nil, geo_longitude: nil, geo_region_name: nil, ip_isp: nil, ip_organization: nil, ip_domain: nil, ip_netspeed: nil, page_url: "http://localhost:3333/products/123", page_title: nil, page_referrer: nil, page_urlscheme: nil, page_urlhost: nil, page_urlport: nil, page_urlpath: nil, page_urlquery: nil, page_urlfragment: nil, refr_urlscheme: nil, refr_urlhost: nil, refr_urlport: nil, refr_urlpath: nil, refr_urlquery: nil, refr_urlfragment: nil, refr_medium: nil, refr_source: nil, refr_term: nil, mkt_medium: nil, mkt_source: nil, mkt_term: nil, mkt_content: nil, mkt_campaign: nil, se_category: nil, se_action: nil, se_label: nil, se_property: nil, se_value: nil, tr_orderid: nil, tr_affiliation: nil, tr_total: nil, tr_tax: nil, tr_shipping: nil, tr_city: nil, tr_state: nil, tr_country: nil, ti_orderid: nil, ti_sku: nil, ti_name: nil, ti_category: nil, ti_price: nil, ti_quantity: nil, pp_xoffset_min: nil, pp_xoffset_max: nil, pp_yoffset_min: nil, pp_yoffset_max: nil, useragent: nil, br_name: nil, br_family: nil, br_version: nil, br_type: nil, br_renderengine: nil, br_lang: "en-US", br_features_pdf: nil, br_features_flash: nil, br_features_java: nil, br_features_director: nil, br_features_quicktime: nil, br_features_realplayer: nil, br_features_windowsmedia: nil, br_features_gears: nil, br_features_silverlight: nil, br_cookies: true, br_colordepth: "24", br_viewwidth: nil, br_viewheight: nil, os_name: nil, os_family: nil, os_manufacturer: nil, os_timezone: "America/Los_Angeles", dvce_type: nil, dvce_ismobile: nil, dvce_screenwidth: nil, dvce_screenheight: nil, doc_charset: "UTF-8", doc_width: nil, doc_height: nil, tr_currency: nil, tr_total_base: nil, tr_tax_base: nil, tr_shipping_base: nil, ti_currency: nil, ti_price_base: nil, base_currency: nil, geo_timezone: nil, mkt_clickid: nil, mkt_network: nil, etl_tags: nil, dvce_sent_tstamp: nil, refr_domain_userid: nil, refr_dvce_tstamp: nil, domain_sessionid: "c5577a4f-7852-48a7-a0de-ff12ffdd8eae", derived_tstamp: nil, event_vendor: nil, event_name: nil, event_format: nil, event_version: nil, event_fingerprint: nil, true_tstamp: nil>1629 .count_by_graph1630 is expected to eq {"app"=>1, "web"=>2}1631 is expected to eq {"app"=>1, "mobile"=>1, "web"=>2}1632 .count_collector_tstamp_by_day1633 is expected to eq {2023-08-10 00:00:00.000000000 +0000=>3, 2023-08-05 00:00:00.000000000 +0000=>2}1634MilestonesFinder1635 without filters1636 returns milestones for projects1637 returns milestones for groups1638 milestones for groups and project1639 returns milestones for groups and projects1640 orders milestones by due date1641 when grouping and sorting by expired_last1642 current milestones are returned first, then milestones without due date followed by expired milestones, sorted by due date in ascending order1643 #find_by1644 finds a single milestone1645 with filters1646 filters by id1647 filters by active state1648 filters by closed state1649 filters by title1650 filters by search_title1651 filters by search (title, description)1652 by timeframe1653 returns milestones with start_date and due_date between timeframe1654 returns milestones which starts before the timeframe1655 returns milestones which ends after the timeframe1656 by updated_at1657 returns milestones updated before a given date1658 returns milestones updated after a given date1659 returns milestones updated between the given dates1660 by iids1661 returns milestone for the given iids1662 when include_parent_milestones is true1663 ignores the iid filter1664Gitlab::Database::DatabaseConnectionInfo1665 # order random1666 #order1667 name: :main, order: 01668 is expected to eq 01669 name: :ci, order: 11670 is expected to eq 11671 name: :undefined, order: 10001672 is expected to eq 10001673 db_docs_dir1674 when db_dir is specified1675 is expected to eq #<Pathname:/builds/gitlab-org/gitlab/ee/my/db/docs>1676 when db_dir is not specified fallbacks to "db/docs"1677 is expected to eq #<Pathname:/builds/gitlab-org/gitlab/db/docs>1678 #has_gitlab_shared?1679 gitlab_schemas: ["gitlab_main"], result: false1680 is expected to eq false1681 gitlab_schemas: ["gitlab_main", "gitlab_shared"], result: true1682 is expected to eq true1683 #connection_class_or_fallback1684 for "main"1685 does return ActiveRecord::Base1686 for "ci"1687 does return "Ci::ApplicationRecord" when it is connection_class1688 does return "ActiveRecord::Base" (fallback to "main") when it is not connection_class1689 #connection_class1690 when klass is "ActiveRecord::Base"1691 does always return "ActiveRecord::Base"1692 when klass is "Ci::ApplicationRecord"1693 does return "Ci::ApplicationRecord" when it is connection_class1694 does return nil when it is not connection_class1695 .load_file1696 does load YAML file and has file_path specified1697 .new1698 does convert attributes into symbols and objects1699 does raise error when using invalid argument1700IncidentManagement::ProjectIncidentManagementSetting1701 # order random1702 #pagerduty_token1703 when token already set1704 reads the token1705 when not set1706 when PagerDuty webhook is active1707 generates a token before validation1708 when PagerDuty webhook is not active1709 does not generate a token before validation1710 #issue_template_content1711 with valid issue_template_key1712 returns issue content1713 with unknown issue_template_key1714 behaves like no content1715 returns no content1716 without issue_template_key1717 behaves like no content1718 returns no content1719 Associations1720 is expected to belong to project required: false1721 Validations1722 validate issue_template_exists1723 with create_issue enabled1724 with valid issue_template_key1725 is expected to be valid1726 with empty issue_template_key1727 is expected to be valid1728 with nil issue_template_key1729 is expected to be valid1730 with invalid issue_template_key1731 is expected to be invalid1732 returns error1733 with create_issue disabled1734 with unknown issue_template_key1735 is expected to be valid1736Projects::UpdateStatisticsService1737 #execute1738 with a non-existing project1739 does nothing1740 with an existing project1741 statistics: [], method_caches: [:size, :recent_objects_size, :commit_count]1742 refreshes the project statistics1743 invalidates the method caches after a refresh1744 statistics: ["repository_size"], method_caches: [:size, :recent_objects_size]1745 refreshes the project statistics1746 invalidates the method caches after a refresh1747 statistics: [:repository_size], method_caches: [:size, :recent_objects_size]1748 refreshes the project statistics1749 invalidates the method caches after a refresh1750 statistics: [:lfs_objects_size], method_caches: nil1751 refreshes the project statistics1752 invalidates the method caches after a refresh1753 statistics: [:commit_count], method_caches: [:commit_count]1754 refreshes the project statistics1755 invalidates the method caches after a refresh1756 statistics: [:repository_size, :commit_count], method_caches: [:size, :recent_objects_size, :commit_count]1757 refreshes the project statistics1758 invalidates the method caches after a refresh1759 statistics: [:repository_size, :commit_count, :lfs_objects_size], method_caches: [:size, :recent_objects_size, :commit_count]1760 refreshes the project statistics1761 invalidates the method caches after a refresh1762 with an existing project with a Wiki1763 invalidates and refreshes Wiki size1764Projects::TopicsFinder1765 #execute1766 returns topics1767 filter by name1768 search: "topic", result: ["topicC", "topicA", "topicB"]1769 returns filtered topics1770 search: "pic", result: ["topicC", "topicA", "topicB"]1771 returns filtered topics1772 search: "B", result: []1773 returns filtered topics1774 search: "cB", result: []1775 returns filtered topics1776 search: "icB", result: ["topicB"]1777 returns filtered topics1778 search: "topicA", result: ["topicA"]1779 returns filtered topics1780 search: "topica", result: ["topicA"]1781 returns filtered topics1782 filter by without_projects1783 returns topics without assigned projects1784 returns topics without assigned projects1785Gitlab::FogbugzImport::Importer1786 imports bugs1787 imports opened bugs1788 imports closed bugs1789 verify url1790 when host is localhost1791 does not allow localhost requests1792 when host is on local network1793 does not allow localhost requests1794 when host is ftp protocol1795 only accept http and https requests1796PersonalAccessTokens::CreateService1797 #execute1798 when current_user is an administrator1799 when admin mode is enabled1800 behaves like a successfully created token1801 creates personal access token record1802 logs the event1803 notifies the user1804 when admin mode is disabled1805 behaves like an unsuccessfully created token1806 is expected to equal false1807 is expected to eq "Not permitted to create"1808 is expected to be nil1809 when current_user is not an administrator1810 target_user is not the same as current_user1811 behaves like an unsuccessfully created token1812 is expected to equal false1813 is expected to eq "Not permitted to create"1814 is expected to be nil1815 target_user is same as current_user1816 behaves like a successfully created token1817 creates personal access token record1818 logs the event1819 notifies the user1820 with no expires_at set1821 is expected to eq Fri, 09 Aug 20241822 when invalid scope1823 when concatenate_errors: true1824 is expected to be an instance of String1825 when concatenate_errors: false1826 is expected to be an instance of Array1827layouts/_header_search1828 when doing a project level search1829 sets project_id field1830 behaves like hidden fields are properly set1831 when search_context has a scope value1832 sets scope input to issues1833 when search_context has a code_search value1834 sets search_code input to true1835 when search_context has a ref value1836 sets repository_ref input to test-branch1837 when search_context has a for_snippets value1838 sets for_snippets input to true1839 nav_source1840 always set to navbar1841 submit button1842 always renders for specs1843 when doing a group level search1844 sets group_id field1845 behaves like hidden fields are properly set1846 when search_context has a scope value1847 sets scope input to issues1848 when search_context has a code_search value1849 sets search_code input to true1850 when search_context has a ref value1851 sets repository_ref input to test-branch1852 when search_context has a for_snippets value1853 sets for_snippets input to true1854 nav_source1855 always set to navbar1856 submit button1857 always renders for specs1858MilestoneRelease1859 associations1860 is expected to belong to release required: false1861 is expected to belong to milestone required: false1862 when trying to create the same record in milestone_releases twice1863 is not committing on the second time1864 validations1865 when milestone and release do not have the same project1866 is not valid1867 when milestone and release have the same project1868 is expected to be valid1869WorkItems::ExportCsvService1870 # order random1871 title1872 renders csv to string1873 returns two work items1874 author name1875 created_at1876 author username1877 type1878 description1879 preloads fields to avoid N+1 queries1880 iid1881 when import_export_work_items_csv flag is not enabled1882 renders an error1883 #email1884 emails csv1885 when importing an exported file1886 for work item of type issue1887 behaves like a exported file that can be imported1888 imports work item with correct attributes1889 behaves like a service that returns invalid fields from selection1890 #invalid_fields1891 returns invalid fields from selection1892Gitlab::Ci::Pipeline::Expression::Lexer1893 #tokens1894 returns single value1895 does ignore whitespace characters1896 returns multiple values of the same token1897 returns multiple values with different tokens1898 returns tokens and operators1899 limits statement to specified amount of tokens1900 raises syntax error in case of finding unknown tokens1901 with complex expressions1902 expression: "$PRESENT_VARIABLE =~ /my var/ && $EMPTY_VARIABLE =~ /nope/", tokens: ["$PRESENT_VARIABLE", "=~", "/my var/", "&&", "$EMPTY_VARIABLE", "=~", "/nope/"]1903 is expected to eq ["$PRESENT_VARIABLE", "=~", "/my var/", "&&", "$EMPTY_VARIABLE", "=~", "/nope/"]1904 expression: "$EMPTY_VARIABLE == \"\" && $PRESENT_VARIABLE", tokens: ["$EMPTY_VARIABLE", "==", "\"\"", "&&", "$PRESENT_VARIABLE"]1905 is expected to eq ["$EMPTY_VARIABLE", "==", "\"\"", "&&", "$PRESENT_VARIABLE"]1906 expression: "$EMPTY_VARIABLE == \"\" && $PRESENT_VARIABLE != \"nope\"", tokens: ["$EMPTY_VARIABLE", "==", "\"\"", "&&", "$PRESENT_VARIABLE", "!=", "\"nope\""]1907 is expected to eq ["$EMPTY_VARIABLE", "==", "\"\"", "&&", "$PRESENT_VARIABLE", "!=", "\"nope\""]1908 expression: "$PRESENT_VARIABLE && $EMPTY_VARIABLE", tokens: ["$PRESENT_VARIABLE", "&&", "$EMPTY_VARIABLE"]1909 is expected to eq ["$PRESENT_VARIABLE", "&&", "$EMPTY_VARIABLE"]1910 expression: "$PRESENT_VARIABLE =~ /my var/ || $EMPTY_VARIABLE =~ /nope/", tokens: ["$PRESENT_VARIABLE", "=~", "/my var/", "||", "$EMPTY_VARIABLE", "=~", "/nope/"]1911 is expected to eq ["$PRESENT_VARIABLE", "=~", "/my var/", "||", "$EMPTY_VARIABLE", "=~", "/nope/"]1912 expression: "$EMPTY_VARIABLE == \"\" || $PRESENT_VARIABLE", tokens: ["$EMPTY_VARIABLE", "==", "\"\"", "||", "$PRESENT_VARIABLE"]1913 is expected to eq ["$EMPTY_VARIABLE", "==", "\"\"", "||", "$PRESENT_VARIABLE"]1914 expression: "$EMPTY_VARIABLE == \"\" || $PRESENT_VARIABLE != \"nope\"", tokens: ["$EMPTY_VARIABLE", "==", "\"\"", "||", "$PRESENT_VARIABLE", "!=", "\"nope\""]1915 is expected to eq ["$EMPTY_VARIABLE", "==", "\"\"", "||", "$PRESENT_VARIABLE", "!=", "\"nope\""]1916 expression: "$PRESENT_VARIABLE || $EMPTY_VARIABLE", tokens: ["$PRESENT_VARIABLE", "||", "$EMPTY_VARIABLE"]1917 is expected to eq ["$PRESENT_VARIABLE", "||", "$EMPTY_VARIABLE"]1918 expression: "$PRESENT_VARIABLE && null || $EMPTY_VARIABLE == \"\"", tokens: ["$PRESENT_VARIABLE", "&&", "null", "||", "$EMPTY_VARIABLE", "==", "\"\""]1919 is expected to eq ["$PRESENT_VARIABLE", "&&", "null", "||", "$EMPTY_VARIABLE", "==", "\"\""]1920 with parentheses are used1921 expression: "($PRESENT_VARIABLE =~ /my var/) && $EMPTY_VARIABLE =~ /nope/", tokens: ["(", "$PRESENT_VARIABLE", "=~", "/my var/", ")", "&&", "$EMPTY_VARIABLE", "=~", "/nope/"]1922 is expected to eq ["(", "$PRESENT_VARIABLE", "=~", "/my var/", ")", "&&", "$EMPTY_VARIABLE", "=~", "/nope/"]1923 expression: "$PRESENT_VARIABLE =~ /my var/ || ($EMPTY_VARIABLE =~ /nope/)", tokens: ["$PRESENT_VARIABLE", "=~", "/my var/", "||", "(", "$EMPTY_VARIABLE", "=~", "/nope/", ")"]1924 is expected to eq ["$PRESENT_VARIABLE", "=~", "/my var/", "||", "(", "$EMPTY_VARIABLE", "=~", "/nope/", ")"]1925 expression: "($PRESENT_VARIABLE && (null || $EMPTY_VARIABLE == \"\"))", tokens: ["(", "$PRESENT_VARIABLE", "&&", "(", "null", "||", "$EMPTY_VARIABLE", "==", "\"\"", ")", ")"]1926 is expected to eq ["(", "$PRESENT_VARIABLE", "&&", "(", "null", "||", "$EMPTY_VARIABLE", "==", "\"\"", ")", ")"]1927 #lexemes1928 returns an array of syntax lexemes1929Users::UpdateCanonicalEmailService1930 #initialize1931 unsuccessful1932 raises an error if there is no user1933 raises an error if the object is not a User1934 when a user is provided1935 does not error1936 #canonicalize_email1937 when the email domain is included1938 strips out any . or anything after + in the agent for included domains1939 raw_email: "user@includeddomain.com", expected_result: "user@includeddomain.com"1940 is expected to eq "user@includeddomain.com"1941 raw_email: "u.s.e.r@includeddomain.com", expected_result: "user@includeddomain.com"1942 is expected to eq "user@includeddomain.com"1943 raw_email: "user+123@includeddomain.com", expected_result: "user@includeddomain.com"1944 is expected to eq "user@includeddomain.com"1945 raw_email: "us.er+123@includeddomain.com", expected_result: "user@includeddomain.com"1946 is expected to eq "user@includeddomain.com"1947 when the user has an existing canonical email1948 updates the user canonical email record1949 when the email domain is not included1950 returns nil1951 destroys any existing UserCanonicalEmail record1952 when the user email is not processable1953 with1954 is expected to be nil1955 preserves any existing record1956 with nonsense1957 is expected to be nil1958 preserves any existing record1959Tooling::Danger::FeatureFlag1960 #feature_flag_files1961 retrieves added feature flag files1962 with added added feature flag files1963 returns an array of Found objects1964 without added added feature flag files1965 returns an array of Found objects1966 retrieves modified feature flag files1967 with modified modified feature flag files1968 returns an array of Found objects1969 without modified modified feature flag files1970 returns an array of Found objects1971 retrieves deleted feature flag files1972 with deleted deleted feature flag files1973 returns an array of Found objects1974 without deleted deleted feature flag files1975 returns an array of Found objects1976 #stage_label1977 when there is no stage label1978 returns nil1979 when there is a stage label1980 returns the stage label1981 Tooling::Danger::FeatureFlag::Found1982 #name1983 returns value from the YAML1984 #introduced_by_url1985 returns value from the YAML1986 #rollout_issue_url1987 returns value from the YAML1988 #milestone1989 returns value from the YAML1990 #type1991 returns value from the YAML1992 #group1993 returns value from the YAML1994 #default_enabled1995 returns value from the YAML1996 #raw1997 returns the raw YAML1998 #group_match_mr_label?1999 when group is nil2000 is true only if MR has no group label2001 when group is not nil2002 is true only if MR has the same group label2003Gitlab::Import::MergeRequestHelpers2004 .create_merge_request_without_hooks2005 when merge request does not exist2006 returns a new object2007 does load all existing objects2008 when merge request does exist2009 returns an existing object2010 when project is deleted2011 returns an existing object2012 .insert_merge_request_reviewers2013 when reviewers are not present2014 does not insert reviewers2015 when reviewers are present2016 inserts reviewers2017Integrations::SlackSlashCommands2018 behaves like Integrations::BaseSlashCommands2019 Associations2020 is expected to respond to #token2021 default values2022 is expected to eq :chat2023 #valid_token?2024 when the token is empty2025 is false2026 when there is a token2027 accepts equal tokens2028 #trigger2029 no token is passed2030 returns nil2031 with a token passed2032 no user can be found2033 when no url can be generated2034 responds with the authorize url2035 when an auth url can be generated2036 generates the url2037 when the user is authenticated2038 triggers the command2039 when user is blocked2040 behaves like blocks command execution2041 is expected to match "you do not have access to the GitLab project"2042 when user is deactivated2043 behaves like blocks command execution2044 is expected to match "your http://localhost account needs to be reactivated"2045 #trigger2046 when an auth url is generated2047 uses slack compatible links2048Resolvers::ProjectPackagesResolver2049 #resolve2050 behaves like group and projects packages resolver2051 without sort2052 returns the proper packages2053 with sorting and filtering2054 CREATED_DESC2055 is expected to eq [#<Packages::Package id: 87, project_id: 775, created_at: "2023-08-10 11:37:19.622770012 +0000", updated_at: "2023-08-10 12:37:19.881200013 +0000", name: "foo", version: "2.0.0", package_type: "maven", creator_id: 1275, status: "error", last_downloaded_at: nil, status_message: nil>, #<Packages::Package id: 85, project_id: 775, created_at: "2023-08-09 12:37:19.224302849 +0000", updated_at: "2023-08-10 12:37:19.520321921 +0000", name: "bar", version: "1.0.0", package_type: "conan", creator_id: 1275, status: "default", last_downloaded_at: nil, status_message: nil>]2056 NAME_DESC2057 is expected to eq [#<Packages::Package id: 87, project_id: 775, created_at: "2023-08-10 11:37:19.622770012 +0000", updated_at: "2023-08-10 12:37:19.881200013 +0000", name: "foo", version: "2.0.0", package_type: "maven", creator_id: 1275, status: "error", last_downloaded_at: nil, status_message: nil>, #<Packages::Package id: 85, project_id: 775, created_at: "2023-08-09 12:37:19.224302849 +0000", updated_at: "2023-08-10 12:37:19.520321921 +0000", name: "bar", version: "1.0.0", package_type: "conan", creator_id: 1275, status: "default", last_downloaded_at: nil, status_message: nil>]2058 VERSION_DESC2059 is expected to eq [#<Packages::Package id: 87, project_id: 775, created_at: "2023-08-10 11:37:19.622770012 +0000", updated_at: "2023-08-10 12:37:19.881200013 +0000", name: "foo", version: "2.0.0", package_type: "maven", creator_id: 1275, status: "error", last_downloaded_at: nil, status_message: nil>, #<Packages::Package id: 85, project_id: 775, created_at: "2023-08-09 12:37:19.224302849 +0000", updated_at: "2023-08-10 12:37:19.520321921 +0000", name: "bar", version: "1.0.0", package_type: "conan", creator_id: 1275, status: "default", last_downloaded_at: nil, status_message: nil>]2060 TYPE_ASC2061 is expected to eq [#<Packages::Package id: 87, project_id: 775, created_at: "2023-08-10 11:37:19.622770012 +0000", updated_at: "2023-08-10 12:37:19.881200013 +0000", name: "foo", version: "2.0.0", package_type: "maven", creator_id: 1275, status: "error", last_downloaded_at: nil, status_message: nil>, #<Packages::Package id: 85, project_id: 775, created_at: "2023-08-09 12:37:19.224302849 +0000", updated_at: "2023-08-10 12:37:19.520321921 +0000", name: "bar", version: "1.0.0", package_type: "conan", creator_id: 1275, status: "default", last_downloaded_at: nil, status_message: nil>]2062 CREATED_ASC2063 is expected to eq [#<Packages::Package id: 85, project_id: 775, created_at: "2023-08-09 12:37:19.224302849 +0000", updated_at: "2023-08-10 12:37:19.520321921 +0000", name: "bar", version: "1.0.0", package_type: "conan", creator_id: 1275, status: "default", last_downloaded_at: nil, status_message: nil>, #<Packages::Package id: 87, project_id: 775, created_at: "2023-08-10 11:37:19.622770012 +0000", updated_at: "2023-08-10 12:37:19.881200013 +0000", name: "foo", version: "2.0.0", package_type: "maven", creator_id: 1275, status: "error", last_downloaded_at: nil, status_message: nil>]2064 NAME_ASC2065 is expected to eq [#<Packages::Package id: 85, project_id: 775, created_at: "2023-08-09 12:37:19.224302849 +0000", updated_at: "2023-08-10 12:37:19.520321921 +0000", name: "bar", version: "1.0.0", package_type: "conan", creator_id: 1275, status: "default", last_downloaded_at: nil, status_message: nil>, #<Packages::Package id: 87, project_id: 775, created_at: "2023-08-10 11:37:19.622770012 +0000", updated_at: "2023-08-10 12:37:19.881200013 +0000", name: "foo", version: "2.0.0", package_type: "maven", creator_id: 1275, status: "error", last_downloaded_at: nil, status_message: nil>]2066 VERSION_ASC2067 is expected to eq [#<Packages::Package id: 85, project_id: 775, created_at: "2023-08-09 12:37:19.224302849 +0000", updated_at: "2023-08-10 12:37:19.520321921 +0000", name: "bar", version: "1.0.0", package_type: "conan", creator_id: 1275, status: "default", last_downloaded_at: nil, status_message: nil>, #<Packages::Package id: 87, project_id: 775, created_at: "2023-08-10 11:37:19.622770012 +0000", updated_at: "2023-08-10 12:37:19.881200013 +0000", name: "foo", version: "2.0.0", package_type: "maven", creator_id: 1275, status: "error", last_downloaded_at: nil, status_message: nil>]2068 TYPE_DESC2069 is expected to eq [#<Packages::Package id: 85, project_id: 775, created_at: "2023-08-09 12:37:19.224302849 +0000", updated_at: "2023-08-10 12:37:19.520321921 +0000", name: "bar", version: "1.0.0", package_type: "conan", creator_id: 1275, status: "default", last_downloaded_at: nil, status_message: nil>, #<Packages::Package id: 87, project_id: 775, created_at: "2023-08-10 11:37:19.622770012 +0000", updated_at: "2023-08-10 12:37:19.881200013 +0000", name: "foo", version: "2.0.0", package_type: "maven", creator_id: 1275, status: "error", last_downloaded_at: nil, status_message: nil>]2070 filter by package_name2071 is expected to eq [#<Packages::Package id: 85, project_id: 775, created_at: "2023-08-09 12:37:19.224302849 +0000", updated_at: "2023-08-10 12:37:19.520321921 +0000", name: "bar", version: "1.0.0", package_type: "conan", creator_id: 1275, status: "default", last_downloaded_at: nil, status_message: nil>]2072 filter by package_type2073 is expected to eq [#<Packages::Package id: 85, project_id: 775, created_at: "2023-08-09 12:37:19.224302849 +0000", updated_at: "2023-08-10 12:37:19.520321921 +0000", name: "bar", version: "1.0.0", package_type: "conan", creator_id: 1275, status: "default", last_downloaded_at: nil, status_message: nil>]2074 filter by status2075 is expected to eq [#<Packages::Package id: 87, project_id: 775, created_at: "2023-08-10 11:37:19.622770012 +0000", updated_at: "2023-08-10 12:37:19.881200013 +0000", name: "foo", version: "2.0.0", package_type: "maven", creator_id: 1275, status: "error", last_downloaded_at: nil, status_message: nil>]2076 include_versionless2077 is expected to include #<Packages::Package id: 89, project_id: 775, created_at: "2023-08-10 12:36:19.920741494 +0000", updated_at: "2023-08-10 12:37:20.180539625 +0000", name: "baz", version: nil, package_type: "maven", creator_id: 1275, status: "default", last_downloaded_at: nil, status_message: nil>2078Gitlab::Database::LoadBalancing::HostList2079 #initialize2080 sets metrics for current number of hosts and current index2081 #length2082 returns the number of hosts in the list2083 #host_names_and_ports2084 with ports2085 returns the host names of all hosts2086 without ports2087 returns the host names of all hosts2088 #hosts2089 returns a copy of the host2090 #hosts=2091 updates the list of hosts to use2092 #next2093 returns a host2094 cycles through all available hosts2095 skips hosts that are offline2096 returns nil if no hosts are online2097 returns nil if no hosts are available2098 #shuffle2099 randomizes the list2100BatchDestroyDependentAssociations2101 #dependent_associations_to_destroy2102 returns the right associations2103 #destroy_dependent_associations_in_batches2104 destroys multiple notes2105 destroys note in batches2106 excludes associations2107JobArtifactReportEntity2108 #as_json2109 exposes file_type2110 exposes file_format2111 exposes size2112 exposes download path2113Gitlab::Database::Migration2114 .[]2115 version: 1.02116 inherits from ActiveRecord::Migration[6.1]2117 includes migration helpers version 22118 includes LockRetriesConcern2119 unknown version2120 raises an error2121 .current_version2122 includes current ActiveRecord migration class2123 Gitlab::Database::Migration::LockRetriesConcern2124 when not explicitly called2125 does not disable lock retries by default2126 when explicitly disabled2127 does not disable lock retries by default2128projects/issues/service_desk/_issue.html.haml2129 # order random2130 timestamp2131 when issue is open2132 shows last updated date2133 when issue is closed2134 shows closed date2135 when issue is closed but closed_at is empty2136 shows last updated date2137 when issue is service desk issue2138 with anonymous user2139 obfuscates service_desk_reply_to email for anonymous user2140 with signed in user2141 when user has no role in project2142 obfuscates service_desk_reply_to email2143 when user has guest role in project2144 obfuscates service_desk_reply_to email2145 when user has (at least) reporter role in project2146 shows full service_desk_reply_to email2147ProjectImportOptions2148 sets default retry limit2149 sets default status expiration2150 .sidekiq_retries_exhausted2151 marks fork as failed2152 logs the appropriate error message for forked projects2153 logs the appropriate error message for forked projects2154 when project is jira import2155 logs the appropriate error message for forked projects2156 when project does not have import_state2157 raises an error2158Ci::RunningBuild2159 .upsert_shared_runner_build!2160 another pending entry does not exist2161 creates a new pending entry2162 when another queuing entry exists for given build2163 returns a build id as a result2164 when build has been picked by a project runner2165 raises an error2166 when build has not been picked by a runner yet2167 raises an error2168 partitioning2169 assigns the same partition id as the one that build has2170 behaves like cleanup by a loose foreign key2171 cleans up (delete or nullify) the model2172Gitlab::Database::BackgroundMigrationJob2173 is expected to be a kind of Gitlab::Database::SharedModel(abstract)2174 behaves like having unique enum values2175 has unique values in "status"2176 .for_migration_execution2177 returns jobs matching class_name and arguments2178 normalizes class names by removing leading ::2179 .mark_all_as_succeeded2180 marks all matching jobs as succeeded2181 normalizes class_names by removing leading ::2182 returns the number of jobs updated2183 when previous matching jobs have already succeeded2184 does not update non-pending jobs2185 #class_name=2186 when the class_name is given without the leading ::2187 sets the class_name to the given value2188 when the class_name is given with the leading ::2189 removes the leading :: when setting the class_name2190 when the value is nil2191 sets the class_name to nil2192 when the values is blank2193 sets the class_name to the given value2194LabelPresenter2195 #edit_path2196 with group label2197 is expected to eq "/groups/group136/-/labels/1006/edit"2198 with project label2199 is expected to eq "/group136/project-781/-/labels/1007/edit"2200 with an admin label2201 is expected to eq "/admin/labels/1008/edit"2202 #destroy_path2203 with group label2204 is expected to eq "/groups/group136/-/labels/1009"2205 with project label2206 is expected to eq "/group136/project-781/-/labels/1010"2207 with an admin label2208 is expected to eq "/admin/labels/1011"2209 #filter_path2210 with group as context subject2211 is expected to eq "/groups/group136/-/issues?label_name%5B%5D=label166"2212 with project as context subject2213 is expected to eq "/group136/project-781/-/issues?label_name%5B%5D=label167"2214 #can_subscribe_to_label_in_different_levels?2215 returns true for group labels in project context2216 returns false for project labels in project context2217 #project_label?2218 with group label2219 is expected to be falsey2220 with project label2221 is expected to be truthy2222 #subject_name2223 with group label2224 is expected to eq "group136"2225 with project label2226 is expected to eq "Project-781 Name"2227 with an admin label2228 is expected to be nil2229 #subject_full_name2230 with group label2231 is expected to eq "group136"2232 with project label2233 is expected to eq "group136 / Project-781 Name"2234 with an admin label2235 is expected to be nil2236Packages::Nuget::ExtractMetadataFileService2237 # order random2238 #execute2239 with valid package file id2240 returns the nuspec file content2241 with invalid package file id2242 behaves like raises an error2243 is expected to raise Packages::Nuget::ExtractMetadataFileService::ExtractionError with "invalid package file"2244 when linked to a non nuget package2245 behaves like raises an error2246 is expected to raise Packages::Nuget::ExtractMetadataFileService::ExtractionError with "invalid package file"2247 with a 0 byte package file id2248 behaves like raises an error2249 is expected to raise Packages::Nuget::ExtractMetadataFileService::ExtractionError with "invalid package file"2250 without the nuspec file2251 behaves like raises an error2252 is expected to raise Packages::Nuget::ExtractMetadataFileService::ExtractionError with "nuspec file not found"2253 with a too big nuspec file2254 behaves like raises an error2255 is expected to raise Packages::Nuget::ExtractMetadataFileService::ExtractionError with "nuspec file too big"2256 with a corrupted nupkg file with a wrong entry size2257 behaves like raises an error2258 is expected to raise Packages::Nuget::ExtractMetadataFileService::ExtractionError with "nuspec file has the wrong entry size: entry 'DummyProject.DummyPackage.nuspec' should be 255B, but is larger when inflated."2259Gitlab::Metrics::Subscribers::RackAttack2260 .payload2261 when the request store is empty2262 returns empty data2263 when the request store already has data2264 returns the accumulated data2265 #throttle2266 behaves like log into auth logger2267 when matched throttle does not require user information2268 logs request information2269 matching user or deploy token authenticated information2270 when matching for user2271 when user not found2272 logs request information and user id2273 when user found2274 logs request information and user meta2275 when matching for deploy token2276 when deploy token found2277 logs request information and user meta2278 #blocklist2279 behaves like log into auth logger2280 when matched throttle does not require user information2281 logs request information2282 matching user or deploy token authenticated information2283 when matching for user2284 when user not found2285 logs request information and user id2286 when user found2287 logs request information and user meta2288 when matching for deploy token2289 when deploy token found2290 logs request information and user meta2291 #track2292 behaves like log into auth logger2293 when matched throttle does not require user information2294 logs request information2295 matching user or deploy token authenticated information2296 when matching for user2297 when user not found2298 logs request information and user id2299 when user found2300 logs request information and user meta2301 when matching for deploy token2302 when deploy token found2303 logs request information and user meta2304 #safelist2305 adds the matched name to safe request store2306Tooling::Danger::BulkDatabaseActions2307 # order random2308 #add_comment_for_bulk_database_action_method_usage2309 for single line method call2310 when file is a non-spec Ruby file2311 method_call: "update_all(revoked: true)", expect_comment?: true2312 correctly handles potential bulk database action2313 method_call: "destroy_all", expect_comment?: true2314 correctly handles potential bulk database action2315 method_call: "delete_all", expect_comment?: true2316 correctly handles potential bulk database action2317 method_call: "update(revoked: true)", expect_comment?: true2318 correctly handles potential bulk database action2319 method_call: "delete", expect_comment?: true2320 correctly handles potential bulk database action2321 method_call: "update_two_factor", expect_comment?: false2322 correctly handles potential bulk database action2323 method_call: "delete_keys(key)", expect_comment?: false2324 correctly handles potential bulk database action2325 method_call: "destroy_hook(hook)", expect_comment?: false2326 correctly handles potential bulk database action2327 method_call: "destroy_all_merged", expect_comment?: false2328 correctly handles potential bulk database action2329 method_call: "update_all_mirrors", expect_comment?: false2330 correctly handles potential bulk database action2331 for spec directories2332 for FOSS spec file2333 behaves like no Danger comment2334 does not comment on the bulk update action usage2335 for EE spec file2336 behaves like no Danger comment2337 does not comment on the bulk update action usage2338 for JiHu spec file2339 behaves like no Danger comment2340 does not comment on the bulk update action usage2341 for strings2342 behaves like no Danger comment2343 does not comment on the bulk update action usage2344ExtractsRef::RequestedRef2345 # order random2346 #find2347 when the ref is the sha for a commit2348 and a tag and branch with that sha as a name2349 returns the commit2350 behaves like RequestedRef when ref_type is specified2351 when ref_type is heads2352 returns the branch commit2353 when ref_type is tags2354 returns the tag commit2355 when ref is for a tag2356 returns the tag commit2357 and there is a branch with the same name2358 returns the tag commit2359 behaves like RequestedRef when ref_type is specified2360 when ref_type is heads2361 returns the branch commit2362 when ref_type is tags2363 returns the tag commit2364 when ref is only for a branch2365 returns the branch commit2366 when ref is an abbreviated commit sha2367 returns the commit2368 when ref does not exist2369 returns the commit2370 when ref is symbolic2371 returns the commit2372Security::CiConfiguration::SastBuildAction2373 with existing .gitlab-ci.yml2374 sast has not been included2375 template includes are array2376 generates the correct YML2377 template include is not an array2378 generates the correct YML2379 reports defaults have been overwritten2380 sast template include is not an array2381 generates the correct YML2382 with default values2383 generates the correct YML2384 reports defaults have not been overwritten2385 analyzer section2386 generates the correct YML2387 analyzers are disabled2388 writes SAST_EXCLUDED_ANALYZERS2389 all analyzers are enabled2390 does not write SAST_EXCLUDED_ANALYZERS2391 with update stage and SEARCH_MAX_DEPTH and set SECURE_ANALYZERS_PREFIX to default2392 generates the correct YML2393 with no existing variables2394 generates the correct YML2395 with no existing sast config2396 generates the correct YML2397 with no existing sast variables2398 generates the correct YML2399 with no .gitlab-ci.yml2400 autodevops disabled2401 with one empty parameter2402 generates the correct YML2403 with all parameters2404 generates the correct YML2405 with autodevops enabled2406 generates the correct YML2407CustomEmojiPolicy2408 custom emoji permissions2409 when user is2410 a developer2411 is expected to be allowed :create_custom_emoji2412 is maintainer2413 is expected to be allowed :delete_custom_emoji2414 is owner2415 is expected to be allowed :delete_custom_emoji2416 is developer and emoji creator2417 is expected to be allowed :delete_custom_emoji2418 is emoji creator but not a member of the group2419 is expected not to be allowed :delete_custom_emoji2420Gitlab::FileFinder2421 #find2422 does not cause N+1 query2423 behaves like file finder2424 finds by path2425 finds by content2426 with inclusive filters2427 filters by filename2428 filters by path2429 filters by extension2430 with exclusive filters2431 filters by filename2432 filters by path2433 filters by extension2434 with white space in the path2435 filters by path correctly2436BulkImports::RepositoryBundleExportService2437 #execute2438 when repository exists2439 bundles repository to disk2440 when repository does not exist2441 does not bundle repository to disk2442 when repository is empty2443 does not bundle repository to disk2444 when repository exists2445 bundles repository to disk2446 when repository does not exist2447 does not bundle repository to disk2448 when repository is empty2449 does not bundle repository to disk2450Ci::CreatePipelineService2451 job:parallel2452 numeric2453 creates the pipeline2454 creates 3 jobs2455 matrix2456 creates the pipeline2457 creates 4 builds with the corresponding matrix variables2458 when a bridge is using parallel:matrix2459 creates the pipeline2460 creates 1 build and 4 bridges with the corresponding matrix variables2461notify/user_deactivated_email.html.haml2462 # order random2463 displays the user's name2464 when additional text setting is not set2465 does not display any additional text2466 when additional text setting is set2467 when additional text feature flag is enabled2468 displays the additional text2469 when additional text feature flag is disabled2470 does not display the additional text2471Git::WikiPushService::Change2472 #page2473 the page does not exist2474 the operation is added2475 is expected to have attributes {:page => (be nil)}2476 the operation is deleted2477 is expected to have attributes {:page => (be nil)}2478 the operation is renamed2479 is expected to have attributes {:page => (be nil)}2480 the operation is modified2481 is expected to have attributes {:page => (be nil)}2482 the page can be found2483 the page has been deleted2484 is expected to have attributes {:page => #<Double "WikiPage">}2485 the operation is added2486 is expected to have attributes {:page => #<Double "WikiPage">}2487 the operation is renamed2488 is expected to have attributes {:page => #<Double "WikiPage">}2489 the operation is modified2490 is expected to have attributes {:page => #<Double "WikiPage">}2491 #last_known_slug2492 the page has been created2493 is expected to have attributes {:last_known_slug => "Page_11"}2494 the operation is renamed2495 is expected to have attributes {:last_known_slug => "Page_13"}2496 the operation is modified2497 is expected to have attributes {:last_known_slug => "Page_14"}2498 the operation is deleted2499 is expected to have attributes {:last_known_slug => "Page_15"}2500 #event_action2501 the page is deleted2502 is expected to have attributes {:event_action => :destroyed}2503 the page is added2504 is expected to have attributes {:event_action => :created}2505 the page is renamed2506 is expected to have attributes {:event_action => :updated}2507 the page is modified2508 is expected to have attributes {:event_action => :updated}2509Gitlab::GithubImport::LabelFinder2510 #id_for2511 with a cache in place2512 returns the ID of the given label2513 returns nil for an empty cache key2514 returns nil for a non existing label name2515 without a cache in place2516 returns nil for a label2517 #build_cache2518 builds the cache of all project labels2519 #cache_key_for2520 returns the cache key for a label name2521Gitlab::Diff::LineMapper2522 #old_to_new2523 with a diff file2524 returns the new line number for the old line number2525 without a diff file2526 returns the same line number2527 #new_to_old2528 with a diff file2529 returns the old line number for the new line number2530 without a diff file2531 returns the same line number2532Subquery2533 # order random2534 when relation is loaded2535 behaves like subquery as array values2536 is expected to contain exactly 814, 815, and 8162537 is expected not to make queries2538 when array size exceeds max_limit2539 behaves like subquery as relation2540 is expected to be a kind of ActiveRecord::Relation2541 is expected to make queries2542 with a select2543 behaves like subquery as array values2544 is expected to contain exactly 814, 815, and 8162545 is expected not to make queries2546 and querying with an unloaded column2547 is expected to raise ActiveModel::MissingAttributeError2548 when relation is not loaded2549 behaves like subquery as relation2550 is expected to be a kind of ActiveRecord::Relation2551 is expected to make queries2552 when array size exceeds max_limit2553 behaves like subquery as relation2554 is expected to be a kind of ActiveRecord::Relation2555 is expected to make queries2556LooseForeignKeys::DeletedRecord2557 class methods2558 .load_batch_for_table2559 loads records and orders them by creation date2560 supports configurable batch size2561 .mark_records_processed2562 updates all records2563 .reschedule2564 reschedules all records2565 .increment_attempts2566 increaments the cleanup_attempts column2567 sliding_list partitioning2568 next_partition_if callback2569 when the partition is empty2570 is expected to eq false2571 when the partition has records2572 is expected to eq false2573 when the first record of the partition is older than PARTITION_DURATION2574 is expected to eq true2575 detach_partition_if callback2576 when the partition contains unprocessed records2577 is expected to eq false2578 when the partition contains only processed records2579 is expected to eq true2580 the behavior of the strategy2581 moves records to new partitions as time passes2582Gitlab::Ci::Build::Policy::Refs2583 #satisfied_by?2584 when matching ref2585 is satisfied when pipeline branch matches2586 is not satisfied when pipeline branch does not match2587 when matching tags2588 when pipeline runs for a tag2589 is satisfied when tags matcher is specified2590 when pipeline is not created for a tag2591 is not satisfied when tag match is specified2592 when also matching a path2593 is satisfied when provided patch matches specified one2594 is not satisfied when path differs2595 when matching a source2596 is satisfied when provided source keyword matches2597 is not satisfied when provided source keyword does not match2598 when source is merge_request_event2599 is satisfied with only: merge_request2600 is not satisfied with only: merge_request_event2601 when source is external_pull_request_event2602 is satisfied with only: external_pull_request2603 is not satisfied with only: external_pull_request_event2604 when source is pipeline2605 is satisfied with only: pipelines2606 is satisfied with only: pipeline2607 when source is parent_pipeline2608 is satisfied with only: parent_pipelines2609 is satisfied with only: parent_pipeline2610 when matching a ref by a regular expression2611 is satisfied when regexp matches pipeline ref2612 is satisfied when case-insensitive regexp matches pipeline ref2613 is not satisfied when regexp does not match pipeline ref2614 when unsafe regexp is used2615 ignores invalid regexp2616 malicious regexp2617 takes under a second2618Gitlab::Analytics::InternalEventsGenerator2619 # order random2620 Creating event definition file2621 creates an event definition file using the template2622 for ultimate only feature2623 creates an event definition file using the template2624 without default identifiers2625 creates an event definition file using the template2626 with duplicated event2627 in known_events2628 raises error2629 in event definition files2630 raises error2631 Creating metric definition file2632 for single time frame2633 creates a metric definition file using the template2634 for ultimate only feature2635 creates a metric definition file using the template2636 with invalid time frame2637 raises error2638 with duplicated key path2639 raises error2640 with unique value passed with a dot2641 creates a metric definition file using the template2642 without at least one tier available2643 raises error2644 with unknown tier2645 raises error2646 without obligatory parameter2647 raises error2648 with to short description2649 asks again for description2650 for multiple time frames2651 creates a metric definition file using the template2652 with default time frames2653 creates a metric definition file using the template2654Tooling::Mappings::GraphqlBaseTypeMappings2655 # order random2656 #types_hierarchies2657 when no types are implementing other types2658 returns nothing2659 when types are implementing other types2660 when FOSS2661 returns only FOSS types2662 when EE2663 returns the correct children types2664 when JH2665 returns the correct children types2666 #execute2667 when no GraphQL files were changed2668 does not change the output file2669 when some GraphQL files were changed2670 when none of those GraphQL types are included in other GraphQL types2671 does not change the output file2672 when the GraphQL types are included in other GraphQL types2673 writes the correct specs in the output2674 #filter_files2675 when no files were changed2676 returns an empty array2677 when GraphQL files were changed2678 returns the path to the GraphQL files2679 when files are deleted2680 returns an empty array2681 #filename_to_spec_filename2682 when the spec file exists2683 returns the correct spec filename2684 when the spec file does not exist2685 returns nil2686 #filename_to_class_name2687 returns the correct class name2688ContainerExpirationPolicyWorker2689 #perform2690 process cleanups2691 calls the limited capacity worker2692 with exclusive lease taken2693 does not do anything2694 process stale ongoing cleanups2695 set them as unfinished2696 policies without container repositories2697 disables them2698 counts logging2699 logs all the counts2700 with load balancing enabled2701 reads the counts from the replica2702Autocomplete::ProjectFinder2703 #execute2704 without a project ID2705 returns nil2706 with an empty String as the project ID2707 returns nil2708 with a project ID2709 raises ActiveRecord::RecordNotFound if the project does not exist2710 raises ActiveRecord::RecordNotFound if the user can not read the project2711 raises ActiveRecord::RecordNotFound if an anonymous user can not read the project2712 returns the project if it exists and is readable2713Gitlab::Ssh::Commit2714 #signature2715 returns the cached signature on multiple calls2716 when all expected data is present2717 calls signature verifier and uses returned attributes2718 when signed_by_key is nil2719 creates signature without a key_id2720 #update_signature!2721 updates verification status2722Milestones::CreateService2723 #execute2724 calls before_create method2725 when milestone is saved successfully2726 creates a new milestone2727 opens the milestone if it is a project milestone2728 returns the created milestone2729 when milestone fails to save2730 does not create a new milestone2731 does not open the milestone2732 returns the unsaved milestone2733 #before_create2734 checks for spam2735Ci::CreatePipelineService2736 #execute2737 when source is a dangling build2738 parameter config content2739 creates a pipeline2740 creates builds with the correct names2741 creates stages with the correct names2742 sets the correct config source2743Gitlab::TimeTrackingFormatter2744 #parse2745 positive durations2746 is expected to eq 120002747 negative durations2748 is expected to eq -120002749 durations with months2750 uses our custom conversions2751 when the duration is zero2752 when keep_zero is false2753 returns nil2754 when keep_zero is true2755 returns zero2756 #output2757 time_tracking_limit_to_hours setting is true2758 is expected to eq "49h 40m"2759 time_tracking_limit_to_hours setting is false2760 is expected to eq "1w 1d 1h 40m"2761 handles negative time input2762 is expected to eq "-1w 1d 1h 40m"2763BulkImports::TreeExportService2764 #execute2765 executes export service and archives exported data2766 when unsupported relation is passed2767 raises an error2768 when relation is self2769 executes export on portable itself2770 #exported_filename2771 returns filename of the exported file2772 when relation is self2773 returns filename of the exported file2774 #export_batch2775 serializes relation with specified ids2776LooseForeignKeys::BatchCleanerService2777-- create_table(:_test_loose_fk_parent_table)2778 -> 0.0033s2779-- create_table(:_test_loose_fk_child_table_1)2780 -> 0.0020s2781-- create_table(:_test_loose_fk_child_table_2)2782 -> 0.0019s2783-- execute("CREATE TRIGGER _test_loose_fk_parent_table_loose_fk_trigger AFTER DELETE ON _test_loose_fk_parent_table REFERENCING OLD TABLE AS old_table FOR EACH STATEMENT EXECUTE FUNCTION insert_into_loose_foreign_keys_deleted_records();")2784 -> 0.0009s2785 when parent records are deleted2786 cleans up the child records2787 cleans up the pending parent DeletedRecord2788 records the DeletedRecord status updates2789 does not delete unrelated records2790 fair queueing2791 when the execution is over the limit2792 when the deleted record is under the maximum allowed cleanup attempts2793 updates the cleanup_attempts column2794 when the deleted record is above the maximum allowed cleanup attempts2795 reschedules the record2796 when over limit happens on the second cleanup call without skip locked2797 updates the cleanup_attempts column2798-- drop_table(:_test_loose_fk_parent_table)2799 -> 0.0018s2800-- drop_table(:_test_loose_fk_child_table_1)2801 -> 0.0012s2802-- drop_table(:_test_loose_fk_child_table_2)2803 -> 0.0012s2804Gitlab::Usage::ServicePing::InstrumentedPayload2805 when building service ping with values2806 builds the service ping payload for the metrics key_paths2807 when building service ping with instrumentations2808 builds the service ping payload for the metrics key_paths2809 when missing instrumentation class2810 returns empty hash2811 with broken metric definition file2812 when instrumentation class name is incorrect2813 tracks error and return fallback2814 when instrumentation class raises TypeError2815 tracks error and return fallback2816 when instrumentation class raises ArgumentError2817 tracks error and return fallback2818 when instrumentation class raises StandardError2819 tracks error and return fallback2820WorkItems::Callbacks::AwardEmoji2821 # order random2822 #before_update2823 when awarding an emoji2824 when user has no access2825 does not award the emoji2826 when user has access2827 awards the emoji to the work item2828 when the name is incorrect2829 behaves like raises a WidgetError2830 is expected to raise WorkItems::Widgets::BaseService::WidgetError with "Name is not a valid emoji name"2831 when the action is incorrect2832 behaves like raises a WidgetError2833 is expected to raise WorkItems::Widgets::BaseService::WidgetError with "foo is not a valid action."2834 when removing emoji2835 when user has no access2836 does not remove the emoji2837 when user has access2838 removes existing emoji2839 when work item does not have the emoji2840 behaves like raises a WidgetError2841 is expected to raise WorkItems::Widgets::BaseService::WidgetError with "User has not awarded emoji of type star on the awardable"2842StatAnchorsHelper2843 #stat_anchor_attrs2844 when anchor is a link2845 returns the proper attributes2846 when anchor is not a link2847 when class_modifier is set2848 returns the proper attributes2849 when class_modifier is not set2850 returns the proper attributes2851 when itemprop is not set2852 returns the itemprop attributes2853 when itemprop is set set2854 returns the itemprop attributes2855 when data is not set2856 returns the data attributes2857 when itemprop is set2858 returns the data attributes2859Users::UpdateHighestMemberRoleService2860 #execute2861 when user_highest_role already exists2862 when the current highest access level equals the already stored highest access level2863 does not update the highest access level2864 when the current highest access level does not equal the already stored highest access level2865 updates the highest access level2866 when user_highest_role does not exist2867 creates an user_highest_role object to store the highest access level2868BulkImports::Groups::Pipelines::ProjectEntitiesPipeline2869 #run2870 creates project entity2871 pipeline parts2872 is expected to includes the BulkImports::Pipeline module2873 is expected to includes the BulkImports::Pipeline::Runner module2874 has extractors2875 has transformers2876Analytics::UsageTrends::Measurement2877 validation2878 is expected to validate that :recorded_at cannot be empty/falsy2879 is expected to validate that :identifier cannot be empty/falsy2880 is expected to validate that :count cannot be empty/falsy2881 is expected to validate that :recorded_at is case-sensitively unique within the scope of :identifier2882 identifiers enum2883 maps to the correct values2884 scopes2885 .order_by_latest2886 is expected to eq [#<Analytics::UsageTrends::Measurement id: 6, count: 1000, recorded_at: "2023-08-08 12:38:15.526974679 +0000", identifier: "projects">, #<Analytics::UsageTrends::Measurement id: 7, count: 1000, recorded_at: "2023-08-05 12:38:15.531516369 +0000", identifier: "groups">, #<Analytics::UsageTrends::Measurement id: 5, count: 1000, recorded_at: "2023-07-31 12:38:15.520974169 +0000", identifier: "projects">]2887 .with_identifier2888 is expected to contain exactly #<Analytics::UsageTrends::Measurement id: 5, count: 1000, recorded_at: "2023-07-31 12:38:15.520974169 +0000", identifier: "projects"> and #<Analytics::UsageTrends::Measurement id: 6, count: 1000, recorded_at: "2023-08-08 12:38:15.526974679 +0000", identifier: "projects">2889 .recorded_after2890 is expected to contain exactly #<Analytics::UsageTrends::Measurement id: 6, count: 1000, recorded_at: "2023-08-08 12:38:15.526974679 +0000", identifier: "projects"> and #<Analytics::UsageTrends::Measurement id: 7, count: 1000, recorded_at: "2023-08-05 12:38:15.531516369 +0000", identifier: "groups">2891 when nil is given2892 does not apply filtering2893 .recorded_before2894 is expected to contain exactly #<Analytics::UsageTrends::Measurement id: 5, count: 1000, recorded_at: "2023-07-31 12:38:15.520974169 +0000", identifier: "projects"> and #<Analytics::UsageTrends::Measurement id: 7, count: 1000, recorded_at: "2023-08-05 12:38:15.531516369 +0000", identifier: "groups">2895 when nil is given2896 does not apply filtering2897 .identifier_query_mapping2898 is expected to be a kind of Hash2899 .identifier_min_max_queries2900 is expected to be a kind of Hash2901 .measurement_identifier_values2902 is expected to eq 112903 .find_latest_or_fallback2904 with usage statistics2905 returns the latest stored measurement2906 without usage statistics2907 returns the realtime query of the measurement2908Gitlab::Chat::Responder2909 .responder_for2910 using a regular build2911 returns nil2912 using a chat build2913 when response_url starts with 'https://hooks.slack.com/'2914 is expected to be an instance of Gitlab::Chat::Responder::Slack2915 when response_url does not start with 'https://hooks.slack.com/'2916 is expected to be an instance of Gitlab::Chat::Responder::Mattermost2917ProjectDestroyWorker2918 is labeled as idempotent2919 performs multiple times sequentially without raising an exception2920 does not change projects when run twice2921 #perform2922 deletes the project2923 does not raise error when project could not be found2924 does not raise error when user could not be found2925Users::DismissCalloutService2926 #execute2927 behaves like dismissing user callout2928 creates a new user callout2929 returns a user callout2930 sets the dismissed_at attribute to current time2931 updates an existing callout dismissed_at time2932 does not update an invalid record with dismissed_at time2933Gitlab::Ci::Variables::Builder::Project2934 #secret_variables2935 when the ref is protected2936 contains all the variables2937 when the ref is not protected2938 contains only the unprotected variables2939 when environment name is specified2940 when environment scope is exactly matched2941 is expected to contain exactly #<Gitlab::Ci::Variables::Collection::Item:0x00007d85521f4e60 @variable={:key=>"VARIABLE_1", :value=>"secret", :public=>false, :file=>false, :masked=>false, :raw=>false}>2942 when environment scope is matched by wildcard2943 is expected to contain exactly #<Gitlab::Ci::Variables::Collection::Item:0x00007d8545bfbec0 @variable={:key=>"VARIABLE_1", :value=>"secret", :public=>false, :file=>false, :masked=>false, :raw=>false}>2944 when environment scope does not match2945 is expected not to contain exactly #<Gitlab::Ci::Variables::Collection::Item:0x00007d8546aa5070 @variable={:key=>"VARIABLE_1", :value=>"secret", :public=>false, :file=>false, :masked=>false, :raw=>false}>2946 when environment scope has _2947 does not treat it as wildcard2948 when environment name contains underscore2949 matches literally for _2950 when environment scope has %2951 does not treat it as wildcard2952 when environment name contains a percent2953 matches literally for _2954 when variables with the same name have different environment scopes2955 puts variables matching environment scope more in the end2956Gitlab::ImportExport::DecompressedArchiveSizeValidator2957 #valid?2958 when file does not exceed allowed decompressed size2959 returns true2960 when waiter thread no longer exists2961 does not raise exception2962 when file exceeds allowed decompressed size2963 logs error message returns false2964 when max_decompressed_archive_size is set to 02965 is valid and does not log error message2966 when exception occurs during decompression2967 when timeout occurs2968 logs raised exception and terminates validator process group2969 when exception occurs2970 logs raised exception and terminates validator process group2971 archive path validation2972 when archive path is traversed2973 returns false2974 when archive path is not a string2975 returns false2976 which archive path is a symlink2977 returns false2978 when archive path shares multiple hard links2979 returns false2980 when archive path is not a file2981 returns false2982AwardEmojis::ToggleService2983 #execute2984 when user has awarded an emoji2985 calls AwardEmojis::DestroyService2986 destroys an AwardEmoji2987 returns the result of DestroyService#execute2988 when user has not awarded an emoji2989 calls AwardEmojis::AddService2990 creates an AwardEmoji2991 returns the result of AddService#execute2992AlertManagement::AlertPolicy2993 rules2994 is expected to be disallowed :read_alert_management_alert2995 is expected to be disallowed :update_alert_management_alert2996 when developer2997 is expected to be allowed :read_alert_management_alert2998 is expected to be allowed :update_alert_management_alert2999 when user is not a member3000 is expected to be disallowed :read_alert_management_metric_image3001 is expected to be disallowed :destroy_alert_management_metric_image3002 when user is a guest3003 is expected to be disallowed :read_alert_management_metric_image3004 is expected to be disallowed :destroy_alert_management_metric_image3005 when user is a developer3006 is expected to be allowed :read_alert_management_metric_image3007 is expected to be allowed :destroy_alert_management_metric_image3008IncidentManagement::TimelineEventPolicy3009 # order random3010 #rules3011 when a user is not able to manage timeline events3012 when timeline event is editable3013 does not allow to edit the timeline event3014 when a user is able to manage timeline events3015 when timeline event is editable3016 allows to edit the timeline event3017 when timeline event is not editable3018 does not allow to edit the timeline event3019Gitlab::Database::Partitioning::CiSlidingListStrategy3020 # order random3021 #validate_and_fix3022 does not call change_column_default3023 #extra_partitions3024 when all partitions are true for detach_partition_if3025 is expected to be empty3026 when all partitions are false for detach_partition_if3027 is expected to be empty3028 #next_partition3029 is one after the active partition3030 with routing tables3031 removes the prefix3032 #active_partition3033 is the partition with the largest value3034 #current_partitions3035 detects both partitions3036 #ensure_partitioning_column_ignored_or_readonly!3037 does not raise when the column is not ignored3038 #missing_partitions3039 when next_partition_if returns true3040 is a partition definition for the next partition in the series3041 when next_partition_if returns false3042 is empty3043 when there are no partitions for the table3044 returns a partition for value 13045 #initial_partition3046 starts with the value 1003047 with routing tables3048 removes the prefix3049Gitlab::MultiDestinationLogger3050 with no primary logger set3051 primary_logger raises an error3052 with 2 loggers set3053 logs info to 2 loggers3054Gitlab::Auth::Crowd::Authentication3055 login3056 finds the user if authentication is successful3057 is false if the user does not exist3058 is false if the authentication fails3059 fails when crowd is disabled3060 fails if no login is supplied3061 fails if no password is supplied3062Ci::CompareAccessibilityReportsService3063 #execute3064 when head pipeline has accessibility reports3065 returns status and data3066 when base and head pipelines have accessibility reports3067 returns status and data3068IssueDueSchedulerWorker3069 #perform3070 schedules one MailScheduler::IssueDueWorker per project with open issues due tomorrow3071Atlassian::JiraIssueKeyExtractor3072 .has_keys?3073 when string contains Jira issue keys3074 is expected to eq true3075 when string does not contain Jira issue keys3076 is expected to eq false3077 #issue_keys3078 returns all valid Jira issue keys3079 when multiple strings are passed in3080 returns all valid Jira issue keys in any of those string3081 with custom_regex3082 returns all valid Jira issue keys3083 with untrusted regex3084 returns all valid Jira issue keys3085Gitlab::View::Presenter::Simple3086 includes Gitlab::View::Presenter::Base3087 #initialize3088 takes arbitrary key/values and exposes them3089 override the presentee attributes3090 delegation3091 does not forward missing methods to subject3092Gitlab::Email::Message::InProductMarketing::Verify3093 public methods3094 with series 03095 returns value for series3096 with series 13097 returns value for series3098 with series 23099 returns value for series3100Auth::DependencyProxyAuthenticationService3101 #execute3102 dependency proxy is not enabled3103 behaves like returning3104 returns dependency proxy not enabled3105 without a user3106 behaves like returning3107 returns access forbidden3108 with a deploy token as user3109 behaves like returning a token3110 returns a token3111 with a user3112 behaves like returning a token3113 returns a token3114API::Helpers::InternalHelpers3115 # order random3116 log user git operation activity3117 when git pull/fetch/clone action3118 with log the user activity3119 behaves like handles log git operation activity3120 log the user activity3121 when git push action3122 does not log the user activity when log_user_git_push_activity is disabled3123 with log the user activity when log_user_git_push_activity is enabled3124 behaves like handles log git operation activity3125 log the user activity3126layouts/_flash3127 default3128 does not render flash container no margin class3129 closable flash messages3130 flash_type: "alert"3131 shows a close button3132 flash_type: "notice"3133 shows a close button3134 flash_type: "success"3135 shows a close button3136 non closable flash messages3137 flash_type: "error"3138 does not show a close button3139 flash_type: "message"3140 does not show a close button3141 flash_type: "toast"3142 does not show a close button3143 flash_type: "warning"3144 does not show a close button3145 with flash_class in locals3146 adds class to flash-container3147Gitlab::Usage::Metrics::Instrumentations::CountProjectsWithJiraDvcsIntegrationMetric3148 # order random3149 raises an exception if option is not present3150 raises an exception if option has invalid value3151 metric value and query3152 when counting cloud integrations3153 behaves like a correct instrumented metric value and query3154 behaves like a correct instrumented metric value3155 has correct value3156 behaves like a correct instrumented metric query3157 has correct generate query3158 when counting non-cloud integrations3159 behaves like a correct instrumented metric value and query3160 behaves like a correct instrumented metric value3161 has correct value3162 behaves like a correct instrumented metric query3163 has correct generate query3164Gitlab::Ci::Pipeline::Chain::Skip3165 when pipeline has been skipped by a user3166 breaks the chain3167 skips the pipeline3168 calls ensure_project_iid explicitly3169 when pipeline has not been skipped3170 does not break the chain3171 does not skip a pipeline chain3172 when [ci skip] should be ignored3173 does not break the chain3174 when pipeline should be skipped but not persisted3175 breaks the chain3176 does not skip pipeline3177Banzai::Pipeline::EmailPipeline3178 .filters3179 returns the expected type3180 excludes ImageLazyLoadFilter3181 shows punycode for autolinks3182Projects::TriggeredHooks3183 executes hooks by scope3184 applies branch filters, when they match3185 applies branch filters, when they do not match3186 with emoji hooks3187 executes hook3188 when emoji_webhooks feature flag is disabled3189 does not execute the hook3190 when emoji_webhooks feature flag is enabled for the project3191 executes the hook3192Atlassian::JiraConnect::Jwt::Symmetric3193 #iss_claim3194 is expected to eq "123"3195 invalid JWT3196 is expected to eq nil3197 #sub_claim3198 is expected to eq "123"3199 invalid JWT3200 is expected to eq nil3201 #valid?3202 invalid JWT3203 is expected to eq false3204 valid JWT3205 is expected to eq true3206 #verify_qsh_claim3207 is expected to eq true3208 qsh does not match3209 is expected to eq false3210 creating query string hash raises an error3211 is expected to eq false3212 #verify_context_qsh_claim3213 is expected to eq true3214 jwt does not contain a context qsh3215 is expected to eq false3216Gitlab::QuickActions::SubstitutionDefinition3217 #perform_substitution!3218 returns nil if content is nil3219 when content contains command name3220 performs the substitution by default3221 when content contains command name in word3222 does not perform the substitution3223Graphql::Arguments3224 returns a blank string if the arguments are blank3225 returns a serialized arguments if the arguments are not blank3226 supports merge with +3227 supports merge with + and a string3228 supports merge with + and a string when empty3229 supports merge with + and an empty string3230 serializes all values correctly3231Ci::CreatePipelineService3232 artifacts:3233 reports:3234 with valid config3235 creates pipeline with builds3236 with invalid config3237 creates pipeline with yaml errors3238Gitlab::GithubImport::Importer::Attachments::IssuesImporter3239 # order random3240 #id_for_already_imported_cache3241 is expected to eq 11113242 #collection_method3243 is expected to eq :issue_attachments3244 #sequential_import3245 imports each project issue attachments3246 when issue is already processed3247 doesn't import this issue attachments3248 #object_type3249 is expected to eq :issue_attachment3250 #sidekiq_worker_class3251 is expected to eq Gitlab::GithubImport::Attachments::ImportIssueWorker3252Ci::GroupVariablesFinder3253 # order random3254 when project belongs to a group3255 returns variable from parent group and ancestors3256 sorting behaviour3257 with sort by created_at descending3258 returns variables ordered by created_at in descending order3259 with sort by created_at ascending3260 returns variables ordered by created_at in ascending order3261 with sort by key descending3262 returns variables ordered by key in descending order3263 with sort by key ascending3264 returns variables ordered by key in ascending order3265 when project does not have a group3266 returns an empty array3267Gitlab::Database::Migrations::RedisHelpers3268 # order random3269 #queue_redis_migration_job3270 when migrator does not exist3271 raises error and fails the migration3272 when migrator exists3273 checks migrator and enqueues job3274Projects::PipelineHelper3275 #js_pipeline_tabs_data3276 returns pipeline tabs data3277 #js_pipeline_details_header_data3278 returns pipeline details header data3279Gitlab::JiraImport::HandleLabelsService3280 #execute3281 when some provided jira labels are missing3282 creates the missing labels on the project level3283 returns the id of all labels matching the title3284 when no provided jira labels are missing3285 does not create any new labels3286 returns the id of all labels matching the title3287 when no labels are provided3288 does not create any new labels3289Sidebars::Admin::Menus::AdminSettingsMenu3290 # order random3291 behaves like Admin menu3292 renders the correct link3293 renders the correct title3294 renders the correct icon3295 renders the separator if needed3296 #render?3297 when user is admin3298 renders3299 when user is not admin3300 does not render3301 when user is not logged in3302 does not render3303 behaves like Admin menu with sub menus3304 contains submemus3305CustomerRelations::ContactStateCounts3306 .declarative_policy_class3307 is expected to eq "CustomerRelations::ContactPolicy"3308 #all3309 returns the total number of contacts3310 #active3311 returns the number of active contacts3312 #inactive3313 returns the number of inactive contacts3314 when filtered3315 #all returns the number of contacts with a filter3316 #active returns the number of active contacts with a filter3317 #inactive returns the number of inactive contacts with a filter3318Gitlab::Import::ImportFailureService3319 .track3320 with all arguments provided3321 invokes a new instance and executes3322 with only necessary arguments utilizing defaults3323 invokes a new instance and executes3324 #execute3325 when tracking metrics3326 tracks the failed import3327 when using the project as reference3328 when it fails the import3329 behaves like logs the exception and fails the import3330 when the failure does not abort the import3331 when it does not fail the import3332 behaves like logs the exception and does not fail the import3333 when the failure does not abort the import3334 when using the import_state as reference3335 when it fails the import3336 behaves like logs the exception and fails the import3337 when the failure does not abort the import3338 when it does not fail the import3339 behaves like logs the exception and does not fail the import3340 when the failure does not abort the import3341Gitlab::HookData::GroupBuilder3342 #build3343 data3344 on create3345 is expected to eq "group_create"3346 behaves like includes the required attributes3347 includes the required attributes3348 behaves like does not include old path attributes3349 does not include old path attributes3350 on destroy3351 is expected to eq "group_destroy"3352 behaves like includes the required attributes3353 includes the required attributes3354 behaves like does not include old path attributes3355 does not include old path attributes3356 on rename3357 is expected to eq "group_rename"3358 includes old path details3359 behaves like includes the required attributes3360 includes the required attributes3361layouts/group3362 # order random3363 with ability to invite members3364 is expected to have visible css ".js-invite-members-modal"3365 without ability to invite members3366 is expected not to have visible css ".js-invite-members-modal"3367RuboCop::Cop::Gettext::StaticIdentifier3368 # order random3369 #s_()3370 does not flag correct use3371 flags incorrect use3372 #N_()3373 does not flag correct use3374 flags incorrect use3375 #_()3376 does not flag correct use3377 flags incorrect use3378 edge cases3379 does not flag3380 #n_()3381 does not flag correct use3382 flags incorrect use3383Projects::Settings::BranchRulesHelper3384 # order random3385 #branch_rules_data3386 returns branch rules data3387Packages::Composer::CacheUpdateWorker3388 #perform3389 is labeled as idempotent3390 performs multiple times sequentially without raising an exception3391 creating a package3392 does nothing3393 deleting a package3394 does nothing3395Banzai::Filter::CodeLanguageFilter3396 # order random3397 when no language is specified3398 does nothing3399 when lang is specified3400 adds data-canonical-lang and removes lang attribute3401 when lang has extra params3402 includes data-lang-params tag with extra information and removes data-meta3403 escapes HTML tags3404 escapes HTML tags3405 escapes HTML tags3406 when multiple param delimiters are used3407 when delimiter is colon3408 delimits on the first appearance3409Gitlab::GithubGistsImport::Representation::Gist3410 # order random3411 #visibility_level3412 returns 20 when public3413 returns 0 when private3414 .from_json_hash3415 behaves like a Gist3416 returns an instance of Gist3417 with Gist3418 includes gist attributes3419 .from_api_response3420 behaves like a Gist3421 returns an instance of Gist3422 with Gist3423 includes gist attributes3424 #github_identifiers3425 returns a hash with needed identifiers3426 #first_file3427 returns a hash with needed identifiers3428 #truncated_title3429 truncates the title to 255 characters3430 does not truncate the title if it is shorter than 255 characters3431Types::Admin::Analytics::UsageTrends::MeasurementType3432 is expected to have graphql field :recorded_at3433 is expected to have graphql field :identifier3434 is expected to have graphql field :count3435 authorization3436 when the user is not admin3437 returns an error3438 does not return usageTrendsMeasurements data3439 when user is an admin3440 returns usageTrendsMeasurements data3441Import/Export attribute configuration3442 has no new columns3443Integrations::EnableSslVerification3444 accessors3445 is expected to respond to #enable_ssl_verification3446 is expected to respond to #enable_ssl_verification?3447 #initialize_properties3448 enables the setting by default3449 does not enable the setting if the record is already persisted3450 does not enable the setting if a custom value was set3451 #fields3452 inserts the checkbox field after the first URL field, or at the end3453 does not insert the field repeatedly3454SystemNoteMetadata3455 associations3456 is expected to belong to note required: false3457 is expected to belong to description_version required: false3458 validation3459 is expected to validate that :note cannot be empty/falsy3460 when action type is invalid3461 is expected to be invalid3462 when action type is valid3463 is expected to be valid3464 when action type is valid3465 is expected to be valid3466 when importing3467 is expected to be valid3468Onboarding::Completion3469 # order random3470 #percentage3471 when no onboarding_progress exists3472 is expected to eq 03473 when no action has been completed3474 is expected to eq 03475 when all tracked actions have been completed3476 is expected to eq 1003477 #completed?3478 when code_added3479 when commit_count > 13480 is expected to eq true3481 when branch_count > 13482 is expected to eq true3483 when empty repository3484 is expected to eq false3485 when secure_dast_run3486 when is completed3487 is expected to eq true3488 when is not completed3489 is expected to eq false3490Gitlab::GithubImport::Representation::PullRequests::ReviewRequests3491 # order random3492 .from_json_hash3493 behaves like Review requests3494 returns an instance of Review Request3495 for returned Review Requests3496 includes merge request id3497 includes reviewers3498 #github_identifiers3499 returns a hash with needed identifiers3500 .from_api_response3501 behaves like Review requests3502 returns an instance of Review Request3503 for returned Review Requests3504 includes merge request id3505 includes reviewers3506Gitlab::Graphql::Present::FieldExtension3507 when the object does not declare a presenter3508 does not affect normal resolution3509 when the field is declared on an interface, and implemented by a presenter3510 resolves the interface field using the implementation from the presenter3511 when the implementation is inherited3512 resolves the interface field using the implementation from the presenter3513 interactions with inheritance3514 can resolve value, foo and bar3515 when the object declares a presenter3516 when the presenter overrides the original method3517 behaves like calling the presenter method3518 calls the presenter method3519 when the presenter provides a new method3520 when we select the original field3521 is unaffected3522 when we select the new field3523 behaves like calling the presenter method3524 calls the presenter method3525API::Helpers::MergeRequestsHelpers3526 #handle_merge_request_errors!3527 when merge request is valid3528 returns nil3529 when merge request is invalid3530 responds to a project_access error with unprocessable_entity3531 responds to a branch_conflict error with unprocessable_entity3532 responds to a validate_fork error with unprocessable_entity3533 responds to a base error with unprocessable_entity3534 responds to a validate_branches error with conflict3535 responds with bad request3536DescriptionVersion3537 associations3538 is expected to belong to issue required: false3539 is expected to belong to merge_request required: false3540 validations3541 exactly_one_issuable3542 issue_id: nil, merge_request_id: 1, valid?: true3543 is expected to eq true3544 issue_id: 1, merge_request_id: nil, valid?: true3545 is expected to eq true3546 issue_id: nil, merge_request_id: nil, valid?: false3547 is expected to eq false3548 issue_id: 1, merge_request_id: 1, valid?: false3549 is expected to eq false3550Issuables::CrmContactFilter3551 when a contact has issues3552 returns all contact1 issues3553 returns all contact2 issues3554 when a contact has no issues3555 returns no issues3556Banzai::Pipeline3557 .[]3558 for nil3559 is expected to eq Banzai::Pipeline::FullPipeline3560 for symbols3561 when known3562 is expected to eq Banzai::Pipeline::FullPipeline3563 when unknown3564 behaves like error3565 is expected to raise NameError with "uninitialized constant Banzai::Pipeline::UnknownPipeline"3566 for classes3567 subclassing Banzai::Pipeline::BasePipeline3568 is expected to eq #<Class:0x00007d855f23fb10>3569 subclassing other types3570 behaves like error3571 is expected to raise ArgumentError with "unsupported pipeline name Foo (Class)"3572 for other types3573 behaves like error3574 is expected to raise ArgumentError with "unsupported pipeline name \"label\" (String)"3575global_id3576 prepends `Gitlab::Patch::GlobalId`3577 patches GlobalID to find aliased models when a deprecation exists3578 works as normal when no deprecation exists3579Resolvers::SavedReplyResolver3580 # order random3581 feature flag disabled3582 does not return saved reply3583 feature flag enabled3584 returns users saved reply3585 returns nil when saved reply is not found3586 returns nil when saved reply is another users3587Gitlab::Memory::ReportsDaemon3588 #run_thread3589 with default reports3590 runs them using the given reporter3591 with inactive reports3592 runs only active reports3593 sleep timers logic3594 wakes up every (fixed interval + defined delta), sleeps between reports each cycle3595 #stop_working3596 changes :alive to false3597 timer intervals settings3598 when no settings are set in the environment3599 uses defaults3600 when settings are passed through the environment3601 uses provided values3602ExploreHelper3603 #explore_nav_links3604 has all the expected links by default3605 #public_visibility_restricted?3606 delegates to Gitlab::VisibilityLevel3607 #projects_filter_items3608 returns correct dropdown items3609 #projects_filter_selected3610 when visibility_level is present3611 returns corresponding item3612 when visibility_level is empty3613 returns corresponding item3614Gitlab::Ci::Status::Success3615 #text3616 is expected to eq "passed"3617 #label3618 is expected to eq "passed"3619 #icon3620 is expected to eq "status_success"3621 #favicon3622 is expected to eq "favicon_status_success"3623 #group3624 is expected to eq "success"3625 #details_path3626 is expected to be nil3627RepositoryCheck::DispatchWorker3628 does nothing when repository checks are disabled3629 does nothing if the exclusive lease is taken3630 dispatches work to RepositoryCheck::BatchWorker3631 with unhealthy shard3632 only triggers RepositoryCheck::BatchWorker for healthy shards3633 logs unhealthy shards3634PrometheusAlertPresenter3635 #humanized_text3636 is expected to eq "exceeded 1.0m/s"3637 when operator is eq3638 is expected to eq "is equal to 1.0m/s"3639 when operator is lt3640 is expected to eq "is less than 1.0m/s"3641Blobs::NotebookPresenter3642 highlight receives markdown3643Gitlab::Template::GitignoreTemplate3644 .all3645 strips the gitignore suffix3646 combines the globals and rest3647 .find3648 returns nil if the file does not exist3649 returns the Gitignore object of a valid file3650 #content3651 loads the full file3652Integrations::HasWebHook3653 # order random3654 when hook_url and url_variables are not implemented3655 is expected to raise NotImplementedError3656 is expected to raise NotImplementedError3657 when integration does not respond to enable_ssl_verification3658 is expected to eq true3659 when integration responds to enable_ssl_verification3660 is expected to eq true3661GroupAccessTokenSerializer3662 #represent3663 can render a single token3664 can render a collection of tokens3665Gitlab::StringPlaceholderReplacer3666 .render_url3667 returns the nil if the string is blank3668 returns the string if the placeholder regex3669 returns the string if no block given3670 when all params are valid3671 replaces each placeholders with the block result3672 does not replace the placeholder if the block result is nil3673admin/application_settings/_package_registry3674 package file size limits3675 has fields for max package file sizes3676 does not display the plan name when there is only one plan3677 with multiple plans3678 displays the plan name when there is more than one plan3679RuboCop::Cop::API::Base3680 # order random3681 adds an offense when inheriting from ::Grape::API3682 adds an offense when inheriting from Grape::API3683 adds an offense when inheriting from ::Grape::API::Instance3684 does not add an offense when inheriting from BaseAPI3685 adds an offense when inheriting from Grape::API::Instance3686ObjectStorage::DeleteStaleDirectUploadsWorker3687 # order random3688 #perform3689 executes a service3690 behaves like an idempotent worker3691 is labeled as idempotent3692 performs multiple times sequentially without raising an exception3693 only deletes stale entries3694UrlHelper3695 # order random3696 #escaped_url3697 escapes url3698 escapes XSS injection3699 returns nil if url is nil3700 returns nil when url is invalid3701Gitlab::Ci::Parsers::Accessibility::Pa11y3702 #parse!3703 when data is pa11y style JSON3704 when there are no URLs provided3705 returns an accessibility report3706 when there are no errors3707 returns an accessibility report3708 when there are errors3709 returns an accessibility report3710 when data is not a valid JSON string3711 sets error_message3712StripAttribute3713 .strip_attributes!3714 is expected to respond to #strip_attributes!3715 is expected to include :title3716 #strip_attributes!3717 is expected to eq "8.3"3718Gitlab::GithubImport::Stage::ImportPullRequestsReviewsWorker3719 #import3720 imports all the pull request reviews3721Users::Calloutable3722 Associations3723 is expected to belong to user required: false3724 validations3725 is expected to validate that :user cannot be empty/falsy3726 #dismissed_after?3727 returns whether a callout dismissed after specified date3728Projects::ImportExport::RelationExportUpload3729 stores export file3730 associations3731 is expected to belong to relation_export required: false3732Types::CustomerRelations::ContactStateCountsType3733 is expected to eq "ContactStateCounts"3734 is expected to have graphql fields "all", "active", and "inactive"3735 is expected to require graphql authorizations :read_crm_contact3736Types::CommitSignatures::GpgSignatureType3737 # order random3738 is expected to require graphql authorizations :download_code3739 is expected to eq "GpgSignature"3740 contains attributes related to GPG signatures3741 is expected to include Types::CommitSignatureInterface3742WebIdeButtonHelper3743 #show_pipeline_editor_button?3744 when can view pipeline editor3745 when path is ci config path3746 returns true3747 when path is not config path3748 returns false3749 when can not view pipeline editor3750 returns false3751API::API3752 .prefix3753 has a prefix defined3754 .version3755 uses most recent version of the API3756 .versions3757 returns all available versions3758Gitlab::Import::StuckImportJob3759 marks the stuck import project as failed and track the error on import_failures3760Types::Ci::PipelineType3761 is expected to eq "Pipeline"3762 is expected to expose permissions using Types::PermissionTypes::Ci::Pipeline3763 contains attributes related to a pipeline3764Integrations::HarborSerializers::TagEntity3765 returns the Harbor artifact3766API::Validations::Validators::IntegerOrCustomValue3767 valid parameters3768 does not raise a validation error3769 when custom values is empty and value is an integer3770 does not raise a validation error3771 invalid parameters3772 raises a validation error3773 when custom values is empty and value is not an integer3774 raises a validation error3775WebpackHelper3776 #prefetch_link_tag3777DEPRECATION WARNING: The asset "foo.js" is not present in the asset pipeline.3778Falling back to an asset that may be in the public folder.3779This behavior is deprecated and will be removed.3780To bypass the asset pipeline and preserve this behavior,3781use the `skip_pipeline: true` option.3782 (called from prefetch_link_tag at /builds/gitlab-org/gitlab/app/helpers/webpack_helper.rb:5)3783 returns prefetch link tag3784 #webpack_preload_asset_tag3785 preloads the resource by default3786 prefetches the resource if explicitly asked3787Types::Clusters::AgentType3788 is expected to eq "ClusterAgent"3789 is expected to require graphql authorizations :read_cluster_agent3790 is expected to include graphql fields :created_at, :created_by_user, :id, :name, :project, :updated_at, :tokens, :web_path, :connections, and :activity_events3791Gitlab::Ci::Config::Entry::Paths3792 validations3793 when entry config value is valid3794 #value3795 returns key value3796 #valid?3797 is valid3798 when entry value is not valid3799 #errors3800 saves errors3801Packages::Rpm::RepositoryMetadata::BuildRepomdXmlService3802 # order random3803 #execute3804 generate valid xml3805 has all data info3806 when data values has unexpected keys3807 ignores wrong keys3808Gitlab::Middleware::RackMultipartTempfileFactory3809 for a multipart request3810 immediately unlinks the temporary file3811 processes the request as normal3812 for a regular request3813 does nothing3814API::Entities::Nuget::DependencyGroup3815 is expected to eq {:@id=>"http://gitlab.com/Sandbox.App/1.0.0.json#dependencygroup", :@type=>"PackageDependencyGroup", :dependencies=>[{:@id=>"http://gitlab.com/Sandbox.App/1.0.0.json#dependency", :@type=>"PackageDependency", :id=>"Dependency", :range=>"2.0.0"}], :targetFramework=>"fwk test"}3816 dependency group without target framework3817 is expected to eq {:@id=>"http://gitlab.com/Sandbox.App/1.0.0.json#dependencygroup", :@type=>"PackageDependencyGroup", :dependencies=>[{:@id=>"http://gitlab.com/Sandbox.App/1.0.0.json#dependency", :@type=>"PackageDependency", :id=>"Dependency", :range=>"2.0.0"}]}3818Banzai::Filter::OutputSafety3819 when given HTML is safe3820 returns safe HTML3821 when given HTML is not safe3822 returns escaped HTML3823Types::Ci::Config::IncludeType3824 is expected to eq "CiConfigInclude"3825 exposes the expected fields3826Resolvers::AuditEvents::AuditEventDefinitionsResolver3827 # order random3828 #resolve3829 returns an array of audit event definitions3830Gitlab::SidekiqStatus::ClientMiddleware3831 #call3832 when the job has status_expiration set3833 tracks the job in Redis3834 when the job does not have status_expiration set3835 does not track the job in Redis3836Types::Metadata::KasType3837 is expected to eq "Kas"3838 is expected to require graphql authorizations :read_instance_metadata3839EmojiHelper3840 #emoji_icon3841 has no options3842 with aria-hidden option3843 applies aria-hidden3844BlocksUnsafeSerialization3845 behaves like blocks unsafe serialization3846 blocks as_json3847 blocks to_json3848Types::Projects::ForkDetailsType3849 # order random3850 is expected to eq "ForkDetails"3851 has specific fields3852CreateTestFailureIssues3853 # order random3854 CreateTestFailureIssue3855 #upsert3856 when no issues are found3857 calls CreateIssue#execute(payload)3858 when issues are found3859 when issue already has the latest format3860 behaves like existing issue update3861 calls UpdateIssue#execute(payload)3862Banzai::Pipeline::ServiceDeskEmailPipeline3863 # order random3864 .filters3865 returns the expected type3866 excludes ServiceDeskUploadLinkFilter3867Gitlab::Audit::DeployTokenAuthor3868 #initialize3869 sets correct attributes3870 sets default name when it is not provided3871Organizations::OrganizationUser3872 # order random3873 associations3874 is expected to belong to organization inverse_of => organization_users required: true3875 is expected to belong to user inverse_of => organization_users required: true3876ProjectDailyStatistic3877 is expected to belong to project required: false3878Types::Ci::GroupVariableType3879 is expected to contain exactly Types::Ci::VariableInterface3880 is expected to have graphql fields :environment_scope, :masked, :protected, and :description3881Gitlab::Nav::TopNavMenuItem3882 .build3883 builds a hash from the given args3884ActionDispatch::Journey::Router Patch3885 # order random3886 #find_routes3887 when a route has additional constrains3888 does not raise an error3889Gitlab::GithubImport::ImportCollaboratorWorker3890 # order random3891 #import3892 imports a collaborator3893API::Entities::Projects::RepositoryStorageMove3894 #as_json3895 includes basic fields3896Types::PermissionTypes::User3897 returns user permissions3898Types::WorkItems::Widgets::NotesType3899 # order random3900 exposes the expected fields3901Types::PermissionTypes::Issue3902 is expected to have graphql field :update_design3903Tooling::Danger::Specs::MatchWithArraySuggestion3904 # order random3905 adds suggestions at the correct lines3906Types::WorkItems::Widgets::LabelsType3907 exposes the expected fields3908Gitlab::InsecureKeyFingerprint3909 #fingerprint_sha2563910 generates the key's fingerprint3911Gitlab::Serializer::Ci::Variables3912 converts keys into strings and symbolizes hash3913Gitlab::Database::PgDepend3914 # order random3915 .from_pg_extension3916 when having views as dependency3917 returns pg_stat_statements (PENDING: Skipping ./spec/lib/gitlab/database/pg_depend_spec.rb[1:1:1:1] because it's been fast-quarantined.)3918rspec/skipped_tests-4841631176.txt doesn't exist!3919Knapsack report was generated. Preview:3920{3921 "spec/db/schema_spec.rb": 100.84881795000001,3922 "spec/services/projects/transfer_service_spec.rb": 91.44235000100002,3923 "spec/services/projects/fork_service_spec.rb": 84.1299137960001,3924 "spec/lib/banzai/filter/references/label_reference_filter_spec.rb": 48.238818518000016,3925 "spec/models/operations/feature_flags/strategy_spec.rb": 9.270460367000055,3926 "spec/policies/project_statistics_policy_spec.rb": 48.58776773699992,3927 "spec/lib/gitlab/health_checks/redis_spec.rb": 6.4815442279999615,3928 "spec/lib/backup/database_spec.rb": 36.90710306300002,3929 "spec/services/merge_requests/reopen_service_spec.rb": 34.71147031600003,3930 "spec/lib/gitlab/checks/branch_check_spec.rb": 27.424189126999977,3931 "spec/rubocop/cop/migration/create_table_with_foreign_keys_spec.rb": 5.96506204800005,3932 "spec/services/packages/maven/find_or_create_package_service_spec.rb": 17.909781042000077,3933 "spec/lib/gitlab/tree_summary_spec.rb": 19.493119006999905,3934 "spec/models/concerns/token_authenticatable_spec.rb": 11.31965915600017,3935 "spec/models/hooks/system_hook_spec.rb": 14.35587663800004,3936 "spec/lib/banzai/reference_parser/base_parser_spec.rb": 14.607747245000041,3937 "spec/models/label_spec.rb": 15.104184805000045,3938 "spec/helpers/labels_helper_spec.rb": 9.713999424999997,3939 "spec/lib/gitlab/fake_application_settings_spec.rb": 2.7317073529999334,3940 "spec/models/concerns/resolvable_discussion_spec.rb": 7.957907858999988,3941 "spec/lib/gitlab/metrics/requests_rack_middleware_spec.rb": 8.017420435999952,3942 "spec/services/projects/update_repository_storage_service_spec.rb": 17.512862523999956,3943 "spec/lib/gitlab/usage_data_counters/merge_request_activity_unique_counter_spec.rb": 8.804128687999992,3944 "spec/lib/gitlab/cycle_analytics/permissions_spec.rb": 12.630215366000016,3945 "spec/services/namespaces/in_product_marketing_emails_service_spec.rb": 9.991483056999982,3946 "spec/workers/projects/import_export/create_relation_exports_worker_spec.rb": 15.33146226000008,3947 "spec/lib/gitlab/redis/etag_cache_spec.rb": 1.9773465890000352,3948 "spec/lib/gitlab/ci/trace/chunked_io_spec.rb": 5.422947633000149,3949 "spec/finders/users_finder_spec.rb": 3.309269573999927,3950 "spec/models/diff_viewer/base_spec.rb": 11.765141058999916,3951 "spec/lib/gitlab/prometheus/queries/additional_metrics_deployment_query_spec.rb": 11.020477805999917,3952 "spec/services/ci/update_build_state_service_spec.rb": 4.443126777000089,3953 "spec/lib/gitlab/database/migration_helpers/v2_spec.rb": 3.5528492519999872,3954 "spec/lib/gitlab/git/tag_spec.rb": 5.893114934000096,3955 "spec/views/projects/commit/branches.html.haml_spec.rb": 10.80287480700008,3956 "spec/graphql/mutations/design_management/upload_spec.rb": 11.63237117499989,3957 "spec/lib/gitlab/redis/rate_limiting_spec.rb": 3.246582427000021,3958 "spec/lib/gitlab/usage/metrics/instrumentations/jira_active_integrations_metric_spec.rb": 8.141395201000023,3959 "spec/models/clusters/agent_token_spec.rb": 5.318327943000213,3960 "spec/lib/gitlab/discussions_diff/file_collection_spec.rb": 8.312462281999842,3961 "spec/bin/audit_event_type_spec.rb": 1.6180905990001975,3962 "spec/models/project_label_spec.rb": 5.454094203000068,3963 "spec/lib/gitlab/kubernetes/default_namespace_spec.rb": 5.867484031999993,3964 "spec/lib/gitlab/email/reply_parser_spec.rb": 1.3355596629999127,3965 "spec/services/projects/lfs_pointers/lfs_download_link_list_service_spec.rb": 6.8530065459999605,3966 "spec/models/grafana_integration_spec.rb": 4.576991970000108,3967 "spec/lib/gitlab/redis/shared_state_spec.rb": 1.64922476799984,3968 "spec/models/analytics/cycle_analytics/issue_stage_event_spec.rb": 1.862195597000209,3969 "spec/models/project_authorizations/changes_spec.rb": 4.129675483000028,3970 "spec/lib/gitlab/ci/config/entry/needs_spec.rb": 1.1245528829999785,3971 "spec/lib/gitlab/database/query_analyzers/restrict_allowed_schemas_spec.rb": 1.391745050000054,3972 "spec/lib/sidebars/menu_spec.rb": 1.1603110119999656,3973 "spec/services/metrics/dashboard/system_dashboard_service_spec.rb": 2.9807709210001576,3974 "spec/serializers/merge_request_diff_entity_spec.rb": 6.784052720000091,3975 "spec/services/labels/transfer_service_spec.rb": 9.298990498999956,3976 "spec/lib/event_filter_spec.rb": 3.714113546000135,3977 "spec/tasks/gitlab/db/truncate_legacy_tables_rake_spec.rb": 3.035197511999968,3978 "spec/models/pages_domain_acme_order_spec.rb": 6.698952712000164,3979 "spec/helpers/preferences_helper_spec.rb": 1.3762939840000854,3980 "spec/views/layouts/devise.html.haml_spec.rb": 2.9003410600000734,3981 "spec/lib/banzai/filter/references/reference_cache_spec.rb": 1.5356710649998604,3982 "spec/views/layouts/devise_empty.html.haml_spec.rb": 1.8934338659998957,3983 "spec/lib/gitlab/database/background_migration/prometheus_metrics_spec.rb": 3.3974202029999105,3984 "spec/lib/gitlab/consul/internal_spec.rb": 1.6621966790000897,3985 "spec/lib/gitlab/github_import/parallel_scheduling_spec.rb": 1.1636916259999452,3986 "spec/lib/gitlab/diff/highlight_spec.rb": 1.6516090600000553,3987 "spec/services/ci/pipeline_schedules/update_service_spec.rb": 3.0472425619998376,3988 "spec/models/product_analytics_event_spec.rb": 3.66744444699998,3989 "spec/finders/milestones_finder_spec.rb": 2.906436890999885,3990 "spec/lib/gitlab/database/database_connection_info_spec.rb": 0.6375788049999755,3991 "spec/models/incident_management/project_incident_management_setting_spec.rb": 1.4947302580001178,3992 "spec/services/projects/update_statistics_service_spec.rb": 1.7498552040001414,3993 "spec/finders/projects/topics_finder_spec.rb": 1.1125137779999932,3994 "spec/lib/gitlab/fogbugz_import/importer_spec.rb": 3.814792010000019,3995 "spec/services/personal_access_tokens/create_service_spec.rb": 2.9982172029999674,3996 "spec/views/layouts/_header_search.html.haml_spec.rb": 1.6596771219999482,3997 "spec/models/milestone_release_spec.rb": 3.2774282820000735,3998 "spec/services/work_items/export_csv_service_spec.rb": 3.1517290819999744,3999 "spec/lib/gitlab/ci/pipeline/expression/lexer_spec.rb": 0.8107072160000826,4000 "spec/services/users/update_canonical_email_service_spec.rb": 0.6972948559998713,4001 "spec/tooling/danger/feature_flag_spec.rb": 0.8599922959999731,4002 "spec/lib/gitlab/import/merge_request_helpers_spec.rb": 3.8281216870000208,4003 "spec/models/integrations/slack_slash_commands_spec.rb": 2.433253666999917,4004 "spec/graphql/resolvers/project_packages_resolver_spec.rb": 2.352564055999892,4005 "spec/lib/gitlab/database/load_balancing/host_list_spec.rb": 0.5537438639998982,4006 "spec/models/concerns/batch_destroy_dependent_associations_spec.rb": 2.041628773999946,4007 "spec/serializers/job_artifact_report_entity_spec.rb": 2.1702717050000047,4008 "spec/lib/gitlab/database/migration_spec.rb": 0.3639853930001209,4009 "spec/views/projects/issues/service_desk/_issue.html.haml_spec.rb": 2.8590829089998806,4010 "spec/workers/concerns/project_import_options_spec.rb": 2.5863511679999647,4011 "spec/models/ci/running_build_spec.rb": 3.361561183000049,4012 "spec/lib/gitlab/database/background_migration_job_spec.rb": 0.7176327160000255,4013 "spec/presenters/label_presenter_spec.rb": 1.284638718999986,4014 "spec/services/packages/nuget/extract_metadata_file_service_spec.rb": 0.6944621650000045,4015 "spec/lib/gitlab/metrics/subscribers/rack_attack_spec.rb": 1.0313343370000894,4016 "spec/tooling/danger/bulk_database_actions_spec.rb": 0.6799982349998572,4017 "spec/lib/extracts_ref/requested_ref_spec.rb": 2.0243254740000793,4018 "spec/lib/security/ci_configuration/sast_build_action_spec.rb": 0.719091355000046,4019 "spec/policies/custom_emoji_policy_spec.rb": 2.552659378000044,4020 "spec/lib/gitlab/file_finder_spec.rb": 1.2845194189999347,4021 "spec/services/bulk_imports/repository_bundle_export_service_spec.rb": 2.397470515999885,4022 "spec/services/ci/create_pipeline_service/parallel_spec.rb": 3.0684512620000532,4023 "spec/views/notify/user_deactivated_email.html.haml_spec.rb": 0.5718112439999459,4024 "spec/services/git/wiki_push_service/change_spec.rb": 0.8102542159999757,4025 "spec/lib/gitlab/github_import/label_finder_spec.rb": 0.6546648250000544,4026 "spec/lib/gitlab/diff/line_mapper_spec.rb": 1.8077487319999364,4027 "spec/models/concerns/subquery_spec.rb": 1.190964238000106,4028 "spec/models/loose_foreign_keys/deleted_record_spec.rb": 0.7643611559999499,4029 "spec/lib/gitlab/ci/build/policy/refs_spec.rb": 1.139857708000136,4030 "spec/lib/generators/gitlab/analytics/internal_events_generator_spec.rb": 0.7170961059998717,4031 "spec/tooling/lib/tooling/mappings/graphql_base_type_mappings_spec.rb": 0.5447467229998892,4032 "spec/workers/container_expiration_policy_worker_spec.rb": 2.7554645000000164,4033 "spec/finders/autocomplete/project_finder_spec.rb": 1.8420405619999656,4034 "spec/lib/gitlab/ssh/commit_spec.rb": 1.0514744780000456,4035 "spec/services/milestones/create_service_spec.rb": 1.2451081889998932,4036 "spec/services/ci/create_pipeline_service/parameter_content_spec.rb": 2.29422473600016,4037 "spec/lib/gitlab/time_tracking_formatter_spec.rb": 0.4240326629999345,4038 "spec/services/bulk_imports/tree_export_service_spec.rb": 0.6463798439999664,4039 "spec/services/loose_foreign_keys/batch_cleaner_service_spec.rb": 1.3170424799998273,4040 "spec/lib/gitlab/usage/service_ping/instrumented_payload_spec.rb": 0.3908775229999719,4041 "spec/services/work_items/callbacks/award_emoji_spec.rb": 1.1370872679999593,4042 "spec/helpers/stat_anchors_helper_spec.rb": 0.3710222529998646,4043 "spec/services/users/update_highest_member_role_service_spec.rb": 1.3075029690000974,4044 "spec/lib/bulk_imports/groups/pipelines/project_entities_pipeline_spec.rb": 0.703043844999911,4045 "spec/models/analytics/usage_trends/measurement_spec.rb": 0.7319561849999445,4046 "spec/lib/gitlab/chat/responder_spec.rb": 0.9802973070000007,4047 "spec/workers/project_destroy_worker_spec.rb": 2.011521822999839,4048 "spec/services/users/dismiss_callout_service_spec.rb": 0.5163160739998602,4049 "spec/lib/gitlab/ci/variables/builder/project_spec.rb": 1.2417125490001126,4050 "spec/lib/gitlab/import_export/decompressed_archive_size_validator_spec.rb": 0.8746919249999792,4051 "spec/services/award_emojis/toggle_service_spec.rb": 1.8503230329999951,4052 "spec/policies/alert_management/alert_policy_spec.rb": 2.946305339999981,4053 "spec/policies/incident_management/timeline_event_policy_spec.rb": 2.0528201539998463,4054 "spec/lib/gitlab/database/partitioning/ci_sliding_list_strategy_spec.rb": 0.664743764999912,4055 "spec/lib/gitlab/multi_destination_logger_spec.rb": 0.1777379310001379,4056 "spec/lib/gitlab/auth/crowd/authentication_spec.rb": 0.4335284229998706,4057 "spec/services/ci/compare_accessibility_reports_service_spec.rb": 1.8752056230000562,4058 "spec/workers/issue_due_scheduler_worker_spec.rb": 1.8819990130000406,4059 "spec/lib/atlassian/jira_issue_key_extractor_spec.rb": 0.3626156220000212,4060 "spec/lib/gitlab/view/presenter/simple_spec.rb": 0.3514157019999402,4061 "spec/lib/gitlab/email/message/in_product_marketing/verify_spec.rb": 0.2926076619999094,4062 "spec/services/auth/dependency_proxy_authentication_service_spec.rb": 0.3468518919999042,4063 "spec/lib/api/helpers/internal_helpers_spec.rb": 0.4509704640001928,4064 "spec/views/layouts/_flash.html.haml_spec.rb": 1.0019390659999772,4065 "spec/lib/gitlab/usage/metrics/instrumentations/count_projects_with_jira_dvcs_integration_metric_spec.rb": 1.2883060789999945,4066 "spec/lib/gitlab/ci/pipeline/chain/skip_spec.rb": 1.4322806939999282,4067 "spec/lib/banzai/pipeline/email_pipeline_spec.rb": 0.2268168450000303,4068 "spec/models/projects/triggered_hooks_spec.rb": 0.9572862170000462,4069 "spec/lib/atlassian/jira_connect/jwt/symmetric_spec.rb": 0.49069875799978036,4070 "spec/lib/gitlab/quick_actions/substitution_definition_spec.rb": 0.21244396599990978,4071 "spec/support_specs/graphql/arguments_spec.rb": 0.3534573070000988,4072 "spec/services/ci/create_pipeline_service/artifacts_spec.rb": 1.4223660469999686,4073 "spec/lib/gitlab/github_import/importer/attachments/issues_importer_spec.rb": 0.7135501830000521,4074 "spec/finders/ci/group_variables_finder_spec.rb": 1.2253284089999852,4075 "spec/lib/gitlab/database/migrations/redis_helpers_spec.rb": 0.17594261900012498,4076 "spec/helpers/projects/pipeline_helper_spec.rb": 1.2589534579999508,4077 "spec/lib/gitlab/jira_import/handle_labels_service_spec.rb": 0.988562464999859,4078 "spec/lib/sidebars/admin/menus/admin_settings_menu_spec.rb": 0.45560475000002043,4079 "spec/models/customer_relations/contact_state_counts_spec.rb": 0.6754426259999491,4080 "spec/lib/gitlab/import/import_failure_service_spec.rb": 0.7720930490002047,4081 "spec/lib/gitlab/hook_data/group_builder_spec.rb": 0.46203491999995094,4082 "spec/views/layouts/group.html.haml_spec.rb": 1.4187225470000158,4083 "spec/rubocop/cop/gettext/static_identifier_spec.rb": 0.4665844890000699,4084 "spec/helpers/projects/settings/branch_rules_helper_spec.rb": 0.18927711799983626,4085 "spec/workers/packages/composer/cache_update_worker_spec.rb": 0.9531681070000104,4086 "spec/lib/banzai/filter/code_language_filter_spec.rb": 0.3256034890000592,4087 "spec/lib/gitlab/github_gists_import/representation/gist_spec.rb": 0.42108338200000617,4088 "spec/graphql/types/admin/analytics/usage_trends/measurement_type_spec.rb": 0.6103724099998544,4089 "spec/lib/gitlab/import_export/attribute_configuration_spec.rb": 1.3562848009999016,4090 "spec/models/concerns/integrations/enable_ssl_verification_spec.rb": 0.4160288729999593,4091 "spec/models/system_note_metadata_spec.rb": 0.38131817499993303,4092 "spec/models/onboarding/completion_spec.rb": 0.5853164610000476,4093 "spec/lib/gitlab/github_import/representation/pull_requests/review_requests_spec.rb": 0.3131308900001386,4094 "spec/lib/gitlab/graphql/present/field_extension_spec.rb": 0.3793903850000788,4095 "spec/lib/api/helpers/merge_requests_helpers_spec.rb": 0.32674764800003686,4096 "spec/models/description_version_spec.rb": 0.3269931390000238,4097 "spec/finders/issuables/crm_contact_filter_spec.rb": 0.7724684790000538,4098 "spec/lib/banzai/pipeline_spec.rb": 0.31047283999987485,4099 "spec/initializers/global_id_spec.rb": 0.9666272259999005,4100 "spec/graphql/resolvers/saved_reply_resolver_spec.rb": 0.4344550220000656,4101 "spec/lib/gitlab/memory/reports_daemon_spec.rb": 0.2991948709998269,4102 "spec/helpers/explore_helper_spec.rb": 0.31683427899997696,4103 "spec/lib/gitlab/ci/status/success_spec.rb": 0.2853234619999512,4104 "spec/workers/repository_check/dispatch_worker_spec.rb": 0.27855286199996954,4105 "spec/presenters/prometheus_alert_presenter_spec.rb": 0.5621110930001123,4106 "spec/presenters/blobs/notebook_presenter_spec.rb": 0.7841894690000117,4107 "spec/lib/gitlab/template/gitignore_template_spec.rb": 0.26820441199993184,4108 "spec/models/concerns/integrations/has_web_hook_spec.rb": 0.28200637200006895,4109 "spec/serializers/group_access_token_serializer_spec.rb": 0.6577694860000065,4110 "spec/lib/gitlab/string_placeholder_replacer_spec.rb": 0.27023964199997863,4111 "spec/views/admin/application_settings/_package_registry.html.haml_spec.rb": 0.4751508880001438,4112 "spec/rubocop/cop/api/base_spec.rb": 0.3145169800000076,4113 "spec/workers/object_storage/delete_stale_direct_uploads_worker_spec.rb": 0.2587010229999578,4114 "spec/helpers/url_helper_spec.rb": 0.2574270129998695,4115 "spec/lib/gitlab/ci/parsers/accessibility/pa11y_spec.rb": 0.223756504999983,4116 "spec/models/concerns/strip_attribute_spec.rb": 0.5449908450000294,4117 "spec/workers/gitlab/github_import/stage/import_pull_requests_reviews_worker_spec.rb": 0.45902202000002035,4118 "spec/models/users/calloutable_spec.rb": 0.41251008299991554,4119 "spec/models/projects/import_export/relation_export_upload_spec.rb": 0.4739801590001207,4120 "spec/graphql/types/customer_relations/contact_state_counts_type_spec.rb": 0.1993170469997949,4121 "spec/graphql/types/commit_signatures/gpg_signature_type_spec.rb": 0.202881047000119,4122 "spec/helpers/web_ide_button_helper_spec.rb": 0.20338789600009477,4123 "spec/lib/api/api_spec.rb": 0.24819705400000203,4124 "spec/workers/gitlab/import/stuck_import_job_spec.rb": 0.4674866389998442,4125 "spec/graphql/types/ci/pipeline_type_spec.rb": 0.2095825970000078,4126 "spec/serializers/integrations/harbor_serializers/tag_entity_spec.rb": 0.5285427849998996,4127 "spec/lib/api/validations/validators/integer_or_custom_value_spec.rb": 0.2436884740000096,4128 "spec/helpers/webpack_helper_spec.rb": 0.28138707099992644,4129 "spec/graphql/types/clusters/agent_type_spec.rb": 0.20430222699997103,4130 "spec/lib/gitlab/ci/config/entry/paths_spec.rb": 0.20870016300000316,4131 "spec/services/packages/rpm/repository_metadata/build_repomd_xml_service_spec.rb": 0.2077133220000178,4132 "spec/lib/gitlab/middleware/rack_multipart_tempfile_factory_spec.rb": 0.20887177300005533,4133 "spec/lib/api/entities/nuget/dependency_group_spec.rb": 0.17237878699984321,4134 "spec/lib/banzai/filter/output_safety_spec.rb": 0.1728219369999806,4135 "spec/graphql/types/ci/config/include_type_spec.rb": 0.176919775999977,4136 "spec/graphql/resolvers/audit_events/audit_event_definitions_resolver_spec.rb": 0.24194307800007664,4137 "spec/lib/gitlab/sidekiq_status/client_middleware_spec.rb": 0.18246032599995488,4138 "spec/graphql/types/metadata/kas_type_spec.rb": 0.17876422699987415,4139 "spec/helpers/emoji_helper_spec.rb": 0.19016832500005876,4140 "spec/models/concerns/blocks_unsafe_serialization_spec.rb": 0.17951929599985306,4141 "spec/graphql/types/projects/fork_details_type_spec.rb": 0.17633814700002404,4142 "spec/scripts/pipeline/create_test_failure_issues_spec.rb": 0.17774655599987454,4143 "spec/lib/banzai/pipeline/service_desk_email_pipeline_spec.rb": 0.17134366799996315,4144 "spec/lib/gitlab/audit/deploy_token_author_spec.rb": 0.17371770799991282,4145 "spec/models/organizations/organization_user_spec.rb": 0.19381523400011247,4146 "spec/models/project_daily_statistic_spec.rb": 0.15343789000007746,4147 "spec/graphql/types/ci/group_variable_type_spec.rb": 0.1826865360001193,4148 "spec/lib/gitlab/nav/top_nav_menu_item_spec.rb": 0.15016160000004675,4149 "spec/initializers/action_dispatch_journey_router_spec.rb": 0.1393960010000228,4150 "spec/workers/gitlab/github_import/import_collaborator_worker_spec.rb": 0.21898547199998575,4151 "spec/lib/api/entities/projects/repository_storage_move_spec.rb": 0.15173121999987416,4152 "spec/graphql/types/permission_types/user_spec.rb": 0.13046297300002152,4153 "spec/graphql/types/work_items/widgets/notes_type_spec.rb": 0.14777371100012715,4154 "spec/graphql/types/permission_types/issue_spec.rb": 0.15096348099996248,4155 "spec/tooling/danger/specs/match_with_array_suggestion_spec.rb": 0.15022593000003326,4156 "spec/graphql/types/work_items/widgets/labels_type_spec.rb": 0.14778320000004896,4157 "spec/lib/gitlab/insecure_key_fingerprint_spec.rb": 0.14826708099985808,4158 "spec/lib/gitlab/serializer/ci/variables_spec.rb": 0.152812939000114064159}4160Knapsack global time execution for tests: 16m 54s4161Pending: (Failures listed here are expected and do not affect your suite's status)4162 1) Backup::Database#dump when using a single databases does not use snapshots4163 # Skipping because database ci exists4164 # ./spec/lib/backup/database_spec.rb:964165 2) Gitlab::Database::MigrationHelpers::V2#truncate_tables! with single database executes a TRUNCATE statement4166 # Skipping because database ci exists4167 # ./spec/lib/gitlab/database/migration_helpers/v2_spec.rb:4914168 3) Gitlab::Database::PgDepend.from_pg_extension when having views as dependency returns pg_stat_statements4169 # Skipping ./spec/lib/gitlab/database/pg_depend_spec.rb[1:1:1:1] because it's been fast-quarantined.4170 Failure/Error: skip "Skipping #{example.id} because it's been fast-quarantined."4171 RSpec::Core::Pending::SkipDeclaredInExample4172 # ./spec/support/fast_quarantine.rb:20:in `block (2 levels) in <top (required)>'4173 # ./spec/support/database/prevent_cross_joins.rb:106:in `block (3 levels) in <top (required)>'4174 # ./spec/support/database/prevent_cross_joins.rb:60:in `with_cross_joins_prevented'4175 # ./spec/support/database/prevent_cross_joins.rb:106:in `block (2 levels) in <top (required)>'4176Finished in 16 minutes 57 seconds (files took 1 minute 20.6 seconds to load)41775401 examples, 0 failures, 3 pending4178Randomized with seed 200224179[TEST PROF INFO] Time spent in factories: 08:11.334 (46.62% of total time)4180RSpec exited with 0.4181No examples to retry, congrats!4183Running after script...4184$ echo -e "\e[0Ksection_start:`date +%s`:report_results_section[collapsed=true]\r\e[0KReport results"4189Not uploading cache ruby-gems-debian-bullseye-ruby-3.0-16 due to policy4191Uploading artifacts...4192WARNING: auto_explain/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 4193coverage/: found 5 matching artifact files and directories 4194crystalball/: found 2 matching artifact files and directories 4195deprecations/: found 3 matching artifact files and directories 4196knapsack/: found 4 matching artifact files and directories 4197rspec/: found 16 matching artifact files and directories 4198WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 4199log/*.log: found 19 matching artifact files and directories 4200WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4841631176/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com4201WARNING: Retrying... context=artifacts-uploader error=request redirected4202Uploading artifacts as "archive" to coordinator... 201 Created id=4841631176 responseStatus=201 Created token=64_Z7LxL4203Uploading artifacts...4204rspec/rspec-*.xml: found 1 matching artifact files and directories 4205WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4841631176/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com4206WARNING: Retrying... context=artifacts-uploader error=request redirected4207Uploading artifacts as "junit" to coordinator... 201 Created id=4841631176 responseStatus=201 Created token=64_Z7LxL4209Job succeeded