rspec unit pg9 8/20
Passed Started
by
@gtsiolis
George Tsiolis
1Running with gitlab-runner 12.3.0 (a8a019e0)2 on docker-auto-scale-com d5ae8d25 3 Using Docker executor with image registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.3-golang-1.11-git-2.22-chrome-73.0-node-12.x-yarn-1.16-postgresql-9.6-graphicsmagick-1.3.33 ...
01:56
4Starting service postgres:9.6 ...5Pulling docker image postgres:9.6 ...6Using docker image sha256:afd8110f181328444d0f778570657868364ca522fb64e9a9bdbf7b1d60b03792 for postgres:9.6 ...7Starting service redis:alpine ...8Pulling docker image redis:alpine ...9Using docker image sha256:6f63d037b592589a96010cb70325c6a36a38d6cd2e66f77a0f99758475f016e1 for redis:alpine ...10Waiting for services to be up and running...11Authenticating with credentials from job payload (GitLab Registry)12Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.3-golang-1.11-git-2.22-chrome-73.0-node-12.x-yarn-1.16-postgresql-9.6-graphicsmagick-1.3.33 ...13Using docker image sha256:9823f8443949a0145bc163107aff0472ae24cd6ff8141f97cfb2500f7822a169 for registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.3-golang-1.11-git-2.22-chrome-73.0-node-12.x-yarn-1.16-postgresql-9.6-graphicsmagick-1.3.33 ... 14 Running on runner-d5ae8d25-project-4581232-concurrent-0 via runner-d5ae8d25-gsrm-1571839145-9c64c188...
00:17
16Initialized empty Git repository in /builds/gtsiolis/gitlab-foss/.git/17Created fresh repository.19 * [new ref] refs/pipelines/90921493 -> refs/pipelines/9092149320 * [new branch] master -> origin/master21Checking out 09ffaae1 as master...22Skipping Git submodules setup24Downloading cache.zip from https://storage.googleapis.com/gitlab-com-runners-cache/project/4581232/debian-stretch-ruby-2.6.3-node-12.x-7 25Successfully extracted cache27Downloading artifacts from coordinator... ok id=330157250 responseStatus=200 OK token=kawU23eE28Downloading artifacts for retrieve-tests-metadata (330157271)...29Downloading artifacts from coordinator... ok id=330157271 responseStatus=200 OK token=YyFsrTqN30Downloading artifacts for setup-test-env (330157251)...31Downloading artifacts from coordinator... ok id=330157251 responseStatus=200 OK token=kWbyW_2H32WARNING: tmp/tests/gitlab-shell/.gitlab_shell_secret: chmod tmp/tests/gitlab-shell/.gitlab_shell_secret: no such file or directory (suppressing repeats) 34$ date35Wed Oct 23 14:05:35 UTC 201936$ export GOPATH=$CI_PROJECT_DIR/.go37$ mkdir -p $GOPATH38$ source scripts/utils.sh39$ source scripts/prepare_build.sh40Bundler version 1.17.241Warning: the running version of Bundler (1.17.2) is older than the version that created the lockfile (1.17.3). We suggest you upgrade to the latest version of Bundler by running `gem install bundler`.42The Gemfile's dependencies are satisfied43Successfully installed knapsack-1.18.0441 gem installed45CREATE ROLE46GRANT47Dropped database 'gitlabhq_test'48Created database 'gitlabhq_test'49-- enable_extension("pg_trgm")50 -> 0.0391s51-- enable_extension("plpgsql")52 -> 0.0046s53-- create_table("abuse_reports", {:id=>:serial, :force=>:cascade})54 -> 0.0047s55-- create_table("alerts_service_data", {:force=>:cascade})56 -> 0.0080s57-- create_table("allowed_email_domains", {:force=>:cascade})58 -> 0.0043s59-- create_table("analytics_cycle_analytics_group_stages", {:force=>:cascade})60 -> 0.0138s61-- create_table("analytics_cycle_analytics_project_stages", {:force=>:cascade})62 -> 0.0132s63-- create_table("analytics_language_trend_repository_languages", {:id=>false, :force=>:cascade})64 -> 0.0075s65-- create_table("analytics_repository_file_commits", {:force=>:cascade})66 -> 0.0062s67-- create_table("analytics_repository_file_edits", {:force=>:cascade})68 -> 0.0066s69-- create_table("analytics_repository_files", {:force=>:cascade})70 -> 0.0045s71-- create_table("appearances", {:id=>:serial, :force=>:cascade})72 -> 0.0034s73-- create_table("application_setting_terms", {:id=>:serial, :force=>:cascade})74 -> 0.0025s75-- create_table("application_settings", {:id=>:serial, :force=>:cascade})76 -> 0.0981s77-- create_table("approval_merge_request_rule_sources", {:force=>:cascade})78 -> 0.0064s79-- create_table("approval_merge_request_rules", {:force=>:cascade})80 -> 0.0148s81-- create_table("approval_merge_request_rules_approved_approvers", {:force=>:cascade})82 -> 0.0061s83-- create_table("approval_merge_request_rules_groups", {:force=>:cascade})84 -> 0.0062s85-- create_table("approval_merge_request_rules_users", {:force=>:cascade})86 -> 0.0061s87-- create_table("approval_project_rules", {:force=>:cascade})88 -> 0.0095s89-- create_table("approval_project_rules_groups", {:force=>:cascade})90 -> 0.0062s91-- create_table("approval_project_rules_users", {:force=>:cascade})92 -> 0.0063s93-- create_table("approvals", {:id=>:serial, :force=>:cascade})94 -> 0.0062s95-- create_table("approver_groups", {:id=>:serial, :force=>:cascade})96 -> 0.0068s97-- create_table("approvers", {:id=>:serial, :force=>:cascade})98 -> 0.0067s99-- create_table("audit_events", {:id=>:serial, :force=>:cascade})100 -> 0.0071s101-- create_table("award_emoji", {:id=>:serial, :force=>:cascade})102 -> 0.0069s103-- create_table("aws_roles", {:primary_key=>"user_id", :id=>:integer, :default=>nil, :force=>:cascade})104 -> 0.0063s105-- create_table("badges", {:id=>:serial, :force=>:cascade})106 -> 0.0072s107-- create_table("board_assignees", {:id=>:serial, :force=>:cascade})108 -> 0.0061s109-- create_table("board_group_recent_visits", {:force=>:cascade})110 -> 0.0104s111-- create_table("board_labels", {:id=>:serial, :force=>:cascade})112 -> 0.0061s113-- create_table("board_project_recent_visits", {:force=>:cascade})114 -> 0.0101s115-- create_table("boards", {:id=>:serial, :force=>:cascade})116 -> 0.0092s117-- create_table("broadcast_messages", {:id=>:serial, :force=>:cascade})118 -> 0.0050s119-- create_table("chat_names", {:id=>:serial, :force=>:cascade})120 -> 0.0069s121-- create_table("chat_teams", {:id=>:serial, :force=>:cascade})122 -> 0.0047s123-- create_table("ci_build_needs", {:id=>:serial, :force=>:cascade})124 -> 0.0047s125-- create_table("ci_build_trace_chunks", {:force=>:cascade})126 -> 0.0047s127-- create_table("ci_build_trace_section_names", {:id=>:serial, :force=>:cascade})128 -> 0.0049s129-- create_table("ci_build_trace_sections", {:id=>:serial, :force=>:cascade})130 -> 0.0084s131-- create_table("ci_builds", {:id=>:serial, :force=>:cascade})132 -> 0.0548s133-- create_table("ci_builds_metadata", {:id=>:serial, :force=>:cascade})134 -> 0.0111s135-- create_table("ci_builds_runner_session", {:force=>:cascade})136 -> 0.0048s137-- create_table("ci_group_variables", {:id=>:serial, :force=>:cascade})138 -> 0.0062s139-- create_table("ci_job_artifacts", {:id=>:serial, :force=>:cascade})140 -> 0.0158s141-- create_table("ci_job_variables", {:force=>:cascade})142 -> 0.0087s143-- create_table("ci_pipeline_chat_data", {:force=>:cascade})144 -> 0.0077s145-- create_table("ci_pipeline_schedule_variables", {:id=>:serial, :force=>:cascade})146 -> 0.0062s147-- create_table("ci_pipeline_schedules", {:id=>:serial, :force=>:cascade})148 -> 0.0111s149-- create_table("ci_pipeline_variables", {:id=>:serial, :force=>:cascade})150 -> 0.0063s151-- create_table("ci_pipelines", {:id=>:serial, :force=>:cascade})152 -> 0.0353s153-- create_table("ci_runner_namespaces", {:id=>:serial, :force=>:cascade})154 -> 0.0073s155-- create_table("ci_runner_projects", {:id=>:serial, :force=>:cascade})156 -> 0.0073s157-- create_table("ci_runners", {:id=>:serial, :force=>:cascade})158 -> 0.0206s159-- create_table("ci_sources_pipelines", {:id=>:serial, :force=>:cascade})160 -> 0.0140s161-- create_table("ci_stages", {:id=>:serial, :force=>:cascade})162 -> 0.0128s163-- create_table("ci_trigger_requests", {:id=>:serial, :force=>:cascade})164 -> 0.0080s165-- create_table("ci_triggers", {:id=>:serial, :force=>:cascade})166 -> 0.0080s167-- create_table("ci_variables", {:id=>:serial, :force=>:cascade})168 -> 0.0079s169-- create_table("cluster_groups", {:id=>:serial, :force=>:cascade})170 -> 0.0072s171-- create_table("cluster_platforms_kubernetes", {:id=>:serial, :force=>:cascade})172 -> 0.0056s173-- create_table("cluster_projects", {:id=>:serial, :force=>:cascade})174 -> 0.0075s175-- create_table("cluster_providers_aws", {:force=>:cascade})176 -> 0.0116s177-- create_table("cluster_providers_gcp", {:id=>:serial, :force=>:cascade})178 -> 0.0091s179-- create_table("clusters", {:id=>:serial, :force=>:cascade})180 -> 0.0126s181-- create_table("clusters_applications_cert_managers", {:id=>:serial, :force=>:cascade})182 -> 0.0056s183-- create_table("clusters_applications_elastic_stacks", {:force=>:cascade})184 -> 0.0053s185-- create_table("clusters_applications_helm", {:id=>:serial, :force=>:cascade})186 -> 0.0058s187-- create_table("clusters_applications_ingress", {:id=>:serial, :force=>:cascade})188 -> 0.0057s189-- create_table("clusters_applications_jupyter", {:id=>:serial, :force=>:cascade})190 -> 0.0081s191-- create_table("clusters_applications_knative", {:id=>:serial, :force=>:cascade})192 -> 0.0057s193-- create_table("clusters_applications_prometheus", {:id=>:serial, :force=>:cascade})194 -> 0.0054s195-- create_table("clusters_applications_runners", {:id=>:serial, :force=>:cascade})196 -> 0.0085s197-- create_table("clusters_kubernetes_namespaces", {:force=>:cascade})198 -> 0.0173s199-- create_table("container_repositories", {:id=>:serial, :force=>:cascade})200 -> 0.0078s201-- create_table("conversational_development_index_metrics", {:id=>:serial, :force=>:cascade})202 -> 0.0081s203-- create_table("dependency_proxy_blobs", {:id=>:serial, :force=>:cascade})204 -> 0.0058s205-- create_table("dependency_proxy_group_settings", {:id=>:serial, :force=>:cascade})206 -> 0.0056s207-- create_table("deploy_keys_projects", {:id=>:serial, :force=>:cascade})208 -> 0.0055s209-- create_table("deploy_tokens", {:id=>:serial, :force=>:cascade})210 -> 0.0118s211-- create_table("deployments", {:id=>:serial, :force=>:cascade})212 -> 0.0272s213-- create_table("description_versions", {:force=>:cascade})214 -> 0.0092s215-- create_table("design_management_designs", {:force=>:cascade})216 -> 0.0069s217-- create_table("design_management_designs_versions", {:id=>false, :force=>:cascade})218 -> 0.0096s219-- create_table("design_management_versions", {:force=>:cascade})220 -> 0.0088s221-- create_table("draft_notes", {:force=>:cascade})222 -> 0.0095s223-- create_table("elasticsearch_indexed_namespaces", {:id=>false, :force=>:cascade})224 -> 0.0034s225-- create_table("elasticsearch_indexed_projects", {:id=>false, :force=>:cascade})226 -> 0.0033s227-- create_table("emails", {:id=>:serial, :force=>:cascade})228 -> 0.0089s229-- create_table("environments", {:id=>:serial, :force=>:cascade})230 -> 0.0116s231-- create_table("epic_issues", {:id=>:serial, :force=>:cascade})232 -> 0.0062s233-- create_table("epic_metrics", {:id=>:serial, :force=>:cascade})234 -> 0.0041s235-- create_table("epics", {:id=>:serial, :force=>:cascade})236 -> 0.0267s237-- create_table("events", {:id=>:serial, :force=>:cascade})238 -> 0.0170s239-- create_table("evidences", {:force=>:cascade})240 -> 0.0072s241-- create_table("external_pull_requests", {:force=>:cascade})242 -> 0.0064s243-- create_table("feature_gates", {:id=>:serial, :force=>:cascade})244 -> 0.0052s245-- create_table("features", {:id=>:serial, :force=>:cascade})246 -> 0.0048s247-- create_table("fork_network_members", {:id=>:serial, :force=>:cascade})248 -> 0.0081s249-- create_table("fork_networks", {:id=>:serial, :force=>:cascade})250 -> 0.0046s251-- create_table("forked_project_links", {:id=>:serial, :force=>:cascade})252 -> 0.0044s253-- create_table("geo_cache_invalidation_events", {:force=>:cascade})254 -> 0.0024s255-- create_table("geo_container_repository_updated_events", {:force=>:cascade})256 -> 0.0041s257-- create_table("geo_event_log", {:force=>:cascade})258 -> 0.0314s259-- create_table("geo_hashed_storage_attachments_events", {:force=>:cascade})260 -> 0.0047s261-- create_table("geo_hashed_storage_migrated_events", {:force=>:cascade})262 -> 0.0048s263-- create_table("geo_job_artifact_deleted_events", {:force=>:cascade})264 -> 0.0053s265-- create_table("geo_lfs_object_deleted_events", {:force=>:cascade})266 -> 0.0045s267-- create_table("geo_node_namespace_links", {:id=>:serial, :force=>:cascade})268 -> 0.0082s269-- create_table("geo_node_statuses", {:id=>:serial, :force=>:cascade})270 -> 0.0062s271-- create_table("geo_nodes", {:id=>:serial, :force=>:cascade})272 -> 0.0126s273-- create_table("geo_repositories_changed_events", {:force=>:cascade})274 -> 0.0041s275-- create_table("geo_repository_created_events", {:force=>:cascade})276 -> 0.0047s277-- create_table("geo_repository_deleted_events", {:force=>:cascade})278 -> 0.0048s279-- create_table("geo_repository_renamed_events", {:force=>:cascade})280 -> 0.0048s281-- create_table("geo_repository_updated_events", {:force=>:cascade})282 -> 0.0075s283-- create_table("geo_reset_checksum_events", {:force=>:cascade})284 -> 0.0039s285-- create_table("geo_upload_deleted_events", {:force=>:cascade})286 -> 0.0046s287-- create_table("gitlab_subscriptions", {:force=>:cascade})288 -> 0.0075s289-- create_table("gpg_key_subkeys", {:id=>:serial, :force=>:cascade})290 -> 0.0084s291-- create_table("gpg_keys", {:id=>:serial, :force=>:cascade})292 -> 0.0086s293-- create_table("gpg_signatures", {:id=>:serial, :force=>:cascade})294 -> 0.0129s295-- create_table("grafana_integrations", {:force=>:cascade})296 -> 0.0049s297-- create_table("group_custom_attributes", {:id=>:serial, :force=>:cascade})298 -> 0.0068s299-- create_table("historical_data", {:id=>:serial, :force=>:cascade})300 -> 0.0021s301-- create_table("identities", {:id=>:serial, :force=>:cascade})302 -> 0.0089s303-- create_table("import_export_uploads", {:id=>:serial, :force=>:cascade})304 -> 0.0065s305-- create_table("index_statuses", {:id=>:serial, :force=>:cascade})306 -> 0.0048s307-- create_table("insights", {:id=>:serial, :force=>:cascade})308 -> 0.0059s309-- create_table("internal_ids", {:force=>:cascade})310 -> 0.0102s311-- create_table("ip_restrictions", {:force=>:cascade})312 -> 0.0045s313-- create_table("issue_assignees", {:id=>false, :force=>:cascade})314 -> 0.0049s315-- create_table("issue_links", {:id=>:serial, :force=>:cascade})316 -> 0.0081s317-- create_table("issue_metrics", {:id=>:serial, :force=>:cascade})318 -> 0.0063s319-- create_table("issue_tracker_data", {:force=>:cascade})320 -> 0.0049s321-- create_table("issues", {:id=>:serial, :force=>:cascade})322 -> 0.0514s323-- create_table("issues_prometheus_alert_events", {:id=>false, :force=>:cascade})324 -> 0.0054s325-- create_table("issues_self_managed_prometheus_alert_events", {:id=>false, :force=>:cascade})326 -> 0.0053s327-- create_table("jira_connect_installations", {:force=>:cascade})328 -> 0.0048s329-- create_table("jira_connect_subscriptions", {:force=>:cascade})330 -> 0.0082s331-- create_table("jira_tracker_data", {:force=>:cascade})332 -> 0.0049s333-- create_table("keys", {:id=>:serial, :force=>:cascade})334 -> 0.0096s335-- create_table("label_links", {:id=>:serial, :force=>:cascade})336 -> 0.0102s337-- create_table("label_priorities", {:id=>:serial, :force=>:cascade})338 -> 0.0094s339-- create_table("labels", {:id=>:serial, :force=>:cascade})340 -> 0.0134s341-- create_table("ldap_group_links", {:id=>:serial, :force=>:cascade})342 -> 0.0027s343-- create_table("lfs_file_locks", {:id=>:serial, :force=>:cascade})344 -> 0.0067s345-- create_table("lfs_objects", {:id=>:serial, :force=>:cascade})346 -> 0.0066s347-- create_table("lfs_objects_projects", {:id=>:serial, :force=>:cascade})348 -> 0.0063s349-- create_table("licenses", {:id=>:serial, :force=>:cascade})350 -> 0.0026s351-- create_table("list_user_preferences", {:force=>:cascade})352 -> 0.0085s353-- create_table("lists", {:id=>:serial, :force=>:cascade})354 -> 0.0131s355-- create_table("members", {:id=>:serial, :force=>:cascade})356 -> 0.0189s357-- create_table("merge_request_assignees", {:force=>:cascade})358 -> 0.0083s359-- create_table("merge_request_blocks", {:force=>:cascade})360 -> 0.0064s361-- create_table("merge_request_diff_commits", {:id=>false, :force=>:cascade})362 -> 0.0063s363-- create_table("merge_request_diff_files", {:id=>false, :force=>:cascade})364 -> 0.0041s365-- create_table("merge_request_diffs", {:id=>:serial, :force=>:cascade})366 -> 0.0078s367-- create_table("merge_request_metrics", {:id=>:serial, :force=>:cascade})368 -> 0.0192s369-- create_table("merge_requests", {:id=>:serial, :force=>:cascade})370 -> 0.0587s371-- create_table("merge_requests_closing_issues", {:id=>:serial, :force=>:cascade})372 -> 0.0063s373-- create_table("merge_trains", {:force=>:cascade})374 -> 0.0113s375-- create_table("milestone_releases", {:id=>false, :force=>:cascade})376 -> 0.0053s377-- create_table("milestones", {:id=>:serial, :force=>:cascade})378 -> 0.0153s379-- create_table("namespace_aggregation_schedules", {:primary_key=>"namespace_id", :id=>:integer, :default=>nil, :force=>:cascade})380 -> 0.0035s381-- create_table("namespace_root_storage_statistics", {:primary_key=>"namespace_id", :id=>:integer, :default=>nil, :force=>:cascade})382 -> 0.0062s383-- create_table("namespace_statistics", {:id=>:serial, :force=>:cascade})384 -> 0.0047s385-- create_table("namespaces", {:id=>:serial, :force=>:cascade})386 -> 0.0452s387-- create_table("note_diff_files", {:id=>:serial, :force=>:cascade})388 -> 0.0050s389-- create_table("notes", {:id=>:serial, :force=>:cascade})390 -> 0.0246s391-- create_table("notification_settings", {:id=>:serial, :force=>:cascade})392 -> 0.0101s393-- create_table("oauth_access_grants", {:id=>:serial, :force=>:cascade})394 -> 0.0051s395-- create_table("oauth_access_tokens", {:id=>:serial, :force=>:cascade})396 -> 0.0110s397-- create_table("oauth_applications", {:id=>:serial, :force=>:cascade})398 -> 0.0079s399-- create_table("oauth_openid_requests", {:id=>:serial, :force=>:cascade})400 -> 0.0045s401-- create_table("operations_feature_flag_scopes", {:force=>:cascade})402 -> 0.0059s403-- create_table("operations_feature_flags", {:force=>:cascade})404 -> 0.0048s405-- create_table("operations_feature_flags_clients", {:force=>:cascade})406 -> 0.0069s407-- create_table("packages_maven_metadata", {:force=>:cascade})408 -> 0.0049s409-- create_table("packages_package_files", {:force=>:cascade})410 -> 0.0050s411-- create_table("packages_package_metadata", {:force=>:cascade})412 -> 0.0046s413-- create_table("packages_package_tags", {:force=>:cascade})414 -> 0.0042s415-- create_table("packages_packages", {:force=>:cascade})416 -> 0.0069s417-- create_table("pages_domain_acme_orders", {:force=>:cascade})418 -> 0.0068s419-- create_table("pages_domains", {:id=>:serial, :force=>:cascade})420 -> 0.0181s421-- create_table("path_locks", {:id=>:serial, :force=>:cascade})422 -> 0.0088s423-- create_table("personal_access_tokens", {:id=>:serial, :force=>:cascade})424 -> 0.0088s425-- create_table("plans", {:id=>:serial, :force=>:cascade})426 -> 0.0053s427-- create_table("pool_repositories", {:force=>:cascade})428 -> 0.0087s429-- create_table("programming_languages", {:id=>:serial, :force=>:cascade})430 -> 0.0046s431-- create_table("project_alerting_settings", {:primary_key=>"project_id", :id=>:integer, :default=>nil, :force=>:cascade})432 -> 0.0019s433-- create_table("project_aliases", {:force=>:cascade})434 -> 0.0067s435-- create_table("project_authorizations", {:id=>false, :force=>:cascade})436 -> 0.0053s437-- create_table("project_auto_devops", {:id=>:serial, :force=>:cascade})438 -> 0.0045s439-- create_table("project_ci_cd_settings", {:id=>:serial, :force=>:cascade})440 -> 0.0057s441-- create_table("project_custom_attributes", {:id=>:serial, :force=>:cascade})442 -> 0.0068s443-- create_table("project_daily_statistics", {:force=>:cascade})444 -> 0.0042s445-- create_table("project_deploy_tokens", {:id=>:serial, :force=>:cascade})446 -> 0.0064s447-- create_table("project_error_tracking_settings", {:primary_key=>"project_id", :id=>:integer, :default=>nil, :force=>:cascade})448 -> 0.0026s449-- create_table("project_feature_usages", {:primary_key=>"project_id", :id=>:integer, :default=>nil, :force=>:cascade})450 -> 0.0080s451-- create_table("project_features", {:id=>:serial, :force=>:cascade})452 -> 0.0052s453-- create_table("project_group_links", {:id=>:serial, :force=>:cascade})454 -> 0.0070s455-- create_table("project_import_data", {:id=>:serial, :force=>:cascade})456 -> 0.0047s457-- create_table("project_incident_management_settings", {:primary_key=>"project_id", :id=>:serial, :force=>:cascade})458 -> 0.0032s459-- create_table("project_metrics_settings", {:primary_key=>"project_id", :id=>:integer, :default=>nil, :force=>:cascade})460 -> 0.0019s461-- create_table("project_mirror_data", {:id=>:serial, :force=>:cascade})462 -> 0.0157s463-- create_table("project_pages_metadata", {:id=>false, :force=>:cascade})464 -> 0.0056s465-- create_table("project_repositories", {:force=>:cascade})466 -> 0.0085s467-- create_table("project_repository_states", {:id=>:serial, :force=>:cascade})468 -> 0.0158s469-- create_table("project_statistics", {:id=>:serial, :force=>:cascade})470 -> 0.0090s471-- create_table("project_tracing_settings", {:force=>:cascade})472 -> 0.0047s473-- create_table("projects", {:id=>:serial, :force=>:cascade})474 -> 0.0694s475-- create_table("prometheus_alert_events", {:force=>:cascade})476 -> 0.0096s477-- create_table("prometheus_alerts", {:id=>:serial, :force=>:cascade})478 -> 0.0085s479-- create_table("prometheus_metrics", {:id=>:serial, :force=>:cascade})480 -> 0.0113s481-- create_table("protected_branch_merge_access_levels", {:id=>:serial, :force=>:cascade})482 -> 0.0088s483-- create_table("protected_branch_push_access_levels", {:id=>:serial, :force=>:cascade})484 -> 0.0088s485-- create_table("protected_branch_unprotect_access_levels", {:id=>:serial, :force=>:cascade})486 -> 0.0085s487-- create_table("protected_branches", {:id=>:serial, :force=>:cascade})488 -> 0.0073s489-- create_table("protected_environment_deploy_access_levels", {:id=>:serial, :force=>:cascade})490 -> 0.0088s491-- create_table("protected_environments", {:id=>:serial, :force=>:cascade})492 -> 0.0067s493-- create_table("protected_tag_create_access_levels", {:id=>:serial, :force=>:cascade})494 -> 0.0087s495-- create_table("protected_tags", {:id=>:serial, :force=>:cascade})496 -> 0.0069s497-- create_table("push_event_payloads", {:id=>false, :force=>:cascade})498 -> 0.0038s499-- create_table("push_rules", {:id=>:serial, :force=>:cascade})500 -> 0.0092s501-- create_table("redirect_routes", {:id=>:serial, :force=>:cascade})502 -> 0.0086s503-- create_table("release_links", {:force=>:cascade})504 -> 0.0067s505-- create_table("releases", {:id=>:serial, :force=>:cascade})506 -> 0.0068s507-- create_table("remote_mirrors", {:id=>:serial, :force=>:cascade})508 -> 0.0080s509-- create_table("repository_languages", {:id=>false, :force=>:cascade})510 -> 0.0032s511-- create_table("resource_label_events", {:force=>:cascade})512 -> 0.0131s513-- create_table("reviews", {:force=>:cascade})514 -> 0.0080s515-- create_table("routes", {:id=>:serial, :force=>:cascade})516 -> 0.0089s517-- create_table("saml_providers", {:id=>:serial, :force=>:cascade})518 -> 0.0056s519-- create_table("scim_oauth_access_tokens", {:id=>:serial, :force=>:cascade})520 -> 0.0046s521-- create_table("self_managed_prometheus_alert_events", {:force=>:cascade})522 -> 0.0070s523-- create_table("sent_notifications", {:id=>:serial, :force=>:cascade})524 -> 0.0049s525-- create_table("services", {:id=>:serial, :force=>:cascade})526 -> 0.0156s527-- create_table("shards", {:id=>:serial, :force=>:cascade})528 -> 0.0045s529-- create_table("slack_integrations", {:id=>:serial, :force=>:cascade})530 -> 0.0068s531-- create_table("smartcard_identities", {:force=>:cascade})532 -> 0.0067s533-- create_table("snippets", {:id=>:serial, :force=>:cascade})534 -> 0.0178s535-- create_table("software_license_policies", {:id=>:serial, :force=>:cascade})536 -> 0.0066s537-- create_table("software_licenses", {:id=>:serial, :force=>:cascade})538 -> 0.0067s539-- create_table("spam_logs", {:id=>:serial, :force=>:cascade})540 -> 0.0037s541-- create_table("subscriptions", {:id=>:serial, :force=>:cascade})542 -> 0.0071s543-- create_table("suggestions", {:force=>:cascade})544 -> 0.0069s545-- create_table("system_note_metadata", {:id=>:serial, :force=>:cascade})546 -> 0.0070s547-- create_table("taggings", {:id=>:serial, :force=>:cascade})548 -> 0.0112s549-- create_table("tags", {:id=>:serial, :force=>:cascade})550 -> 0.0071s551-- create_table("term_agreements", {:id=>:serial, :force=>:cascade})552 -> 0.0097s553-- create_table("timelogs", {:id=>:serial, :force=>:cascade})554 -> 0.0084s555-- create_table("todos", {:id=>:serial, :force=>:cascade})556 -> 0.0237s557-- create_table("trending_projects", {:id=>:serial, :force=>:cascade})558 -> 0.0040s559-- create_table("u2f_registrations", {:id=>:serial, :force=>:cascade})560 -> 0.0067s561-- create_table("uploads", {:id=>:serial, :force=>:cascade})562 -> 0.0112s563-- create_table("user_agent_details", {:id=>:serial, :force=>:cascade})564 -> 0.0053s565-- create_table("user_callouts", {:id=>:serial, :force=>:cascade})566 -> 0.0061s567-- create_table("user_custom_attributes", {:id=>:serial, :force=>:cascade})568 -> 0.0069s569-- create_table("user_interacted_projects", {:id=>false, :force=>:cascade})570 -> 0.0051s571-- create_table("user_preferences", {:id=>:serial, :force=>:cascade})572 -> 0.0069s573-- create_table("user_statuses", {:primary_key=>"user_id", :id=>:serial, :force=>:cascade})574 -> 0.0052s575-- create_table("user_synced_attributes_metadata", {:id=>:serial, :force=>:cascade})576 -> 0.0057s577-- create_table("users", {:id=>:serial, :force=>:cascade})578 -> 0.0708s579-- create_table("users_ops_dashboard_projects", {:force=>:cascade})580 -> 0.0064s581-- create_table("users_star_projects", {:id=>:serial, :force=>:cascade})582 -> 0.0063s583-- create_table("vulnerabilities", {:force=>:cascade})584 -> 0.0229s585-- create_table("vulnerability_feedback", {:id=>:serial, :force=>:cascade})586 -> 0.0155s587-- create_table("vulnerability_identifiers", {:force=>:cascade})588 -> 0.0052s589-- create_table("vulnerability_occurrence_identifiers", {:force=>:cascade})590 -> 0.0067s591-- create_table("vulnerability_occurrence_pipelines", {:force=>:cascade})592 -> 0.0066s593-- create_table("vulnerability_occurrences", {:force=>:cascade})594 -> 0.0138s595-- create_table("vulnerability_scanners", {:force=>:cascade})596 -> 0.0050s597-- create_table("web_hook_logs", {:id=>:serial, :force=>:cascade})598 -> 0.0074s599-- create_table("web_hooks", {:id=>:serial, :force=>:cascade})600 -> 0.0124s601-- create_table("zoom_meetings", {:force=>:cascade})602 -> 0.0092s603-- add_foreign_key("alerts_service_data", "services", {:on_delete=>:cascade})604 -> 0.0024s605-- add_foreign_key("allowed_email_domains", "namespaces", {:column=>"group_id", :on_delete=>:cascade})606 -> 0.0024s607-- add_foreign_key("analytics_cycle_analytics_group_stages", "labels", {:column=>"end_event_label_id", :on_delete=>:cascade})608 -> 0.0019s609-- add_foreign_key("analytics_cycle_analytics_group_stages", "labels", {:column=>"start_event_label_id", :on_delete=>:cascade})610 -> 0.0013s611-- add_foreign_key("analytics_cycle_analytics_group_stages", "namespaces", {:column=>"group_id", :on_delete=>:cascade})612 -> 0.0014s613-- add_foreign_key("analytics_cycle_analytics_project_stages", "labels", {:column=>"end_event_label_id", :on_delete=>:cascade})614 -> 0.0015s615-- add_foreign_key("analytics_cycle_analytics_project_stages", "labels", {:column=>"start_event_label_id", :on_delete=>:cascade})616 -> 0.0013s617-- add_foreign_key("analytics_cycle_analytics_project_stages", "projects", {:on_delete=>:cascade})618 -> 0.0028s619-- add_foreign_key("analytics_language_trend_repository_languages", "programming_languages", {:on_delete=>:cascade})620 -> 0.0015s621-- add_foreign_key("analytics_language_trend_repository_languages", "projects", {:on_delete=>:cascade})622 -> 0.0022s623-- add_foreign_key("analytics_repository_file_commits", "analytics_repository_files", {:on_delete=>:cascade})624 -> 0.0015s625-- add_foreign_key("analytics_repository_file_commits", "projects", {:on_delete=>:cascade})626 -> 0.0018s627-- add_foreign_key("analytics_repository_file_edits", "analytics_repository_files", {:on_delete=>:cascade})628 -> 0.0014s629-- add_foreign_key("analytics_repository_file_edits", "projects", {:on_delete=>:cascade})630 -> 0.0018s631-- add_foreign_key("analytics_repository_files", "projects", {:on_delete=>:cascade})632 -> 0.0016s633-- add_foreign_key("application_settings", "namespaces", {:column=>"custom_project_templates_group_id", :on_delete=>:nullify})634 -> 0.0032s635-- add_foreign_key("application_settings", "projects", {:column=>"file_template_project_id", :name=>"fk_ec757bd087", :on_delete=>:nullify})636 -> 0.0025s637-- add_foreign_key("application_settings", "projects", {:column=>"instance_administration_project_id", :on_delete=>:nullify})638 -> 0.0025s639-- add_foreign_key("application_settings", "users", {:column=>"usage_stats_set_by_user_id", :name=>"fk_964370041d", :on_delete=>:nullify})640 -> 0.0034s641-- add_foreign_key("approval_merge_request_rule_sources", "approval_merge_request_rules", {:on_delete=>:cascade})642 -> 0.0018s643-- add_foreign_key("approval_merge_request_rule_sources", "approval_project_rules", {:on_delete=>:cascade})644 -> 0.0015s645-- add_foreign_key("approval_merge_request_rules", "merge_requests", {:on_delete=>:cascade})646 -> 0.0026s647-- add_foreign_key("approval_merge_request_rules_approved_approvers", "approval_merge_request_rules", {:on_delete=>:cascade})648 -> 0.0015s649-- add_foreign_key("approval_merge_request_rules_approved_approvers", "users", {:on_delete=>:cascade})650 -> 0.0016s651-- add_foreign_key("approval_merge_request_rules_groups", "approval_merge_request_rules", {:on_delete=>:cascade})652 -> 0.0014s653-- add_foreign_key("approval_merge_request_rules_groups", "namespaces", {:column=>"group_id", :on_delete=>:cascade})654 -> 0.0015s655-- add_foreign_key("approval_merge_request_rules_users", "approval_merge_request_rules", {:on_delete=>:cascade})656 -> 0.0015s657-- add_foreign_key("approval_merge_request_rules_users", "users", {:on_delete=>:cascade})658 -> 0.0016s659-- add_foreign_key("approval_project_rules", "projects", {:on_delete=>:cascade})660 -> 0.0017s661-- add_foreign_key("approval_project_rules_groups", "approval_project_rules", {:on_delete=>:cascade})662 -> 0.0014s663-- add_foreign_key("approval_project_rules_groups", "namespaces", {:column=>"group_id", :on_delete=>:cascade})664 -> 0.0014s665-- add_foreign_key("approval_project_rules_users", "approval_project_rules", {:on_delete=>:cascade})666 -> 0.0015s667-- add_foreign_key("approval_project_rules_users", "users", {:on_delete=>:cascade})668 -> 0.0016s669-- add_foreign_key("approvals", "merge_requests", {:name=>"fk_310d714958", :on_delete=>:cascade})670 -> 0.0016s671-- add_foreign_key("approver_groups", "namespaces", {:column=>"group_id", :on_delete=>:cascade})672 -> 0.0016s673-- add_foreign_key("aws_roles", "users", {:on_delete=>:cascade})674 -> 0.0018s675-- add_foreign_key("badges", "namespaces", {:column=>"group_id", :on_delete=>:cascade})676 -> 0.0015s677-- add_foreign_key("badges", "projects", {:on_delete=>:cascade})678 -> 0.0017s679-- add_foreign_key("board_assignees", "boards", {:on_delete=>:cascade})680 -> 0.0016s681-- add_foreign_key("board_assignees", "users", {:column=>"assignee_id", :on_delete=>:cascade})682 -> 0.0017s683-- add_foreign_key("board_group_recent_visits", "boards", {:on_delete=>:cascade})684 -> 0.0015s685-- add_foreign_key("board_group_recent_visits", "namespaces", {:column=>"group_id", :on_delete=>:cascade})686 -> 0.0014s687-- add_foreign_key("board_group_recent_visits", "users", {:on_delete=>:cascade})688 -> 0.0016s689-- add_foreign_key("board_labels", "boards", {:on_delete=>:cascade})690 -> 0.0014s691-- add_foreign_key("board_labels", "labels", {:on_delete=>:cascade})692 -> 0.0013s693-- add_foreign_key("board_project_recent_visits", "boards", {:on_delete=>:cascade})694 -> 0.0015s695-- add_foreign_key("board_project_recent_visits", "projects", {:on_delete=>:cascade})696 -> 0.0016s697-- add_foreign_key("board_project_recent_visits", "users", {:on_delete=>:cascade})698 -> 0.0017s699-- add_foreign_key("boards", "namespaces", {:column=>"group_id", :name=>"fk_1e9a074a35", :on_delete=>:cascade})700 -> 0.0014s701-- add_foreign_key("boards", "projects", {:name=>"fk_f15266b5f9", :on_delete=>:cascade})702 -> 0.0016s703-- add_foreign_key("chat_teams", "namespaces", {:on_delete=>:cascade})704 -> 0.0016s705-- add_foreign_key("ci_build_needs", "ci_builds", {:column=>"build_id", :on_delete=>:cascade})706 -> 0.0026s707-- add_foreign_key("ci_build_trace_chunks", "ci_builds", {:column=>"build_id", :on_delete=>:cascade})708 -> 0.0017s709-- add_foreign_key("ci_build_trace_section_names", "projects", {:on_delete=>:cascade})710 -> 0.0018s711-- add_foreign_key("ci_build_trace_sections", "ci_build_trace_section_names", {:column=>"section_name_id", :name=>"fk_264e112c66", :on_delete=>:cascade})712 -> 0.0013s713-- add_foreign_key("ci_build_trace_sections", "ci_builds", {:column=>"build_id", :name=>"fk_4ebe41f502", :on_delete=>:cascade})714 -> 0.0015s715-- add_foreign_key("ci_build_trace_sections", "projects", {:on_delete=>:cascade})716 -> 0.0017s717-- add_foreign_key("ci_builds", "ci_pipelines", {:column=>"auto_canceled_by_id", :name=>"fk_a2141b1522", :on_delete=>:nullify})718 -> 0.0028s719-- add_foreign_key("ci_builds", "ci_pipelines", {:column=>"commit_id", :name=>"fk_d3130c9a7f", :on_delete=>:cascade})720 -> 0.0016s721-- add_foreign_key("ci_builds", "ci_pipelines", {:column=>"upstream_pipeline_id", :name=>"fk_87f4cefcda", :on_delete=>:cascade})722 -> 0.0016s723-- add_foreign_key("ci_builds", "ci_stages", {:column=>"stage_id", :name=>"fk_3a9eaa254d", :on_delete=>:cascade})724 -> 0.0018s725-- add_foreign_key("ci_builds", "projects", {:name=>"fk_befce0568a", :on_delete=>:cascade})726 -> 0.0020s727-- add_foreign_key("ci_builds_metadata", "ci_builds", {:column=>"build_id", :on_delete=>:cascade})728 -> 0.0017s729-- add_foreign_key("ci_builds_metadata", "projects", {:on_delete=>:cascade})730 -> 0.0018s731-- add_foreign_key("ci_builds_runner_session", "ci_builds", {:column=>"build_id", :on_delete=>:cascade})732 -> 0.0016s733-- add_foreign_key("ci_group_variables", "namespaces", {:column=>"group_id", :name=>"fk_33ae4d58d8", :on_delete=>:cascade})734 -> 0.0017s735-- add_foreign_key("ci_job_artifacts", "ci_builds", {:column=>"job_id", :on_delete=>:cascade})736 -> 0.0019s737-- add_foreign_key("ci_job_artifacts", "projects", {:on_delete=>:cascade})738 -> 0.0018s739-- add_foreign_key("ci_job_variables", "ci_builds", {:column=>"job_id", :on_delete=>:cascade})740 -> 0.0016s741-- add_foreign_key("ci_pipeline_chat_data", "chat_names", {:on_delete=>:cascade})742 -> 0.0017s743-- add_foreign_key("ci_pipeline_chat_data", "ci_pipelines", {:column=>"pipeline_id", :on_delete=>:cascade})744 -> 0.0013s745-- add_foreign_key("ci_pipeline_schedule_variables", "ci_pipeline_schedules", {:column=>"pipeline_schedule_id", :name=>"fk_41c35fda51", :on_delete=>:cascade})746 -> 0.0014s747-- add_foreign_key("ci_pipeline_schedules", "projects", {:name=>"fk_8ead60fcc4", :on_delete=>:cascade})748 -> 0.0018s749-- add_foreign_key("ci_pipeline_schedules", "users", {:column=>"owner_id", :name=>"fk_9ea99f58d2", :on_delete=>:nullify})750 -> 0.0017s751-- add_foreign_key("ci_pipeline_variables", "ci_pipelines", {:column=>"pipeline_id", :name=>"fk_f29c5f4380", :on_delete=>:cascade})752 -> 0.0015s753-- add_foreign_key("ci_pipelines", "ci_pipeline_schedules", {:column=>"pipeline_schedule_id", :name=>"fk_3d34ab2e06", :on_delete=>:nullify})754 -> 0.0014s755-- add_foreign_key("ci_pipelines", "ci_pipelines", {:column=>"auto_canceled_by_id", :name=>"fk_262d4c2d19", :on_delete=>:nullify})756 -> 0.0015s757-- add_foreign_key("ci_pipelines", "external_pull_requests", {:name=>"fk_190998ef09", :on_delete=>:nullify})758 -> 0.0016s759-- add_foreign_key("ci_pipelines", "merge_requests", {:name=>"fk_a23be95014", :on_delete=>:cascade})760 -> 0.0017s761-- add_foreign_key("ci_pipelines", "projects", {:name=>"fk_86635dbd80", :on_delete=>:cascade})762 -> 0.0018s763-- add_foreign_key("ci_runner_namespaces", "ci_runners", {:column=>"runner_id", :on_delete=>:cascade})764 -> 0.0022s765-- add_foreign_key("ci_runner_namespaces", "namespaces", {:on_delete=>:cascade})766 -> 0.0016s767-- add_foreign_key("ci_runner_projects", "projects", {:name=>"fk_4478a6f1e4", :on_delete=>:cascade})768 -> 0.0018s769-- add_foreign_key("ci_sources_pipelines", "ci_builds", {:column=>"source_job_id", :name=>"fk_be5624bf37", :on_delete=>:cascade})770 -> 0.0017s771-- add_foreign_key("ci_sources_pipelines", "ci_pipelines", {:column=>"pipeline_id", :name=>"fk_e1bad85861", :on_delete=>:cascade})772 -> 0.0014s773-- add_foreign_key("ci_sources_pipelines", "ci_pipelines", {:column=>"source_pipeline_id", :name=>"fk_d4e29af7d7", :on_delete=>:cascade})774 -> 0.0013s775-- add_foreign_key("ci_sources_pipelines", "projects", {:column=>"source_project_id", :name=>"fk_acd9737679", :on_delete=>:cascade})776 -> 0.0016s777-- add_foreign_key("ci_sources_pipelines", "projects", {:name=>"fk_1e53c97c0a", :on_delete=>:cascade})778 -> 0.0017s779-- add_foreign_key("ci_stages", "ci_pipelines", {:column=>"pipeline_id", :name=>"fk_fb57e6cc56", :on_delete=>:cascade})780 -> 0.0014s781-- add_foreign_key("ci_stages", "projects", {:name=>"fk_2360681d1d", :on_delete=>:cascade})782 -> 0.0016s783-- add_foreign_key("ci_trigger_requests", "ci_triggers", {:column=>"trigger_id", :name=>"fk_b8ec8b7245", :on_delete=>:cascade})784 -> 0.0014s785-- add_foreign_key("ci_triggers", "projects", {:name=>"fk_e3e63f966e", :on_delete=>:cascade})786 -> 0.0017s787-- add_foreign_key("ci_triggers", "users", {:column=>"owner_id", :name=>"fk_e8e10d1964", :on_delete=>:cascade})788 -> 0.0015s789-- add_foreign_key("ci_variables", "projects", {:name=>"fk_ada5eb64b3", :on_delete=>:cascade})790 -> 0.0018s791-- add_foreign_key("cluster_groups", "clusters", {:on_delete=>:cascade})792 -> 0.0017s793-- add_foreign_key("cluster_groups", "namespaces", {:column=>"group_id", :on_delete=>:cascade})794 -> 0.0014s795-- add_foreign_key("cluster_platforms_kubernetes", "clusters", {:on_delete=>:cascade})796 -> 0.0016s797-- add_foreign_key("cluster_projects", "clusters", {:on_delete=>:cascade})798 -> 0.0014s799-- add_foreign_key("cluster_projects", "projects", {:on_delete=>:cascade})800 -> 0.0017s801-- add_foreign_key("cluster_providers_aws", "clusters", {:on_delete=>:cascade})802 -> 0.0018s803-- add_foreign_key("cluster_providers_aws", "users", {:column=>"created_by_user_id", :on_delete=>:nullify})804 -> 0.0016s805-- add_foreign_key("cluster_providers_gcp", "clusters", {:on_delete=>:cascade})806 -> 0.0016s807-- add_foreign_key("clusters", "projects", {:column=>"management_project_id", :name=>"fk_f05c5e5a42", :on_delete=>:nullify})808 -> 0.0017s809-- add_foreign_key("clusters", "users", {:on_delete=>:nullify})810 -> 0.0018s811-- add_foreign_key("clusters_applications_cert_managers", "clusters", {:on_delete=>:cascade})812 -> 0.0014s813-- add_foreign_key("clusters_applications_elastic_stacks", "clusters", {:on_delete=>:cascade})814 -> 0.0014s815-- add_foreign_key("clusters_applications_helm", "clusters", {:on_delete=>:cascade})816 -> 0.0014s817-- add_foreign_key("clusters_applications_ingress", "clusters", {:on_delete=>:cascade})818 -> 0.0014s819-- add_foreign_key("clusters_applications_jupyter", "clusters", {:on_delete=>:cascade})820 -> 0.0014s821-- add_foreign_key("clusters_applications_jupyter", "oauth_applications", {:on_delete=>:nullify})822 -> 0.0014s823-- add_foreign_key("clusters_applications_knative", "clusters", {:on_delete=>:cascade})824 -> 0.0015s825-- add_foreign_key("clusters_applications_prometheus", "clusters", {:name=>"fk_557e773639", :on_delete=>:cascade})826 -> 0.0014s827-- add_foreign_key("clusters_applications_runners", "ci_runners", {:column=>"runner_id", :name=>"fk_02de2ded36", :on_delete=>:nullify})828 -> 0.0014s829-- add_foreign_key("clusters_applications_runners", "clusters", {:on_delete=>:cascade})830 -> 0.0013s831-- add_foreign_key("clusters_kubernetes_namespaces", "cluster_projects", {:on_delete=>:nullify})832 -> 0.0015s833-- add_foreign_key("clusters_kubernetes_namespaces", "clusters", {:on_delete=>:cascade})834 -> 0.0013s835-- add_foreign_key("clusters_kubernetes_namespaces", "environments", {:on_delete=>:nullify})836 -> 0.0016s837-- add_foreign_key("clusters_kubernetes_namespaces", "projects", {:on_delete=>:nullify})838 -> 0.0019s839-- add_foreign_key("container_repositories", "projects")840 -> 0.0019s841-- add_foreign_key("dependency_proxy_blobs", "namespaces", {:column=>"group_id", :on_delete=>:cascade})842 -> 0.0016s843-- add_foreign_key("dependency_proxy_group_settings", "namespaces", {:column=>"group_id", :on_delete=>:cascade})844 -> 0.0015s845-- add_foreign_key("deploy_keys_projects", "projects", {:name=>"fk_58a901ca7e", :on_delete=>:cascade})846 -> 0.0017s847-- add_foreign_key("deployments", "clusters", {:name=>"fk_289bba3222", :on_delete=>:nullify})848 -> 0.0019s849-- add_foreign_key("deployments", "projects", {:name=>"fk_b9a3851b82", :on_delete=>:cascade})850 -> 0.0017s851-- add_foreign_key("description_versions", "epics", {:on_delete=>:cascade})852 -> 0.0021s853-- add_foreign_key("description_versions", "issues", {:on_delete=>:cascade})854 -> 0.0024s855-- add_foreign_key("description_versions", "merge_requests", {:on_delete=>:cascade})856 -> 0.0016s857-- add_foreign_key("design_management_designs", "issues", {:on_delete=>:cascade})858 -> 0.0016s859-- add_foreign_key("design_management_designs", "projects", {:on_delete=>:cascade})860 -> 0.0017s861-- add_foreign_key("design_management_designs_versions", "design_management_designs", {:column=>"design_id", :name=>"fk_03c671965c", :on_delete=>:cascade})862 -> 0.0015s863-- add_foreign_key("design_management_designs_versions", "design_management_versions", {:column=>"version_id", :name=>"fk_f4d25ba00c", :on_delete=>:cascade})864 -> 0.0015s865-- add_foreign_key("design_management_versions", "issues", {:on_delete=>:cascade})866 -> 0.0015s867-- add_foreign_key("design_management_versions", "users", {:column=>"author_id", :name=>"fk_c1440b4896", :on_delete=>:nullify})868 -> 0.0016s869-- add_foreign_key("draft_notes", "merge_requests", {:on_delete=>:cascade})870 -> 0.0018s871-- add_foreign_key("draft_notes", "users", {:column=>"author_id", :on_delete=>:cascade})872 -> 0.0016s873-- add_foreign_key("elasticsearch_indexed_namespaces", "namespaces", {:on_delete=>:cascade})874 -> 0.0016s875-- add_foreign_key("elasticsearch_indexed_projects", "projects", {:on_delete=>:cascade})876 -> 0.0018s877-- add_foreign_key("environments", "projects", {:name=>"fk_d1c8c1da6a", :on_delete=>:cascade})878 -> 0.0017s879-- add_foreign_key("epic_issues", "epics", {:on_delete=>:cascade})880 -> 0.0016s881-- add_foreign_key("epic_issues", "issues", {:on_delete=>:cascade})882 -> 0.0015s883-- add_foreign_key("epic_metrics", "epics", {:on_delete=>:cascade})884 -> 0.0014s885-- add_foreign_key("epics", "epics", {:column=>"due_date_sourcing_epic_id", :name=>"fk_013c9f36ca", :on_delete=>:nullify})886 -> 0.0013s887-- add_foreign_key("epics", "epics", {:column=>"parent_id", :name=>"fk_25b99c1be3", :on_delete=>:cascade})888 -> 0.0013s889-- add_foreign_key("epics", "epics", {:column=>"start_date_sourcing_epic_id", :name=>"fk_9d480c64b2", :on_delete=>:nullify})890 -> 0.0014s891-- add_foreign_key("epics", "milestones", {:on_delete=>:nullify})892 -> 0.0017s893-- add_foreign_key("epics", "namespaces", {:column=>"group_id", :name=>"fk_f081aa4489", :on_delete=>:cascade})894 -> 0.0018s895-- add_foreign_key("epics", "users", {:column=>"assignee_id", :name=>"fk_dccd3f98fc", :on_delete=>:nullify})896 -> 0.0018s897-- add_foreign_key("epics", "users", {:column=>"author_id", :name=>"fk_3654b61b03", :on_delete=>:cascade})898 -> 0.0017s899-- add_foreign_key("epics", "users", {:column=>"closed_by_id", :name=>"fk_aa5798e761", :on_delete=>:nullify})900 -> 0.0017s901-- add_foreign_key("events", "namespaces", {:column=>"group_id", :name=>"fk_61fbf6ca48", :on_delete=>:cascade})902 -> 0.0019s903-- add_foreign_key("events", "projects", {:on_delete=>:cascade})904 -> 0.0019s905-- add_foreign_key("events", "users", {:column=>"author_id", :name=>"fk_edfd187b6f", :on_delete=>:cascade})906 -> 0.0019s907-- add_foreign_key("evidences", "releases", {:on_delete=>:cascade})908 -> 0.0015s909-- add_foreign_key("external_pull_requests", "projects", {:on_delete=>:cascade})910 -> 0.0018s911-- add_foreign_key("fork_network_members", "fork_networks", {:on_delete=>:cascade})912 -> 0.0025s913-- add_foreign_key("fork_network_members", "projects", {:column=>"forked_from_project_id", :name=>"fk_b01280dae4", :on_delete=>:nullify})914 -> 0.0018s915-- add_foreign_key("fork_network_members", "projects", {:on_delete=>:cascade})916 -> 0.0018s917-- add_foreign_key("fork_networks", "projects", {:column=>"root_project_id", :name=>"fk_e7b436b2b5", :on_delete=>:nullify})918 -> 0.0016s919-- add_foreign_key("forked_project_links", "projects", {:column=>"forked_to_project_id", :name=>"fk_434510edb0", :on_delete=>:cascade})920 -> 0.0017s921-- add_foreign_key("geo_container_repository_updated_events", "container_repositories", {:name=>"fk_212c89c706", :on_delete=>:cascade})922 -> 0.0014s923-- add_foreign_key("geo_event_log", "geo_cache_invalidation_events", {:column=>"cache_invalidation_event_id", :name=>"fk_42c3b54bed", :on_delete=>:cascade})924 -> 0.0019s925-- add_foreign_key("geo_event_log", "geo_container_repository_updated_events", {:column=>"container_repository_updated_event_id", :name=>"fk_6ada82d42a", :on_delete=>:cascade})926 -> 0.0012s927-- add_foreign_key("geo_event_log", "geo_hashed_storage_migrated_events", {:column=>"hashed_storage_migrated_event_id", :name=>"fk_27548c6db3", :on_delete=>:cascade})928 -> 0.0014s929-- add_foreign_key("geo_event_log", "geo_job_artifact_deleted_events", {:column=>"job_artifact_deleted_event_id", :name=>"fk_176d3fbb5d", :on_delete=>:cascade})930 -> 0.0014s931-- add_foreign_key("geo_event_log", "geo_lfs_object_deleted_events", {:column=>"lfs_object_deleted_event_id", :name=>"fk_d5af95fcd9", :on_delete=>:cascade})932 -> 0.0015s933-- add_foreign_key("geo_event_log", "geo_repositories_changed_events", {:column=>"repositories_changed_event_id", :name=>"fk_4a99ebfd60", :on_delete=>:cascade})934 -> 0.0023s935-- add_foreign_key("geo_event_log", "geo_repository_created_events", {:column=>"repository_created_event_id", :name=>"fk_9b9afb1916", :on_delete=>:cascade})936 -> 0.0017s937-- add_foreign_key("geo_event_log", "geo_repository_deleted_events", {:column=>"repository_deleted_event_id", :name=>"fk_c4b1c1f66e", :on_delete=>:cascade})938 -> 0.0016s939-- add_foreign_key("geo_event_log", "geo_repository_renamed_events", {:column=>"repository_renamed_event_id", :name=>"fk_86c84214ec", :on_delete=>:cascade})940 -> 0.0015s941-- add_foreign_key("geo_event_log", "geo_repository_updated_events", {:column=>"repository_updated_event_id", :name=>"fk_78a6492f68", :on_delete=>:cascade})942 -> 0.0015s943-- add_foreign_key("geo_event_log", "geo_reset_checksum_events", {:column=>"reset_checksum_event_id", :name=>"fk_cff7185ad2", :on_delete=>:cascade})944 -> 0.0013s945-- add_foreign_key("geo_event_log", "geo_upload_deleted_events", {:column=>"upload_deleted_event_id", :name=>"fk_c1f241c70d", :on_delete=>:cascade})946 -> 0.0014s947-- add_foreign_key("geo_hashed_storage_attachments_events", "projects", {:on_delete=>:cascade})948 -> 0.0020s949-- add_foreign_key("geo_hashed_storage_migrated_events", "projects", {:on_delete=>:cascade})950 -> 0.0018s951-- add_foreign_key("geo_node_namespace_links", "geo_nodes", {:on_delete=>:cascade})952 -> 0.0017s953-- add_foreign_key("geo_node_namespace_links", "namespaces", {:on_delete=>:cascade})954 -> 0.0016s955-- add_foreign_key("geo_node_statuses", "geo_nodes", {:on_delete=>:cascade})956 -> 0.0017s957-- add_foreign_key("geo_repositories_changed_events", "geo_nodes", {:on_delete=>:cascade})958 -> 0.0012s959-- add_foreign_key("geo_repository_created_events", "projects", {:on_delete=>:cascade})960 -> 0.0023s961-- add_foreign_key("geo_repository_renamed_events", "projects", {:on_delete=>:cascade})962 -> 0.0018s963-- add_foreign_key("geo_repository_updated_events", "projects", {:on_delete=>:cascade})964 -> 0.0023s965-- add_foreign_key("geo_reset_checksum_events", "projects", {:on_delete=>:cascade})966 -> 0.0020s967-- add_foreign_key("gitlab_subscriptions", "namespaces", {:name=>"fk_e2595d00a1", :on_delete=>:cascade})968 -> 0.0020s969-- add_foreign_key("gitlab_subscriptions", "plans", {:column=>"hosted_plan_id", :name=>"fk_bd0c4019c3", :on_delete=>:cascade})970 -> 0.0014s971-- add_foreign_key("gpg_key_subkeys", "gpg_keys", {:on_delete=>:cascade})972 -> 0.0017s973-- add_foreign_key("gpg_keys", "users", {:on_delete=>:cascade})974 -> 0.0018s975-- add_foreign_key("gpg_signatures", "gpg_key_subkeys", {:on_delete=>:nullify})976 -> 0.0017s977-- add_foreign_key("gpg_signatures", "gpg_keys", {:on_delete=>:nullify})978 -> 0.0015s979-- add_foreign_key("gpg_signatures", "projects", {:on_delete=>:cascade})980 -> 0.0020s981-- add_foreign_key("grafana_integrations", "projects", {:on_delete=>:cascade})982 -> 0.0019s983-- add_foreign_key("group_custom_attributes", "namespaces", {:column=>"group_id", :on_delete=>:cascade})984 -> 0.0016s985-- add_foreign_key("identities", "saml_providers", {:name=>"fk_aade90f0fc", :on_delete=>:cascade})986 -> 0.0016s987-- add_foreign_key("import_export_uploads", "projects", {:on_delete=>:cascade})988 -> 0.0019s989-- add_foreign_key("index_statuses", "projects", {:name=>"fk_74b2492545", :on_delete=>:cascade})990 -> 0.0019s991-- add_foreign_key("insights", "namespaces", {:on_delete=>:cascade})992 -> 0.0046s993-- add_foreign_key("insights", "projects", {:on_delete=>:cascade})994 -> 0.0020s995-- add_foreign_key("internal_ids", "namespaces", {:name=>"fk_162941d509", :on_delete=>:cascade})996 -> 0.0019s997-- add_foreign_key("internal_ids", "projects", {:on_delete=>:cascade})998 -> 0.0018s999-- add_foreign_key("ip_restrictions", "namespaces", {:column=>"group_id", :on_delete=>:cascade})1000 -> 0.0015s1001-- add_foreign_key("issue_assignees", "issues", {:name=>"fk_b7d881734a", :on_delete=>:cascade})1002 -> 0.0016s1003-- add_foreign_key("issue_assignees", "users", {:name=>"fk_5e0c8d9154", :on_delete=>:cascade})1004 -> 0.0016s1005-- add_foreign_key("issue_links", "issues", {:column=>"source_id", :name=>"fk_c900194ff2", :on_delete=>:cascade})1006 -> 0.0016s1007-- add_foreign_key("issue_links", "issues", {:column=>"target_id", :name=>"fk_e71bb44f1f", :on_delete=>:cascade})1008 -> 0.0014s1009-- add_foreign_key("issue_metrics", "issues", {:on_delete=>:cascade})1010 -> 0.0016s1011-- add_foreign_key("issue_tracker_data", "services", {:on_delete=>:cascade})1012 -> 0.0015s1013-- add_foreign_key("issues", "issues", {:column=>"duplicated_to_id", :name=>"fk_9c4516d665", :on_delete=>:nullify})1014 -> 0.0014s1015-- add_foreign_key("issues", "issues", {:column=>"moved_to_id", :name=>"fk_a194299be1", :on_delete=>:nullify})1016 -> 0.0015s1017-- add_foreign_key("issues", "milestones", {:name=>"fk_96b1dd429c", :on_delete=>:nullify})1018 -> 0.0015s1019-- add_foreign_key("issues", "projects", {:name=>"fk_899c8f3231", :on_delete=>:cascade})1020 -> 0.0021s1021-- add_foreign_key("issues", "users", {:column=>"author_id", :name=>"fk_05f1e72feb", :on_delete=>:nullify})1022 -> 0.0018s1023-- add_foreign_key("issues", "users", {:column=>"closed_by_id", :name=>"fk_c63cbf6c25", :on_delete=>:nullify})1024 -> 0.0018s1025-- add_foreign_key("issues", "users", {:column=>"updated_by_id", :name=>"fk_ffed080f01", :on_delete=>:nullify})1026 -> 0.0018s1027-- add_foreign_key("issues_prometheus_alert_events", "issues", {:on_delete=>:cascade})1028 -> 0.0016s1029-- add_foreign_key("issues_prometheus_alert_events", "prometheus_alert_events", {:on_delete=>:cascade})1030 -> 0.0015s1031-- add_foreign_key("issues_self_managed_prometheus_alert_events", "issues", {:on_delete=>:cascade})1032 -> 0.0016s1033-- add_foreign_key("issues_self_managed_prometheus_alert_events", "self_managed_prometheus_alert_events", {:on_delete=>:cascade})1034 -> 0.0014s1035-- add_foreign_key("jira_connect_subscriptions", "jira_connect_installations", {:on_delete=>:cascade})1036 -> 0.0045s1037-- add_foreign_key("jira_connect_subscriptions", "namespaces", {:on_delete=>:cascade})1038 -> 0.0025s1039-- add_foreign_key("jira_tracker_data", "services", {:on_delete=>:cascade})1040 -> 0.0022s1041-- add_foreign_key("label_links", "labels", {:name=>"fk_d97dd08678", :on_delete=>:cascade})1042 -> 0.0020s1043-- add_foreign_key("label_priorities", "labels", {:on_delete=>:cascade})1044 -> 0.0020s1045-- add_foreign_key("label_priorities", "projects", {:on_delete=>:cascade})1046 -> 0.0025s1047-- add_foreign_key("labels", "namespaces", {:column=>"group_id", :on_delete=>:cascade})1048 -> 0.0017s1049-- add_foreign_key("labels", "projects", {:name=>"fk_7de4989a69", :on_delete=>:cascade})1050 -> 0.0023s1051-- add_foreign_key("lfs_file_locks", "projects", {:on_delete=>:cascade})1052 -> 0.0019s1053-- add_foreign_key("lfs_file_locks", "users", {:on_delete=>:cascade})1054 -> 0.0018s1055-- add_foreign_key("list_user_preferences", "lists", {:on_delete=>:cascade})1056 -> 0.0017s1057-- add_foreign_key("list_user_preferences", "users", {:on_delete=>:cascade})1058 -> 0.0018s1059-- add_foreign_key("lists", "boards", {:name=>"fk_0d3f677137", :on_delete=>:cascade})1060 -> 0.0014s1061-- add_foreign_key("lists", "labels", {:name=>"fk_7a5553d60f", :on_delete=>:cascade})1062 -> 0.0013s1063-- add_foreign_key("lists", "milestones", {:on_delete=>:cascade})1064 -> 0.0013s1065-- add_foreign_key("lists", "users", {:name=>"fk_d6cf4279f7", :on_delete=>:cascade})1066 -> 0.0018s1067-- add_foreign_key("members", "users", {:name=>"fk_2e88fb7ce9", :on_delete=>:cascade})1068 -> 0.0021s1069-- add_foreign_key("merge_request_assignees", "merge_requests", {:on_delete=>:cascade})1070 -> 0.0017s1071-- add_foreign_key("merge_request_assignees", "users", {:on_delete=>:cascade})1072 -> 0.0016s1073-- add_foreign_key("merge_request_blocks", "merge_requests", {:column=>"blocked_merge_request_id", :on_delete=>:cascade})1074 -> 0.0015s1075-- add_foreign_key("merge_request_blocks", "merge_requests", {:column=>"blocking_merge_request_id", :on_delete=>:cascade})1076 -> 0.0014s1077-- add_foreign_key("merge_request_diff_commits", "merge_request_diffs", {:on_delete=>:cascade})1078 -> 0.0015s1079-- add_foreign_key("merge_request_diff_files", "merge_request_diffs", {:on_delete=>:cascade})1080 -> 0.0013s1081-- add_foreign_key("merge_request_diffs", "merge_requests", {:name=>"fk_8483f3258f", :on_delete=>:cascade})1082 -> 0.0014s1083-- add_foreign_key("merge_request_metrics", "ci_pipelines", {:column=>"pipeline_id", :on_delete=>:cascade})1084 -> 0.0019s1085-- add_foreign_key("merge_request_metrics", "merge_requests", {:on_delete=>:cascade})1086 -> 0.0016s1087-- add_foreign_key("merge_request_metrics", "users", {:column=>"latest_closed_by_id", :name=>"fk_ae440388cc", :on_delete=>:nullify})1088 -> 0.0019s1089-- add_foreign_key("merge_request_metrics", "users", {:column=>"merged_by_id", :name=>"fk_7f28d925f3", :on_delete=>:nullify})1090 -> 0.0017s1091-- add_foreign_key("merge_requests", "ci_pipelines", {:column=>"head_pipeline_id", :name=>"fk_fd82eae0b9", :on_delete=>:nullify})1092 -> 0.0016s1093-- add_foreign_key("merge_requests", "merge_request_diffs", {:column=>"latest_merge_request_diff_id", :name=>"fk_06067f5644", :on_delete=>:nullify})1094 -> 0.0015s1095-- add_foreign_key("merge_requests", "milestones", {:name=>"fk_6a5165a692", :on_delete=>:nullify})1096 -> 0.0015s1097-- add_foreign_key("merge_requests", "projects", {:column=>"source_project_id", :name=>"fk_3308fe130c", :on_delete=>:nullify})1098 -> 0.0021s1099-- add_foreign_key("merge_requests", "projects", {:column=>"target_project_id", :name=>"fk_a6963e8447", :on_delete=>:cascade})1100 -> 0.0019s1101-- add_foreign_key("merge_requests", "users", {:column=>"assignee_id", :name=>"fk_6149611a04", :on_delete=>:nullify})1102 -> 0.0018s1103-- add_foreign_key("merge_requests", "users", {:column=>"author_id", :name=>"fk_e719a85f8a", :on_delete=>:nullify})1104 -> 0.0018s1105-- add_foreign_key("merge_requests", "users", {:column=>"merge_user_id", :name=>"fk_ad525e1f87", :on_delete=>:nullify})1106 -> 0.0018s1107-- add_foreign_key("merge_requests", "users", {:column=>"updated_by_id", :name=>"fk_641731faff", :on_delete=>:nullify})1108 -> 0.0019s1109-- add_foreign_key("merge_requests_closing_issues", "issues", {:on_delete=>:cascade})1110 -> 0.0018s1111-- add_foreign_key("merge_requests_closing_issues", "merge_requests", {:on_delete=>:cascade})1112 -> 0.0015s1113-- add_foreign_key("merge_trains", "ci_pipelines", {:column=>"pipeline_id", :on_delete=>:nullify})1114 -> 0.0016s1115-- add_foreign_key("merge_trains", "merge_requests", {:on_delete=>:cascade})1116 -> 0.0016s1117-- add_foreign_key("merge_trains", "projects", {:column=>"target_project_id", :on_delete=>:cascade})1118 -> 0.0018s1119-- add_foreign_key("merge_trains", "users", {:on_delete=>:cascade})1120 -> 0.0017s1121-- add_foreign_key("milestone_releases", "milestones", {:on_delete=>:cascade})1122 -> 0.0014s1123-- add_foreign_key("milestone_releases", "releases", {:on_delete=>:cascade})1124 -> 0.0013s1125-- add_foreign_key("milestones", "namespaces", {:column=>"group_id", :name=>"fk_95650a40d4", :on_delete=>:cascade})1126 -> 0.0015s1127-- add_foreign_key("milestones", "projects", {:name=>"fk_9bd0a0c791", :on_delete=>:cascade})1128 -> 0.0017s1129-- add_foreign_key("namespace_aggregation_schedules", "namespaces", {:on_delete=>:cascade})1130 -> 0.0016s1131-- add_foreign_key("namespace_root_storage_statistics", "namespaces", {:on_delete=>:cascade})1132 -> 0.0016s1133-- add_foreign_key("namespace_statistics", "namespaces", {:on_delete=>:cascade})1134 -> 0.0017s1135-- add_foreign_key("namespaces", "namespaces", {:column=>"custom_project_templates_group_id", :name=>"fk_e7a0b20a6b", :on_delete=>:nullify})1136 -> 0.0016s1137-- add_foreign_key("namespaces", "plans", {:name=>"fk_fdd12e5b80", :on_delete=>:nullify})1138 -> 0.0017s1139-- add_foreign_key("namespaces", "projects", {:column=>"file_template_project_id", :name=>"fk_319256d87a", :on_delete=>:nullify})1140 -> 0.0020s1141-- add_foreign_key("note_diff_files", "notes", {:column=>"diff_note_id", :on_delete=>:cascade})1142 -> 0.0019s1143-- add_foreign_key("notes", "projects", {:name=>"fk_99e097b079", :on_delete=>:cascade})1144 -> 0.0019s1145-- add_foreign_key("notes", "reviews", {:name=>"fk_2e82291620", :on_delete=>:nullify})1146 -> 0.0016s1147-- add_foreign_key("notification_settings", "users", {:name=>"fk_0c95e91db7", :on_delete=>:cascade})1148 -> 0.0020s1149-- add_foreign_key("oauth_openid_requests", "oauth_access_grants", {:column=>"access_grant_id", :name=>"fk_oauth_openid_requests_oauth_access_grants_access_grant_id"})1150 -> 0.0014s1151-- add_foreign_key("operations_feature_flag_scopes", "operations_feature_flags", {:column=>"feature_flag_id", :on_delete=>:cascade})1152 -> 0.0014s1153-- add_foreign_key("operations_feature_flags", "projects", {:on_delete=>:cascade})1154 -> 0.0020s1155-- add_foreign_key("operations_feature_flags_clients", "projects", {:on_delete=>:cascade})1156 -> 0.0019s1157-- add_foreign_key("packages_maven_metadata", "packages_packages", {:column=>"package_id", :name=>"fk_be88aed360", :on_delete=>:cascade})1158 -> 0.0015s1159-- add_foreign_key("packages_package_files", "packages_packages", {:column=>"package_id", :name=>"fk_86f0f182f8", :on_delete=>:cascade})1160 -> 0.0013s1161-- add_foreign_key("packages_package_metadata", "packages_packages", {:column=>"package_id", :on_delete=>:cascade})1162 -> 0.0013s1163-- add_foreign_key("packages_package_tags", "packages_packages", {:column=>"package_id", :on_delete=>:cascade})1164 -> 0.0012s1165-- add_foreign_key("packages_packages", "projects", {:on_delete=>:cascade})1166 -> 0.0018s1167-- add_foreign_key("pages_domain_acme_orders", "pages_domains", {:on_delete=>:cascade})1168 -> 0.0018s1169-- add_foreign_key("pages_domains", "projects", {:name=>"fk_ea2f6dfc6f", :on_delete=>:cascade})1170 -> 0.0018s1171-- add_foreign_key("path_locks", "projects", {:name=>"fk_5265c98f24", :on_delete=>:cascade})1172 -> 0.0021s1173-- add_foreign_key("path_locks", "users")1174 -> 0.0017s1175-- add_foreign_key("personal_access_tokens", "users")1176 -> 0.0020s1177-- add_foreign_key("pool_repositories", "projects", {:column=>"source_project_id", :on_delete=>:nullify})1178 -> 0.0018s1179-- add_foreign_key("pool_repositories", "shards", {:on_delete=>:restrict})1180 -> 0.0014s1181-- add_foreign_key("project_alerting_settings", "projects", {:on_delete=>:cascade})1182 -> 0.0018s1183-- add_foreign_key("project_aliases", "projects", {:on_delete=>:cascade})1184 -> 0.0018s1185-- add_foreign_key("project_authorizations", "projects", {:on_delete=>:cascade})1186 -> 0.0018s1187-- add_foreign_key("project_authorizations", "users", {:on_delete=>:cascade})1188 -> 0.0017s1189-- add_foreign_key("project_auto_devops", "projects", {:on_delete=>:cascade})1190 -> 0.0017s1191-- add_foreign_key("project_ci_cd_settings", "projects", {:name=>"fk_24c15d2f2e", :on_delete=>:cascade})1192 -> 0.0017s1193-- add_foreign_key("project_custom_attributes", "projects", {:on_delete=>:cascade})1194 -> 0.0021s1195-- add_foreign_key("project_daily_statistics", "projects", {:on_delete=>:cascade})1196 -> 0.0017s1197-- add_foreign_key("project_deploy_tokens", "deploy_tokens", {:on_delete=>:cascade})1198 -> 0.0024s1199-- add_foreign_key("project_deploy_tokens", "projects", {:on_delete=>:cascade})1200 -> 0.0017s1201-- add_foreign_key("project_error_tracking_settings", "projects", {:on_delete=>:cascade})1202 -> 0.0018s1203-- add_foreign_key("project_feature_usages", "projects", {:on_delete=>:cascade})1204 -> 0.0019s1205-- add_foreign_key("project_features", "projects", {:name=>"fk_18513d9b92", :on_delete=>:cascade})1206 -> 0.0019s1207-- add_foreign_key("project_group_links", "projects", {:name=>"fk_daa8cee94c", :on_delete=>:cascade})1208 -> 0.0019s1209-- add_foreign_key("project_import_data", "projects", {:name=>"fk_ffb9ee3a10", :on_delete=>:cascade})1210 -> 0.0018s1211-- add_foreign_key("project_incident_management_settings", "projects", {:on_delete=>:cascade})1212 -> 0.0019s1213-- add_foreign_key("project_metrics_settings", "projects", {:on_delete=>:cascade})1214 -> 0.0017s1215-- add_foreign_key("project_mirror_data", "projects", {:name=>"fk_d1aad367d7", :on_delete=>:cascade})1216 -> 0.0020s1217-- add_foreign_key("project_pages_metadata", "projects", {:on_delete=>:cascade})1218 -> 0.0019s1219-- add_foreign_key("project_repositories", "projects", {:on_delete=>:cascade})1220 -> 0.0019s1221-- add_foreign_key("project_repositories", "shards", {:on_delete=>:restrict})1222 -> 0.0014s1223-- add_foreign_key("project_repository_states", "projects", {:on_delete=>:cascade})1224 -> 0.0022s1225-- add_foreign_key("project_statistics", "projects", {:on_delete=>:cascade})1226 -> 0.0019s1227-- add_foreign_key("project_tracing_settings", "projects", {:on_delete=>:cascade})1228 -> 0.0018s1229-- add_foreign_key("projects", "pool_repositories", {:name=>"fk_6e5c14658a", :on_delete=>:nullify})1230 -> 0.0019s1231-- add_foreign_key("prometheus_alert_events", "projects", {:on_delete=>:cascade})1232 -> 0.0018s1233-- add_foreign_key("prometheus_alert_events", "prometheus_alerts", {:on_delete=>:cascade})1234 -> 0.0015s1235-- add_foreign_key("prometheus_alerts", "environments", {:on_delete=>:cascade})1236 -> 0.0013s1237-- add_foreign_key("prometheus_alerts", "projects", {:on_delete=>:cascade})1238 -> 0.0018s1239-- add_foreign_key("prometheus_alerts", "prometheus_metrics", {:on_delete=>:cascade})1240 -> 0.0016s1241-- add_foreign_key("prometheus_metrics", "projects", {:on_delete=>:cascade})1242 -> 0.0018s1243-- add_foreign_key("protected_branch_merge_access_levels", "namespaces", {:column=>"group_id", :name=>"fk_98f3d044fe", :on_delete=>:cascade})1244 -> 0.0017s1245-- add_foreign_key("protected_branch_merge_access_levels", "protected_branches", {:name=>"fk_8a3072ccb3", :on_delete=>:cascade})1246 -> 0.0015s1247-- add_foreign_key("protected_branch_merge_access_levels", "users")1248 -> 0.0017s1249-- add_foreign_key("protected_branch_push_access_levels", "namespaces", {:column=>"group_id", :name=>"fk_7111b68cdb", :on_delete=>:cascade})1250 -> 0.0016s1251-- add_foreign_key("protected_branch_push_access_levels", "protected_branches", {:name=>"fk_9ffc86a3d9", :on_delete=>:cascade})1252 -> 0.0013s1253-- add_foreign_key("protected_branch_push_access_levels", "users")1254 -> 0.0018s1255-- add_foreign_key("protected_branch_unprotect_access_levels", "namespaces", {:column=>"group_id", :on_delete=>:cascade})1256 -> 0.0017s1257-- add_foreign_key("protected_branch_unprotect_access_levels", "protected_branches", {:on_delete=>:cascade})1258 -> 0.0013s1259-- add_foreign_key("protected_branch_unprotect_access_levels", "users", {:on_delete=>:cascade})1260 -> 0.0017s1261-- add_foreign_key("protected_branches", "projects", {:name=>"fk_7a9c6d93e7", :on_delete=>:cascade})1262 -> 0.0019s1263-- add_foreign_key("protected_environment_deploy_access_levels", "namespaces", {:column=>"group_id", :on_delete=>:cascade})1264 -> 0.0017s1265-- add_foreign_key("protected_environment_deploy_access_levels", "protected_environments", {:on_delete=>:cascade})1266 -> 0.0015s1267-- add_foreign_key("protected_environment_deploy_access_levels", "users", {:on_delete=>:cascade})1268 -> 0.0017s1269-- add_foreign_key("protected_environments", "projects", {:on_delete=>:cascade})1270 -> 0.0020s1271-- add_foreign_key("protected_tag_create_access_levels", "namespaces", {:column=>"group_id", :name=>"fk_b4eb82fe3c", :on_delete=>:cascade})1272 -> 0.0018s1273-- add_foreign_key("protected_tag_create_access_levels", "protected_tags", {:name=>"fk_f7dfda8c51", :on_delete=>:cascade})1274 -> 0.0016s1275-- add_foreign_key("protected_tag_create_access_levels", "users")1276 -> 0.0020s1277-- add_foreign_key("protected_tags", "projects", {:name=>"fk_8e4af87648", :on_delete=>:cascade})1278 -> 0.0019s1279-- add_foreign_key("push_event_payloads", "events", {:name=>"fk_36c74129da", :on_delete=>:cascade})1280 -> 0.0016s1281-- add_foreign_key("push_rules", "projects", {:name=>"fk_83b29894de", :on_delete=>:cascade})1282 -> 0.0023s1283-- add_foreign_key("release_links", "releases", {:on_delete=>:cascade})1284 -> 0.0015s1285-- add_foreign_key("releases", "projects", {:name=>"fk_47fe2a0596", :on_delete=>:cascade})1286 -> 0.0021s1287-- add_foreign_key("releases", "users", {:column=>"author_id", :name=>"fk_8e4456f90f", :on_delete=>:nullify})1288 -> 0.0022s1289-- add_foreign_key("remote_mirrors", "projects", {:name=>"fk_43a9aa4ca8", :on_delete=>:cascade})1290 -> 0.0023s1291-- add_foreign_key("repository_languages", "projects", {:on_delete=>:cascade})1292 -> 0.0020s1293-- add_foreign_key("resource_label_events", "epics", {:on_delete=>:cascade})1294 -> 0.0018s1295-- add_foreign_key("resource_label_events", "issues", {:on_delete=>:cascade})1296 -> 0.0017s1297-- add_foreign_key("resource_label_events", "labels", {:on_delete=>:nullify})1298 -> 0.0014s1299-- add_foreign_key("resource_label_events", "merge_requests", {:on_delete=>:cascade})1300 -> 0.0017s1301-- add_foreign_key("resource_label_events", "users", {:on_delete=>:nullify})1302 -> 0.0019s1303-- add_foreign_key("reviews", "merge_requests", {:on_delete=>:cascade})1304 -> 0.0016s1305-- add_foreign_key("reviews", "projects", {:on_delete=>:cascade})1306 -> 0.0019s1307-- add_foreign_key("reviews", "users", {:column=>"author_id", :on_delete=>:nullify})1308 -> 0.0017s1309-- add_foreign_key("saml_providers", "namespaces", {:column=>"group_id", :on_delete=>:cascade})1310 -> 0.0015s1311-- add_foreign_key("scim_oauth_access_tokens", "namespaces", {:column=>"group_id", :on_delete=>:cascade})1312 -> 0.0016s1313-- add_foreign_key("self_managed_prometheus_alert_events", "environments", {:on_delete=>:cascade})1314 -> 0.0014s1315-- add_foreign_key("self_managed_prometheus_alert_events", "projects", {:on_delete=>:cascade})1316 -> 0.0019s1317-- add_foreign_key("services", "projects", {:name=>"fk_71cce407f9", :on_delete=>:cascade})1318 -> 0.0020s1319-- add_foreign_key("slack_integrations", "services", {:on_delete=>:cascade})1320 -> 0.0015s1321-- add_foreign_key("smartcard_identities", "users", {:on_delete=>:cascade})1322 -> 0.0019s1323-- add_foreign_key("snippets", "projects", {:name=>"fk_be41fd4bb7", :on_delete=>:cascade})1324 -> 0.0022s1325-- add_foreign_key("software_license_policies", "projects", {:on_delete=>:cascade})1326 -> 0.0020s1327-- add_foreign_key("software_license_policies", "software_licenses", {:on_delete=>:cascade})1328 -> 0.0015s1329-- add_foreign_key("subscriptions", "projects", {:on_delete=>:cascade})1330 -> 0.0021s1331-- add_foreign_key("suggestions", "notes", {:on_delete=>:cascade})1332 -> 0.0016s1333-- add_foreign_key("system_note_metadata", "description_versions", {:name=>"fk_fbd87415c9", :on_delete=>:nullify})1334 -> 0.0015s1335-- add_foreign_key("system_note_metadata", "notes", {:name=>"fk_d83a918cb1", :on_delete=>:cascade})1336 -> 0.0014s1337-- add_foreign_key("term_agreements", "application_setting_terms", {:column=>"term_id"})1338 -> 0.0015s1339-- add_foreign_key("term_agreements", "users", {:on_delete=>:cascade})1340 -> 0.0019s1341-- add_foreign_key("timelogs", "issues", {:name=>"fk_timelogs_issues_issue_id", :on_delete=>:cascade})1342 -> 0.0017s1343-- add_foreign_key("timelogs", "merge_requests", {:name=>"fk_timelogs_merge_requests_merge_request_id", :on_delete=>:cascade})1344 -> 0.0016s1345-- add_foreign_key("todos", "namespaces", {:column=>"group_id", :on_delete=>:cascade})1346 -> 0.0021s1347-- add_foreign_key("todos", "notes", {:name=>"fk_91d1f47b13", :on_delete=>:cascade})1348 -> 0.0015s1349-- add_foreign_key("todos", "projects", {:name=>"fk_45054f9c45", :on_delete=>:cascade})1350 -> 0.0020s1351-- add_foreign_key("todos", "users", {:column=>"author_id", :name=>"fk_ccf0373936", :on_delete=>:cascade})1352 -> 0.0023s1353-- add_foreign_key("todos", "users", {:name=>"fk_d94154aa95", :on_delete=>:cascade})1354 -> 0.0018s1355-- add_foreign_key("trending_projects", "projects", {:on_delete=>:cascade})1356 -> 0.0022s1357-- add_foreign_key("u2f_registrations", "users")1358 -> 0.0020s1359-- add_foreign_key("user_callouts", "users", {:on_delete=>:cascade})1360 -> 0.0018s1361-- add_foreign_key("user_custom_attributes", "users", {:on_delete=>:cascade})1362 -> 0.0019s1363-- add_foreign_key("user_interacted_projects", "projects", {:name=>"fk_722ceba4f7", :on_delete=>:cascade})1364 -> 0.0019s1365-- add_foreign_key("user_interacted_projects", "users", {:name=>"fk_0894651f08", :on_delete=>:cascade})1366 -> 0.0017s1367-- add_foreign_key("user_preferences", "users", {:on_delete=>:cascade})1368 -> 0.0019s1369-- add_foreign_key("user_statuses", "users", {:on_delete=>:cascade})1370 -> 0.0017s1371-- add_foreign_key("user_synced_attributes_metadata", "users", {:on_delete=>:cascade})1372 -> 0.0018s1373-- add_foreign_key("users", "application_setting_terms", {:column=>"accepted_term_id", :name=>"fk_789cd90b35", :on_delete=>:cascade})1374 -> 0.0017s1375-- add_foreign_key("users", "namespaces", {:column=>"managing_group_id", :name=>"fk_a4b8fefe3e", :on_delete=>:nullify})1376 -> 0.0021s1377-- add_foreign_key("users_ops_dashboard_projects", "projects", {:on_delete=>:cascade})1378 -> 0.0021s1379-- add_foreign_key("users_ops_dashboard_projects", "users", {:on_delete=>:cascade})1380 -> 0.0017s1381-- add_foreign_key("users_star_projects", "projects", {:name=>"fk_22cd27ddfc", :on_delete=>:cascade})1382 -> 0.0020s1383-- add_foreign_key("vulnerabilities", "epics", {:name=>"fk_1d37cddf91", :on_delete=>:nullify})1384 -> 0.0021s1385-- add_foreign_key("vulnerabilities", "milestones", {:column=>"due_date_sourcing_milestone_id", :name=>"fk_7c5bb22a22", :on_delete=>:nullify})1386 -> 0.0014s1387-- add_foreign_key("vulnerabilities", "milestones", {:column=>"start_date_sourcing_milestone_id", :name=>"fk_88b4d546ef", :on_delete=>:nullify})1388 -> 0.0013s1389-- add_foreign_key("vulnerabilities", "milestones", {:name=>"fk_131d289c65", :on_delete=>:nullify})1390 -> 0.0014s1391-- add_foreign_key("vulnerabilities", "projects", {:name=>"fk_efb96ab1e2", :on_delete=>:cascade})1392 -> 0.0021s1393-- add_foreign_key("vulnerabilities", "users", {:column=>"author_id", :name=>"fk_b1de915a15", :on_delete=>:nullify})1394 -> 0.0018s1395-- add_foreign_key("vulnerabilities", "users", {:column=>"closed_by_id", :name=>"fk_cf5c60acbf", :on_delete=>:nullify})1396 -> 0.0018s1397-- add_foreign_key("vulnerabilities", "users", {:column=>"last_edited_by_id", :name=>"fk_1302949740", :on_delete=>:nullify})1398 -> 0.0018s1399-- add_foreign_key("vulnerabilities", "users", {:column=>"updated_by_id", :name=>"fk_7ac31eacb9", :on_delete=>:nullify})1400 -> 0.0017s1401-- add_foreign_key("vulnerability_feedback", "ci_pipelines", {:column=>"pipeline_id", :on_delete=>:nullify})1402 -> 0.0018s1403-- add_foreign_key("vulnerability_feedback", "issues", {:on_delete=>:nullify})1404 -> 0.0016s1405-- add_foreign_key("vulnerability_feedback", "merge_requests", {:name=>"fk_563ff1912e", :on_delete=>:nullify})1406 -> 0.0016s1407-- add_foreign_key("vulnerability_feedback", "projects", {:on_delete=>:cascade})1408 -> 0.0020s1409-- add_foreign_key("vulnerability_feedback", "users", {:column=>"author_id", :on_delete=>:cascade})1410 -> 0.0019s1411-- add_foreign_key("vulnerability_feedback", "users", {:column=>"comment_author_id", :name=>"fk_94f7c8a81e", :on_delete=>:nullify})1412 -> 0.0017s1413-- add_foreign_key("vulnerability_identifiers", "projects", {:on_delete=>:cascade})1414 -> 0.0020s1415-- add_foreign_key("vulnerability_occurrence_identifiers", "vulnerability_identifiers", {:column=>"identifier_id", :on_delete=>:cascade})1416 -> 0.0014s1417-- add_foreign_key("vulnerability_occurrence_identifiers", "vulnerability_occurrences", {:column=>"occurrence_id", :on_delete=>:cascade})1418 -> 0.0017s1419-- add_foreign_key("vulnerability_occurrence_pipelines", "ci_pipelines", {:column=>"pipeline_id", :on_delete=>:cascade})1420 -> 0.0016s1421-- add_foreign_key("vulnerability_occurrence_pipelines", "vulnerability_occurrences", {:column=>"occurrence_id", :on_delete=>:cascade})1422 -> 0.0012s1423-- add_foreign_key("vulnerability_occurrences", "projects", {:on_delete=>:cascade})1424 -> 0.0021s1425-- add_foreign_key("vulnerability_occurrences", "vulnerabilities", {:name=>"fk_97ffe77653", :on_delete=>:nullify})1426 -> 0.0014s1427-- add_foreign_key("vulnerability_occurrences", "vulnerability_identifiers", {:column=>"primary_identifier_id", :on_delete=>:cascade})1428 -> 0.0014s1429-- add_foreign_key("vulnerability_occurrences", "vulnerability_scanners", {:column=>"scanner_id", :on_delete=>:cascade})1430 -> 0.0013s1431-- add_foreign_key("vulnerability_scanners", "projects", {:on_delete=>:cascade})1432 -> 0.0019s1433-- add_foreign_key("web_hook_logs", "web_hooks", {:on_delete=>:cascade})1434 -> 0.0017s1435-- add_foreign_key("web_hooks", "projects", {:name=>"fk_0c8ca6d9d1", :on_delete=>:cascade})1436 -> 0.0021s1437-- add_foreign_key("zoom_meetings", "issues", {:on_delete=>:cascade})1438 -> 0.0018s1439-- add_foreign_key("zoom_meetings", "projects", {:on_delete=>:cascade})1440 -> 0.0019s1441$ date1442Wed Oct 23 14:06:09 UTC 20191443$ source scripts/rspec_helpers.sh1444$ rspec_paralellized_job "--tag ~quarantine --tag ~geo"1445KNAPSACK_TEST_FILE_PATTERN: spec/{bin,config,db,dependencies,factories,finders,frontend,graphql,haml_lint,helpers,initializers,javascripts,lib,migrations,models,policies,presenters,rack_servers,routing,rubocop,serializers,services,sidekiq,tasks,uploaders,validators,views,workers,elastic_integration}{,/**/}*_spec.rb1446Checking gitaly-ruby bundle...1447Warning: the running version of Bundler (1.17.2) is older than the version that created the lockfile (1.17.3). We suggest you upgrade to the latest version of Bundler by running `gem install bundler`.1448The Gemfile's dependencies are satisfied1449Trying to connect to gitaly: ...... OK1450Run options:1451 include {:focus=>true}1452 exclude {:quarantine=>true, :geo=>true}1453All examples were filtered out; ignoring {:focus=>true}1454==> Setting up Gitaly...1455 Gitaly set up in 0.074279277 seconds...1456TodoService1457 updates cached counts when a todo is created1458 Issues1459 #new_issue1460 creates a todo if assigned1461 does not create a todo if unassigned1462 creates a todo if assignee is the current user1463 creates a todo for each valid mentioned user1464 creates a directly addressed todo for each valid addressed user1465 creates correct todos for each valid user based on the type of mention1466 does not create todo if user can not see the issue when issue is confidential1467 does not create directly addressed todo if user cannot see the issue when issue is confidential1468 when a private group is mentioned1469 creates a todo for group members1470 #update_issue1471 creates a todo for each valid mentioned user not included in skip_users1472 creates a todo for each valid user not included in skip_users based on the type of mention1473 creates a directly addressed todo for each valid addressed user not included in skip_users1474 does not create a todo if user was already mentioned and todo is pending1475 does not create a todo if user was already mentioned and todo is done1476 does not create a directly addressed todo if user was already mentioned or addressed and todo is pending1477 does not create a directly addressed todo if user was already mentioned or addressed and todo is done1478 does not create todo if user can not see the issue when issue is confidential1479 does not create a directly addressed todo if user can not see the issue when issue is confidential1480 issues with a task list1481 does not create todo when tasks are marked as completed1482 does not create directly addressed todo when tasks are marked as completed1483 does not raise an error when description not change1484 #close_issue1485 marks related pending todos to the target for the user as done1486 #destroy_target1487 refreshes the todos count cache for users with todos on the target1488 does not refresh the todos count cache for users with only done todos on the target1489 yields the target to the caller1490 #mark_pending_todos_as_done1491 marks related pending todos to the target for the user as done1492 cached counts1493 updates when todos change1494 #mark_todos_as_done1495 behaves like updating todos state1496 updates related todos for the user with the new_state1497 returns the updated ids1498 cached counts1499 updates when todos change1500 #mark_todos_as_done_by_ids1501 behaves like updating todos state1502 updates related todos for the user with the new_state1503 returns the updated ids1504 cached counts1505 updates when todos change1506 #mark_todos_as_pending1507 behaves like updating todos state1508 updates related todos for the user with the new_state1509 returns the updated ids1510 cached counts1511 updates when todos change1512 #mark_todos_as_pending_by_ids1513 behaves like updating todos state1514 updates related todos for the user with the new_state1515 returns the updated ids1516 cached counts1517 updates when todos change1518 #new_note1519 mark related pending todos to the noteable for the note author as done1520 does not mark related pending todos it is a system note1521 creates a todo for each valid mentioned user1522 creates a todo for each valid user based on the type of mention1523 creates a directly addressed todo for each valid addressed user1524 does not create todo if user can not see the issue when leaving a note on a confidential issue1525 does not create a directly addressed todo if user can not see the issue when leaving a note on a confidential issue1526 does not create todo when leaving a note on snippet1527 commits1528 leaving a note on a commit in a public project1529 creates a todo for each valid mentioned user1530 creates a directly addressed todo for each valid mentioned user1531 leaving a note on a commit in a public project with private code1532 creates a todo for each valid mentioned user1533 creates a directly addressed todo for each valid mentioned user1534 leaving a note on a commit in a private project1535 creates a todo for each valid mentioned user1536 creates a directly addressed todo for each valid mentioned user1537 #mark_todo1538 creates a todo from a issue1539 #todo_exists?1540 returns false when no todo exist for the given issuable1541 returns true when a todo exist for the given issuable1542 #reassigned_issuable1543 issuable is a merge request1544 behaves like reassigned issuable1545 creates a pending todo for new assignee1546 does not create a todo if unassigned1547 creates a todo if new assignee is the current user1548 does not create a todo for guests1549 does not create a directly addressed todo for guests1550 issuable is an issue1551 behaves like reassigned issuable1552 creates a pending todo for new assignee1553 does not create a todo if unassigned1554 creates a todo if new assignee is the current user1555 does not create a todo for guests1556 does not create a directly addressed todo for guests1557 Merge Requests1558 #new_merge_request1559 creates a pending todo if assigned1560 does not create a todo if unassigned1561 does not create a todo if assignee is the current user1562 creates a todo for each valid mentioned user1563 creates a todo for each valid user based on the type of mention1564 creates a directly addressed todo for each valid addressed user1565 #update_merge_request1566 creates a todo for each valid mentioned user not included in skip_users1567 creates a todo for each valid user not included in skip_users based on the type of mention1568 creates a directly addressed todo for each valid addressed user not included in skip_users1569 does not create a todo if user was already mentioned and todo is pending1570 does not create a todo if user was already mentioned and todo is done1571 does not create a directly addressed todo if user was already mentioned or addressed and todo is pending1572 does not create a directly addressed todo if user was already mentioned or addressed and todo is done1573 with a task list1574 does not create todo when tasks are marked as completed1575 does not create directly addressed todo when tasks are marked as completed1576 does not raise an error when description not change1577 #close_merge_request1578 marks related pending todos to the target for the user as done1579 #merge_merge_request1580 marks related pending todos to the target for the user as done1581 does not create todo for guests1582 does not create directly addressed todo for guests1583 #new_award_emoji1584 marks related pending todos to the target for the user as done1585 #merge_request_build_failed1586 creates a pending todo for each merge_participant1587 #merge_request_push1588 marks related pending todos to the target for the user as done1589 #merge_request_became_unmergeable1590 creates a pending todo for each merge_participant1591 #mark_todo1592 creates a todo from a merge request1593 #new_note1594 creates a todo for mentioned user on new diff note1595 creates a directly addressed todo for addressed user on new diff note1596 creates a todo for mentioned user on legacy diff note1597 does not create todo for guests1598 #update_note1599 creates a todo for each valid mentioned user not included in skip_users1600 creates a todo for each valid user not included in skip_users based on the type of mention1601 creates a directly addressed todo for each valid addressed user not included in skip_users1602 does not create a todo if user was already mentioned and todo is pending1603 does not create a todo if user was already mentioned and todo is done1604 does not create a directly addressed todo if user was already mentioned or addressed and todo is pending1605 does not create a directly addressed todo if user was already mentioned or addressed and todo is done1606 #mark_todos_as_done1607 marks a relation of todos as done1608 marks an array of todos as done1609 returns the ids of updated todos1610 when some of the todos are done already1611 returns the ids of those still pending1612 returns an empty array if all are done1613 #mark_todos_as_done_by_ids1614 marks an array of todo ids as done1615 marks a single todo id as done1616 caches the number of todos of a user1617Ci::Pipeline1618 should belong to project required:1619 should belong to user required:1620 should belong to auto_canceled_by required:1621 should belong to pipeline_schedule required:1622 should belong to merge_request required:1623 should belong to external_pull_request required:1624 should have many statuses1625 should have many trigger_requests1626 should have many variables1627 should have many builds1628 should have many auto_canceled_pipelines1629 should have many auto_canceled_jobs1630 should have many sourced_pipelines1631 should have many triggered_pipelines1632 should have one chat_data1633 should have one source_pipeline1634 should have one triggered_by_pipeline1635 should have one source_job1636 should validate that :sha cannot be empty/falsy1637 should validate that :status cannot be empty/falsy1638 should respond to #git_author_name1639 should respond to #git_author_email1640 should respond to #short_sha1641 should delegate #project_full_path to the #project object as #full_path1642 behaves like having unique enum values1643 has unique values in "source"1644 has unique values in "config_source"1645 has unique values in "failure_reason"1646 associations1647 has a bidirectional relationship with projects1648 .processables1649 has an association with processable CI/CD entities1650 makes it possible to append a new processable1651 .sort_by_merge_request_pipelines1652 when branch pipelines exist1653 returns pipelines order by id1654 when merge request pipelines exist1655 returns pipelines order by id1656 when both branch pipeline and merge request pipeline exist1657 returns merge request pipeline first1658 .for_sha1659 returns the pipeline1660 when argument is array1661 returns the pipelines1662 when sha is empty1663 does not return anything1664 .for_source_sha1665 returns the pipeline1666 when argument is array1667 returns the pipelines1668 when source_sha is empty1669 does not return anything1670 .for_sha_or_source_sha1671 when sha is matched1672 returns the pipeline1673 when source sha is matched1674 returns the pipeline1675 when both sha and source sha are not matched1676 does not return anything1677 .detached_merge_request_pipelines1678 returns detached merge request pipelines1679 when sha does not exist1680 returns empty array1681 when pipeline is merge request pipeline1682 returns empty array1683 #detached_merge_request_pipeline?1684 should be truthy1685 when target sha exists1686 should be falsy1687 .merge_request_pipelines1688 returns merge pipelines1689 when source sha is empty1690 returns empty array1691 when pipeline is detached merge request pipeline1692 returns empty array1693 #merge_request_pipeline?1694 should be truthy1695 when target sha is empty1696 should be falsy1697 #merge_train_pipeline?1698 should be truthy1699 when ref is merge ref1700 should be falsy1701 #merge_request_ref?1702 calls MergeRequest#merge_request_ref?1703 #merge_train_ref?1704 calls Mergetrain#merge_train_ref?1705 #merge_request_event_type1706 when pipeline is merge train pipeline1707 should eq :merge_train1708 when pipeline is merge request pipeline1709 should eq :merged_result1710 when pipeline is detached merge request pipeline1711 should eq :detached1712 #legacy_detached_merge_request_pipeline?1713 should be truthy1714 when pipeline ref is a merge request ref1715 should be falsy1716 when target sha is set1717 should be falsy1718 #matches_sha_or_source_sha?1719 when sha matches1720 should be truthy1721 when source_sha matches1722 should be truthy1723 when both sha and source_sha do not matche1724 should be falsy1725 #source_ref1726 returns source ref1727 when the pipeline is a detached merge request pipeline1728 returns source ref1729 #source_ref_slug1730 slugifies with the source ref1731 when the pipeline is a detached merge request pipeline1732 slugifies with the source ref of the merge request1733 .triggered_for_branch1734 returns the pipeline1735 when sha is not specified1736 returns the pipeline1737 when pipeline is triggered for tag1738 does not return the pipeline1739 when pipeline is triggered for merge_request1740 does not return the pipeline1741 .with_reports1742 when pipeline has a test report1743 selects the pipeline1744 when pipeline does not have metrics reports1745 does not select the pipeline1746 .merge_request_event1747 when there is a merge request pipeline1748 returns merge request pipeline first1749 when there are no merge request pipelines1750 returns empty array1751 Validations for merge request pipelines1752 when source is merge request1753 when merge request is specified1754 should be valid1755 when merge request is empty1756 should not be valid1757 when source is web1758 when merge request is specified1759 should not be valid1760 when merge request is empty1761 should be valid1762 modules1763 behaves like AtomicInternalId1764 .has_internal_id1765 Module inclusion1766 should includes the AtomicInternalId module1767 Validation1768 when presence validation is required1769 validates presence (PENDING: No reason given)1770 when presence validation is not required1771 does not validate presence1772 Creating an instance1773 saves a new instance properly1774 internal id generation1775 calls InternalId.generate_next and sets internal id attribute1776 does not overwrite an existing internal id1777 when the instance has an internal ID set1778 calls InternalId.update_last_value and sets the `last_value` to that of the instance1779 #reset_scope_internal_id_attribute1780 rewinds the allocated IID1781 allocates the same IID1782 #source1783 when creating new pipeline1784 prevents from creating an object1785 when updating existing pipeline1786 object is valid1787 #block1788 changes pipeline status to manual1789 #delay1790 changes pipeline status to schedule1791 #valid_commit_sha1792 commit.sha can not start with 000000001793 commit errors should not be empty1794 #short_sha1795 has 8 items1796 should start with "97de212e"1797 #retried1798 returns old builds1799 coverage1800 calculates average when there are two builds with coverage1801 calculates average when there are two builds with coverage and one with nil1802 calculates average when there are two builds with coverage and one is retried1803 calculates average when there is one build without coverage1804 #retryable?1805 no failed builds1806 is not retryable1807 one canceled job1808 is retryable1809 with failed builds1810 is retryable1811 #persisted_variables1812 when pipeline is not persisted yet1813 does not contain some variables1814 when pipeline is persisted1815 does contains persisted variables1816 #predefined_variables1817 includes all predefined variables in a valid order1818 when source is merge request1819 exposes merge request pipeline variables1820 when source project does not exist1821 does not expose source project related variables1822 without assignee1823 does not expose assignee variable1824 without milestone1825 does not expose milestone variable1826 without labels1827 does not expose labels variable1828 when source is external pull request1829 exposes external pull request pipeline variables1830 #protected_ref?1831 delegates method to project1832 #legacy_trigger1833 returns first trigger request1834 #auto_canceled?1835 when it is canceled1836 when there is auto_canceled_by1837 is auto canceled1838 when there is no auto_canceled_by1839 is not auto canceled1840 when it is retried and canceled manually1841 is not auto canceled1842 pipeline stages1843 #stage_seeds1844 returns preseeded stage seeds object1845 when no refs policy is specified1846 correctly fabricates a stage seeds object1847 when refs policy is specified1848 returns stage seeds only assigned to master to master1849 when source policy is specified1850 returns stage seeds only assigned to schedules1851 when kubernetes policy is specified1852 when kubernetes is active1853 when user configured kubernetes from CI/CD > Clusters1854 returns seeds for kubernetes dependent job1855 when kubernetes is not active1856 does not return seeds for kubernetes dependent job1857 when variables policy is specified1858 returns stage seeds only when variables expression is truthy1859 #seeds_size1860 when refs policy is specified1861 returns real seeds size1862 legacy stages1863 #legacy_stages1864 ci_composite_status: false1865 stages list1866DEPRECATION WARNING: Dangerous query method (method whose arguments are used as raw SQL) called with non-attribute argument(s): "max(stage_idx)". Non-attribute arguments will be disallowed in Rails 6.0. This method should not be called with user-provided values, such as request parameters or model attributes. Known-safe values can be passed by wrapping them in Arel.sql(). (called from legacy_stages_using_sql at /builds/gtsiolis/gitlab-foss/app/models/ci/pipeline.rb:400)1867DEPRECATION WARNING: Dangerous query method (method whose arguments are used as raw SQL) called with non-attribute argument(s): "(SELECT COUNT(*) FROM \"ci_builds\" WHERE \"ci_builds\".\"commit_id\" = 83 AND (\"ci_builds\".\"retried\" = FALSE OR \"ci_builds\".\"retried\" IS NULL) AND (stage=sg.stage) AND \"ci_builds\".\"allow_failure\" = TRUE AND \"ci_builds\".\"status\" IN ('failed', 'canceled'))". Non-attribute arguments will be disallowed in Rails 6.0. This method should not be called with user-provided values, such as request parameters or model attributes. Known-safe values can be passed by wrapping them in Arel.sql(). (called from legacy_stages_using_sql at /builds/gtsiolis/gitlab-foss/app/models/ci/pipeline.rb:408)1868 returns ordered list of stages1869 stages with statuses1870DEPRECATION WARNING: Dangerous query method (method whose arguments are used as raw SQL) called with non-attribute argument(s): "max(stage_idx)". Non-attribute arguments will be disallowed in Rails 6.0. This method should not be called with user-provided values, such as request parameters or model attributes. Known-safe values can be passed by wrapping them in Arel.sql(). (called from legacy_stages_using_sql at /builds/gtsiolis/gitlab-foss/app/models/ci/pipeline.rb:400)1871DEPRECATION WARNING: Dangerous query method (method whose arguments are used as raw SQL) called with non-attribute argument(s): "(SELECT COUNT(*) FROM \"ci_builds\" WHERE \"ci_builds\".\"commit_id\" = 84 AND (\"ci_builds\".\"retried\" = FALSE OR \"ci_builds\".\"retried\" IS NULL) AND (stage=sg.stage) AND \"ci_builds\".\"allow_failure\" = TRUE AND \"ci_builds\".\"status\" IN ('failed', 'canceled'))". Non-attribute arguments will be disallowed in Rails 6.0. This method should not be called with user-provided values, such as request parameters or model attributes. Known-safe values can be passed by wrapping them in Arel.sql(). (called from legacy_stages_using_sql at /builds/gtsiolis/gitlab-foss/app/models/ci/pipeline.rb:408)1872 returns list of stages with correct statuses1873 when commit status is retried1874DEPRECATION WARNING: Dangerous query method (method whose arguments are used as raw SQL) called with non-attribute argument(s): "max(stage_idx)". Non-attribute arguments will be disallowed in Rails 6.0. This method should not be called with user-provided values, such as request parameters or model attributes. Known-safe values can be passed by wrapping them in Arel.sql(). (called from legacy_stages_using_sql at /builds/gtsiolis/gitlab-foss/app/models/ci/pipeline.rb:400)1875DEPRECATION WARNING: Dangerous query method (method whose arguments are used as raw SQL) called with non-attribute argument(s): "(SELECT COUNT(*) FROM \"ci_builds\" WHERE \"ci_builds\".\"commit_id\" = 85 AND (\"ci_builds\".\"retried\" = FALSE OR \"ci_builds\".\"retried\" IS NULL) AND (stage=sg.stage) AND \"ci_builds\".\"allow_failure\" = TRUE AND \"ci_builds\".\"status\" IN ('failed', 'canceled'))". Non-attribute arguments will be disallowed in Rails 6.0. This method should not be called with user-provided values, such as request parameters or model attributes. Known-safe values can be passed by wrapping them in Arel.sql(). (called from legacy_stages_using_sql at /builds/gtsiolis/gitlab-foss/app/models/ci/pipeline.rb:408)1876 ignores the previous state1877 when there is a stage with warnings1878DEPRECATION WARNING: Dangerous query method (method whose arguments are used as raw SQL) called with non-attribute argument(s): "max(stage_idx)". Non-attribute arguments will be disallowed in Rails 6.0. This method should not be called with user-provided values, such as request parameters or model attributes. Known-safe values can be passed by wrapping them in Arel.sql(). (called from legacy_stages_using_sql at /builds/gtsiolis/gitlab-foss/app/models/ci/pipeline.rb:400)1879DEPRECATION WARNING: Dangerous query method (method whose arguments are used as raw SQL) called with non-attribute argument(s): "(SELECT COUNT(*) FROM \"ci_builds\" WHERE \"ci_builds\".\"commit_id\" = 86 AND (\"ci_builds\".\"retried\" = FALSE OR \"ci_builds\".\"retried\" IS NULL) AND (stage=sg.stage) AND \"ci_builds\".\"allow_failure\" = TRUE AND \"ci_builds\".\"status\" IN ('failed', 'canceled'))". Non-attribute arguments will be disallowed in Rails 6.0. This method should not be called with user-provided values, such as request parameters or model attributes. Known-safe values can be passed by wrapping them in Arel.sql(). (called from legacy_stages_using_sql at /builds/gtsiolis/gitlab-foss/app/models/ci/pipeline.rb:408)1880 populates stage with correct number of warnings1881 ci_composite_status: true1882 stages list1883 returns ordered list of stages1884 stages with statuses1885 returns list of stages with correct statuses1886 when commit status is retried1887 ignores the previous state1888 when there is a stage with warnings1889 populates stage with correct number of warnings1890 #stages_count1891 returns a valid number of stages1892 #stages_names1893 returns a valid names of stages1894 #legacy_stage1895 with status in stage1896 should be a kind of Ci::LegacyStage1897 should eq "test"1898 should not be empty1899 without status in stage1900 return stage object1901 #stages1902 returns persisted stages1903 #ordered_stages1904 when using legacy stages1905 returns legacy stages in valid order1906 when using persisted stages1907 when pipelines is not complete1908 still returns legacy stages1909 when pipeline is complete1910 returns stages in valid order1911 state machine1912 when the pipeline recieved succeed! event1913 deletes a persistent ref1914 when the pipeline recieved drop! event1915 deletes a persistent ref1916 when the pipeline recieved cancel! event1917 deletes a persistent ref1918 when the pipeline recieved skip! event1919 deletes a persistent ref1920 #duration1921 when multiple builds are finished19222019-10-23T14:09:34.000Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>81}19232019-10-23T14:09:44.000Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>82}19242019-10-23T14:10:14.000Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>83}1925 matches sum of builds duration1926 when pipeline becomes blocked19272019-10-23T14:14:05.000Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>84}1928 recalculates pipeline duration1929 #started_at1930 from created1931 updates on transitioning to running1932 from preparing1933 updates on transitioning to running1934 from pending1935 updates on transitioning to running1936 from created1937 does not update on transitioning to success1938 #finished_at19392019-10-23T14:09:06.301Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>86}1940 updates on transitioning to success1941 does not update on transitioning to running1942 merge request metrics1943 when transitioning to running1944 from created1945 schedules metrics workers1946 from preparing1947 schedules metrics workers1948 from pending1949 schedules metrics workers1950 when transitioning to success1951 schedules metrics workers1952 merge on success1953 from created1954 schedules pipeline success worker1955 from preparing1956 schedules pipeline success worker1957 from pending1958 schedules pipeline success worker1959 from running1960 schedules pipeline success worker1961 pipeline caching1962 performs ExpirePipelinesCacheWorker1963 auto merge1964 when the pipeline recieved succeed! event1965 performs AutoMergeProcessWorker1966 when the pipeline recieved drop! event1967 performs AutoMergeProcessWorker1968 when the pipeline recieved cancel! event1969 performs AutoMergeProcessWorker1970 when the pipeline recieved skip! event1971 performs AutoMergeProcessWorker1972 when auto merge is not enabled in the merge request1973 performs AutoMergeProcessWorker1974 #branch?1975 when ref is not a tag1976 return true1977 when source is merge request1978 returns false1979 when ref is a tag1980 return false1981 #git_ref1982 when ref is branch1983 returns branch ref1984 when ref is tag1985 returns branch ref1986 when ref is merge request1987 returns branch ref1988 ref_exists?1989 when repository exists1990 tag: false, ref: "master", result: true1991 correctly detects ref1992 tag: false, ref: "non-existent-branch", result: false1993 correctly detects ref1994 tag: true, ref: "v1.1.0", result: true1995 correctly detects ref1996 tag: true, ref: "non-existent-tag", result: false1997 correctly detects ref1998 when repository does not exist1999 always returns false2000 with non-empty project2001 #latest?2002 with latest sha2003 returns true2004 with a branch name as the ref2005 looks up commit with the full ref name2006 with not latest sha2007 returns false2008 #manual_actions2009 when none defined2010 when action defined2011 returns one action2012 there are multiple of the same name2013 returns latest one2014 #branch_updated?2015 when pipeline has before SHA2016 runs on a branch update push2017 when pipeline does not have before SHA2018 does not run on a branch updating push2019 #modified_paths2020 when old and new revisions are set2021 fetches stats for changes between commits2022 when either old or new revision is missing2023 returns nil2024 when source is merge request2025 returns merge request modified paths2026 #all_worktree_paths2027 returns all file paths cached2028 #top_level_worktree_paths2029 returns top-level file paths cached2030 #has_kubernetes_active?2031 when kubernetes is active2032 when user configured kubernetes from CI/CD > Clusters2033 returns true2034 when kubernetes is not active2035 returns false2036 #has_warnings?2037 build which is allowed to fail fails2038 returns true2039 build which is allowed to fail succeeds2040 returns false2041 build is retried and succeeds2042 returns false2043 #number_of_warnings2044 returns the number of warnings2045 supports eager loading of the number of warnings2046 .newest_first2047 returns the pipelines from new to old2048 searches limited backlog2049 .latest_status2050 when no ref is specified2051 returns the status of the latest pipeline2052 when ref is specified2053 returns the status of the latest pipeline for the given ref2054 .latest_successful_for_ref2055 returns the latest successful pipeline2056 .latest_successful_for_sha2057 returns the latest successful pipeline2058 .latest_successful_for_refs2059 returns the latest successful pipeline for both refs2060 .latest_pipeline_per_commit2061 without a ref2062 returns a Hash containing the latest pipeline per commit for all refs2063 only includes the latest pipeline of the given commit SHAs2064 when there are two pipelines for a ref and SHA2065 returns the latest pipeline2066 with a ref2067 only includes the pipelines for the given ref2068 .latest_for_shas2069 returns latest pipeline for sha2070 .latest_successful_ids_per_project2071 returns expected pipeline ids2072 .internal_sources2073 should be a kind of Array2074 .bridgeable_statuses2075 should be a kind of Array2076 should not include "created", "preparing", and "pending"2077 #status2078 on prepare2079 should eq "preparing"2080 on queuing2081 should eq "pending"2082 on run2083 should eq "running"2084 on drop20852019-10-23T14:09:17.374Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>104}2086 should eq "failed"2087 on success20882019-10-23T14:09:17.615Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>105}2089 should eq "success"2090 on cancel2091 when build is pending20922019-10-23T14:09:17.864Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>106}2093 should eq "canceled"2094 on failure and build retry20952019-10-23T14:09:18.103Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>107}2096 should eq "running"2097 #ci_yaml_file_path2098 unknown_source2099 returns the path from project2100 returns default when custom path is nil2101 returns default when custom path is empty2102 repository_source2103 returns the path from project2104 returns default when custom path is nil2105 returns default when custom path is empty2106 when pipeline is for auto-devops2107 does not return config file2108 #set_config_source2109 when pipelines does not contain needed data and auto devops is disabled2110 defines source to be unknown2111 when pipeline contains all needed data2112 when the repository has a config file2113 defines source to be from repository2114 when loading an object2115 does not redefine the source2116 when the repository does not have a config file2117 auto devops enabled2118 defines source to be auto devops2119 #ci_yaml_file2120 the source is unknown2121 returns the configuration if found2122 sets yaml errors if not found2123 the source is the repository2124 returns the configuration if found2125 when the source is auto_devops_source2126 finds the implied config2127 #update_status2128 when pipeline is empty2129 updates does not change pipeline status2130 when updating status to pending2131 updates pipeline status to running2132 when updating status to scheduled2133 updates pipeline status to scheduled2134 when statuses status was not recognized2135 raises an exception2136 #detailed_status2137 when pipeline is created2138 returns detailed status for created pipeline2139 when pipeline is pending2140 returns detailed status for pending pipeline2141 when pipeline is running2142 returns detailed status for running pipeline2143 when pipeline is successful2144 returns detailed status for successful pipeline2145 when pipeline is failed2146 returns detailed status for failed pipeline2147 when pipeline is canceled2148 returns detailed status for canceled pipeline2149 when pipeline is skipped2150 returns detailed status for skipped pipeline2151 when pipeline is blocked2152 returns detailed status for blocked pipeline2153 when pipeline is successful but with warnings2154 retruns detailed status for successful pipeline with warnings2155 #cancelable?2156 when there is a build created2157 is cancelable2158 when there is an external job created2159 is cancelable2160 when there are generic_commit_status jobs for created and success2161 is cancelable2162 when there are generic_commit_status and ci_build jobs for created and success2163 is cancelable2164 when there are ci_build jobs for created and success2165 is cancelable2166 when there are generic_commit_status jobs for created and failed2167 is cancelable2168 when there are generic_commit_status and ci_build jobs for created and failed2169 is cancelable2170 when there are ci_build jobs for created and failed2171 is cancelable2172 when there are generic_commit_status jobs for created and canceled2173 is cancelable2174 when there are generic_commit_status and ci_build jobs for created and canceled2175 is cancelable2176 when there are ci_build jobs for created and canceled2177 is cancelable2178 when there is a build running2179 is cancelable2180 when there is an external job running2181 is cancelable2182 when there are generic_commit_status jobs for running and success2183 is cancelable2184 when there are generic_commit_status and ci_build jobs for running and success2185 is cancelable2186 when there are ci_build jobs for running and success2187 is cancelable2188 when there are generic_commit_status jobs for running and failed2189 is cancelable2190 when there are generic_commit_status and ci_build jobs for running and failed2191 is cancelable2192 when there are ci_build jobs for running and failed2193 is cancelable2194 when there are generic_commit_status jobs for running and canceled2195 is cancelable2196 when there are generic_commit_status and ci_build jobs for running and canceled2197 is cancelable2198 when there are ci_build jobs for running and canceled2199 is cancelable2200 when there is a build pending2201 is cancelable2202 when there is an external job pending2203 is cancelable2204 when there are generic_commit_status jobs for pending and success2205 is cancelable2206 when there are generic_commit_status and ci_build jobs for pending and success2207 is cancelable2208 when there are ci_build jobs for pending and success2209 is cancelable2210 when there are generic_commit_status jobs for pending and failed2211 is cancelable2212 when there are generic_commit_status and ci_build jobs for pending and failed2213 is cancelable2214 when there are ci_build jobs for pending and failed2215 is cancelable2216 when there are generic_commit_status jobs for pending and canceled2217 is cancelable2218 when there are generic_commit_status and ci_build jobs for pending and canceled2219 is cancelable2220 when there are ci_build jobs for pending and canceled2221 is cancelable2222 when there is a build success2223 is not cancelable2224 when there is an external job success2225 is not cancelable2226 when there is a build failed2227 is not cancelable2228 when there is an external job failed2229 is not cancelable2230 when there is a build canceled2231 is not cancelable2232 when there is an external job canceled2233 is not cancelable2234 when there is a manual action present in the pipeline2235 is not cancelable2236 #cancel_running2237 when there is a running external job and a regular job2238 cancels both jobs2239 when jobs are in different stages2240 cancels both jobs2241 when there are created builds present in the pipeline2242 cancels created builds2243 #retry_failed2244 when there is a failed build and failed external status2245 retries only build2246 when builds are in different stages2247 retries both builds2248 when there are canceled and failed2249 retries both builds2250 #execute_hooks2251 with pipeline hooks enabled2252 with multiple builds2253 when build is queued2254 receives a pending event once2255 when build is run2256 receives a running event once2257 when all builds succeed22582019-10-23T14:09:25.915Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>200}22592019-10-23T14:09:26.149Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>201}2260 receives a success event once2261 when stage one failed22622019-10-23T14:09:26.488Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>202}2263 receives a failed event once2264 with pipeline hooks disabled2265 did not execute pipeline_hook after touched2266 #merge_requests_as_head_pipeline2267 returns merge requests whose `diff_head_sha` matches the pipeline's SHA2268 doesn't return merge requests whose source branch doesn't match the pipeline's ref2269 doesn't return merge requests whose `diff_head_sha` doesn't match the pipeline's SHA2270 #all_merge_requests2271 behaves like a method that returns all merge requests for a given pipeline2272 returns all merge requests having the same source branch2273 doesn't return merge requests having a different source branch2274 when there is a merge request pipeline2275 returns an associated merge request2276 when there is another merge request pipeline that targets a different branch2277 does not return an associated merge request2278 for a fork2279 behaves like a method that returns all merge requests for a given pipeline2280 returns all merge requests having the same source branch2281 doesn't return merge requests having a different source branch2282 when there is a merge request pipeline2283 returns an associated merge request2284 when there is another merge request pipeline that targets a different branch2285 does not return an associated merge request2286 #stuck?2287 when pipeline is stuck2288 is stuck2289 when pipeline is not stuck2290 is not stuck2291 #has_yaml_errors?2292 when pipeline has errors2293 contains yaml errors2294 when pipeline does not have errors2295 does not contain yaml errors2296 notifications when pipeline success or failed2297 with success pipeline2298 behaves like sending a notification2299 sends an email2300 with failed pipeline2301 behaves like sending a notification2302 sends an email2303 with skipped pipeline2304 behaves like not sending any notification2305 does not send any email2306 with cancelled pipeline2307 behaves like not sending any notification2308 does not send any email2309 #latest_builds_with_artifacts2310 returns an Array2311 returns the latest builds with non-expired artifacts2312 does not return builds with expired artifacts2313 memoizes the returned relation2314 #has_reports?2315 when pipeline has builds with test reports2316 when pipeline status is running2317 should be falsey2318 when pipeline status is success2319 should be truthy2320 when pipeline does not have builds with test reports2321 should be falsey2322 when retried build has test reports2323 should be falsey2324 #test_reports2325 when pipeline has multiple builds with test reports2326 returns test reports with collected data2327 when builds are retried2328 does not take retried builds into account2329 when pipeline does not have any builds with test reports2330 returns empty test reports2331 #total_size2332 returns all jobs (including failed and retried)2333 #status2334 when transitioning to failed2335 when pipeline has autodevops as source2336 calls autodevops disable service2337 when pipeline has other source2338 does not call auto devops disable service2339 #default_branch?2340 when pipeline ref is the default branch of the project2341 returns true2342 when pipeline ref is not the default branch of the project2343 returns false2344 #find_stage_by_name2345 when stage exists2346 should eq #<Ci::Stage id: 149, project_id: 297, pipeline_id: 329, created_at: "2019-10-23 14:09:35", updated_at: "2019-10-23 14:09:35", name: "test", status: "pending", lock_version: 0, position: 1>2347 when stage does not exist2348 raises an ActiveRecord exception2349 #error_messages2350 when pipeline has errors2351 returns the full error messages2352 when pipeline does not have errors2353 returns empty string2354Ci::ProcessPipelineService#execute2355 when simple pipeline is defined23562019-10-23T14:09:36.891Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>235}23572019-10-23T14:09:37.060Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>236}23582019-10-23T14:09:37.272Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>237}23592019-10-23T14:09:37.383Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>238}23602019-10-23T14:09:37.547Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>239}2361 processes a pipeline2362 does not process pipeline if existing stage is running2363 custom stage with first job allowed to fail23642019-10-23T14:09:38.547Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>245}23652019-10-23T14:09:38.706Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>246}2366 automatically triggers a next stage when build finishes2367 when optional manual actions are defined2368 when builds are successful23692019-10-23T14:09:39.648Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>247}23702019-10-23T14:09:39.878Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>248}23712019-10-23T14:09:40.136Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>250}23722019-10-23T14:09:40.441Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>252}2373 properly processes the pipeline2374 when test job fails23752019-10-23T14:09:41.276Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>254}23762019-10-23T14:09:41.508Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>255}23772019-10-23T14:09:41.672Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>256}23782019-10-23T14:09:41.995Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>259}2379 properly processes the pipeline2380 when test and test_failure jobs fail23812019-10-23T14:09:42.928Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>261}23822019-10-23T14:09:43.163Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>262}23832019-10-23T14:09:43.331Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>263}23842019-10-23T14:09:43.668Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>266}2385 properly processes the pipeline2386 when deploy job fails23872019-10-23T14:09:44.461Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>268}23882019-10-23T14:09:44.714Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>269}23892019-10-23T14:09:45.008Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>271}23902019-10-23T14:09:45.244Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>273}2391 properly processes the pipeline2392 when build is canceled in the second stage23932019-10-23T14:09:46.054Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>275}23942019-10-23T14:09:46.288Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>276}2395 does not schedule builds after build has been canceled2396 when listing optional manual actions23972019-10-23T14:09:47.530Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>282}23982019-10-23T14:09:47.754Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>283}23992019-10-23T14:09:48.024Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>285}2400 returns only for skipped builds2401 when delayed jobs are defined2402 when the scene is timed incremental rollout2403 when builds are successful24042019-10-23T14:09:48.715Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>289}24052019-10-23T14:09:49.037Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>290}24062019-10-23T14:09:49.355Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>291}24072019-10-23T14:09:49.523Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>292}2408 properly processes the pipeline2409 when build job fails24102019-10-23T14:09:50.316Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>293}2411 properly processes the pipeline2412 when rollout 10% is unscheduled24132019-10-23T14:09:51.308Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>297}2414 properly processes the pipeline2415 when user plays rollout 10%24162019-10-23T14:09:52.098Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>301}24172019-10-23T14:09:52.539Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>302}2418 schedules rollout100%2419 when rollout 10% fails24202019-10-23T14:09:53.237Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>305}24212019-10-23T14:09:53.656Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>306}2422 properly processes the pipeline2423 when user retries rollout 10%24242019-10-23T14:09:54.440Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>309}24252019-10-23T14:09:54.746Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>310}2426 does not schedule rollout10% again2427 when rollout 10% is played immidiately24282019-10-23T14:09:55.772Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>314}2429 properly processes the pipeline2430 when only one scheduled job exists in a pipeline2431 properly processes the pipeline2432 when there are two delayed jobs in a stage2433 blocks the stage until all scheduled jobs finished2434 when a delayed job is allowed to fail24352019-10-23T14:09:57.802Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>322}2436 blocks the stage and continues after it failed2437 when an exception is raised during a persistent ref creation2438 process the pipeline2439 when there are manual action in earlier stages2440 when first stage has only optional manual actions2441 starts from the second stage2442 when second stage has only optional manual actions24432019-10-23T14:09:59.056Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>328}2444 skips second stage and continues on third stage2445 when there are only manual actions in stages2446 processes all jobs until blocking actions encountered2447 when there is only one manual action2448 skips the pipeline2449 when the action was played2450 queues the action and pipeline2451 when blocking manual actions are defined2452 when first stage succeeds24532019-10-23T14:10:01.299Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>337}2454 blocks pipeline on stage with first manual action2455 when first stage fails24562019-10-23T14:10:02.077Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>342}24572019-10-23T14:10:02.510Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>346}2458 does not take blocking action into account2459 when pipeline is promoted sequentially up to the end24602019-10-23T14:10:03.260Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>347}24612019-10-23T14:10:03.754Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>348}24622019-10-23T14:10:03.922Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>349}24632019-10-23T14:10:04.328Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>350}24642019-10-23T14:10:04.494Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>351}2465 properly processes entire pipeline2466 when second stage has only on_failure jobs24672019-10-23T14:10:05.125Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>352}2468 skips second stage and continues on third stage2469 when failed build in the middle stage is retried2470 when failed build is the only unsuccessful build in the stage24712019-10-23T14:10:06.004Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>356}24722019-10-23T14:10:06.162Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>355}24732019-10-23T14:10:06.365Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>357}24742019-10-23T14:10:06.467Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>358}24752019-10-23T14:10:07.101Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>361}2476 does trigger builds in the next stage2477 updates a list of retried builds2478 returns unique statuses2479 when builds with auto-retries are configured24802019-10-23T14:10:08.156Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>365}24812019-10-23T14:10:08.324Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>368}24822019-10-23T14:10:08.642Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>367}2483 automatically retries builds in a valid order2484 when pipeline with needs is created24852019-10-23T14:10:09.532Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>369}24862019-10-23T14:10:09.822Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>371}24872019-10-23T14:10:09.942Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>372}24882019-10-23T14:10:10.058Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>370}24892019-10-23T14:10:10.396Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>373}24902019-10-23T14:10:10.511Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>374}2491 when linux:* finishes first it runs it out of order2492 when feature ci_dag_support is disabled24932019-10-23T14:10:11.571Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>376}24942019-10-23T14:10:11.752Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>377}24952019-10-23T14:10:12.086Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>378}24962019-10-23T14:10:12.196Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>379}24972019-10-23T14:10:12.311Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>380}24982019-10-23T14:10:12.433Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>381}2499 when linux:build finishes first it follows stages2500 when one of the jobs is run on a failure2501 when another job in build phase fails first2502 when ci_dag_support is enabled25032019-10-23T14:10:13.363Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>384}25042019-10-23T14:10:13.661Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>383}2505 does skip linux:notify2506 when ci_dag_support is disabled25072019-10-23T14:10:14.790Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>392}25082019-10-23T14:10:14.970Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>391}2509 does run linux:notify2510 when linux:build job fails first25112019-10-23T14:10:16.253Z 91 TID-gpk6n37sj WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>399}2512 does run linux:notify2513Members::DestroyService2514 with a member with access2515 when current user cannot destroy the given member2516 with a project member2517 behaves like a service raising Gitlab::Access::AccessDeniedError2518 raises Gitlab::Access::AccessDeniedError2519 behaves like a service destroying a member with access2520 invalidates cached counts for assigned issues and merge requests2521 behaves like a service destroying a member2522 destroys the member2523 destroys member notification_settings2524 with a group member2525 behaves like a service raising Gitlab::Access::AccessDeniedError2526 raises Gitlab::Access::AccessDeniedError2527 behaves like a service destroying a member with access2528 invalidates cached counts for assigned issues and merge requests2529 behaves like a service destroying a member2530 destroys the member2531 destroys member notification_settings2532 when current user can destroy the given member2533 with a project member2534 behaves like a service destroying a member with access2535 invalidates cached counts for assigned issues and merge requests2536 behaves like a service destroying a member2537 destroys the member2538 destroys member notification_settings2539 with a group member2540 behaves like a service destroying a member with access2541 invalidates cached counts for assigned issues and merge requests2542 behaves like a service destroying a member2543 destroys the member2544 destroys member notification_settings2545 with an access requester2546 when current user cannot destroy the given access requester2547 behaves like a service raising Gitlab::Access::AccessDeniedError2548 raises Gitlab::Access::AccessDeniedError2549 behaves like a service destroying a member2550 destroys the member2551 destroys member notification_settings2552 behaves like a service raising Gitlab::Access::AccessDeniedError2553 raises Gitlab::Access::AccessDeniedError2554 behaves like a service destroying a member2555 destroys the member2556 destroys member notification_settings2557 when current user can destroy the given access requester2558 behaves like a service destroying an access requester2559 calls Member#after_decline_request2560 behaves like a service destroying a member2561 destroys the member2562 destroys member notification_settings2563 when current user is the member2564 does not call Member#after_decline_request2565 behaves like a service destroying an access requester2566 calls Member#after_decline_request2567 behaves like a service destroying a member2568 destroys the member2569 destroys member notification_settings2570 when current user is the member2571 does not call Member#after_decline_request2572 with an invited user2573 when current user cannot destroy the given invited user2574 behaves like a service raising Gitlab::Access::AccessDeniedError2575 raises Gitlab::Access::AccessDeniedError2576 behaves like a service destroying a member2577 destroys the member2578 destroys member notification_settings2579 behaves like a service raising Gitlab::Access::AccessDeniedError2580 raises Gitlab::Access::AccessDeniedError2581 behaves like a service destroying a member2582 destroys the member2583 destroys member notification_settings2584 when current user can destroy the given invited user2585 behaves like a service destroying a member2586 destroys the member2587 destroys member notification_settings2588 behaves like a service destroying a member2589 destroys the member2590 destroys member notification_settings2591 subresources2592 removes the project membership2593 removes the group membership2594 removes the subgroup membership2595 removes the subsubgroup membership2596 removes the subsubproject membership2597 does not remove the user from the control project2598Discussion ResolvableDiscussion2599 #resolvable?2600 when potentially resolvable2601 when all notes are unresolvable2602 returns false2603 when some notes are unresolvable and some notes are resolvable2604 returns true2605 when all notes are resolvable2606 returns true2607 when not potentially resolvable2608 returns false2609 #resolved?2610 when not resolvable2611 returns false2612 when resolvable2613 when all resolvable notes are resolved2614 returns true2615 when some resolvable notes are not resolved2616 returns false2617 #to_be_resolved?2618 when not resolvable2619 returns false2620 when resolvable2621 when all resolvable notes are resolved2622 returns false2623 when some resolvable notes are not resolved2624 returns true2625 #can_resolve?2626 when not resolvable2627 returns false2628 when resolvable2629 when not signed in2630 returns false2631 when signed in2632 when the signed in user is the noteable author2633 returns true2634 when the signed in user can push to the project2635 returns true2636 when the signed in user is a random user2637 returns false2638 #resolve!2639 when not resolvable2640 returns nil2641 doesn't set resolved_at2642 doesn't set resolved_by2643 doesn't mark as resolved2644 when resolvable2645 when all resolvable notes are resolved2646 doesn't change resolved_at on the resolved notes2647 doesn't change resolved_by on the resolved notes2648 doesn't change the resolved state on the resolved notes2649 doesn't change resolved_at2650 doesn't change resolved_by2651 doesn't change resolved state2652 when some resolvable notes are resolved2653 doesn't change resolved_at on the resolved note2654 doesn't change resolved_by on the resolved note2655 doesn't change the resolved state on the resolved note2656 sets resolved_at on the unresolved note2657 sets resolved_by on the unresolved note2658 marks the unresolved note as resolved2659 sets resolved_at2660 sets resolved_by2661 marks as resolved2662 when no resolvable notes are resolved2663 sets resolved_at on the unresolved notes2664 sets resolved_by on the unresolved notes2665 marks the unresolved notes as resolved2666 sets resolved_at2667 sets resolved_by2668 marks as resolved2669 #unresolve!2670 when not resolvable2671 returns nil2672 when resolvable2673 when all resolvable notes are resolved2674 unsets resolved_at on the resolved notes2675 unsets resolved_by on the resolved notes2676 unmarks the resolved notes as resolved2677 unsets resolved_at2678 unsets resolved_by2679 unmarks as resolved2680 when some resolvable notes are resolved2681 unsets resolved_at on the resolved note2682 unsets resolved_by on the resolved note2683 unmarks the resolved note as resolved2684 #first_note_to_resolve2685 returns the first note that still needs to be resolved2686 #last_resolved_note2687 returns the last note that was resolved2688MergeRequestPolicy2689 when merge requests have been disabled2690 the author2691 behaves like a denied user2692 cannot create_merge_request_in2693 cannot create_merge_request_from2694 cannot read_merge_request2695 cannot create_note2696 a guest2697 behaves like a denied user2698 cannot create_merge_request_in2699 cannot create_merge_request_from2700 cannot read_merge_request2701 cannot create_note2702 a developer2703 behaves like a denied user2704 cannot create_merge_request_in2705 cannot create_merge_request_from2706 cannot read_merge_request2707 cannot create_note2708 any other user2709 behaves like a denied user2710 cannot create_merge_request_in2711 cannot create_merge_request_from2712 cannot read_merge_request2713 cannot create_note2714 when merge requests are private2715 a non-team-member2716 behaves like a denied user2717 cannot create_merge_request_in2718 cannot create_merge_request_from2719 cannot read_merge_request2720 cannot create_note2721 a developer2722 behaves like a user with access2723 can create_merge_request_in2724 can create_merge_request_from2725 can read_merge_request2726 can create_note2727 when merge request is unlocked2728 allows author to reopen merge request2729 allows developer to reopen merge request2730 prevents guest from reopening merge request2731 when merge request is locked2732 prevents author from reopening merge request2733 prevents developer from reopening merge request2734 prevents guests from reopening merge request2735 when the user is not a project member2736 cannot create a note2737 when the user is project member, with at least guest access2738 can create a note2739 with external authorization enabled2740 can read the issue iid without accessing the external service2741Boards::Issues::MoveService2742 #execute2743 when parent is a project2744 behaves like issues move service2745 when moving an issue between lists2746 delegates the label changes to Issues::UpdateService2747 removes the label from the list it came from and adds the label of the list it goes to2748 behaves like updating timestamps2749 updates updated_at2750 when moving to closed2751 delegates the close proceedings to Issues::CloseService2752 removes all list-labels from boards and close the issue2753 behaves like updating timestamps2754 updates updated_at2755 when moving to backlog2756 keeps labels and milestone2757 behaves like updating timestamps2758 updates updated_at2759 when moving from closed2760 delegates the re-open proceedings to Issues::ReopenService2761 adds the label of the list it goes to and reopen the issue2762 behaves like updating timestamps2763 updates updated_at2764 when moving to same list2765 returns false2766 keeps issues labels2767 keeps issues assignees2768 sorts issues2769 does not update updated_at2770 when parent is a group2771 behaves like issues move service2772 when moving an issue between lists2773 delegates the label changes to Issues::UpdateService2774 removes the label from the list it came from and adds the label of the list it goes to2775 behaves like updating timestamps2776 updates updated_at2777 when moving to closed2778 delegates the close proceedings to Issues::CloseService2779 removes all list-labels from boards and close the issue2780 behaves like updating timestamps2781 updates updated_at2782 when moving to backlog2783 keeps labels and milestone2784 behaves like updating timestamps2785 updates updated_at2786 when moving from closed2787 delegates the re-open proceedings to Issues::ReopenService2788 adds the label of the list it goes to and reopen the issue2789 behaves like updating timestamps2790 updates updated_at2791 when moving to same list2792 returns false2793 keeps issues labels2794 keeps issues assignees2795 sorts issues2796 does not update updated_at2797 when on a group board2798 sends the board_group_id parameter2799 #execute_multiple2800 returns the expected result if list of issues is empty2801 moving multiple issues2802 moves multiple issues from one list to another2803 moving a single issue2804 moves one issue2805 moving issues visually after an existing issue2806 moves one issue2807 moving issues visually before an existing issue2808 moves one issue2809MigrateAutoDevOpsDomainToClusterDomain2810NOTICE: trigger "trigger_97893debd1d4" for relation "design_management_versions" does not exist, skipping2811NOTICE: trigger "trigger_36edafd19664" for relation "epics" does not exist, skipping2812NOTICE: trigger "trigger_dd1443fbd36e" for relation "application_settings" does not exist, skipping2813NOTICE: trigger "trigger_806273a4d8be" for relation "application_settings" does not exist, skipping2814 with ProjectAutoDevOps with no domain2815 does not update cluster project2816 with ProjectAutoDevOps with domain2817 updates all cluster projects2818 when only some ProjectAutoDevOps have domain set2819 only updates specific cluster projects2820NOTICE: table "design_management_designs" does not exist, skipping2821NOTICE: table "design_management_designs_versions" does not exist, skipping2822NOTICE: table "design_management_versions" does not exist, skipping2823NOTICE: table "geo_container_repository_updated_events" does not exist, skipping2824NOTICE: trigger "trigger_806273a4d8be" for relation "application_settings" does not exist, skipping2825NOTICE: trigger "trigger_dd1443fbd36e" for relation "application_settings" does not exist, skipping2826NOTICE: trigger "trigger_84853438aac0" for relation "epics" does not exist, skipping2827NOTICE: trigger "trigger_97893debd1d4" for relation "design_management_versions" does not exist, skipping2828BuildDetailsEntity2829 inherits from JobEntity2830 #as_json2831 contains the needed key value pairs2832 when the user has access to issues and merge requests2833 when merge request orginates from the same project2834 contains the needed key value pairs2835 exposes correct details of the merge request2836 has a correct merge request path2837 when merge request is from a fork2838 contains the needed key value pairs2839 exposes details of the merge request2840 has a merge request path to a target project2841 when the build has not been erased2842 exposes a build erase path2843 when the build has been erased2844 exposes the user who erased the build2845 when the user can only read the build2846 won't display the paths to issues and merge requests2847 when the build has failed2848 should include {:failure_reason => "unmet_prerequisites"}2849 should include {:callout_message => "The job failed to complete prerequisite tasks"}2850 when the build has failed due to a missing dependency2851 should include {:failure_reason => "missing_dependency_failure"}2852 includes the failing dependencies in the callout message2853 when a build has environment with latest deployment2854 does not serialize latest deployment commit and associated builds2855 when the build has reports2856 exposes the report artifacts2857Banzai::Filter::CommitRangeReferenceFilter2858 requires project context2859 ignores valid references contained inside 'pre' element2860 ignores valid references contained inside 'code' element2861 ignores valid references contained inside 'a' element2862 ignores valid references contained inside 'style' element2863 internal reference2864 links to a valid two-dot reference2865 links to a valid three-dot reference2866 links to a valid short ID2867 links with adjacent text2868 ignores invalid commit IDs2869 includes no title attribute2870 includes default classes2871 includes a data-project attribute2872 includes a data-commit-range attribute2873 supports an :only_path option2874 cross-project / cross-namespace complete reference2875 links to a valid reference2876 link has valid text2877 has valid text2878 ignores invalid commit IDs on the referenced project2879 cross-project / same-namespace complete reference2880 links to a valid reference2881 link has valid text2882 has valid text2883 ignores invalid commit IDs on the referenced project2884 cross-project shorthand reference2885 links to a valid reference2886 link has valid text2887 has valid text2888 ignores invalid commit IDs on the referenced project2889 cross-project URL reference2890 links to a valid reference2891 links with adjacent text2892 ignores invalid commit IDs on the referenced project2893 group context2894 ignores internal references2895 links to a full-path reference2896Notes::QuickActionsService2897 .noteable_update_service2898 returns Issues::UpdateService for a note on an issue2899 returns MergeRequests::UpdateService for a note on a merge request2900 returns Commits::TagService for a note on a commit2901 .supported?2902 with a note on an issue2903 returns true2904 with a note on a commit2905 returns false2906 #supported?2907 delegates to the class method2908 #execute2909 behaves like note on noteable that supports quick actions2910 note with only command2911 /close, /label, /assign & /milestone2912 closes noteable, sets labels, assigns, and sets milestone to noteable, and leave no note2913 /reopen2914 opens the noteable, and leave no note2915 /spend2916 updates the spent time on the noteable2917 note with command & text2918 /close, /label, /assign & /milestone2919 closes noteable, sets labels, assigns, and sets milestone to noteable2920 /reopen2921 opens the noteable2922 behaves like note on noteable that supports quick actions2923 note with only command2924 /close, /label, /assign & /milestone2925 closes noteable, sets labels, assigns, and sets milestone to noteable, and leave no note2926 /reopen2927 opens the noteable, and leave no note2928 /spend2929 updates the spent time on the noteable2930 note with command & text2931 /close, /label, /assign & /milestone2932 closes noteable, sets labels, assigns, and sets milestone to noteable2933 /reopen2934 opens the noteable2935 CE restriction for issue assignees2936 /assign2937 adds only one assignee from the list2938NotePolicy2939 #rules2940 when the noteable is a commit2941 when the project is private2942 behaves like a discussion with a private noteable2943 when the note author can no longer see the noteable2944 can not edit nor read the note2945 when the note author can still see the noteable2946 can edit the note2947 when the project is public2948 when repository access level is private2949 behaves like a discussion with a private noteable2950 when the note author can no longer see the noteable2951 can not edit nor read the note2952 when the note author can still see the noteable2953 can edit the note2954 when the project is public2955 when the note author is not a project member2956 can edit a note2957 when the noteable is a project snippet2958 can edit note2959 when it is private2960 behaves like a discussion with a private noteable2961 when the note author can no longer see the noteable2962 can not edit nor read the note2963 when the note author can still see the noteable2964 can edit the note2965 when the noteable is a personal snippet2966 can edit note2967 when it is private2968 can not edit nor read the note2969 when a discussion is confidential2970 behaves like a discussion with a private noteable2971 when the note author can no longer see the noteable2972 can not edit nor read the note2973 when the note author can still see the noteable2974 can edit the note2975 when a discussion is locked2976 when the note author is a project member2977 can edit a note2978 when the note author is not a project member2979 can not edit a note2980 can read a note2981 for discussions2982 allows the author to manage the discussion2983 when the user does not have access to the noteable2984 behaves like a discussion with a private noteable2985 when the note author can no longer see the noteable2986 can not edit nor read the note2987 when the note author can still see the noteable2988 can edit the note2989 when it is a system note2990 when noteable is a public issue2991 when user is project member2992 behaves like user can read the note2993 allows the user to read the note2994 behaves like user can act on the note2995 allows the user to read the note2996 when user is not project member2997 behaves like user can read the note2998 allows the user to read the note2999 when user is anonymous3000 behaves like user can read the note3001 allows the user to read the note3002 when it is a system note referencing a confidential issue3003 when user is project member3004 behaves like user can read the note3005 allows the user to read the note3006 behaves like user can act on the note3007 allows the user to read the note3008 when user is not project member3009 behaves like user cannot read or act on the note3010 allows user to read the note3011 when user is anonymous3012 behaves like user cannot read or act on the note3013 allows user to read the note3014ResourceLabelEvent3015 behaves like having unique enum values3016 has unique values in "action"3017 associations3018 should belong to user required:3019 should belong to issue required:3020 should belong to merge_request required:3021 should belong to label required:3022 validations3023 should be valid3024 Issuable validation3025 is invalid if issue_id and merge_request_id are missing3026 is invalid if issue_id and merge_request_id are set3027 is valid if only issue_id is set3028 is valid if only merge_request_id is set3029 #expire_etag_cache3030 expires resource note etag cache on event save3031 expires resource note etag cache on event destroy3032 #outdated_markdown?3033 returns true if label is missing and reference is not empty3034 returns true if reference is not set yet3035 returns true if markdown is outdated3036 returns false if label and reference are set3037Todos::Destroy::PrivateFeaturesService3038 when user_id is provided3039 when all features have same visibility as the project3040 removes only user issue todos3041 when issues are visible only to project members but the user is a member3042 does not remove any todos3043 when issues are visible only to project members3044 removes only user issue todos3045 when mrs, builds and repository are visible only to project members3046 removes only user mr and commit todos3047 when mrs are visible only to project members3048 removes only user merge request todo3049 when mrs and issues are visible only to project members3050 removes only user merge request and issue todos3051 when user_id is not provided3052 when all features have same visibility as the project3053 does not remove any todos3054 when issues are visible only to project members3055 removes only non members issue todos3056 when mrs, builds and repository are visible only to project members3057 removes only non members mr and commit todos3058 when mrs are visible only to project members3059 removes only non members merge request todos3060 when mrs and issues are visible only to project members3061 removes only non members merge request and issue todos3062FixWrongPagesAccessLevel3063NOTICE: trigger "trigger_97893debd1d4" for relation "design_management_versions" does not exist, skipping3064NOTICE: trigger "trigger_36edafd19664" for relation "epics" does not exist, skipping3065NOTICE: trigger "trigger_dd1443fbd36e" for relation "application_settings" does not exist, skipping3066NOTICE: trigger "trigger_806273a4d8be" for relation "application_settings" does not exist, skipping3067 correctly schedules background migrations3068 project_visibility: 20, pages_access_level: 30, access_control_is_enabled: true, pages_deployed: true, resulting_pages_access_level: 203069 sets proper pages_access_level3070 project_visibility: 20, pages_access_level: 30, access_control_is_enabled: false, pages_deployed: true, resulting_pages_access_level: 203071 sets proper pages_access_level3072 project_visibility: 0, pages_access_level: 30, access_control_is_enabled: true, pages_deployed: true, resulting_pages_access_level: 303073 sets proper pages_access_level3074 project_visibility: 10, pages_access_level: 30, access_control_is_enabled: true, pages_deployed: true, resulting_pages_access_level: 303075 sets proper pages_access_level3076 project_visibility: 10, pages_access_level: 20, access_control_is_enabled: false, pages_deployed: true, resulting_pages_access_level: 303077 sets proper pages_access_level3078 project_visibility: 10, pages_access_level: 20, access_control_is_enabled: true, pages_deployed: true, resulting_pages_access_level: 203079 sets proper pages_access_level3080 project_visibility: 10, pages_access_level: 20, access_control_is_enabled: true, pages_deployed: false, resulting_pages_access_level: 203081 sets proper pages_access_level3082 project_visibility: 0, pages_access_level: 20, access_control_is_enabled: true, pages_deployed: true, resulting_pages_access_level: 103083 sets proper pages_access_level3084 project_visibility: 0, pages_access_level: 20, access_control_is_enabled: true, pages_deployed: false, resulting_pages_access_level: 103085 sets proper pages_access_level3086 project_visibility: 0, pages_access_level: 20, access_control_is_enabled: false, pages_deployed: true, resulting_pages_access_level: 303087 sets proper pages_access_level3088 project_visibility: 0, pages_access_level: 20, access_control_is_enabled: false, pages_deployed: false, resulting_pages_access_level: 103089 sets proper pages_access_level3090NOTICE: trigger "trigger_806273a4d8be" for relation "application_settings" does not exist, skipping3091NOTICE: trigger "trigger_dd1443fbd36e" for relation "application_settings" does not exist, skipping3092NOTICE: trigger "trigger_84853438aac0" for relation "epics" does not exist, skipping3093NOTICE: trigger "trigger_97893debd1d4" for relation "design_management_versions" does not exist, skipping3094Clusters::ClustersHierarchy3095 #base_and_ancestors3096 project in nested group with clusters at every level3097 returns clusters for project3098 returns clusters for child_group3099 returns clusters for parent_group3100 returns clusters for ancestor_group3101 project in a namespace3102 returns clusters for project3103 cluster has management project3104 returns clusters for management_project3105 returns nothing if include_management_project is false3106 returns clusters for project3107 returns clusters for group3108 project in nested group with clusters at some levels3109 returns clusters for management_project3110 returns clusters for project3111 returns clusters for child_group3112 returns clusters for parent_group3113 returns clusters for ancestor_group3114CycleAnalytics::GroupLevel3115 #permissions3116 returns true for all stages3117 #stats3118 returns medians for each stage for a specific group3119 #summary3120 returns medians for each stage for a specific group3121Gitlab::Chat::Command3122 #try_create_pipeline3123 returns nil when the command is not valid3124 tries to create the pipeline when a command is valid3125 #create_pipeline3126 creates the pipeline3127 creates the chat data for the pipeline3128 stores the chat name ID in the chat data3129 stores the response URL in the chat data3130 creates the environment variables for the pipeline3131Gitlab::CycleAnalytics::TestStage3132 behaves like base stage3133 has the median data value3134 has the median data stage3135 has the median data description3136 has the title3137 has the events3138 #median3139 counts median from issues with metrics3140 when valid date range is given3141 should eq 18003142 when records are out of the date range3143 should eq nil3144 when using the new query backend3145 provides the same results as the old implementation3146 for the median3147 for the list of event records3148Projects::AfterRenameService3149 #execute3150 using legacy storage3151 renames a repository3152 updates project full path in .git/config3153 updates storage location3154 container registry with images3155 raises a RenameFailedError3156 gitlab pages3157 moves pages folder to new location3158 attachments3159 moves uploads folder to new location3160 with hashed storage upgrade when renaming enabled3161 calls HashedStorage::MigrationService with correct options3162 using hashed storage3163 renames a repository3164 updates project full path in .git/config3165 updates storage location3166 container registry with images3167 raises a RenameFailedError3168 gitlab pages3169 moves pages folder to new location3170 attachments3171 keeps uploads folder location unchanged3172 when not rolled out3173 moves attachments folder to hashed storage3174Issues::ResolveDiscussions3175 for resolving discussions3176 #merge_request_for_resolving_discussion3177 finds the merge request3178 only queries for the merge request once3179 #discussions_to_resolve3180 contains a single discussion when matching merge request and discussion are passed3181 contains all discussions when only a merge request is passed3182 contains only unresolved discussions3183 is empty when a discussion and another merge request are passed3184RemoveRedundantPipelineStages3185NOTICE: trigger "trigger_97893debd1d4" for relation "design_management_versions" does not exist, skipping3186NOTICE: trigger "trigger_36edafd19664" for relation "epics" does not exist, skipping3187NOTICE: trigger "trigger_dd1443fbd36e" for relation "application_settings" does not exist, skipping3188NOTICE: trigger "trigger_806273a4d8be" for relation "application_settings" does not exist, skipping3189NOTICE: trigger "trigger_f1016db1483e" for relation "users" does not exist, skipping3190 removes ambiguous stages and preserves builds3191 retries when incorrectly added index exception is caught3192 does not retry when unknown exception is being raised3193NOTICE: trigger "trigger_7dc952250ffd" for relation "users" does not exist, skipping3194NOTICE: table "design_management_designs" does not exist, skipping3195NOTICE: table "design_management_designs_versions" does not exist, skipping3196NOTICE: table "design_management_versions" does not exist, skipping3197NOTICE: table "geo_container_repository_updated_events" does not exist, skipping3198NOTICE: trigger "trigger_806273a4d8be" for relation "application_settings" does not exist, skipping3199NOTICE: trigger "trigger_dd1443fbd36e" for relation "application_settings" does not exist, skipping3200NOTICE: trigger "trigger_84853438aac0" for relation "epics" does not exist, skipping3201NOTICE: trigger "trigger_97893debd1d4" for relation "design_management_versions" does not exist, skipping3202Ci::Group3203 should includes the StaticModel module3204 should respond to #stage3205 should respond to #name3206 should respond to #jobs3207 should respond to #status3208 #size3209 returns the number of statuses in the group3210 #status3211 when ci_composite_status is enabled3212 returns a failed status3213 when ci_composite_status is disabled3214 returns a failed status3215 #detailed_status3216 when there is only one item in the group3217 calls the status from the object itself3218 when there are more than one commit status in the group3219 fabricates a new detailed status object3220 .fabricate3221 returns an array of three groups3222 returns groups with correctly ordered statuses3223 returns groups with correct names3224 when a name is nil on legacy pipelines3225 returns an array of three groups3226Gitlab::Chat::Responder::Slack3227 #send_response3228 sends a response back to Slack3229 #success3230 returns the output for a successful build3231 limits the output to a fixed size3232 does not send a response if the output is empty3233 #failure3234 returns the output for a failed build3235 #scheduled_output3236 returns the output for a scheduled build3237IssueEntity3238 has Issuable attributes3239 has time estimation attributes3240 when issue got moved3241 when user cannot read target project3242 does not return moved_to_id3243 when user can read target project3244 returns moved moved_to_id3245 when issue got duplicated3246 when user cannot read new issue3247 does not return duplicated_to_id3248 when user can read target project3249 returns duplicated duplicated_to_id3250DiscussionOnDiff3251 #truncated_diff_lines3252 when diff is greater than allowed number of truncated diff lines3253 returns fewer lines3254 with truncated diff lines diff limit set3255 when diff limit is higher than default3256 returns fewer lines than the default3257 when diff_limit is lower than default3258 returns fewer lines than the default3259 when some diff lines are meta3260 returns no meta lines3261 when the diff line does not exist on a legacy diff note3262 returns an empty array3263 when the discussion is on an image3264 returns an empty array3265 #line_code_in_diffs3266 when the discussion is active in the diff3267 returns the current line code3268 when the discussion was created in the diff3269 returns the original line code3270 when the discussion is unrelated to the diff3271 returns nil3272Clusters::BuildKubernetesNamespaceService3273 initializes a new namespace and sets default values3274 sets cluster_project and environment3275 namespace per environment is disabled3276 initializes a new namespace and sets default values3277 does not set environment3278 group cluster3279 initializes a new namespace and sets default values3280 does not set cluster_project3281NotificationRecipientService3282 #build_new_note_recipients3283 when there are multiple watchers3284 avoids N+1 queries3285 when there are multiple subscribers3286 avoids N+1 queries3287 when the project is private3288 avoids N+1 queries3289Labels::AvailableLabelsService3290 #find_or_create_by_titles3291 when parent is a project3292 when a user is not a project member3293 returns only relevant label ids3294 when a user is a project member3295 creates new labels for not found titles3296 when parent is a group3297 when a user is not a group member3298 returns only relevant label ids3299 when a user is a group member3300 creates new labels for not found titles3301 #filter_labels_ids_in_param3302 when parent is a project3303 returns only relevant label ids3304 when parent is a group3305 returns only relevant label ids3306RedmineService3307 Associations3308 should belong to project required:3309 should have one service_hook3310 Validations3311 when service is active3312 should validate that :project_url cannot be empty/falsy3313 should validate that :issues_url cannot be empty/falsy3314 should validate that :new_issue_url cannot be empty/falsy3315 behaves like issue tracker service URL attribute3316 should allow :project_url to be ‹"https://example.com"›3317 should not allow :project_url to be ‹"example.com"›3318 should not allow :project_url to be ‹"ftp://example.com"›3319 should not allow :project_url to be ‹"herp-and-derp"›3320 behaves like issue tracker service URL attribute3321 should allow :issues_url to be ‹"https://example.com"›3322 should not allow :issues_url to be ‹"example.com"›3323 should not allow :issues_url to be ‹"ftp://example.com"›3324 should not allow :issues_url to be ‹"herp-and-derp"›3325 behaves like issue tracker service URL attribute3326 should allow :new_issue_url to be ‹"https://example.com"›3327 should not allow :new_issue_url to be ‹"example.com"›3328 should not allow :new_issue_url to be ‹"ftp://example.com"›3329 should not allow :new_issue_url to be ‹"herp-and-derp"›3330 when service is inactive3331 should not validate that :project_url cannot be empty/falsy3332 should not validate that :issues_url cannot be empty/falsy3333 should not validate that :new_issue_url cannot be empty/falsy3334 .reference_pattern3335 does allow # on the reference3336 behaves like allows project key on reference pattern3337 allows underscores in the project name3338 allows numbers in the project name3339 requires the project name to begin with A-Z3340 overriding properties3341 when data are stored in properties3342 behaves like issue tracker fields3343 when data are stored in the properties3344 #update3345 removes title and description from properties3346 stores title & description in services table3347 reading fields3348 returns correct values3349 when data are stored in separated fields3350 behaves like issue tracker fields3351 when data are stored in the properties3352 #update3353 removes title and description from properties3354 stores title & description in services table3355 reading fields3356 returns correct values3357 when data are stored in both properties and separated fields3358 behaves like issue tracker fields3359 when data are stored in the properties3360 #update3361 removes title and description from properties3362 stores title & description in services table3363 reading fields3364 returns correct values3365 when no title & description are set3366 returns default values3367Clusters::Applications::CheckIngressIpAddressService3368 #execute3369 when the ingress ip address is available3370 updates the external_ip for the app3371 when the ingress external hostname is available3372 updates the external_hostname for the app3373 when the ingress ip address is not available3374 does not error3375 when the exclusive lease cannot be obtained3376 does not call kubeclient3377 #execute3378 when the ingress ip address is available3379 updates the external_ip for the app3380 when the ingress external hostname is available3381 updates the external_hostname for the app3382 when the ingress ip address is not available3383 does not error3384 when the exclusive lease cannot be obtained3385 does not call kubeclient3386Gitlab::RepositoryCache3387 #cache_key3388 includes the namespace3389 with a given namespace3390 includes the full namespace3391 #expire3392 expires the given key from the cache3393 #fetch3394 fetches the given key from the cache3395 accepts a block3396 #fetch_without_caching_false3397 requires a block3398 when the key does not exist in the cache3399 when the result of the block is truthy3400 returns the result of the block3401 caches the value3402 when the result of the block is falsey3403 returns the result of the block3404 does not cache the value3405 when the cached value is truthy3406 returns the cached value3407 does not execute the block3408 does not write to the cache3409 when the cached value is falsey3410 returns the result of the block3411 writes the truthy value to the cache3412Gitlab::Ci::Status::Build::Stop3413 #label3414 should eq "manual stop action"3415 action details3416 #has_action?3417 when user is allowed to update build3418 should have action3419 when user is not allowed to update build3420 should not have action3421 #action_path3422 should include "475/play"3423 #action_icon3424 should eq "stop"3425 #action_title3426 should eq "Stop"3427 #action_button_title3428 should eq "Stop this environment"3429 .matches?3430 when build is playable3431 when build stops an environment3432 is a correct match3433 when build does not stop an environment3434 does not match3435 when build is not playable3436 does not match3437 #status_tooltip3438 does not override status status_tooltip3439 #badge_tooltip3440 does not override status badge_tooltip3441PipelineScheduleWorker3442 when the schedule is runnable by the user3443 when there is a scheduled pipeline within next_run_at3444 behaves like successful scheduling3445 creates a new pipeline3446 when the latest commit contains [ci skip]3447 behaves like successful scheduling3448 creates a new pipeline3449 when the schedule is deactivated3450 does not creates a new pipeline3451 when gitlab-ci.yml is corrupted3452 does not creates a new pipeline3453 when the schedule is not runnable by the user3454 does not deactivate the schedule3455 does not create a pipeline3456 does not raise an exception3457 when .gitlab-ci.yml is missing in the project3458 does not create a pipeline3459 does not raise an exception3460Commits::CommitPatchService3461 #execute3462 returns a successful result3463 is based off HEAD when no start ref is passed3464 when specifying a different start branch3465 is based of the correct branch3466 when the user does not have access3467 behaves like an error response3468 returns the correct error3469 when the patches are not valid3470 behaves like an error response3471 returns the correct error3472 when the new branch name is invalid3473 behaves like an error response3474 returns the correct error3475 when the patches do not apply3476 behaves like an error response3477 returns the correct error3478 when specifying a non existent start branch3479 behaves like an error response3480 returns the correct error3481Gitlab::BackgroundMigration::FixUserNamespaceNames3482NOTICE: trigger "trigger_97893debd1d4" for relation "design_management_versions" does not exist, skipping3483NOTICE: trigger "trigger_36edafd19664" for relation "epics" does not exist, skipping3484NOTICE: trigger "trigger_dd1443fbd36e" for relation "application_settings" does not exist, skipping3485NOTICE: trigger "trigger_806273a4d8be" for relation "application_settings" does not exist, skipping3486 updating the namespace names3487 updates a user namespace within range3488 does not update namespaces out of range3489 does not update groups owned by the users3490 namespace route names3491 updates the route name if it didn't match the namespace3492 updates the route name if it was nil match the namespace3493 doesn't update group routes3494 doesn't touch routes for namespaces out of range3495NOTICE: trigger "trigger_806273a4d8be" for relation "application_settings" does not exist, skipping3496NOTICE: trigger "trigger_dd1443fbd36e" for relation "application_settings" does not exist, skipping3497NOTICE: trigger "trigger_84853438aac0" for relation "epics" does not exist, skipping3498NOTICE: trigger "trigger_97893debd1d4" for relation "design_management_versions" does not exist, skipping3499RemoveUnreferencedLfsObjectsWorker3500 #perform3501 removes unreferenced lfs objects3502 leaves referenced lfs objects3503 removes unreferenced lfs objects after project removal3504Gitlab::Badge::Pipeline::Metadata3505 behaves like badge metadata3506 #to_html3507 points to link3508 contains clickable image3509 #to_markdown3510 should include "http://localhost/namespace868/project896/badges/feature/pipeline.svg"3511 should include "http://localhost/namespace869/project897/commits/feature"3512 #to_asciidoc3513 should include "http://localhost/namespace870/project898/badges/feature/pipeline.svg"3514 should include "http://localhost/namespace871/project899/commits/feature"3515 should include "image:"3516 should include "link="3517 should include "title="3518 #title3519 returns build status title3520 #image_url3521 returns valid url3522 #link_url3523 returns valid link3524Users::CreateService3525 #execute3526 with an admin user3527 when required parameters are provided3528 returns a persisted user3529 persists the given attributes3530 user is not confirmed if skip_confirmation param is not present3531 logs the user creation3532 executes system hooks3533 does not send a notification email3534 when the current_user is not persisted3535 persists the given attributes and sets created_by_id to nil3536 when force_random_password parameter is true3537 generates random password3538 when password_automatically_set parameter is true3539 persists the given attributes3540 when skip_confirmation parameter is true3541 confirms the user3542 when reset_password parameter is true3543 resets password even if a password parameter is given3544 sends a notification email3545 with nil user3546 persists the given attributes3547Ci::BuildMetadata3548 behaves like having unique enum values3549 has unique values in "timeout_source"3550 #update_timeout_state3551 when project timeout is set3552 when runner is assigned to the job3553 when runner timeout is not set3554 behaves like sets timeout3555 sets project_timeout_source3556 sets project timeout3557 when runner timeout is lower than project timeout3558 behaves like sets timeout3559 sets project_timeout_source3560 sets project timeout3561 when runner timeout is higher than project timeout3562 behaves like sets timeout3563 sets project_timeout_source3564 sets project timeout3565 when job timeout is set3566 when job timeout is higher than project timeout3567 behaves like sets timeout3568 sets project_timeout_source3569 sets project timeout3570 when job timeout is lower than project timeout3571 behaves like sets timeout3572 sets project_timeout_source3573 sets project timeout3574 when both runner and job timeouts are set3575 when job timeout is higher than runner timeout3576 behaves like sets timeout3577 sets project_timeout_source3578 sets project timeout3579 when job timeout is lower than runner timeout3580 behaves like sets timeout3581 sets project_timeout_source3582 sets project timeout3583Upload3584 associations3585 should belong to model required:3586 validations3587 should validate that :size cannot be empty/falsy3588 should validate that :path cannot be empty/falsy3589 should validate that :model cannot be empty/falsy3590 should validate that :uploader cannot be empty/falsy3591 callbacks3592 for a file above the checksum threshold3593 schedules checksum calculation3594 for a file at or below the checksum threshold3595 calculates checksum immediately before save3596 after_destroy3597 uploader is FileUploader-based3598 calls delete_file!3599 #absolute_path3600 returns the path directly when already absolute3601 delegates to the uploader's absolute_path method3602 #calculate_checksum!3603 sets `checksum` to SHA256 sum of the file3604 sets `checksum` to nil for a non-existent file3605 #build_uploader3606 returns a uploader object with current upload associated with it3607 #retrieve_uploader3608 returns a uploader object with current uploader associated with and cache retrieved3609 #needs_checksum?3610 with local storage3611 returns true when no checksum exists3612 returns false when checksum is already present3613 with remote storage3614 returns false3615 #exist?3616 returns true when the file exists3617 when the file does not exist3618 returns false3619 when the record is persisted3620 sends a message to Sentry3621 increments a metric counter to signal a problem3622 when the record is not persisted3623 does not send a message to Sentry3624 does not increment a metric counter3625 #uploader_context3626 should match (a hash including {:secret => "secret", :identifier => "file.txt"})3627Analytics::CycleAnalytics::ProjectStage3628 default stages must be valid3629 associations3630 should belong to project required:3631 behaves like cycle analytics stage3632 validation3633 is valid3634 validates presence of parent3635 validates presence of start_event_identifier3636 validates presence of end_event_identifier3637 is invalid when end_event is not allowed for the given start_event3638 disallows default stage names when creating custom stage3639 should not be valid3640 #subject_class3641 infers the model from the start event3642 #start_event3643 builds start_event object based on start_event_identifier3644 #end_event3645 builds end_event object based on end_event_identifier3646 #matches_with_stage_params?3647 matches with default stage params3648 mismatches when the stage is custom3649 #parent_id3650 delegates to 'parent_name'_id attribute3651UpdateProjectImportVisibilityLevel3652NOTICE: trigger "trigger_97893debd1d4" for relation "design_management_versions" does not exist, skipping3653NOTICE: trigger "trigger_36edafd19664" for relation "epics" does not exist, skipping3654NOTICE: trigger "trigger_dd1443fbd36e" for relation "application_settings" does not exist, skipping3655NOTICE: trigger "trigger_806273a4d8be" for relation "application_settings" does not exist, skipping3656 private visibility level3657 updates the project visibility3658 internal visibility level3659 updates the project visibility3660 public visibility level3661 does not update the project visibility3662 private project visibility level3663 does not update the project visibility3664 no namespace3665 does not update the project visibility3666NOTICE: table "design_management_designs" does not exist, skipping3667NOTICE: table "design_management_designs_versions" does not exist, skipping3668NOTICE: table "design_management_versions" does not exist, skipping3669NOTICE: table "geo_container_repository_updated_events" does not exist, skipping3670NOTICE: trigger "trigger_806273a4d8be" for relation "application_settings" does not exist, skipping3671NOTICE: trigger "trigger_dd1443fbd36e" for relation "application_settings" does not exist, skipping3672NOTICE: trigger "trigger_84853438aac0" for relation "epics" does not exist, skipping3673NOTICE: trigger "trigger_97893debd1d4" for relation "design_management_versions" does not exist, skipping3674Gitlab::Auth::UserAuthFinders3675 #find_user_from_warden3676 with CSRF token3677 with invalid credentials3678 returns nil3679 with valid credentials3680 returns the user3681 without CSRF token3682 returns nil3683 #find_user_from_feed_token3684 when the request format is atom3685 when feed_token param is provided3686 returns user if valid feed_token3687 returns nil if feed_token is blank3688 returns exception if invalid feed_token3689 when rss_token param is provided3690 returns user if valid rssd_token3691 returns nil if rss_token is blank3692 returns exception if invalid rss_token3693 when the request format is not atom3694 returns nil3695 when the request format is empty3696 the method call does not modify the original value3697 #find_user_from_static_object_token3698 when request format is archive3699 when token header param is present3700 when token is correct3701 returns the user3702 when token is incorrect3703 returns the user3704 when token query param is present3705 when token is correct3706 returns the user3707 when token is incorrect3708 returns the user3709 when request format is not archive3710 returns nil3711 #find_user_from_access_token3712 returns nil if no access_token present3713 when validate_access_token! returns valid3714 returns user3715 returns exception if token has no user3716 with OAuth headers3717 returns user3718 returns exception if invalid personal_access_token3719 #find_user_from_web_access_token3720 returns exception if token has no user3721 returns the user for RSS requests3722 returns the user for ICS requests3723 returns the user for API requests3724 no feed or API requests3725 returns nil if the request is not RSS3726 returns nil if the request is not ICS3727 returns nil if the request is not API3728 #find_personal_access_token3729 returns nil if no personal_access_token3730 returns exception if invalid personal_access_token3731 passed as header3732 returns token if valid personal_access_token3733 passed as param3734 returns token if valid personal_access_token3735 #find_oauth_access_token3736 returns nil if no oauth_access_token3737 returns exception if invalid oauth_access_token3738 passed as header3739 returns token if valid oauth_access_token3740 passed as param3741 returns user if valid oauth_access_token3742 #validate_access_token!3743 returns nil if no access_token present3744 token is not valid3745 returns Gitlab::Auth::ExpiredError if token expired3746 returns Gitlab::Auth::RevokedError if token revoked3747 returns Gitlab::Auth::InsufficientScopeError if invalid token scope3748 with impersonation token3749 when impersonation is disabled3750 returns Gitlab::Auth::ImpersonationDisabled3751Gitlab::Diff::PositionTracer3752 #trace3753 position is on text3754 calls LineStrategy#trace3755 position is not on text3756 calls ImageStrategy#trace3757 diffs methods3758 #ac_diffs3759 returns the diffs between the base of old and new diff3760 #bd_diffs3761 returns the diffs between the HEAD of old and new diff3762 #cd_diffs3763 returns the diffs in the new diff3764UsersStarProjectsFinder3765 #execute3766 as same user3767 should contain exactly #<UsersStarProject id: 2, project_id: 1037, user_id: 2566, created_at: "2019-10-23 14:15:46", updated_at: "2019-10-23 14:15:46"> and #<UsersStarProject id: 1, project_id: 1037, user_id: 2564, created_at: "2019-10-23 14:15:46", updated_at: "2019-10-23 14:15:46">3768 as other user3769 should contain exactly #<UsersStarProject id: 3, project_id: 1038, user_id: 2567, created_at: "2019-10-23 14:15:46", updated_at: "2019-10-23 14:15:46">3770 as no user3771 should contain exactly #<UsersStarProject id: 5, project_id: 1039, user_id: 2571, created_at: "2019-10-23 14:15:46", updated_at: "2019-10-23 14:15:46">3772Deployments::FinishedWorker3773 #perform3774 executes project services for deployment_hooks3775 does not execute an inactive service3776 does nothing if a deployment with the given id does not exist3777ProjectMemberPresenter3778 #can_resend_invite?3779 when project_member is invited3780 and user can admin_project_member3781 should eq true3782 and user cannot admin_project_member3783 should eq false3784 when project_member is not invited3785 and user can admin_project_member3786 should eq false3787 and user cannot admin_project_member3788 should eq false3789 #can_update?3790 when user can update_project_member3791 should eq true3792 when user cannot update_project_member3793 should eq false3794 #can_remove?3795 when user can destroy_project_member3796 should eq true3797 when user cannot destroy_project_member3798 should eq false3799 #can_approve?3800 when project_member has request an invite3801 and user can update_project_member3802 should eq true3803 and user cannot update_project_member3804 should eq false3805 when project_member did not request an invite3806 and user can update_project_member3807 should eq false3808 and user cannot update_project_member3809 should eq false3810 behaves like #valid_level_roles3811 returns all roles when no parent member is present3812 returns higher roles when a parent member is present3813Banzai::Pipeline::FullPipeline3814 References3815 handles markdown inside a reference3816 sanitizes reference HTML3817 escapes the data-original attribute on a reference3818 footnotes3819 properly adds the necessary ids and classes3820 links are detected as malicious3821 has tooltips for malicious links3822 has no tooltips for safe links3823Gitlab::DataBuilder::Deployment3824 .build3825 returns the object kind for a deployment3826 returns data for the given build3827Gitlab::GitlabImport::Client3828 all OAuth2 client options are symbols3829 uses membership and simple flags3830 #projects3831 behaves like pagination params3832 allows page_limit param3833 allows per_page param3834 allows starting_page param3835 #issues3836 behaves like pagination params3837 allows page_limit param3838 allows per_page param3839 allows starting_page param3840 #issue_comments3841 behaves like pagination params3842 allows page_limit param3843 allows per_page param3844 allows starting_page param3845Boards::Issues::CreateService3846 #execute3847 delegates the create proceedings to Issues::CreateService3848 creates a new issue3849 adds the label of the list to the issue3850Metrics::Dashboard::GrafanaMetricEmbedService3851 .valid_params?3852 should be truthy3853 not embedded3854 should be falsey3855 undefined grafana_url3856 should be falsey3857 .from_cache3858 initializes an instance of GrafanaMetricEmbedService3859 #get_dashboard3860 without caching3861 behaves like raises error for users with insufficient permissions3862 when the user does not have sufficient access3863 behaves like misconfigured dashboard service response3864 returns an appropriate message and status code3865 without a grafana integration3866 behaves like misconfigured dashboard service response3867 returns an appropriate message and status code3868 when grafana cannot be reached3869 behaves like misconfigured dashboard service response3870 returns an appropriate message and status code3871 when panelId is missing3872 behaves like misconfigured dashboard service response3873 returns an appropriate message and status code3874 when uid is missing3875 behaves like misconfigured dashboard service response3876 returns an appropriate message and status code3877 when the dashboard response contains misconfigured json3878 behaves like misconfigured dashboard service response3879 returns an appropriate message and status code3880 when the datasource response contains misconfigured json3881 behaves like misconfigured dashboard service response3882 returns an appropriate message and status code3883 when the embed was created successfully3884 behaves like valid embedded dashboard service response3885 behaves like valid dashboard service response for schema3886 returns a json representation of the dashboard3887 with caching3888 when value not present in cache3889 returns nil3890 when value present in cache3891 returns cached value3892AddPagesAccessLevelToProjectFeature3893NOTICE: trigger "trigger_97893debd1d4" for relation "design_management_versions" does not exist, skipping3894NOTICE: trigger "trigger_36edafd19664" for relation "epics" does not exist, skipping3895NOTICE: trigger "trigger_dd1443fbd36e" for relation "application_settings" does not exist, skipping3896NOTICE: trigger "trigger_806273a4d8be" for relation "application_settings" does not exist, skipping3897 correctly migrate pages for old projects to be public3898 after migration pages are enabled as default3899NOTICE: table "design_management_designs" does not exist, skipping3900NOTICE: table "design_management_designs_versions" does not exist, skipping3901NOTICE: table "design_management_versions" does not exist, skipping3902NOTICE: table "geo_container_repository_updated_events" does not exist, skipping3903NOTICE: trigger "trigger_806273a4d8be" for relation "application_settings" does not exist, skipping3904NOTICE: trigger "trigger_dd1443fbd36e" for relation "application_settings" does not exist, skipping3905NOTICE: trigger "trigger_84853438aac0" for relation "epics" does not exist, skipping3906NOTICE: trigger "trigger_97893debd1d4" for relation "design_management_versions" does not exist, skipping3907Gitlab::PhabricatorImport::BaseWorker3908 .schedule3909 schedules the job3910 counts the scheduled job3911 #perform3912 does not break for a non-existing project3913 does not do anything when the import is not in progress3914 calls import for the project3915 marks the project as imported if there was only one job running3916 does not mark the job as finished when there are more scheduled jobs3917 decrements the job counter3918DiffHelper3919 diff_view3920 uses the view param over the cookie3921 returns the default value when the view param is invalid3922 returns a valid value when cookie is set3923 returns the default value when cookie is invalid3924 returns the default value when cookie is nil3925 diff_options3926 returns no collapse false3927 returns no collapse true if expanded3928 returns no collapse true if action name diff_for_path3929 returns paths if action name diff_for_path and param old path3930 returns paths if action name diff_for_path and param new path3931 #diff_line_content3932 when the line is empty3933 returns a non breaking space3934 returns an HTML-safe string3935 when the line is not empty3936 when the line starts with +, -, or a space3937 strips the first character3938 when the line is HTML-safe3939 returns an HTML-safe string3940 when the line is not HTML-safe3941 returns a non-HTML-safe string3942 when the line does not start with a +, -, or a space3943 returns the string3944 when the line is HTML-safe3945 returns an HTML-safe string3946 when the line is not HTML-safe3947 returns a non-HTML-safe string3948 #mark_inline_diffs3949 returns strings with marked inline diffs3950 when given HTML3951 sanitizes it3952 sanitizes the entire line, not just the changes3953 #parallel_diff_discussions3954 does not put comments on nonewline lines3955 puts comments on added lines3956 puts comments on unchanged lines3957 #diff_match_line3958 generates foldable top match line for inline view with empty text by default3959 allows to define text and bottom option3960 generates match line for parallel view3961 allows to generate only left match line for parallel view3962 allows to generate only right match line for parallel view3963 #diff_file_path_text3964 returns full path by default3965 returns truncated path3966Ci::ExpirePipelineCacheService3967 #execute3968 invalidates Etag caching for project pipelines path3969 invalidates Etag caching for merge request pipelines if pipeline runs on any commit of that source branch3970 updates the cached status for a project3971 destroyed pipeline3972 clears the cache3973CompareService3974 #execute3975 compare with base, like feature...fix3976 should eq 13977 straight compare, like feature..fix3978 should eq 33979 compare with target branch that does not exist3980 should be nil3981 compare with source branch that does not exist3982 should be nil3983projects/generic_commit_statuses/_generic_commit_status.html.haml3984 won't include a column with a link to its pipeline by default3985 can include a column with a link to its pipeline3986Gitlab::ImportExport::RepoSaver3987 bundle a project Git repo3988 bundles the repo successfully3989 when the repo is empty3990 bundles the repo successfully3991Projects::EnableDeployKeyService3992 enables the key3993 trying to add an unaccessable key3994 returns nil if the key cannot be added3995 add the same key twice3996 returns existing key3997Gitlab::Ci::Pipeline::Seed::Environment3998 #to_resource3999 when job has environment attribute4000 returns a persisted environment object4001 when environment has already existed4002 returns the existing environment object4003Gitlab::Diff::FileCollection::Compare4004 behaves like diff statistics4005 when should request diff stats4006 Repository#diff_stats is called4007 Gitlab::Diff::File is initialized with diff stats4008 when should not request diff stats4009 Repository#diff_stats is not called4010Gitlab::ImportExport::AvatarRestorer4011 does not break if there is just a directory4012 with avatar4013 restores a project avatar4014 saves the avatar into the project4015Gitlab::Graphql::Representation::TreeEntry4016 .decorate4017 returns NilClass when given nil4018 returns array of TreeEntry4019Gitlab::Analytics::CycleAnalytics::StageEvents::CodeStageStart4020 needs connection with an issue via merge_requests_closing_issues table4021 behaves like cycle analytics event4022 should be a kind of String4023 should be a kind of Symbol4024 should include ApplicationRecord(abstract)4025 should respond to #timestamp_projection4026 #apply_query_customization4027 expects an ActiveRecord::Relation object as argument and returns a modified version of it4028Projects::CountService4029 .query4030 raises NotImplementedError4031 #relation_for_count4032 calls the class method query with the project id4033 #count4034 returns the number of rows4035 caches the number of rows4036 #refresh_cache4037 refreshes the cache4038 #delete_cache4039 removes the cache4040 #cache_key_name4041 raises NotImplementedError4042 #cache_key4043 returns the cache key as an Array4044Gitlab::Graphql::Loaders::BatchModelLoader4045 #find4046 finds a model by id4047 only queries once per model4048Gitlab::PhabricatorImport::ImportTasksWorker4049 #perform4050 calls the correct importer4051ProjectCiCdSetting4052 .available?4053 returns true4054 memoizes the schema version4055 validations4056 validates default_git_depth is between 0 and 1000 or nil4057 #default_git_depth4058 sets default value for new records4059 does not set default value if present4060 when feature flag :ci_set_project_default_git_depth is disabled4061 does not set default value for new records4062clearing redis cache4063 clearing pipeline status cache4064 clears pipeline status cache4065CleanupEnvironmentsExternalUrl4066NOTICE: trigger "trigger_97893debd1d4" for relation "design_management_versions" does not exist, skipping4067NOTICE: trigger "trigger_36edafd19664" for relation "epics" does not exist, skipping4068NOTICE: trigger "trigger_dd1443fbd36e" for relation "application_settings" does not exist, skipping4069NOTICE: trigger "trigger_806273a4d8be" for relation "application_settings" does not exist, skipping4070 clears every environment with a javascript external_url4071 do not removes environments4072NOTICE: table "design_management_designs" does not exist, skipping4073NOTICE: table "design_management_designs_versions" does not exist, skipping4074NOTICE: table "design_management_versions" does not exist, skipping4075NOTICE: table "geo_container_repository_updated_events" does not exist, skipping4076NOTICE: trigger "trigger_806273a4d8be" for relation "application_settings" does not exist, skipping4077NOTICE: trigger "trigger_dd1443fbd36e" for relation "application_settings" does not exist, skipping4078NOTICE: trigger "trigger_84853438aac0" for relation "epics" does not exist, skipping4079NOTICE: trigger "trigger_97893debd1d4" for relation "design_management_versions" does not exist, skipping4080LfsObject4081 has a distinct has_many :projects relation through lfs_objects_projects4082 #local_store?4083 returns true when file_store is equal to LfsObjectUploader::Store::LOCAL4084 returns false when file_store is equal to LfsObjectUploader::Store::REMOTE4085 #project_allowed_access?4086 returns true when project is linked4087 returns false when project is not linked4088 when project is a member of a fork network4089 returns true for all members when forked project is linked4090 returns true for all members when root of network is linked4091 returns false when no member of fork network is linked4092 #schedule_background_upload4093 when object storage is disabled4094 does not schedule the migration4095 when object storage is enabled4096 when background upload is enabled4097 when is licensed4098 schedules the model for migration4099 schedules the model for migration once4100 when background upload is disabled4101 schedules the model for migration4102 file is being stored4103 when existing object has local store4104 is stored locally4105 when direct upload is enabled4106 when file is stored4107 is stored remotely4108 .calculate_oid4109 returns SHA256 sum of the file4110Gitlab::LegacyGithubImport::LabelFormatter4111 #attributes4112 returns formatted attributes4113 #create!4114 when label does not exist4115 creates a new label4116 when label exists4117 does not create a new label4118UsersController routing4119 to #show4120 to #groups4121 to #projects4122 to #contributed4123 to #snippets4124 to #calendar4125 to #calendar_activities4126SearchController routing4127 to #show4128Mounted Apps routing4129 to API4130 to Grack4131SnippetsController routing4132 to #raw4133 to #index4134 to #create4135 to #new4136 to #edit4137 to #show4138 to #update4139 to #destroy4140HelpController routing4141 to #index4142 to #show4143ProfilesController routing4144 to #account4145 to #audit_log4146 to #reset_feed_token4147 to #show4148Profiles::PreferencesController routing4149 to #show4150 to #update4151Profiles::KeysController routing4152 to #index4153 to #create4154 to #show4155 to #destroy4156 to #get_keys4157Profiles::EmailsController routing4158 to #index4159 to #create4160 to #destroy4161Profiles::AvatarsController routing4162 to #destroy4163DashboardController routing4164 to #index4165 to #issues4166 to #calendar_issues4167 to #merge_requests4168RootController routing4169 to #index4170Authentication routing4171 GET /users/sign_in4172 POST /users/sign_in4173 GET /users/sign_out4174 POST /users/password4175 GET /users/password/new4176 GET /users/password/edit4177 PUT /users/password4178HealthCheckController routing4179 to #index4180 also supports passing checks in the url4181RepositoryRemoveRemoteWorker4182 #perform4183 returns nil when project does not exist4184 when project exists41852019-10-23T14:17:05.238Z 91 TID-gpk6n37sj INFO: Removing remote joe from project 11194186 does not remove remote when cannot obtain lease41872019-10-23T14:17:05.422Z 91 TID-gpk6n37sj INFO: Removing remote joe from project 112041882019-10-23T14:17:05.434Z 91 TID-gpk6n37sj ERROR: Could not remove remote joe from project 11204189 removes remote from repository when obtain a lease4190WikiDirectory4191 validations4192 should validate that :slug cannot be empty/falsy4193 .group_by_directory4194 when there are no pages4195 returns an empty array4196 when there are pages4197 #list_pages4198 returns an array with retained order with directories at the top4199 sort by title4200 behaves like a correct grouping4201 returns an array with pages and directories4202 sort by created_at4203 behaves like a correct grouping4204 returns an array with pages and directories4205 #initialize4206 when there are pages4207 sets the slug attribute4208 sets the pages attribute4209 when there are no pages4210 sets the slug attribute4211 sets the pages attribute to an empty array4212 #to_partial_path4213 returns the relative path to the partial to be used4214 attributes4215 there are no pages4216 should have attributes {:last_version => (be nil), :page_count => 0}4217 there is one page4218 should have attributes {:last_version => #<Gitlab::Git::WikiPageVersion:0x000055bfc2271190 @commit=#<Gitlab::Git::Commit:0x000...658", @committer_email="user2658@example.org", @parent_ids=[]>, @format="markdown">, :page_count => 1}4219 there are a few pages, each with a single version4220 should have attributes {:last_version => #<Gitlab::Git::WikiPageVersion:0x000055bfc5ae7da8 @commit=#<Gitlab::Git::Commit:0x000...rg", @parent_ids=["b483493c7612d30b4b83abf0de2e7fe5fb0dea61"]>, @format="markdown">, :page_count => 3}4221 there are a few pages, each with a few versions4222 should have attributes {:last_version => #<Gitlab::Git::WikiPageVersion:0x000055bfc5f6e610 @commit=#<Gitlab::Git::Commit:0x000...rg", @parent_ids=["d8e55c72e4020760c2621bc037f20a44b7fd6a0d"]>, @format="markdown">, :page_count => 3}4223SchedulePagesMetadataMigration4224NOTICE: trigger "trigger_97893debd1d4" for relation "design_management_versions" does not exist, skipping4225 schedules pages metadata migration4226NOTICE: trigger "trigger_97893debd1d4" for relation "design_management_versions" does not exist, skipping4227Serverless::Function4228 has a proper id4229 can decode an identifier4230Gitlab::CycleAnalytics::ProductionEventFetcher4231 behaves like default query config4232 has the stage attribute4233 has the projection attributes4234RepairLdapBlockedUserService4235 #execute4236 changes to normal block after destroying last ldap identity4237 changes to normal block after changing last ldap identity to another provider4238ServiceHook4239 associations4240 should belong to service required:4241 validations4242 should validate that :service cannot be empty/falsy4243 execute4244 #execute4245RemoteMirrorEntity4246 exposes remote-mirror-specific elements4247EncryptDeployTokensTokens4248NOTICE: trigger "trigger_97893debd1d4" for relation "design_management_versions" does not exist, skipping4249NOTICE: trigger "trigger_36edafd19664" for relation "epics" does not exist, skipping4250NOTICE: trigger "trigger_dd1443fbd36e" for relation "application_settings" does not exist, skipping4251NOTICE: trigger "trigger_806273a4d8be" for relation "application_settings" does not exist, skipping4252 #up4253 keeps plaintext token the same and populates token_encrypted if not present4254 #down4255 decrypts encrypted token and saves it4256NOTICE: trigger "trigger_806273a4d8be" for relation "application_settings" does not exist, skipping4257NOTICE: trigger "trigger_dd1443fbd36e" for relation "application_settings" does not exist, skipping4258NOTICE: trigger "trigger_84853438aac0" for relation "epics" does not exist, skipping4259NOTICE: trigger "trigger_97893debd1d4" for relation "design_management_versions" does not exist, skipping4260DeployKey4261 Associations4262 should have many deploy_keys_projects4263 should have many projects4264 notification4265 does not send a notification4266 #user4267 when user is set4268 returns the user4269 when user is not set4270 returns the ghost user4271Gitlab::DependencyLinker::PodspecJsonLinker4272 .support?4273 supports *.podspec.json4274 does not support other files4275 #link4276 links the gem name4277 links the license4278 links the homepage4279 links the source URL4280 links dependencies4281 does not link subspec names4282BitbucketServer::Representation::PullRequest4283 #author4284 should eq "root"4285 #author_email4286 should eq "joe.montana@49ers.com"4287 #description4288 should eq "Test"4289 #iid4290 should eq 74291 #state4292 should eq "merged"4293 declined pull requests4294 returns closed4295 open pull requests4296 returns open4297 #merged?4298 should be truthy4299 #created_at4300 should eq 15306006354301 #updated_at4302 should eq 15306006484303 #title4304 should eq "Added a new line"4305 #source_branch_name4306 should eq "refs/heads/root/CODE_OF_CONDUCTmd-1530600625006"4307 #source_branch_sha4308 should eq "074e2b4dddc5b99df1bf9d4a3f66cfc15481fdc8"4309 #target_branch_name4310 should eq "refs/heads/master"4311 #target_branch_sha4312 should eq "839fa9a2d434eb697815b8fcafaecc51accfdbbc"4313StripAttribute4314 .strip_attributes4315 should respond to #strip_attributes4316 should include :title4317 #strip_attributes4318 should eq "8.3"4319Gitlab::HookData::IssueBuilder4320 #build4321 includes safe attribute4322 includes additional attrs4323 when the issue has an image in the description4324 sets the image to use an absolute URL4325TreeEntryPresenter4326 .web_url4327 should eq "http://localhost/namespace1004/project1031/tree/b83d6e391c22777fca1ed3012fce84f633d7fed0/bar"4328Gitlab::Email::AttachmentUploader4329 #execute4330 uploads all attachments and returns their links4331Participable4332 .participant4333 adds the participant attributes to the existing list4334 #participants4335 returns the list of participants4336 caches the raw list of participants4337 supports attributes returning another Participable4338 when using a Proc as an attribute4339 calls the supplied Proc4340Gitlab::LegacyGithubImport::Client4341 convert OAuth2 client options to symbols4342 does not crash (e.g. Settingslogic::MissingSetting) when verify_ssl config is not present4343 does not raise error when rate limit is disabled4344 when config is missing4345 is still possible to get an Octokit client4346 is not be possible to get an OAuth2 client4347 allow SSL verification to be configurable on API4348 uses supplied value4349 #api_endpoint4350 when provider does not specity an API endpoint4351 uses GitHub root API endpoint4352 when provider specify a custom API endpoint4353 uses the custom API endpoint4354 when given a host4355 builds a endpoint with the given host and the default API version4356 when given an API version4357 does not use the API version without a host4358 when given a host and version4359 builds a endpoint with the given options4360Gitlab::SSHPublicKey4361 .technology(name)4362 returns nil for an unrecognised name4363 name: :rsa4364 should eq :rsa4365 should eq :rsa4366 name: :dsa4367 should eq :dsa4368 should eq :dsa4369 name: :ecdsa4370 should eq :ecdsa4371 should eq :ecdsa4372 name: :ed255194373 should eq :ed255194374 should eq :ed255194375 .supported_sizes(name)4376 name: :rsa, sizes: [1024, 2048, 3072, 4096]4377 should eq [1024, 2048, 3072, 4096]4378 should eq [1024, 2048, 3072, 4096]4379 name: :dsa, sizes: [1024, 2048, 3072]4380 should eq [1024, 2048, 3072]4381 should eq [1024, 2048, 3072]4382 name: :ecdsa, sizes: [256, 384, 521]4383 should eq [256, 384, 521]4384 should eq [256, 384, 521]4385 name: :ed25519, sizes: [256]4386 should eq [256]4387 should eq [256]4388 .sanitize(key_content)4389 when key has blank space characters4390 removes the extra blank space characters4391 when key doesn't have blank space characters4392 doesn't modify the content4393 when key is invalid4394 returns the original content4395 #valid?4396 with a valid SSH key4397 factory: :rsa_key_20484398 should be valid4399 factory: :rsa_key_40964400 should be valid4401 factory: :rsa_key_51204402 should be valid4403 factory: :rsa_key_81924404 should be valid4405 factory: :dsa_key_20484406 should be valid4407 factory: :ecdsa_key_2564408 should be valid4409 factory: :ed25519_key_2564410 should be valid4411 with an invalid SSH key4412 should not be valid4413 #type4414 factory: :rsa_key_2048, type: :rsa4415 should eq :rsa4416 factory: :dsa_key_2048, type: :dsa4417 should eq :dsa4418 factory: :ecdsa_key_256, type: :ecdsa4419 should eq :ecdsa4420 factory: :ed25519_key_256, type: :ed255194421 should eq :ed255194422 with an invalid SSH key4423 should be nil4424 #bits4425 factory: :rsa_key_2048, bits: 20484426 should eq 20484427 factory: :rsa_key_4096, bits: 40964428 should eq 40964429 factory: :rsa_key_5120, bits: 51204430 should eq 51204431 factory: :rsa_key_8192, bits: 81924432 should eq 81924433 factory: :dsa_key_2048, bits: 20484434 should eq 20484435 factory: :ecdsa_key_256, bits: 2564436 should eq 2564437 factory: :ed25519_key_256, bits: 2564438 should eq 2564439 with an invalid SSH key4440 should be nil4441 #fingerprint4442 factory: :rsa_key_2048, fingerprint: "58:a8:9d:cd:1f:70:f8:5a:d9:e4:24:8e:da:89:e4:fc"4443 should eq "58:a8:9d:cd:1f:70:f8:5a:d9:e4:24:8e:da:89:e4:fc"4444 factory: :rsa_key_4096, fingerprint: "df:73:db:29:3c:a5:32:cf:09:17:7e:8e:9d:de:d7:f7"4445 should eq "df:73:db:29:3c:a5:32:cf:09:17:7e:8e:9d:de:d7:f7"4446 factory: :rsa_key_5120, fingerprint: "fe:fa:3a:4d:7d:51:ec:bf:c7:64:0c:96:d0:17:8a:d0"4447 should eq "fe:fa:3a:4d:7d:51:ec:bf:c7:64:0c:96:d0:17:8a:d0"4448 factory: :rsa_key_8192, fingerprint: "fb:53:7f:e9:2f:f7:17:aa:c8:32:52:06:8e:05:e2:82"4449 should eq "fb:53:7f:e9:2f:f7:17:aa:c8:32:52:06:8e:05:e2:82"4450 factory: :dsa_key_2048, fingerprint: "c8:85:1e:df:44:0f:20:00:3c:66:57:2b:21:10:5a:27"4451 should eq "c8:85:1e:df:44:0f:20:00:3c:66:57:2b:21:10:5a:27"4452 factory: :ecdsa_key_256, fingerprint: "67:a3:a9:7d:b8:e1:15:d4:80:40:21:34:bb:ed:97:38"4453 should eq "67:a3:a9:7d:b8:e1:15:d4:80:40:21:34:bb:ed:97:38"4454 factory: :ed25519_key_256, fingerprint: "e6:eb:45:8a:3c:59:35:5f:e9:5b:80:12:be:7e:22:73"4455 should eq "e6:eb:45:8a:3c:59:35:5f:e9:5b:80:12:be:7e:22:73"4456 with an invalid SSH key4457 should be nil4458 #key_text4459 carries the unmodified key data4460Gitlab::HTTP4461 when allow_local_requests4462 sends the request to the correct URI4463 when not allow_local_requests4464 sends the request to the correct URI4465 allow_local_requests_from_web_hooks_and_services is4466 disabled4467 deny requests to localhost4468 deny requests to private network4469 if allow_local_requests set to true4470 override the global value and allow requests to localhost or private network4471 enabled4472 allow requests to localhost4473 allow requests to private network4474 if allow_local_requests set to false4475 override the global value and ban requests to localhost or private network4476 handle redirect loops4477 handles GET requests4478 handles POST requests4479 handles PUT requests4480 handles DELETE requests4481 handles HEAD requests4482Peek::Views::DetailedView4483 when a class defines thresholds4484 when the results exceed the calls threshold4485 adds a warning to the results key4486 when the results exceed the duration threshold4487 adds a warning to the results key4488 when a single call exceeds the duration threshold4489 adds a warning to that call detail entry4490 when a view does not define thresholds4491 does not add warnings to the top level4492 does not add warnings to call details entries4493Resolvers::ProjectPipelinesResolver4494 resolves only MRs for the passed merge request4495Backup::Manager4496 #pack4497 when BACKUP is not set4498 uses the default tar file name4499 when BACKUP is set4500 uses the given value as tar file name4501 #remove_old4502 when keep_time is zero4503 removes no files4504 prints a skipped message4505 when no valid file is found4506 removes no files4507 prints a done message4508 when there are no files older than keep_time4509 removes no files4510 prints a done message4511 when keep_time is set to remove files4512 removes matching files with a human-readable versioned timestamp4513 removes matching files with a human-readable versioned timestamp with tagged EE4514 removes matching files with a human-readable non-versioned timestamp4515 removes matching files without a human-readable timestamp4516 does not remove files that are not old enough4517 does not remove non-matching files4518 prints a done message4519 when removing a file fails4520 removes the remaining expected files4521 sets the correct removed count4522 prints the error from file that could not be removed4523 #unpack4524 when there are no backup files in the directory4525 fails the operation and prints an error4526 when there are two backup files in the directory and BACKUP variable is not set4527 prints the list of available backups4528 fails the operation and prints an error4529 when BACKUP variable is set to a non-existing file4530 fails the operation and prints an error4531 when BACKUP variable is set to a correct file4532 unpacks the file4533 #upload4534 target path4535 uses the tar filename by default4536 adds the DIRECTORY environment variable if present4537MoveToProjectEntity4538 #as_json4539 includes the project ID4540 includes the full path4541UserFinder4542 #find_by_id4543 when the user exists4544 returns the user4545 when the user exists (id as string)4546 returns the user4547 when the user does not exist4548 returns nil4549 #find_by_username4550 when the user exists4551 returns the user4552 when the user does not exist4553 returns nil4554 #find_by_id_or_username4555 when the user exists (id)4556 returns the user4557 when the user exists (id as string)4558 returns the user4559 when the user exists (username)4560 returns the user4561 when the user does not exist (username)4562 returns nil4563 when the user does not exist4564 returns nil4565 #find_by_id!4566 when the user exists4567 returns the user4568 when the user exists (id as string)4569 returns the user4570 when the user does not exist4571 raises ActiveRecord::RecordNotFound4572 #find_by_username!4573 when the user exists4574 returns the user4575 when the user does not exist4576 raises ActiveRecord::RecordNotFound4577 #find_by_id_or_username!4578 when the user exists (id)4579 returns the user4580 when the user exists (id as string)4581 returns the user4582 when the user exists (username)4583 returns the user4584 when the user does not exist (username)4585 raises ActiveRecord::RecordNotFound4586 when the user does not exist4587 raises ActiveRecord::RecordNotFound4588 #find_by_ssh_key_id4589 returns the user when passing the ssh key id4590 returns the user when passing the ssh key id (string)4591 returns nil when the id does not exist4592Gitlab::PrivateCommitEmail4593 .regex4594 should match "1-foo@users.noreply.localhost"4595 should not match "1-foo@users.noreply.localhost.foo"4596 should not match "1-foo@users.noreply.gitlab.com"4597 should not match "foo-1@users.noreply.gitlab.com"4598 should not match "foobar@gitlab.com"4599 .user_id_for_email4600 parses user id from email4601 returns nil on invalid commit email4602 .user_ids_for_email4603 returns deduplicated user IDs for each valid email4604 returns an empty array with no valid emails4605 .for_user4606 returns email in the format id-username@hostname4607Gitlab::Ci::Config::Entry::Reports4608 validates ALLOWED_KEYS4609 expects junit to be an artifact file_type4610 expects codequality to be an artifact file_type4611 expects sast to be an artifact file_type4612 expects dependency_scanning to be an artifact file_type4613 expects container_scanning to be an artifact file_type4614 expects dast to be an artifact file_type4615 expects performance to be an artifact file_type4616 expects license_management to be an artifact file_type4617 expects metrics to be an artifact file_type4618 validation4619 when entry config value is correct4620 keyword: :junit, file: "junit.xml"4621 when value is an array4622 behaves like a valid entry4623 #value4624 returns artifacts configuration4625 #valid?4626 is valid4627 when value is not array4628 behaves like a valid entry4629 #value4630 returns artifacts configuration4631 #valid?4632 is valid4633 keyword: :codequality, file: "gl-code-quality-report.json"4634 when value is an array4635 behaves like a valid entry4636 #value4637 returns artifacts configuration4638 #valid?4639 is valid4640 when value is not array4641 behaves like a valid entry4642 #value4643 returns artifacts configuration4644 #valid?4645 is valid4646 keyword: :sast, file: "gl-sast-report.json"4647 when value is an array4648 behaves like a valid entry4649 #value4650 returns artifacts configuration4651 #valid?4652 is valid4653 when value is not array4654 behaves like a valid entry4655 #value4656 returns artifacts configuration4657 #valid?4658 is valid4659 keyword: :dependency_scanning, file: "gl-dependency-scanning-report.json"4660 when value is an array4661 behaves like a valid entry4662 #value4663 returns artifacts configuration4664 #valid?4665 is valid4666 when value is not array4667 behaves like a valid entry4668 #value4669 returns artifacts configuration4670 #valid?4671 is valid4672 keyword: :container_scanning, file: "gl-container-scanning-report.json"4673 when value is an array4674 behaves like a valid entry4675 #value4676 returns artifacts configuration4677 #valid?4678 is valid4679 when value is not array4680 behaves like a valid entry4681 #value4682 returns artifacts configuration4683 #valid?4684 is valid4685 keyword: :dast, file: "gl-dast-report.json"4686 when value is an array4687 behaves like a valid entry4688 #value4689 returns artifacts configuration4690 #valid?4691 is valid4692 when value is not array4693 behaves like a valid entry4694 #value4695 returns artifacts configuration4696 #valid?4697 is valid4698 keyword: :license_management, file: "gl-license-management-report.json"4699 when value is an array4700 behaves like a valid entry4701 #value4702 returns artifacts configuration4703 #valid?4704 is valid4705 when value is not array4706 behaves like a valid entry4707 #value4708 returns artifacts configuration4709 #valid?4710 is valid4711 keyword: :performance, file: "performance.json"4712 when value is an array4713 behaves like a valid entry4714 #value4715 returns artifacts configuration4716 #valid?4717 is valid4718 when value is not array4719 behaves like a valid entry4720 #value4721 returns artifacts configuration4722 #valid?4723 is valid4724 when entry value is not correct4725 #errors4726 when there is an unknown key present4727 reports error4728help/index4729 version information4730 is hidden from guests4731 when logged in4732 shows a link to the tag to users4733 shows a link to the commit for pre-releases4734 instance configuration link4735 is visible to guests4736AnalyticsSummarySerializer4737 generates payload for single object4738 contains important elements of AnalyticsStage4739RuboCop::Cop::ActiveRecordAssociationReload4740 when using ActiveRecord::Base4741 registers an offense on reload usage4742 does not register an offense on reset usage4743 when using ActiveRecord::Relation4744 registers an offense on reload usage4745 does not register an offense on reset usage4746 when using on self4747 registers an offense on reload usage4748 does not register an offense on reset usage4749UpdateExternalPullRequestsWorker4750 #perform4751 when ref is a branch4752 runs CreatePipelineService for each pull request matching the source branch and repository4753 when ref is not a branch4754 does nothing4755IdentityProviderPolicy4756 #rules4757 should be allowed :link4758 should be allowed :unlink4759 when user is anonymous4760 should not be allowed :link4761 should not be allowed :unlink4762 when provider is saml4763 should be allowed :link4764 should not be allowed :unlink4765 when provider is cas34766 should be allowed :link4767 should not be allowed :unlink4768Gitlab::LanguageDetection4769 #languages4770 returns the language names4771 #insertions4772 only includes new languages4773 #updates4774 updates the share of languages4775 does not include languages to be removed4776 when silent writes occur4777 doesn't include them in the result4778 #deletions4779 lists undetected languages4780TaskListToggleService4781 checks Task 14782 unchecks Item 14783 checks task in loose list4784 returns false if line_source does not match the text4785 tolerates \r\n line endings4786 returns false if markdown is nil4787 returns false if markdown_html is nil4788 properly handles tasks in a blockquote4789 properly handles a GitLab blockquote4790Gitlab::BatchPopQueueing4791 #initialize4792 namespace: "feature", queue_id: "1", expect_error: false, error_type: nil4793 should not raise Exception4794 namespace: :feature, queue_id: "1", expect_error: false, error_type: nil4795 should not raise Exception4796 namespace: nil, queue_id: "1", expect_error: true, error_type: NoMethodError4797 should raise NoMethodError4798 namespace: "feature", queue_id: nil, expect_error: true, error_type: NoMethodError4799 should raise NoMethodError4800 namespace: "", queue_id: "1", expect_error: true, error_type: ArgumentError4801 should raise ArgumentError4802 namespace: "feature", queue_id: "", expect_error: true, error_type: ArgumentError4803 should raise ArgumentError4804 namespace: "feature", queue_id: 1, expect_error: true, error_type: NoMethodError4805 should raise NoMethodError4806 #safe_execute4807 enqueues new items always4808 yields the new items with exclusive lease4809 returns the result and no items in the queue4810 when new items are enqueued during the process4811 returns the result with newly added items4812 when interger items are enqueued4813 yields as String values4814 when the queue key does not exist in Redis4815 yields empty array4816 when the other process has already been working on the queue4817 does not yield the block4818 returns the result4819 when a duplicate item is enqueued4820 returns the poped items to the queue and raise an error4821 when there are two queues4822 enqueues items to each queue4823BitbucketServer::Representation::Comment4824 #id4825 should eq 94826 #author_username4827 should eq "root"4828 #author_email4829 should eq "test.user@example.com"4830 #note4831 should eq "is this a new line?"4832 #created_at4833 should be a kind of Time4834 #updated_at4835 should be a kind of Time4836 #comments4837 should eq 44838 should all be a kind of BitbucketServer::Representation::Comment4839 should contain exactly "Hello world", "Ok", "hello", and "hi"4840 comments have the right parent4841Gitlab::Auth::LDAP::Adapter4842 #users4843 searches with the proper options when searching by uid4844 searches with the proper options when searching by dn4845 searches with the proper options when searching with a limit4846 returns an LDAP::Person if search returns a result4847 returns empty array if search entry does not respond to uid4848 uses the right uid attribute when non-default4849 #dn_matches_filter?4850 when the search result is non-empty4851 should be truthy4852 when the search result is empty4853 should be falsey4854 #ldap_search4855 when the search is successful4856 and the result is non-empty4857 should eq [:foo]4858 and the result is empty4859 should eq []4860 when the search encounters an error4861 should eq []4862 when the search raises an LDAP exception4863 retries the operation4864 as many times as MAX_SEARCH_RETRIES4865 when no more retries4866 raises the exception4867 logs the error4868Gitlab::Cache::RequestCache4869 when RequestStore is active4870 computes once for different instances when keys are the same4871 computes twice if RequestStore starts over4872 behaves like cache for the same instance4873 does not compute twice for the same argument4874 computes twice for the different argument4875 computes twice for the different class name4876 computes twice for the different method4877 when request_cache_key is provided4878 computes twice for the different keys, id4879 computes twice for the different keys, name4880 uses extra method cache key if provided4881 when RequestStore is inactive4882 computes twice for different instances even if keys are the same4883 behaves like cache for the same instance4884 does not compute twice for the same argument4885 computes twice for the different argument4886 computes twice for the different class name4887 computes twice for the different method4888 when request_cache_key is provided4889 computes twice for the different keys, id4890 computes twice for the different keys, name4891 uses extra method cache key if provided4892Gitlab::GithubImport::Representation::Note4893 .from_api_response4894 does not set the user if the response did not include a user4895 behaves like a Note4896 returns an instance of Note4897 the returned Note4898 includes the noteable ID4899 includes the noteable type4900 includes the author details4901 includes the note body4902 includes the created timestamp4903 includes the updated timestamp4904 includes the GitHub ID4905 .from_json_hash4906 does not convert the author if it was not specified4907 behaves like a Note4908 returns an instance of Note4909 the returned Note4910 includes the noteable ID4911 includes the noteable type4912 includes the author details4913 includes the note body4914 includes the created timestamp4915 includes the updated timestamp4916 includes the GitHub ID4917Gitlab::VersionInfo4918 >4919 should be > 1.1.04920 should be > 1.0.14921 should be > 1.0.04922 should be > 0.1.04923 should be > 0.0.14924 >=4925 should be >= 2.0.04926 should be >= 1.1.04927 <4928 should be < 0.1.04929 should be < 1.0.04930 should be < 1.0.14931 should be < 1.1.04932 should be < 2.0.04933 <=4934 should be <= 0.0.14935 should be <= 0.1.04936 ==4937 should eq #<Gitlab::VersionInfo:0x000055bfbd9f6668 @major=0, @minor=0, @patch=1>4938 should eq #<Gitlab::VersionInfo:0x000055bfbda4a218 @major=0, @minor=1, @patch=0>4939 should eq #<Gitlab::VersionInfo:0x000055bfbda9ca18 @major=1, @minor=0, @patch=0>4940 !=4941 should not eq #<Gitlab::VersionInfo:0x000055bfbdad6f88 @major=0, @minor=1, @patch=0>4942 unknown4943 should not equal #<Gitlab::VersionInfo:0x000055bfbdb2a480 @major=0, @minor=0, @patch=1>4944 should not equal #<Gitlab::VersionInfo:0x000055bfbdb68e38 @major=0, @minor=0, @patch=0>4945 should raise ArgumentError4946 should raise ArgumentError4947 parse4948 should eq #<Gitlab::VersionInfo:0x000055bfbdc3a190 @major=1, @minor=0, @patch=0>4949 should eq #<Gitlab::VersionInfo:0x000055bfbdcb9f08 @major=1, @minor=0, @patch=0>4950 should eq #<Gitlab::VersionInfo:0x000055bfbdd67ea0 @major=1, @minor=0, @patch=0>4951 should eq #<Gitlab::VersionInfo:0x000055bfbddbcba8 @major=1, @minor=0, @patch=0>4952 should eq #<Gitlab::VersionInfo:0x000055bfbde29eb0 @major=1, @minor=0, @patch=0>4953 should eq #<Gitlab::VersionInfo:0x000055bfbde8b548 @major=1, @minor=0, @patch=0>4954 should not be valid4955 to_s4956 should eq "1.0.0"4957 should eq "Unknown"4958Gitlab::GithubImport::Caching4959 .read4960 reads a value from the cache4961 returns nil if the cache key does not exist4962 refreshes the cache key if a value is present4963 does not refresh the cache key if a value is empty4964 .read_integer4965 returns an Integer4966 returns nil if no value was found4967 .write4968 writes a value to the cache and returns the written value4969 .set_add4970 adds a value to a set4971 .set_includes?4972 returns false when the key does not exist4973 returns false when the value is not present in the set4974 returns true when the set includes the given value4975 .write_multiple4976 sets multiple keys4977 .expire4978 sets the expiration time of a key4979Gitlab::Ci::Config::Entry::Cache4980 validations4981 when entry config value is correct4982 #value4983 returns hash value4984 #valid?4985 should be valid4986 policy is pull-push4987 should be valid4988 should include {:policy => "pull-push"}4989 policy is push4990 should be valid4991 should include {:policy => "push"}4992 policy is pull4993 should be valid4994 should include {:policy => "pull"}4995 when key is missing4996 #value4997 sets key with the default4998 when entry value is not correct4999 #errors5000 when is not a hash5001 reports errors with config value5002 when policy is unknown5003 reports error5004 when descendants are invalid5005 reports error with descendants5006 when there is an unknown key present5007 reports error with descendants5008Gitlab::Ci::Reports::TestSuiteComparer5009 #new_failures5010 when head sutie has a newly failed test case which does not exist in base5011 returns the failed test case5012 when head sutie still has a failed test case which failed in base5013 does not return the failed test case5014 when head sutie has a success test case which failed in base5015 does not return the failed test case5016 #existing_failures5017 when head sutie has a newly failed test case which does not exist in base5018 returns the failed test case5019 when head sutie still has a failed test case which failed in base5020 does not return the failed test case5021 when head sutie has a success test case which failed in base5022 does not return the failed test case5023 #resolved_failures5024 when head sutie has a newly failed test case which does not exist in base5025 returns the failed test case5026 returns the correct resolved count5027 when head sutie still has a failed test case which failed in base5028 does not return the failed test case5029 returns the correct resolved count5030 when head sutie has a success test case which failed in base5031 does not return the resolved test case5032 returns the correct resolved count5033 #total_count5034 returns the total test counts in head suite5035 #failed_count5036 when there are a new failure and an existing failure5037 returns the correct count5038 when there is a new failure5039 returns the correct count5040 when there is an existing failure5041 returns the correct count5042 #total_status5043 when all test cases in head suite are success5044 returns the total status in head suite5045 when there is a failed test case in head suite5046 returns the total status in head suite5047RuboCop::Cop::CodeReuse::Serializer5048 flags the use of a Serializer in a Service class5049 flags the use of a Serializer in a Finder5050 flags the use of a Serializer in a Presenter5051 flags the use of a Serializer in a Serializer5052 flags the use of a Serializer in a model instance method5053 flags the use of a Serializer in a model class method5054 flags the use of a Serializer in a worker5055Gitlab::Email::Hook::DeliveryMetricsObserver5056 when email has been delivered5057 increments both email delivery metrics5058 when email has not been delivered due to an error5059 increments only delivery attempt metric5060Gitlab::Metrics::Samplers::InfluxSampler5061 #start5062 runs once and gathers a sample at a given interval5063 #sample5064 samples various statistics5065 #flush5066 schedules the metrics using Sidekiq5067 #sample_memory_usage5068 adds a metric containing the memory usage5069 #sample_file_descriptors5070 adds a metric containing the amount of open file descriptors5071 #add_metric5072 prefixes the series name for a Rails process5073 prefixes the series name for a Sidekiq process5074 #sleep_interval5075 returns a Numeric5076 does not return the same interval twice in a row5077Gitlab::UntrustedRegexp::RubySyntax5078 .matches_syntax?5079 returns true if regexp is valid5080 returns true if regexp is invalid, but resembles regexp5081 .valid?5082 returns true if regexp is valid5083 returns false if regexp is invalid5084 .fabricate5085 when regexp is valid5086 fabricates regexp without flags5087 when regexp is empty5088 fabricates regexp correctly5089 when regexp is a raw pattern5090 returns error5091 .fabricate!5092 safe regexp is used5093 when regexp is using /regexp/ scheme with flags5094 fabricates regexp with a single flag5095 fabricates regexp with multiple flags5096 fabricates regexp without flags5097 when unsafe regexp is used5098 when no fallback is enabled5099 raises an exception5100 when fallback is used5101 fabricates regexp with a single flag5102 fabricates regexp with multiple flags5103 fabricates regexp without flags5104 when regexp is a raw pattern5105 raises an error5106Gitlab::Template::GitignoreTemplate5107 .all5108 strips the gitignore suffix5109 combines the globals and rest5110 .find5111 returns nil if the file does not exist5112 returns the Gitignore object of a valid file5113 #content5114 loads the full file5115Gitlab::ProjectTransfer5116 #move_project5117 moves project upload to another namespace5118 #move_namespace5119 when moving namespace from root into another namespace5120 moves namespace projects' upload5121 when moving namespace from one parent to another5122 moves namespace projects' upload5123 when moving namespace from having a parent to root5124 moves namespace projects' upload5125 #rename_project5126 renames project5127 #rename_namespace5128 renames namespace5129Gitlab::CrossProjectAccess5130 #add_check5131 keeps track of the properties to check5132 builds the check correctly5133 merges the checks of a parent class into existing checks of a subclass5134 merges the existing checks of a superclass into the checks of a subclass5135 #find_check5136 returns a check when it was defined for a superclass5137 caches the result for a subclass5138 returns the checks for the closest class if there are more checks available5139MicrosoftTeams::Notifier5140 #ping5141 expects to receive successful answer5142Gitlab::GithubImport::Importer::LfsObjectsImporter5143 #parallel?5144 returns true when running in parallel mode5145 returns false when running in sequential mode5146 #execute5147 when running in parallel mode5148 imports lfs objects in parallel5149 when running in sequential mode5150 imports lfs objects in sequence5151 #sequential_import5152 imports each lfs object in sequence5153 #parallel_import5154 imports each lfs object in parallel5155 #collection_options5156 returns an empty Hash5157JsRegexValidator5158 #validates_each5159 user_default_internal_regex: nil, result: []5160 generates correct errors5161 user_default_internal_regex: "", result: []5162 generates correct errors5163 user_default_internal_regex: "(?#comment)", result: ["Regex Pattern (?#comment) can not be expressed in Javascript"]5164 generates correct errors5165 user_default_internal_regex: "(?(a)b|c)", result: ["invalid conditional pattern: /(?(a)b|c)/i"]5166 generates correct errors5167Import/Export model configuration5168 has no new models5169RuboCop::Cop::Gitlab::PredicateMemoization5170 when source is a predicate method memoizing via ivar5171 behaves like registering offense5172 registers an offense when a predicate method is memoizing via ivar5173 behaves like registering offense5174 registers an offense when a predicate method is memoizing via ivar5175 when source is a predicate method using ivar with assignment5176 behaves like not registering offense5177 does not register offenses5178 when source is a predicate method using local with ||=5179 behaves like not registering offense5180 does not register offenses5181 when source is a regular method memoizing via ivar5182 behaves like not registering offense5183 does not register offenses5184Gitlab::Auth::LDAP::AuthHash5185 without overridden attributes5186 has the correct username5187 has the correct name5188 with overridden attributes5189 has the correct username5190 has the correct name5191 #uid5192 when there is extraneous (but valid) whitespace5193 removes the extraneous whitespace5194 when there are upper case characters5195 downcases5196 #username5197 if lowercase_usernames setting is5198 enabled the username attribute is lower cased5199 disabled the username attribute is not lower cased5200Gitlab::NullRequestStore5201 #store5202 returns an empty hash5203 #active?5204 returns falsey5205 #read5206 returns nil5207 #[]5208 returns nil5209 #write5210 returns the same value5211 #[]=5212 returns the same value5213 #exist?5214 returns falsey5215 #fetch5216 returns the block result5217 #delete5218 when a block is given5219 yields the key to the block5220 returns the block result5221 when a block is not given5222 returns nil5223Gitlab::ExternalAuthorization::Response5224 #valid?5225 is valid for 200, 401, and 403 responses5226 is invalid for other statuses5227 #reason5228 returns a reason if it was included in the response body5229 returns nil when there was no body5230 #successful?5231 is `true` if the status is 2005232 is `false` if the status is 401 or 4035233RspecFlaky::FlakyExamplesCollection5234 #initialize5235 accepts no argument5236 accepts a hash5237 does not accept anything else5238 #to_h5239 calls #to_h on the values5240 #-5241 returns only examples that are not present in the given collection5242 fails if the given collection does not respond to `#key?`5243BitbucketServer::Representation::Repo5244 #project_key5245 should eq "TEST"5246 #project_name5247 should eq "test"5248 #slug5249 should eq "rouge"5250 #browse_url5252 #clone_url5253 should eq "http://root@localhost:7990/scm/test/rouge.git"5254 #description5255 should eq "Test"5256 #full_name5257 should eq "test/rouge"5258ChatMessage::MergeMessage5259 when state is overridden5260 respects the overridden state5261 without markdown5262 open5263 returns a message regarding opening of merge requests5264 close5265 returns a message regarding closing of merge requests5266 with markdown5267 open5268 returns a message regarding opening of merge requests5269 close5270 returns a message regarding closing of merge requests5271Gitlab::GithubImport::PageCounter5272 #initialize5273 sets the initial page number to 1 when no value is cached5274 sets the initial page number to the cached value when one is present5275 #set5276 overwrites the page number when the given number is greater than the current number5277 does not overwrite the page number when the given number is lower than the current number5278RuboCop::Cop::IncludeActionViewContext5279 when `ActionView::Context` is included5280 registers an offense5281 autocorrects to the right version5282 when `ActionView::Context` is not included5283 registers no offense5284Gitlab::Kubernetes::KubectlCmd5285 .delete5286 constructs string properly5287 .apply_file5288 without optional args5289 requires filename to be present5290 constructs string properly5291 with optional args5292 constructs command properly with many args5293 constructs command properly with single arg5294schema_version_check rake task5295 allows migrations on databases meeting the min schema version requirement5296 raises an error when schema version is too old to migrate5297 skips running validation when passed the skip env variable5298 allows migrations on fresh databases5299Gitlab::Git::LfsPointerFile5300 #size5301 counts the bytes5302 handles non ascii data5303 #sha2565304 hashes the content correctly5305 #pointer5306 starts with the LFS version5307 includes sha2565308 ends with the size5309SmimeSignatureSettings5310 .parse5311 sets correct default values to disabled5312 when providing custom values5313 sets correct default values to disabled5314 enables smime with default key and cert5315 enables smime with custom key and cert5316Gitlab::Ci::Status::Running5317 #text5318 should eq "running"5319 #label5320 should eq "running"5321 #icon5322 should eq "status_running"5323 #favicon5324 should eq "favicon_status_running"5325 #group5326 should eq "running"5327Gitlab::RequestProfiler::Profile5328 .new5329 using old filename5330 returns valid data5331 using new filename5332 returns valid data5333 #content_type5334 when using html file5335 returns valid data5336 when using text file5337 returns valid data5338 when file is unknown5339 returns valid data5340MergeRequestState5341 should eq "MergeRequestState"5342 exposes all the existing merge request states5343 behaves like issuable state5344 exposes all the existing issuable states5345Gitlab::CrossProjectAccess::ClassMethods5346 #requires_cross_project_access5347 creates a correct check when a hash is passed5348 creates a correct check when an array is passed5349 creates a correct check when an array and a hash is passed5350Presentable5351 #present5352 returns a presenter5353 takes optional attributes5354Gitlab::DependencyLinker::Parser::Gemfile5355 #parse5356 returns parsed packages5357 packages respond to name and external_ref accordingly5358SessionsHelper5359 #unconfirmed_email?5360 returns true when the flash alert contains a devise failure unconfirmed message5361 returns false when the flash alert does not contain a devise failure unconfirmed message5362Label5363 has the correct fields5364 should require graphql authorizations :read_label5365DetailedStatusEntity5366 #as_json5367 contains status details5368API::Helpers::GraphqlHelpers5369 run_graphql!5370 when transform function is provided5371 returns the expected result5372 when a transform function is not provided5373 returns the expected result5374User5375 should eq "User"5376 should require graphql authorizations :read_user5377Types::Tree::SubmoduleType5378 should eq "Submodule"5379 should have graphql fields :id, :name, :type, :path, :flat_path, :web_url, and :tree_url5380Gitlab::Metrics::BackgroundTransaction5381 #action5382 returns transaction action name5383 #label5384 returns labels based on class name5385Gitlab::DatabaseImporters::CommonMetrics::PrometheusMetric5386 group enum equals ::PrometheusMetric5387 .group_titles equals ::PrometheusMetric5388Gitlab::SidekiqStatus::ServerMiddleware5389 #call5390 stops tracking of a job upon completion5391ProviderRepoEntity5392 #as_json5393 includes required fields5394Gitlab::Kubernetes::Role5395 #generate5396 should eq #<Kubeclient::Resource metadata={:name=>"example-name", :namespace=>"example-namespace"}, rules=[{:ap...>["hello.world"], :resources=>["oil", "diamonds", "coffee"], :verbs=>["say", "do", "walk", "run"]}]>5397Pending: (Failures listed here are expected and do not affect your suite's status)5398 1) Ci::Pipeline modules behaves like AtomicInternalId .has_internal_id Validation when presence validation is required validates presence5399 # No reason given5400 # ./spec/support/shared_examples/models/atomic_internal_id_shared_examples.rb:255401Finished in 11 minutes 7 seconds (files took 29.05 seconds to load)54021956 examples, 0 failures, 1 pending5403! Generating reports is disabled. To enable it, please set the `FLAKY_RSPEC_GENERATE_REPORT=1` !5404Wed Oct 23 14:17:54 UTC 20195406$ date5407Wed Oct 23 14:17:55 UTC 20195410coverage/: found 5 matching files 5411knapsack/: found 3 matching files 5412rspec_flaky/: found 2 matching files 5413rspec_profiling/: found 1 matching files 5414WARNING: tmp/capybara/: no matching files 5415tmp/memory_test/: found 2 matching files 5416Uploading artifacts to coordinator... ok id=330157491 responseStatus=201 Created token=eAVvPjZZ5417Uploading artifacts...5418junit_rspec.xml: found 1 matching files 5419Uploading artifacts to coordinator... ok id=330157491 responseStatus=201 Created token=eAVvPjZZ5420Job succeeded