Running with gitlab-runner 10.6.0 (a3543a27)  on docker-auto-scale-com 30d62d59 Using 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 ... Starting service mysql:latest ... Pulling docker image mysql:latest ... Using docker image sha256:5195076672a7e30525705a18f7d352c920bbd07a5ae72b30e374081fe660a011 for mysql:latest ... Starting service redis:alpine ... Pulling docker image redis:alpine ... Using docker image sha256:98bd7cfc43b8ef0ff130465e3d5427c0771002c2f35a6a9b62cb2d04602bed0a for redis:alpine ... Waiting for services to be up and running... Pulling 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 ... Using 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 ... section_start:1522927103:prepare_script Running on runner-30d62d59-project-13083-concurrent-0 via runner-30d62d59-prm-1522922015-ddc29478... section_end:1522927104:prepare_script section_start:1522927104:get_sources Fetching changes for master with git depth set to 20... Removing .gitlab_shell_secret Removing .gitlab_workhorse_secret Removing .yarn-cache/ Removing builds/2018_04/ Removing config/database.yml Removing config/gitlab.yml Removing config/redis.cache.yml Removing config/redis.queues.yml Removing config/redis.shared_state.yml Removing config/resque.yml Removing config/secrets.yml Removing log/api_json.log Removing log/application.log Removing log/gitaly-test.log Removing log/grpc.log Removing log/test_json.log Removing tmp/tests/ Removing vendor/ruby/ HEAD is now at b7cbff3d Add `direct_upload` setting for artifacts From https://gitlab.com/gitlab-org/gitlab-ce 2dbcb9cb..641bb13b master -> origin/master Checking out 21488c74 as master... Skipping Git submodules setup section_end:1522927113:get_sources section_start:1522927113:restore_cache Checking cache for ruby-2.3.6-with-yarn... Downloading cache.zip from http://runners-cache-5-internal.gitlab.com:444/runner/project/13083/ruby-2.3.6-with-yarn Successfully extracted cache section_end:1522927128:restore_cache section_start:1522927128:download_artifacts Downloading artifacts for retrieve-tests-metadata (61303215)... Downloading artifacts from coordinator... ok  id=61303215 responseStatus=200 OK token=AdWPNg2R Downloading artifacts for compile-assets (61303216)... Downloading artifacts from coordinator... ok  id=61303216 responseStatus=200 OK token=iy2yYbq8 Downloading artifacts for setup-test-env (61303217)... Downloading artifacts from coordinator... ok  id=61303217 responseStatus=200 OK token=ur1g79-4 WARNING: tmp/tests/gitlab-shell/.gitlab_shell_secret: chmod tmp/tests/gitlab-shell/.gitlab_shell_secret: no such file or directory (suppressing repeats) section_end:1522927141:download_artifacts section_start:1522927141:build_script $ bundle --version Bundler version 1.16.1 $ date Thu Apr 5 11:19:01 UTC 2018 $ source scripts/utils.sh $ date Thu Apr 5 11:19:01 UTC 2018 $ source scripts/prepare_build.sh The Gemfile's dependencies are satisfied Successfully installed knapsack-1.16.0 1 gem installed -- enable_extension("plpgsql") -> 0.0010s -- enable_extension("pg_trgm") -> 0.0000s -- create_table("abuse_reports", {:force=>:cascade}) -> 0.0401s -- create_table("appearances", {:force=>:cascade}) -> 0.1035s -- create_table("application_settings", {:force=>:cascade}) -> 0.0871s -- create_table("audit_events", {:force=>:cascade}) -> 0.0539s -- add_index("audit_events", ["entity_id", "entity_type"], {:name=>"index_audit_events_on_entity_id_and_entity_type", :using=>:btree}) -> 0.0647s -- create_table("award_emoji", {:force=>:cascade}) -> 0.0134s -- add_index("award_emoji", ["awardable_type", "awardable_id"], {:name=>"index_award_emoji_on_awardable_type_and_awardable_id", :using=>:btree}) -> 0.0074s -- add_index("award_emoji", ["user_id", "name"], {:name=>"index_award_emoji_on_user_id_and_name", :using=>:btree}) -> 0.0072s -- create_table("badges", {:force=>:cascade}) -> 0.0122s -- add_index("badges", ["group_id"], {:name=>"index_badges_on_group_id", :using=>:btree}) -> 0.0086s -- add_index("badges", ["project_id"], {:name=>"index_badges_on_project_id", :using=>:btree}) -> 0.0069s -- create_table("boards", {:force=>:cascade}) -> 0.0075s -- add_index("boards", ["group_id"], {:name=>"index_boards_on_group_id", :using=>:btree}) -> 0.0050s -- add_index("boards", ["project_id"], {:name=>"index_boards_on_project_id", :using=>:btree}) -> 0.0051s -- create_table("broadcast_messages", {:force=>:cascade}) -> 0.0082s -- add_index("broadcast_messages", ["starts_at", "ends_at", "id"], {:name=>"index_broadcast_messages_on_starts_at_and_ends_at_and_id", :using=>:btree}) -> 0.0063s -- create_table("chat_names", {:force=>:cascade}) -> 0.0084s -- 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}) -> 0.0088s -- add_index("chat_names", ["user_id", "service_id"], {:name=>"index_chat_names_on_user_id_and_service_id", :unique=>true, :using=>:btree}) -> 0.0077s -- create_table("chat_teams", {:force=>:cascade}) -> 0.0120s -- add_index("chat_teams", ["namespace_id"], {:name=>"index_chat_teams_on_namespace_id", :unique=>true, :using=>:btree}) -> 0.0135s -- create_table("ci_build_trace_section_names", {:force=>:cascade}) -> 0.0125s -- 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}) -> 0.0087s -- create_table("ci_build_trace_sections", {:force=>:cascade}) -> 0.0094s -- 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}) -> 0.0916s -- add_index("ci_build_trace_sections", ["project_id"], {:name=>"index_ci_build_trace_sections_on_project_id", :using=>:btree}) -> 0.0089s -- add_index("ci_build_trace_sections", ["section_name_id"], {:name=>"index_ci_build_trace_sections_on_section_name_id", :using=>:btree}) -> 0.0132s -- create_table("ci_builds", {:force=>:cascade}) -> 0.0140s -- add_index("ci_builds", ["artifacts_expire_at"], {:name=>"index_ci_builds_on_artifacts_expire_at", :where=>"(artifacts_file <> ''::text)", :using=>:btree}) -> 0.0325s -- add_index("ci_builds", ["auto_canceled_by_id"], {:name=>"index_ci_builds_on_auto_canceled_by_id", :using=>:btree}) -> 0.0081s -- 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}) -> 0.0114s -- add_index("ci_builds", ["commit_id", "status", "type"], {:name=>"index_ci_builds_on_commit_id_and_status_and_type", :using=>:btree}) -> 0.0119s -- add_index("ci_builds", ["commit_id", "type", "name", "ref"], {:name=>"index_ci_builds_on_commit_id_and_type_and_name_and_ref", :using=>:btree}) -> 0.0116s -- add_index("ci_builds", ["commit_id", "type", "ref"], {:name=>"index_ci_builds_on_commit_id_and_type_and_ref", :using=>:btree}) -> 0.0144s -- add_index("ci_builds", ["project_id", "id"], {:name=>"index_ci_builds_on_project_id_and_id", :using=>:btree}) -> 0.0136s -- add_index("ci_builds", ["protected"], {:name=>"index_ci_builds_on_protected", :using=>:btree}) -> 0.0113s -- add_index("ci_builds", ["runner_id"], {:name=>"index_ci_builds_on_runner_id", :using=>:btree}) -> 0.0082s -- add_index("ci_builds", ["stage_id"], {:name=>"index_ci_builds_on_stage_id", :using=>:btree}) -> 0.0086s -- add_index("ci_builds", ["status", "type", "runner_id"], {:name=>"index_ci_builds_on_status_and_type_and_runner_id", :using=>:btree}) -> 0.0091s -- add_index("ci_builds", ["status"], {:name=>"index_ci_builds_on_status", :using=>:btree}) -> 0.0081s -- add_index("ci_builds", ["token"], {:name=>"index_ci_builds_on_token", :unique=>true, :using=>:btree}) -> 0.0103s -- add_index("ci_builds", ["updated_at"], {:name=>"index_ci_builds_on_updated_at", :using=>:btree}) -> 0.0149s -- add_index("ci_builds", ["user_id"], {:name=>"index_ci_builds_on_user_id", :using=>:btree}) -> 0.0156s -- create_table("ci_builds_metadata", {:force=>:cascade}) -> 0.0134s -- add_index("ci_builds_metadata", ["build_id"], {:name=>"index_ci_builds_metadata_on_build_id", :unique=>true, :using=>:btree}) -> 0.0067s -- add_index("ci_builds_metadata", ["project_id"], {:name=>"index_ci_builds_metadata_on_project_id", :using=>:btree}) -> 0.0061s -- create_table("ci_group_variables", {:force=>:cascade}) -> 0.0088s -- add_index("ci_group_variables", ["group_id", "key"], {:name=>"index_ci_group_variables_on_group_id_and_key", :unique=>true, :using=>:btree}) -> 0.0073s -- create_table("ci_job_artifacts", {:force=>:cascade}) -> 0.0089s -- add_index("ci_job_artifacts", ["expire_at", "job_id"], {:name=>"index_ci_job_artifacts_on_expire_at_and_job_id", :using=>:btree}) -> 0.0061s -- add_index("ci_job_artifacts", ["job_id", "file_type"], {:name=>"index_ci_job_artifacts_on_job_id_and_file_type", :unique=>true, :using=>:btree}) -> 0.0077s -- add_index("ci_job_artifacts", ["project_id"], {:name=>"index_ci_job_artifacts_on_project_id", :using=>:btree}) -> 0.0071s -- create_table("ci_pipeline_schedule_variables", {:force=>:cascade}) -> 0.0512s -- 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}) -> 0.0144s -- create_table("ci_pipeline_schedules", {:force=>:cascade}) -> 0.0603s -- add_index("ci_pipeline_schedules", ["next_run_at", "active"], {:name=>"index_ci_pipeline_schedules_on_next_run_at_and_active", :using=>:btree}) -> 0.0247s -- add_index("ci_pipeline_schedules", ["project_id"], {:name=>"index_ci_pipeline_schedules_on_project_id", :using=>:btree}) -> 0.0082s -- create_table("ci_pipeline_variables", {:force=>:cascade}) -> 0.0112s -- add_index("ci_pipeline_variables", ["pipeline_id", "key"], {:name=>"index_ci_pipeline_variables_on_pipeline_id_and_key", :unique=>true, :using=>:btree}) -> 0.0075s -- create_table("ci_pipelines", {:force=>:cascade}) -> 0.0111s -- add_index("ci_pipelines", ["auto_canceled_by_id"], {:name=>"index_ci_pipelines_on_auto_canceled_by_id", :using=>:btree}) -> 0.0074s -- add_index("ci_pipelines", ["pipeline_schedule_id"], {:name=>"index_ci_pipelines_on_pipeline_schedule_id", :using=>:btree}) -> 0.0086s -- add_index("ci_pipelines", ["project_id", "ref", "status", "id"], {:name=>"index_ci_pipelines_on_project_id_and_ref_and_status_and_id", :using=>:btree}) -> 0.0104s -- add_index("ci_pipelines", ["project_id", "sha"], {:name=>"index_ci_pipelines_on_project_id_and_sha", :using=>:btree}) -> 0.0107s -- add_index("ci_pipelines", ["project_id"], {:name=>"index_ci_pipelines_on_project_id", :using=>:btree}) -> 0.0084s -- add_index("ci_pipelines", ["status"], {:name=>"index_ci_pipelines_on_status", :using=>:btree}) -> 0.0065s -- add_index("ci_pipelines", ["user_id"], {:name=>"index_ci_pipelines_on_user_id", :using=>:btree}) -> 0.0071s -- create_table("ci_runner_projects", {:force=>:cascade}) -> 0.0077s -- add_index("ci_runner_projects", ["project_id"], {:name=>"index_ci_runner_projects_on_project_id", :using=>:btree}) -> 0.0072s -- add_index("ci_runner_projects", ["runner_id"], {:name=>"index_ci_runner_projects_on_runner_id", :using=>:btree}) -> 0.0064s -- create_table("ci_runners", {:force=>:cascade}) -> 0.0090s -- add_index("ci_runners", ["contacted_at"], {:name=>"index_ci_runners_on_contacted_at", :using=>:btree}) -> 0.0078s -- add_index("ci_runners", ["is_shared"], {:name=>"index_ci_runners_on_is_shared", :using=>:btree}) -> 0.0054s -- add_index("ci_runners", ["locked"], {:name=>"index_ci_runners_on_locked", :using=>:btree}) -> 0.0052s -- add_index("ci_runners", ["token"], {:name=>"index_ci_runners_on_token", :using=>:btree}) -> 0.0057s -- create_table("ci_stages", {:force=>:cascade}) -> 0.0059s -- add_index("ci_stages", ["pipeline_id", "name"], {:name=>"index_ci_stages_on_pipeline_id_and_name", :unique=>true, :using=>:btree}) -> 0.0054s -- add_index("ci_stages", ["pipeline_id"], {:name=>"index_ci_stages_on_pipeline_id", :using=>:btree}) -> 0.0045s -- add_index("ci_stages", ["project_id"], {:name=>"index_ci_stages_on_project_id", :using=>:btree}) -> 0.0053s -- create_table("ci_trigger_requests", {:force=>:cascade}) -> 0.0079s -- add_index("ci_trigger_requests", ["commit_id"], {:name=>"index_ci_trigger_requests_on_commit_id", :using=>:btree}) -> 0.0059s -- create_table("ci_triggers", {:force=>:cascade}) -> 0.0100s -- add_index("ci_triggers", ["project_id"], {:name=>"index_ci_triggers_on_project_id", :using=>:btree}) -> 0.0059s -- create_table("ci_variables", {:force=>:cascade}) -> 0.0110s -- 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}) -> 0.0066s -- create_table("cluster_platforms_kubernetes", {:force=>:cascade}) -> 0.0082s -- add_index("cluster_platforms_kubernetes", ["cluster_id"], {:name=>"index_cluster_platforms_kubernetes_on_cluster_id", :unique=>true, :using=>:btree}) -> 0.0047s -- create_table("cluster_projects", {:force=>:cascade}) -> 0.0079s -- add_index("cluster_projects", ["cluster_id"], {:name=>"index_cluster_projects_on_cluster_id", :using=>:btree}) -> 0.0045s -- add_index("cluster_projects", ["project_id"], {:name=>"index_cluster_projects_on_project_id", :using=>:btree}) -> 0.0044s -- create_table("cluster_providers_gcp", {:force=>:cascade}) -> 0.0247s -- add_index("cluster_providers_gcp", ["cluster_id"], {:name=>"index_cluster_providers_gcp_on_cluster_id", :unique=>true, :using=>:btree}) -> 0.0088s -- create_table("clusters", {:force=>:cascade}) -> 0.0767s -- add_index("clusters", ["enabled"], {:name=>"index_clusters_on_enabled", :using=>:btree}) -> 0.0162s -- add_index("clusters", ["user_id"], {:name=>"index_clusters_on_user_id", :using=>:btree}) -> 0.0216s -- create_table("clusters_applications_helm", {:force=>:cascade}) -> 0.0379s -- create_table("clusters_applications_ingress", {:force=>:cascade}) -> 0.0409s -- create_table("clusters_applications_prometheus", {:force=>:cascade}) -> 0.0178s -- create_table("clusters_applications_runners", {:force=>:cascade}) -> 0.0471s -- add_index("clusters_applications_runners", ["cluster_id"], {:name=>"index_clusters_applications_runners_on_cluster_id", :unique=>true, :using=>:btree}) -> 0.0487s -- add_index("clusters_applications_runners", ["runner_id"], {:name=>"index_clusters_applications_runners_on_runner_id", :using=>:btree}) -> 0.0094s -- create_table("container_repositories", {:force=>:cascade}) -> 0.0142s -- add_index("container_repositories", ["project_id", "name"], {:name=>"index_container_repositories_on_project_id_and_name", :unique=>true, :using=>:btree}) -> 0.0080s -- add_index("container_repositories", ["project_id"], {:name=>"index_container_repositories_on_project_id", :using=>:btree}) -> 0.0070s -- create_table("conversational_development_index_metrics", {:force=>:cascade}) -> 0.0204s -- create_table("deploy_keys_projects", {:force=>:cascade}) -> 0.0154s -- add_index("deploy_keys_projects", ["project_id"], {:name=>"index_deploy_keys_projects_on_project_id", :using=>:btree}) -> 0.0471s -- create_table("deployments", {:force=>:cascade}) -> 0.0191s -- add_index("deployments", ["created_at"], {:name=>"index_deployments_on_created_at", :using=>:btree}) -> 0.0552s -- add_index("deployments", ["environment_id", "id"], {:name=>"index_deployments_on_environment_id_and_id", :using=>:btree}) -> 0.0294s -- add_index("deployments", ["environment_id", "iid", "project_id"], {:name=>"index_deployments_on_environment_id_and_iid_and_project_id", :using=>:btree}) -> 0.0408s -- add_index("deployments", ["project_id", "iid"], {:name=>"index_deployments_on_project_id_and_iid", :unique=>true, :using=>:btree}) -> 0.0094s -- create_table("emails", {:force=>:cascade}) -> 0.0127s -- add_index("emails", ["confirmation_token"], {:name=>"index_emails_on_confirmation_token", :unique=>true, :using=>:btree}) -> 0.0082s -- add_index("emails", ["email"], {:name=>"index_emails_on_email", :unique=>true, :using=>:btree}) -> 0.0110s -- add_index("emails", ["user_id"], {:name=>"index_emails_on_user_id", :using=>:btree}) -> 0.0079s -- create_table("environments", {:force=>:cascade}) -> 0.0106s -- add_index("environments", ["project_id", "name"], {:name=>"index_environments_on_project_id_and_name", :unique=>true, :using=>:btree}) -> 0.0086s -- add_index("environments", ["project_id", "slug"], {:name=>"index_environments_on_project_id_and_slug", :unique=>true, :using=>:btree}) -> 0.0076s -- create_table("events", {:force=>:cascade}) -> 0.0122s -- add_index("events", ["action"], {:name=>"index_events_on_action", :using=>:btree}) -> 0.0068s -- add_index("events", ["author_id", "project_id"], {:name=>"index_events_on_author_id_and_project_id", :using=>:btree}) -> 0.0081s -- add_index("events", ["project_id", "id"], {:name=>"index_events_on_project_id_and_id", :using=>:btree}) -> 0.0064s -- add_index("events", ["target_type", "target_id"], {:name=>"index_events_on_target_type_and_target_id", :using=>:btree}) -> 0.0087s -- create_table("feature_gates", {:force=>:cascade}) -> 0.0105s -- add_index("feature_gates", ["feature_key", "key", "value"], {:name=>"index_feature_gates_on_feature_key_and_key_and_value", :unique=>true, :using=>:btree}) -> 0.0080s -- create_table("features", {:force=>:cascade}) -> 0.0086s -- add_index("features", ["key"], {:name=>"index_features_on_key", :unique=>true, :using=>:btree}) -> 0.0058s -- create_table("fork_network_members", {:force=>:cascade}) -> 0.0081s -- add_index("fork_network_members", ["fork_network_id"], {:name=>"index_fork_network_members_on_fork_network_id", :using=>:btree}) -> 0.0056s -- add_index("fork_network_members", ["project_id"], {:name=>"index_fork_network_members_on_project_id", :unique=>true, :using=>:btree}) -> 0.0053s -- create_table("fork_networks", {:force=>:cascade}) -> 0.0081s -- add_index("fork_networks", ["root_project_id"], {:name=>"index_fork_networks_on_root_project_id", :unique=>true, :using=>:btree}) -> 0.0051s -- create_table("forked_project_links", {:force=>:cascade}) -> 0.0070s -- add_index("forked_project_links", ["forked_to_project_id"], {:name=>"index_forked_project_links_on_forked_to_project_id", :unique=>true, :using=>:btree}) -> 0.0061s -- create_table("gcp_clusters", {:force=>:cascade}) -> 0.0090s -- add_index("gcp_clusters", ["project_id"], {:name=>"index_gcp_clusters_on_project_id", :unique=>true, :using=>:btree}) -> 0.0073s -- create_table("gpg_key_subkeys", {:force=>:cascade}) -> 0.0092s -- add_index("gpg_key_subkeys", ["fingerprint"], {:name=>"index_gpg_key_subkeys_on_fingerprint", :unique=>true, :using=>:btree}) -> 0.0063s -- add_index("gpg_key_subkeys", ["gpg_key_id"], {:name=>"index_gpg_key_subkeys_on_gpg_key_id", :using=>:btree}) -> 0.0603s -- add_index("gpg_key_subkeys", ["keyid"], {:name=>"index_gpg_key_subkeys_on_keyid", :unique=>true, :using=>:btree}) -> 0.0705s -- create_table("gpg_keys", {:force=>:cascade}) -> 0.0235s -- add_index("gpg_keys", ["fingerprint"], {:name=>"index_gpg_keys_on_fingerprint", :unique=>true, :using=>:btree}) -> 0.0220s -- add_index("gpg_keys", ["primary_keyid"], {:name=>"index_gpg_keys_on_primary_keyid", :unique=>true, :using=>:btree}) -> 0.0329s -- add_index("gpg_keys", ["user_id"], {:name=>"index_gpg_keys_on_user_id", :using=>:btree}) -> 0.0087s -- create_table("gpg_signatures", {:force=>:cascade}) -> 0.0126s -- add_index("gpg_signatures", ["commit_sha"], {:name=>"index_gpg_signatures_on_commit_sha", :unique=>true, :using=>:btree}) -> 0.0105s -- add_index("gpg_signatures", ["gpg_key_id"], {:name=>"index_gpg_signatures_on_gpg_key_id", :using=>:btree}) -> 0.0094s -- add_index("gpg_signatures", ["gpg_key_primary_keyid"], {:name=>"index_gpg_signatures_on_gpg_key_primary_keyid", :using=>:btree}) -> 0.0100s -- add_index("gpg_signatures", ["gpg_key_subkey_id"], {:name=>"index_gpg_signatures_on_gpg_key_subkey_id", :using=>:btree}) -> 0.0079s -- add_index("gpg_signatures", ["project_id"], {:name=>"index_gpg_signatures_on_project_id", :using=>:btree}) -> 0.0081s -- create_table("group_custom_attributes", {:force=>:cascade}) -> 0.0092s -- add_index("group_custom_attributes", ["group_id", "key"], {:name=>"index_group_custom_attributes_on_group_id_and_key", :unique=>true, :using=>:btree}) -> 0.0086s -- add_index("group_custom_attributes", ["key", "value"], {:name=>"index_group_custom_attributes_on_key_and_value", :using=>:btree}) -> 0.0071s -- create_table("identities", {:force=>:cascade}) -> 0.0114s -- add_index("identities", ["user_id"], {:name=>"index_identities_on_user_id", :using=>:btree}) -> 0.0064s -- create_table("internal_ids", {:id=>:bigserial, :force=>:cascade}) -> 0.0097s -- add_index("internal_ids", ["usage", "project_id"], {:name=>"index_internal_ids_on_usage_and_project_id", :unique=>true, :using=>:btree}) -> 0.0073s -- create_table("issue_assignees", {:id=>false, :force=>:cascade}) -> 0.0127s -- add_index("issue_assignees", ["issue_id", "user_id"], {:name=>"index_issue_assignees_on_issue_id_and_user_id", :unique=>true, :using=>:btree}) -> 0.0110s -- add_index("issue_assignees", ["user_id"], {:name=>"index_issue_assignees_on_user_id", :using=>:btree}) -> 0.0079s -- create_table("issue_metrics", {:force=>:cascade}) -> 0.0098s -- add_index("issue_metrics", ["issue_id"], {:name=>"index_issue_metrics", :using=>:btree}) -> 0.0053s -- create_table("issues", {:force=>:cascade}) -> 0.0090s -- add_index("issues", ["author_id"], {:name=>"index_issues_on_author_id", :using=>:btree}) -> 0.0056s -- add_index("issues", ["confidential"], {:name=>"index_issues_on_confidential", :using=>:btree}) -> 0.0055s -- add_index("issues", ["description"], {:name=>"index_issues_on_description_trigram", :using=>:gin, :opclasses=>{"description"=>"gin_trgm_ops"}}) -> 0.0006s -- add_index("issues", ["milestone_id"], {:name=>"index_issues_on_milestone_id", :using=>:btree}) -> 0.0061s -- add_index("issues", ["moved_to_id"], {:name=>"index_issues_on_moved_to_id", :where=>"(moved_to_id IS NOT NULL)", :using=>:btree}) -> 0.0051s -- add_index("issues", ["project_id", "created_at", "id", "state"], {:name=>"index_issues_on_project_id_and_created_at_and_id_and_state", :using=>:btree}) -> 0.0069s -- 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}) -> 0.0073s -- add_index("issues", ["project_id", "iid"], {:name=>"index_issues_on_project_id_and_iid", :unique=>true, :using=>:btree}) -> 0.0060s -- add_index("issues", ["project_id", "updated_at", "id", "state"], {:name=>"index_issues_on_project_id_and_updated_at_and_id_and_state", :using=>:btree}) -> 0.0094s -- add_index("issues", ["relative_position"], {:name=>"index_issues_on_relative_position", :using=>:btree}) -> 0.0070s -- add_index("issues", ["state"], {:name=>"index_issues_on_state", :using=>:btree}) -> 0.0078s -- add_index("issues", ["title"], {:name=>"index_issues_on_title_trigram", :using=>:gin, :opclasses=>{"title"=>"gin_trgm_ops"}}) -> 0.0007s -- add_index("issues", ["updated_at"], {:name=>"index_issues_on_updated_at", :using=>:btree}) -> 0.0068s -- add_index("issues", ["updated_by_id"], {:name=>"index_issues_on_updated_by_id", :where=>"(updated_by_id IS NOT NULL)", :using=>:btree}) -> 0.0066s -- create_table("keys", {:force=>:cascade}) -> 0.0087s -- add_index("keys", ["fingerprint"], {:name=>"index_keys_on_fingerprint", :unique=>true, :using=>:btree}) -> 0.0066s -- add_index("keys", ["user_id"], {:name=>"index_keys_on_user_id", :using=>:btree}) -> 0.0063s -- create_table("label_links", {:force=>:cascade}) -> 0.0073s -- add_index("label_links", ["label_id"], {:name=>"index_label_links_on_label_id", :using=>:btree}) -> 0.0050s -- add_index("label_links", ["target_id", "target_type"], {:name=>"index_label_links_on_target_id_and_target_type", :using=>:btree}) -> 0.0062s -- create_table("label_priorities", {:force=>:cascade}) -> 0.0073s -- add_index("label_priorities", ["priority"], {:name=>"index_label_priorities_on_priority", :using=>:btree}) -> 0.0058s -- add_index("label_priorities", ["project_id", "label_id"], {:name=>"index_label_priorities_on_project_id_and_label_id", :unique=>true, :using=>:btree}) -> 0.0056s -- create_table("labels", {:force=>:cascade}) -> 0.0087s -- add_index("labels", ["group_id", "project_id", "title"], {:name=>"index_labels_on_group_id_and_project_id_and_title", :unique=>true, :using=>:btree}) -> 0.0074s -- add_index("labels", ["project_id"], {:name=>"index_labels_on_project_id", :using=>:btree}) -> 0.0061s -- add_index("labels", ["template"], {:name=>"index_labels_on_template", :where=>"template", :using=>:btree}) -> 0.0060s -- add_index("labels", ["title"], {:name=>"index_labels_on_title", :using=>:btree}) -> 0.0076s -- add_index("labels", ["type", "project_id"], {:name=>"index_labels_on_type_and_project_id", :using=>:btree}) -> 0.0061s -- create_table("lfs_file_locks", {:force=>:cascade}) -> 0.0078s -- add_index("lfs_file_locks", ["project_id", "path"], {:name=>"index_lfs_file_locks_on_project_id_and_path", :unique=>true, :using=>:btree}) -> 0.0067s -- add_index("lfs_file_locks", ["user_id"], {:name=>"index_lfs_file_locks_on_user_id", :using=>:btree}) -> 0.0060s -- create_table("lfs_objects", {:force=>:cascade}) -> 0.0109s -- add_index("lfs_objects", ["oid"], {:name=>"index_lfs_objects_on_oid", :unique=>true, :using=>:btree}) -> 0.0059s -- create_table("lfs_objects_projects", {:force=>:cascade}) -> 0.0091s -- add_index("lfs_objects_projects", ["project_id"], {:name=>"index_lfs_objects_projects_on_project_id", :using=>:btree}) -> 0.0060s -- create_table("lists", {:force=>:cascade}) -> 0.0115s -- add_index("lists", ["board_id", "label_id"], {:name=>"index_lists_on_board_id_and_label_id", :unique=>true, :using=>:btree}) -> 0.0055s -- add_index("lists", ["label_id"], {:name=>"index_lists_on_label_id", :using=>:btree}) -> 0.0055s -- create_table("members", {:force=>:cascade}) -> 0.0140s -- add_index("members", ["access_level"], {:name=>"index_members_on_access_level", :using=>:btree}) -> 0.0067s -- add_index("members", ["invite_token"], {:name=>"index_members_on_invite_token", :unique=>true, :using=>:btree}) -> 0.0069s -- add_index("members", ["requested_at"], {:name=>"index_members_on_requested_at", :using=>:btree}) -> 0.0057s -- add_index("members", ["source_id", "source_type"], {:name=>"index_members_on_source_id_and_source_type", :using=>:btree}) -> 0.0057s -- add_index("members", ["user_id"], {:name=>"index_members_on_user_id", :using=>:btree}) -> 0.0073s -- create_table("merge_request_diff_commits", {:id=>false, :force=>:cascade}) -> 0.0087s -- 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}) -> 0.0151s -- add_index("merge_request_diff_commits", ["sha"], {:name=>"index_merge_request_diff_commits_on_sha", :using=>:btree}) -> 0.0057s -- create_table("merge_request_diff_files", {:id=>false, :force=>:cascade}) -> 0.0094s -- 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}) -> 0.0138s -- create_table("merge_request_diffs", {:force=>:cascade}) -> 0.0077s -- add_index("merge_request_diffs", ["merge_request_id", "id"], {:name=>"index_merge_request_diffs_on_merge_request_id_and_id", :using=>:btree}) -> 0.0060s -- create_table("merge_request_metrics", {:force=>:cascade}) -> 0.0098s -- add_index("merge_request_metrics", ["first_deployed_to_production_at"], {:name=>"index_merge_request_metrics_on_first_deployed_to_production_at", :using=>:btree}) -> 0.0060s -- add_index("merge_request_metrics", ["merge_request_id"], {:name=>"index_merge_request_metrics", :using=>:btree}) -> 0.0050s -- add_index("merge_request_metrics", ["pipeline_id"], {:name=>"index_merge_request_metrics_on_pipeline_id", :using=>:btree}) -> 0.0045s -- create_table("merge_requests", {:force=>:cascade}) -> 0.0066s -- add_index("merge_requests", ["assignee_id"], {:name=>"index_merge_requests_on_assignee_id", :using=>:btree}) -> 0.0072s -- add_index("merge_requests", ["author_id"], {:name=>"index_merge_requests_on_author_id", :using=>:btree}) -> 0.0050s -- add_index("merge_requests", ["created_at"], {:name=>"index_merge_requests_on_created_at", :using=>:btree}) -> 0.0053s -- add_index("merge_requests", ["description"], {:name=>"index_merge_requests_on_description_trigram", :using=>:gin, :opclasses=>{"description"=>"gin_trgm_ops"}}) -> 0.0008s -- add_index("merge_requests", ["head_pipeline_id"], {:name=>"index_merge_requests_on_head_pipeline_id", :using=>:btree}) -> 0.0053s -- add_index("merge_requests", ["latest_merge_request_diff_id"], {:name=>"index_merge_requests_on_latest_merge_request_diff_id", :using=>:btree}) -> 0.0048s -- add_index("merge_requests", ["merge_user_id"], {:name=>"index_merge_requests_on_merge_user_id", :where=>"(merge_user_id IS NOT NULL)", :using=>:btree}) -> 0.0051s -- add_index("merge_requests", ["milestone_id"], {:name=>"index_merge_requests_on_milestone_id", :using=>:btree}) -> 0.0055s -- add_index("merge_requests", ["source_branch"], {:name=>"index_merge_requests_on_source_branch", :using=>:btree}) -> 0.0055s -- 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}) -> 0.0061s -- add_index("merge_requests", ["source_project_id", "source_branch"], {:name=>"index_merge_requests_on_source_project_id_and_source_branch", :using=>:btree}) -> 0.0068s -- add_index("merge_requests", ["target_branch"], {:name=>"index_merge_requests_on_target_branch", :using=>:btree}) -> 0.0054s -- add_index("merge_requests", ["target_project_id", "iid"], {:name=>"index_merge_requests_on_target_project_id_and_iid", :unique=>true, :using=>:btree}) -> 0.0061s -- 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}) -> 0.0077s -- add_index("merge_requests", ["title"], {:name=>"index_merge_requests_on_title", :using=>:btree}) -> 0.0105s -- add_index("merge_requests", ["title"], {:name=>"index_merge_requests_on_title_trigram", :using=>:gin, :opclasses=>{"title"=>"gin_trgm_ops"}}) -> 0.0008s -- add_index("merge_requests", ["updated_by_id"], {:name=>"index_merge_requests_on_updated_by_id", :where=>"(updated_by_id IS NOT NULL)", :using=>:btree}) -> 0.0074s -- create_table("merge_requests_closing_issues", {:force=>:cascade}) -> 0.0125s -- add_index("merge_requests_closing_issues", ["issue_id"], {:name=>"index_merge_requests_closing_issues_on_issue_id", :using=>:btree}) -> 0.0064s -- add_index("merge_requests_closing_issues", ["merge_request_id"], {:name=>"index_merge_requests_closing_issues_on_merge_request_id", :using=>:btree}) -> 0.0061s -- create_table("milestones", {:force=>:cascade}) -> 0.0064s -- add_index("milestones", ["description"], {:name=>"index_milestones_on_description_trigram", :using=>:gin, :opclasses=>{"description"=>"gin_trgm_ops"}}) -> 0.0007s -- add_index("milestones", ["due_date"], {:name=>"index_milestones_on_due_date", :using=>:btree}) -> 0.0053s -- add_index("milestones", ["group_id"], {:name=>"index_milestones_on_group_id", :using=>:btree}) -> 0.0068s -- add_index("milestones", ["project_id", "iid"], {:name=>"index_milestones_on_project_id_and_iid", :unique=>true, :using=>:btree}) -> 0.0057s -- add_index("milestones", ["title"], {:name=>"index_milestones_on_title", :using=>:btree}) -> 0.0051s -- add_index("milestones", ["title"], {:name=>"index_milestones_on_title_trigram", :using=>:gin, :opclasses=>{"title"=>"gin_trgm_ops"}}) -> 0.0006s -- create_table("namespaces", {:force=>:cascade}) -> 0.0083s -- add_index("namespaces", ["created_at"], {:name=>"index_namespaces_on_created_at", :using=>:btree}) -> 0.0061s -- add_index("namespaces", ["name", "parent_id"], {:name=>"index_namespaces_on_name_and_parent_id", :unique=>true, :using=>:btree}) -> 0.0062s -- add_index("namespaces", ["name"], {:name=>"index_namespaces_on_name_trigram", :using=>:gin, :opclasses=>{"name"=>"gin_trgm_ops"}}) -> 0.0006s -- add_index("namespaces", ["owner_id"], {:name=>"index_namespaces_on_owner_id", :using=>:btree}) -> 0.0061s -- add_index("namespaces", ["parent_id", "id"], {:name=>"index_namespaces_on_parent_id_and_id", :unique=>true, :using=>:btree}) -> 0.0072s -- add_index("namespaces", ["path"], {:name=>"index_namespaces_on_path", :using=>:btree}) -> 0.0056s -- add_index("namespaces", ["path"], {:name=>"index_namespaces_on_path_trigram", :using=>:gin, :opclasses=>{"path"=>"gin_trgm_ops"}}) -> 0.0006s -- add_index("namespaces", ["require_two_factor_authentication"], {:name=>"index_namespaces_on_require_two_factor_authentication", :using=>:btree}) -> 0.0061s -- add_index("namespaces", ["type"], {:name=>"index_namespaces_on_type", :using=>:btree}) -> 0.0055s -- create_table("notes", {:force=>:cascade}) -> 0.0092s -- add_index("notes", ["author_id"], {:name=>"index_notes_on_author_id", :using=>:btree}) -> 0.0072s -- add_index("notes", ["commit_id"], {:name=>"index_notes_on_commit_id", :using=>:btree}) -> 0.0057s -- add_index("notes", ["created_at"], {:name=>"index_notes_on_created_at", :using=>:btree}) -> 0.0065s -- add_index("notes", ["discussion_id"], {:name=>"index_notes_on_discussion_id", :using=>:btree}) -> 0.0064s -- add_index("notes", ["line_code"], {:name=>"index_notes_on_line_code", :using=>:btree}) -> 0.0078s -- add_index("notes", ["note"], {:name=>"index_notes_on_note_trigram", :using=>:gin, :opclasses=>{"note"=>"gin_trgm_ops"}}) -> 0.0006s -- add_index("notes", ["noteable_id", "noteable_type"], {:name=>"index_notes_on_noteable_id_and_noteable_type", :using=>:btree}) -> 0.0102s -- add_index("notes", ["noteable_type"], {:name=>"index_notes_on_noteable_type", :using=>:btree}) -> 0.0092s -- add_index("notes", ["project_id", "noteable_type"], {:name=>"index_notes_on_project_id_and_noteable_type", :using=>:btree}) -> 0.0082s -- add_index("notes", ["updated_at"], {:name=>"index_notes_on_updated_at", :using=>:btree}) -> 0.0062s -- create_table("notification_settings", {:force=>:cascade}) -> 0.0088s -- add_index("notification_settings", ["source_id", "source_type"], {:name=>"index_notification_settings_on_source_id_and_source_type", :using=>:btree}) -> 0.0405s -- 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}) -> 0.0677s -- add_index("notification_settings", ["user_id"], {:name=>"index_notification_settings_on_user_id", :using=>:btree}) -> 0.1199s -- create_table("oauth_access_grants", {:force=>:cascade}) -> 0.0140s -- add_index("oauth_access_grants", ["token"], {:name=>"index_oauth_access_grants_on_token", :unique=>true, :using=>:btree}) -> 0.0076s -- create_table("oauth_access_tokens", {:force=>:cascade}) -> 0.0167s -- add_index("oauth_access_tokens", ["refresh_token"], {:name=>"index_oauth_access_tokens_on_refresh_token", :unique=>true, :using=>:btree}) -> 0.0098s -- add_index("oauth_access_tokens", ["resource_owner_id"], {:name=>"index_oauth_access_tokens_on_resource_owner_id", :using=>:btree}) -> 0.0074s -- add_index("oauth_access_tokens", ["token"], {:name=>"index_oauth_access_tokens_on_token", :unique=>true, :using=>:btree}) -> 0.0078s -- create_table("oauth_applications", {:force=>:cascade}) -> 0.0112s -- add_index("oauth_applications", ["owner_id", "owner_type"], {:name=>"index_oauth_applications_on_owner_id_and_owner_type", :using=>:btree}) -> 0.0079s -- add_index("oauth_applications", ["uid"], {:name=>"index_oauth_applications_on_uid", :unique=>true, :using=>:btree}) -> 0.0114s -- create_table("oauth_openid_requests", {:force=>:cascade}) -> 0.0102s -- create_table("pages_domains", {:force=>:cascade}) -> 0.0102s -- add_index("pages_domains", ["domain"], {:name=>"index_pages_domains_on_domain", :unique=>true, :using=>:btree}) -> 0.0067s -- add_index("pages_domains", ["project_id", "enabled_until"], {:name=>"index_pages_domains_on_project_id_and_enabled_until", :using=>:btree}) -> 0.0114s -- add_index("pages_domains", ["project_id"], {:name=>"index_pages_domains_on_project_id", :using=>:btree}) -> 0.0066s -- add_index("pages_domains", ["verified_at", "enabled_until"], {:name=>"index_pages_domains_on_verified_at_and_enabled_until", :using=>:btree}) -> 0.0073s -- add_index("pages_domains", ["verified_at"], {:name=>"index_pages_domains_on_verified_at", :using=>:btree}) -> 0.0063s -- create_table("personal_access_tokens", {:force=>:cascade}) -> 0.0084s -- add_index("personal_access_tokens", ["token"], {:name=>"index_personal_access_tokens_on_token", :unique=>true, :using=>:btree}) -> 0.0075s -- add_index("personal_access_tokens", ["user_id"], {:name=>"index_personal_access_tokens_on_user_id", :using=>:btree}) -> 0.0066s -- create_table("project_authorizations", {:id=>false, :force=>:cascade}) -> 0.0087s -- add_index("project_authorizations", ["project_id"], {:name=>"index_project_authorizations_on_project_id", :using=>:btree}) -> 0.0056s -- 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}) -> 0.0075s -- create_table("project_auto_devops", {:force=>:cascade}) -> 0.0079s -- add_index("project_auto_devops", ["project_id"], {:name=>"index_project_auto_devops_on_project_id", :unique=>true, :using=>:btree}) -> 0.0067s -- create_table("project_custom_attributes", {:force=>:cascade}) -> 0.0071s -- add_index("project_custom_attributes", ["key", "value"], {:name=>"index_project_custom_attributes_on_key_and_value", :using=>:btree}) -> 0.0060s -- add_index("project_custom_attributes", ["project_id", "key"], {:name=>"index_project_custom_attributes_on_project_id_and_key", :unique=>true, :using=>:btree}) -> 0.0069s -- create_table("project_features", {:force=>:cascade}) -> 0.0100s -- add_index("project_features", ["project_id"], {:name=>"index_project_features_on_project_id", :using=>:btree}) -> 0.0069s -- create_table("project_group_links", {:force=>:cascade}) -> 0.0117s -- add_index("project_group_links", ["group_id"], {:name=>"index_project_group_links_on_group_id", :using=>:btree}) -> 0.0121s -- add_index("project_group_links", ["project_id"], {:name=>"index_project_group_links_on_project_id", :using=>:btree}) -> 0.0076s -- create_table("project_import_data", {:force=>:cascade}) -> 0.0084s -- add_index("project_import_data", ["project_id"], {:name=>"index_project_import_data_on_project_id", :using=>:btree}) -> 0.0058s -- create_table("project_statistics", {:force=>:cascade}) -> 0.0075s -- add_index("project_statistics", ["namespace_id"], {:name=>"index_project_statistics_on_namespace_id", :using=>:btree}) -> 0.0054s -- add_index("project_statistics", ["project_id"], {:name=>"index_project_statistics_on_project_id", :unique=>true, :using=>:btree}) -> 0.0054s -- create_table("projects", {:force=>:cascade}) -> 0.0077s -- add_index("projects", ["ci_id"], {:name=>"index_projects_on_ci_id", :using=>:btree}) -> 0.0070s -- add_index("projects", ["created_at"], {:name=>"index_projects_on_created_at", :using=>:btree}) -> 0.0060s -- add_index("projects", ["creator_id"], {:name=>"index_projects_on_creator_id", :using=>:btree}) -> 0.0071s -- add_index("projects", ["description"], {:name=>"index_projects_on_description_trigram", :using=>:gin, :opclasses=>{"description"=>"gin_trgm_ops"}}) -> 0.0009s -- add_index("projects", ["id"], {:name=>"index_projects_on_id_partial_for_visibility", :unique=>true, :where=>"(visibility_level = ANY (ARRAY[10, 20]))", :using=>:btree}) -> 0.0062s -- add_index("projects", ["last_activity_at"], {:name=>"index_projects_on_last_activity_at", :using=>:btree}) -> 0.0060s -- add_index("projects", ["last_repository_check_failed"], {:name=>"index_projects_on_last_repository_check_failed", :using=>:btree}) -> 0.0063s -- add_index("projects", ["last_repository_updated_at"], {:name=>"index_projects_on_last_repository_updated_at", :using=>:btree}) -> 0.0633s -- add_index("projects", ["name"], {:name=>"index_projects_on_name_trigram", :using=>:gin, :opclasses=>{"name"=>"gin_trgm_ops"}}) -> 0.0012s -- add_index("projects", ["namespace_id"], {:name=>"index_projects_on_namespace_id", :using=>:btree}) -> 0.0167s -- add_index("projects", ["path"], {:name=>"index_projects_on_path", :using=>:btree}) -> 0.0222s -- add_index("projects", ["path"], {:name=>"index_projects_on_path_trigram", :using=>:gin, :opclasses=>{"path"=>"gin_trgm_ops"}}) -> 0.0010s -- add_index("projects", ["pending_delete"], {:name=>"index_projects_on_pending_delete", :using=>:btree}) -> 0.0229s -- add_index("projects", ["repository_storage"], {:name=>"index_projects_on_repository_storage", :using=>:btree}) -> 0.0173s -- add_index("projects", ["runners_token"], {:name=>"index_projects_on_runners_token", :using=>:btree}) -> 0.0167s -- add_index("projects", ["star_count"], {:name=>"index_projects_on_star_count", :using=>:btree}) -> 0.0491s -- add_index("projects", ["visibility_level"], {:name=>"index_projects_on_visibility_level", :using=>:btree}) -> 0.0598s -- create_table("protected_branch_merge_access_levels", {:force=>:cascade}) -> 0.1964s -- add_index("protected_branch_merge_access_levels", ["protected_branch_id"], {:name=>"index_protected_branch_merge_access", :using=>:btree}) -> 0.1112s -- create_table("protected_branch_push_access_levels", {:force=>:cascade}) -> 0.0195s -- add_index("protected_branch_push_access_levels", ["protected_branch_id"], {:name=>"index_protected_branch_push_access", :using=>:btree}) -> 0.0069s -- create_table("protected_branches", {:force=>:cascade}) -> 0.0113s -- add_index("protected_branches", ["project_id"], {:name=>"index_protected_branches_on_project_id", :using=>:btree}) -> 0.0071s -- create_table("protected_tag_create_access_levels", {:force=>:cascade}) -> 0.0180s -- add_index("protected_tag_create_access_levels", ["protected_tag_id"], {:name=>"index_protected_tag_create_access", :using=>:btree}) -> 0.0068s -- add_index("protected_tag_create_access_levels", ["user_id"], {:name=>"index_protected_tag_create_access_levels_on_user_id", :using=>:btree}) -> 0.0077s -- create_table("protected_tags", {:force=>:cascade}) -> 0.0115s -- add_index("protected_tags", ["project_id"], {:name=>"index_protected_tags_on_project_id", :using=>:btree}) -> 0.0081s -- create_table("push_event_payloads", {:id=>false, :force=>:cascade}) -> 0.0108s -- add_index("push_event_payloads", ["event_id"], {:name=>"index_push_event_payloads_on_event_id", :unique=>true, :using=>:btree}) -> 0.0189s -- create_table("redirect_routes", {:force=>:cascade}) -> 0.0106s -- add_index("redirect_routes", ["path"], {:name=>"index_redirect_routes_on_path", :unique=>true, :using=>:btree}) -> 0.0075s -- add_index("redirect_routes", ["source_type", "source_id"], {:name=>"index_redirect_routes_on_source_type_and_source_id", :using=>:btree}) -> 0.0099s -- create_table("releases", {:force=>:cascade}) -> 0.0126s -- add_index("releases", ["project_id", "tag"], {:name=>"index_releases_on_project_id_and_tag", :using=>:btree}) -> 0.0066s -- add_index("releases", ["project_id"], {:name=>"index_releases_on_project_id", :using=>:btree}) -> 0.0060s -- create_table("routes", {:force=>:cascade}) -> 0.0091s -- add_index("routes", ["path"], {:name=>"index_routes_on_path", :unique=>true, :using=>:btree}) -> 0.0073s -- add_index("routes", ["path"], {:name=>"index_routes_on_path_text_pattern_ops", :using=>:btree, :opclasses=>{"path"=>"varchar_pattern_ops"}}) -> 0.0004s -- add_index("routes", ["source_type", "source_id"], {:name=>"index_routes_on_source_type_and_source_id", :unique=>true, :using=>:btree}) -> 0.0111s -- create_table("sent_notifications", {:force=>:cascade}) -> 0.0093s -- add_index("sent_notifications", ["reply_key"], {:name=>"index_sent_notifications_on_reply_key", :unique=>true, :using=>:btree}) -> 0.0060s -- create_table("services", {:force=>:cascade}) -> 0.0099s -- add_index("services", ["project_id"], {:name=>"index_services_on_project_id", :using=>:btree}) -> 0.0068s -- add_index("services", ["template"], {:name=>"index_services_on_template", :using=>:btree}) -> 0.0076s -- create_table("snippets", {:force=>:cascade}) -> 0.0073s -- add_index("snippets", ["author_id"], {:name=>"index_snippets_on_author_id", :using=>:btree}) -> 0.0055s -- add_index("snippets", ["file_name"], {:name=>"index_snippets_on_file_name_trigram", :using=>:gin, :opclasses=>{"file_name"=>"gin_trgm_ops"}}) -> 0.0006s -- add_index("snippets", ["project_id"], {:name=>"index_snippets_on_project_id", :using=>:btree}) -> 0.0058s -- add_index("snippets", ["title"], {:name=>"index_snippets_on_title_trigram", :using=>:gin, :opclasses=>{"title"=>"gin_trgm_ops"}}) -> 0.0005s -- add_index("snippets", ["updated_at"], {:name=>"index_snippets_on_updated_at", :using=>:btree}) -> 0.0100s -- add_index("snippets", ["visibility_level"], {:name=>"index_snippets_on_visibility_level", :using=>:btree}) -> 0.0091s -- create_table("spam_logs", {:force=>:cascade}) -> 0.0129s -- create_table("subscriptions", {:force=>:cascade}) -> 0.0094s -- 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}) -> 0.0107s -- create_table("system_note_metadata", {:force=>:cascade}) -> 0.0138s -- add_index("system_note_metadata", ["note_id"], {:name=>"index_system_note_metadata_on_note_id", :unique=>true, :using=>:btree}) -> 0.0060s -- create_table("taggings", {:force=>:cascade}) -> 0.0121s -- add_index("taggings", ["tag_id", "taggable_id", "taggable_type", "context", "tagger_id", "tagger_type"], {:name=>"taggings_idx", :unique=>true, :using=>:btree}) -> 0.0078s -- add_index("taggings", ["tag_id"], {:name=>"index_taggings_on_tag_id", :using=>:btree}) -> 0.0058s -- add_index("taggings", ["taggable_id", "taggable_type", "context"], {:name=>"index_taggings_on_taggable_id_and_taggable_type_and_context", :using=>:btree}) -> 0.0059s -- add_index("taggings", ["taggable_id", "taggable_type"], {:name=>"index_taggings_on_taggable_id_and_taggable_type", :using=>:btree}) -> 0.0056s -- create_table("tags", {:force=>:cascade}) -> 0.0063s -- add_index("tags", ["name"], {:name=>"index_tags_on_name", :unique=>true, :using=>:btree}) -> 0.0055s -- create_table("timelogs", {:force=>:cascade}) -> 0.0061s -- add_index("timelogs", ["issue_id"], {:name=>"index_timelogs_on_issue_id", :using=>:btree}) -> 0.0063s -- add_index("timelogs", ["merge_request_id"], {:name=>"index_timelogs_on_merge_request_id", :using=>:btree}) -> 0.0052s -- add_index("timelogs", ["user_id"], {:name=>"index_timelogs_on_user_id", :using=>:btree}) -> 0.0055s -- create_table("todos", {:force=>:cascade}) -> 0.0065s -- add_index("todos", ["author_id"], {:name=>"index_todos_on_author_id", :using=>:btree}) -> 0.0081s -- add_index("todos", ["commit_id"], {:name=>"index_todos_on_commit_id", :using=>:btree}) -> 0.0085s -- add_index("todos", ["note_id"], {:name=>"index_todos_on_note_id", :using=>:btree}) -> 0.0083s -- add_index("todos", ["project_id"], {:name=>"index_todos_on_project_id", :using=>:btree}) -> 0.0094s -- add_index("todos", ["target_type", "target_id"], {:name=>"index_todos_on_target_type_and_target_id", :using=>:btree}) -> 0.0070s -- add_index("todos", ["user_id", "id"], {:name=>"index_todos_on_user_id_and_id_done", :where=>"((state)::text = 'done'::text)", :using=>:btree}) -> 0.0099s -- add_index("todos", ["user_id", "id"], {:name=>"index_todos_on_user_id_and_id_pending", :where=>"((state)::text = 'pending'::text)", :using=>:btree}) -> 0.0080s -- add_index("todos", ["user_id"], {:name=>"index_todos_on_user_id", :using=>:btree}) -> 0.0061s -- create_table("trending_projects", {:force=>:cascade}) -> 0.0081s -- add_index("trending_projects", ["project_id"], {:name=>"index_trending_projects_on_project_id", :unique=>true, :using=>:btree}) -> 0.0046s -- create_table("u2f_registrations", {:force=>:cascade}) -> 0.0063s -- add_index("u2f_registrations", ["key_handle"], {:name=>"index_u2f_registrations_on_key_handle", :using=>:btree}) -> 0.0052s -- add_index("u2f_registrations", ["user_id"], {:name=>"index_u2f_registrations_on_user_id", :using=>:btree}) -> 0.0072s -- create_table("uploads", {:force=>:cascade}) -> 0.0067s -- add_index("uploads", ["checksum"], {:name=>"index_uploads_on_checksum", :using=>:btree}) -> 0.0046s -- add_index("uploads", ["model_id", "model_type"], {:name=>"index_uploads_on_model_id_and_model_type", :using=>:btree}) -> 0.0049s -- add_index("uploads", ["uploader", "path"], {:name=>"index_uploads_on_uploader_and_path", :using=>:btree}) -> 0.0052s -- create_table("user_agent_details", {:force=>:cascade}) -> 0.0059s -- add_index("user_agent_details", ["subject_id", "subject_type"], {:name=>"index_user_agent_details_on_subject_id_and_subject_type", :using=>:btree}) -> 0.0052s -- create_table("user_callouts", {:force=>:cascade}) -> 0.0059s -- add_index("user_callouts", ["user_id", "feature_name"], {:name=>"index_user_callouts_on_user_id_and_feature_name", :unique=>true, :using=>:btree}) -> 0.0094s -- add_index("user_callouts", ["user_id"], {:name=>"index_user_callouts_on_user_id", :using=>:btree}) -> 0.0064s -- create_table("user_custom_attributes", {:force=>:cascade}) -> 0.0086s -- add_index("user_custom_attributes", ["key", "value"], {:name=>"index_user_custom_attributes_on_key_and_value", :using=>:btree}) -> 0.0080s -- add_index("user_custom_attributes", ["user_id", "key"], {:name=>"index_user_custom_attributes_on_user_id_and_key", :unique=>true, :using=>:btree}) -> 0.0066s -- create_table("user_interacted_projects", {:id=>false, :force=>:cascade}) -> 0.0108s -- add_index("user_interacted_projects", ["project_id", "user_id"], {:name=>"index_user_interacted_projects_on_project_id_and_user_id", :unique=>true, :using=>:btree}) -> 0.0114s -- add_index("user_interacted_projects", ["user_id"], {:name=>"index_user_interacted_projects_on_user_id", :using=>:btree}) -> 0.0056s -- create_table("user_synced_attributes_metadata", {:force=>:cascade}) -> 0.0115s -- add_index("user_synced_attributes_metadata", ["user_id"], {:name=>"index_user_synced_attributes_metadata_on_user_id", :unique=>true, :using=>:btree}) -> 0.0054s -- create_table("users", {:force=>:cascade}) -> 0.0111s -- add_index("users", ["admin"], {:name=>"index_users_on_admin", :using=>:btree}) -> 0.0065s -- add_index("users", ["confirmation_token"], {:name=>"index_users_on_confirmation_token", :unique=>true, :using=>:btree}) -> 0.0065s -- add_index("users", ["created_at"], {:name=>"index_users_on_created_at", :using=>:btree}) -> 0.0068s -- add_index("users", ["email"], {:name=>"index_users_on_email", :unique=>true, :using=>:btree}) -> 0.0066s -- add_index("users", ["email"], {:name=>"index_users_on_email_trigram", :using=>:gin, :opclasses=>{"email"=>"gin_trgm_ops"}}) -> 0.0011s -- add_index("users", ["ghost"], {:name=>"index_users_on_ghost", :using=>:btree}) -> 0.0063s -- add_index("users", ["incoming_email_token"], {:name=>"index_users_on_incoming_email_token", :using=>:btree}) -> 0.0057s -- add_index("users", ["name"], {:name=>"index_users_on_name", :using=>:btree}) -> 0.0056s -- add_index("users", ["name"], {:name=>"index_users_on_name_trigram", :using=>:gin, :opclasses=>{"name"=>"gin_trgm_ops"}}) -> 0.0011s -- add_index("users", ["reset_password_token"], {:name=>"index_users_on_reset_password_token", :unique=>true, :using=>:btree}) -> 0.0055s -- add_index("users", ["rss_token"], {:name=>"index_users_on_rss_token", :using=>:btree}) -> 0.0068s -- add_index("users", ["state"], {:name=>"index_users_on_state", :using=>:btree}) -> 0.0067s -- add_index("users", ["username"], {:name=>"index_users_on_username", :using=>:btree}) -> 0.0072s -- add_index("users", ["username"], {:name=>"index_users_on_username_trigram", :using=>:gin, :opclasses=>{"username"=>"gin_trgm_ops"}}) -> 0.0012s -- create_table("users_star_projects", {:force=>:cascade}) -> 0.0100s -- add_index("users_star_projects", ["project_id"], {:name=>"index_users_star_projects_on_project_id", :using=>:btree}) -> 0.0061s -- add_index("users_star_projects", ["user_id", "project_id"], {:name=>"index_users_star_projects_on_user_id_and_project_id", :unique=>true, :using=>:btree}) -> 0.0068s -- create_table("web_hook_logs", {:force=>:cascade}) -> 0.0097s -- add_index("web_hook_logs", ["web_hook_id"], {:name=>"index_web_hook_logs_on_web_hook_id", :using=>:btree}) -> 0.0057s -- create_table("web_hooks", {:force=>:cascade}) -> 0.0080s -- add_index("web_hooks", ["project_id"], {:name=>"index_web_hooks_on_project_id", :using=>:btree}) -> 0.0062s -- add_index("web_hooks", ["type"], {:name=>"index_web_hooks_on_type", :using=>:btree}) -> 0.0065s -- add_foreign_key("badges", "namespaces", {:column=>"group_id", :on_delete=>:cascade}) -> 0.0158s -- add_foreign_key("badges", "projects", {:on_delete=>:cascade}) -> 0.0140s -- add_foreign_key("boards", "namespaces", {:column=>"group_id", :on_delete=>:cascade}) -> 0.0138s -- add_foreign_key("boards", "projects", {:name=>"fk_f15266b5f9", :on_delete=>:cascade}) -> 0.0118s -- add_foreign_key("chat_teams", "namespaces", {:on_delete=>:cascade}) -> 0.0130s -- add_foreign_key("ci_build_trace_section_names", "projects", {:on_delete=>:cascade}) -> 0.0131s -- add_foreign_key("ci_build_trace_sections", "ci_build_trace_section_names", {:column=>"section_name_id", :name=>"fk_264e112c66", :on_delete=>:cascade}) -> 0.0210s -- add_foreign_key("ci_build_trace_sections", "ci_builds", {:column=>"build_id", :name=>"fk_4ebe41f502", :on_delete=>:cascade}) -> 0.0823s -- add_foreign_key("ci_build_trace_sections", "projects", {:on_delete=>:cascade}) -> 0.0942s -- add_foreign_key("ci_builds", "ci_pipelines", {:column=>"auto_canceled_by_id", :name=>"fk_a2141b1522", :on_delete=>:nullify}) -> 0.1346s -- add_foreign_key("ci_builds", "ci_stages", {:column=>"stage_id", :name=>"fk_3a9eaa254d", :on_delete=>:cascade}) -> 0.0506s -- add_foreign_key("ci_builds", "projects", {:name=>"fk_befce0568a", :on_delete=>:cascade}) -> 0.0403s -- add_foreign_key("ci_builds_metadata", "ci_builds", {:column=>"build_id", :on_delete=>:cascade}) -> 0.0160s -- add_foreign_key("ci_builds_metadata", "projects", {:on_delete=>:cascade}) -> 0.0165s -- add_foreign_key("ci_group_variables", "namespaces", {:column=>"group_id", :name=>"fk_33ae4d58d8", :on_delete=>:cascade}) -> 0.0153s -- add_foreign_key("ci_job_artifacts", "ci_builds", {:column=>"job_id", :on_delete=>:cascade}) -> 0.0160s -- add_foreign_key("ci_job_artifacts", "projects", {:on_delete=>:cascade}) -> 0.0278s -- add_foreign_key("ci_pipeline_schedule_variables", "ci_pipeline_schedules", {:column=>"pipeline_schedule_id", :name=>"fk_41c35fda51", :on_delete=>:cascade}) -> 0.0193s -- add_foreign_key("ci_pipeline_schedules", "projects", {:name=>"fk_8ead60fcc4", :on_delete=>:cascade}) -> 0.0184s -- add_foreign_key("ci_pipeline_schedules", "users", {:column=>"owner_id", :name=>"fk_9ea99f58d2", :on_delete=>:nullify}) -> 0.0158s -- add_foreign_key("ci_pipeline_variables", "ci_pipelines", {:column=>"pipeline_id", :name=>"fk_f29c5f4380", :on_delete=>:cascade}) -> 0.0097s -- add_foreign_key("ci_pipelines", "ci_pipeline_schedules", {:column=>"pipeline_schedule_id", :name=>"fk_3d34ab2e06", :on_delete=>:nullify}) -> 0.0693s -- add_foreign_key("ci_pipelines", "ci_pipelines", {:column=>"auto_canceled_by_id", :name=>"fk_262d4c2d19", :on_delete=>:nullify}) -> 0.1599s -- add_foreign_key("ci_pipelines", "projects", {:name=>"fk_86635dbd80", :on_delete=>:cascade}) -> 0.1505s -- add_foreign_key("ci_runner_projects", "projects", {:name=>"fk_4478a6f1e4", :on_delete=>:cascade}) -> 0.0984s -- add_foreign_key("ci_stages", "ci_pipelines", {:column=>"pipeline_id", :name=>"fk_fb57e6cc56", :on_delete=>:cascade}) -> 0.1152s -- add_foreign_key("ci_stages", "projects", {:name=>"fk_2360681d1d", :on_delete=>:cascade}) -> 0.1062s -- add_foreign_key("ci_trigger_requests", "ci_triggers", {:column=>"trigger_id", :name=>"fk_b8ec8b7245", :on_delete=>:cascade}) -> 0.0455s -- add_foreign_key("ci_triggers", "projects", {:name=>"fk_e3e63f966e", :on_delete=>:cascade}) -> 0.0725s -- add_foreign_key("ci_triggers", "users", {:column=>"owner_id", :name=>"fk_e8e10d1964", :on_delete=>:cascade}) -> 0.0774s -- add_foreign_key("ci_variables", "projects", {:name=>"fk_ada5eb64b3", :on_delete=>:cascade}) -> 0.0626s -- add_foreign_key("cluster_platforms_kubernetes", "clusters", {:on_delete=>:cascade}) -> 0.0529s -- add_foreign_key("cluster_projects", "clusters", {:on_delete=>:cascade}) -> 0.0678s -- add_foreign_key("cluster_projects", "projects", {:on_delete=>:cascade}) -> 0.0391s -- add_foreign_key("cluster_providers_gcp", "clusters", {:on_delete=>:cascade}) -> 0.0328s -- add_foreign_key("clusters", "users", {:on_delete=>:nullify}) -> 0.1266s -- add_foreign_key("clusters_applications_helm", "clusters", {:on_delete=>:cascade}) -> 0.0489s -- add_foreign_key("clusters_applications_ingress", "clusters", {:name=>"fk_753a7b41c1", :on_delete=>:cascade}) -> 0.0565s -- add_foreign_key("clusters_applications_prometheus", "clusters", {:name=>"fk_557e773639", :on_delete=>:cascade}) -> 0.0174s -- add_foreign_key("clusters_applications_runners", "ci_runners", {:column=>"runner_id", :name=>"fk_02de2ded36", :on_delete=>:nullify}) -> 0.0182s -- add_foreign_key("clusters_applications_runners", "clusters", {:on_delete=>:cascade}) -> 0.0208s -- add_foreign_key("container_repositories", "projects") -> 0.0186s -- add_foreign_key("deploy_keys_projects", "projects", {:name=>"fk_58a901ca7e", :on_delete=>:cascade}) -> 0.0140s -- add_foreign_key("deployments", "projects", {:name=>"fk_b9a3851b82", :on_delete=>:cascade}) -> 0.0328s -- add_foreign_key("environments", "projects", {:name=>"fk_d1c8c1da6a", :on_delete=>:cascade}) -> 0.0221s -- add_foreign_key("events", "projects", {:on_delete=>:cascade}) -> 0.0212s -- add_foreign_key("events", "users", {:column=>"author_id", :name=>"fk_edfd187b6f", :on_delete=>:cascade}) -> 0.0150s -- add_foreign_key("fork_network_members", "fork_networks", {:on_delete=>:cascade}) -> 0.0134s -- add_foreign_key("fork_network_members", "projects", {:column=>"forked_from_project_id", :name=>"fk_b01280dae4", :on_delete=>:nullify}) -> 0.0200s -- add_foreign_key("fork_network_members", "projects", {:on_delete=>:cascade}) -> 0.0162s -- add_foreign_key("fork_networks", "projects", {:column=>"root_project_id", :name=>"fk_e7b436b2b5", :on_delete=>:nullify}) -> 0.0138s -- add_foreign_key("forked_project_links", "projects", {:column=>"forked_to_project_id", :name=>"fk_434510edb0", :on_delete=>:cascade}) -> 0.0137s -- add_foreign_key("gcp_clusters", "projects", {:on_delete=>:cascade}) -> 0.0148s -- add_foreign_key("gcp_clusters", "services", {:on_delete=>:nullify}) -> 0.0216s -- add_foreign_key("gcp_clusters", "users", {:on_delete=>:nullify}) -> 0.0156s -- add_foreign_key("gpg_key_subkeys", "gpg_keys", {:on_delete=>:cascade}) -> 0.0139s -- add_foreign_key("gpg_keys", "users", {:on_delete=>:cascade}) -> 0.0142s -- add_foreign_key("gpg_signatures", "gpg_key_subkeys", {:on_delete=>:nullify}) -> 0.0216s -- add_foreign_key("gpg_signatures", "gpg_keys", {:on_delete=>:nullify}) -> 0.0211s -- add_foreign_key("gpg_signatures", "projects", {:on_delete=>:cascade}) -> 0.0215s -- add_foreign_key("group_custom_attributes", "namespaces", {:column=>"group_id", :on_delete=>:cascade}) -> 0.0174s -- add_foreign_key("internal_ids", "projects", {:on_delete=>:cascade}) -> 0.0143s -- add_foreign_key("issue_assignees", "issues", {:name=>"fk_b7d881734a", :on_delete=>:cascade}) -> 0.0139s -- add_foreign_key("issue_assignees", "users", {:name=>"fk_5e0c8d9154", :on_delete=>:cascade}) -> 0.0138s -- add_foreign_key("issue_metrics", "issues", {:on_delete=>:cascade}) -> 0.0106s -- add_foreign_key("issues", "issues", {:column=>"moved_to_id", :name=>"fk_a194299be1", :on_delete=>:nullify}) -> 0.0366s -- add_foreign_key("issues", "milestones", {:name=>"fk_96b1dd429c", :on_delete=>:nullify}) -> 0.0309s -- add_foreign_key("issues", "projects", {:name=>"fk_899c8f3231", :on_delete=>:cascade}) -> 0.0314s -- add_foreign_key("issues", "users", {:column=>"author_id", :name=>"fk_05f1e72feb", :on_delete=>:nullify}) -> 0.0504s -- add_foreign_key("issues", "users", {:column=>"closed_by_id", :name=>"fk_c63cbf6c25", :on_delete=>:nullify}) -> 0.0428s -- add_foreign_key("issues", "users", {:column=>"updated_by_id", :name=>"fk_ffed080f01", :on_delete=>:nullify}) -> 0.0333s -- add_foreign_key("label_priorities", "labels", {:on_delete=>:cascade}) -> 0.0143s -- add_foreign_key("label_priorities", "projects", {:on_delete=>:cascade}) -> 0.0160s -- add_foreign_key("labels", "namespaces", {:column=>"group_id", :on_delete=>:cascade}) -> 0.0176s -- add_foreign_key("labels", "projects", {:name=>"fk_7de4989a69", :on_delete=>:cascade}) -> 0.0216s -- add_foreign_key("lfs_file_locks", "projects", {:on_delete=>:cascade}) -> 0.0144s -- add_foreign_key("lfs_file_locks", "users", {:on_delete=>:cascade}) -> 0.0178s -- add_foreign_key("lists", "boards", {:name=>"fk_0d3f677137", :on_delete=>:cascade}) -> 0.0161s -- add_foreign_key("lists", "labels", {:name=>"fk_7a5553d60f", :on_delete=>:cascade}) -> 0.0137s -- add_foreign_key("members", "users", {:name=>"fk_2e88fb7ce9", :on_delete=>:cascade}) -> 0.0171s -- add_foreign_key("merge_request_diff_commits", "merge_request_diffs", {:on_delete=>:cascade}) -> 0.0143s -- add_foreign_key("merge_request_diff_files", "merge_request_diffs", {:on_delete=>:cascade}) -> 0.0106s -- add_foreign_key("merge_request_diffs", "merge_requests", {:name=>"fk_8483f3258f", :on_delete=>:cascade}) -> 0.0119s -- add_foreign_key("merge_request_metrics", "ci_pipelines", {:column=>"pipeline_id", :on_delete=>:cascade}) -> 0.0163s -- add_foreign_key("merge_request_metrics", "merge_requests", {:on_delete=>:cascade}) -> 0.0204s -- add_foreign_key("merge_request_metrics", "users", {:column=>"latest_closed_by_id", :name=>"fk_ae440388cc", :on_delete=>:nullify}) -> 0.0196s -- add_foreign_key("merge_request_metrics", "users", {:column=>"merged_by_id", :name=>"fk_7f28d925f3", :on_delete=>:nullify}) -> 0.0202s -- add_foreign_key("merge_requests", "ci_pipelines", {:column=>"head_pipeline_id", :name=>"fk_fd82eae0b9", :on_delete=>:nullify}) -> 0.0394s -- add_foreign_key("merge_requests", "merge_request_diffs", {:column=>"latest_merge_request_diff_id", :name=>"fk_06067f5644", :on_delete=>:nullify}) -> 0.0532s -- add_foreign_key("merge_requests", "milestones", {:name=>"fk_6a5165a692", :on_delete=>:nullify}) -> 0.0291s -- add_foreign_key("merge_requests", "projects", {:column=>"source_project_id", :name=>"fk_3308fe130c", :on_delete=>:nullify}) -> 0.0278s -- add_foreign_key("merge_requests", "projects", {:column=>"target_project_id", :name=>"fk_a6963e8447", :on_delete=>:cascade}) -> 0.0367s -- add_foreign_key("merge_requests", "users", {:column=>"assignee_id", :name=>"fk_6149611a04", :on_delete=>:nullify}) -> 0.0327s -- add_foreign_key("merge_requests", "users", {:column=>"author_id", :name=>"fk_e719a85f8a", :on_delete=>:nullify}) -> 0.0337s -- add_foreign_key("merge_requests", "users", {:column=>"merge_user_id", :name=>"fk_ad525e1f87", :on_delete=>:nullify}) -> 0.0517s -- add_foreign_key("merge_requests", "users", {:column=>"updated_by_id", :name=>"fk_641731faff", :on_delete=>:nullify}) -> 0.0335s -- add_foreign_key("merge_requests_closing_issues", "issues", {:on_delete=>:cascade}) -> 0.0167s -- add_foreign_key("merge_requests_closing_issues", "merge_requests", {:on_delete=>:cascade}) -> 0.0191s -- add_foreign_key("milestones", "namespaces", {:column=>"group_id", :name=>"fk_95650a40d4", :on_delete=>:cascade}) -> 0.0206s -- add_foreign_key("milestones", "projects", {:name=>"fk_9bd0a0c791", :on_delete=>:cascade}) -> 0.0221s -- add_foreign_key("notes", "projects", {:name=>"fk_99e097b079", :on_delete=>:cascade}) -> 0.0332s -- add_foreign_key("oauth_openid_requests", "oauth_access_grants", {:column=>"access_grant_id", :name=>"fk_oauth_openid_requests_oauth_access_grants_access_grant_id"}) -> 0.0128s -- add_foreign_key("pages_domains", "projects", {:name=>"fk_ea2f6dfc6f", :on_delete=>:cascade}) -> 0.0220s -- add_foreign_key("personal_access_tokens", "users") -> 0.0187s -- add_foreign_key("project_authorizations", "projects", {:on_delete=>:cascade}) -> 0.0149s -- add_foreign_key("project_authorizations", "users", {:on_delete=>:cascade}) -> 0.0167s -- add_foreign_key("project_auto_devops", "projects", {:on_delete=>:cascade}) -> 0.0142s -- add_foreign_key("project_custom_attributes", "projects", {:on_delete=>:cascade}) -> 0.0218s -- add_foreign_key("project_features", "projects", {:name=>"fk_18513d9b92", :on_delete=>:cascade}) -> 0.0204s -- add_foreign_key("project_group_links", "projects", {:name=>"fk_daa8cee94c", :on_delete=>:cascade}) -> 0.0174s -- add_foreign_key("project_import_data", "projects", {:name=>"fk_ffb9ee3a10", :on_delete=>:cascade}) -> 0.0138s -- add_foreign_key("project_statistics", "projects", {:on_delete=>:cascade}) -> 0.0125s -- add_foreign_key("protected_branch_merge_access_levels", "protected_branches", {:name=>"fk_8a3072ccb3", :on_delete=>:cascade}) -> 0.0157s -- add_foreign_key("protected_branch_push_access_levels", "protected_branches", {:name=>"fk_9ffc86a3d9", :on_delete=>:cascade}) -> 0.0112s -- add_foreign_key("protected_branches", "projects", {:name=>"fk_7a9c6d93e7", :on_delete=>:cascade}) -> 0.0122s -- add_foreign_key("protected_tag_create_access_levels", "namespaces", {:column=>"group_id"}) -> 0.0131s -- add_foreign_key("protected_tag_create_access_levels", "protected_tags", {:name=>"fk_f7dfda8c51", :on_delete=>:cascade}) -> 0.0168s -- add_foreign_key("protected_tag_create_access_levels", "users") -> 0.0221s -- add_foreign_key("protected_tags", "projects", {:name=>"fk_8e4af87648", :on_delete=>:cascade}) -> 0.0135s -- add_foreign_key("push_event_payloads", "events", {:name=>"fk_36c74129da", :on_delete=>:cascade}) -> 0.0107s -- add_foreign_key("releases", "projects", {:name=>"fk_47fe2a0596", :on_delete=>:cascade}) -> 0.0131s -- add_foreign_key("services", "projects", {:name=>"fk_71cce407f9", :on_delete=>:cascade}) -> 0.0142s -- add_foreign_key("snippets", "projects", {:name=>"fk_be41fd4bb7", :on_delete=>:cascade}) -> 0.0178s -- add_foreign_key("subscriptions", "projects", {:on_delete=>:cascade}) -> 0.0160s -- add_foreign_key("system_note_metadata", "notes", {:name=>"fk_d83a918cb1", :on_delete=>:cascade}) -> 0.0156s -- add_foreign_key("timelogs", "issues", {:name=>"fk_timelogs_issues_issue_id", :on_delete=>:cascade}) -> 0.0183s -- add_foreign_key("timelogs", "merge_requests", {:name=>"fk_timelogs_merge_requests_merge_request_id", :on_delete=>:cascade}) -> 0.0198s -- add_foreign_key("todos", "notes", {:name=>"fk_91d1f47b13", :on_delete=>:cascade}) -> 0.0276s -- add_foreign_key("todos", "projects", {:name=>"fk_45054f9c45", :on_delete=>:cascade}) -> 0.0175s -- add_foreign_key("todos", "users", {:column=>"author_id", :name=>"fk_ccf0373936", :on_delete=>:cascade}) -> 0.0182s -- add_foreign_key("todos", "users", {:name=>"fk_d94154aa95", :on_delete=>:cascade}) -> 0.0184s -- add_foreign_key("trending_projects", "projects", {:on_delete=>:cascade}) -> 0.0338s -- add_foreign_key("u2f_registrations", "users") -> 0.0176s -- add_foreign_key("user_callouts", "users", {:on_delete=>:cascade}) -> 0.0160s -- add_foreign_key("user_custom_attributes", "users", {:on_delete=>:cascade}) -> 0.0191s -- add_foreign_key("user_interacted_projects", "projects", {:name=>"fk_722ceba4f7", :on_delete=>:cascade}) -> 0.0171s -- add_foreign_key("user_interacted_projects", "users", {:name=>"fk_0894651f08", :on_delete=>:cascade}) -> 0.0155s -- add_foreign_key("user_synced_attributes_metadata", "users", {:on_delete=>:cascade}) -> 0.0164s -- add_foreign_key("users_star_projects", "projects", {:name=>"fk_22cd27ddfc", :on_delete=>:cascade}) -> 0.0180s -- add_foreign_key("web_hook_logs", "web_hooks", {:on_delete=>:cascade}) -> 0.0164s -- add_foreign_key("web_hooks", "projects", {:name=>"fk_0c8ca6d9d1", :on_delete=>:cascade}) -> 0.0172s -- initialize_schema_migrations_table() -> 0.0212s Adding limits to schema.rb for mysql -- column_exists?(:merge_request_diffs, :st_commits) -> 0.0010s -- column_exists?(:merge_request_diffs, :st_diffs) -> 0.0006s -- change_column(:snippets, :content, :text, {:limit=>2147483647}) -> 0.0308s -- change_column(:notes, :st_diff, :text, {:limit=>2147483647}) -> 0.0366s -- change_column(:snippets, :content_html, :text, {:limit=>2147483647}) -> 0.0272s -- change_column(:merge_request_diff_files, :diff, :text, {:limit=>2147483647}) -> 0.0170s $ date Thu Apr 5 11:19:41 UTC 2018 $ JOB_NAME=( $CI_JOB_NAME ) $ export CI_NODE_INDEX=${JOB_NAME[-2]} $ export CI_NODE_TOTAL=${JOB_NAME[-1]} $ export KNAPSACK_REPORT_PATH=knapsack/${CI_PROJECT_NAME}/${JOB_NAME[0]}_node_${CI_NODE_INDEX}_${CI_NODE_TOTAL}_report.json $ export KNAPSACK_GENERATE_REPORT=true $ export SUITE_FLAKY_RSPEC_REPORT_PATH=${FLAKY_RSPEC_SUITE_REPORT_PATH} $ export FLAKY_RSPEC_REPORT_PATH=rspec_flaky/all_${JOB_NAME[0]}_${CI_NODE_INDEX}_${CI_NODE_TOTAL}_report.json $ export NEW_FLAKY_RSPEC_REPORT_PATH=rspec_flaky/new_${JOB_NAME[0]}_${CI_NODE_INDEX}_${CI_NODE_TOTAL}_report.json $ export FLAKY_RSPEC_GENERATE_REPORT=true $ export CACHE_CLASSES=true $ cp ${KNAPSACK_RSPEC_SUITE_REPORT_PATH} ${KNAPSACK_REPORT_PATH} $ [[ -f $FLAKY_RSPEC_REPORT_PATH ]] || echo "{}" > ${FLAKY_RSPEC_REPORT_PATH} $ [[ -f $NEW_FLAKY_RSPEC_REPORT_PATH ]] || echo "{}" > ${NEW_FLAKY_RSPEC_REPORT_PATH} $ scripts/gitaly-test-spawn 59 $ knapsack rspec "--color --format documentation" Report specs: spec/services/todo_service_spec.rb spec/lib/gitlab/import_export/project_tree_saver_spec.rb spec/lib/gitlab/background_migration/deserialize_merge_request_diffs_and_commits_spec.rb spec/controllers/projects/merge_requests_controller_spec.rb spec/controllers/groups_controller_spec.rb spec/features/projects/import_export/import_file_spec.rb spec/lib/gitlab/middleware/go_spec.rb spec/services/groups/transfer_service_spec.rb spec/features/projects/blobs/edit_spec.rb spec/services/boards/lists/move_service_spec.rb spec/services/create_deployment_service_spec.rb spec/controllers/groups/milestones_controller_spec.rb spec/helpers/groups_helper_spec.rb spec/requests/api/v3/todos_spec.rb spec/models/project_services/teamcity_service_spec.rb spec/lib/gitlab/conflict/file_spec.rb spec/lib/banzai/filter/snippet_reference_filter_spec.rb spec/finders/autocomplete_users_finder_spec.rb spec/models/service_spec.rb spec/services/test_hooks/project_service_spec.rb spec/features/projects/merge_requests/user_views_open_merge_request_spec.rb spec/finders/runner_jobs_finder_spec.rb spec/features/projects/snippets_spec.rb spec/requests/api/v3/environments_spec.rb spec/requests/api/namespaces_spec.rb spec/services/merge_requests/get_urls_service_spec.rb spec/models/lfs_file_lock_spec.rb spec/lib/gitlab/ci/config/entry/boolean_spec.rb Leftover specs: Knapsack report generator started! ==> Setting up GitLab Shell... GitLab Shell setup in 0.307428917 seconds... ==> Setting up Gitaly... Gitaly setup in 0.000135767 seconds... TodoService updates cached counts when a todo is created Issues #new_issue creates a todo if assigned does not create a todo if unassigned creates a todo if assignee is the current user creates a todo for each valid mentioned user creates a directly addressed todo for each valid addressed user creates correct todos for each valid user based on the type of mention does not create todo if user can not see the issue when issue is confidential does not create directly addressed todo if user cannot see the issue when issue is confidential when a private group is mentioned creates a todo for group members #update_issue creates a todo for each valid mentioned user not included in skip_users creates a todo for each valid user not included in skip_users based on the type of mention creates a directly addressed todo for each valid addressed user not included in skip_users does not create a todo if user was already mentioned and todo is pending does not create a todo if user was already mentioned and todo is done does not create a directly addressed todo if user was already mentioned or addressed and todo is pending does not create a directly addressed todo if user was already mentioned or addressed and todo is done does not create todo if user can not see the issue when issue is confidential does not create a directly addressed todo if user can not see the issue when issue is confidential issues with a task list does not create todo when tasks are marked as completed does not create directly addressed todo when tasks are marked as completed does not raise an error when description not change #close_issue marks related pending todos to the target for the user as done #destroy_target refreshes the todos count cache for users with todos on the target does not refresh the todos count cache for users with only done todos on the target yields the target to the caller #reassigned_issue creates a pending todo for new assignee does not create a todo if unassigned creates a todo if new assignee is the current user #mark_pending_todos_as_done marks related pending todos to the target for the user as done cached counts updates when todos change #mark_todos_as_done behaves like updating todos state updates related todos for the user with the new_state returns the updated ids cached counts updates when todos change #mark_todos_as_done_by_ids behaves like updating todos state updates related todos for the user with the new_state returns the updated ids cached counts updates when todos change #mark_todos_as_pending behaves like updating todos state updates related todos for the user with the new_state returns the updated ids cached counts updates when todos change #mark_todos_as_pending_by_ids behaves like updating todos state updates related todos for the user with the new_state returns the updated ids cached counts updates when todos change #new_note mark related pending todos to the noteable for the note author as done does not mark related pending todos it is a system note creates a todo for each valid mentioned user creates a todo for each valid user based on the type of mention creates a directly addressed todo for each valid addressed user does not create todo if user can not see the issue when leaving a note on a confidential issue does not create a directly addressed todo if user can not see the issue when leaving a note on a confidential issue does not create todo when leaving a note on snippet on commit creates a todo for each valid mentioned user when leaving a note on commit creates a directly addressed todo for each valid mentioned user when leaving a note on commit #mark_todo creates a todo from a issue #todo_exists? returns false when no todo exist for the given issuable returns true when a todo exist for the given issuable Merge Requests #new_merge_request creates a pending todo if assigned does not create a todo if unassigned does not create a todo if assignee is the current user creates a todo for each valid mentioned user creates a todo for each valid user based on the type of mention creates a directly addressed todo for each valid addressed user #update_merge_request creates a todo for each valid mentioned user not included in skip_users creates a todo for each valid user not included in skip_users based on the type of mention creates a directly addressed todo for each valid addressed user not included in skip_users does not create a todo if user was already mentioned and todo is pending does not create a todo if user was already mentioned and todo is done does not create a directly addressed todo if user was already mentioned or addressed and todo is pending does not create a directly addressed todo if user was already mentioned or addressed and todo is done with a task list does not create todo when tasks are marked as completed does not create directly addressed todo when tasks are marked as completed does not raise an error when description not change #close_merge_request marks related pending todos to the target for the user as done #reassigned_merge_request creates a pending todo for new assignee does not create a todo if unassigned creates a todo if new assignee is the current user does not create a todo for guests does not create a directly addressed todo for guests #merge_merge_request marks related pending todos to the target for the user as done does not create todo for guests does not create directly addressed todo for guests #new_award_emoji marks related pending todos to the target for the user as done #merge_request_build_failed creates a pending todo for the merge request author creates a pending todo for merge_user #merge_request_push marks related pending todos to the target for the user as done #merge_request_became_unmergeable creates a pending todo for a merge_user #mark_todo creates a todo from a merge request #new_note creates a todo for mentioned user on new diff note creates a directly addressed todo for addressed user on new diff note creates a todo for mentioned user on legacy diff note does not create todo for guests #update_note creates a todo for each valid mentioned user not included in skip_users creates a todo for each valid user not included in skip_users based on the type of mention creates a directly addressed todo for each valid addressed user not included in skip_users does not create a todo if user was already mentioned and todo is pending does not create a todo if user was already mentioned and todo is done does not create a directly addressed todo if user was already mentioned or addressed and todo is pending does not create a directly addressed todo if user was already mentioned or addressed and todo is done #mark_todos_as_done marks a relation of todos as done marks an array of todos as done returns the ids of updated todos when some of the todos are done already returns the ids of those still pending returns an empty array if all are done #mark_todos_as_done_by_ids marks an array of todo ids as done marks a single todo id as done caches the number of todos of a user Gitlab::ImportExport::ProjectTreeSaver saves the project tree into a json object saves project successfully JSON saves the correct json has milestones has merge requests has merge request's milestones has merge request's source branch SHA has merge request's target branch SHA has events has snippets has snippet notes has releases has issues has issue comments has issue assignees has author on issue comments has project members has merge requests diffs has merge request diff files has merge request diff commits has merge requests comments has author on merge requests comments has pipeline stages has pipeline statuses has pipeline builds has no when YML attributes but only the DB column has pipeline commits has ci pipeline notes has labels with no associations has labels associated to records has project and group labels has priorities associated to labels saves the correct service type saves the properties for a service has project feature has custom attributes has badges does not complain about non UTF-8 characters in MR diff files with description override overrides the project description group members does not export group members if it has no permission does not export group members as maintainer exports group members as group owner as admin exports group members as admin exports group members as project members project attributes contains the html description does not contain the runners token Gitlab::BackgroundMigration::DeserializeMergeRequestDiffsAndCommits #perform when the diff IDs passed do not exist does not raise when the merge request diff has no serialised commits or diffs does not raise processing multiple merge request diffs when BUFFER_ROWS is exceeded inserts commit rows in chunks of BUFFER_ROWS inserts diff rows in chunks of DIFF_FILE_BUFFER_ROWS when BUFFER_ROWS is not exceeded only updates once when some rows were already inserted due to a previous failure does not raise logs a message ends up with the correct rows when the merge request diff update fails raises an error logs the error still adds diff commits still adds diff files when the merge request diff has valid commits and diffs creates correct entries in the merge_request_diff_commits table creates correct entries in the merge_request_diff_files table sets the st_commits and st_diffs columns to nil when the merge request diff has diffs but no commits creates correct entries in the merge_request_diff_commits table creates correct entries in the merge_request_diff_files table sets the st_commits and st_diffs columns to nil when the merge request diffs do not have too_large set creates correct entries in the merge_request_diff_commits table creates correct entries in the merge_request_diff_files table sets the st_commits and st_diffs columns to nil when the merge request diffs do not have a_mode and b_mode set creates correct entries in the merge_request_diff_commits table creates correct entries in the merge_request_diff_files table sets the st_commits and st_diffs columns to nil when the merge request diffs have binary content creates correct entries in the merge_request_diff_commits table creates correct entries in the merge_request_diff_files table sets the st_commits and st_diffs columns to nil when the merge request diff has commits, but no diffs creates correct entries in the merge_request_diff_commits table creates correct entries in the merge_request_diff_files table sets the st_commits and st_diffs columns to nil when the merge request diffs have invalid content creates correct entries in the merge_request_diff_commits table creates correct entries in the merge_request_diff_files table sets the st_commits and st_diffs columns to nil when the merge request diffs are Rugged::Patch instances creates correct entries in the merge_request_diff_commits table creates correct entries in the merge_request_diff_files table sets the st_commits and st_diffs columns to nil when the merge request diffs are Rugged::Diff::Delta instances creates correct entries in the merge_request_diff_commits table creates correct entries in the merge_request_diff_files table sets the st_commits and st_diffs columns to nil Projects::MergeRequestsController GET commit_change_content renders commit_change_content template GET show behaves like loads labels loads labels into the @labels variable as html renders merge request page loads notes with special_role FIRST_TIME_CONTRIBUTOR as json with basic serializer param renders basic MR entity as json with widget serializer param renders widget MR entity as json when no serialiser was passed renders widget MR entity as json as diff triggers workhorse to serve the request as patch triggers workhorse to serve the request GET index behaves like issuables list meta-data creates indexed meta-data object for issuable notes and votes count when given empty collection doesn't execute any queries with false conditions when page param redirects to last_page if page number is larger than number of pages redirects to specified page does not redirect to external sites when provided a host field when filtering by opened state with opened merge requests lists those merge requests with reopened merge requests lists those merge requests PUT update changing the assignee limits the attributes exposed on the assignee when user does not have access to update issue responds with 404 there is no source project closes MR without errors allows editing of a closed merge request does not allow to update target branch closed merge request behaves like update invalid issuable when updating causes conflicts renders edit when format is html renders json error message when format is json when updating an invalid issuable renders edit when merge request is invalid POST merge when user cannot access returns 404 when the merge request is not mergeable returns :failed when the sha parameter does not match the source SHA returns :sha_mismatch when the sha parameter matches the source SHA returns :success starts the merge immediately when the pipeline succeeds is passed returns :merge_when_pipeline_succeeds sets the MR to merge when the pipeline succeeds when project.only_allow_merge_if_pipeline_succeeds? is true returns :merge_when_pipeline_succeeds and head pipeline is not the current one returns :failed only_allow_merge_if_all_discussions_are_resolved? setting when enabled with unresolved discussion returns :failed with all discussions resolved returns :success when disabled with unresolved discussion returns :success with all discussions resolved returns :success DELETE destroy denies access to users unless they're admin or project owner when the user is owner deletes the merge request delegates the update of the todos count cache to TodoService GET commits renders the commits template to a string GET pipelines responds with serialized pipelines POST remove_wip removes the wip status renders MergeRequest as JSON POST cancel_merge_when_pipeline_succeeds calls MergeRequests::MergeWhenPipelineSucceedsService should respond with numeric status code success renders MergeRequest as JSON POST assign_related_issues shows a flash message on success correctly pluralizes flash message on success calls MergeRequests::AssignIssuesService is skipped when not signed in GET ci_environments_status the environment is from a forked project links to the environment on that project GET pipeline_status.json when head_pipeline exists return a detailed head_pipeline status in json when head_pipeline does not exist return empty POST #rebase successfully enqeues a RebaseWorker with a forked project user cannot push to source branch returns 404 user can push to source branch returns 200 GroupsController GET #show as html assigns whether or not a group has children as atom assigns events for all the projects in the group 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 (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example) and logged in as Owner behaves like member with ability to create subgroups renders the new page (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example) and logged in as Guest behaves like member without ability to create subgroups renders the 404 page (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example) and logged in as Developer behaves like member without ability to create subgroups renders the 404 page (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example) and logged in as Maintainer behaves like member without ability to create subgroups renders the 404 page (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example) and can_create_group is false and logged in as Admin behaves like member with ability to create subgroups renders the new page (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example) and logged in as Owner behaves like member with ability to create subgroups renders the new page (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example) and logged in as Guest behaves like member without ability to create subgroups renders the 404 page (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example) and logged in as Developer behaves like member without ability to create subgroups renders the 404 page (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example) and logged in as Maintainer behaves like member without ability to create subgroups renders the 404 page (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example) GET #activity as json includes all projects in event feed POST #create when creating subgroups and can_create_group is true and logged in as Owner creates the subgroup (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example) and logged in as Developer renders the new template (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example) and can_create_group is false and logged in as Owner creates the subgroup (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example) and logged in as Developer renders the new template (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example) when creating a top level group and can_create_group is enabled creates the Group and can_create_group is disabled does not create the Group GET #index as a user redirects to Groups Dashboard as a guest redirects to Explore Groups GET #issues sorting by votes sorts most popular issues sorts least popular issues GET #merge_requests sorting by votes sorts most popular merge requests sorts least popular merge requests DELETE #destroy as another user returns 404 as the group owner schedules a group destroy redirects to the root path PUT update updates the path successfully does not update the path on error #ensure_canonical_path for a GET request when requesting groups at the root path when requesting the canonical path with different casing redirects to the correct casing when requesting a redirected path redirects to the canonical path when the old group path is a substring of the scheme or host does not modify the requested host when the old group path is substring of groups does not modify the /groups part of the path when requesting groups under the /groups path when requesting the canonical path non-show path with exactly matching casing does not redirect with different casing redirects to the correct casing show path with exactly matching casing does not redirect with different casing redirects to the correct casing at the root path when requesting a redirected path redirects to the canonical path when the old group path is a substring of the scheme or host does not modify the requested host when the old group path is substring of groups does not modify the /groups part of the path when the old group path is substring of groups plus the new path does not modify the /groups part of the path for a POST request when requesting the canonical path with different casing does not 404 does not redirect to the correct casing when requesting a redirected path returns not found for a DELETE request when requesting the canonical path with different casing does not 404 does not redirect to the correct casing when requesting a redirected path returns not found PUT transfer when transfering to a subgroup goes right should return a notice (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) should redirect to the new path (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) when converting to a root group goes right should return a notice (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) should redirect to the new path (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) When the transfer goes wrong should return an alert (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) should redirect to the current path (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) when the user is not allowed to transfer the group should be denied (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) Import/Export - project import integration test Starting the Capybara driver server... invalid project when selecting the namespace prefilled the path user imports an exported project successfully path is not prefilled user imports an exported project successfully Gitlab::Middleware::Go #call when go-get=0 skips go-import generation when go-get=1 with SSH disabled with simple 2-segment project path with subpackages returns the full project path without subpackages returns the full project path with a nested project path with subpackages behaves like a nested project when the project is public returns the full project path when the project is private when not authenticated behaves like unauthorized returns the 2-segment group path when authenticated using warden when active behaves like authenticated with access to the project returns the full project path without access to the project behaves like unauthorized returns the 2-segment group path when blocked behaves like unauthorized returns the 2-segment group path using a personal access token with api scope behaves like authenticated with access to the project returns the full project path without access to the project behaves like unauthorized returns the 2-segment group path with read_user scope behaves like unauthorized returns the 2-segment group path with a subpackage that is not a valid project path behaves like a nested project when the project is public returns the full project path when the project is private when not authenticated behaves like unauthorized returns the 2-segment group path when authenticated using warden when active behaves like authenticated with access to the project returns the full project path without access to the project behaves like unauthorized returns the 2-segment group path when blocked behaves like unauthorized returns the 2-segment group path using a personal access token with api scope behaves like authenticated with access to the project returns the full project path without access to the project behaves like unauthorized returns the 2-segment group path with read_user scope behaves like unauthorized returns the 2-segment group path without subpackages behaves like a nested project when the project is public returns the full project path when the project is private when not authenticated behaves like unauthorized returns the 2-segment group path when authenticated using warden when active behaves like authenticated with access to the project returns the full project path without access to the project behaves like unauthorized returns the 2-segment group path when blocked behaves like unauthorized returns the 2-segment group path using a personal access token with api scope behaves like authenticated with access to the project returns the full project path without access to the project behaves like unauthorized returns the 2-segment group path with read_user scope behaves like unauthorized returns the 2-segment group path with a bogus path skips go-import generation with HTTP disabled with simple 2-segment project path with subpackages returns the full project path without subpackages returns the full project path with a nested project path with subpackages behaves like a nested project when the project is public returns the full project path when the project is private when not authenticated behaves like unauthorized returns the 2-segment group path when authenticated using warden when active behaves like authenticated with access to the project returns the full project path without access to the project behaves like unauthorized returns the 2-segment group path when blocked behaves like unauthorized returns the 2-segment group path using a personal access token with api scope behaves like authenticated with access to the project returns the full project path without access to the project behaves like unauthorized returns the 2-segment group path with read_user scope behaves like unauthorized returns the 2-segment group path with a subpackage that is not a valid project path behaves like a nested project when the project is public returns the full project path when the project is private when not authenticated behaves like unauthorized returns the 2-segment group path when authenticated using warden when active behaves like authenticated with access to the project returns the full project path without access to the project behaves like unauthorized returns the 2-segment group path when blocked behaves like unauthorized returns the 2-segment group path using a personal access token with api scope behaves like authenticated with access to the project returns the full project path without access to the project behaves like unauthorized returns the 2-segment group path with read_user scope behaves like unauthorized returns the 2-segment group path without subpackages behaves like a nested project when the project is public returns the full project path when the project is private when not authenticated behaves like unauthorized returns the 2-segment group path when authenticated using warden when active behaves like authenticated with access to the project returns the full project path without access to the project behaves like unauthorized returns the 2-segment group path when blocked behaves like unauthorized returns the 2-segment group path using a personal access token with api scope behaves like authenticated with access to the project returns the full project path without access to the project behaves like unauthorized returns the 2-segment group path with read_user scope behaves like unauthorized returns the 2-segment group path with a bogus path skips go-import generation with nothing disabled with simple 2-segment project path with subpackages returns the full project path without subpackages returns the full project path with a nested project path with subpackages behaves like a nested project when the project is public returns the full project path when the project is private when not authenticated behaves like unauthorized returns the 2-segment group path when authenticated using warden when active behaves like authenticated with access to the project returns the full project path without access to the project behaves like unauthorized returns the 2-segment group path when blocked behaves like unauthorized returns the 2-segment group path using a personal access token with api scope behaves like authenticated with access to the project returns the full project path without access to the project behaves like unauthorized returns the 2-segment group path with read_user scope behaves like unauthorized returns the 2-segment group path with a subpackage that is not a valid project path behaves like a nested project when the project is public returns the full project path when the project is private when not authenticated behaves like unauthorized returns the 2-segment group path when authenticated using warden when active behaves like authenticated with access to the project returns the full project path without access to the project behaves like unauthorized returns the 2-segment group path when blocked behaves like unauthorized returns the 2-segment group path using a personal access token with api scope behaves like authenticated with access to the project returns the full project path without access to the project behaves like unauthorized returns the 2-segment group path with read_user scope behaves like unauthorized returns the 2-segment group path without subpackages behaves like a nested project when the project is public returns the full project path when the project is private when not authenticated behaves like unauthorized returns the 2-segment group path when authenticated using warden when active behaves like authenticated with access to the project returns the full project path without access to the project behaves like unauthorized returns the 2-segment group path when blocked behaves like unauthorized returns the 2-segment group path using a personal access token with api scope behaves like authenticated with access to the project returns the full project path without access to the project behaves like unauthorized returns the 2-segment group path with read_user scope behaves like unauthorized returns the 2-segment group path with a bogus path skips go-import generation with nothing disabled (blank string) with simple 2-segment project path with subpackages returns the full project path without subpackages returns the full project path with a nested project path with subpackages behaves like a nested project when the project is public returns the full project path when the project is private when not authenticated behaves like unauthorized returns the 2-segment group path when authenticated using warden when active behaves like authenticated with access to the project returns the full project path without access to the project behaves like unauthorized returns the 2-segment group path when blocked behaves like unauthorized returns the 2-segment group path using a personal access token with api scope behaves like authenticated with access to the project returns the full project path without access to the project behaves like unauthorized returns the 2-segment group path with read_user scope behaves like unauthorized returns the 2-segment group path with a subpackage that is not a valid project path behaves like a nested project when the project is public returns the full project path when the project is private when not authenticated behaves like unauthorized returns the 2-segment group path when authenticated using warden when active behaves like authenticated with access to the project returns the full project path without access to the project behaves like unauthorized returns the 2-segment group path when blocked behaves like unauthorized returns the 2-segment group path using a personal access token with api scope behaves like authenticated with access to the project returns the full project path without access to the project behaves like unauthorized returns the 2-segment group path with read_user scope behaves like unauthorized returns the 2-segment group path without subpackages behaves like a nested project when the project is public returns the full project path when the project is private when not authenticated behaves like unauthorized returns the 2-segment group path when authenticated using warden when active behaves like authenticated with access to the project returns the full project path without access to the project behaves like unauthorized returns the 2-segment group path when blocked behaves like unauthorized returns the 2-segment group path using a personal access token with api scope behaves like authenticated with access to the project returns the full project path without access to the project behaves like unauthorized returns the 2-segment group path with read_user scope behaves like unauthorized returns the 2-segment group path with a bogus path skips go-import generation 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 (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) should add an error on group (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) when there's an exception on Gitlab shell directories should return false (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) should add an error on group (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) when the group is already a root group should add an error on group (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) when the user does not have the right policies should return false (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) should add an error on group (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) when there is a group with the same path should return false (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) should add an error on group (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) when the group is a subgroup and the transfer is valid should update group attributes (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) should update group children path (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) should update group projects path (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) when transferring a subgroup into another group behaves like ensuring allowed transfer for a group with other database than PostgreSQL should return false (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) should add an error on group (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) when there's an exception on Gitlab shell directories should return false (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) should add an error on group (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) when the new parent group is the same as the previous parent group should return false (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) should add an error on group (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) when the user does not have the right policies should return false (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) should add an error on group (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) when the parent has a group with the same path should return false (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) should add an error on group (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) when the parent group has a project with the same path should return false (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) should add an error on group (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) when the group is allowed to be transferred 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) should update parent group to the new parent (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) should return the group as children of the new parent (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) should create a redirect for the group (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) when the group has a lower visibility than the parent group should not update the visibility for the group (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) when the group has a higher visibility than the parent group should update visibility level based on the parent group (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) when transferring a group with group descendants should update subgroups path (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) should create redirects for the subgroups (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) when the new parent has a higher visibility than the children should not update the children visibility (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) when the new parent has a lower visibility than the children should update children visibility to match the new parent (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) when transferring a group with project descendants should update projects path (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) should create permanent redirects for the projects (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) when the new parent has a higher visibility than the projects should not update projects visibility (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) when the new parent has a lower visibility than the projects should update projects visibility to match the new parent (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) when transferring a group with subgroups & projects descendants should update subgroups path (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) should update projects path (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) should create redirect for the subgroups and projects (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) when transfering a group with nested groups and projects should update subgroups path (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) should update projects path (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) should create redirect for the subgroups and projects (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) when updating the group goes wrong should restore group and projects visibility (PENDING: around hook at ./spec/spec_helper.rb:190 did not execute the example) Editing file blob as a developer from MR diff returns me to the mr from blob file path updates content previews content visit blob edit redirects to sign in and returns as developer redirects to sign in and returns as guest redirects to sign in and returns as developer on some branch shows blob editor with same branch with protected branch shows blob editor with patch branch as maintainer shows blob editor with same branch Boards::Lists::MoveService #execute when board parent is a project behaves like lists move service keeps position of lists when list type is closed when list type is set to label keeps position of lists when new position is nil keeps position of lists when new positon is equal to old position keeps position of lists when new positon is negative keeps position of lists when new positon is equal to number of labels lists keeps position of lists when new positon is greater than number of labels lists increments position of intermediate lists when new positon is equal to first position decrements position of intermediate lists when new positon is equal to last position decrements position of intermediate lists when new position is greater than old position increments position of intermediate lists when new position is lower than old position when board parent is a group behaves like lists move service keeps position of lists when list type is closed when list type is set to label keeps position of lists when new position is nil keeps position of lists when new positon is equal to old position keeps position of lists when new positon is negative keeps position of lists when new positon is equal to number of labels lists keeps position of lists when new positon is greater than number of labels lists increments position of intermediate lists when new positon is equal to first position decrements position of intermediate lists when new positon is equal to last position decrements position of intermediate lists when new position is greater than old position increments position of intermediate lists when new position is lower than old position CreateDeploymentService #execute when environment exists creates a deployment when environment does not exist does not create a deployment when start action is defined and environment is stopped makes environment available creates a deployment when stop action is defined and environment is available makes environment stopped does not create a deployment when variables are used creates a new deployment does not create a new environment updates external url when project was removed does not create deployment or environment #expanded_environment_url when yaml environment uses $CI_COMMIT_REF_NAME should eq "http://review/master" when yaml environment uses $CI_ENVIRONMENT_SLUG should eq "http://review/prod-slug" when yaml environment uses yaml_variables containing symbol keys should eq "http://review/host" when yaml environment does not have url returns the external_url from persisted environment processing of builds without environment specified behaves like does not create deployment does not create a new deployment does not call a service when environment is specified when job succeeds behaves like creates deployment creates a new deployment calls a service is set as deployable updates environment URL when job fails behaves like does not create deployment does not create a new deployment does not call a service when job is retried behaves like creates deployment creates a new deployment calls a service is set as deployable updates environment URL merge request metrics while updating the 'first_deployed_to_production_at' time for merge requests merged before the current deploy sets the time if the deploy's environment is 'production' doesn't set the time if the deploy's environment is not 'production' does not raise errors if the merge request does not have a metrics record for merge requests merged before the previous deploy if the 'first_deployed_to_production_at' time is already set does not overwrite the older 'first_deployed_to_production_at' time if the 'first_deployed_to_production_at' time is not already set does not overwrite the older 'first_deployed_to_production_at' time Groups::MilestonesController #index shows group milestones page as JSON lists legacy group milestones and group milestones #show when there is a title parameter searchs for a legacy group milestone when there is not a title parameter searchs for a group milestone behaves like milestone tabs #merge_requests as html redirects to milestone#show as json renders the merge requests tab template to a string #participants as html redirects to milestone#show as json renders the participants tab template to a string #labels as html redirects to milestone#show as json renders the labels tab template to a string #create creates group milestone with Chinese title #update updates group milestone legacy group milestones updates only group milestones state #ensure_canonical_path for a GET request when requesting the canonical path non-show path with exactly matching casing does not redirect with different casing redirects to the correct casing show path with exactly matching casing does not redirect with different casing redirects to the correct casing when requesting a redirected path redirects to the canonical path when the old group path is a substring of the scheme or host does not modify the requested host when the old group path is substring of groups does not modify the /groups part of the path when the old group path is substring of groups plus the new path does not modify the /groups part of the path for a non-GET request when requesting the canonical path with different casing does not 404 does not redirect to the correct casing when requesting a redirected path returns not found GroupsHelper group_icon returns an url for the avatar group_icon_url returns an url for the avatar gives default avatar_icon when no avatar is present group_lfs_status only one project in group returns all projects as enabled returns all projects as disabled more than one project in group LFS enabled in group returns both projects as enabled returns only one as enabled LFS disabled in group returns both projects as disabled returns only one as disabled group_title outputs the groups in the correct order (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example) #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 (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example) 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 (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example) 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 (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example) 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 (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example) 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 (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example) 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 (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example) 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 (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example) 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 (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example) 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 (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example) 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 (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example) 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 (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example) 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 (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example) 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 (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example) 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 (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example) 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 (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example) 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 (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example) 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 (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example) 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 (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example) 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 (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example) 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 (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example) 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 (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example) 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 (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example) 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 (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example) 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 (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example) #group_sidebar_links returns all the expected links includes settings when the user can admin the group excludes cross project features when the user cannot read cross project API::V3::Todos DELETE /todos/:id when unauthenticated returns authentication error when authenticated marks a todo as done updates todos cache returns 404 if the todo does not belong to the current user DELETE /todos when unauthenticated returns authentication error when authenticated marks all todos as done updates todos cache TeamcityService Associations should belong to project should have one service_hook Validations when service is active should validate that :build_type cannot be empty/falsy should validate that :teamcity_url cannot be empty/falsy behaves like issue tracker service URL attribute should allow :teamcity_url to be ‹"https://example.com"› should not allow :teamcity_url to be ‹"example.com"› should not allow :teamcity_url to be ‹"ftp://example.com"› should not allow :teamcity_url to be ‹"herp-and-derp"› #username does not validate the presence of username if password is nil validates the presence of username if password is present #password does not validate the presence of password if username is nil validates the presence of password if username is present when service is inactive should not validate that :build_type cannot be empty/falsy should not validate that :teamcity_url cannot be empty/falsy should not validate that :username cannot be empty/falsy should not validate that :password cannot be empty/falsy Callbacks before_update :reset_password saves password if new url is set together with password when no password was previously set when a password was previously set resets password if url changed does not reset password if username changed does not reset password if new url is set together with password, even if it's the same password #build_page returns the contents of the reactive cache #commit_status returns the contents of the reactive cache #calculate_reactive_cache build_page returns a specific URL when status is 500 returns a build URL when teamcity_url has no trailing slash teamcity_url has trailing slash returns a build URL commit_status sets commit status to :error when status is 500 sets commit status to "pending" when status is 404 sets commit status to "success" when build status contains SUCCESS sets commit status to "failed" when build status contains FAILURE sets commit status to "pending" when build status contains Pending sets commit status to :error when build status is unknown Gitlab::Conflict::File #resolve_lines raises ResolutionError when passed a hash without resolutions for all sections when resolving everything to the same side has the correct number of lines has content matching the chosen lines with mixed resolutions has the correct number of lines returns a file containing only the chosen parts of the resolved sections #highlight_lines! modifies the existing lines is called implicitly when rich_text is accessed on a line sets the rich_text of the lines matching the text content highlights the lines correctly #sections only inserts match lines when there is a gap between sections sets conflict to false for sections with only unchanged lines only includes a maximum of CONTEXT_LINES (plus an optional match line) in context sections sets conflict to true for sections with only changed lines adds unique IDs to conflict sections, and not to other sections with an example file sets the correct match line headers does not add match lines where they are not needed creates context sections of the correct length #as_json includes the blob path for the file includes the blob icon for the file with the full_content option passed includes the full content of the conflict includes the detected language of the conflict file Banzai::Filter::SnippetReferenceFilter requires project context ignores valid references contained inside 'pre' element ignores valid references contained inside 'code' element ignores valid references contained inside 'a' element ignores valid references contained inside 'style' element internal reference links to a valid reference links with adjacent text ignores invalid snippet IDs includes a title attribute escapes the title attribute includes default classes includes a data-project attribute includes a data-snippet attribute supports an :only_path context cross-project / cross-namespace complete reference links to a valid reference link has valid text has valid text ignores invalid snippet IDs on the referenced project cross-project / same-namespace complete reference links to a valid reference link has valid text has valid text ignores invalid snippet IDs on the referenced project cross-project shorthand reference links to a valid reference link has valid text has valid text ignores invalid snippet IDs on the referenced project cross-project URL reference links to a valid reference links with adjacent text ignores invalid snippet IDs on the referenced project group context links to a valid reference AutocompleteUsersFinder #execute should contain exactly #, #, #, and # when current_user not passed or nil should contain exactly when project passed should contain exactly # when author_id passed should contain exactly # and # when group passed and project not passed should contain exactly # when passed a subgroup includes users from parent groups as well (PENDING: around hook at ./spec/spec_helper.rb:186 did not execute the example) when filtered by search should contain exactly # when filtered by skip_users should contain exactly # and # when todos exist when filtered by todo_filter without todo_state_filter should contain exactly when filtered by todo_filter with pending todo_state_filter should contain exactly # when filtered by todo_filter with done todo_state_filter should contain exactly # when filtered by current_user should contain exactly #, #, #, and # when filtered by author_id should contain exactly #, #, #, #, and # Service Associations should belong to project should have one service_hook Validations should validate that :type cannot be empty/falsy Scopes .confidential_note_hooks includes services where confidential_note_events is true excludes services where confidential_note_events is false Test Button #can_test? when repository is not empty returns true when repository is empty returns true #test when repository is not empty test runs execute when repository is empty test runs execute Template .build_from_template when template is invalid sets service template to inactive when template is invalid for pushover service is prefilled for projects pushover service has all fields prefilled {property}_changed? returns false when the property has not been assigned a new value returns true when the property has been assigned a different value returns true when the property has been assigned a different value twice returns false when the property has been re-assigned the same value returns false when the property has been assigned a new value then saved {property}_touched? returns false when the property has not been assigned a new value returns true when the property has been assigned a different value returns true when the property has been assigned a different value twice returns true when the property has been re-assigned the same value returns false when the property has been assigned a new value then saved {property}_was returns nil when the property has not been assigned a new value returns the previous value when the property has been assigned a different value returns initial value when the property has been re-assigned the same value returns initial value when the property has been assigned multiple values returns nil when the property has been assigned a new value then saved initialize service with no properties does not raise error creates the properties callbacks on create updates the has_external_issue_tracker boolean on update updates the has_external_issue_tracker boolean #deprecated? should return false by default #deprecation_message should be empty by default .find_by_template returns service template #api_field_names filters out sensitive fields TestHooks::ProjectService #execute hook with not implemented test returns error message push_events returns error message if not enough data executes hook tag_push_events returns error message if not enough data executes hook note_events returns error message if not enough data executes hook issues_events returns error message if not enough data executes hook confidential_issues_events returns error message if not enough data executes hook merge_requests_events returns error message if not enough data executes hook job_events returns error message if not enough data executes hook pipeline_events returns error message if not enough data executes hook wiki_page_events returns error message if wiki disabled returns error message if not enough data executes hook User views an open merge request when a merge request does not have repository renders both the title and the description when a merge request has repository when rendering description preview renders empty description preview renders description preview when the branch is rebased on the target does not show diverged commits count when the branch is diverged on the target shows diverged commits count RunnerJobsFinder #execute when params is empty returns all jobs assigned to Runner when params contains status when status is created returns matched job when status is pending returns matched job when status is running returns matched job when status is success returns matched job when status is failed returns matched job when status is canceled returns matched job when status is skipped returns matched job when status is manual returns matched job Project snippets when the project has snippets pagination behaves like paginated snippets is limited to 20 items per page clicking on the link to the second page shows the remaining snippets list content contains all project snippets when submitting a note should have autocomplete should have zen mode API::V3::Environments GET /projects/:id/environments as member of the project returns project environments behaves like a paginated resources has pagination headers as non member returns a 404 status code POST /projects/:id/environments as a member creates a environment with valid params requires name to be passed returns a 400 if environment already exists returns a 400 if slug is specified a non member rejects the request returns a 400 when the required params are missing PUT /projects/:id/environments/:environment_id returns a 200 if name and external_url are changed won't allow slug to be changed won't update the external_url if only the name is passed returns a 404 if the environment does not exist DELETE /projects/:id/environments/:environment_id as a maintainer returns a 200 for an existing environment returns a 404 for non existing id a non member rejects the request API::Namespaces GET /namespaces when unauthenticated returns authentication error when authenticated as admin returns correct attributes admin: returns an array of all namespaces admin: returns an array of matched namespaces when authenticated as a regular user returns correct attributes when user can admin group returns correct attributes when user cannot admin group user: returns an array of namespaces admin: returns an array of matched namespaces GET /namespaces/:id when unauthenticated returns authentication error when authenticated as regular user when requested namespace is not owned by user when requesting group returns not-found when requesting personal namespace returns not-found when requested namespace is owned by user behaves like namespace reader when namespace exists when requested by ID when requesting group behaves like can access namespace returns namespace details when requesting personal namespace behaves like can access namespace returns namespace details when requested by path when requesting group behaves like can access namespace returns namespace details when requesting personal namespace behaves like can access namespace returns namespace details when namespace doesn't exist returns not-found when authenticated as admin when requested namespace is not owned by user when requesting group behaves like can access namespace returns namespace details when requesting personal namespace behaves like can access namespace returns namespace details when requested namespace is owned by user behaves like namespace reader when namespace exists when requested by ID when requesting group behaves like can access namespace returns namespace details when requesting personal namespace behaves like can access namespace returns namespace details when requested by path when requesting group behaves like can access namespace returns namespace details when requesting personal namespace behaves like can access namespace returns namespace details when namespace doesn't exist returns not-found MergeRequests::GetUrlsService #execute pushing to default branch behaves like no_merge_request_url returns no URL pushing to project with MRs disabled behaves like no_merge_request_url returns no URL pushing one completely new branch behaves like new_merge_request_link returns url to create new merge request pushing to existing branch but no merge request behaves like new_merge_request_link returns url to create new merge request pushing to deleted branch behaves like no_merge_request_url returns no URL pushing to existing branch and merge request opened behaves like show_merge_request_url returns url to view merge request pushing to existing branch and merge request is reopened behaves like show_merge_request_url returns url to view merge request pushing to existing branch from forked project behaves like show_merge_request_url returns url to view merge request pushing to existing branch and merge request is closed behaves like new_merge_request_link returns url to create new merge request pushing to existing branch and merge request is merged behaves like new_merge_request_link returns url to create new merge request pushing new branch and existing branch (with merge request created) at once returns 2 urls for both creating new and showing merge request when printing_merge_request_link_enabled is false returns empty array LfsFileLock should belong to project should belong to user should validate that :project_id cannot be empty/falsy should validate that :user_id cannot be empty/falsy should validate that :path cannot be empty/falsy #can_be_unlocked_by? when it's forced can be unlocked by the author can be unlocked by a maintainer can't be unlocked by other user when it isn't forced can be unlocked by the author can't be unlocked by a maintainer can't be unlocked by other user Gitlab::Ci::Config::Entry::Boolean validations when entry config value is valid #value returns key value #valid? is valid when entry value is not valid #errors saves errors Knapsack report was generated. Preview: { "spec/services/todo_service_spec.rb": 53.71851348876953, "spec/lib/gitlab/import_export/project_tree_saver_spec.rb": 48.39624857902527, "spec/lib/gitlab/background_migration/deserialize_merge_request_diffs_and_commits_spec.rb": 35.17360734939575, "spec/controllers/projects/merge_requests_controller_spec.rb": 25.50887441635132, "spec/controllers/groups_controller_spec.rb": 13.007296323776245, "spec/features/projects/import_export/import_file_spec.rb": 16.827879428863525, "spec/lib/gitlab/middleware/go_spec.rb": 12.497276306152344, "spec/features/projects/blobs/edit_spec.rb": 11.511932134628296, "spec/services/boards/lists/move_service_spec.rb": 8.695446491241455, "spec/services/create_deployment_service_spec.rb": 6.754847526550293, "spec/controllers/groups/milestones_controller_spec.rb": 6.8740551471710205, "spec/helpers/groups_helper_spec.rb": 0.9002459049224854, "spec/requests/api/v3/todos_spec.rb": 6.5924904346466064, "spec/models/project_services/teamcity_service_spec.rb": 2.9881808757781982, "spec/lib/gitlab/conflict/file_spec.rb": 5.294132709503174, "spec/lib/banzai/filter/snippet_reference_filter_spec.rb": 4.118850469589233, "spec/finders/autocomplete_users_finder_spec.rb": 3.864232063293457, "spec/models/service_spec.rb": 3.1697962284088135, "spec/services/test_hooks/project_service_spec.rb": 4.167759656906128, "spec/features/projects/merge_requests/user_views_open_merge_request_spec.rb": 4.707003355026245, "spec/finders/runner_jobs_finder_spec.rb": 3.2137575149536133, "spec/features/projects/snippets_spec.rb": 3.631467580795288, "spec/requests/api/v3/environments_spec.rb": 2.314746856689453, "spec/requests/api/namespaces_spec.rb": 2.352935314178467, "spec/services/merge_requests/get_urls_service_spec.rb": 2.8039824962615967, "spec/models/lfs_file_lock_spec.rb": 0.7295050621032715, "spec/lib/gitlab/ci/config/entry/boolean_spec.rb": 0.007024049758911133 } Knapsack global time execution for tests: 04m 49s Pending: (Failures listed here are expected and do not affect your suite's status) 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 # around hook at ./spec/spec_helper.rb:186 did not execute the example # ./spec/controllers/groups_controller_spec.rb:15 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 # around hook at ./spec/spec_helper.rb:186 did not execute the example # ./spec/controllers/groups_controller_spec.rb:15 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 # around hook at ./spec/spec_helper.rb:186 did not execute the example # ./spec/controllers/groups_controller_spec.rb:25 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 # around hook at ./spec/spec_helper.rb:186 did not execute the example # ./spec/controllers/groups_controller_spec.rb:25 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 # around hook at ./spec/spec_helper.rb:186 did not execute the example # ./spec/controllers/groups_controller_spec.rb:25 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 # around hook at ./spec/spec_helper.rb:186 did not execute the example # ./spec/controllers/groups_controller_spec.rb:15 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 # around hook at ./spec/spec_helper.rb:186 did not execute the example # ./spec/controllers/groups_controller_spec.rb:15 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 # around hook at ./spec/spec_helper.rb:186 did not execute the example # ./spec/controllers/groups_controller_spec.rb:25 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 # around hook at ./spec/spec_helper.rb:186 did not execute the example # ./spec/controllers/groups_controller_spec.rb:25 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 # around hook at ./spec/spec_helper.rb:186 did not execute the example # ./spec/controllers/groups_controller_spec.rb:25 11) GroupsController POST #create when creating subgroups and can_create_group is true and logged in as Owner creates the subgroup # around hook at ./spec/spec_helper.rb:186 did not execute the example # ./spec/controllers/groups_controller_spec.rb:117 12) GroupsController POST #create when creating subgroups and can_create_group is true and logged in as Developer renders the new template # around hook at ./spec/spec_helper.rb:186 did not execute the example # ./spec/controllers/groups_controller_spec.rb:129 13) GroupsController POST #create when creating subgroups and can_create_group is false and logged in as Owner creates the subgroup # around hook at ./spec/spec_helper.rb:186 did not execute the example # ./spec/controllers/groups_controller_spec.rb:117 14) GroupsController POST #create when creating subgroups and can_create_group is false and logged in as Developer renders the new template # around hook at ./spec/spec_helper.rb:186 did not execute the example # ./spec/controllers/groups_controller_spec.rb:129 15) GroupsController PUT transfer when transfering to a subgroup goes right should return a notice # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/controllers/groups_controller_spec.rb:516 16) GroupsController PUT transfer when transfering to a subgroup goes right should redirect to the new path # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/controllers/groups_controller_spec.rb:520 17) GroupsController PUT transfer when converting to a root group goes right should return a notice # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/controllers/groups_controller_spec.rb:535 18) GroupsController PUT transfer when converting to a root group goes right should redirect to the new path # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/controllers/groups_controller_spec.rb:539 19) GroupsController PUT transfer When the transfer goes wrong should return an alert # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/controllers/groups_controller_spec.rb:557 20) GroupsController PUT transfer When the transfer goes wrong should redirect to the current path # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/controllers/groups_controller_spec.rb:561 21) GroupsController PUT transfer when the user is not allowed to transfer the group should be denied # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/controllers/groups_controller_spec.rb:577 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 # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:15 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 # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:19 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 # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:33 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 # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:37 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 # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:53 27) Groups::TransferService#execute when transforming a group into a root group when the user does not have the right policies should return false # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:62 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 # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:66 29) Groups::TransferService#execute when transforming a group into a root group when there is a group with the same path should return false # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:79 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 # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:83 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 # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:99 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 # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:103 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 # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:109 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 # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:15 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 # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:19 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 # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:33 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 # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:37 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 # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:125 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 # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:129 40) Groups::TransferService#execute when transferring a subgroup into another group when the user does not have the right policies should return false # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:138 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 # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:142 42) Groups::TransferService#execute when transferring a subgroup into another group when the parent has a group with the same path should return false # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:155 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 # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:159 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 # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:174 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 # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:178 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 # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:212 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 # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:216 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 # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:220 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 # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:225 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 # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:194 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 # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:205 52) Groups::TransferService#execute when transferring a subgroup into another group when transferring a group with group descendants should update subgroups path # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:239 53) Groups::TransferService#execute when transferring a subgroup into another group when transferring a group with group descendants should create redirects for the subgroups # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:246 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 # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:253 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 # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:264 56) Groups::TransferService#execute when transferring a subgroup into another group when transferring a group with project descendants should update projects path # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:282 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 # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:289 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 # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:296 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 # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:307 60) Groups::TransferService#execute when transferring a subgroup into another group when transferring a group with subgroups & projects descendants should update subgroups path # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:327 61) Groups::TransferService#execute when transferring a subgroup into another group when transferring a group with subgroups & projects descendants should update projects path # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:334 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 # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:341 63) Groups::TransferService#execute when transferring a subgroup into another group when transfering a group with nested groups and projects should update subgroups path # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:363 64) Groups::TransferService#execute when transferring a subgroup into another group when transfering a group with nested groups and projects should update projects path # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:375 65) Groups::TransferService#execute when transferring a subgroup into another group when transfering a group with nested groups and projects should create redirect for the subgroups and projects # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:383 66) Groups::TransferService#execute when transferring a subgroup into another group when updating the group goes wrong should restore group and projects visibility # around hook at ./spec/spec_helper.rb:190 did not execute the example # ./spec/services/groups/transfer_service_spec.rb:405 67) GroupsHelper group_title outputs the groups in the correct order # around hook at ./spec/spec_helper.rb:186 did not execute the example # ./spec/helpers/groups_helper_spec.rb:106 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 # around hook at ./spec/spec_helper.rb:186 did not execute the example # ./spec/helpers/groups_helper_spec.rb:198 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 # around hook at ./spec/spec_helper.rb:186 did not execute the example # ./spec/helpers/groups_helper_spec.rb:198 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 # around hook at ./spec/spec_helper.rb:186 did not execute the example # ./spec/helpers/groups_helper_spec.rb:198 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 # around hook at ./spec/spec_helper.rb:186 did not execute the example # ./spec/helpers/groups_helper_spec.rb:198 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 # around hook at ./spec/spec_helper.rb:186 did not execute the example # ./spec/helpers/groups_helper_spec.rb:198 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 # around hook at ./spec/spec_helper.rb:186 did not execute the example # ./spec/helpers/groups_helper_spec.rb:198 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 # around hook at ./spec/spec_helper.rb:186 did not execute the example # ./spec/helpers/groups_helper_spec.rb:198 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 # around hook at ./spec/spec_helper.rb:186 did not execute the example # ./spec/helpers/groups_helper_spec.rb:198 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 # around hook at ./spec/spec_helper.rb:186 did not execute the example # ./spec/helpers/groups_helper_spec.rb:198 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 # around hook at ./spec/spec_helper.rb:186 did not execute the example # ./spec/helpers/groups_helper_spec.rb:198 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 # around hook at ./spec/spec_helper.rb:186 did not execute the example # ./spec/helpers/groups_helper_spec.rb:198 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 # around hook at ./spec/spec_helper.rb:186 did not execute the example # ./spec/helpers/groups_helper_spec.rb:198 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 # around hook at ./spec/spec_helper.rb:186 did not execute the example # ./spec/helpers/groups_helper_spec.rb:198 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 # around hook at ./spec/spec_helper.rb:186 did not execute the example # ./spec/helpers/groups_helper_spec.rb:198 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 # around hook at ./spec/spec_helper.rb:186 did not execute the example # ./spec/helpers/groups_helper_spec.rb:198 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 # around hook at ./spec/spec_helper.rb:186 did not execute the example # ./spec/helpers/groups_helper_spec.rb:198 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 # around hook at ./spec/spec_helper.rb:186 did not execute the example # ./spec/helpers/groups_helper_spec.rb:198 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 # around hook at ./spec/spec_helper.rb:186 did not execute the example # ./spec/helpers/groups_helper_spec.rb:198 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 # around hook at ./spec/spec_helper.rb:186 did not execute the example # ./spec/helpers/groups_helper_spec.rb:198 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 # around hook at ./spec/spec_helper.rb:186 did not execute the example # ./spec/helpers/groups_helper_spec.rb:198 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 # around hook at ./spec/spec_helper.rb:186 did not execute the example # ./spec/helpers/groups_helper_spec.rb:198 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 # around hook at ./spec/spec_helper.rb:186 did not execute the example # ./spec/helpers/groups_helper_spec.rb:198 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 # around hook at ./spec/spec_helper.rb:186 did not execute the example # ./spec/helpers/groups_helper_spec.rb:198 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 # around hook at ./spec/spec_helper.rb:186 did not execute the example # ./spec/helpers/groups_helper_spec.rb:198 92) AutocompleteUsersFinder#execute when passed a subgroup includes users from parent groups as well # around hook at ./spec/spec_helper.rb:186 did not execute the example # ./spec/finders/autocomplete_users_finder_spec.rb:55 Finished in 5 minutes 7 seconds (files took 16.6 seconds to load) 819 examples, 0 failures, 92 pending section_end:1522927514:build_script section_start:1522927514:after_script Running after script... $ date Thu Apr 5 11:25:14 UTC 2018 section_end:1522927515:after_script section_start:1522927515:archive_cache Not uploading cache ruby-2.3.6-with-yarn due to policy section_end:1522927516:archive_cache section_start:1522927516:upload_artifacts Uploading artifacts... coverage/: found 5 matching files  knapsack/: found 5 matching files  rspec_flaky/: found 4 matching files  WARNING: tmp/capybara/: no matching files  Uploading artifacts to coordinator... ok  id=61303283 responseStatus=201 Created token=rusBKvxM section_end:1522927520:upload_artifacts Job succeeded