Running with gitlab-runner 16.11.0~pre.21.gaa21be2d (aa21be2d)
  on blue-1.private.runners-manager.gitlab.com/gitlab.com/gitlab-org 1zzGUpzq, system ID: s_fc31da7ae46e
  feature flags: FF_NETWORK_PER_BUILD:true, FF_USE_IMPROVED_URL_MASKING:true
section_start:1712781946:resolve_secrets
Resolving secrets
section_end:1712781946:resolve_secrets
section_start:1712781946:prepare_executor
Preparing the "docker+machine" executor
Using Docker executor with image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bookworm-ruby-3.1.patched-golang-1.20-rust-1.73-node-18.17-postgresql-14:rubygems-3.4-git-2.36-lfs-2.9-chrome-120-yarn-1.22-graphicsmagick-1.3.36 ...
Starting service registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-14-pgvector-0.4.1 ...
Authenticating with credentials from job payload (GitLab Registry)
Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-14-pgvector-0.4.1 ...
Using docker image sha256:82f132c22567f8ce17cc132c14b2f9aa3eaf9bb5424d91c2d966912433f0257d for registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-14-pgvector-0.4.1 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:c55e1364ee4327b244a9cfa1750f19feea14fc774eaf792b725967d146eb45f5 ...
WARNING: Service registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 is already created. Ignoring.
WARNING: Service registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 is already created. Ignoring.
Starting service registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 ...
Authenticating with credentials from job payload (GitLab Registry)
Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 ...
Using docker image sha256:5c5ba5b83d6c60cb0b225bd670b7a43be8c238cc72347d24af57e5027c3648f3 for registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:46aceab84c42d0e819c8e7940f2f98ce9e184785cd7b22d95872024a35f52407 ...
Starting service redis:6.2-alpine ...
Pulling docker image redis:6.2-alpine ...
Using docker image sha256:57763d55554967cf0a9b05258512282482807d361c68b10fd9599ac9732bfb04 for redis:6.2-alpine with digest redis@sha256:3fcb624d83a9c478357f16dc173c58ded325ccc5fd2a4375f3916c04cc579f70 ...
Waiting for services to be up and running (timeout 30 seconds)...
Authenticating with credentials from job payload (GitLab Registry)
Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bookworm-ruby-3.1.patched-golang-1.20-rust-1.73-node-18.17-postgresql-14:rubygems-3.4-git-2.36-lfs-2.9-chrome-120-yarn-1.22-graphicsmagick-1.3.36 ...
Using docker image sha256:68c28b617bffe2a886c7cc55876bd2ffe9dc0450f41e86898c5245c6247e92ee for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bookworm-ruby-3.1.patched-golang-1.20-rust-1.73-node-18.17-postgresql-14:rubygems-3.4-git-2.36-lfs-2.9-chrome-120-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bookworm-ruby-3.1.patched-golang-1.20-rust-1.73-node-18.17-postgresql-14@sha256:80a1e9bcb7ece8797ca1d1e1cad6ca2664ece80bda1d4d2575b247f5c91af96d ...
section_end:1712781952:prepare_executor
section_start:1712781952:prepare_script
Preparing environment
Running on runner-1zzgupzq-project-278964-concurrent-0 via runner-1zzgupzq-private-1712776630-e0016165...
section_end:1712781952:prepare_script
section_start:1712781952:get_sources
Getting source from Git repository
Skipping Git repository setup
Skipping Git checkout
Skipping Git submodules setup
section_end:1712781953:get_sources
section_start:1712781953:restore_cache
Restoring cache
Checking cache for ruby-gems-debian-bookworm-ruby-3.1-17...
Downloading cache from https://storage.googleapis.com/gitlab-com-runners-cache/project/278964/ruby-gems-debian-bookworm-ruby-3.1-17 
Successfully extracted cache
section_end:1712781970:restore_cache
section_start:1712781970:download_artifacts
Downloading artifacts
Downloading artifacts for clone-gitlab-repo (6597627647)...
Downloading artifacts from coordinator... ok        host=storage.googleapis.com id=6597627647 responseStatus=200 OK token=glcbt-65
WARNING: Part of .git directory is on the list of files to extract 
WARNING: This may introduce unexpected problems    
Downloading artifacts for compile-test-assets (6597627686)...
Downloading artifacts from coordinator... ok        host=storage.googleapis.com id=6597627686 responseStatus=200 OK token=glcbt-65
Downloading artifacts for detect-tests (6597627712)...
Downloading artifacts from coordinator... ok        host=storage.googleapis.com id=6597627712 responseStatus=200 OK token=glcbt-65
Downloading artifacts for retrieve-tests-metadata (6597627735)...
Downloading artifacts from coordinator... ok        host=storage.googleapis.com id=6597627735 responseStatus=200 OK token=glcbt-65
Downloading artifacts for setup-test-env (6597627691)...
Downloading artifacts from coordinator... ok        host=storage.googleapis.com id=6597627691 responseStatus=200 OK token=glcbt-65
section_end:1712782002:download_artifacts
section_start:1712782002:step_script
Executing "step_script" stage of the job script
Using docker image sha256:68c28b617bffe2a886c7cc55876bd2ffe9dc0450f41e86898c5245c6247e92ee for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bookworm-ruby-3.1.patched-golang-1.20-rust-1.73-node-18.17-postgresql-14:rubygems-3.4-git-2.36-lfs-2.9-chrome-120-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bookworm-ruby-3.1.patched-golang-1.20-rust-1.73-node-18.17-postgresql-14@sha256:80a1e9bcb7ece8797ca1d1e1cad6ca2664ece80bda1d4d2575b247f5c91af96d ...
$ echo $FOSS_ONLY

$ [ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb
$ export GOPATH=$CI_PROJECT_DIR/.go
$ mkdir -p $GOPATH
$ source scripts/utils.sh
$ source scripts/prepare_build.sh
section_start:1712782003:bundle-install[collapsed=true]
Installing gems
3.4.4
Bundler version 2.4.4
Successfully installed bundler-2.4.11
1 gem installed
production:development
Settings are listed in order of priority. The top value will be used.
clean
Set for your local app (/builds/gitlab-org/gitlab/.bundle/config): true

frozen
Set via BUNDLE_FROZEN: true

install_flags
Set via BUNDLE_INSTALL_FLAGS: "--jobs=$(nproc) --retry=3"

path
Set for your local app (/builds/gitlab-org/gitlab/.bundle/config): "/builds/gitlab-org/gitlab/vendor"

without
Set via BUNDLE_WITHOUT: [:production, :development]

$ bundle install --jobs=$(nproc) --retry=3 
Don't run Bundler as root. Installing your bundle as root will break this
application for all non-root users on this machine.
Patching bundler with bundler-checksum...
Using rake 13.0.6
Using rexml 3.2.6
Using CFPropertyList 3.0.5
Using RedCloth 4.3.3
Using faraday-em_http 1.0.0
Using faraday-em_synchrony 1.0.0
Using faraday-excon 1.1.0
Using faraday-httpclient 1.0.1
Using multipart-post 2.2.3
Using faraday-multipart 1.0.4
Using faraday-net_http 1.0.1
Using faraday-net_http_persistent 1.2.0
Using faraday-patron 1.0.0
Using faraday-rack 1.0.0
Using faraday-retry 1.0.3
Using ruby2_keywords 0.0.5
Using faraday 1.10.0
Using acme-client 2.0.11
Using concurrent-ruby 1.2.2
Using i18n 1.14.1
Using minitest 5.11.3
Using tzinfo 2.0.6
Using activesupport 7.0.8.1
Using builder 3.2.4
Using erubi 1.12.0
Using racc 1.6.2
Using nokogiri 1.16.0 (x86_64-linux)
Using rails-dom-testing 2.0.3
Using crass 1.0.6
Using loofah 2.22.0
Using rails-html-sanitizer 1.6.0
Using actionview 7.0.8.1
Using rack 2.2.8.1
Using rack-test 2.1.0
Using actionpack 7.0.8.1
Using nio4r 2.7.0
Using websocket-extensions 0.1.5
Using websocket-driver 0.7.6
Using actioncable 7.0.8.1
Using globalid 1.1.0
Using activejob 7.0.8.1
Using activemodel 7.0.8.1
Using activerecord 7.0.8.1
Using marcel 1.0.2
Using mini_mime 1.1.2
Using activestorage 7.0.8.1
Using date 3.3.3
Using timeout 0.3.2
Using net-protocol 0.1.3
Using net-imap 0.3.4
Using net-pop 0.1.2
Using net-smtp 0.3.3
Using mail 2.8.1
Using actionmailbox 7.0.8.1
Using actionmailer 7.0.8.1
Using actiontext 7.0.8.1
Using pg 1.5.6
Using activerecord-explain-analyze 0.1.0
Using activerecord-gitlab 0.2.0 from source at `gems/activerecord-gitlab`
Using acts-as-taggable-on 10.0.0
Using public_suffix 5.0.0
Using addressable 2.8.1
Using aes_key_wrap 1.1.0
Using akismet 3.0.0
Using http-accept 1.7.0
Using unf_ext 0.0.8.2
Using unf 0.1.4
Using domain_name 0.5.20190701
Using http-cookie 1.0.5
Using mime-types-data 3.2023.1003
Using mime-types 3.5.1
Using netrc 0.11.0
Using rest-client 2.1.0
Using aliyun-sdk 0.8.0
Using sexp_processor 4.17.1
Using ruby_parser 3.21.0
Using protocol 2.0.0
Using mize 0.4.1
Using sync 0.5.0
Using tins 1.31.1
Using amatch 0.4.1
Using android_key_attestation 0.3.0
Using graphql 2.2.5
Using apollo_upload_server 2.1.5
Using jwt 2.5.0
Using app_store_connect 0.29.0
Using arr-pm 0.0.12
Using asciidoctor 2.0.18
Using asciidoctor-include-ext 0.4.0
Using asciidoctor-kroki 0.8.0
Using asciidoctor-plantuml 0.0.16
Using ast 2.4.2
Using atlassian-jwt 0.2.1
Using encryptor 3.0.0
Using attr_encrypted 3.2.4 from source at `vendor/gems/attr_encrypted`
Using attr_required 1.0.1
Using awesome_print 1.9.2
Using awrence 1.2.1
Using aws-eventstream 1.3.0
Using aws-partitions 1.877.0
Using aws-sigv4 1.8.0
Using jmespath 1.6.2
Using aws-sdk-core 3.191.3
Using aws-sdk-cloudformation 1.41.0
Using aws-sdk-kms 1.76.0
Using aws-sdk-s3 1.144.0
Using dumb_delegator 1.0.0
Using thread_safe 0.3.6
Using descendants_tracker 0.0.4
Using ice_nine 0.11.2
Using axiom-types 0.1.1
Using coercible 1.0.0
Using virtus 2.0.0
Using axe-core-api 4.8.0
Using axe-core-rspec 4.8.2
Using faraday_middleware 1.2.0
Using connection_pool 2.4.1
Using net-http-persistent 4.0.1
Using azure-storage-common 2.0.4
Using azure-storage-blob 2.0.3
Using babosa 2.0.0
Using base32 0.3.2
Using base64 0.2.0
Using batch-loader 2.0.1
Using bcrypt 3.1.18
Using benchmark-ips 2.11.0
Using benchmark-malloc 0.2.0
Using memory_profiler 1.0.1
Using benchmark-memory 0.2.0
Using benchmark-perf 0.6.0
Using benchmark-trend 0.4.0
Using bindata 2.4.11
Using debug_inspector 1.1.0
Using binding_of_caller 1.0.0
Using msgpack 1.5.4
Using bootsnap 1.18.3
Using browser 5.3.1
Using uniform_notifier 1.16.0
Using bullet 7.1.2
Using bundler 2.4.11
Using thor 1.3.1
Using bundler-audit 0.9.1
Using bundler-checksum 0.1.0 from source at `vendor/gems/bundler-checksum` and installing its executables
Using byebug 11.1.3
Using matrix 0.4.2
Using regexp_parser 2.6.0
Using xpath 3.2.0
Using capybara 3.40.0
Using launchy 2.5.0
Using capybara-screenshot 1.0.26
Using ssrf_filter 1.0.8
Using carrierwave 1.3.4
Using cbor 0.5.9.8
Using character_set 1.8.0
Using chef-utils 18.3.0
Using fuzzyurl 0.9.0
Using tomlrb 1.3.0
Using mixlib-config 3.0.27
Using mixlib-shellout 3.2.7
Using chef-config 18.3.0
Using chunky_png 1.4.0
Using circuitbox 2.0.0
Using citrus 3.0.2
Using claide 1.1.0
Using colored2 3.1.2
Using cork 0.3.0
Using nap 1.1.0
Using open4 1.3.4
Using claide-plugins 0.9.2
Using json 2.6.3
Using click_house-client 0.1.0 from source at `gems/click_house-client`
Using google-protobuf 3.25.3 (x86_64-linux)
Using googleapis-common-protos-types 1.5.0
Using grpc 1.60.0 (x86_64-linux)
Using googleapis-common-protos 1.4.0
Using multi_json 1.14.1
Using os 1.1.4
Using signet 0.18.0
Using googleauth 1.8.1
Using gapic-common 0.20.0
Using google-cloud-errors 1.3.0
Using google-cloud-profiler-v2 0.4.0
Using stackprof 0.2.25
Using cloud_profiler_agent 0.0.1.pre from source at `vendor/gems/cloud_profiler_agent`
Using coderay 1.1.3
Using commonmarker 0.23.10
Using openssl 3.1.0
Using openssl-signature_algorithm 1.3.0
Using cose 1.3.0
Using i18n_data 0.13.1
Using sixarm_ruby_unaccent 1.2.0
Using countries 4.0.1
Using safe_yaml 1.0.4
Using crack 0.4.3
Using creole 0.5.0
Using rchardet 1.8.0
Using git 1.18.0
Using crystalball 0.7.0
Using css_parser 1.14.0
Using method_source 1.0.0
Using zeitwerk 2.6.7
Using railties 7.0.8.1
Using cssbundling-rails 1.4.0
Using csv_builder 0.1.0 from source at `gems/csv_builder`
Using cvss-suite 3.0.1
Using faraday-http-cache 2.5.0
Using kramdown 2.3.2
Using kramdown-parser-gfm 1.1.0
Using no_proxy_fix 0.1.2
Using sawyer 0.9.2
Using octokit 8.0.0
Using unicode-display_width 2.4.2
Using terminal-table 3.0.2
Using danger 9.4.2
Using multi_xml 0.6.0
Using httparty 0.21.0
Using gitlab 4.19.0
Using danger-gitlab 8.0.0
Using dartsass 1.49.8
Using database_cleaner-core 2.0.1
Using database_cleaner-active_record 2.1.0
Using dead_end 3.1.1
Using deb_version 1.0.2
Using html-pipeline 2.14.3
Using deckar01-task_list 2.3.4
Using declarative 0.0.20
Using declarative_policy 1.1.0
Using deprecation_toolkit 1.5.1
Using ffi 1.15.5
Using get_process_mem 0.2.7
Using heapy 0.2.0
Using mini_histogram 0.3.1
Using ruby-statistics 3.0.0
Using derailed_benchmarks 2.1.2
Using devfile 0.0.25.pre.alpha1 (x86_64-linux)
Using device_detector 1.0.0
Using orm_adapter 0.5.0
Using responders 3.0.1
Using warden 1.2.9
Using devise 4.9.3
Using rotp 6.3.0
Using devise-two-factor 4.1.1
Using devise-pbkdf2-encryptable 0.0.0 from source at `vendor/gems/devise-pbkdf2-encryptable`
Using diff-lcs 1.5.0
Using diff_match_patch 0.1.0 from source at `vendor/gems/diff_match_patch`
Using diffy 3.4.2
Using digest-crc 0.6.5
Using discordrb-webhooks 3.5.0
Using docile 1.4.0
Using doorkeeper 5.6.6
Using doorkeeper-openid_connect 1.8.7
Using dotenv 2.7.6
Using dry-cli 1.0.0
Using dry-core 1.0.1
Using dry-inflector 1.0.0
Using dry-logic 1.5.0
Using dry-types 1.7.1
Using duo_api 1.3.0
Using ecma-re-validator 0.3.0
Using ed25519 1.3.0
Using elasticsearch-api 7.13.3
Using elasticsearch-transport 7.13.3
Using elasticsearch 7.13.3
Using hashie 5.0.0
Using elasticsearch-model 7.2.0
Using elasticsearch-rails 7.2.1
Using email_reply_trimmer 0.1.6
Using htmlentities 4.3.4
Using email_spec 2.2.0
Using ethon 0.16.0
Using typhoeus 1.4.0
Using error_tracking_open_api 1.0.0 from source at `gems/error_tracking_open_api`
Using escape_utils 1.3.0
Using et-orbi 1.2.7
Using excon 0.99.0
Using execjs 2.8.1
Using parslet 1.8.2
Using expgen 0.1.1
Using expression_parser 0.9.0
Using extended-markdown-filter 0.7.0
Using factory_bot 6.4.5
Using factory_bot_rails 6.4.3
Using faraday_middleware-aws-sigv4 0.3.0
Using fast_blank 1.0.1
Using fast_gettext 2.3.0
Using ffaker 2.23.0
Using ffi-compiler 1.0.1
Using libyajl2 2.1.0
Using ffi-yajl 2.6.0
Using find_a_port 1.0.1
Using flipper 0.26.2
Using flipper-active_record 0.26.2
Using flipper-active_support_cache_store 0.26.2
Using formatador 0.2.5
Using fog-core 2.1.0
Using fog-json 1.2.0
Using ipaddress 0.8.3
Using xml-simple 1.1.9
Using fog-aliyun 0.4.0
Using fog-xml 0.1.3
Using fog-aws 3.18.0
Using httpclient 2.8.3
Using trailblazer-option 0.1.2
Using uber 0.1.0
Using representable 3.2.0
Using retriable 3.1.2
Using webrick 1.8.1
Using google-apis-core 0.11.2
Using google-apis-compute_v1 0.57.0
Using google-apis-dns_v1 0.28.0
Using google-apis-iamcredentials_v1 0.15.0
Using google-apis-monitoring_v3 0.37.0
Using google-apis-pubsub_v1 0.30.0
Using google-apis-sqladmin_v1beta4 0.41.0
Using google-apis-storage_v1 0.29.0
Using google-cloud-env 1.6.0
Using fog-google 1.19.0
Using fog-local 0.8.0
Using forwardable 1.3.3
Using raabro 1.4.0
Using fugit 1.8.1
Using rspec-support 3.12.0
Using rspec-core 3.12.2
Using ruby-progressbar 1.11.0
Using fuubar 2.2.0
Using gemoji 3.0.1
Using locale 2.1.3
Using singleton 0.1.1
Using prime 0.1.2
Using text 1.3.1
Using gettext 3.4.9
Using gettext_i18n_rails 1.12.0
Using gitaly 16.10.1
Using gitlab-backup-cli 0.0.1 from source at `gems/gitlab-backup-cli`
Using numerizer 0.2.0
Using gitlab-chronic 0.10.5
Using gitlab-dangerfiles 4.7.0
Using request_store 1.5.1
Using gitlab-experiment 0.9.1
Using gitlab-fog-azure-rm 1.9.1
Using rb_sys 0.9.86
Using gitlab-glfm-markdown 0.0.14 (x86_64-linux)
Using language_server-protocol 3.17.0.3
Using parallel 1.22.1
Using parser 3.3.0.5
Using rainbow 3.1.1
Using rubocop-ast 1.29.0
Using rubocop 1.57.2
Using gitlab-housekeeper 0.1.0 from source at `gems/gitlab-housekeeper` and installing its executables
Using gitlab-http 0.1.0 from source at `gems/gitlab-http`
Using opentracing 0.5.0
Using thrift 0.16.0
Using jaeger-client 1.1.0
Using pg_query 5.1.0
Using redis-client 0.21.1
Using redis 5.0.8
Using gitlab-labkit 0.35.1
Using gitlab-license 2.4.0
Using version_gem 1.1.0
Using snaky_hash 2.0.0
Using oauth2 2.0.9
Using redis-namespace 1.10.0
Using gitlab-mail_room 0.0.24
Using gitlab-markup 1.9.0
Using gitlab-net-dns 0.9.2
Using rspec-expectations 3.12.3
Using rspec-mocks 3.12.6
Using rspec 3.12.0
Using gitlab-rspec 0.1.0 from source at `gems/gitlab-rspec`
Using gitlab-rspec_flaky 0.1.0 from source at `gems/gitlab-rspec_flaky`
Using gitlab-safe_request_store 0.1.0 from source at `gems/gitlab-safe_request_store`
Using gitlab-schema-validation 0.1.0 from source at `gems/gitlab-schema-validation`
Using snowplow-tracker 0.8.0
Using gitlab-sdk 0.3.0
Using re2 2.7.0 (x86_64-linux)
Using toml-rb 2.2.0
Using gitlab-secret_detection 0.1.0 from source at `gems/gitlab-secret_detection`
Using sidekiq 7.1.6 from source at `vendor/gems/sidekiq-7.1.6` and installing its executables
Using gitlab-sidekiq-fetcher 0.11.0 from source at `vendor/gems/sidekiq-reliable-fetch`
Using rubocop-graphql 0.19.0
Using rubocop-performance 1.19.1
Using rubocop-rails 2.22.1
Using rubocop-capybara 2.19.0
Using rubocop-factory_bot 2.24.0
Using rubocop-rspec 2.25.0
Using gitlab-styles 11.0.0
Using gitlab-utils 0.1.0 from source at `gems/gitlab-utils`
Using gitlab_chronic_duration 0.12.0
Using net-ldap 0.17.1
Using rack-protection 2.2.2
Using omniauth 2.1.0
Using pyu-ruby-sasl 0.0.3.3
Using rubyntlm 0.6.3
Using gitlab_omniauth-ldap 2.2.0
Using http-form_data 2.3.0
Using llhttp-ffi 0.4.0
Using http 5.1.1
Using unparser 0.6.7
Using proc_to_ast 0.1.0
Using rspec-parameterized-core 1.0.0
Using rspec-parameterized-table_syntax 1.0.0
Using rspec-parameterized 1.0.0
Using table_print 1.5.7
Using gitlab_quality-test_tooling 1.21.1
Using gon 6.4.0
Using google-apis-androidpublisher_v3 0.34.0
Using google-apis-cloudbilling_v1 0.21.0
Using google-apis-cloudresourcemanager_v1 0.31.0
Using google-apis-container_v1 0.43.0
Using google-apis-container_v1beta1 0.43.0
Using google-apis-iam_v1 0.36.0
Using google-apis-serviceusage_v1 0.28.0
Using google-cloud-location 0.6.0
Using grpc-google-iam-v1 1.5.0
Using google-cloud-artifact_registry-v1 0.11.0
Using google-cloud-common 1.1.0
Using google-cloud-compute-v1 2.6.0
Using google-cloud-core 1.6.0
Using google-cloud-storage 1.45.0
Using mini_portile2 2.8.5
Using gpgme 2.0.23
Using mustermann 3.0.0
Using mustermann-grape 1.0.2
Using rack-accept 0.4.5
Using grape 2.0.0
Using grape-entity 0.10.2
Using grape-path-helpers 2.0.1
Using grape-swagger 2.0.2
Using grape-swagger-entity 0.5.1
Using grape_logging 1.8.4
Using sprockets 3.7.2
Using sprockets-rails 3.4.2
Using graphiql-rails 1.8.0
Using graphql-client 0.19.0
Using graphlient 0.6.0
Using graphlyte 1.0.0
Using graphql-docs 4.0.0
Using gssapi 1.3.1
Using rb-fsevent 0.11.2
Using rb-inotify 0.10.1
Using listen 3.7.1
Using lumberjack 1.2.7
Using nenv 0.3.0
Using shellany 0.0.1
Using notiffany 0.1.3
Using pry 0.14.2
Using guard 2.16.2
Using guard-compat 1.2.1
Using guard-rspec 4.7.3
Using temple 0.8.2
Using tilt 2.0.11
Using haml 5.2.2
Using sysexits 1.2.0
Using haml_lint 0.53.0
Using hamlit 2.15.0
Using hana 1.3.7
Using hashdiff 1.1.0
Using health_check 3.1.0
Using html2text 0.2.0
Using ice_cube 0.16.4
Using icalendar 2.8.0
Using imagen 0.1.8
Using influxdb-client 2.9.0
Using rails 7.0.8.1
Using invisible_captcha 2.1.0
Using ipaddr 1.2.5
Using oj 3.13.23
Using ipynbdiff 0.4.7 from source at `gems/ipynbdiff`
Using oauth 0.5.6
Using jira-ruby 2.3.0
Using regexp_property_values 1.0.0
Using js_regex 3.8.0
Using json-jwt 1.15.3
Using uri_template 0.7.0
Using json_schemer 0.2.18
Using jsonb_accessor 1.3.10
Using jsonpath 1.1.2
Using kaminari-core 1.2.2
Using kaminari-actionview 1.2.2
Using kaminari-activerecord 1.2.2
Using kaminari 1.2.2
Using kas-grpc 0.4.0
Using knapsack 1.22.0
Using recursive-open-struct 1.1.3
Using kubeclient 4.11.0
Using rubyzip 2.3.2
Using with_env 1.1.0
Using license_finder 7.0.1
Using reverse_markdown 1.4.0
Using rugged 1.6.3
Using licensee 9.16.1
Using lockbox 1.3.0
Using lograge 0.11.2
Using lru_redux 1.1.0
Using mail-smtp_pool 0.1.0 from source at `vendor/gems/mail-smtp_pool`
Using marginalia 1.11.1
Using microsoft_graph_mailer 0.1.0 from source at `vendor/gems/microsoft_graph_mailer`
Using mini_magick 4.12.0
Using mixlib-cli 2.1.8
Using mixlib-log 3.0.9
Using murmurhash3 0.1.7
Using neighbor 0.2.3
Using uri 0.13.0
Using net-http 0.1.1
Using net-ntp 2.1.3
Using net-ssh 7.2.0
Using net-scp 4.0.0
Using plist 3.7.0
Using train-core 3.10.8
Using wmi-lite 1.0.7
Using ohai 18.1.3
Using oj-introspect 0.7.2
Using omniauth-oauth2 1.8.0
Using omniauth-alicloud 3.0.0
Using omniauth-atlassian-oauth2 0.2.0
Using omniauth-auth0 3.1.0
Using omniauth-azure-activedirectory-v2 2.0.0
Using omniauth-azure-oauth2 0.0.10 from source at `vendor/gems/omniauth-azure-oauth2`
Using omniauth-dingtalk-oauth2 1.0.1
Using omniauth-facebook 4.0.0
Using omniauth-github 2.0.1
Using omniauth-gitlab 4.0.0 from source at `vendor/gems/omniauth-gitlab`
Using omniauth-google-oauth2 1.1.1
Using omniauth-oauth 1.2.0
Using omniauth-oauth2-generic 0.2.8
Using omniauth-salesforce 1.0.5 from source at `vendor/gems/omniauth-salesforce`
Using ruby-saml 1.15.0
Using omniauth-saml 2.1.0
Using omniauth-shibboleth-redux 2.0.0
Using omniauth-twitter 1.4.0
Using omniauth_crowd 2.4.0 from source at `vendor/gems/omniauth_crowd`
Using rack-oauth2 1.21.3
Using swd 1.3.0
Using validate_email 0.1.6
Using validate_url 1.0.15
Using webfinger 1.2.0
Using openid_connect 1.3.0
Using omniauth_openid_connect 0.6.1
Using optimist 3.0.1
Using rubypants 0.2.0
Using org-ruby 0.9.12
Using pact-support 1.20.0
Using pact-mock_service 3.11.2
Using term-ansicolor 1.7.1
Using pact 1.64.0
Using tty-color 0.6.0
Using pastel 0.8.0
Using peek 1.1.0
Using png_quantizator 0.2.1
Using premailer 1.16.0
Using premailer-rails 1.10.3
Using prometheus-client-mmap 1.1.1 (x86_64-linux)
Using pry-byebug 3.10.1
Using pry-rails 0.3.9
Using rouge 4.2.0
Using strings-ansi 0.2.0
Using unicode_utils 1.4.0
Using strings 0.2.1
Using tty-screen 0.8.1
Using tty-markdown 0.7.2
Using tty-cursor 0.7.1
Using wisper 2.0.1
Using tty-reader 0.9.0
Using tty-prompt 0.23.1
Using pry-shell 0.6.4
Using puma 6.4.0
Using rack-attack 6.7.0
Using rack-cors 2.0.1
Using rack-proxy 0.7.7
Using rack-session 1.0.2
Using rack-timeout 0.6.3
Using rails-controller-testing 1.0.5
Using rails-i18n 7.0.3
Using rbtrace 0.5.1
Using recaptcha 5.12.3
Using redis-store 1.10.0
Using redis-rack 3.0.0
Using redis-actionpack 5.4.0
Using redis-cluster-client 0.7.5
Using redis-clustering 5.0.8
Using rinku 2.0.0
Using rqrcode_core 1.2.0
Using rqrcode 2.2.0
Using rspec-benchmark 0.6.0
Using rspec-rails 6.1.1
Using rspec-retry 0.6.2
Using rspec_junit_formatter 0.6.0
Using rspec_profiling 0.0.9
Using ruby-fogbugz 0.3.0
Using ruby-magic 0.6.0
Using ruby-openai 3.7.0
Using safety_net_attestation 0.4.0
Using sanitize 6.0.2
Using sd_notify 0.1.1
Using seed-fu 2.3.7
Using websocket 1.2.10
Using selenium-webdriver 4.18.1
Using tty-command 0.10.1
Using semver_dialects 2.0.0
Using sentry-ruby 5.10.0
Using sentry-rails 5.10.0
Using sentry-raven 3.1.2
Using sentry-sidekiq 5.10.0
Using shoulda-matchers 5.1.0
Using sidekiq-cron 1.12.0
Using sigdump 0.2.4
Using simple_po_parser 1.1.6
Using simplecov-html 0.12.3
Using simplecov_json_formatter 0.1.4
Using simplecov 0.22.0
Using simplecov-cobertura 2.1.0
Using simplecov-lcov 0.8.0
Using slack-messenger 2.3.4
Using spamcheck 1.3.0
Using spring 4.1.0
Using spring-commands-rspec 1.0.4
Using ssh_data 1.3.0
Using state_machines 0.5.0
Using state_machines-activemodel 0.8.0
Using state_machines-activerecord 0.8.0
Using static_holmes 0.7.7
Using sys-filesystem 1.4.3
Using tanuki_emoji 0.9.0
Using telesign 2.2.4
Using telesignenterprise 2.2.2
Using terser 1.0.2
Using test-prof 1.3.2
Using test_file_finder 0.3.1
Using timfel-krb5-auth 0.8.3
Using tpm-key_attestation 0.12.0
Using truncato 0.7.12
Using undercover 0.4.6
Using unleash 3.2.2
Using valid_email 0.1.3
Using validates_hostname 1.0.13
Using version_sorter 2.3.0
Using view_component 3.11.0
Using vite_ruby 3.5.0
Using vite_rails 3.0.17
Using vmstat 2.3.0
Using warning 1.3.0
Using webauthn 3.0.0
Using webmock 3.23.0
Using wikicloth 0.8.1
Using yajl-ruby 1.4.3
Bundle complete! 332 Gemfile dependencies, 645 gems now installed.
Gems in the groups 'production' and 'development' were not installed.
Bundled gems are installed into `./vendor`
2 installed gems you directly depend on are looking for funding.
  Run `bundle fund` for details
==> 'bundle install --jobs=$(nproc) --retry=3 ' succeeded in 2 seconds.
$ bundle pristine pg
Patching bundler with bundler-checksum...
Installing pg 1.5.6 with native extensions
==> 'bundle pristine pg' succeeded in 12 seconds.
section_end:1712782018:bundle-install

Using decomposed database config (config/database.yml.decomposed-postgresql)
Geo DB won't be set up.
Embedding DB won't be set up.
section_start:1712782018:setup-db[collapsed=true]
Setting up DBs
CREATE ROLE
GRANT
$ bundle exec rake db:drop db:create db:schema:load db:migrate gitlab:db:lock_writes
Dropped database 'gitlabhq_test'
Dropped database 'gitlabhq_test_ci'
Created database 'gitlabhq_test'
Created database 'gitlabhq_test_ci'
==> 'bundle exec rake db:drop db:create db:schema:load db:migrate gitlab:db:lock_writes' succeeded in 59 seconds.
SELECT pg_catalog.set_config('search_path', '', false);
CREATE DATABASE praefect_test ENCODING 'UTF8';
section_end:1712782077:setup-db

$ source ./scripts/rspec_helpers.sh
$ run_timed_command "gem install knapsack --no-document"
$ gem install knapsack --no-document
Successfully installed knapsack-4.0.0
1 gem installed
==> 'gem install knapsack --no-document' succeeded in 1 seconds.
$ section_start "gitaly-test-spawn" "Spawning Gitaly"; scripts/gitaly-test-spawn; section_end "gitaly-test-spawn"
section_start:1712782078:gitaly-test-spawn[collapsed=true]
Spawning Gitaly
Trying to connect to gitaly: .... OK
Trying to connect to gitaly2: ...... OK
Starting Praefect with in-memory election strategyTrying to connect to praefect: ..... OK
section_end:1712782081:gitaly-test-spawn

$ export RSPEC_SKIPPED_TESTS_REPORT_PATH="rspec/skipped_tests-${CI_JOB_ID}.txt"
$ export RSPEC_RETRIED_TESTS_REPORT_PATH="rspec/retried_tests-${CI_JOB_ID}.txt"
$ tooling/bin/create_job_metrics_file || true
[job-metrics] Creating the job metrics file for the CI/CD job.
$ rspec_section rspec_parallelized_job "--fail-fast=${RSPEC_FAIL_FAST_THRESHOLD} --tag ~quarantine --tag ~level:background_migration --tag ~click_house --tag ~real_ai_request"
section_start:1712782083:rspec[collapsed=false]
RSpec
[20:48:03] Starting rspec_parallelized_job
RETRY_FAILED_TESTS_IN_NEW_PROCESS: true
KNAPSACK_GENERATE_REPORT: true
FLAKY_RSPEC_GENERATE_REPORT: true
KNAPSACK_TEST_FILE_PATTERN: spec/{bin,channels,components,config,contracts,db,dependencies,elastic,elastic_integration,experiments,factories,finders,frontend,graphql,haml_lint,helpers,initializers,keeps,lib,metrics_server,models,policies,presenters,rack_servers,replicators,routing,rubocop,scripts,serializers,services,sidekiq,sidekiq_cluster,spam,support_specs,tasks,uploaders,validators,views,workers,tooling,dot_gitlab_ci}{,/**/}*_spec.rb
KNAPSACK_LOG_LEVEL: debug
KNAPSACK_REPORT_PATH: knapsack/rspec_unit_pg14_26_32_278964_report.json
FLAKY_RSPEC_SUITE_REPORT_PATH: rspec/flaky/report-suite.json
FLAKY_RSPEC_REPORT_PATH: rspec/flaky/all_rspec_unit_pg14_26_32_278964_report.json
NEW_FLAKY_RSPEC_REPORT_PATH: rspec/flaky/new_rspec_unit_pg14_26_32_278964_report.json
RSPEC_SKIPPED_TESTS_REPORT_PATH: rspec/skipped_tests-6597627953.txt
CRYSTALBALL: 
RSPEC_TESTS_MAPPING_ENABLED: 
RSPEC_TESTS_FILTER_FILE: 
Shell set options (set -o) enabled:
braceexpand    	on
hashall        	on
interactive-comments	on
pipefail       	on
Parsing expected rspec suite duration...
RSpec suite is expected to take 30 minutes 26.43 seconds.
Expected duration for tests:

{
  "spec/services/merge_requests/build_service_spec.rb": 235.24850867949667,
  "spec/models/container_repository_spec.rb": 177.95825375482482,
  "spec/services/ci/create_pipeline_service_spec.rb": 127.15180288765214,
  "spec/models/clusters/platforms/kubernetes_spec.rb": 86.32414017850778,
  "spec/lib/gitlab/database/lock_writes_manager_spec.rb": 71.98127006152725,
  "spec/lib/gitlab/background_migration/populate_projects_star_count_spec.rb": 62.296556530662755,
  "spec/lib/gitlab/background_migration/backfill_internal_on_notes_spec.rb": 55.065337643136814,
  "spec/services/projects/fork_service_spec.rb": 49.26151750469987,
  "spec/models/commit_spec.rb": 42.512855931277414,
  "spec/uploaders/object_storage_spec.rb": 40.18966887227256,
  "spec/models/namespace_setting_spec.rb": 34.56616914848925,
  "spec/services/issues/import_csv_service_spec.rb": 31.635796826544116,
  "spec/models/award_emoji_spec.rb": 27.171808357217202,
  "spec/services/files/multi_service_spec.rb": 26.390053609033416,
  "spec/serializers/issue_entity_spec.rb": 25.09034689069261,
  "spec/models/abuse_report_spec.rb": 22.748327399069474,
  "spec/lib/gitlab/background_migration/backfill_vs_code_settings_version_spec.rb": 22.055919856566767,
  "spec/finders/ci/pipelines_for_merge_request_finder_spec.rb": 19.76633056208293,
  "spec/services/snippets/create_service_spec.rb": 19.599561797924103,
  "spec/lib/gitlab/git_access_wiki_spec.rb": 17.878612122097103,
  "spec/lib/gitlab/ci/lint_spec.rb": 17.44521148543299,
  "spec/models/integrations/prometheus_spec.rb": 16.599456873808723,
  "spec/lib/banzai/filter/video_link_filter_spec.rb": 15.793274028543298,
  "spec/services/ci/stuck_builds/drop_running_service_spec.rb": 14.801803890719988,
  "spec/services/dependency_proxy/image_ttl_group_policies/update_service_spec.rb": 14.426435060548561,
  "spec/services/verify_pages_domain_service_spec.rb": 14.006636379053525,
  "spec/services/releases/update_service_spec.rb": 13.082071835285491,
  "spec/uploaders/ci/pipeline_artifact_uploader_spec.rb": 12.654199362969614,
  "spec/finders/merge_requests/oldest_per_commit_finder_spec.rb": 12.475071255218662,
  "spec/models/ci/namespace_mirror_spec.rb": 11.636784197544603,
  "spec/views/layouts/application.html.haml_spec.rb": 11.525973896614733,
  "spec/services/merge_requests/post_merge_service_spec.rb": 10.860777559764253,
  "spec/lib/banzai/pipeline/full_pipeline_spec.rb": 10.657119893946637,
  "spec/graphql/mutations/design_management/delete_spec.rb": 10.271114640378173,
  "spec/workers/prune_old_events_worker_spec.rb": 9.71803512856602,
  "spec/services/ci/play_manual_stage_service_spec.rb": 9.663754072606277,
  "spec/lib/gitlab/email/handler/unsubscribe_handler_spec.rb": 9.09234288357317,
  "spec/services/projects/import_export/prune_expired_export_jobs_service_spec.rb": 8.992158037798475,
  "spec/lib/gitlab/auth/saml/user_spec.rb": 8.601507420915151,
  "spec/graphql/types/issue_type_spec.rb": 8.277444930675964,
  "spec/services/merge_requests/resolved_discussion_notification_service_spec.rb": 8.102296131656416,
  "spec/lib/gitlab/ci/pipeline/expression/lexeme/not_equals_spec.rb": 7.847255773141258,
  "spec/lib/gitlab/slash_commands/issue_comment_spec.rb": 7.596204337262828,
  "spec/models/slack_integration_spec.rb": 7.332913475634372,
  "spec/models/ci/group_variable_spec.rb": 7.232826517423108,
  "spec/services/issues/reorder_service_spec.rb": 6.9574833576123165,
  "spec/tasks/gitlab/incoming_email_rake_spec.rb": 6.900018326459424,
  "spec/lib/gitlab/email/smime/signer_spec.rb": 6.6495386600033335,
  "spec/lib/gitlab/ci/templates/Verify/load_performance_testing_gitlab_ci_yaml_spec.rb": 6.55893497217071,
  "spec/lib/gitlab/ci/pipeline/chain/ensure_resource_groups_spec.rb": 6.247692102192982,
  "spec/models/ssh_host_key_spec.rb": 6.195461308230746,
  "spec/helpers/icons_helper_spec.rb": 5.908692505488792,
  "spec/lib/gitlab/cleanup/orphan_lfs_file_references_spec.rb": 5.898363488061518,
  "spec/lib/gitlab/ci/badge/release/latest_release_spec.rb": 5.573377723547916,
  "spec/helpers/namespaces_helper_spec.rb": 5.566644536071748,
  "spec/presenters/packages/conan/package_presenter_spec.rb": 5.374860734727311,
  "spec/lib/gitlab/ci/reports/test_suite_spec.rb": 5.241026859426951,
  "spec/lib/gitlab/slash_commands/presenters/issue_move_spec.rb": 5.1915821706135965,
  "spec/db/production/settings_spec.rb": 5.01328060808575,
  "spec/lib/gitlab/checks/push_check_spec.rb": 4.930736936393863,
  "spec/lib/gitlab/ci/config/entry/variables_spec.rb": 4.809506908163923,
  "spec/models/instance_configuration_spec.rb": 4.752583172219939,
  "spec/services/members/request_access_service_spec.rb": 4.51000029921481,
  "spec/lib/api/entities/project_import_status_spec.rb": 4.452253919597776,
  "spec/finders/autocomplete/group_users_finder_spec.rb": 4.404984698157097,
  "spec/services/packages/helm/process_file_service_spec.rb": 4.2782993529338516,
  "spec/lib/gitlab/changelog/committer_spec.rb": 4.251050953749807,
  "spec/models/deployment_merge_request_spec.rb": 4.1140715180937075,
  "spec/lib/gitlab/background_migration/batching_strategies/base_strategy_spec.rb": 4.0929672567415105,
  "spec/lib/gitlab/ci/config/external/file/local_spec.rb": 3.9488191273284357,
  "spec/lib/gitlab/usage/metrics/instrumentations/unique_users_all_imports_metric_spec.rb": 3.916395556716304,
  "spec/graphql/resolvers/project_pipeline_resolver_spec.rb": 3.7887541259725843,
  "spec/models/users_statistics_spec.rb": 3.7686179715623953,
  "spec/graphql/resolvers/project_pipeline_statistics_resolver_spec.rb": 3.6642492050581414,
  "spec/serializers/diff_viewer_entity_spec.rb": 3.6301402114800254,
  "spec/finders/groups/user_groups_finder_spec.rb": 3.596637196453715,
  "spec/lib/gitlab/background_migration/backup_and_remove_notes_with_null_noteable_type_spec.rb": 3.4623993324739457,
  "spec/lib/gitlab/background_migration/backfill_users_color_mode_id_spec.rb": 3.4346856529345318,
  "spec/lib/gitlab/analytics/cycle_analytics/stage_events/merge_request_first_deployed_to_production_spec.rb": 3.359295623622811,
  "spec/lib/gitlab/git/patches/commit_patches_spec.rb": 3.3273264511845664,
  "spec/lib/gitlab/security/scan_configuration_spec.rb": 3.2797983719266544,
  "spec/services/ci/job_artifacts/track_artifact_report_service_spec.rb": 3.2060668202889615,
  "spec/lib/gitlab/graphs/commits_spec.rb": 3.152710914761349,
  "spec/graphql/resolvers/ci/catalog/resources_resolver_spec.rb": 3.0920843240327964,
  "spec/lib/gitlab/event_store/store_spec.rb": 3.066201866677571,
  "spec/workers/gitlab/bitbucket_import/stage/import_pull_requests_worker_spec.rb": 2.964335528005307,
  "spec/lib/gitlab/asciidoc/include_processor_spec.rb": 2.948815491248982,
  "spec/lib/atlassian/jira_connect/serializers/pull_request_entity_spec.rb": 2.8814481524541495,
  "spec/services/merge_requests/pushed_branches_service_spec.rb": 2.8615448865570174,
  "spec/lib/gitlab/hotlinking_detector_spec.rb": 2.8001930241298325,
  "spec/lib/gitlab/pagination/keyset/simple_order_builder_spec.rb": 2.7673635699693264,
  "spec/services/users/upsert_credit_card_validation_service_spec.rb": 2.7116415629281665,
  "spec/lib/gitlab/regex/packages/protection/rules_spec.rb": 2.6651312540678704,
  "spec/serializers/feature_flag_serializer_spec.rb": 2.5950209276188647,
  "spec/lib/gitlab/metrics/prometheus_spec.rb": 2.592514867829506,
  "spec/lib/gitlab/cleanup/remote_uploads_spec.rb": 2.532891803756911,
  "spec/lib/gitlab/ci/config/entry/product/parallel_spec.rb": 2.5049380040074323,
  "spec/finders/projects/topics_finder_spec.rb": 2.448501282542312,
  "spec/initializers/rest-client-hostname_override_spec.rb": 2.4042666035036238,
  "spec/workers/gitlab/bitbucket_import/stage/finish_import_worker_spec.rb": 2.363113697777437,
  "spec/lib/bulk_imports/common/graphql/get_members_query_spec.rb": 2.3307352678208124,
  "spec/services/authorized_project_update/periodic_recalculate_service_spec.rb": 2.295214256944484,
  "spec/models/packages/debian/group_distribution_key_spec.rb": 2.269766430729569,
  "spec/workers/authorized_project_update/project_recalculate_per_user_worker_spec.rb": 2.22436509188806,
  "spec/workers/delete_merged_branches_worker_spec.rb": 2.197750873638449,
  "spec/lib/gitlab/wiki_pages/front_matter_parser_spec.rb": 2.153447451981871,
  "spec/lib/gitlab/code_navigation_path_spec.rb": 2.1120332852061,
  "spec/helpers/projects/ml/experiments_helper_spec.rb": 2.0808077941228436,
  "spec/finders/packages/helm/packages_finder_spec.rb": 2.0325416838615116,
  "spec/lib/gitlab/auth/external_username_sanitizer_spec.rb": 2.0219021513241118,
  "spec/workers/releases/create_evidence_worker_spec.rb": 1.9686088282084144,
  "spec/workers/ml/experiment_tracking/associate_ml_candidate_to_package_worker_spec.rb": 1.9653494681139758,
  "spec/services/keys/expiry_notification_service_spec.rb": 1.9176570878140637,
  "spec/serializers/user_serializer_spec.rb": 1.9105205581519817,
  "spec/serializers/issue_board_entity_spec.rb": 1.8724650278812378,
  "spec/lib/gitlab/composer/version_index_spec.rb": 1.8632351206112991,
  "spec/services/branches/diverging_commit_counts_service_spec.rb": 1.8181557880255883,
  "spec/graphql/resolvers/paginated_tree_resolver_spec.rb": 1.8096106904805196,
  "spec/lib/initializer_connections_spec.rb": 1.7634002531216753,
  "spec/lib/gitlab/ci/templates/kaniko_gitlab_ci_yaml_spec.rb": 1.7560076724229323,
  "spec/lib/gitlab/email/service_desk_receiver_spec.rb": 1.72230762915345,
  "spec/lib/bulk_imports/groups/pipelines/namespace_settings_pipeline_spec.rb": 1.7022942838148138,
  "spec/graphql/resolvers/ci/runner_jobs_resolver_spec.rb": 1.6823927989136822,
  "spec/lib/bulk_imports/projects/pipelines/pipeline_schedules_pipeline_spec.rb": 1.6652870114292593,
  "spec/helpers/projects/terraform_helper_spec.rb": 1.6436364818190812,
  "spec/lib/gitlab/github_import/importer/lfs_objects_importer_spec.rb": 1.6110595168099153,
  "spec/helpers/hooks_helper_spec.rb": 1.578928285579385,
  "spec/services/users/activate_service_spec.rb": 1.5756843020421427,
  "spec/services/timelogs/delete_service_spec.rb": 1.5320385330898452,
  "spec/lib/gitlab/ci/config/entry/inherit/default_spec.rb": 1.5312555483351444,
  "spec/lib/gitlab/etag_caching/store_spec.rb": 1.4843614664707665,
  "spec/support_specs/database/multiple_databases_helpers_spec.rb": 1.4815083836861342,
  "spec/views/search/show.html.haml_spec.rb": 1.4367350974144368,
  "spec/services/work_items/callbacks/notes_spec.rb": 1.423821426472508,
  "spec/lib/gitlab/database/migration_helpers/swapping_spec.rb": 1.403596912341858,
  "spec/services/projects/all_merge_requests_count_service_spec.rb": 1.3765089164131445,
  "spec/graphql/mutations/custom_emoji/create_spec.rb": 1.3583773677261302,
  "spec/workers/deployments/archive_in_project_worker_spec.rb": 1.3339097956649812,
  "spec/services/reset_project_cache_service_spec.rb": 1.3181355891956152,
  "spec/lib/gitlab/github_import/settings_spec.rb": 1.3029601095693741,
  "spec/models/push_event_payload_spec.rb": 1.2744004511178482,
  "spec/models/user_agent_detail_spec.rb": 1.2478601464303427,
  "spec/workers/stuck_ci_jobs_worker_spec.rb": 1.2321758146079453,
  "spec/rubocop/cop/graphql/enum_values_spec.rb": 1.1956456139680487,
  "spec/lib/sidebars/admin/menus/applications_menu_spec.rb": 1.1887390107104658,
  "spec/lib/gitlab/instrumentation/exclusive_lock_spec.rb": 1.1554275661905988,
  "spec/lib/gitlab/bitbucket_import/importers/pull_requests_notes_importer_spec.rb": 1.1463021911541404,
  "spec/lib/gitlab/seeders/ci/variables_instance_seeder_spec.rb": 1.114095769808135,
  "spec/lib/api/helpers/related_resources_helpers_spec.rb": 1.1134811381646497,
  "spec/lib/gitlab/usage/metrics/instrumentations/group_imports_users_metric_spec.rb": 1.0854168985606907,
  "spec/lib/api/entities/ml/mlflow/get_run_spec.rb": 1.073482347482696,
  "spec/lib/sidebars/admin/menus/analytics_menu_spec.rb": 1.0488154800028089,
  "spec/lib/gitlab/utils/link_header_parser_spec.rb": 1.037898441022676,
  "spec/views/shared/projects/_inactive_project_deletion_alert.html.haml_spec.rb": 1.0087295974553396,
  "spec/workers/gitlab/bitbucket_server_import/stage/import_lfs_objects_worker_spec.rb": 1.0032137900003864,
  "spec/lib/gitlab/dependency_linker/podspec_json_linker_spec.rb": 0.9786721317911554,
  "spec/lib/gitlab/throttle_spec.rb": 0.9749688742766304,
  "spec/policies/packages/package_policy_spec.rb": 0.95346554981444,
  "spec/lib/gitlab/ci/config/entry/kubernetes_spec.rb": 0.9466722640695984,
  "spec/lib/gitlab/graphql/limit/field_call_count_spec.rb": 0.9272135815850007,
  "spec/lib/gitlab/ci/templates/Terraform/module_base_gitlab_ci_yaml_spec.rb": 0.9262535517908307,
  "spec/lib/gitlab/cache/metrics_spec.rb": 0.9076564332012247,
  "spec/initializers/fog_google_https_private_urls_spec.rb": 0.8992410953158101,
  "spec/services/saved_replies/update_service_spec.rb": 0.8787606868865989,
  "spec/lib/gitlab/sql/cte_spec.rb": 0.8707039194968018,
  "spec/services/ci/runners/update_runner_service_spec.rb": 0.8522743342933667,
  "spec/lib/gitlab/alert_management/payload_spec.rb": 0.8427533920190482,
  "spec/rubocop/cop/default_scope_spec.rb": 0.8292797478864105,
  "spec/finders/vs_code/settings/settings_finder_spec.rb": 0.8200094624610046,
  "spec/lib/gitlab/middleware/basic_health_check_spec.rb": 0.8063049027342293,
  "spec/lib/prometheus/pid_provider_spec.rb": 0.7985284825352943,
  "spec/lib/gitlab/github_gists_import/status_spec.rb": 0.7772387872664221,
  "spec/validators/namespace_path_validator_spec.rb": 0.7601641037498821,
  "spec/lib/error_tracking/sentry_client_spec.rb": 0.7584799018905243,
  "spec/rubocop/cop/background_migration/feature_category_spec.rb": 0.7391109423173672,
  "spec/lib/gitlab/config/entry/simplifiable_spec.rb": 0.7246061439218328,
  "spec/lib/gitlab/git/changed_path_spec.rb": 0.7129642014473238,
  "spec/serializers/group_link/group_link_entity_spec.rb": 0.709910643132607,
  "spec/lib/api/entities/clusters/agent_spec.rb": 0.6916869323924997,
  "spec/graphql/types/time_type_spec.rb": 0.6876957386299827,
  "spec/lib/gitlab/pagination/keyset/cursor_based_request_context_spec.rb": 0.667608321312145,
  "spec/rubocop/cop/migration/background_migration_record_spec.rb": 0.6646945006095688,
  "spec/lib/gitlab/ci/status/build/canceling_spec.rb": 0.642400180503195,
  "spec/graphql/types/achievements/achievement_type_spec.rb": 0.6408653206687218,
  "spec/serializers/impersonation_access_token_serializer_spec.rb": 0.6183367852493824,
  "spec/workers/batched_git_ref_updates/project_cleanup_worker_spec.rb": 0.617702474144108,
  "spec/support_specs/matchers/exceed_redis_call_limit_spec.rb": 0.6030753058568101,
  "spec/lib/gitlab/database/migrations/observers/query_statistics_spec.rb": 0.5996452409407235,
  "spec/lib/gitlab/process_memory_cache/helper_spec.rb": 0.5810745498700729,
  "spec/helpers/ci/triggers_helper_spec.rb": 0.5739403442417823,
  "spec/lib/bulk_imports/clients/graphql_spec.rb": 0.5591021994626255,
  "spec/models/discussion_note_spec.rb": 0.5475348178503492,
  "spec/helpers/tracking_helper_spec.rb": 0.5381221936537773,
  "spec/lib/gitlab/sidekiq_middleware/extra_done_log_metadata_spec.rb": 0.5299325961015078,
  "spec/lib/gitlab/ci/reports/codequality_mr_diff_spec.rb": 0.5156830904591323,
  "spec/lib/gitlab/external_authorization/logger_spec.rb": 0.5127284705862287,
  "spec/rubocop/cop/qa/fabricate_usage_spec.rb": 0.502295641705328,
  "spec/lib/gitlab/ci/config/interpolation/functions_stack_spec.rb": 0.4977642371491033,
  "spec/lib/gitlab/ci/project_config/source_spec.rb": 0.4882252605596622,
  "spec/graphql/types/alert_management/integration_type_enum_spec.rb": 0.48042388329877855,
  "spec/lib/api/validations/validators/git_ref_spec.rb": 0.46224620622752277,
  "spec/serializers/codequality_reports_comparer_serializer_spec.rb": 0.4554597526786043,
  "spec/graphql/types/issue_status_count_type_spec.rb": 0.44450826224520207,
  "spec/rubocop/cop/migration/refer_to_index_by_name_spec.rb": 0.44133252726974015,
  "spec/graphql/types/error_tracking/sentry_error_type_spec.rb": 0.4312286648268723,
  "spec/graphql/types/work_items/widgets/current_user_todos_input_type_spec.rb": 0.43111853736371986,
  "spec/lib/gitlab/grape_logging/formatters/lograge_with_timestamp_spec.rb": 0.42194661515041787,
  "spec/graphql/types/metadata/kas_type_spec.rb": 0.42170433394510265,
  "spec/lib/api/entities/ci/job_artifact_file_spec.rb": 0.41705413767069854,
  "spec/components/projects/ml/show_ml_model_component_spec.rb": 0.41112658817628184,
  "spec/graphql/types/jira_user_type_spec.rb": 0.4098806764396199,
  "spec/lib/gitlab/graphql/timeout_spec.rb": 0.4071757319501354,
  "spec/lib/gitlab/graphql/loaders/lazy_relation_loader/registry_spec.rb": 0.39762080602529737,
  "spec/lib/gitlab/diff/inline_diff_marker_spec.rb": 0.39605041591925616,
  "spec/workers/database/partition_management_worker_spec.rb": 0.379550202775113,
  "spec/graphql/types/projects/topic_type_spec.rb": 0.37805328484733575,
  "spec/lib/gitlab/memory/watchdog/handlers/puma_handler_spec.rb": 0.34505293370825285,
  "spec/lib/peek/views/active_record_spec.rb": 0.3365061248757444,
  "spec/workers/trending_projects_worker_spec.rb": 0.3350025664539499,
  "spec/lib/gitlab/ci/reports/sbom/reports_spec.rb": 0.32725916377057335,
  "spec/workers/gitlab/github_import/pull_requests/import_review_request_worker_spec.rb": 0.3244840297098849,
  "spec/graphql/types/countable_connection_type_spec.rb": 0.31854017225278586,
  "spec/lib/gitlab/log_timestamp_formatter_spec.rb": 0.3175583077979385,
  "spec/serializers/integrations/project_serializer_spec.rb": 0.30984329487753687,
  "spec/serializers/rollout_statuses/ingress_entity_spec.rb": 0.30404782397601493
}

Running command: bundle exec rspec -Ispec -rspec_helper --color --failure-exit-code 1 --error-exit-code 2 --format documentation --format Support::Formatters::JsonFormatter --out rspec/rspec-6597627953.json --format RspecJunitFormatter --out rspec/rspec-6597627953.xml --fail-fast=20 --tag ~quarantine --tag ~level:background_migration --tag ~click_house --tag ~real_ai_request -- spec/services/merge_requests/build_service_spec.rb spec/models/container_repository_spec.rb spec/services/ci/create_pipeline_service_spec.rb spec/models/clusters/platforms/kubernetes_spec.rb spec/lib/gitlab/database/lock_writes_manager_spec.rb spec/lib/gitlab/background_migration/populate_projects_star_count_spec.rb spec/lib/gitlab/background_migration/backfill_internal_on_notes_spec.rb spec/services/projects/fork_service_spec.rb spec/models/commit_spec.rb spec/uploaders/object_storage_spec.rb spec/models/namespace_setting_spec.rb spec/services/issues/import_csv_service_spec.rb spec/models/award_emoji_spec.rb spec/services/files/multi_service_spec.rb spec/serializers/issue_entity_spec.rb spec/models/abuse_report_spec.rb spec/lib/gitlab/background_migration/backfill_vs_code_settings_version_spec.rb spec/finders/ci/pipelines_for_merge_request_finder_spec.rb spec/services/snippets/create_service_spec.rb spec/lib/gitlab/git_access_wiki_spec.rb spec/lib/gitlab/ci/lint_spec.rb spec/models/integrations/prometheus_spec.rb spec/lib/banzai/filter/video_link_filter_spec.rb spec/services/ci/stuck_builds/drop_running_service_spec.rb spec/services/dependency_proxy/image_ttl_group_policies/update_service_spec.rb spec/services/verify_pages_domain_service_spec.rb spec/services/releases/update_service_spec.rb spec/uploaders/ci/pipeline_artifact_uploader_spec.rb spec/finders/merge_requests/oldest_per_commit_finder_spec.rb spec/models/ci/namespace_mirror_spec.rb spec/views/layouts/application.html.haml_spec.rb spec/services/merge_requests/post_merge_service_spec.rb spec/lib/banzai/pipeline/full_pipeline_spec.rb spec/graphql/mutations/design_management/delete_spec.rb spec/workers/prune_old_events_worker_spec.rb spec/services/ci/play_manual_stage_service_spec.rb spec/lib/gitlab/email/handler/unsubscribe_handler_spec.rb spec/services/projects/import_export/prune_expired_export_jobs_service_spec.rb spec/lib/gitlab/auth/saml/user_spec.rb spec/graphql/types/issue_type_spec.rb spec/services/merge_requests/resolved_discussion_notification_service_spec.rb spec/lib/gitlab/ci/pipeline/expression/lexeme/not_equals_spec.rb spec/lib/gitlab/slash_commands/issue_comment_spec.rb spec/models/slack_integration_spec.rb spec/models/ci/group_variable_spec.rb spec/services/issues/reorder_service_spec.rb spec/tasks/gitlab/incoming_email_rake_spec.rb spec/lib/gitlab/email/smime/signer_spec.rb spec/lib/gitlab/ci/templates/Verify/load_performance_testing_gitlab_ci_yaml_spec.rb spec/lib/gitlab/ci/pipeline/chain/ensure_resource_groups_spec.rb spec/models/ssh_host_key_spec.rb spec/helpers/icons_helper_spec.rb spec/lib/gitlab/cleanup/orphan_lfs_file_references_spec.rb spec/lib/gitlab/ci/badge/release/latest_release_spec.rb spec/helpers/namespaces_helper_spec.rb spec/presenters/packages/conan/package_presenter_spec.rb spec/lib/gitlab/ci/reports/test_suite_spec.rb spec/lib/gitlab/slash_commands/presenters/issue_move_spec.rb spec/db/production/settings_spec.rb spec/lib/gitlab/checks/push_check_spec.rb spec/lib/gitlab/ci/config/entry/variables_spec.rb spec/models/instance_configuration_spec.rb spec/services/members/request_access_service_spec.rb spec/lib/api/entities/project_import_status_spec.rb spec/finders/autocomplete/group_users_finder_spec.rb spec/services/packages/helm/process_file_service_spec.rb spec/lib/gitlab/changelog/committer_spec.rb spec/models/deployment_merge_request_spec.rb spec/lib/gitlab/background_migration/batching_strategies/base_strategy_spec.rb spec/lib/gitlab/ci/config/external/file/local_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/unique_users_all_imports_metric_spec.rb spec/graphql/resolvers/project_pipeline_resolver_spec.rb spec/models/users_statistics_spec.rb spec/graphql/resolvers/project_pipeline_statistics_resolver_spec.rb spec/serializers/diff_viewer_entity_spec.rb spec/finders/groups/user_groups_finder_spec.rb spec/lib/gitlab/background_migration/backup_and_remove_notes_with_null_noteable_type_spec.rb spec/lib/gitlab/background_migration/backfill_users_color_mode_id_spec.rb spec/lib/gitlab/analytics/cycle_analytics/stage_events/merge_request_first_deployed_to_production_spec.rb spec/lib/gitlab/git/patches/commit_patches_spec.rb spec/lib/gitlab/security/scan_configuration_spec.rb spec/services/ci/job_artifacts/track_artifact_report_service_spec.rb spec/lib/gitlab/graphs/commits_spec.rb spec/graphql/resolvers/ci/catalog/resources_resolver_spec.rb spec/lib/gitlab/event_store/store_spec.rb spec/workers/gitlab/bitbucket_import/stage/import_pull_requests_worker_spec.rb spec/lib/gitlab/asciidoc/include_processor_spec.rb spec/lib/atlassian/jira_connect/serializers/pull_request_entity_spec.rb spec/services/merge_requests/pushed_branches_service_spec.rb spec/lib/gitlab/hotlinking_detector_spec.rb spec/lib/gitlab/pagination/keyset/simple_order_builder_spec.rb spec/services/users/upsert_credit_card_validation_service_spec.rb spec/lib/gitlab/regex/packages/protection/rules_spec.rb spec/serializers/feature_flag_serializer_spec.rb spec/lib/gitlab/metrics/prometheus_spec.rb spec/lib/gitlab/cleanup/remote_uploads_spec.rb spec/lib/gitlab/ci/config/entry/product/parallel_spec.rb spec/finders/projects/topics_finder_spec.rb spec/initializers/rest-client-hostname_override_spec.rb spec/workers/gitlab/bitbucket_import/stage/finish_import_worker_spec.rb spec/lib/bulk_imports/common/graphql/get_members_query_spec.rb spec/services/authorized_project_update/periodic_recalculate_service_spec.rb spec/models/packages/debian/group_distribution_key_spec.rb spec/workers/authorized_project_update/project_recalculate_per_user_worker_spec.rb spec/workers/delete_merged_branches_worker_spec.rb spec/lib/gitlab/wiki_pages/front_matter_parser_spec.rb spec/lib/gitlab/code_navigation_path_spec.rb spec/helpers/projects/ml/experiments_helper_spec.rb spec/finders/packages/helm/packages_finder_spec.rb spec/lib/gitlab/auth/external_username_sanitizer_spec.rb spec/workers/releases/create_evidence_worker_spec.rb spec/workers/ml/experiment_tracking/associate_ml_candidate_to_package_worker_spec.rb spec/services/keys/expiry_notification_service_spec.rb spec/serializers/user_serializer_spec.rb spec/serializers/issue_board_entity_spec.rb spec/lib/gitlab/composer/version_index_spec.rb spec/services/branches/diverging_commit_counts_service_spec.rb spec/graphql/resolvers/paginated_tree_resolver_spec.rb spec/lib/initializer_connections_spec.rb spec/lib/gitlab/ci/templates/kaniko_gitlab_ci_yaml_spec.rb spec/lib/gitlab/email/service_desk_receiver_spec.rb spec/lib/bulk_imports/groups/pipelines/namespace_settings_pipeline_spec.rb spec/graphql/resolvers/ci/runner_jobs_resolver_spec.rb spec/lib/bulk_imports/projects/pipelines/pipeline_schedules_pipeline_spec.rb spec/helpers/projects/terraform_helper_spec.rb spec/lib/gitlab/github_import/importer/lfs_objects_importer_spec.rb spec/helpers/hooks_helper_spec.rb spec/services/users/activate_service_spec.rb spec/services/timelogs/delete_service_spec.rb spec/lib/gitlab/ci/config/entry/inherit/default_spec.rb spec/lib/gitlab/etag_caching/store_spec.rb spec/support_specs/database/multiple_databases_helpers_spec.rb spec/views/search/show.html.haml_spec.rb spec/services/work_items/callbacks/notes_spec.rb spec/lib/gitlab/database/migration_helpers/swapping_spec.rb spec/services/projects/all_merge_requests_count_service_spec.rb spec/graphql/mutations/custom_emoji/create_spec.rb spec/workers/deployments/archive_in_project_worker_spec.rb spec/services/reset_project_cache_service_spec.rb spec/lib/gitlab/github_import/settings_spec.rb spec/models/push_event_payload_spec.rb spec/models/user_agent_detail_spec.rb spec/workers/stuck_ci_jobs_worker_spec.rb spec/rubocop/cop/graphql/enum_values_spec.rb spec/lib/sidebars/admin/menus/applications_menu_spec.rb spec/lib/gitlab/instrumentation/exclusive_lock_spec.rb spec/lib/gitlab/bitbucket_import/importers/pull_requests_notes_importer_spec.rb spec/lib/gitlab/seeders/ci/variables_instance_seeder_spec.rb spec/lib/api/helpers/related_resources_helpers_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/group_imports_users_metric_spec.rb spec/lib/api/entities/ml/mlflow/get_run_spec.rb spec/lib/sidebars/admin/menus/analytics_menu_spec.rb spec/lib/gitlab/utils/link_header_parser_spec.rb spec/views/shared/projects/_inactive_project_deletion_alert.html.haml_spec.rb spec/workers/gitlab/bitbucket_server_import/stage/import_lfs_objects_worker_spec.rb spec/lib/gitlab/dependency_linker/podspec_json_linker_spec.rb spec/lib/gitlab/throttle_spec.rb spec/policies/packages/package_policy_spec.rb spec/lib/gitlab/ci/config/entry/kubernetes_spec.rb spec/lib/gitlab/graphql/limit/field_call_count_spec.rb spec/lib/gitlab/ci/templates/Terraform/module_base_gitlab_ci_yaml_spec.rb spec/lib/gitlab/cache/metrics_spec.rb spec/initializers/fog_google_https_private_urls_spec.rb spec/services/saved_replies/update_service_spec.rb spec/lib/gitlab/sql/cte_spec.rb spec/services/ci/runners/update_runner_service_spec.rb spec/lib/gitlab/alert_management/payload_spec.rb spec/rubocop/cop/default_scope_spec.rb spec/finders/vs_code/settings/settings_finder_spec.rb spec/lib/gitlab/middleware/basic_health_check_spec.rb spec/lib/prometheus/pid_provider_spec.rb spec/lib/gitlab/github_gists_import/status_spec.rb spec/validators/namespace_path_validator_spec.rb spec/lib/error_tracking/sentry_client_spec.rb spec/rubocop/cop/background_migration/feature_category_spec.rb spec/lib/gitlab/config/entry/simplifiable_spec.rb spec/lib/gitlab/git/changed_path_spec.rb spec/serializers/group_link/group_link_entity_spec.rb spec/lib/api/entities/clusters/agent_spec.rb spec/graphql/types/time_type_spec.rb spec/lib/gitlab/pagination/keyset/cursor_based_request_context_spec.rb spec/rubocop/cop/migration/background_migration_record_spec.rb spec/lib/gitlab/ci/status/build/canceling_spec.rb spec/graphql/types/achievements/achievement_type_spec.rb spec/serializers/impersonation_access_token_serializer_spec.rb spec/workers/batched_git_ref_updates/project_cleanup_worker_spec.rb spec/support_specs/matchers/exceed_redis_call_limit_spec.rb spec/lib/gitlab/database/migrations/observers/query_statistics_spec.rb spec/lib/gitlab/process_memory_cache/helper_spec.rb spec/helpers/ci/triggers_helper_spec.rb spec/lib/bulk_imports/clients/graphql_spec.rb spec/models/discussion_note_spec.rb spec/helpers/tracking_helper_spec.rb spec/lib/gitlab/sidekiq_middleware/extra_done_log_metadata_spec.rb spec/lib/gitlab/ci/reports/codequality_mr_diff_spec.rb spec/lib/gitlab/external_authorization/logger_spec.rb spec/rubocop/cop/qa/fabricate_usage_spec.rb spec/lib/gitlab/ci/config/interpolation/functions_stack_spec.rb spec/lib/gitlab/ci/project_config/source_spec.rb spec/graphql/types/alert_management/integration_type_enum_spec.rb spec/lib/api/validations/validators/git_ref_spec.rb spec/serializers/codequality_reports_comparer_serializer_spec.rb spec/graphql/types/issue_status_count_type_spec.rb spec/rubocop/cop/migration/refer_to_index_by_name_spec.rb spec/graphql/types/error_tracking/sentry_error_type_spec.rb spec/graphql/types/work_items/widgets/current_user_todos_input_type_spec.rb spec/lib/gitlab/grape_logging/formatters/lograge_with_timestamp_spec.rb spec/graphql/types/metadata/kas_type_spec.rb spec/lib/api/entities/ci/job_artifact_file_spec.rb spec/components/projects/ml/show_ml_model_component_spec.rb spec/graphql/types/jira_user_type_spec.rb spec/lib/gitlab/graphql/timeout_spec.rb spec/lib/gitlab/graphql/loaders/lazy_relation_loader/registry_spec.rb spec/lib/gitlab/diff/inline_diff_marker_spec.rb spec/workers/database/partition_management_worker_spec.rb spec/graphql/types/projects/topic_type_spec.rb spec/lib/gitlab/memory/watchdog/handlers/puma_handler_spec.rb spec/lib/peek/views/active_record_spec.rb spec/workers/trending_projects_worker_spec.rb spec/lib/gitlab/ci/reports/sbom/reports_spec.rb spec/workers/gitlab/github_import/pull_requests/import_review_request_worker_spec.rb spec/graphql/types/countable_connection_type_spec.rb spec/lib/gitlab/log_timestamp_formatter_spec.rb spec/serializers/integrations/project_serializer_spec.rb spec/serializers/rollout_statuses/ingress_entity_spec.rbKnapsack report generator started!
WARNING: `around(:context)` hooks are not supported and behave like `around(:example). Called from /builds/gitlab-org/gitlab/spec/lib/gitlab/ci/config/external/file/local_spec.rb:221:in `block (3 levels) in <top (required)>'.
Run options: exclude {:quarantine=>true, :level=>"background_migration", :click_house=>true, :real_ai_request=>true}

# [RSpecRunTime] Starting RSpec timer...
[TEST PROF INFO] EventProf enabled (sql.active_record)
unknown OID 2249: failed to recognize type of 'pg_stat_file'. It will be treated as String.
unknown OID 2249: failed to recognize type of 'pg_stat_file'. It will be treated as String.

Test environment set up in 1.343070973 seconds
# [RSpecRunTime] Starting example group spec/services/merge_requests/build_service_spec.rb. Expected to take 3 minutes 55.25 seconds.

MergeRequests::BuildService
  #execute
    calls the compare service with the correct arguments
    does not assign force_remove_source_branch
    with force_remove_source_branch parameter when the user is authorized
      assigns force_remove_source_branch
      with project setting remove_source_branch_after_merge false
        assigns force_remove_source_branch
    with project setting remove_source_branch_after_merge true
      assigns force_remove_source_branch
      with force_remove_source_branch parameter false
        does not assign force_remove_source_branch
# [RSpecRunTime] RSpec elapsed time: 13.9 seconds. Current RSS: ~1480M. load average: 1.07 1.25 1.62 1/293 472


    missing source branch
      behaves like forbids the merge request from being created
        returns that the merge request cannot be created
        adds an error message to the merge request
# [RSpecRunTime] RSpec elapsed time: 16.15 seconds. Current RSS: ~1508M. load average: 1.07 1.25 1.62 1/294 498


    when target branch is missing
      when source branch
        is not the repository default branch
          creates compare object with target branch as default branch
          behaves like allows the merge request to be created
            is expected to eq true
# [RSpecRunTime] RSpec elapsed time: 18.51 seconds. Current RSS: ~1538M. load average: 1.06 1.25 1.62 1/294 525


        the repository default branch
          behaves like forbids the merge request from being created
            returns that the merge request cannot be created
            adds an error message to the merge request
# [RSpecRunTime] RSpec elapsed time: 20.78 seconds. Current RSS: ~1545M. load average: 1.06 1.25 1.62 1/294 546


          when source project is different from the target project
            creates compare object with target branch as default branch
            behaves like allows the merge request to be created
              is expected to eq true
# [RSpecRunTime] RSpec elapsed time: 25.89 seconds. Current RSS: ~1590M. load average: 1.06 1.24 1.61 1/294 594


    same source and target branch
      behaves like forbids the merge request from being created
        returns that the merge request cannot be created
        adds an error message to the merge request
# [RSpecRunTime] RSpec elapsed time: 28.25 seconds. Current RSS: ~1601M. load average: 1.05 1.24 1.61 1/294 623


    no commits in the diff
      adds a Draft prefix to the merge request title
      behaves like allows the merge request to be created
        is expected to eq true
# [RSpecRunTime] RSpec elapsed time: 30.65 seconds. Current RSS: ~1601M. load average: 1.05 1.24 1.61 1/294 650


    one commit in the diff
      uses the title of the commit as the title of the merge request
      uses the description of the commit as the description of the merge request
      behaves like allows the merge request to be created
        is expected to eq true
# [RSpecRunTime] RSpec elapsed time: 34.36 seconds. Current RSS: ~1590M. load average: 1.05 1.23 1.60 1/294 690


      behaves like with a Default.md template
        the template description is preferred
# [RSpecRunTime] RSpec elapsed time: 35.72 seconds. Current RSS: ~1585M. load average: 1.05 1.23 1.60 1/294 724


      merge request already has a description set
        keeps the description from the initial params
# [RSpecRunTime] RSpec elapsed time: 36.93 seconds. Current RSS: ~1585M. load average: 1.28 1.28 1.62 1/295 736


      commit has no description
        uses the title of the commit as the title of the merge request
        sets the description to nil
        behaves like with a Default.md template
          the template description is preferred
# [RSpecRunTime] RSpec elapsed time: 40.53 seconds. Current RSS: ~1577M. load average: 1.28 1.28 1.62 1/295 796


      when the source branch matches an issue
        factory: :jira_integration, source_branch: "FOO-123-fix-issue", closing_message: "Closes FOO-123"
          uses the title of the commit as the title of the merge request
          appends the closing description
          a Default.md template is defined
            appends the closing description to a Default.md template
# [RSpecRunTime] RSpec elapsed time: 44.44 seconds. Current RSS: ~1586M. load average: 1.26 1.28 1.61 1/295 856


        factory: :jira_integration, source_branch: "fix-issue", closing_message: nil
          uses the title of the commit as the title of the merge request
          appends the closing description
          a Default.md template is defined
            appends the closing description to a Default.md template
# [RSpecRunTime] RSpec elapsed time: 48.42 seconds. Current RSS: ~1588M. load average: 1.24 1.27 1.61 1/295 916


        factory: :custom_issue_tracker_integration, source_branch: "123-fix-issue", closing_message: "Closes #123"
          uses the title of the commit as the title of the merge request
          appends the closing description
          a Default.md template is defined
            appends the closing description to a Default.md template
# [RSpecRunTime] RSpec elapsed time: 52.94 seconds. Current RSS: ~1584M. load average: 1.22 1.27 1.61 1/295 976


        factory: :custom_issue_tracker_integration, source_branch: "fix-issue", closing_message: nil
          uses the title of the commit as the title of the merge request
          appends the closing description
          a Default.md template is defined
            appends the closing description to a Default.md template
# [RSpecRunTime] RSpec elapsed time: 57.57 seconds. Current RSS: ~1600M. load average: 1.20 1.26 1.60 1/295 1036


        factory: nil, source_branch: "123-fix-issue", closing_message: "Closes #123"
          uses the title of the commit as the title of the merge request
          appends the closing description
          a Default.md template is defined
            appends the closing description to a Default.md template
# [RSpecRunTime] RSpec elapsed time: 1 minute 2.03 seconds. Current RSS: ~1572M. load average: 1.19 1.26 1.60 1/295 1096


        factory: nil, source_branch: "fix-issue", closing_message: nil
          uses the title of the commit as the title of the merge request
          appends the closing description
          a Default.md template is defined
            appends the closing description to a Default.md template
# [RSpecRunTime] RSpec elapsed time: 1 minute 5.91 seconds. Current RSS: ~1568M. load average: 1.19 1.26 1.60 1/295 1156


        when the source branch matches an internal issue
          assigns the issue label and milestone
          when milestone_id and label_ids are shared in the params
            assigns milestone_id and label_ids instead of issue labels and milestone
# [RSpecRunTime] RSpec elapsed time: 1 minute 8.83 seconds. Current RSS: ~1578M. load average: 1.17 1.25 1.60 1/295 1183


        when a milestone is from another project
          sets milestone to nil
# [RSpecRunTime] RSpec elapsed time: 1 minute 10.41 seconds. Current RSS: ~1579M. load average: 1.17 1.25 1.60 1/295 1197


    no multi-line commit messages in the diff
      uses the title of the branch as the merge request title
      does not add a description
      behaves like allows the merge request to be created
        is expected to eq true
# [RSpecRunTime] RSpec elapsed time: 1 minute 14.04 seconds. Current RSS: ~1567M. load average: 1.16 1.25 1.59 1/295 1243


      behaves like with a Default.md template
        the template description is preferred
# [RSpecRunTime] RSpec elapsed time: 1 minute 15.26 seconds. Current RSS: ~1559M. load average: 1.16 1.25 1.59 1/295 1279


      merge request already has a description set
        keeps the description from the initial params
        a Default.md template is defined
          keeps the description from the initial params
# [RSpecRunTime] RSpec elapsed time: 1 minute 17.63 seconds. Current RSS: ~1555M. load average: 1.14 1.24 1.59 1/295 1315


      when the source branch matches an issue
        factory: :jira_integration, source_branch: "FOO-123-fix-issue", title: "Resolve FOO-123 \"Fix issue\"", closing_message: "Closes FOO-123"
          sets the correct title
          sets the closing description
          a Default.md template is defined
            appends the closing description to a Default.md template
# [RSpecRunTime] RSpec elapsed time: 1 minute 21.63 seconds. Current RSS: ~1567M. load average: 1.13 1.24 1.59 1/295 1381


        factory: :jira_integration, source_branch: "fix-issue", title: "Fix issue", closing_message: nil
          sets the correct title
          sets the closing description
          a Default.md template is defined
            appends the closing description to a Default.md template
# [RSpecRunTime] RSpec elapsed time: 1 minute 25.69 seconds. Current RSS: ~1561M. load average: 1.13 1.24 1.59 1/295 1447


        factory: :custom_issue_tracker_integration, source_branch: "123-fix-issue", title: "Resolve #123 \"Fix issue\"", closing_message: "Closes #123"
          sets the correct title
          sets the closing description
          a Default.md template is defined
            appends the closing description to a Default.md template
# [RSpecRunTime] RSpec elapsed time: 1 minute 30.33 seconds. Current RSS: ~1577M. load average: 1.12 1.23 1.58 1/295 1513


        factory: :custom_issue_tracker_integration, source_branch: "fix-issue", title: "Fix issue", closing_message: nil
          sets the correct title
          sets the closing description
          a Default.md template is defined
            appends the closing description to a Default.md template
# [RSpecRunTime] RSpec elapsed time: 1 minute 34.94 seconds. Current RSS: ~1581M. load average: 1.11 1.23 1.58 1/295 1579


        factory: nil, source_branch: "123-fix-issue", title: "Resolve \"A bug\"", closing_message: "Closes #123"
          sets the correct title
          sets the closing description
          a Default.md template is defined
            appends the closing description to a Default.md template
# [RSpecRunTime] RSpec elapsed time: 1 minute 39.1 seconds. Current RSS: ~1572M. load average: 1.10 1.23 1.58 1/295 1645


        factory: nil, source_branch: "fix-issue", title: "Fix issue", closing_message: nil
          sets the correct title
          sets the closing description
          a Default.md template is defined
            appends the closing description to a Default.md template
# [RSpecRunTime] RSpec elapsed time: 1 minute 43.01 seconds. Current RSS: ~1573M. load average: 1.09 1.22 1.57 1/295 1711


        factory: nil, source_branch: "124-fix-issue", title: "124 fix issue", closing_message: nil
          sets the correct title
          sets the closing description
          a Default.md template is defined
            appends the closing description to a Default.md template
# [RSpecRunTime] RSpec elapsed time: 1 minute 46.76 seconds. Current RSS: ~1572M. load average: 1.09 1.22 1.57 1/295 1777


    a multi-line commit message in the diff
      uses the first line of the first multi-line commit message as the title
      adds the remaining lines of the first multi-line commit message as the description
      behaves like allows the merge request to be created
        is expected to eq true
# [RSpecRunTime] RSpec elapsed time: 1 minute 50.36 seconds. Current RSS: ~1571M. load average: 1.09 1.22 1.57 1/295 1823


      behaves like with a Default.md template
        the template description is preferred
# [RSpecRunTime] RSpec elapsed time: 1 minute 51.54 seconds. Current RSS: ~1567M. load average: 1.08 1.22 1.57 1/295 1859


      when the source branch matches an issue
        factory: :jira_integration, source_branch: "FOO-123-fix-issue", title: "Resolve FOO-123 \"Fix issue\"", closing_message: "Closes FOO-123"
          sets the correct title
          sets the closing description
          a Default.md template is defined
            appends the closing description to a Default.md template
# [RSpecRunTime] RSpec elapsed time: 1 minute 55.57 seconds. Current RSS: ~1584M. load average: 1.08 1.22 1.57 1/295 1925


        factory: :jira_integration, source_branch: "fix-issue", title: "Fix issue", closing_message: nil
          sets the correct title
          sets the closing description
          a Default.md template is defined
            appends the closing description to a Default.md template
# [RSpecRunTime] RSpec elapsed time: 1 minute 59.57 seconds. Current RSS: ~1579M. load average: 1.07 1.21 1.56 1/292 1991


        factory: :custom_issue_tracker_integration, source_branch: "123-fix-issue", title: "Resolve #123 \"Fix issue\"", closing_message: "Closes #123"
          sets the correct title
          sets the closing description
          a Default.md template is defined
            appends the closing description to a Default.md template
# [RSpecRunTime] RSpec elapsed time: 2 minutes 4.2 seconds. Current RSS: ~1581M. load average: 1.07 1.21 1.56 1/292 2057


        factory: :custom_issue_tracker_integration, source_branch: "fix-issue", title: "Fix issue", closing_message: nil
          sets the correct title
          sets the closing description
          a Default.md template is defined
            appends the closing description to a Default.md template
# [RSpecRunTime] RSpec elapsed time: 2 minutes 8.85 seconds. Current RSS: ~1574M. load average: 1.06 1.20 1.56 1/292 2123


        factory: nil, source_branch: "123-fix-issue", title: "Resolve \"A bug\"", closing_message: "Closes #123"
          sets the correct title
          sets the closing description
          a Default.md template is defined
            appends the closing description to a Default.md template
# [RSpecRunTime] RSpec elapsed time: 2 minutes 13.01 seconds. Current RSS: ~1568M. load average: 1.06 1.20 1.55 1/292 2189


        factory: nil, source_branch: "fix-issue", title: "Fix issue", closing_message: nil
          sets the correct title
          sets the closing description
          a Default.md template is defined
            appends the closing description to a Default.md template
# [RSpecRunTime] RSpec elapsed time: 2 minutes 16.78 seconds. Current RSS: ~1564M. load average: 1.13 1.21 1.56 1/292 2255


        factory: nil, source_branch: "124-fix-issue", title: "124 fix issue", closing_message: nil
          sets the correct title
          sets the closing description
          a Default.md template is defined
            appends the closing description to a Default.md template
# [RSpecRunTime] RSpec elapsed time: 2 minutes 20.62 seconds. Current RSS: ~1563M. load average: 1.13 1.21 1.56 1/292 2321


      when the issue is not accessible to user
        uses the first line of the first multi-line commit message as the title
        adds the remaining lines of the first multi-line commit message as the description
# [RSpecRunTime] RSpec elapsed time: 2 minutes 23.77 seconds. Current RSS: ~1567M. load average: 1.12 1.21 1.55 1/293 2352


      when the issue is confidential
        uses the first line of the first multi-line commit message as the title
        adds the remaining lines of the first multi-line commit message as the description
# [RSpecRunTime] RSpec elapsed time: 2 minutes 26.35 seconds. Current RSS: ~1555M. load average: 1.11 1.21 1.55 1/293 2383


      when the issue is created in the fork
        uses a full reference to the issue
# [RSpecRunTime] RSpec elapsed time: 2 minutes 27.94 seconds. Current RSS: ~1547M. load average: 1.11 1.21 1.55 1/293 2399


    source branch does not exist
      behaves like forbids the merge request from being created
        returns that the merge request cannot be created
        adds an error message to the merge request
# [RSpecRunTime] RSpec elapsed time: 2 minutes 30.15 seconds. Current RSS: ~1555M. load average: 1.11 1.21 1.55 1/293 2420


    target branch does not exist
      behaves like forbids the merge request from being created
        returns that the merge request cannot be created
        adds an error message to the merge request
# [RSpecRunTime] RSpec elapsed time: 2 minutes 32.41 seconds. Current RSS: ~1553M. load average: 1.10 1.20 1.55 1/293 2441


    both source and target branches do not exist
      behaves like forbids the merge request from being created
        returns that the merge request cannot be created
        adds an error message to the merge request
# [RSpecRunTime] RSpec elapsed time: 2 minutes 34.57 seconds. Current RSS: ~1566M. load average: 1.10 1.20 1.55 1/293 2462


    upstream project has disabled merge requests
      sets target project correctly
# [RSpecRunTime] RSpec elapsed time: 2 minutes 35.78 seconds. Current RSS: ~1564M. load average: 1.10 1.20 1.55 1/292 2463


    target_project is set and accessible by current_user
      sets target project correctly
# [RSpecRunTime] RSpec elapsed time: 2 minutes 37.39 seconds. Current RSS: ~1559M. load average: 1.09 1.20 1.54 1/291 2478


    target_project is set but not accessible by current_user
      sets target project correctly
# [RSpecRunTime] RSpec elapsed time: 2 minutes 39.05 seconds. Current RSS: ~1562M. load average: 1.09 1.20 1.54 1/291 2499


    target_project is set but repo is not accessible by current_user
      sets target project correctly
# [RSpecRunTime] RSpec elapsed time: 2 minutes 40.68 seconds. Current RSS: ~1568M. load average: 1.09 1.20 1.54 1/293 2520


    source_project is set and accessible by current_user
      sets source project correctly
# [RSpecRunTime] RSpec elapsed time: 2 minutes 42.44 seconds. Current RSS: ~1584M. load average: 1.09 1.20 1.54 1/293 2534


    source_project is set but not accessible by current_user
      sets source project correctly
# [RSpecRunTime] RSpec elapsed time: 2 minutes 44.12 seconds. Current RSS: ~1578M. load average: 1.09 1.20 1.54 1/294 2555


    source_project is set but the user cannot create merge requests from the project
      sets the source_project correctly
# [RSpecRunTime] RSpec elapsed time: 2 minutes 45.75 seconds. Current RSS: ~1577M. load average: 1.09 1.20 1.54 1/294 2576


    target_project is not in the fork network of source_project
      adds an error to the merge request
# [RSpecRunTime] RSpec elapsed time: 2 minutes 47.25 seconds. Current RSS: ~1573M. load average: 1.08 1.19 1.54 1/294 2590


    target_project is in the fork network of source project but no longer accessible
      sets the target_project correctly
# [RSpecRunTime] RSpec elapsed time: 2 minutes 48.95 seconds. Current RSS: ~1577M. load average: 1.08 1.19 1.54 1/294 2611


    when specifying target branch in the description
      sets the attribute from the quick actions
# [RSpecRunTime] RSpec elapsed time: 2 minutes 50.08 seconds. Current RSS: ~1574M. load average: 1.08 1.19 1.54 1/294 2627


  when assigning labels
    for members with less than developer access
      is not allowed
# [RSpecRunTime] RSpec elapsed time: 2 minutes 51.17 seconds. Current RSS: ~1579M. load average: 1.08 1.19 1.54 1/294 2642


    for users allowed to assign labels
      for labels in the project
        is allowed for developers
# [RSpecRunTime] RSpec elapsed time: 2 minutes 52.35 seconds. Current RSS: ~1576M. load average: 1.07 1.19 1.53 1/294 2657


      for unrelated labels
        only assigns related labels
# [RSpecRunTime] RSpec elapsed time: 2 minutes 53.99 seconds. Current RSS: ~1575M. load average: 1.07 1.19 1.53 1/294 2672


  #assign_description_from_repository_template
    performs no action if the merge request description is not blank
    when a Default template is not found
      does not modify the merge request description
# [RSpecRunTime] RSpec elapsed time: 2 minutes 56.27 seconds. Current RSS: ~1565M. load average: 1.07 1.18 1.53 1/294 2704


    when a Default template is found
      when its contents cannot be retrieved
        does not modify the merge request description
# [RSpecRunTime] RSpec elapsed time: 2 minutes 57.42 seconds. Current RSS: ~1555M. load average: 1.07 1.18 1.53 1/294 2735


      when its contents can be retrieved
        modifies the merge request description
# [RSpecRunTime] RSpec elapsed time: 2 minutes 58.57 seconds. Current RSS: ~1544M. load average: 1.07 1.18 1.53 1/294 2773


  #replace_variables_in_description
    when the merge request description is blank
      does not update the description
# [RSpecRunTime] RSpec elapsed time: 2 minutes 59.75 seconds. Current RSS: ~1542M. load average: 1.07 1.18 1.53 1/294 2788


    when the merge request description contains template variables
      when there are multiple commits in the diff
        replaces the variables in the description
# [RSpecRunTime] RSpec elapsed time: 3 minutes 1.01 seconds. Current RSS: ~1551M. load average: 1.07 1.18 1.53 1/295 2801


      when there are no commits in the diff
        replaces the variables in the description
# [RSpecRunTime] RSpec elapsed time: 3 minutes 2.16 seconds. Current RSS: ~1550M. load average: 1.06 1.18 1.53 1/294 2812



# [RSpecRunTime] Finishing example group spec/services/merge_requests/build_service_spec.rb. It took 2 minutes 59.48 seconds. Expected to take 3 minutes 55.25 seconds.
# [RSpecRunTime] RSpec elapsed time: 3 minutes 3.35 seconds. Current RSS: ~1542M. load average: 1.06 1.18 1.53 1/294 2813


# [RSpecRunTime] Starting example group spec/models/container_repository_spec.rb. Expected to take 2 minutes 57.96 seconds.

ContainerRepository
  does not allow STI
  behaves like having unique enum values
    has unique values in "status"
    has unique values in "expiration_policy_cleanup_status"
    has unique values in "migration_skipped_reason"
  associations
    belongs to the project
  validations
    is expected to validate that :migration_retries_count cannot be empty/falsy
    is expected to validate that :migration_retries_count looks like a number greater than or equal to 0
    is expected to validate that :migration_aborted_in_state is either ‹"pre_importing"›, ‹"importing"›, ‹"pre_import_done"›, or ‹"default"›
    is expected to allow :migration_aborted_in_state to be ‹nil›
    migration_state
      is expected to validate that :migration_state cannot be empty/falsy
      is expected to validate that :migration_state is either ‹"default"›, ‹"pre_import_done"›, ‹"import_done"›, ‹"import_aborted"›, ‹"import_skipped"›, ‹"pre_importing"›, or ‹"importing"›
      pre_importing
        validates expected attributes
      pre_import_done
        validates expected attributes
      importing
        validates expected attributes
      import_skipped
        validates expected attributes
      import_aborted
        validates expected attributes
  :migration_state state_machine
    #start_pre_import
      behaves like transitioning from allowed states
        when transitioning from default
          returns true
        when transitioning from pre_import_done
          returns false
        when transitioning from import_done
          returns false
        when transitioning from import_aborted
          returns true
        when transitioning from import_skipped
          returns false
        when transitioning from pre_importing
          returns true
        when transitioning from importing
          returns true
      behaves like transitioning to pre_importing
        behaves like no action when feature flag is disabled
          feature flag disabled
            is expected to eq false
        successful pre_import request
          sets migration_pre_import_started_at and resets migration_pre_import_done_at
        failed pre_import request
          sets migration_pre_import_started_at and resets migration_pre_import_done_at
        already imported
          finishes the import
        non-existing repository
          finishes the import
    #retry_pre_import
      behaves like transitioning from allowed states
        when transitioning from default
          returns false
        when transitioning from pre_import_done
          returns false
        when transitioning from import_done
          returns false
        when transitioning from import_aborted
          returns true
        when transitioning from import_skipped
          returns false
        when transitioning from pre_importing
          returns true
        when transitioning from importing
          returns true
      behaves like transitioning to pre_importing
        behaves like no action when feature flag is disabled
          feature flag disabled
            is expected to eq false
        successful pre_import request
          sets migration_pre_import_started_at and resets migration_pre_import_done_at
        failed pre_import request
          sets migration_pre_import_started_at and resets migration_pre_import_done_at
        already imported
          finishes the import
        non-existing repository
          finishes the import
      behaves like transitioning out of import_aborted
        resets migration_aborted_at and migration_aborted_in_state
    #finish_pre_import
      sets migration_pre_import_done_at
      behaves like transitioning from allowed states
        when transitioning from default
          returns false
        when transitioning from pre_import_done
          returns false
        when transitioning from import_done
          returns false
        when transitioning from import_aborted
          returns true
        when transitioning from import_skipped
          returns false
        when transitioning from pre_importing
          returns true
        when transitioning from importing
          returns true
    #start_import
      behaves like transitioning from allowed states
        when transitioning from default
          returns false
        when transitioning from pre_import_done
          returns true
        when transitioning from import_done
          returns false
        when transitioning from import_aborted
          returns true
        when transitioning from import_skipped
          returns false
        when transitioning from pre_importing
          returns true
        when transitioning from importing
          returns true
      behaves like transitioning to importing
        successful import request
          sets migration_import_started_at and resets migration_import_done_at
        failed import request
          sets migration_import_started_at and resets migration_import_done_at
        already imported
          finishes the import
    #retry_import
      behaves like transitioning from allowed states
        when transitioning from default
          returns false
        when transitioning from pre_import_done
          returns false
        when transitioning from import_done
          returns false
        when transitioning from import_aborted
          returns true
        when transitioning from import_skipped
          returns false
        when transitioning from pre_importing
          returns true
        when transitioning from importing
          returns true
      behaves like transitioning to importing
        successful import request
          sets migration_import_started_at and resets migration_import_done_at
        failed import request
          sets migration_import_started_at and resets migration_import_done_at
        already imported
          finishes the import
      behaves like no action when feature flag is disabled
        feature flag disabled
          is expected to eq false
    #finish_import
      sets migration_import_done_at and queues the next import
      behaves like transitioning from allowed states
        when transitioning from default
          returns true
        when transitioning from pre_import_done
          returns false
        when transitioning from import_done
          returns false
        when transitioning from import_aborted
          returns true
        when transitioning from import_skipped
          returns false
        when transitioning from pre_importing
          returns true
        when transitioning from importing
          returns true
      behaves like not queueing the next import
        does not start the worker
    #already_migrated
      sets migration_import_done_at
      behaves like transitioning from allowed states
        when transitioning from default
          returns true
        when transitioning from pre_import_done
          returns false
        when transitioning from import_done
          returns false
        when transitioning from import_aborted
          returns false
        when transitioning from import_skipped
          returns false
        when transitioning from pre_importing
          returns false
        when transitioning from importing
          returns false
    #abort_import
      sets migration_aborted_at and migration_aborted_at, increments the retry count, and queues the next import
      behaves like transitioning from allowed states
        when transitioning from default
          returns true
        when transitioning from pre_import_done
          returns true
        when transitioning from import_done
          returns false
        when transitioning from import_aborted
          returns false
        when transitioning from import_skipped
          returns false
        when transitioning from pre_importing
          returns true
        when transitioning from importing
          returns true
      behaves like not queueing the next import
        does not start the worker
      above the max retry limit
        skips the migration
    #skip_import
      sets migration_skipped_at and migration_skipped_reason
      raises and error if a reason is not given
      behaves like transitioning from allowed states
        when transitioning from default
          returns true
        when transitioning from pre_import_done
          returns true
        when transitioning from import_done
          returns false
        when transitioning from import_aborted
          returns true
        when transitioning from import_skipped
          returns false
        when transitioning from pre_importing
          returns true
        when transitioning from importing
          returns true
      behaves like not queueing the next import
        does not start the worker
    #finish_pre_import_and_start_import
      behaves like transitioning from allowed states
        when transitioning from default
          returns false
        when transitioning from pre_import_done
          returns false
        when transitioning from import_done
          returns false
        when transitioning from import_aborted
          returns true
        when transitioning from import_skipped
          returns false
        when transitioning from pre_importing
          returns true
        when transitioning from importing
          returns true
      behaves like transitioning to importing
        successful import request
          sets migration_import_started_at and resets migration_import_done_at
        failed import request
          sets migration_import_started_at and resets migration_import_done_at
        already imported
          finishes the import
  when triggering registry API requests
    when responding to a start_pre_import event
      behaves like a state machine configured with use_transactions: false
        executes the registry API request outside of a transaction
# [RSpecRunTime] RSpec elapsed time: 3 minutes 47.75 seconds. Current RSS: ~1526M. load average: 1.00 1.15 1.50 1/288 2814


    when responding to a retry_pre_import event
      behaves like a state machine configured with use_transactions: false
        executes the registry API request outside of a transaction
# [RSpecRunTime] RSpec elapsed time: 3 minutes 51.17 seconds. Current RSS: ~1526M. load average: 1.00 1.15 1.50 1/288 2815


    when responding to a start_import event
      behaves like a state machine configured with use_transactions: false
        executes the registry API request outside of a transaction
# [RSpecRunTime] RSpec elapsed time: 3 minutes 54.59 seconds. Current RSS: ~1507M. load average: 1.00 1.15 1.50 1/288 2816


    when responding to a retry_import event
      behaves like a state machine configured with use_transactions: false
        executes the registry API request outside of a transaction
# [RSpecRunTime] RSpec elapsed time: 3 minutes 57.95 seconds. Current RSS: ~1493M. load average: 1.00 1.15 1.50 1/288 2817


  #retry_aborted_migration
    when migration_state is not aborted
      does nothing
    when migration_state is aborted
      behaves like reconciling migration_state
        native response
          finishes the import
        import_in_progress response
          behaves like enforcing states coherence to
            leaves the repository in the expected migration_state
        import_complete response
          finishes the import
        import_canceled response
          behaves like retrying the import
            retries the import
        import_failed response
          behaves like retrying the import
            retries the import
        pre_import_in_progress response
          behaves like enforcing states coherence to
            leaves the repository in the expected migration_state
        pre_import_complete response
          finishes the pre_import and starts the import
        pre_import_canceled response
          behaves like retrying the pre_import
            retries the pre_import
        pre_import_failed response
          behaves like retrying the pre_import
            retries the pre_import
        error response
          migration_pre_import_done_at is NULL
            behaves like retrying the pre_import
              retries the pre_import
          migration_pre_import_done_at is not NULL
            behaves like retrying the import
              retries the import
  #reconcile_import_status
    behaves like reconciling migration_state
      native response
        finishes the import
      import_in_progress response
        behaves like enforcing states coherence to
          leaves the repository in the expected migration_state
      import_complete response
        finishes the import
      import_canceled response
        behaves like retrying the import
          retries the import
      import_failed response
        behaves like retrying the import
          retries the import
      pre_import_in_progress response
        behaves like enforcing states coherence to
          leaves the repository in the expected migration_state
      pre_import_complete response
        finishes the pre_import and starts the import
      pre_import_canceled response
        behaves like retrying the pre_import
          retries the pre_import
      pre_import_failed response
        behaves like retrying the pre_import
          retries the pre_import
  #tag
    when the repository is migrated
      when Gitlab API is supported
        when the Gitlab API returns a tag
          behaves like returning an instantiated tag from the API response
            returns an instantiated tag from the response
        when the Gitlab API returns multiple tags
          behaves like returning an instantiated tag from the API response
            returns an instantiated tag from the response
        when the Gitlab API does not return a tag
          returns nil
      when the Gitlab API is not supported
        behaves like returning an instantiated tag
          returns an instantiated tag
    when the repository is not migrated
      behaves like returning an instantiated tag
        returns an instantiated tag
  #path
    when project path does not contain uppercase letters
      returns a full path to the repository
    when path contains uppercase letters
      returns a full path without capital letters
  #manifest
    returns non-empty manifest
  #image_manifest
    returns an image manifest from the registry
  #valid?
    is a valid repository
  #tags
    when the repository is migrated
      when Gitlab API is supported
        when the Gitlab API returns tags
          returns an instantiated tag from the response
        when the Gitlab API does not return any tags
          returns an empty array
      when the Gitlab API is not supported
        behaves like returning the non-empty tags list
          returns non-empty tags list
    when the repository is not migrated
      behaves like returning the non-empty tags list
        returns non-empty tags list
  #each_tags_page
    with an empty page
      behaves like iterating through a page
        iterates through one page
    with one page
      with a nil created_at
        behaves like iterating through a page
          iterates through one page
      with an invalid created_at
        behaves like iterating through a page
          iterates through one page
    with two pages
      iterates through two pages
    when max pages is reached
      raises an error
    without a block set
      raises an Argument error
    without a page size set
      uses a default size
    with an empty client response
      breaks the loop
    with a nil page
      behaves like iterating through a page
        iterates through one page
    calling on a non migrated repository
      raises an Argument error
  #tags_page
    calls GitlabApiClient#tags and passes parameters
    with a call to tags
      returns tags and parses the previous and next cursors
# [RSpecRunTime] RSpec elapsed time: 4 minutes 27.22 seconds. Current RSS: ~1498M. load average: 0.90 1.11 1.47 1/288 2824


    calling on a non migrated repository
      raises an Argument error
  #tags_count
    returns the count of tags
  #has_tags?
    has tags
  #delete_tags!
    when action succeeds
      returns status that indicates success
    when action fails
      returns status that indicates failure
  #delete_tag
    when action succeeds
      returns status that indicates success
    when action fails
      returns status that indicates failure
  #location
    when registry is running on a custom port
      returns a full location of the repository
  #root_repository?
    when repository is a root repository
      returns true
    when repository is not a root repository
      returns false
  #start_expiration_policy!
    sets the expiration policy started at to now
  #size
    supports gitlab api
      with a size_bytes field
        is expected to eq 12345
      without a size_bytes field
        is expected to eq nil
    does not support gitlab api
      is expected to eq nil
  #set_delete_ongoing_status
    updates deletion status attributes
  #set_delete_scheduled_status
    updates delete attributes
  #status_updated_at
    when status is updated to delete_scheduled
      updates status_changed_at
    when status is updated to delete_ongoing
      updates status_changed_at
    when status is updated to delete_failed
      updates status_changed_at
    when status is not changed
      does not update status_changed_at
  registry migration
    #migration_pre_import
      behaves like handling the migration step
        behaves like gitlab migration client request
          returns the same response as the client
          when the gitlab_api feature is not supported
            returns :error
# [RSpecRunTime] RSpec elapsed time: 4 minutes 38.58 seconds. Current RSS: ~1510M. load average: 0.92 1.11 1.47 1/288 2825


        too many imports
          raises an error when it receives too_many_imports as a response
    #migration_import
      behaves like handling the migration step
        behaves like gitlab migration client request
          returns the same response as the client
          when the gitlab_api feature is not supported
            returns :error
# [RSpecRunTime] RSpec elapsed time: 4 minutes 40.52 seconds. Current RSS: ~1513M. load average: 0.92 1.11 1.47 1/288 2826


        too many imports
          raises an error when it receives too_many_imports as a response
    #migration_cancel
      behaves like gitlab migration client request
        returns the same response as the client
        when the gitlab_api feature is not supported
          returns :error
# [RSpecRunTime] RSpec elapsed time: 4 minutes 42.49 seconds. Current RSS: ~1509M. load average: 0.92 1.11 1.46 1/288 2827


    #force_migration_cancel
      successful cancellation
        skips the migration
        behaves like returning the same response as the client
          returns the same response
# [RSpecRunTime] RSpec elapsed time: 4 minutes 43.83 seconds. Current RSS: ~1507M. load average: 0.92 1.11 1.46 1/288 2828


      failed cancellation
        does not skip the migration
        behaves like returning the same response as the client
          returns the same response
# [RSpecRunTime] RSpec elapsed time: 4 minutes 45.16 seconds. Current RSS: ~1502M. load average: 0.92 1.11 1.46 1/288 2829


      when the gitlab_api feature is not supported
        returns :error
  .build_from_path
    fabricates repository assigned to a correct project
    fabricates repository with a correct name
    is not persisted
# [RSpecRunTime] RSpec elapsed time: 4 minutes 47.79 seconds. Current RSS: ~1489M. load average: 1.01 1.12 1.47 1/288 2830


  .find_or_create_from_path!
    when received multi-level repository path
      fabricates repository assigned to a correct project
      fabricates repository with a correct name
# [RSpecRunTime] RSpec elapsed time: 4 minutes 49.07 seconds. Current RSS: ~1487M. load average: 1.01 1.12 1.47 1/288 2831


    when path is too long
      does not create repository and raises error
    when received multi-level repository with nested groups
      fabricates repository assigned to a correct project
      fabricates repository with a correct name
      has path including a nested group
# [RSpecRunTime] RSpec elapsed time: 4 minutes 51.93 seconds. Current RSS: ~1488M. load average: 1.01 1.12 1.46 1/288 2832


    when received root repository path
      fabricates repository assigned to a correct project
      fabricates repository with an empty name
# [RSpecRunTime] RSpec elapsed time: 4 minutes 53.2 seconds. Current RSS: ~1488M. load average: 1.01 1.12 1.46 1/288 2833


    when repository already exists
      returns the existing repository
    when many of the same repository are created at the same time
      does not throw validation errors and only creates one repository
      retrieves a persisted repository for all concurrent calls
# [RSpecRunTime] RSpec elapsed time: 4 minutes 55.39 seconds. Current RSS: ~1497M. load average: 1.01 1.12 1.46 1/298 2844


  .find_by_path
    when repository exists
      finds the repository
    when repository does not exist
      returns nil
  .find_by_path!
    when repository exists
      finds the repository
    when repository does not exist
      raises an exception
  .build_root_repository
    fabricates a root repository object
    assignes it to the correct project
    does not persist it
# [RSpecRunTime] RSpec elapsed time: 4 minutes 58.37 seconds. Current RSS: ~1501M. load average: 1.01 1.12 1.46 1/288 2845


  .for_group_and_its_subgroups
    in a group
      is expected to contain exactly #<ContainerRepository id: 194, project_id: 328, name: "my_image", created_at: "2024-04-10 20:53:55.08...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>
    with a subgroup
      is expected to contain exactly #<ContainerRepository id: 197, project_id: 331, name: "my_image", created_at: "2024-04-10 20:53:56.50...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil> and #<ContainerRepository id: 195, project_id: 329, name: "my_image", created_at: "2024-04-10 20:53:55.73...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>
# [RSpecRunTime] RSpec elapsed time: 5 minutes 0.48 second. Current RSS: ~1501M. load average: 1.01 1.12 1.46 1/289 2846


    group without container_repositories
      is expected to eq []
  .search_by_name
    is expected to contain exactly #<ContainerRepository id: 199, project_id: 332, name: "my_image", created_at: "2024-04-10 20:53:57.39...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>
  .for_project_id
    is expected to contain exactly #<ContainerRepository id: 200, project_id: 333, name: "my_image", created_at: "2024-04-10 20:53:58.04...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>
  .expiration_policy_started_at_nil_or_before
    is expected to contain exactly #<ContainerRepository id: 201, project_id: 334, name: "test_image_100", created_at: "2024-04-10 20:53...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>, #<ContainerRepository id: 202, project_id: 335, name: "test_image_101", created_at: "2024-04-10 20:53...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>, and #<ContainerRepository id: 204, project_id: 337, name: "test_image_103", created_at: "2024-04-10 20:53...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>
# [RSpecRunTime] RSpec elapsed time: 5 minutes 3.14 seconds. Current RSS: ~1494M. load average: 1.01 1.12 1.46 2/288 2847


  .with_migration_import_started_at_nil_or_before
    is expected to contain exactly #<ContainerRepository id: 206, project_id: 339, name: "test_image_105", created_at: "2024-04-10 20:53...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil> and #<ContainerRepository id: 207, project_id: 340, name: "test_image_106", created_at: "2024-04-10 20:53...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>
  .with_migration_pre_import_started_at_nil_or_before
    is expected to contain exactly #<ContainerRepository id: 209, project_id: 342, name: "test_image_108", created_at: "2024-04-10 20:54...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil> and #<ContainerRepository id: 210, project_id: 343, name: "test_image_109", created_at: "2024-04-10 20:54...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>
  .with_migration_pre_import_done_at_nil_or_before
    is expected to contain exactly #<ContainerRepository id: 212, project_id: 345, name: "test_image_111", created_at: "2024-04-10 20:54...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil> and #<ContainerRepository id: 213, project_id: 346, name: "test_image_112", created_at: "2024-04-10 20:54...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>
  .with_stale_ongoing_cleanup
    is expected to contain exactly #<ContainerRepository id: 214, project_id: 347, name: "test_image_113", created_at: "2024-04-10 20:54...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil> and #<ContainerRepository id: 216, project_id: 349, name: "test_image_115", created_at: "2024-04-10 20:54...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>
# [RSpecRunTime] RSpec elapsed time: 5 minutes 6.97 seconds. Current RSS: ~1489M. load average: 1.01 1.11 1.46 1/288 2848


  .with_stale_delete_at
    is expected to contain exactly #<ContainerRepository id: 218, project_id: 351, name: "test_image_117", created_at: "2024-04-10 20:54...arted_at: "2024-04-09 20:54:03.053733234 +0000", status_updated_at: nil, verification_checksum: nil> and #<ContainerRepository id: 220, project_id: 353, name: "test_image_119", created_at: "2024-04-10 20:54...arted_at: "2024-04-03 20:54:03.542775213 +0000", status_updated_at: nil, verification_checksum: nil>
  .waiting_for_cleanup
    is expected to contain exactly #<ContainerRepository id: 221, project_id: 354, name: "test_image_120", created_at: "2024-04-10 20:54...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil> and #<ContainerRepository id: 222, project_id: 355, name: "test_image_121", created_at: "2024-04-10 20:54...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>
  .exists_by_path?
    returns true for known container repository paths
    returns false for unknown container repository paths
  .all_migrated?
    with no repositories
      is expected to be truthy
    with only recent repositories
      is expected to be truthy
      with one old non migrated repository
        is expected to be falsey
      with one old migrated repository
        is expected to be truthy
  .with_enabled_policy
    is expected to eq [#<ContainerRepository id: 227, project_id: 359, name: "test_image_125", created_at: "2024-04-10 20:5...eleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>]
  #migration_in_active_state?
    when in default migration_state
      is expected to eq false
    when in pre_import_done migration_state
      is expected to eq false
    when in import_done migration_state
      is expected to eq false
    when in import_aborted migration_state
      is expected to eq false
    when in import_skipped migration_state
      is expected to eq false
    when in pre_importing migration_state
      is expected to eq true
    when in importing migration_state
      is expected to eq true
  #migration_importing?
    when in default migration_state
      is expected to eq false
    when in pre_import_done migration_state
      is expected to eq false
    when in import_done migration_state
      is expected to eq false
    when in import_aborted migration_state
      is expected to eq false
    when in import_skipped migration_state
      is expected to eq false
    when in pre_importing migration_state
      is expected to eq false
    when in importing migration_state
      is expected to eq true
  #migration_pre_importing?
    when in default migration_state
      is expected to eq false
    when in pre_import_done migration_state
      is expected to eq false
    when in import_done migration_state
      is expected to eq false
    when in import_aborted migration_state
      is expected to eq false
    when in import_skipped migration_state
      is expected to eq false
    when in pre_importing migration_state
      is expected to eq true
    when in importing migration_state
      is expected to eq false
  #try_import
    successful request
      is expected to eq true
    TooManyImportsError
      tries again exponentially and aborts the migration
    not found response
      completes the migration
    other response
      aborts the migration
    with no block given
      raises an error
  #retried_too_many_times?
    migration_retries_count is equal or greater than max_retries
      is expected to eq true
    migration_retries_count is lower than max_retries
      is expected to eq false
  #nearing_or_exceeded_retry_limit?
    migration_retries_count is 1 less than max_retries
      is expected to eq true
    migration_retries_count is lower than max_retries
      is expected to eq false
    migration_retries_count equal to or higher than max_retries
      is expected to eq true
  #migrated?
    on gitlab.com
      is expected to eq true
    not on gitlab.com
      is expected to eq false
  with repositories
    .requiring_cleanup
      with next_run_at in the future
        is expected to eq []
      with next_run_at in the past
        is expected to eq [#<ContainerRepository id: 258, project_id: 390, name: "test_image_149", created_at: "2024-04-10 20:5...eleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>]
      with repository cleanup started at after policy next run at
        is expected to eq []
    .with_unfinished_cleanup
      is expected to eq []
      with an unfinished repository
        is expected to eq [#<ContainerRepository id: 258, project_id: 390, name: "test_image_149", created_at: "2024-04-10 20:5...eleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>]
    .recently_done_migration_step
      returns completed imports by done_at date
# [RSpecRunTime] RSpec elapsed time: 5 minutes 27.54 seconds. Current RSS: ~1501M. load average: 0.92 1.09 1.44 1/288 2849


    .ready_for_import
      returns valid container repositories
# [RSpecRunTime] RSpec elapsed time: 5 minutes 29.13 seconds. Current RSS: ~1497M. load average: 0.92 1.09 1.44 1/288 2850


    #last_import_step_done_at
      is expected to eq 2024-04-10 19:54:25.210171019 +0000
  #external_import_status
    returns the response from the client
  .with_stale_migration
    is expected to contain exactly #<ContainerRepository id: 271, project_id: 403, name: "test_image_161", created_at: "2024-04-10 20:54...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>, #<ContainerRepository id: 272, project_id: 404, name: "test_image_162", created_at: "2024-04-10 20:54...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>, #<ContainerRepository id: 274, project_id: 406, name: "test_image_164", created_at: "2024-04-10 20:54...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>, #<ContainerRepository id: 275, project_id: 407, name: "test_image_165", created_at: "2024-04-10 20:54...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>, #<ContainerRepository id: 277, project_id: 409, name: "test_image_167", created_at: "2024-04-10 20:54...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>, and #<ContainerRepository id: 278, project_id: 410, name: "test_image_168", created_at: "2024-04-10 20:54...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>
# [RSpecRunTime] RSpec elapsed time: 5 minutes 32.44 seconds. Current RSS: ~1487M. load average: 0.93 1.09 1.44 1/288 2851


  #registry
    caches the client

# [RSpecRunTime] Finishing example group spec/models/container_repository_spec.rb. It took 2 minutes 29.76 seconds. Expected to take 2 minutes 57.96 seconds.
# [RSpecRunTime] Starting example group spec/services/ci/create_pipeline_service_spec.rb. Expected to take 2 minutes 7.15 seconds.

Ci::CreatePipelineService
  #execute
    skips creating pipeline for refs without .gitlab-ci.yml
    performance
      behaves like pipelines are created without N+1 SQL queries
        avoids N+1 queries
# [RSpecRunTime] RSpec elapsed time: 5 minutes 35.23 seconds. Current RSS: ~1484M. load average: 0.93 1.09 1.44 1/292 2875


    valid params
      responds with success
      creates a pipeline
      increments the prometheus counter
      records pipeline size in a prometheus histogram
      tracks included template usage
      tracks included catalog component usage
      when merge requests already exist for this source branch
        when the head pipeline sha equals merge request sha
          updates head pipeline of each merge request
# [RSpecRunTime] RSpec elapsed time: 5 minutes 40.6 seconds. Current RSS: ~1477M. load average: 0.94 1.09 1.44 1/294 3025


      auto-cancel enabled
        does not cancel HEAD pipeline
        auto cancel pending non-HEAD pipelines
        cancels running outdated pipelines
        cancel created outdated pipelines
        does not cancel pipelines from the other branches
        when the interruptible attribute is
          not defined
            is cancelable
# [RSpecRunTime] RSpec elapsed time: 5 minutes 53.38 seconds. Current RSS: ~1470M. load average: 0.95 1.08 1.43 1/293 3206


          set to true
            is cancelable
          set to false
            is not cancelable
        interruptible builds
          properly configures interruptible status
          when only interruptible builds are running
            when build marked explicitly by interruptible is running
              cancels running outdated pipelines
# [RSpecRunTime] RSpec elapsed time: 5 minutes 58.85 seconds. Current RSS: ~1488M. load average: 0.95 1.08 1.43 1/293 3290


            when build that is not marked as interruptible is running
              cancels running outdated pipelines
# [RSpecRunTime] RSpec elapsed time: 6 minutes 3.02 seconds. Current RSS: ~1477M. load average: 1.04 1.10 1.43 1/294 3338


          when an uninterruptible build is running
            does not cancel running outdated pipelines
# [RSpecRunTime] RSpec elapsed time: 6 minutes 6.08 seconds. Current RSS: ~1468M. load average: 1.04 1.10 1.43 1/294 3384


          when an build is waiting on an interruptible scheduled task
            cancels running outdated pipelines
# [RSpecRunTime] RSpec elapsed time: 6 minutes 10.15 seconds. Current RSS: ~1466M. load average: 1.04 1.09 1.43 1/294 3429


          when a uninterruptible build has finished
            does not cancel running outdated pipelines
# [RSpecRunTime] RSpec elapsed time: 6 minutes 12.9 seconds. Current RSS: ~1469M. load average: 1.03 1.09 1.42 1/294 3472


      auto-cancel disabled
        does not auto cancel created non-HEAD pipelines
# [RSpecRunTime] RSpec elapsed time: 6 minutes 13.96 seconds. Current RSS: ~1468M. load average: 1.03 1.09 1.42 1/294 3493


    skip tag if there is no build for it
      creates commit if there is appropriate job
      creates commit if there is no appropriate job but deploy job has right ref setting
# [RSpecRunTime] RSpec elapsed time: 6 minutes 15.15 seconds. Current RSS: ~1469M. load average: 1.03 1.09 1.42 1/294 3518


    config evaluation
      when config is in a file in repository
        pull it from the repository
      when config is from Auto-DevOps
        pull it from Auto-DevOps
# [RSpecRunTime] RSpec elapsed time: 6 minutes 18.63 seconds. Current RSS: ~1459M. load average: 1.03 1.09 1.42 1/295 3579


      when config is not found
        responds with error message
      when an unexpected error is raised
        saves error in pipeline
        logs error
    when yaml is invalid
      increments the error metric
      behaves like a failed pipeline
        creates failed pipeline
      when receive git commit
        behaves like a failed pipeline
          creates failed pipeline
      when config has ports
        in the main image
          behaves like a failed pipeline
            creates failed pipeline
        in the job image
          behaves like a failed pipeline
            creates failed pipeline
        in the service
          behaves like a failed pipeline
            creates failed pipeline
    when an unexpected error is raised
      saves error in pipeline
      logs error
    when commit contains a [ci skip] directive
      when the commit message is some message[ci skip]
        behaves like skipping a pipeline
          skips pipeline creation
      when the commit message is some message[skip ci]
        behaves like skipping a pipeline
          skips pipeline creation
      when the commit message is some message[CI SKIP]
        behaves like skipping a pipeline
          skips pipeline creation
      when the commit message is some message[SKIP CI]
        behaves like skipping a pipeline
          skips pipeline creation
      when the commit message is some message[ci_skip]
        behaves like skipping a pipeline
          skips pipeline creation
      when the commit message is some message[skip_ci]
        behaves like skipping a pipeline
          skips pipeline creation
      when the commit message is some message[ci-skip]
        behaves like skipping a pipeline
          skips pipeline creation
      when the commit message is some message[skip-ci]
        behaves like skipping a pipeline
          skips pipeline creation
      when commit message does not contain [ci skip] nor [skip ci]
        behaves like creating a pipeline
          does not skip pipeline creation
      when commit message is nil
        behaves like creating a pipeline
          does not skip pipeline creation
      when there is [ci skip] tag in commit message and yaml is invalid
        behaves like skipping a pipeline
          skips pipeline creation
    when push options contain ci.skip
      creates a pipline in the skipped state
    when there are no jobs for this pipeline
      does not create a new pipeline
      #iid
        rewinds iid
    when the configuration includes ID tokens
      creates variables for the ID tokens
    with manual actions
      does not create a new pipeline
# [RSpecRunTime] RSpec elapsed time: 6 minutes 31.08 seconds. Current RSS: ~1484M. load average: 1.02 1.09 1.42 1/296 3951


    when builds with auto-retries are configured
      as an integer
        correctly creates builds with auto-retry value configured
      as hash
        correctly creates builds with auto-retry value configured
    with resource group
      when resource group is defined
        persists the association correctly
        when resource group key includes predefined variables
          interpolates the variables into the key correctly
    when resource group is defined for review app deployment
      persists the association correctly
      initializes scoped variables only once for each build
# [RSpecRunTime] RSpec elapsed time: 6 minutes 35.66 seconds. Current RSS: ~1474M. load average: 1.02 1.08 1.41 1/295 4024


    with timeout
      when builds with custom timeouts are configured
        correctly creates builds with custom timeout value configured
    with release
      simple example
        behaves like a successful release pipeline
          is valid config
      example with all release metadata
        behaves like a successful release pipeline
          is valid config
    when ref is a protected branch
      behaves like when ref is protected
        when user is developer
          does not create a pipeline
        when user is maintainer
          creates a protected pipeline
        when trigger belongs to no one
          does not create a pipeline
        when trigger belongs to a developer
          does not create a pipeline
        when trigger belongs to a maintainer
          creates a pipeline
    when ref is a protected tag
      behaves like when ref is protected
        when user is developer
          does not create a pipeline
        when user is maintainer
          creates a protected pipeline
        when trigger belongs to no one
          does not create a pipeline
        when trigger belongs to a developer
          does not create a pipeline
        when trigger belongs to a maintainer
          creates a pipeline
    when pipeline is running for a tag
      creates a tagged pipeline
    when pipeline is running for a nonexistant-branch
      does not create the pipeline
      when there is a tag with that nonexistant-branch
        does not create the pipeline
    when pipeline is running for a branch with the name of both a branch and a tag
      creates the pipeline for the branch
    when pipeline is running for a tag with the name of both a branch and a tag
      creates the pipeline for the tag
    when pipeline is running for an ambiguous ref
      does not create the pipeline
    when pipeline variables are specified
      with valid pipeline variables
        creates a pipeline with specified variables
      with duplicate pipeline variables
        fails to create the pipeline
      with more than one duplicate pipeline variable
        fails to create the pipeline
    Pipeline for external pull requests
      when source is external pull request
        when config has external_pull_requests keywords
          when external pull request is specified
            creates an external pull request pipeline
            when ref is tag
              does not create an extrnal pull request pipeline
            when pull request is created from fork
              does not create an external pull request pipeline (PENDING: Not yet implemented)
            when there are no matched jobs
              does not create a detached merge request pipeline
          when external pull request is not specified
            does not create an external pull request pipeline
        when config does not have external_pull_requests keywords
          when external pull request is specified
            creates an external pull request pipeline
          when external pull request is not specified
            does not create an external pull request pipeline
    Pipelines for merge requests
      when source is merge request
        when config has merge_requests keywords
          when merge request is specified
            creates a detached merge request pipeline
            persists the specified source sha
            does not persist target sha for detached merge request pipeline
            schedules update for the head pipeline of the merge request
            schedules a namespace onboarding create action worker
            when target sha is specified
              persists the target sha
# [RSpecRunTime] RSpec elapsed time: 6 minutes 52.27 seconds. Current RSS: ~1545M. load average: 1.02 1.08 1.40 1/296 4598


            when ref is tag
              does not create a merge request pipeline
            when merge request is created from a forked project
              creates a legacy detached merge request pipeline in the forked project
# [RSpecRunTime] RSpec elapsed time: 6 minutes 56.17 seconds. Current RSS: ~1555M. load average: 1.02 1.08 1.40 1/296 4718


            when there are no matched jobs
              does not create a detached merge request pipeline
        when config does not have merge_requests keywords
          when merge request is specified
            does not create a detached merge request pipeline
        when config uses regular expression for only keyword
          when merge request is specified
            does not create a detached merge request pipeline
        when config uses variables for only keyword
          when merge request is specified
            does not create a detached merge request pipeline
        when config has 'except: [tags]'
          when merge request is specified
            does not create a detached merge request pipeline
      when source is web
        when config has merge_requests keywords
          creates a branch pipeline
    when needs is used
      when pipeline on master is created
        creates a pipeline with build_a and test_a
        bulk inserts all needs
# [RSpecRunTime] RSpec elapsed time: 7 minutes 1.05 seconds. Current RSS: ~1545M. load average: 1.01 1.08 1.40 1/296 4973


      when pipeline on feature is created
        when save_on_errors is enabled
          does create a pipeline as test_a depends on build_a
          behaves like has errors
            contains the expected errors
# [RSpecRunTime] RSpec elapsed time: 7 minutes 2.17 seconds. Current RSS: ~1548M. load average: 1.09 1.09 1.41 1/295 5002


        when save_on_errors is disabled
          does not create a pipeline as test_a depends on build_a
          behaves like has errors
            contains the expected errors
      when pipeline on v1.0.0 is created
        does create a pipeline only with deploy
    pipeline components
      when there is no version with specified tag
        does not create a pipeline
# [RSpecRunTime] RSpec elapsed time: 7 minutes 4.47 seconds. Current RSS: ~1558M. load average: 1.09 1.09 1.41 1/295 5088


      when there is a proper revision available
        when component is valid
          creates a pipeline using a pipeline component
# [RSpecRunTime] RSpec elapsed time: 7 minutes 5.59 seconds. Current RSS: ~1564M. load average: 1.09 1.09 1.41 1/295 5138


        when interpolation is invalid
          does not create a pipeline
# [RSpecRunTime] RSpec elapsed time: 7 minutes 6.79 seconds. Current RSS: ~1569M. load average: 1.08 1.09 1.40 1/295 5190


        when there is a syntax error in the template
          does not create a pipeline
# [RSpecRunTime] RSpec elapsed time: 7 minutes 7.9 seconds. Current RSS: ~1576M. load average: 1.08 1.09 1.40 1/295 5242


    pipeline components using include:with instead of include:inputs
      when there is no version with specified tag
        does not create a pipeline
# [RSpecRunTime] RSpec elapsed time: 7 minutes 9.02 seconds. Current RSS: ~1586M. load average: 1.08 1.09 1.40 1/295 5288


      when there is a proper revision available
        when component is valid
          creates a pipeline using a pipeline component
          when inputs have a description
            creates a pipeline
# [RSpecRunTime] RSpec elapsed time: 7 minutes 11.25 seconds. Current RSS: ~1596M. load average: 1.08 1.09 1.40 1/295 5387


        when interpolation is invalid
          does not create a pipeline
# [RSpecRunTime] RSpec elapsed time: 7 minutes 12.35 seconds. Current RSS: ~1596M. load average: 1.24 1.12 1.41 1/295 5439


        when there is a syntax error in the template
          does not create a pipeline
# [RSpecRunTime] RSpec elapsed time: 7 minutes 13.52 seconds. Current RSS: ~1597M. load average: 1.24 1.12 1.41 1/295 5491



# [RSpecRunTime] Finishing example group spec/services/ci/create_pipeline_service_spec.rb. It took 1 minute 40.52 seconds. Expected to take 2 minutes 7.15 seconds.
# [RSpecRunTime] Starting example group spec/models/clusters/platforms/kubernetes_spec.rb. Expected to take 1 minute 26.32 seconds.

Clusters::Platforms::Kubernetes
  does not allow STI
  is expected to belong to cluster required: false
  is expected to be a kind of Gitlab::Kubernetes
  is expected to respond to #ca_pem
  is expected to validate that :namespace is not ‹"gitlab-managed-apps"›
  is expected to validate that :api_url cannot be empty/falsy
  is expected to validate that :token cannot be empty/falsy
  is expected to delegate #enabled? to the #cluster object
  is expected to delegate #provided_by_user? to the #cluster object
  is expected to nullify if blank :namespace
  behaves like having unique enum values
    has unique values in "authorization_type"
# [RSpecRunTime] RSpec elapsed time: 7 minutes 14.83 seconds. Current RSS: ~1608M. load average: 1.24 1.12 1.41 1/295 5492


  default values
    is expected to eq "rbac"
  before_validation
    when namespace includes upper case
      converts to lower case
  validation
    when validates namespace
      when namespace is nil
        is expected to be truthy
      when namespace is longer than 63
        is expected to be falsey
      when namespace includes invalid character
        is expected to be falsey
      when namespace is vaild
        is expected to be truthy
      for group cluster
        is expected to be falsey
    when validates api_url
      when api_url is invalid url
        is expected to be falsey
      when api_url is nil
        is expected to be falsey
      when api_url is valid url
        is expected to be truthy
      when api_url is localhost
        is expected to be falsey
        Application settings allows local requests
          is expected to be truthy
    when validates token
      when token is nil
        is expected to be falsey
    ca_cert
      with a valid certificate
        is expected to be truthy
      with an invalid certificate
        is expected to be falsey
        but the certificate is not being updated
          is expected to be truthy
      with no certificate
        is expected to be truthy
    when using reserved namespaces
      when no namespace is manually assigned
        is expected to be valid
      when no reserved namespace is assigned
        is expected to be valid
      when reserved namespace is assigned
        is expected not to be valid
  #kubeclient
    is expected to be an instance of Gitlab::Kubernetes::KubeClient
    ca_pem is a single certificate
      adds it to cert_store
# [RSpecRunTime] RSpec elapsed time: 7 minutes 19.8 seconds. Current RSS: ~1635M. load average: 1.22 1.12 1.41 1/295 5493


    ca_pem is a chain
      fixture_path: "spec/fixtures/clusters/root_certificate.pem"
        includes chain of certificates
      fixture_path: "spec/fixtures/clusters/intermediate_certificate.pem"
        includes chain of certificates
      fixture_path: "spec/fixtures/clusters/leaf_certificate.pem"
        includes chain of certificates
  #rbac?
    is expected to be truthy
  #predefined_variables
    is expected to include {:key => "KUBE_URL", :value => "https://kubernetes.example.com", :public => true}
    platform has a CA certificate
      is expected to include {:key => "KUBE_CA_PEM", :value => "-----BEGIN CERTIFICATE-----\nMIIFtTCCA52gAwIBAgIJAOutg3Kf2y5dMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV\nBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBX\naWRnaXRzIFB0eSBMdGQwHhcNMTcxMDI5MTgxOTU3WhcNMTgxMDI5MTgxOTU3WjBF\nMQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50\nZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC\nCgKCAgEAvQysroM3TLxaavadSPnFIltrYnxCnU4PvCR8971HMWXsq7Z4ShU4BbbE\n8yp7oUFjulSwW6DhdIvnQb8ihLKictLmrA0isQqrD/iNpKZ6/lI4DGWw4QzrvMnW\nV4yy2QZNpg9tzQHd4+xkeeIoG23RijDU/sPd5dqxF+rPHBfCVInmYvSzLvMhneNj\nBt6gV02gU9e9hsnMatsDvEbvWKp7wcbPot0nWrfZulx2QAWyXy+zG9mJQUds6yc0\n4agAeT9JEb/xtRgR/kS0aUHSGnfSnhZiEn17s0PhTmbu7qSHgzgB+7oJrC9jPoUh\nS2Wo3n0xykAjHrA8wC/Ddw3L38S41VQ58GEfNchistPswyMmXo/Oenv9P3s/kCOI\nfndiksFNdqVo51y9Vjngj589hpOseFDyKmWPIEQZ9kxW/crjP6RZWWLHgz26KtxZ\nuJaoYL8VBbYfrk/bucw0Ma2GEOp8rTsBE7SvgejXZa78q+381Kzc/utW6VwSXqzY\nxeIitft0rXi17SZ+XoiTkIXtHn0ZwMtOXNDBADTpFmKa6wVACQilvcpOYD8gUHyH\npB+EDRdST3M4Fiq1MBAVhk8Lj3tHSJ/1ymeF1PWSu57AnJlzerzq2fcfPotNNd37\nZPNkPh0kxPLwxbAyrHflzx9qVVdI1irY9055mNSnhzlec4qJ9cECAwEAAaOBpzCB\npDAdBgNVHQ4EFgQUnVa5dYPoIG/3+qXml0bX8+N16GwwdQYDVR0jBG4wbIAUnVa5\ndYPoIG/3+qXml0bX8+N16GyhSaRHMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpT\nb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGSCCQDr\nrYNyn9suXTAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4ICAQAUg4cyxXi1\nVR8ejTpaAruRyJ1pEG9Kc3kiIRXODy60z3hJXnx9LkScPkWGiuL5XacfZ2rMd4bw\noVXIyi8U1UHWfAH8EZdrFKkU92jCiL5soHUONxLAvQEJ/FTR/qijrpzLCxXBdVQE\nxFEDWUu6rxLFyjEwzwnRTLgpjR606fdb7qXHkuAMvZ/ezJj8j97hok3Odpn4lr2H\n6hMTpK7HmDBX+kmdJJ+yBrm9hG1Pzpl7QU0dkxZ+qJNFjYMLnziiTwkv0c5ZaA9E\nNykZUcOv3Sjb6spu1A/E2BSq4WTjkIjrogFlfimE1vmUmObTRJOqUB0Vky1kHEwN\npg7QqIJQmof1EAIaSM/YpUWXyumBwGLDUEud1JUz05In9Q4IZjEwZSJwbQW4fUia\nA93m9rk3Lw3xsFcaUdPMFIXk0rPoF1IgmV/oqb0gK95lOWRLbN+AV8qpKPpcKXOc\nTkIdFE47ZisEDhIdF6wC1izEMLeMEsPAO7/Y6MY4nRxsinSe95lRaw+yQpzx+mvJ\nQ7n1kiHI9Pd5M3+CiQda0d/GO1o5ORJnUGJRvr9HKuNmE7Lif0As/N0AlywjzE7A\n6Z8AEiWyRV1ffshu1k2UKmzvZuZeGGKRtrIjbJIRAtpRVtVZZGzhq5/sojCLoJ+u\ntexqFBUo/4mFRZa4pDItUdyOlDy2/LO/ag==\n-----END CERTIFICATE-----", :public => true}
      is expected to include {:key => "KUBE_CA_PEM_FILE", :value => "-----BEGIN CERTIFICATE-----\nMIIFtTCCA52gAwIBAgIJAOutg3Kf2y5dMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV\nBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBX\naWRnaXRzIFB0eSBMdGQwHhcNMTcxMDI5MTgxOTU3WhcNMTgxMDI5MTgxOTU3WjBF\nMQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50\nZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC\nCgKCAgEAvQysroM3TLxaavadSPnFIltrYnxCnU4PvCR8971HMWXsq7Z4ShU4BbbE\n8yp7oUFjulSwW6DhdIvnQb8ihLKictLmrA0isQqrD/iNpKZ6/lI4DGWw4QzrvMnW\nV4yy2QZNpg9tzQHd4+xkeeIoG23RijDU/sPd5dqxF+rPHBfCVInmYvSzLvMhneNj\nBt6gV02gU9e9hsnMatsDvEbvWKp7wcbPot0nWrfZulx2QAWyXy+zG9mJQUds6yc0\n4agAeT9JEb/xtRgR/kS0aUHSGnfSnhZiEn17s0PhTmbu7qSHgzgB+7oJrC9jPoUh\nS2Wo3n0xykAjHrA8wC/Ddw3L38S41VQ58GEfNchistPswyMmXo/Oenv9P3s/kCOI\nfndiksFNdqVo51y9Vjngj589hpOseFDyKmWPIEQZ9kxW/crjP6RZWWLHgz26KtxZ\nuJaoYL8VBbYfrk/bucw0Ma2GEOp8rTsBE7SvgejXZa78q+381Kzc/utW6VwSXqzY\nxeIitft0rXi17SZ+XoiTkIXtHn0ZwMtOXNDBADTpFmKa6wVACQilvcpOYD8gUHyH\npB+EDRdST3M4Fiq1MBAVhk8Lj3tHSJ/1ymeF1PWSu57AnJlzerzq2fcfPotNNd37\nZPNkPh0kxPLwxbAyrHflzx9qVVdI1irY9055mNSnhzlec4qJ9cECAwEAAaOBpzCB\npDAdBgNVHQ4EFgQUnVa5dYPoIG/3+qXml0bX8+N16GwwdQYDVR0jBG4wbIAUnVa5\ndYPoIG/3+qXml0bX8+N16GyhSaRHMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpT\nb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGSCCQDr\nrYNyn9suXTAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4ICAQAUg4cyxXi1\nVR8ejTpaAruRyJ1pEG9Kc3kiIRXODy60z3hJXnx9LkScPkWGiuL5XacfZ2rMd4bw\noVXIyi8U1UHWfAH8EZdrFKkU92jCiL5soHUONxLAvQEJ/FTR/qijrpzLCxXBdVQE\nxFEDWUu6rxLFyjEwzwnRTLgpjR606fdb7qXHkuAMvZ/ezJj8j97hok3Odpn4lr2H\n6hMTpK7HmDBX+kmdJJ+yBrm9hG1Pzpl7QU0dkxZ+qJNFjYMLnziiTwkv0c5ZaA9E\nNykZUcOv3Sjb6spu1A/E2BSq4WTjkIjrogFlfimE1vmUmObTRJOqUB0Vky1kHEwN\npg7QqIJQmof1EAIaSM/YpUWXyumBwGLDUEud1JUz05In9Q4IZjEwZSJwbQW4fUia\nA93m9rk3Lw3xsFcaUdPMFIXk0rPoF1IgmV/oqb0gK95lOWRLbN+AV8qpKPpcKXOc\nTkIdFE47ZisEDhIdF6wC1izEMLeMEsPAO7/Y6MY4nRxsinSe95lRaw+yQpzx+mvJ\nQ7n1kiHI9Pd5M3+CiQda0d/GO1o5ORJnUGJRvr9HKuNmE7Lif0As/N0AlywjzE7A\n6Z8AEiWyRV1ffshu1k2UKmzvZuZeGGKRtrIjbJIRAtpRVtVZZGzhq5/sojCLoJ+u\ntexqFBUo/4mFRZa4pDItUdyOlDy2/LO/ag==\n-----END CERTIFICATE-----", :public => true, :file => true}
# [RSpecRunTime] RSpec elapsed time: 7 minutes 24.29 seconds. Current RSS: ~1603M. load average: 1.20 1.12 1.41 1/290 5494


    cluster is managed by project
      is expected to include {:key => "KUBE_TOKEN", :value => "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", :public => false, :masked => true}
      is expected to include {:key => "KUBE_NAMESPACE", :value => "kubernetes-namespace"}
      is expected to include {:key => "KUBECONFIG", :value => "kubeconfig", :public => false, :file => true}
# [RSpecRunTime] RSpec elapsed time: 7 minutes 26.86 seconds. Current RSS: ~1594M. load average: 1.27 1.13 1.41 1/290 5495


    kubernetes namespace exists
      is expected to include {:key => :fake_key, :value => "fake_value"}
    kubernetes namespace does not exist
      is expected not to include {:key => "KUBE_TOKEN", :value => "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", :public => false, :masked => true}
      is expected not to include {:key => "KUBE_NAMESPACE", :value => "kubernetes-namespace"}
      is expected not to include {:key => "KUBECONFIG", :value => "kubeconfig", :public => false, :file => true}
      cluster is unmanaged
        is expected to include {:key => "KUBE_TOKEN", :value => "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", :public => false, :masked => true}
        is expected to include {:key => "KUBE_NAMESPACE", :value => "kubernetes-namespace"}
        is expected to include {:key => "KUBECONFIG", :value => "kubeconfig", :public => false, :file => true}
        custom namespace is provided
          is expected to include {:key => "KUBE_TOKEN", :value => "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", :public => false, :masked => true}
          is expected to include {:key => "KUBE_NAMESPACE", :value => "custom-namespace"}
          is expected to include {:key => "KUBECONFIG", :value => "kubeconfig", :public => false, :file => true}
# [RSpecRunTime] RSpec elapsed time: 7 minutes 35.43 seconds. Current RSS: ~1564M. load average: 1.24 1.13 1.41 1/290 5496


    cluster variables
      is expected to include {:key => :fake_key, :value => "fake_value"}
  #terminals
    with invalid pods
      returns no terminals
    with valid pods
      returns terminals
      uses max session time from settings
# [RSpecRunTime] RSpec elapsed time: 7 minutes 38.79 seconds. Current RSS: ~1561M. load average: 1.22 1.13 1.41 1/290 5497


  #calculate_reactive_cache_for
    when kubernetes responds with valid deployments
      on a project level cluster
        is expected to include {:pods => [{"metadata" => {"name" => "kube-pod", "generateName" => "generated-name-with-suffix", "creationTimestamp" => "2016-11-25T19:55:19Z", "annotations" => {"app.gitlab.com/env" => "production", "app.gitlab.com/app" => "project-path-slug"}, "labels" => {}}, "spec" => {"containers" => [{"name" => "container-0"}, {"name" => "container-0-1"}]}, "status" => {"phase" => "Running"}}], :deployments => [{"metadata" => {"name" => "kube-deployment", "generation" => 4, "annotations" => {"app.gitlab.com/env" => "production", "app.gitlab.com/app" => "project-path-slug"}, "labels" => {}}, "spec" => {"replicas" => 3}, "status" => {"observedGeneration" => 4}}], :ingresses => [{"metadata" => {"name" => "production-auto-deploy", "labels" => {"app" => "production", "app.kubernetes.io/managed-by" => "Helm", "chart" => "auto-deploy-app-2.0.0-beta.2", "heritage" => "Helm", "release" => "production"}, "annotations" => {"kubernetes.io/ingress.class" => "nginx", "kubernetes.io/tls-acme" => "true", "meta.helm.sh/release-name" => "production", "meta.helm.sh/release-namespace" => "awesome-app-1-production"}}}]}
        when reading ingress raises NoMethodError
          when version request succeeds
            when server min version is < 23
              does not raise error
              returns empty array for the K8s component keys
# [RSpecRunTime] RSpec elapsed time: 7 minutes 41.22 seconds. Current RSS: ~1562M. load average: 1.22 1.13 1.41 1/290 5498


            when server min version is >= 23
              does raise error
          when the version request fails
            tracks error and returns empty arrays
      on a group level cluster
        is expected to include {:pods => [{"metadata" => {"name" => "kube-pod", "generateName" => "generated-name-with-suffix", "creationTimestamp" => "2016-11-25T19:55:19Z", "annotations" => {"app.gitlab.com/env" => "production", "app.gitlab.com/app" => "project-path-slug"}, "labels" => {}}, "spec" => {"containers" => [{"name" => "container-0"}, {"name" => "container-0-1"}]}, "status" => {"phase" => "Running"}}], :deployments => [{"metadata" => {"name" => "kube-deployment", "generation" => 4, "annotations" => {"app.gitlab.com/env" => "production", "app.gitlab.com/app" => "project-path-slug"}, "labels" => {}}, "spec" => {"replicas" => 3}, "status" => {"observedGeneration" => 4}}], :ingresses => [{"metadata" => {"name" => "production-auto-deploy", "labels" => {"app" => "production", "app.kubernetes.io/managed-by" => "Helm", "chart" => "auto-deploy-app-2.0.0-beta.2", "heritage" => "Helm", "release" => "production"}, "annotations" => {"kubernetes.io/ingress.class" => "nginx", "kubernetes.io/tls-acme" => "true", "meta.helm.sh/release-name" => "production", "meta.helm.sh/release-namespace" => "awesome-app-1-production"}}}]}
      on an instance level cluster
        is expected to include {:pods => [{"metadata" => {"name" => "kube-pod", "generateName" => "generated-name-with-suffix", "creationTimestamp" => "2016-11-25T19:55:19Z", "annotations" => {"app.gitlab.com/env" => "production", "app.gitlab.com/app" => "project-path-slug"}, "labels" => {}}, "spec" => {"containers" => [{"name" => "container-0"}, {"name" => "container-0-1"}]}, "status" => {"phase" => "Running"}}], :deployments => [{"metadata" => {"name" => "kube-deployment", "generation" => 4, "annotations" => {"app.gitlab.com/env" => "production", "app.gitlab.com/app" => "project-path-slug"}, "labels" => {}}, "spec" => {"replicas" => 3}, "status" => {"observedGeneration" => 4}}], :ingresses => [{"metadata" => {"name" => "production-auto-deploy", "labels" => {"app" => "production", "app.kubernetes.io/managed-by" => "Helm", "chart" => "auto-deploy-app-2.0.0-beta.2", "heritage" => "Helm", "release" => "production"}, "annotations" => {"kubernetes.io/ingress.class" => "nginx", "kubernetes.io/tls-acme" => "true", "meta.helm.sh/release-name" => "production", "meta.helm.sh/release-namespace" => "awesome-app-1-production"}}}]}
    when the kubernetes integration is disabled
      is expected to be nil
    when there are ignored K8s connections errors
      Gitlab::HTTP_V2::UrlBlocker::BlockedUrlError
        does not raise error
        returns empty array for the K8s component keys
        logs the error
# [RSpecRunTime] RSpec elapsed time: 7 minutes 46.96 seconds. Current RSS: ~1567M. load average: 1.26 1.14 1.41 1/290 5499


      Kubeclient::HttpError
        does not raise error
        returns empty array for the K8s component keys
        logs the error
# [RSpecRunTime] RSpec elapsed time: 7 minutes 49.43 seconds. Current RSS: ~1565M. load average: 1.26 1.14 1.41 1/290 5500


      Errno::ECONNREFUSED
        does not raise error
        returns empty array for the K8s component keys
        logs the error
# [RSpecRunTime] RSpec elapsed time: 7 minutes 51.91 seconds. Current RSS: ~1561M. load average: 1.24 1.14 1.40 1/290 5501


      URI::InvalidURIError
        does not raise error
        returns empty array for the K8s component keys
        logs the error
# [RSpecRunTime] RSpec elapsed time: 7 minutes 54.45 seconds. Current RSS: ~1563M. load average: 1.24 1.14 1.40 1/290 5502


      Errno::EHOSTUNREACH
        does not raise error
        returns empty array for the K8s component keys
        logs the error
# [RSpecRunTime] RSpec elapsed time: 7 minutes 56.93 seconds. Current RSS: ~1564M. load average: 1.22 1.14 1.40 1/290 5503


      OpenSSL::X509::StoreError
        does not raise error
        returns empty array for the K8s component keys
        logs the error
# [RSpecRunTime] RSpec elapsed time: 7 minutes 59.37 seconds. Current RSS: ~1562M. load average: 1.22 1.14 1.40 1/290 5504


      OpenSSL::SSL::SSLError
        does not raise error
        returns empty array for the K8s component keys
        logs the error
# [RSpecRunTime] RSpec elapsed time: 8 minutes 1.96 seconds. Current RSS: ~1562M. load average: 1.20 1.13 1.40 1/290 5505


    when kubernetes responds with 500s
      does not raise kubeclient http error
    when kubernetes responds with 404s
      is expected to eq {:deployments=>[], :ingresses=>[], :pods=>[]}
  #rollout_status
    legacy deployments based on app label
      only legacy deployments
        contains nothing
      deployment with no pods
        returns a valid status with matching deployments
      new deployment based on annotations
        contains only matching deployments
    with no deployments but there are pods
      returns an empty array
    with valid deployments
      creates a matching RolloutStatus
      with canary ingress
        has canary ingress
# [RSpecRunTime] RSpec elapsed time: 8 minutes 8.29 seconds. Current RSS: ~1559M. load average: 1.27 1.15 1.40 1/290 5506


    with empty list of deployments
      creates a matching RolloutStatus
    when the pod track does not match the deployment track
      does not return the pod
    when the pod track is not stable
      the pod is not stable
    when the pod track is stable
      the pod is stable
    when the pod track is not provided
      the pod is stable
    when the number of matching pods does not match the number of replicas
      returns a pending pod for each missing replica
    when pending pods are returned for missing replicas
      returns the correct track for the pending pods
    when two deployments with the same track are missing instances
      returns the correct number of pending pods
    with multiple matching deployments
      returns each pod once
    when cache keys are defaulted
      does not raise error
  #ingresses
    when there is an ingress in the namespace
      returns an ingress
    when there are no ingresss in the namespace
      returns nothing
  #patch_ingress
    when there is an ingress in the namespace
      returns an ingress
    when there are no ingresss in the namespace
      raises an error
  #authorization_type
    behaves like having enum with nil value
      has enum with nil value

# [RSpecRunTime] Finishing example group spec/models/clusters/platforms/kubernetes_spec.rb. It took 1 minute 4.25 seconds. Expected to take 1 minute 26.32 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/database/lock_writes_manager_spec.rb. Expected to take 1 minute 11.98 seconds.

Gitlab::Database::LockWritesManager
  #table_locked_for_writes?
    returns false for a table that is not locked for writes
    returns true for a table that is locked for writes
    for detached partition tables in another schema
      returns true for a table that is locked for writes
# [RSpecRunTime] RSpec elapsed time: 8 minutes 26.98 seconds. Current RSS: ~1550M. load average: 1.27 1.15 1.40 1/290 5507


  #lock_writes
    prevents any writes on the table
    prevents truncating the table
    adds 3 triggers to the ci schema tables on the main database
    logs the write locking
    retries again if it receives a statement_timeout a few number of times
    raises the exception if it happened many times
    skips the operation if the table is already locked for writes
    when running in dry_run mode
      prints the sql statement to the logger
      does not lock the tables for writes
      returns result hash with action needs_lock
# [RSpecRunTime] RSpec elapsed time: 8 minutes 56.43 seconds. Current RSS: ~1497M. load average: 1.14 1.14 1.38 1/290 5508


  #unlock_writes
    allows writing on the table again
    skips unlocking the table if the table was already unlocked for writes
    removes the write protection triggers from the gitlab_main tables on the ci database
    logs the write unlocking
    when running in dry_run mode
      prints the sql statement to the logger
      does not unlock the tables for writes
      returns result hash with dry_run true
# [RSpecRunTime] RSpec elapsed time: 9 minutes 17.55 seconds. Current RSS: ~1485M. load average: 1.10 1.13 1.38 1/290 5509



# [RSpecRunTime] Finishing example group spec/lib/gitlab/database/lock_writes_manager_spec.rb. It took 59.94 seconds. Expected to take 1 minute 11.98 seconds.
# [RSpecRunTime] Starting example group spec/services/projects/fork_service_spec.rb. Expected to take 49.26 seconds.

Projects::ForkService
  #execute
    when forker is a guest
      does not create a fork
      does not create a fork network
# [RSpecRunTime] RSpec elapsed time: 9 minutes 19.38 seconds. Current RSS: ~1501M. load average: 1.10 1.13 1.38 1/290 5516


    when forker is a developer
      creates a fork of the project
      after forking the original project still has its avatar
      creates a fork network with the new project and the root project set
      imports the repository of the forked project
      behaves like forks count cache refresh
        flushes the forks count cache of the source project
# [RSpecRunTime] RSpec elapsed time: 9 minutes 28.19 seconds. Current RSS: ~1513M. load average: 1.08 1.12 1.37 1/293 5577


      when creating fork of the fork
        creates a new project
        when the forked project has higher visibility than the root project
          successfully creates a fork of the fork with correct visibility
# [RSpecRunTime] RSpec elapsed time: 9 minutes 31.53 seconds. Current RSS: ~1511M. load average: 1.15 1.14 1.37 1/293 5586


        behaves like forks count cache refresh
          flushes the forks count cache of the source project
# [RSpecRunTime] RSpec elapsed time: 9 minutes 33.73 seconds. Current RSS: ~1508M. load average: 1.15 1.14 1.37 1/293 5591


      when project already exists
        fails due to validation, not transaction failure
      when repository in legacy storage already exists
        does not allow creation
        when repository disk validation is explicitly skipped
          allows fork project creation
# [RSpecRunTime] RSpec elapsed time: 9 minutes 35.82 seconds. Current RSS: ~1510M. load average: 1.15 1.14 1.37 1/293 5597


      CI/CD settings
        when origin has git depth specified
          inherits default_git_depth from the origin project
        when origin does not define git depth
          the fork has git depth set to 0
      when project has restricted visibility level
        and only one visibility level is restricted
          creates fork with lowest level
        and all visibility levels are restricted
          doesn't create a fork
      when forking is disabled
        does not create a fork
      when forking to the group namespace
        when user owns a target group
          creates a fork in the group
          when project already exists in group
            fails due to validation, not transaction failure
# [RSpecRunTime] RSpec elapsed time: 9 minutes 41.23 seconds. Current RSS: ~1527M. load average: 1.06 1.12 1.37 1/291 5612


          when the namespace has a lower visibility level than the project
            creates the project with the lower visibility level
# [RSpecRunTime] RSpec elapsed time: 9 minutes 42.65 seconds. Current RSS: ~1528M. load average: 1.06 1.12 1.36 1/291 5615


        when user is not a group owner
          does not create a fork
      with optional attributes
        sets optional attributes to specified values
        when an unknown visibility is requested
          sets visibility level to private
# [RSpecRunTime] RSpec elapsed time: 9 minutes 45.31 seconds. Current RSS: ~1529M. load average: 1.06 1.12 1.36 1/291 5620


        when requested visibility level is greater than allowed
          sets visibility level to project visibility
# [RSpecRunTime] RSpec elapsed time: 9 minutes 46.46 seconds. Current RSS: ~1526M. load average: 1.05 1.11 1.36 1/291 5623


        when target namespace has lower visibility than a project
          sets visibility level to target namespace visibility level
# [RSpecRunTime] RSpec elapsed time: 9 minutes 47.82 seconds. Current RSS: ~1526M. load average: 1.05 1.11 1.36 1/291 5626


        when project has custom visibility settings
          copies project features visibility settings to the fork
# [RSpecRunTime] RSpec elapsed time: 9 minutes 49.0 seconds. Current RSS: ~1526M. load average: 1.05 1.11 1.36 1/291 5629


      when a project is already forked
        creates a new pool repository after the project is moved to a new shard
# [RSpecRunTime] RSpec elapsed time: 9 minutes 51.24 seconds. Current RSS: ~1528M. load average: 1.05 1.11 1.36 1/291 5637


      when forking with object pools
        when no pool exists
          creates a new object pool
          when project is private
            does not create an object pool
# [RSpecRunTime] RSpec elapsed time: 9 minutes 53.77 seconds. Current RSS: ~1537M. load average: 1.05 1.11 1.36 1/291 5654


        when a pool already exists
          joins the object pool
      when linking fork to an existing project
        if project is already forked
          does not create fork relation
        if project is not forked
          creates fork relation
          flushes the forks count cache of the source project
          when user cannot fork
            returns an error
# [RSpecRunTime] RSpec elapsed time: 9 minutes 56.41 seconds. Current RSS: ~1543M. load average: 1.04 1.11 1.36 1/291 5657


          if the fork is not allowed
            does not delete the LFS objects
  #valid_fork_targets
    returns whatever finder returns
  #valid_fork_branch?
    when branch exists
      is expected to be truthy
    when branch does not exist
      is expected to be falsey
  #valid_fork_target?
    when target is not passed
      when current user is an admin
        is expected to be truthy
      when current_user is not an admin
        when target namespace is in valid fork targets
          is expected to be truthy
        when target namespace is not in valid fork targets
          is expected to be falsey
    when target is passed
      when current user is an admin
        is expected to be truthy
      when current user is not an admin
        when target namespace is in valid fork targets
          is expected to be truthy
        when target namespace is not in valid fork targets
          is expected to be falsey

# [RSpecRunTime] Finishing example group spec/services/projects/fork_service_spec.rb. It took 41.4 seconds. Expected to take 49.26 seconds.
# [RSpecRunTime] Starting example group spec/models/commit_spec.rb. Expected to take 42.51 seconds.

Commit
  does not allow STI
  modules
    is expected to includes the Mentionable module
    is expected to includes the Participable module
    is expected to includes the Referable module
    is expected to includes the StaticModel module
    is expected to includes the Presentable module
# [RSpecRunTime] RSpec elapsed time: 10 minutes 1.18 seconds. Current RSS: ~1578M. load average: 1.04 1.11 1.36 1/291 5679


  .lazy
    with project
      behaves like .lazy checks
        when the commits are found
          batches requests for commits
          maintains ordering
          does not attempt to replace methods via BatchLoader
        when not found
          returns nil as commit
    with personal snippet
      behaves like .lazy checks
        when the commits are found
          batches requests for commits
          maintains ordering
          does not attempt to replace methods via BatchLoader
        when not found
          returns nil as commit
    with project snippet
      behaves like .lazy checks
        when the commits are found
          batches requests for commits
          maintains ordering
          does not attempt to replace methods via BatchLoader
        when not found
          returns nil as commit
  .build_from_sidekiq_hash
    returns a Commit
    parses date strings into Time instances
  #diff_refs
    is equal to itself
    from a factory
      is equal to itself
  #author
    looks up the author in a case-insensitive way
    caches the author
    with a user with an unconfirmed e-mail
      returns no user
    using eager loading
      executes only two SQL queries
      preloads the authors for Commits matching a user's primary Email
      preloads the authors for Commits using a User's alternative Email
      preloads the authors for Commits using a User's private commit Email
      preloads the authors for Commits using a User's outdated private commit Email
      sets the author to Nil if an author could not be found for a Commit
      does not execute SQL queries once the authors are preloaded
# [RSpecRunTime] RSpec elapsed time: 10 minutes 5.68 seconds. Current RSS: ~1592M. load average: 1.04 1.11 1.36 1/296 5712


  #committer
    when committer_email is the user's primary email
      when the user email is confirmed
        returns the user
      when the user email is unconfirmed
        returns the user according to confirmed argument
    when committer_email is the user's secondary email
      when the user email is confirmed
        returns the user
      when the user email is unconfirmed
        does not return the user
  #to_reference
    with project
      returns a String reference to the object
      supports a cross-project reference
# [RSpecRunTime] RSpec elapsed time: 10 minutes 7.76 seconds. Current RSS: ~1604M. load average: 1.04 1.11 1.35 1/296 5737


    with personal snippet
      returns a String reference to the object
      supports a cross-snippet reference
    with project snippet
      returns a String reference to the object
      supports a cross-snippet project reference
  .reference_valid?
    ref: "1234567", result: true
      is expected to eq true
    ref: "123456", result: false
      is expected to eq false
    ref: "1", result: false
      is expected to eq false
    ref: "0000000000000000000000000000000000000000", result: true
      is expected to eq true
    ref: "c1acaa58bbcbc3eafe538cb8274ba387047b69f8", result: true
      is expected to eq true
    ref: "H1acaa58bbcbc3eafe538cb8274ba387047b69f8", result: false
      is expected to eq false
    ref: nil, result: false
      is expected to eq false
  #reference_link_text
    with project
      returns a String reference to the object
      supports a cross-project reference
# [RSpecRunTime] RSpec elapsed time: 10 minutes 10.27 seconds. Current RSS: ~1621M. load average: 1.04 1.11 1.35 1/296 5762


    with personal snippet
      returns a String reference to the object
      supports a cross-snippet reference
    with project snippet
      returns a String reference to the object
      supports a cross-snippet project reference
  #title
    returns no_commit_message when safe_message is blank
    truncates a message without a newline at natural break to 80 characters
    truncates a message with a newline before 80 characters at the newline
    does not truncates a message with a newline after 80 but less 100 characters
  #full_title
    returns no_commit_message when safe_message is blank
    returns entire message if there is no newline
    returns first line of message if there is a newLine
    truncates html representation if more than 1KiB
  description
    returns no_commit_message when safe_message is blank
    returns description of commit message if title less than 100 characters
    returns full commit message if commit title more than 100 characters
    truncates html representation if more than 1Mib
# [RSpecRunTime] RSpec elapsed time: 10 minutes 13.07 seconds. Current RSS: ~1645M. load average: 1.03 1.10 1.35 1/296 5797


  delegation
    is expected to respond to #message
    is expected to respond to #authored_date
    is expected to respond to #committed_date
    is expected to respond to #committer_email
    is expected to respond to #author_email
    is expected to respond to #parents
    is expected to respond to #date
    is expected to respond to #diffs
    is expected to respond to #id
  behaves like a mentionable
    generates a descriptive back-reference
    extracts references from its reference property
    creates cross-reference notes
    uses the CachedMarkdownField cache instead of the Mentionable cache
    when there are cached markdown fields
      sends in cached markdown fields when appropriate
# [RSpecRunTime] RSpec elapsed time: 10 minutes 26.02 seconds. Current RSS: ~1562M. load average: 1.03 1.10 1.35 1/297 6265


  #hook_attrs
    is expected to be a kind of Hash
    is expected to include "adds bar folder and branch-test text file to check Repository merged_to_root_ref method"
    is expected to eq "2016-09-27T14:37:46+00:00"
    is expected to contain exactly "bar/branch-test.txt"
    is expected to eq []
    is expected to eq []
# [RSpecRunTime] RSpec elapsed time: 10 minutes 27.96 seconds. Current RSS: ~1569M. load average: 1.02 1.10 1.35 1/297 6290


  #cherry_pick_message
    of a regular commit
      is expected to include "\n\n(cherry picked from commit 88790590ed1337ab189bccaa355f068481c90bec)"
    of a merge commit
      that is found
        is expected to include "\n(cherry picked from commit 9ac6807af07ad49f906d80b153f6c90afa6dfdba)\n\n467dc98f Add new 'videos' directory\n88790590 Upload new video file"
      that is existing but not found
        does not include details of the merged commits
  #reverts_commit?
    is expected to be falsy
    commit has no description
      is expected to be falsy
    another_commit's description does not revert commit
      is expected to be falsy
    another_commit's description reverts commit
      is expected to be truthy
    another_commit's description reverts merged merge request
      is expected to be truthy
  #participants
    includes the commit author
    includes the committer
    includes the authors of the commit notes
  #uri_type with Gitaly enabled
    behaves like #uri_type
      returns the URI type at the given path
      returns nil if the path doesn't exists
      is nil if the path is nil or empty
  .diff_max_files
    returns the current settings
  .diff_max_lines
    returns the current settings
  .diff_safe_max_files
    returns the commit diff max divided by the limit factor of 10
  .diff_safe_max_lines
    returns the commit diff max divided by the limit factor of 10
  .from_hash
    with project
      behaves like returns Commit
        returns a Commit
        wraps a Gitlab::Git::Commit
        stores the correct commit fields
    with personal snippet
      behaves like returns Commit
        returns a Commit
        wraps a Gitlab::Git::Commit
        stores the correct commit fields
    with project snippet
      behaves like returns Commit
        returns a Commit
        wraps a Gitlab::Git::Commit
        stores the correct commit fields
  #draft?
    detects the 'squash! ' prefix
    detects the 'fixup! ' prefix
    detects the 'draft: ' prefix
    detects the '[Draft] ' prefix
    detects the '(draft) ' prefix
    detects the 'Draft: ' prefix
    does not detect a commit just saying 'draft' as draft? == true
    doesn't detect 'FIXUP!' at the start of the title as a draft
    doesn't detect 'Draft - ' at the start of the title as a draft
    doesn't detect 'Wipeout' at the start of the title as a draft
    doesn't detect 'WIP: ' at the start of the title as a draft
    doesn't detect '[WIP] ' at the start of the title as a draft
    doesn't detect 'wip: ' at the start of the title as a draft
# [RSpecRunTime] RSpec elapsed time: 10 minutes 34.31 seconds. Current RSS: ~1631M. load average: 1.02 1.10 1.34 1/296 6482


  .valid_hash?
    checks hash contents
    checks hash length
  signed commits
    returns signature_type properly
    returns has_signature? properly
  #has_been_reverted?
    returns true if the commit has been reverted
    returns false if the commit has not been reverted
  #merged_merge_request
    when commit is a merge commit
      is expected to eq #<MergeRequest id:28 namespace502/project-410!1>
    when commit is a squash commit
      is expected to eq #<MergeRequest id:29 namespace502/project-410!1>
    when commit does not belong to the merge request
      is expected to be nil
  containing refs
    #branches_containing
      behaves like containing ref names
        without arguments
          returns branch names containing the commit
        with limit argument
          returns the appropriate amount branch names
        with tipping refs excluded
          returns branch names containing the commit without the one with the commit at tip
          returns the appropriate amount branch names with limit argument
    #tags_containing
      behaves like containing ref names
        without arguments
          returns branch names containing the commit
        with limit argument
          returns the appropriate amount branch names
        with tipping refs excluded
          returns branch names containing the commit without the one with the commit at tip
          returns the appropriate amount branch names with limit argument

# [RSpecRunTime] Finishing example group spec/models/commit_spec.rb. It took 38.59 seconds. Expected to take 42.51 seconds.
# [RSpecRunTime] Starting example group spec/uploaders/object_storage_spec.rb. Expected to take 40.19 seconds.

ObjectStorage
  #object_store=
    reload the local storage
    reload the REMOTE storage
    object_store is Store::LOCAL
      #store_dir
        is the composition of (base_dir, dynamic_segment)
      #store_path
        uses store_dir
        when a bucket prefix is configured
          uses store_dir and ignores prefix
    object_store is Store::REMOTE
      #store_dir
        is the composition of (dynamic_segment)
      #store_path
        uses store_dir
        when a bucket prefix is configured
          uses the prefix and store_dir
        when model has final path defined for the file column
          uses the final path instead
          and a bucket prefix is configured
            uses the prefix with the final path
  #object_store
    delegates to <mount>_store on model
    when store is null
      uses Store::LOCAL
    when value is set
      returns the given value
  #file_cache_storage?
    when file storage is used
      is expected to be file cache storage
    when is remote storage
      is expected not to be file cache storage
  when persist_object_store? is false
    is expected to be a kind of Avatarable
    is expected to be falsey
    delegates the object_store logic to the `Upload` model
      sets @upload to the found `upload`
      sets @object_store to the `Upload` value
# [RSpecRunTime] RSpec elapsed time: 10 minutes 41.2 seconds. Current RSS: ~1628M. load average: 1.02 1.09 1.34 1/296 6635


    #migrate!
      persist @object_store to the recorded upload
      fails
        is handled gracefully
# [RSpecRunTime] RSpec elapsed time: 10 minutes 42.23 seconds. Current RSS: ~1620M. load average: 1.02 1.09 1.34 1/296 6636


  persist_object_store? is true
    when using JobArtifactsUploader
      checking described_class
        uploader include described_class::Concern
      #use_file
        when file is stored locally
          calls a regular path
        when file is stored remotely
          calls a cache path
          cleans up the cached file
# [RSpecRunTime] RSpec elapsed time: 10 minutes 44.76 seconds. Current RSS: ~1616M. load average: 1.02 1.09 1.34 1/296 6637


      #use_open_file
        when file is stored locally
          returns the file unlinked
          returns the file not unlinked
# [RSpecRunTime] RSpec elapsed time: 10 minutes 45.96 seconds. Current RSS: ~1607M. load average: 1.02 1.09 1.34 1/296 6638


        when file is stored remotely
          returns the file
      #migrate!
        when using the same storage
          to not migrate the storage
        when migrating to local storage
          is expected to eq 1
          local file does not exist
          remote file exist
          does migrate the file
# [RSpecRunTime] RSpec elapsed time: 10 minutes 49.68 seconds. Current RSS: ~1590M. load average: 1.02 1.09 1.34 1/291 6639


        when migrating to remote storage
          file does exist
          when storage is disabled
            to raise an error
# [RSpecRunTime] RSpec elapsed time: 10 minutes 50.94 seconds. Current RSS: ~1584M. load average: 1.02 1.09 1.34 1/291 6640


          when credentials are set
            is expected to eq 2
            does migrate the file
            does delete original file
            when subject save fails
              original file is not removed
# [RSpecRunTime] RSpec elapsed time: 10 minutes 53.63 seconds. Current RSS: ~1582M. load average: 1.02 1.09 1.34 1/291 6641


  #fog_directory
    is expected to eq "directory"
  when file is in use
    cannot migrate
    cannot use_file
    can still migrate other files of the same model
# [RSpecRunTime] RSpec elapsed time: 10 minutes 54.99 seconds. Current RSS: ~1584M. load average: 1.02 1.09 1.34 1/291 6642


  #fog_credentials
    is expected to eq {:provider=>"AWS"}
  #fog_public
    is expected to eq nil
  #fog_attributes
    is expected to eq {}
    with encryption configured
      is expected to eq {"x-amz-server-side-encryption"=>"AES256"}
  .workhorse_authorize
    when FIPS is enabled
      response enables FIPS
    when FIPS is disabled
      response disables FIPS
    when object storage is disabled
      behaves like uses local storage
        behaves like returns the maximum size given
          returns temporary path
          returns temporary path
    when object storage is enabled
      when direct upload is enabled
        uses AWS
          for known length
            behaves like uses remote storage without multipart uploads
              returns links for S3
              behaves like uses remote storage
                does not return multipart upload
                behaves like returns the maximum size given
                  returns temporary path
                  returns remote object properties for a temporary upload
            behaves like handling object storage final upload path
              when use_final_store_path is true
                and final_store_path_root_id was not given
                  raises an error
                and final_store_path_root_id was given
                  uses the full path instead of the temporary one
                  and bucket prefix is configured
                    sets the remote object ID to the final path without prefix
                    returns the final path with prefix
                    creates the pending upload entry without the bucket prefix
          for unknown length
            behaves like uses remote storage with multipart uploads
              returns links for S3
              behaves like uses remote storage
                returns multipart upload
                behaves like returns the maximum size given
                  returns temporary path
                  returns remote object properties for a temporary upload
            behaves like handling object storage final upload path
              when use_final_store_path is true
                and final_store_path_root_id was not given
                  raises an error
                and final_store_path_root_id was given
                  uses the full path instead of the temporary one
                  and bucket prefix is configured
                    sets the remote object ID to the final path without prefix
                    returns the final path with prefix
                    creates the pending upload entry without the bucket prefix
        uses Google
          for known length
            behaves like uses remote storage without multipart uploads
              returns links for Google Cloud
              behaves like uses remote storage
                does not return multipart upload
                behaves like returns the maximum size given
                  returns temporary path
                  returns remote object properties for a temporary upload
            behaves like handling object storage final upload path
              when use_final_store_path is true
                and final_store_path_root_id was not given
                  raises an error
                and final_store_path_root_id was given
                  uses the full path instead of the temporary one
                  and bucket prefix is configured
                    sets the remote object ID to the final path without prefix
                    returns the final path with prefix
                    creates the pending upload entry without the bucket prefix
          for unknown length
            behaves like uses remote storage without multipart uploads
              returns links for Google Cloud
              behaves like uses remote storage
                does not return multipart upload
                behaves like returns the maximum size given
                  returns temporary path
                  returns remote object properties for a temporary upload
            behaves like handling object storage final upload path
              when use_final_store_path is true
                and final_store_path_root_id was not given
                  raises an error
                and final_store_path_root_id was given
                  uses the full path instead of the temporary one
                  and bucket prefix is configured
                    sets the remote object ID to the final path without prefix
                    returns the final path with prefix
                    creates the pending upload entry without the bucket prefix
        uses GDK/minio
          for known length
            behaves like uses remote storage without multipart uploads
              returns links for S3
              behaves like uses remote storage
                does not return multipart upload
                behaves like returns the maximum size given
                  returns temporary path
                  returns remote object properties for a temporary upload
            behaves like handling object storage final upload path
              when use_final_store_path is true
                and final_store_path_root_id was not given
                  raises an error
                and final_store_path_root_id was given
                  uses the full path instead of the temporary one
                  and bucket prefix is configured
                    sets the remote object ID to the final path without prefix
                    returns the final path with prefix
                    creates the pending upload entry without the bucket prefix
          for unknown length
            behaves like uses remote storage with multipart uploads
              returns links for S3
              behaves like uses remote storage
                returns multipart upload
                behaves like returns the maximum size given
                  returns temporary path
                  returns remote object properties for a temporary upload
            behaves like handling object storage final upload path
              when use_final_store_path is true
                and final_store_path_root_id was not given
                  raises an error
                and final_store_path_root_id was given
                  uses the full path instead of the temporary one
                  and bucket prefix is configured
                    sets the remote object ID to the final path without prefix
                    returns the final path with prefix
                    creates the pending upload entry without the bucket prefix
      when direct upload is disabled
        behaves like uses local storage
          behaves like returns the maximum size given
            returns temporary path
            returns temporary path
  #cache!
    when local file is used
      when valid file is used
        when valid file is specified
          properly caches the file
          when object storage and direct upload is specified
            when file is stored
              file to be remotely stored in permament location
          when object storage and direct upload is not used
            when file is stored
              file to be remotely stored in permament location
    when remote file is used
      when valid file is used
        when invalid file is specified
          raises an error
        when non existing file is specified
          raises an error
        when empty remote_id is specified
          uses local storage
        when valid file is specified
          file to be cached and remote stored
          when file is stored
            file to be remotely stored in permament location
          when uploaded file remote_id matches a pending direct upload entry
            file to be cached and remote stored with final path set
            when bucket prefix is configured
              stores the file final path in the db without the prefix
              and file is stored
                completes the matching pending upload entry
            when file is stored
              file to be remotely stored in permament location
              does not trigger Carrierwave copy and delete because it is already in the final location
  #retrieve_from_store!
    uploaders that includes the RecordsUploads extension
      for groups
        batches fetching uploads from the database
        does not attempt to replace methods
        fetches a unique upload for each model
# [RSpecRunTime] RSpec elapsed time: 11 minutes 5.01 seconds. Current RSS: ~1622M. load average: 1.09 1.10 1.34 1/291 6643


      for projects
        batches fetching uploads from the database
        does not attempt to replace methods
        fetches a unique upload for each model
# [RSpecRunTime] RSpec elapsed time: 11 minutes 9.67 seconds. Current RSS: ~1586M. load average: 1.24 1.13 1.35 1/291 6644


      for users
        batches fetching uploads from the database
        does not attempt to replace methods
        fetches a unique upload for each model
# [RSpecRunTime] RSpec elapsed time: 11 minutes 10.99 seconds. Current RSS: ~1583M. load average: 1.24 1.13 1.35 1/291 6645


    filename
      when model has final path defined for the file column
        behaves like ensuring correct filename
          uses the original filename
      when model has no final path defined for the file column
        behaves like ensuring correct filename
          uses the original filename
  #replace_file_without_saving!
    when object storage and direct upload is enabled
      and given file is not a CarrierWave::Storage::Fog::File
        and uploader model has the file_final_path
          uses default CarrierWave behavior and uploads the file to object storage using the final path
          behaves like skipping triggers for local file
            allows file to be replaced without triggering any callbacks
            does not trigger pending upload checks
        and uploader model has no file_final_path
          uses default CarrierWave behavior and uploads the file to object storage using the uploader store path
          behaves like skipping triggers for local file
            allows file to be replaced without triggering any callbacks
            does not trigger pending upload checks
  .generate_final_store_path
    returns the generated hashed path nested under the hashed path of the root ID
  OpenFile
    delegates read and size methods
    does not delegate path method

# [RSpecRunTime] Finishing example group spec/uploaders/object_storage_spec.rb. It took 35.75 seconds. Expected to take 40.19 seconds.
# [RSpecRunTime] Starting example group spec/models/namespace_setting_spec.rb. Expected to take 34.57 seconds.

NamespaceSetting
  does not allow STI
  is expected to define :jobs_to_be_done as an enum backed by an integer with values ‹[:basics, :move_repository, :code_storage, :exploring, :ci, :other]›, suffix: true
  is expected to define :enabled_git_access_protocol as an enum backed by an integer with values ‹[:all, :ssh, :http]›, suffix: true
  behaves like sanitizable
    includes Sanitizable
    #default_branch_name
      when input includes javascript tags
        gets sanitized
    #default_branch_name validation
      when input contains pre-escaped html entities
        is not valid
      when it contains a path component
        is not valid
  Associations
    is expected to belong to namespace required: false
  default values
    is expected to eq {}
  validations
    #default_branch_name_content
      when not set
        behaves like doesn't return an error
          doesn't return an error
      when set
        behaves like doesn't return an error
          doesn't return an error
      when an empty string
        behaves like doesn't return an error
          doesn't return an error
    #allow_mfa_for_group
      group is top-level group
        is valid
      group is a subgroup
        is invalid
    #allow_resource_access_token_creation_for_group
      group is top-level group
        is valid
      group is a subgroup
        is invalid when resource access token creation is not enabled
        is valid when resource access tokens are enabled
    default_branch_protections_defaults validations
      is expected to validate jsonb schema "default_branch_protection_defaults"
      when json is more than 1kb
        is expected not to allow :default_branch_protection_defaults to be ‹{name: "huch9462w0fqylih2364rv7o7j1paao4s4vmjovak8r37xnacf1z76wqftgot3a7u3fue18nw5mkxjiuqw4ojn2g9yc3ioal2t1upx0yirhksnhp5ym38b8ofbdsqnpxaqmr3hwr6t5venb7cv00sdej2hnkt43tzzbu6sf2p5ys3txvhg6nz3zvirro5u36i72s92ucx3y6uv1gj9ppwaiybrk1fq0drcz889br69swhk5aimu0axnt9ricwna8fald2u6qzm7eudyf1zelyqbnl9qzffn2jnqr11ndx8v3s26k0edrmf0y3f3k6f0ell8rt19exuqusm33mnvlxq28acckbcq9wwo7ddhubab73yyg1h59ngzvxif2bp63arjl9ag434pq2xx8i4xu14gqh6wkatr6zi5u1ie9n4cml1brkwcvoqflamgsy44acka0nq5e43l9oa5y3ap2ybfu2xawoqzeiyc0wjhajagzb4o2dxcb380q5uydsrszt25fxnnbmg8or67gwxr31yo8duhbarmjhjat89lj3ltofvo5rmsdebz134z9qq07dod39hmepd2zszgul7ttqg4wcefxdhdvjl6s1ovfvn0wmjkh6zdhdr26qps4vzzqevuxpaj5l577wgsyf2ybbd3mc8ir0a9ux84axut6aeqzw1q9ovmsiunszqxkrt45nchmkbf47czx1o77kpvq1oihtyonespe22k7dmw6j5r8qs025fmhjiel95y56znw01kj2086aw7qezrx9k5xknihcickd6z8pau2aqmyp5yjla20z129ad0rjii6kvxzi3zrxwk6muthfvqq8oegmt5yzt2uml8v5qab56onqzt277z0et13ko1o6g2qhy20m9lnlstdzer8atcwpqs9m5iprf3m18a87f32es1bcfy5g0x6h0omast43i1mhmrz2kh0yeez40beahfpdyxzauoty4p5r5dwgrxui2uh9d29lnnubpa68oudbpt0sviujjf16nacpbhluo5mlx13zvphw4du7jxllsu7l19m038ujywzsm3744jbdmnlqenkrrnq2ksqwukl16bt5ji1q7nyumyafsf2y0i63c"}›
      when json less than 1kb
        is expected to allow :default_branch_protection_defaults to be ‹{name: "sdq4zyadft4fl7et1nn0lb3p0f18z59cfc0kq1nu4bjuz98r2k8gkr4ggpcwepugo0umrmu525p5j34s1iu0zt52vttlu6dhdvkr3wpfnkc59m9uuepweygvmzbjeanq1hhq4szqtgb029m1rsfxonlo04b2oq0w1owgegwzrag0ryb3zusagmi1aigivln461kf6kky3jfsvlx5s1p9aw4ci52bv50j459ixf34t1wxmifhjoos9d9s2ompicwpt0jnrrwtrgipww81s98sdgxrbchntqimq42xg6ldnna6kw00r6jg61pdn5nwvroug5wzovm1kwlmlv8zv2n3ymsz44o6kjz35xk5u68y8tb5wiwz9m5k2que54fss4vabvf8itrny3rzcjqs6dk25mp17d55vvyt2ct2ifc5xs7t30qcip9qhd9pxbtxrcfy4sdkxiq2skggsmfcdvr7kh561j4kgpriryyx6qbemgf4iwkjrr85646g13dl2kea"}›
  #prevent_sharing_groups_outside_hierarchy
    when this namespace is a root ancestor
      returns the actual stored value
    when this namespace is a descendant
      returns the value stored for the parent settings
  #show_diff_preview_in_email?
    when not a subgroup
      does not query the db when there is no parent group
      when :show_diff_preview_in_email is false
        returns false
      when :show_diff_preview_in_email is true
        returns true
    when a group has parent groups
      when a parent group has disabled diff previews
        returns false
      when all parent groups have enabled diff previews
        returns true
  #emails_enabled?
    returns true when the attribute is true
    returns false when the attribute is false
    when a group has parent groups
      returns true when no parent has disabled emails
      when grandparent emails are disabled
        returns false
      when parent emails are disabled
        returns false
  runner registration settings
    #runner_registration_enabled?
      when runner registration is enabled
        is expected to be truthy
        behaves like with runner registration settings changing in hierarchy
          when there are no parents
            is expected to be truthy
            when no group can register runners
              is expected to be falsey
          when there are parents
            when a parent group has runner registration disabled
              is expected to be falsey
            when all parent groups have runner registration enabled
              is expected to be truthy
      when runner registration is disabled
        is expected to be falsey
        does not query the db
        when group runner registration is disallowed
          is expected to be falsey
    #all_ancestors_have_runner_registration_enabled?
      behaves like with runner registration settings changing in hierarchy
        when there are no parents
          is expected to be truthy
          when no group can register runners
            is expected to be falsey
        when there are parents
          when a parent group has runner registration disabled
            is expected to be falsey
          when all parent groups have runner registration enabled
            is expected to be truthy
  #allow_runner_registration_token?
    when a top-level group
      when :allow_runner_registration_token is false
        returns false
        does not query the db
      when :allow_runner_registration_token is true
        returns true
        when disallowed by application setting
          is expected to be falsey
    when a group has parent groups
      when a parent group has runner registration disabled
        is expected to be falsey
      when all parent groups have runner registration enabled
        is expected to be truthy
        when disallowed by application setting
          is expected to be falsey
  #toggle_security_policy_custom_ci
    behaves like a cascading namespace setting boolean attribute
      #toggle_security_policy_custom_ci
        when there is no parent
          and the value is not nil
            returns the local value
          and the value is nil
            returns the application settings value
        when parent does not lock the attribute
          and value is not nil
            returns local setting when present
            returns the parent value when local value is nil
            returns the correct dirty value
            does not return the application setting value when parent value is false
          and the value is nil
            cascades to the application settings value
          when multiple ancestors set a value
            returns the closest ancestor value
        when parent locks the attribute
          returns the parent value
          does not allow the local value to be saved
        when the application settings locks the attribute
          returns the application setting value
          does not allow the local value to be saved
        when parent locked the attribute then the application settings locks it
          returns the application setting value
      #toggle_security_policy_custom_ci?
        aliases the method when the attribute is a boolean
      #toggle_security_policy_custom_ci=
        parent_value: true, current_subgroup_value: nil, new_subgroup_value: true, expected_subgroup_value_after_update: nil
          validates starting values from before block
          does not save the value locally when it matches cascaded value
          when mass assigned
            does not save the value locally when it matches cascaded value
        parent_value: true, current_subgroup_value: nil, new_subgroup_value: "true", expected_subgroup_value_after_update: nil
          validates starting values from before block
          does not save the value locally when it matches cascaded value
          when mass assigned
            does not save the value locally when it matches cascaded value
        parent_value: true, current_subgroup_value: false, new_subgroup_value: true, expected_subgroup_value_after_update: true
          validates starting values from before block
          does not save the value locally when it matches cascaded value
          when mass assigned
            does not save the value locally when it matches cascaded value
        parent_value: true, current_subgroup_value: false, new_subgroup_value: "true", expected_subgroup_value_after_update: true
          validates starting values from before block
          does not save the value locally when it matches cascaded value
          when mass assigned
            does not save the value locally when it matches cascaded value
        parent_value: true, current_subgroup_value: true, new_subgroup_value: false, expected_subgroup_value_after_update: false
          validates starting values from before block
          does not save the value locally when it matches cascaded value
          when mass assigned
            does not save the value locally when it matches cascaded value
        parent_value: true, current_subgroup_value: true, new_subgroup_value: "false", expected_subgroup_value_after_update: false
          validates starting values from before block
          does not save the value locally when it matches cascaded value
          when mass assigned
            does not save the value locally when it matches cascaded value
        parent_value: false, current_subgroup_value: nil, new_subgroup_value: false, expected_subgroup_value_after_update: nil
          validates starting values from before block
          does not save the value locally when it matches cascaded value
          when mass assigned
            does not save the value locally when it matches cascaded value
        parent_value: false, current_subgroup_value: nil, new_subgroup_value: true, expected_subgroup_value_after_update: true
          validates starting values from before block
          does not save the value locally when it matches cascaded value
          when mass assigned
            does not save the value locally when it matches cascaded value
        parent_value: false, current_subgroup_value: true, new_subgroup_value: false, expected_subgroup_value_after_update: false
          validates starting values from before block
          does not save the value locally when it matches cascaded value
          when mass assigned
            does not save the value locally when it matches cascaded value
        parent_value: false, current_subgroup_value: false, new_subgroup_value: true, expected_subgroup_value_after_update: true
          validates starting values from before block
          does not save the value locally when it matches cascaded value
          when mass assigned
            does not save the value locally when it matches cascaded value
      #toggle_security_policy_custom_ci_locked?
        when attribute is locked by self
          is not locked by default
          is locked when including self
        when parent does not lock the attribute
          behaves like not locked
            is not locked by an ancestor
            is not locked by application setting
            does not return a locked namespace
        when parent locks the attribute
          is locked by an ancestor
          is not locked by application setting
          returns a locked namespace settings object
        when not locked by application settings
          behaves like not locked
            is not locked by an ancestor
            is not locked by application setting
            does not return a locked namespace
        when locked by application settings
          is not locked by an ancestor
          is locked by application setting
          does not return a locked namespace
      #lock_toggle_security_policy_custom_ci=
        when parent locks the attribute
          does not allow the attribute to be saved
        when parent does not lock the attribute
          allows the lock to be set when the attribute is not nil
          does not allow the lock to be saved when the attribute is nil
          copies the cascaded value when locking the attribute if the local value is nil
        when application settings locks the attribute
          does not allow the attribute to be saved
        when application_settings does not lock the attribute
          allows the attribute to be saved
      after update callback
        clears descendant locks
  #math_rendering_limits_enabled
    behaves like a cascading namespace setting boolean attribute
      #math_rendering_limits_enabled
        when there is no parent
          and the value is not nil
            returns the local value
          and the value is nil
            returns the application settings value
        when parent does not lock the attribute
          and value is not nil
            returns local setting when present
            returns the parent value when local value is nil
            returns the correct dirty value
            does not return the application setting value when parent value is false
          and the value is nil
            cascades to the application settings value
          when multiple ancestors set a value
            returns the closest ancestor value
        when parent locks the attribute
          returns the parent value
          does not allow the local value to be saved
        when the application settings locks the attribute
          returns the application setting value
          does not allow the local value to be saved
        when parent locked the attribute then the application settings locks it
          returns the application setting value
      #math_rendering_limits_enabled?
        aliases the method when the attribute is a boolean
      #math_rendering_limits_enabled=
        parent_value: true, current_subgroup_value: nil, new_subgroup_value: true, expected_subgroup_value_after_update: nil
          validates starting values from before block
          does not save the value locally when it matches cascaded value
          when mass assigned
            does not save the value locally when it matches cascaded value
        parent_value: true, current_subgroup_value: nil, new_subgroup_value: "true", expected_subgroup_value_after_update: nil
          validates starting values from before block
          does not save the value locally when it matches cascaded value
          when mass assigned
            does not save the value locally when it matches cascaded value
        parent_value: true, current_subgroup_value: false, new_subgroup_value: true, expected_subgroup_value_after_update: true
          validates starting values from before block
          does not save the value locally when it matches cascaded value
          when mass assigned
            does not save the value locally when it matches cascaded value
        parent_value: true, current_subgroup_value: false, new_subgroup_value: "true", expected_subgroup_value_after_update: true
          validates starting values from before block
          does not save the value locally when it matches cascaded value
          when mass assigned
            does not save the value locally when it matches cascaded value
        parent_value: true, current_subgroup_value: true, new_subgroup_value: false, expected_subgroup_value_after_update: false
          validates starting values from before block
          does not save the value locally when it matches cascaded value
          when mass assigned
            does not save the value locally when it matches cascaded value
        parent_value: true, current_subgroup_value: true, new_subgroup_value: "false", expected_subgroup_value_after_update: false
          validates starting values from before block
          does not save the value locally when it matches cascaded value
          when mass assigned
            does not save the value locally when it matches cascaded value
        parent_value: false, current_subgroup_value: nil, new_subgroup_value: false, expected_subgroup_value_after_update: nil
          validates starting values from before block
          does not save the value locally when it matches cascaded value
          when mass assigned
            does not save the value locally when it matches cascaded value
        parent_value: false, current_subgroup_value: nil, new_subgroup_value: true, expected_subgroup_value_after_update: true
          validates starting values from before block
          does not save the value locally when it matches cascaded value
          when mass assigned
            does not save the value locally when it matches cascaded value
        parent_value: false, current_subgroup_value: true, new_subgroup_value: false, expected_subgroup_value_after_update: false
          validates starting values from before block
          does not save the value locally when it matches cascaded value
          when mass assigned
            does not save the value locally when it matches cascaded value
        parent_value: false, current_subgroup_value: false, new_subgroup_value: true, expected_subgroup_value_after_update: true
          validates starting values from before block
          does not save the value locally when it matches cascaded value
          when mass assigned
            does not save the value locally when it matches cascaded value
      #math_rendering_limits_enabled_locked?
        when attribute is locked by self
          is not locked by default
          is locked when including self
        when parent does not lock the attribute
          behaves like not locked
            is not locked by an ancestor
            is not locked by application setting
            does not return a locked namespace
        when parent locks the attribute
          is locked by an ancestor
          is not locked by application setting
          returns a locked namespace settings object
        when not locked by application settings
          behaves like not locked
            is not locked by an ancestor
            is not locked by application setting
            does not return a locked namespace
        when locked by application settings
          is not locked by an ancestor
          is locked by application setting
          does not return a locked namespace
      #lock_math_rendering_limits_enabled=
        when parent locks the attribute
          does not allow the attribute to be saved
        when parent does not lock the attribute
          allows the lock to be set when the attribute is not nil
          does not allow the lock to be saved when the attribute is nil
          copies the cascaded value when locking the attribute if the local value is nil
        when application settings locks the attribute
          does not allow the attribute to be saved
        when application_settings does not lock the attribute
          allows the attribute to be saved
      after update callback
        clears descendant locks
  default_branch_protection_defaults
    returns the value for default_branch_protection_defaults
    when provided with content that does not match the JSON schema
      is expected to allow :default_branch_protection_defaults to be ‹{name: "bar"}›
      is expected not to allow :default_branch_protection_defaults to be ‹{foo: "bar"}›

# [RSpecRunTime] Finishing example group spec/models/namespace_setting_spec.rb. It took 28.3 seconds. Expected to take 34.57 seconds.
# [RSpecRunTime] Starting example group spec/services/issues/import_csv_service_spec.rb. Expected to take 31.64 seconds.

Issues::ImportCsvService
  #execute
    behaves like correctly handles invalid files
      when given file with unsupported extension
        behaves like invalid file
          returns invalid file error
      when given empty file
        behaves like invalid file
          returns invalid file error
      when given file without headers
        behaves like invalid file
          returns invalid file error
      behaves like importer with email notification
        notifies user of import result
# [RSpecRunTime] RSpec elapsed time: 11 minutes 44.77 seconds. Current RSS: ~1624M. load average: 1.13 1.12 1.33 1/291 6646


      behaves like an issuable importer
        records the import attempt if resource is an issue
# [RSpecRunTime] RSpec elapsed time: 11 minutes 46.24 seconds. Current RSS: ~1621M. load average: 1.13 1.12 1.33 1/291 6647


    with a file generated by Gitlab CSV export
      imports the CSV without errors
      correctly sets the issuable attributes
      behaves like importer with email notification
        notifies user of import result
# [RSpecRunTime] RSpec elapsed time: 11 minutes 51.37 seconds. Current RSS: ~1578M. load average: 1.11 1.11 1.33 1/291 6648


      behaves like an issuable importer
        records the import attempt if resource is an issue
# [RSpecRunTime] RSpec elapsed time: 11 minutes 52.97 seconds. Current RSS: ~1568M. load average: 1.11 1.11 1.33 1/291 6649


    with comma delimited file
      imports CSV without errors
      correctly sets the issuable attributes
      behaves like importer with email notification
        notifies user of import result
# [RSpecRunTime] RSpec elapsed time: 11 minutes 56.53 seconds. Current RSS: ~1565M. load average: 1.10 1.11 1.33 1/291 6650


      behaves like an issuable importer
        records the import attempt if resource is an issue
# [RSpecRunTime] RSpec elapsed time: 11 minutes 57.73 seconds. Current RSS: ~1563M. load average: 1.10 1.11 1.33 1/291 6651


    with tab delimited file with error row
      imports CSV with some error rows
      correctly sets the issuable attributes
      behaves like importer with email notification
        notifies user of import result
# [RSpecRunTime] RSpec elapsed time: 12 minutes 0.84 second. Current RSS: ~1563M. load average: 1.10 1.11 1.33 1/292 6652


      behaves like an issuable importer
        records the import attempt if resource is an issue
# [RSpecRunTime] RSpec elapsed time: 12 minutes 1.98 seconds. Current RSS: ~1564M. load average: 1.09 1.11 1.33 1/292 6653


    with semicolon delimited file with CRLF
      imports CSV with a blank row
      correctly sets the issuable attributes
      behaves like importer with email notification
        notifies user of import result
# [RSpecRunTime] RSpec elapsed time: 12 minutes 5.87 seconds. Current RSS: ~1566M. load average: 1.09 1.11 1.33 1/292 6654


      behaves like an issuable importer
        records the import attempt if resource is an issue
# [RSpecRunTime] RSpec elapsed time: 12 minutes 7.28 seconds. Current RSS: ~1565M. load average: 1.09 1.11 1.32 1/292 6655


  #execute
    sets all issueable attributes and executes quick actions
    behaves like performs a spam check
      initializes issue create service with expected spam check parameter
# [RSpecRunTime] RSpec elapsed time: 12 minutes 9.32 seconds. Current RSS: ~1564M. load average: 1.09 1.11 1.32 1/292 6656


    when user is an admin
      behaves like performs a spam check
        initializes issue create service with expected spam check parameter

# [RSpecRunTime] Finishing example group spec/services/issues/import_csv_service_spec.rb. It took 27.81 seconds. Expected to take 31.64 seconds.
# [RSpecRunTime] Starting example group spec/models/award_emoji_spec.rb. Expected to take 27.17 seconds.

AwardEmoji
  does not allow STI
  Associations
    is expected to belong to awardable required: false
    is expected to belong to user required: false
  modules
    is expected to includes the Participable module
  validations
    is expected to validate that :awardable cannot be empty/falsy
    is expected to validate that :user cannot be empty/falsy
    is expected to validate that :name cannot be empty/falsy
    scoped uniqueness validation
      rejects duplicate award emoji
      allows duplicate award emoji for ghost users
      when importing
        allows duplicate award emoji
# [RSpecRunTime] RSpec elapsed time: 12 minutes 13.29 seconds. Current RSS: ~1568M. load average: 1.08 1.10 1.32 1/291 6657


    custom emoji
      is accepted on subgroup issue
      is not supported on personal snippet (yet)
      with issue
        is accepted
# [RSpecRunTime] RSpec elapsed time: 12 minutes 14.97 seconds. Current RSS: ~1563M. load average: 1.08 1.10 1.32 1/291 6658


      with merge_request
        is accepted
      with note_on_issue
        is accepted
      with snippet
        is accepted
  scopes
    .upvotes
      is expected to contain exactly #<AwardEmoji id: 4, name: "thumbsup", user_id: 1022, awardable_type: "Issue", created_at: "2024-04-10 21:01:12.215424083 +0000", updated_at: "2024-04-10 21:01:12.215424083 +0000", awardable_id: 107>
# [RSpecRunTime] RSpec elapsed time: 12 minutes 16.83 seconds. Current RSS: ~1560M. load average: 1.07 1.10 1.32 1/291 6659


    .downvotes
      is expected to contain exactly #<AwardEmoji id: 5, name: "thumbsdown", user_id: 1024, awardable_type: "Issue", created_at: "2024-04-...-10 21:01:12.699228491 +0000", updated_at: "2024-04-10 21:01:12.699228491 +0000", awardable_id: 108>
    .named
      is expected to contain exactly #<AwardEmoji id: 4, name: "thumbsup", user_id: 1022, awardable_type: "Issue", created_at: "2024-04-10 21:01:12.215424083 +0000", updated_at: "2024-04-10 21:01:12.215424083 +0000", awardable_id: 107>
      is expected to contain exactly #<AwardEmoji id: 4, name: "thumbsup", user_id: 1022, awardable_type: "Issue", created_at: "2024-04-10 21:01:12.215424083 +0000", updated_at: "2024-04-10 21:01:12.215424083 +0000", awardable_id: 107> and #<AwardEmoji id: 5, name: "thumbsdown", user_id: 1024, awardable_type: "Issue", created_at: "2024-04-...-10 21:01:12.699228491 +0000", updated_at: "2024-04-10 21:01:12.699228491 +0000", awardable_id: 108>
    .awarded_by
      is expected to contain exactly #<AwardEmoji id: 4, name: "thumbsup", user_id: 1022, awardable_type: "Issue", created_at: "2024-04-10 21:01:12.215424083 +0000", updated_at: "2024-04-10 21:01:12.215424083 +0000", awardable_id: 107>
      is expected to contain exactly #<AwardEmoji id: 4, name: "thumbsup", user_id: 1022, awardable_type: "Issue", created_at: "2024-04-10 21:01:12.215424083 +0000", updated_at: "2024-04-10 21:01:12.215424083 +0000", awardable_id: 107> and #<AwardEmoji id: 5, name: "thumbsdown", user_id: 1024, awardable_type: "Issue", created_at: "2024-04-...-10 21:01:12.699228491 +0000", updated_at: "2024-04-10 21:01:12.699228491 +0000", awardable_id: 108>
  broadcasting updates
    on a note
      broadcasts updates on the note when saved
      broadcasts updates on the note when destroyed
      when importing
        does not broadcast updates on the note when saved
# [RSpecRunTime] RSpec elapsed time: 12 minutes 19.31 seconds. Current RSS: ~1564M. load average: 1.07 1.10 1.32 1/291 6660


    on another awardable
      does not broadcast updates on the issue when saved
      does not broadcast updates on the issue when destroyed
# [RSpecRunTime] RSpec elapsed time: 12 minutes 20.63 seconds. Current RSS: ~1562M. load average: 1.07 1.10 1.32 2/292 6661


  bumping updated at
    calls bump_updated_at on the note when saved
    calls bump_updated_at on the note when destroyed
    on another awardable
      does not error out when saved
      does not error out when destroy
# [RSpecRunTime] RSpec elapsed time: 12 minutes 23.23 seconds. Current RSS: ~1556M. load average: 1.07 1.10 1.32 1/291 6662


  .award_counts_for_user
    returns the awarded emoji in descending order
    limits the returned number of rows
# [RSpecRunTime] RSpec elapsed time: 12 minutes 28.69 seconds. Current RSS: ~1542M. load average: 1.06 1.10 1.32 1/291 6663


  updating upvotes_count
    on an issue
      updates upvotes_count on the issue when saved
      updates upvotes_count on the issue when destroyed
# [RSpecRunTime] RSpec elapsed time: 12 minutes 30.11 seconds. Current RSS: ~1542M. load average: 1.06 1.10 1.32 1/291 6664


    on another awardable
      does not update upvotes_count on the merge_request when saved
      does not update upvotes_count on the merge_request when destroyed
# [RSpecRunTime] RSpec elapsed time: 12 minutes 32.22 seconds. Current RSS: ~1559M. load average: 1.06 1.10 1.31 1/297 6744


  #url
    is nil for built-in emoji
    is nil for unrecognized emoji
    is set for custom emoji
    when inside subgroup
      is set for custom emoji
# [RSpecRunTime] RSpec elapsed time: 12 minutes 33.47 seconds. Current RSS: ~1559M. load average: 1.06 1.10 1.31 1/297 6745


  #to_ability_name
    returns correct ability name
# [RSpecRunTime] RSpec elapsed time: 12 minutes 34.56 seconds. Current RSS: ~1566M. load average: 1.06 1.10 1.31 1/297 6785



# [RSpecRunTime] Finishing example group spec/models/award_emoji_spec.rb. It took 24.99 seconds. Expected to take 27.17 seconds.
# [RSpecRunTime] Starting example group spec/services/files/multi_service_spec.rb. Expected to take 26.39 seconds.

Files::MultiService
  #execute
    with a valid action
      returns a hash with the :success status
# [RSpecRunTime] RSpec elapsed time: 12 minutes 35.98 seconds. Current RSS: ~1567M. load average: 1.06 1.10 1.31 1/297 6824


    with an invalid action
      returns a hash with the :error status
# [RSpecRunTime] RSpec elapsed time: 12 minutes 37.03 seconds. Current RSS: ~1576M. load average: 1.05 1.10 1.31 1/297 6839


    Updating files
      when the file has been previously updated
        rejects the commit
# [RSpecRunTime] RSpec elapsed time: 12 minutes 38.15 seconds. Current RSS: ~1574M. load average: 1.05 1.10 1.31 1/296 6878


      when file not changed, but later commit id is used
        accepts the commit
# [RSpecRunTime] RSpec elapsed time: 12 minutes 39.22 seconds. Current RSS: ~1580M. load average: 1.05 1.10 1.31 1/296 6919


      when the file have not been modified
        accepts the commit
# [RSpecRunTime] RSpec elapsed time: 12 minutes 40.3 seconds. Current RSS: ~1588M. load average: 1.05 1.10 1.31 1/296 6958


    changing execute_filemode of a file
      accepts the commit
      updates the execute_filemode of the file
      when the file doesn't exists
        rejects the commit
# [RSpecRunTime] RSpec elapsed time: 12 minutes 43.49 seconds. Current RSS: ~1599M. load average: 1.05 1.09 1.31 1/296 7054


    when moving a file
      when original file has been updated
        rejects the commit
# [RSpecRunTime] RSpec elapsed time: 12 minutes 44.62 seconds. Current RSS: ~1599M. load average: 1.05 1.09 1.31 1/296 7093


      when original file has not been updated
        moves the file
        when content is nil
          moves the existing content untouched
# [RSpecRunTime] RSpec elapsed time: 12 minutes 46.75 seconds. Current RSS: ~1597M. load average: 1.04 1.09 1.31 1/296 7184


        when content is an empty string
          moves the file and empties it
# [RSpecRunTime] RSpec elapsed time: 12 minutes 47.85 seconds. Current RSS: ~1594M. load average: 1.04 1.09 1.31 1/296 7228


    when creating a file matching an LFS filter
      creates an LFS pointer
      creates an LfsObject with the file's content
      links the LfsObject to the project
      with base64 encoded content
        creates an LFS pointer
        creates an LfsObject with the file's content
# [RSpecRunTime] RSpec elapsed time: 12 minutes 53.02 seconds. Current RSS: ~1588M. load average: 1.04 1.09 1.31 1/296 7385


    when file status validation is skipped
      does not check the last commit
      creates the file
# [RSpecRunTime] RSpec elapsed time: 12 minutes 55.07 seconds. Current RSS: ~1588M. load average: 1.04 1.09 1.31 1/296 7455


    when force is set to true and branch already exists
      is still a success
# [RSpecRunTime] RSpec elapsed time: 12 minutes 56.13 seconds. Current RSS: ~1588M. load average: 1.04 1.09 1.31 1/296 7495



# [RSpecRunTime] Finishing example group spec/services/files/multi_service_spec.rb. It took 21.6 seconds. Expected to take 26.39 seconds.
# [RSpecRunTime] Starting example group spec/serializers/issue_entity_spec.rb. Expected to take 25.09 seconds.

IssueEntity
  has Issuable attributes
  has time estimation attributes
  web_url
    when issue is of type task
      has a work item path with iid
# [RSpecRunTime] RSpec elapsed time: 12 minutes 58.64 seconds. Current RSS: ~1581M. load average: 1.04 1.09 1.30 1/296 7496


  type
    has an issue type
  current_user
    has the exprected permissions
  when issue got moved
    when user cannot read target project
      does not return moved_to_id
# [RSpecRunTime] RSpec elapsed time: 13 minutes 2.55 seconds. Current RSS: ~1553M. load average: 1.03 1.09 1.30 1/297 7497


    when user can read target project
      returns moved moved_to_id
# [RSpecRunTime] RSpec elapsed time: 13 minutes 4.86 seconds. Current RSS: ~1538M. load average: 1.03 1.09 1.30 1/297 7498


  when issue got duplicated
    when user cannot read new issue
      does not return duplicated_to_id
# [RSpecRunTime] RSpec elapsed time: 13 minutes 6.22 seconds. Current RSS: ~1530M. load average: 1.03 1.09 1.30 1/294 7499


    when user can read target project
      returns duplicated duplicated_to_id
# [RSpecRunTime] RSpec elapsed time: 13 minutes 7.65 seconds. Current RSS: ~1525M. load average: 1.03 1.08 1.30 1/291 7500


  when issuable in active or archived project
    when project is active
      returns archived false
      returns nil for archived project doc
# [RSpecRunTime] RSpec elapsed time: 13 minutes 9.48 seconds. Current RSS: ~1523M. load average: 1.03 1.08 1.30 1/291 7501


    when project is archived
      returns archived true
      returns archived project doc
# [RSpecRunTime] RSpec elapsed time: 13 minutes 11.5 seconds. Current RSS: ~1524M. load average: 0.95 1.07 1.29 1/291 7502


  behaves like issuable entity current_user properties
    can_create_confidential_note
      when user can create confidential notes
        is expected to equal true
      when user cannot create confidential notes
        is expected to eq false
  when issue has email participants
    with anonymous user
      returns obfuscated email participants email
    with signed in user
      when user has no role in project
        returns obfuscated email participants email
      when user has guest role in project
        returns obfuscated email participants email
      when user has (at least) reporter role in project
        returns full email participants email

# [RSpecRunTime] Finishing example group spec/serializers/issue_entity_spec.rb. It took 20.14 seconds. Expected to take 25.09 seconds.
# [RSpecRunTime] Starting example group spec/models/abuse_report_spec.rb. Expected to take 22.75 seconds.

AbuseReport
  does not allow STI
  is expected to be valid
  associations
    is expected to belong to reporter class_name => User required: false inverse_of => reported_abuse_reports
    is expected to belong to resolved_by class_name => User required: false inverse_of => resolved_abuse_reports
    is expected to belong to user required: false inverse_of => abuse_reports
    is expected to have many events class_name => ResourceEvents::AbuseReportEvent inverse_of => abuse_report
    is expected to have many notes
    is expected to have many user_mentions class_name => Abuse::Reports::UserMention
    is expected to have many admin_abuse_report_assignees class_name => Admin::AbuseReportAssignee
    is expected to have many assignees class_name => User through admin_abuse_report_assignees
    aliases reporter to author
# [RSpecRunTime] RSpec elapsed time: 13 minutes 18.48 seconds. Current RSS: ~1562M. load average: 0.95 1.06 1.29 1/292 7503


  validations
    is expected to validate that :reporter cannot be empty/falsy
    is expected to validate that :user cannot be empty/falsy
    is expected to validate that :message cannot be empty/falsy
    is expected to validate that :category cannot be empty/falsy
    is expected to validate that :user_id is case-sensitively unique within the scope of :reporter_id and :category, producing a custom validation error on failure
    is expected to validate that the length of :reported_from_url is at most 512
    is expected to allow :reported_from_url to be ‹"http://gitlab.com"›
    is expected to allow :reported_from_url to be ‹"https://gitlab.com"›
    is expected not to allow :reported_from_url to be ‹"ftp://example.com"›
    is expected not to allow :reported_from_url to be ‹"javascript:alert(window.opener.document.location)"›
    is expected to allow :reported_from_url to be ‹"http://localhost:9000"›
    is expected to allow :reported_from_url to be ‹"https://gitlab.com"›
    is expected to validate that the length of :mitigation_steps is at most 1000
    is expected to allow :links_to_spam to be ‹[]›
    is expected to allow :links_to_spam to be ‹nil›
    is expected to allow :links_to_spam to be ‹""›
    is expected to allow :links_to_spam to be ‹["https://gitlab.com"]›
    is expected to allow :links_to_spam to be ‹["http://localhost:9000"]›
    is expected not to allow :links_to_spam to be ‹["spam"]›
    is expected not to allow :links_to_spam to be ‹["http://localhost:9000", "spam"]›
    is expected to allow :links_to_spam to be ‹["https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com"]›
    is expected not to allow :links_to_spam to be ‹["https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com"]›
    is expected to allow :links_to_spam to be ‹["https://gitlab.com/0DbUGxGPOQtll09h8HMWJ3h0xGbr6u95lC0lJrV0op70OljB7a8JmDYJ7tSLNePW0r74fiZZcaj5i7RimJv7SzQAETpJr8oBB8IRhrqJqzCWkNyrIRVrtSUv2W1YCVpCnhGIHeyU1A7IIDIBrxfZcew3nlGsjNklSoi9DyrrLdT6v10Xwz6nle5RKOIwFd4ZlbcfQD566SBy3kQupkUx9XXP2klgYzV57ct2haRWokAMUTDInzaE6vk9LxQeM0CLqo2fAXUfwOfTgIJXlpcDZHe9CTxYE8O0AhTvRSAURFVUjLIrIAPtO4hTMa7stfcUWoaU8VyRZe3w1bNY87RJ1oCSJy3pwLft8kUNxVnu0p6bW0LXEqM0EkA26PHZrKzPZJdUkZ8kParCS1PYNXronknPJjdMqk54bpI3pKegkd90DM4iSclKWCnI5HaX9grL6fPEGAZJ2KpCcwTy211XNobMFW6z3R8...›
    is expected not to allow :links_to_spam to be ‹["https://gitlab.com/WVBw1CVzTaJoFNvyNilyePooTM6qj1GDCXWgcVKJfSAL4ZvDxoElc5fxPm93eUQKhDkXDTow7ubI50rxOqdolB8RdXNptwzI39A9pyAU4XNP584WYMddkV0YLFe6drNbyMmdPOXocl2TXtBszdMrv0zfWG2tbuX7MZ0jP3GYk02hd9Zcw9Fw5BkEcKbq8OW1J1BKc0UnpMlv4ueOihrXg72L2xXPEFkFD40dJJAH1BtJYMiw6A6mTCTjmz2dy2I41hn0TBfFH6Qd7zlSJFWhA8cJ28HCH3uTGSBuLzxP3KvAsxaOSh4nEhLUNTajtJU2pel9AWe72DpCnZ7Gb72WK6vyr0zNwBikiUbO9Ucj0yhXkwVussQs2FBfsapmc1V8agelJfP6fflRBrCEGysq6jCH9ebXXOw8dOnDM9PO9x2YPr4lmTAGryt9MetQK3JIHlVvmnXxTlWR015G48L9umURjfe76Xr...›
    for screenshot
      is expected not to allow :screenshot to be ‹#<Rack::Test::UploadedFile:0x00007d3c2a14f788 @content_type="text/plain", @original_filename="doc_sample.txt", @tempfile=#<Tempfile:/tmp/doc_sample20240410-338-o09c3i.txt>>›
      is expected to allow :screenshot to be ‹#<Rack::Test::UploadedFile:0x00007d3c29135758 @content_type="image/jpg", @original_filename="rails_sample.jpg", @tempfile=#<Tempfile:/tmp/rails_sample20240410-338-3znyvy.jpg>>›
      is expected to allow :screenshot to be ‹nil›
      is expected to allow :screenshot to be ‹""›
# [RSpecRunTime] RSpec elapsed time: 13 minutes 25.64 seconds. Current RSS: ~1654M. load average: 1.04 1.08 1.29 1/292 7504


    evidence
      is expected not to allow :evidence to be ‹"string"›
      is expected not to allow :evidence to be ‹1.0›
      is expected to allow :evidence to be ‹nil›
      is expected to allow :evidence to be ‹{issues: [{:id=>1, :title=>"test issue title", :description=>"test issue content"}], snippets: [{:id=>2, :content=>"snippet content"}], notes: [{:id=>44, :content=>"notes content"}], user: {:login_count=>1, :account_age=>3, :spam_score=>0.3, :telesign_score=>0.4, :arkos_score=>0.2, :pvs_score=>0.8, :product_coverage=>0.8, :virus_total_score=>0.2}}›
  scopes
    .by_reporter_id
      returns reports with reporter_id equal to the given user id
    .open
      returns reports without resolved_at value
    .closed
      returns reports with resolved_at value
    .by_category
      returns abuse reports with the specified category
    .aggregated_by_user_and_category
      when sort_by_count = true
        sorts by aggregated_count in descending order and created_at in descending order
        returns count with aggregated reports
      when sort_by_count = false
        does not sort using a specific order
  before_validation
    when links to spam contains empty strings
      removes empty strings
  #remove_user
    blocks the user
    lets a worker delete the user
  #notify
    delivers
    returns early when not persisted
  #screenshot_path
    with asset host configured
      returns a full URL with the asset host and system path
    when no asset path configured
      returns a full URL with the base url and system path
  #report_type
    when reported from an issue
      is expected to eq :issue
# [RSpecRunTime] RSpec elapsed time: 13 minutes 31.58 seconds. Current RSS: ~1634M. load average: 1.03 1.08 1.29 1/298 7545


    when reported from a merge request
      is expected to eq :merge_request
    when reported from a profile
      is expected to eq :profile
    comment type
      when reported from an issue comment
        is expected to eq :comment
      when reported from a merge request comment
        is expected to eq :comment
      when anchor exists not from an issue or merge request URL
        is expected to eq :profile
      when note id is invalid
        is expected to eq :merge_request
    when URL cannot be matched
      is expected to be nil
  #reported_content
    when reported from an issue
      is expected to eq "<p data-sourcepos=\"1:1-1:17\" dir=\"auto\">issue description</p>"
# [RSpecRunTime] RSpec elapsed time: 13 minutes 34.0 seconds. Current RSS: ~1632M. load average: 1.03 1.08 1.29 1/298 7585


    when reported from a merge request
      is expected to eq "<p data-sourcepos=\"1:1-1:14\" dir=\"auto\">mr description</p>"
    when reported from a merge request with an invalid note ID
      is expected to eq "<p data-sourcepos=\"1:1-1:14\" dir=\"auto\">mr description</p>"
    when reported from a profile
      is expected to be nil
    when reported from an unknown URL
      is expected to be nil
    when reported from an invalid URL
      is expected to be nil
    when reported from an issue comment
      is expected to eq "<p data-sourcepos=\"1:1-1:16\" dir=\"auto\">comment in issue</p>"
    when reported from a merge request comment
      is expected to eq "<p data-sourcepos=\"1:1-1:13\" dir=\"auto\">comment in mr</p>"
    when report type cannot be determined, because the comment does not exist
      is expected to be nil
  #past_closed_reports_for_user
    returns past closed reports for the same user
  #similar_open_reports_for_user
    returns open reports for the same user and category
    returns no abuse reports when the report is closed
  enums
    is expected to define :category as an enum backed by an integer with values ‹{spam: 1, offensive: 2, phishing: 3, crypto: 4, credentials: 5, copyright: 6, malware: 7, other: 8}›

# [RSpecRunTime] Finishing example group spec/models/abuse_report_spec.rb. It took 20.38 seconds. Expected to take 22.75 seconds.
# [RSpecRunTime] Starting example group spec/finders/ci/pipelines_for_merge_request_finder_spec.rb. Expected to take 19.77 seconds.

Ci::PipelinesForMergeRequestFinder
  #execute
    when actor has permission to read pipelines in both parent and forked projects
      returns all pipelines
# [RSpecRunTime] RSpec elapsed time: 13 minutes 39.44 seconds. Current RSS: ~1598M. load average: 1.03 1.08 1.29 1/298 7638


    when actor has permission to read pipelines in both parent and forked projects
      returns all pipelines
    when actor has permission to read pipelines in the parent project only
      returns pipelines in parent
    when actor has permission to read pipelines in the forked project only
      returns pipelines in fork
    when actor does not have permission to read pipelines
      returns nothing
    when actor is nil
      returns nothing
  #all
    with single merge_request_diffs
      behaves like returning pipelines with proper ordering
        returns all pipelines
# [RSpecRunTime] RSpec elapsed time: 13 minutes 42.87 seconds. Current RSS: ~1582M. load average: 1.11 1.09 1.29 1/298 7839


    with multiple irrelevant merge_request_diffs
      behaves like returning pipelines with proper ordering
        returns all pipelines
# [RSpecRunTime] RSpec elapsed time: 13 minutes 43.97 seconds. Current RSS: ~1581M. load average: 1.11 1.09 1.29 1/298 7884


    with unsaved merge request
      returns pipelines from diff_head_sha
    when pipelines exist for the branch and merge request
      returns merge request pipeline first
      when there are a branch pipeline and a merge request pipeline
        returns merge request pipelines first
# [RSpecRunTime] RSpec elapsed time: 13 minutes 46.93 seconds. Current RSS: ~1585M. load average: 1.10 1.09 1.29 1/298 7986


      when there are multiple merge request pipelines from the same branch
        returns only related merge request pipelines
# [RSpecRunTime] RSpec elapsed time: 13 minutes 48.29 seconds. Current RSS: ~1586M. load average: 1.10 1.09 1.29 1/298 8043


      when detached merge request pipeline is run on head ref of the merge request
        sets the head ref of the merge request to the pipeline ref
        includes the detached merge request pipeline even though the ref is custom path
# [RSpecRunTime] RSpec elapsed time: 13 minutes 50.47 seconds. Current RSS: ~1587M. load average: 1.10 1.09 1.29 1/298 8134



# [RSpecRunTime] Finishing example group spec/finders/ci/pipelines_for_merge_request_finder_spec.rb. It took 13.79 seconds. Expected to take 19.77 seconds.
# [RSpecRunTime] Starting example group spec/services/snippets/create_service_spec.rb. Expected to take 19.6 seconds.

Snippets::CreateService
  #execute
    when ProjectSnippet
      behaves like a service that creates a snippet
        creates a snippet with the provided attributes
# [RSpecRunTime] RSpec elapsed time: 13 minutes 51.65 seconds. Current RSS: ~1581M. load average: 1.09 1.09 1.29 1/298 8149


      behaves like public visibility level restrictions apply
        when user is not an admin
          responds with an error
          does not create a public snippet
        when user is an admin
          responds with success
          creates a public snippet
        when visibility level is passed as a string
          assigns the correct visibility level
      behaves like checking spam
        executes SpamActionService
      behaves like snippet create data is tracked
        increments count when create succeeds
        when create fails
          does not increment count
      behaves like an error service response when save fails
        responds with an error
        does not create the snippet
      behaves like creates repository and files
        creates repository
        commits the files to the repository
        when repository creation action fails
          does not create the snippet
          returns a generic creation error
          does not return a snippet with an id
# [RSpecRunTime] RSpec elapsed time: 13 minutes 56.32 seconds. Current RSS: ~1572M. load average: 1.09 1.09 1.29 1/297 8251


        when repository creation fails with invalid file name
          returns an appropriate error
        when the commit action fails
          does not create the snippet
          destroys the created repository
          destroys the snippet_repository
          logs the error
          returns a generic error
# [RSpecRunTime] RSpec elapsed time: 13 minutes 58.33 seconds. Current RSS: ~1570M. load average: 1.08 1.09 1.29 1/297 8273


        when snippet creation fails
          does not create repository
      behaves like after_save callback to store_mentions
        when mentionable attributes change
          saves mentions
        when mentionable attributes do not change
          does not call store_mentions
        when save fails
          does not call store_mentions
      behaves like when snippet_actions param is present
        creates a snippet with the provided attributes
        commit the files to the repository
        when content or file_name params are present
          a validation error is raised
# [RSpecRunTime] RSpec elapsed time: 14 minutes 0.72 second. Current RSS: ~1565M. load average: 1.08 1.09 1.29 1/298 8333


        when snippet_actions param is invalid
          a validation error is raised
        when snippet_actions contain an action different from "create"
          a validation error is raised
        when "create" operation does not have file_path or is empty
          generates the file path for the files
      behaves like invalid params error response
        responds to errors appropriately
      when uploaded files are passed to the service
        does not move uploaded files to the snippet
    when PersonalSnippet
      behaves like a service that creates a snippet
        creates a snippet with the provided attributes
      behaves like public visibility level restrictions apply
        when user is not an admin
          responds with an error
          does not create a public snippet
        when user is an admin
          responds with success
          creates a public snippet
        when visibility level is passed as a string
          assigns the correct visibility level
      behaves like checking spam
        executes SpamActionService
      behaves like snippet create data is tracked
        increments count when create succeeds
        when create fails
          does not increment count
      behaves like an error service response when save fails
        responds with an error
        does not create the snippet
      behaves like creates repository and files
        creates repository
        commits the files to the repository
        when repository creation action fails
          does not create the snippet
          returns a generic creation error
          does not return a snippet with an id
        when repository creation fails with invalid file name
          returns an appropriate error
        when the commit action fails
          does not create the snippet
          destroys the created repository
          destroys the snippet_repository
          logs the error
          returns a generic error
# [RSpecRunTime] RSpec elapsed time: 14 minutes 6.7 seconds. Current RSS: ~1574M. load average: 1.07 1.08 1.28 1/297 8505


        when snippet creation fails
          does not create repository
      behaves like after_save callback to store_mentions
        when mentionable attributes change
          saves mentions
        when mentionable attributes do not change
          does not call store_mentions
        when save fails
          does not call store_mentions
      behaves like when snippet_actions param is present
        creates a snippet with the provided attributes
        commit the files to the repository
        when content or file_name params are present
          a validation error is raised
        when snippet_actions param is invalid
          a validation error is raised
        when snippet_actions contain an action different from "create"
          a validation error is raised
        when "create" operation does not have file_path or is empty
          generates the file path for the files
      behaves like invalid params error response
        responds to errors appropriately
      when the snippet description contains files
        stores the snippet description correctly
        when there is a validation error
          does not move uploaded files to the snippet

# [RSpecRunTime] Finishing example group spec/services/snippets/create_service_spec.rb. It took 18.86 seconds. Expected to take 19.6 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/git_access_wiki_spec.rb. Expected to take 17.88 seconds.

Gitlab::GitAccessWiki
  #push_access_check
    when user can :create_wiki
      is expected not to raise Exception
      when in a read-only GitLab instance
        behaves like forbidden git access
          prevents access
# [RSpecRunTime] RSpec elapsed time: 14 minutes 10.59 seconds. Current RSS: ~1581M. load average: 1.07 1.08 1.28 1/297 8602


    the user cannot :create_wiki
      is expected to raise wiki not found
  #check_download_access!
    when actor is a user
      behaves like download wiki access by level
        project_visibility: 0, project_member?: true, wiki_access_level: 20, wiki_repo?: true, expected_behavior: :no_error
          provides access by level
        project_visibility: 0, project_member?: true, wiki_access_level: 10, wiki_repo?: true, expected_behavior: :no_error
          provides access by level
        project_visibility: 0, project_member?: true, wiki_access_level: 0, wiki_repo?: true, expected_behavior: :forbidden_wiki
          provides access by level
        project_visibility: 0, project_member?: true, wiki_access_level: 20, wiki_repo?: false, expected_behavior: :not_found_wiki
          provides access by level
        project_visibility: 0, project_member?: true, wiki_access_level: 0, wiki_repo?: false, expected_behavior: :not_found_wiki
          provides access by level
        project_visibility: 0, project_member?: true, wiki_access_level: 10, wiki_repo?: false, expected_behavior: :not_found_wiki
          provides access by level
        project_visibility: 0, project_member?: false, wiki_access_level: 20, wiki_repo?: true, expected_behavior: :not_found_wiki
          provides access by level
        project_visibility: 0, project_member?: false, wiki_access_level: 10, wiki_repo?: true, expected_behavior: :not_found_wiki
          provides access by level
        project_visibility: 0, project_member?: false, wiki_access_level: 0, wiki_repo?: true, expected_behavior: :not_found_wiki
          provides access by level
        project_visibility: 0, project_member?: false, wiki_access_level: 20, wiki_repo?: false, expected_behavior: :not_found_wiki
          provides access by level
        project_visibility: 0, project_member?: false, wiki_access_level: 0, wiki_repo?: false, expected_behavior: :not_found_wiki
          provides access by level
        project_visibility: 0, project_member?: false, wiki_access_level: 10, wiki_repo?: false, expected_behavior: :not_found_wiki
          provides access by level
        project_visibility: 20, project_member?: true, wiki_access_level: 20, wiki_repo?: true, expected_behavior: :no_error
          provides access by level
        project_visibility: 20, project_member?: true, wiki_access_level: 10, wiki_repo?: true, expected_behavior: :no_error
          provides access by level
        project_visibility: 20, project_member?: true, wiki_access_level: 0, wiki_repo?: true, expected_behavior: :forbidden_wiki
          provides access by level
        project_visibility: 20, project_member?: true, wiki_access_level: 20, wiki_repo?: false, expected_behavior: :not_found_wiki
          provides access by level
        project_visibility: 20, project_member?: true, wiki_access_level: 0, wiki_repo?: false, expected_behavior: :not_found_wiki
          provides access by level
        project_visibility: 20, project_member?: true, wiki_access_level: 10, wiki_repo?: false, expected_behavior: :not_found_wiki
          provides access by level
        project_visibility: 20, project_member?: false, wiki_access_level: 20, wiki_repo?: true, expected_behavior: :no_error
          provides access by level
        project_visibility: 20, project_member?: false, wiki_access_level: 10, wiki_repo?: true, expected_behavior: :forbidden_wiki
          provides access by level
        project_visibility: 20, project_member?: false, wiki_access_level: 0, wiki_repo?: true, expected_behavior: :forbidden_wiki
          provides access by level
        project_visibility: 20, project_member?: false, wiki_access_level: 20, wiki_repo?: false, expected_behavior: :not_found_wiki
          provides access by level
        project_visibility: 20, project_member?: false, wiki_access_level: 0, wiki_repo?: false, expected_behavior: :not_found_wiki
          provides access by level
        project_visibility: 20, project_member?: false, wiki_access_level: 10, wiki_repo?: false, expected_behavior: :not_found_wiki
          provides access by level
    when the actor is a deploy token
      when the wiki feature is enabled
        is expected not to raise Exception
      when the wiki feature is disabled
        is expected to raise wiki forbidden
      when the wiki feature is private
        is expected to raise wiki forbidden
    when the actor is a deploy key
      when the wiki is enabled
        is expected not to raise Exception
      when the wiki is disabled
        is expected to raise wiki forbidden
    when actor is a user provided by build via CI_JOB_TOKEN
      behaves like download wiki access by level
        project_visibility: 0, project_member?: true, wiki_access_level: 20, wiki_repo?: true, expected_behavior: :no_error
          provides access by level
        project_visibility: 0, project_member?: true, wiki_access_level: 10, wiki_repo?: true, expected_behavior: :no_error
          provides access by level
        project_visibility: 0, project_member?: true, wiki_access_level: 0, wiki_repo?: true, expected_behavior: :forbidden_wiki
          provides access by level
        project_visibility: 0, project_member?: true, wiki_access_level: 20, wiki_repo?: false, expected_behavior: :not_found_wiki
          provides access by level
        project_visibility: 0, project_member?: true, wiki_access_level: 0, wiki_repo?: false, expected_behavior: :not_found_wiki
          provides access by level
        project_visibility: 0, project_member?: true, wiki_access_level: 10, wiki_repo?: false, expected_behavior: :not_found_wiki
          provides access by level
        project_visibility: 0, project_member?: false, wiki_access_level: 20, wiki_repo?: true, expected_behavior: :not_found_wiki
          provides access by level
        project_visibility: 0, project_member?: false, wiki_access_level: 10, wiki_repo?: true, expected_behavior: :not_found_wiki
          provides access by level
        project_visibility: 0, project_member?: false, wiki_access_level: 0, wiki_repo?: true, expected_behavior: :not_found_wiki
          provides access by level
        project_visibility: 0, project_member?: false, wiki_access_level: 20, wiki_repo?: false, expected_behavior: :not_found_wiki
          provides access by level
        project_visibility: 0, project_member?: false, wiki_access_level: 0, wiki_repo?: false, expected_behavior: :not_found_wiki
          provides access by level
        project_visibility: 0, project_member?: false, wiki_access_level: 10, wiki_repo?: false, expected_behavior: :not_found_wiki
          provides access by level
        project_visibility: 20, project_member?: true, wiki_access_level: 20, wiki_repo?: true, expected_behavior: :no_error
          provides access by level
        project_visibility: 20, project_member?: true, wiki_access_level: 10, wiki_repo?: true, expected_behavior: :no_error
          provides access by level
        project_visibility: 20, project_member?: true, wiki_access_level: 0, wiki_repo?: true, expected_behavior: :forbidden_wiki
          provides access by level
        project_visibility: 20, project_member?: true, wiki_access_level: 20, wiki_repo?: false, expected_behavior: :not_found_wiki
          provides access by level
        project_visibility: 20, project_member?: true, wiki_access_level: 0, wiki_repo?: false, expected_behavior: :not_found_wiki
          provides access by level
        project_visibility: 20, project_member?: true, wiki_access_level: 10, wiki_repo?: false, expected_behavior: :not_found_wiki
          provides access by level
        project_visibility: 20, project_member?: false, wiki_access_level: 20, wiki_repo?: true, expected_behavior: :no_error
          provides access by level
        project_visibility: 20, project_member?: false, wiki_access_level: 10, wiki_repo?: true, expected_behavior: :forbidden_wiki
          provides access by level
        project_visibility: 20, project_member?: false, wiki_access_level: 0, wiki_repo?: true, expected_behavior: :forbidden_wiki
          provides access by level
        project_visibility: 20, project_member?: false, wiki_access_level: 20, wiki_repo?: false, expected_behavior: :not_found_wiki
          provides access by level
        project_visibility: 20, project_member?: false, wiki_access_level: 0, wiki_repo?: false, expected_behavior: :not_found_wiki
          provides access by level
        project_visibility: 20, project_member?: false, wiki_access_level: 10, wiki_repo?: false, expected_behavior: :not_found_wiki
          provides access by level

# [RSpecRunTime] Finishing example group spec/lib/gitlab/git_access_wiki_spec.rb. It took 16.22 seconds. Expected to take 17.88 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/lint_spec.rb. Expected to take 17.45 seconds.

Gitlab::Ci::Lint
  #validate
    when user has permissions to write the ref
      when using default static mode
        does not catch advanced logical errors
        uses YamlProcessor
        behaves like content with errors and warnings
          when content has errors
            returns a result with errors
# [RSpecRunTime] RSpec elapsed time: 14 minutes 27.22 seconds. Current RSS: ~1558M. load average: 1.05 1.08 1.28 1/297 8630


          when content has warnings
            returns a result with warnings
          when content has more warnings than max limit
            returns a result with warnings
          when content has errors and warnings
            returns a result with errors and warnings
        behaves like content is valid
          returns a valid result
          includes extra attributes
        behaves like sets config metadata
          sets merged_config
          sets includes
        behaves like when sha is not provided
          runs YamlProcessor with verify_project_sha: false
        when sha is provided
          runs YamlProcessor with verify_project_sha: true
          behaves like content is valid
            returns a valid result
          when the sha is invalid
            behaves like content is valid
              returns a valid result
          when the sha is from a fork
            when a project ref contains the sha
              behaves like content is valid
                returns a valid result
# [RSpecRunTime] RSpec elapsed time: 14 minutes 32.5 seconds. Current RSS: ~1559M. load average: 1.04 1.08 1.27 1/298 8846


            when a project ref does not contain the sha
              returns an error
          when verify_project_sha is false
            behaves like when sha is not provided
              runs YamlProcessor with verify_project_sha: false
      when using dry run mode
        runs advanced logical validations
        uses Ci::CreatePipelineService
        behaves like content with errors and warnings
          when content has errors
            returns a result with errors
# [RSpecRunTime] RSpec elapsed time: 14 minutes 34.38 seconds. Current RSS: ~1553M. load average: 1.04 1.08 1.27 1/298 8876


          when content has warnings
            returns a result with warnings
          when content has more warnings than max limit
            returns a result with warnings
          when content has errors and warnings
            returns a result with errors and warnings
        behaves like content is valid
          returns a valid result
          does not include extra attributes
        when using a ref other than the default branch
          includes only jobs that are excluded on the default branch
        behaves like sets config metadata
          sets merged_config
          sets includes
# [RSpecRunTime] RSpec elapsed time: 14 minutes 38.13 seconds. Current RSS: ~1542M. load average: 1.12 1.09 1.28 1/297 8991


    when user does not have permissions to write the ref
      when using default static mode
        behaves like content is valid
          returns a valid result
      when using dry run mode
        does not allow validation
  pipeline logger
    when the duration is under the threshold
      does not create a log entry
    when the durations exceeds the threshold
      creates a log entry
      when the feature flag is disabled
        does not create a log entry
      when project is not provided
        creates a log entry without project_id

# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/lint_spec.rb. It took 14.34 seconds. Expected to take 17.45 seconds.
# [RSpecRunTime] Starting example group spec/models/integrations/prometheus_spec.rb. Expected to take 16.6 seconds.

Integrations::Prometheus
  does not allow STI
  behaves like Integrations::BaseMonitoring
    default values
      is expected to eq :monitoring
  redirects
    does not follow redirects
  Validations
    when manual_configuration is enabled
      does not validates presence of api_url
    when manual configuration is disabled
      does not validate presence of api_url
      local connections allowed
        does not validate presence of api_url
    when the api_url domain points to localhost or local network
      cannot query
      can query when local requests are allowed
  #test
    success
      reads the discovery endpoint
    failure
      fails to read the discovery endpoint
    when configuration is not valid
      returns failure message
  #prometheus_client
    manual configuration is enabled
      calls valid?
    manual configuration is disabled
      no client provided
    when local requests are allowed
      allows local requests
    when local requests are blocked
      blocks local requests
    behind IAP
      includes the authorization header
      with invalid IAP JSON
        does not include authorization header
      when passed with token_credential_uri
        param_name: :token_credential_uri
          does not make any unexpected HTTP requests
        param_name: :tokencredentialuri
          does not make any unexpected HTTP requests
        param_name: :Token_credential_uri
          does not make any unexpected HTTP requests
        param_name: :tokenCredentialUri
          does not make any unexpected HTTP requests
  #prometheus_available?
    clusters with enabled prometheus
      cluster belongs to project
        returns true
      cluster belongs to projects group
        returns true
        avoids N+1 queries
# [RSpecRunTime] RSpec elapsed time: 14 minutes 49.33 seconds. Current RSS: ~1571M. load average: 1.25 1.12 1.28 1/297 9026


      cluster belongs to gitlab instance
        returns true
    clusters with prometheus disabled
      returns false
    clusters without prometheus
      returns false
    no clusters
      returns false
  #synchronize_service_state before_save callback
    no clusters with prometheus are installed
      when integration is inactive
        activates integration when manual_configuration is enabled
        keeps integration inactive when manual_configuration is disabled
      when integration is active
        keeps the integration active when manual_configuration is enabled
        inactivates the integration when manual_configuration is disabled
    with prometheus installed in the cluster
      when integration is inactive
        activates integration when manual_configuration is enabled
        activates integration when manual_configuration is disabled
      when integration is active
        keeps integration active when manual_configuration is enabled
        keeps integration active when manual_configuration is disabled
  #track_events after_commit callback
    enabling manual_configuration
      tracks enable event
      tracks disable event
  #sync_http_integration after_save callback
    with corresponding HTTP integration
      syncs the attribute
      when changing a different attribute
        does not sync the attribute or execute extra queries
    without corresponding HTTP integration
      does not sync the attribute or execute extra queries
  #editable?
    is editable
    when cluster exists with prometheus enabled
      remains editable
  #google_iap_service_account_json
    with valid JSON
      masks all JSON values
    with invalid JSON
      value: nil
        is expected to eq nil
      value: ""
        is expected to eq ""
      value: " "
        is expected to eq " "
      value: "invalid json"
        is expected to eq "invalid json"

# [RSpecRunTime] Finishing example group spec/models/integrations/prometheus_spec.rb. It took 13.93 seconds. Expected to take 16.6 seconds.
# [RSpecRunTime] Starting example group spec/lib/banzai/filter/video_link_filter_spec.rb. Expected to take 15.79 seconds.

Banzai::Filter::VideoLinkFilter
  when the element src has a video extension
    behaves like a video element
      replaces the image tag with a video tag
    behaves like a video element
      replaces the image tag with a video tag
    behaves like a video element
      replaces the image tag with a video tag
    behaves like a video element
      replaces the image tag with a video tag
    behaves like a video element
      replaces the image tag with a video tag
    behaves like a video element
      replaces the image tag with a video tag
    behaves like a video element
      replaces the image tag with a video tag
    behaves like a video element
      replaces the image tag with a video tag
    behaves like a video element
      replaces the image tag with a video tag
    behaves like a video element
      replaces the image tag with a video tag
  when the element has height or width specified
    behaves like a video element
      replaces the image tag with a video tag
    behaves like a video element
      replaces the image tag with a video tag
    behaves like a video element
      replaces the image tag with a video tag
  when the element has no src attribute
    behaves like an unchanged element
      leaves the document unchanged
  when the element src is an image
    behaves like an unchanged element
      leaves the document unchanged
  when the element src has an invalid file extension
    behaves like an unchanged element
      leaves the document unchanged
  when data-canonical-src is empty
    and src is a video
      behaves like a video element
        replaces the image tag with a video tag
    and src is an image
      behaves like an unchanged element
        leaves the document unchanged
  when data-canonical-src is set
    uses the correct src

# [RSpecRunTime] Finishing example group spec/lib/banzai/filter/video_link_filter_spec.rb. It took 12.25 seconds. Expected to take 15.79 seconds.
# [RSpecRunTime] Starting example group spec/services/ci/stuck_builds/drop_running_service_spec.rb. Expected to take 14.8 seconds.

Ci::StuckBuilds::DropRunningService
  when job is running
    when job is outdated
      behaves like job is dropped with failure reason
        changes status
        when job has data integrity problem
          drops the job and logs the reason
# [RSpecRunTime] RSpec elapsed time: 15 minutes 7.79 seconds. Current RSS: ~1582M. load average: 1.25 1.13 1.28 1/292 9141


    when job is fresh
      behaves like job is unchanged
        does not change status
    when job freshly updated
      behaves like job is unchanged
        does not change status
  when new query flag is disabled
    when job is running
      when job is outdated
        behaves like job is dropped with failure reason
          changes status
          when job has data integrity problem
            drops the job and logs the reason
# [RSpecRunTime] RSpec elapsed time: 15 minutes 10.37 seconds. Current RSS: ~1568M. load average: 1.25 1.13 1.28 1/292 9142


      when job is fresh
        behaves like job is unchanged
          does not change status
      when job freshly updated
        behaves like job is unchanged
          does not change status
  when job is success
    when created_at is the same as updated_at
      behaves like job is unchanged
        does not change status
    when created_at is before updated_at
      behaves like job is unchanged
        does not change status
  when job is skipped
    when created_at is the same as updated_at
      behaves like job is unchanged
        does not change status
    when created_at is before updated_at
      behaves like job is unchanged
        does not change status
  when job is failed
    when created_at is the same as updated_at
      behaves like job is unchanged
        does not change status
    when created_at is before updated_at
      behaves like job is unchanged
        does not change status
  when job is canceled
    when created_at is the same as updated_at
      behaves like job is unchanged
        does not change status
    when created_at is before updated_at
      behaves like job is unchanged
        does not change status
  when job is scheduled
    when created_at is the same as updated_at
      behaves like job is unchanged
        does not change status
    when created_at is before updated_at
      behaves like job is unchanged
        does not change status
  when job is pending
    when created_at is the same as updated_at
      behaves like job is unchanged
        does not change status
    when created_at is before updated_at
      behaves like job is unchanged
        does not change status

# [RSpecRunTime] Finishing example group spec/services/ci/stuck_builds/drop_running_service_spec.rb. It took 12.47 seconds. Expected to take 14.8 seconds.
# [RSpecRunTime] Starting example group spec/services/dependency_proxy/image_ttl_group_policies/update_service_spec.rb. Expected to take 14.43 seconds.

DependencyProxy::ImageTtlGroupPolicies::UpdateService
  #execute
    with existing dependency proxy image ttl policy
      user_role: :owner, shared_examples_name: "updating the dependency proxy image ttl policy"
        behaves like updating the dependency proxy image ttl policy
          behaves like updating the dependency proxy image ttl policy attributes
            updates the dependency proxy image ttl policy
            behaves like not creating the dependency proxy image ttl policy
              doesn't create the dependency proxy image ttl policy
          behaves like returning a success
            returns a success
          with invalid params
            doesn't update
            behaves like not creating the dependency proxy image ttl policy
              doesn't create the dependency proxy image ttl policy
            behaves like returning an error
              returns an error
      user_role: :maintainer, shared_examples_name: "denying access to dependency proxy image ttl policy"
        behaves like denying access to dependency proxy image ttl policy
          with existing dependency proxy image ttl policy
            behaves like not creating the dependency proxy image ttl policy
              doesn't create the dependency proxy image ttl policy
            behaves like returning an error
              returns an error
        behaves like disabling admin_package feature flag
          behaves like updating the dependency proxy image ttl policy
            behaves like updating the dependency proxy image ttl policy attributes
              updates the dependency proxy image ttl policy
              behaves like not creating the dependency proxy image ttl policy
                doesn't create the dependency proxy image ttl policy
            behaves like returning a success
              returns a success
            with invalid params
              doesn't update
              behaves like not creating the dependency proxy image ttl policy
                doesn't create the dependency proxy image ttl policy
              behaves like returning an error
                returns an error
      user_role: :developer, shared_examples_name: "denying access to dependency proxy image ttl policy"
        behaves like denying access to dependency proxy image ttl policy
          with existing dependency proxy image ttl policy
            behaves like not creating the dependency proxy image ttl policy
              doesn't create the dependency proxy image ttl policy
            behaves like returning an error
              returns an error
      user_role: :reporter, shared_examples_name: "denying access to dependency proxy image ttl policy"
        behaves like denying access to dependency proxy image ttl policy
          with existing dependency proxy image ttl policy
            behaves like not creating the dependency proxy image ttl policy
              doesn't create the dependency proxy image ttl policy
            behaves like returning an error
              returns an error
      user_role: :guest, shared_examples_name: "denying access to dependency proxy image ttl policy"
        behaves like denying access to dependency proxy image ttl policy
          with existing dependency proxy image ttl policy
            behaves like not creating the dependency proxy image ttl policy
              doesn't create the dependency proxy image ttl policy
            behaves like returning an error
              returns an error
      user_role: :anonymous, shared_examples_name: "denying access to dependency proxy image ttl policy"
        behaves like denying access to dependency proxy image ttl policy
          with existing dependency proxy image ttl policy
            behaves like not creating the dependency proxy image ttl policy
              doesn't create the dependency proxy image ttl policy
            behaves like returning an error
              returns an error
    without existing dependency proxy image ttl policy
      user_role: :owner, shared_examples_name: "creating the dependency proxy image ttl policy"
        behaves like creating the dependency proxy image ttl policy
          creates a new package setting
          saves the settings
          behaves like returning a success
            returns a success
      user_role: :maintainer, shared_examples_name: "denying access to dependency proxy image ttl policy"
        behaves like denying access to dependency proxy image ttl policy
          with existing dependency proxy image ttl policy
            behaves like not creating the dependency proxy image ttl policy
              doesn't create the dependency proxy image ttl policy
            behaves like returning an error
              returns an error
        behaves like disabling admin_package feature flag
          behaves like creating the dependency proxy image ttl policy
            creates a new package setting
            saves the settings
            behaves like returning a success
              returns a success
      user_role: :developer, shared_examples_name: "denying access to dependency proxy image ttl policy"
        behaves like denying access to dependency proxy image ttl policy
          with existing dependency proxy image ttl policy
            behaves like not creating the dependency proxy image ttl policy
              doesn't create the dependency proxy image ttl policy
            behaves like returning an error
              returns an error
      user_role: :reporter, shared_examples_name: "denying access to dependency proxy image ttl policy"
        behaves like denying access to dependency proxy image ttl policy
          with existing dependency proxy image ttl policy
            behaves like not creating the dependency proxy image ttl policy
              doesn't create the dependency proxy image ttl policy
            behaves like returning an error
              returns an error
      user_role: :guest, shared_examples_name: "denying access to dependency proxy image ttl policy"
        behaves like denying access to dependency proxy image ttl policy
          with existing dependency proxy image ttl policy
            behaves like not creating the dependency proxy image ttl policy
              doesn't create the dependency proxy image ttl policy
            behaves like returning an error
              returns an error
      user_role: :anonymous, shared_examples_name: "denying access to dependency proxy image ttl policy"
        behaves like denying access to dependency proxy image ttl policy
          with existing dependency proxy image ttl policy
            behaves like not creating the dependency proxy image ttl policy
              doesn't create the dependency proxy image ttl policy
            behaves like returning an error
              returns an error
      when the policy is not found
        when user is owner
          behaves like returning an error
            returns an error
        when user is maintainer
          behaves like returning an error
            returns an error

# [RSpecRunTime] Finishing example group spec/services/dependency_proxy/image_ttl_group_policies/update_service_spec.rb. It took 11.04 seconds. Expected to take 14.43 seconds.
# [RSpecRunTime] Starting example group spec/services/verify_pages_domain_service_spec.rb. Expected to take 14.01 seconds.

VerifyPagesDomainService
  #execute
    domain_sym: :domain, code_sym: :verification_code
      when domain is disabled(or new)
        when txt record contains verification code
          verifies and enables the domain
        when txt record contains verification code with other text
          verifies and enables the domain
        when txt record does not contain verification code
          unverifies domain
          disables domain and shedules it for removal in 1 week
        when txt record does not contain verification code
          unverifies domain
          disables domain and shedules it for removal in 1 week
        when no txt records are present
          unverifies domain
          disables domain and shedules it for removal in 1 week
      when domain is verified
        when txt record contains verification code
          verifies and enables the domain
        when txt record contains verification code with other text
          verifies and enables the domain
        when txt record does not contain verification code
          unverifies but does not disable domain
          does not schedule domain for removal
        when no txt records are present
          unverifies but does not disable domain
          does not schedule domain for removal
      when domain is expired
        when the right code is present
          verifies and enables the domain
        when the right code is not present
          unverifies domain
          disables domain and shedules it for removal in 1 week
      when domain is disabled and scheduled for removal
        when the right code is present
          verifies and enables domain
          prevent domain from being removed
        when the right code is not present
          keeps domain scheduled for removal but does not change removal time
      invalid domain
        can be disabled
    domain_sym: :domain, code_sym: :keyed_verification_code
      when domain is disabled(or new)
        when txt record contains verification code
          verifies and enables the domain
        when txt record contains verification code with other text
          verifies and enables the domain
        when txt record does not contain verification code
          unverifies domain
          disables domain and shedules it for removal in 1 week
        when txt record does not contain verification code
          unverifies domain
          disables domain and shedules it for removal in 1 week
        when no txt records are present
          unverifies domain
          disables domain and shedules it for removal in 1 week
      when domain is verified
        when txt record contains verification code
          verifies and enables the domain
        when txt record contains verification code with other text
          verifies and enables the domain
        when txt record does not contain verification code
          unverifies but does not disable domain
          does not schedule domain for removal
        when no txt records are present
          unverifies but does not disable domain
          does not schedule domain for removal
      when domain is expired
        when the right code is present
          verifies and enables the domain
        when the right code is not present
          unverifies domain
          disables domain and shedules it for removal in 1 week
      when domain is disabled and scheduled for removal
        when the right code is present
          verifies and enables domain
          prevent domain from being removed
        when the right code is not present
          keeps domain scheduled for removal but does not change removal time
      invalid domain
        can be disabled
    domain_sym: :verification_domain, code_sym: :verification_code
      when domain is disabled(or new)
        when txt record contains verification code
          verifies and enables the domain
        when txt record contains verification code with other text
          verifies and enables the domain
        when txt record does not contain verification code
          unverifies domain
          disables domain and shedules it for removal in 1 week
        when txt record does not contain verification code
          unverifies domain
          disables domain and shedules it for removal in 1 week
        when no txt records are present
          unverifies domain
          disables domain and shedules it for removal in 1 week
      when domain is verified
        when txt record contains verification code
          verifies and enables the domain
        when txt record contains verification code with other text
          verifies and enables the domain
        when txt record does not contain verification code
          unverifies but does not disable domain
          does not schedule domain for removal
        when no txt records are present
          unverifies but does not disable domain
          does not schedule domain for removal
      when domain is expired
        when the right code is present
          verifies and enables the domain
        when the right code is not present
          unverifies domain
          disables domain and shedules it for removal in 1 week
      when domain is disabled and scheduled for removal
        when the right code is present
          verifies and enables domain
          prevent domain from being removed
        when the right code is not present
          keeps domain scheduled for removal but does not change removal time
      invalid domain
        can be disabled
    domain_sym: :verification_domain, code_sym: :keyed_verification_code
      when domain is disabled(or new)
        when txt record contains verification code
          verifies and enables the domain
        when txt record contains verification code with other text
          verifies and enables the domain
        when txt record does not contain verification code
          unverifies domain
          disables domain and shedules it for removal in 1 week
        when txt record does not contain verification code
          unverifies domain
          disables domain and shedules it for removal in 1 week
        when no txt records are present
          unverifies domain
          disables domain and shedules it for removal in 1 week
      when domain is verified
        when txt record contains verification code
          verifies and enables the domain
        when txt record contains verification code with other text
          verifies and enables the domain
        when txt record does not contain verification code
          unverifies but does not disable domain
          does not schedule domain for removal
        when no txt records are present
          unverifies but does not disable domain
          does not schedule domain for removal
      when domain is expired
        when the right code is present
          verifies and enables the domain
        when the right code is not present
          unverifies domain
          disables domain and shedules it for removal in 1 week
      when domain is disabled and scheduled for removal
        when the right code is present
          verifies and enables domain
          prevent domain from being removed
        when the right code is not present
          keeps domain scheduled for removal but does not change removal time
      invalid domain
        can be disabled
    timeout behaviour
      sets a timeout on the DNS query
    email notifications
      factory: nil, verification_succeeds: true, expected_notification: nil
        sends a notification if appropriate
      factory: nil, verification_succeeds: false, expected_notification: :verification_failed
        sends a notification if appropriate
      factory: :reverify, verification_succeeds: true, expected_notification: nil
        sends a notification if appropriate
      factory: :reverify, verification_succeeds: false, expected_notification: :verification_failed
        sends a notification if appropriate
      factory: :unverified, verification_succeeds: true, expected_notification: :verification_succeeded
        sends a notification if appropriate
      factory: :unverified, verification_succeeds: false, expected_notification: nil
        sends a notification if appropriate
      factory: :expired, verification_succeeds: true, expected_notification: nil
        sends a notification if appropriate
      factory: :expired, verification_succeeds: false, expected_notification: :disabled
        sends a notification if appropriate
      factory: :disabled, verification_succeeds: true, expected_notification: :enabled
        sends a notification if appropriate
      factory: :disabled, verification_succeeds: false, expected_notification: nil
        sends a notification if appropriate
      pages verification disabled
        skips email notifications
    no verification code
      returns an error
    pages domain verification is disabled
      extends domain validity by unconditionally reverifying
      does not shorten any grace period

# [RSpecRunTime] Finishing example group spec/services/verify_pages_domain_service_spec.rb. It took 13.42 seconds. Expected to take 14.01 seconds.
# [RSpecRunTime] Starting example group spec/services/releases/update_service_spec.rb. Expected to take 13.08 seconds.

Releases::UpdateService
  #execute
    successfully updates an existing release
    executes hooks
    when the tag does not exists
      behaves like a failed update
        raises an error
# [RSpecRunTime] RSpec elapsed time: 15 minutes 46.11 seconds. Current RSS: ~1566M. load average: 1.21 1.13 1.27 1/297 9183


    when the release does not exist
      behaves like a failed update
        raises an error
    when a milestone is passed in
      a different milestone
        behaves like updates milestones
          updates the related milestone accordingly
# [RSpecRunTime] RSpec elapsed time: 15 minutes 48.16 seconds. Current RSS: ~1570M. load average: 1.19 1.13 1.27 1/297 9214


      an identical milestone
        raises an error
# [RSpecRunTime] RSpec elapsed time: 15 minutes 50.29 seconds. Current RSS: ~1566M. load average: 1.19 1.13 1.27 1/297 9221


      by ids
        behaves like updates milestones
          updates the related milestone accordingly
# [RSpecRunTime] RSpec elapsed time: 15 minutes 51.36 seconds. Current RSS: ~1567M. load average: 1.19 1.13 1.27 1/297 9242


    when an 'empty' milestone is passed in
      by title
        behaves like removes milestones
          removes the old milestone and does not associate any new milestone
# [RSpecRunTime] RSpec elapsed time: 15 minutes 52.41 seconds. Current RSS: ~1567M. load average: 1.17 1.12 1.27 1/297 9263


      by id
        behaves like removes milestones
          removes the old milestone and does not associate any new milestone
# [RSpecRunTime] RSpec elapsed time: 15 minutes 53.52 seconds. Current RSS: ~1569M. load average: 1.17 1.12 1.27 1/297 9284


    when multiple new milestones are passed in
      by title
        behaves like updates multiple milestones
          removes the old milestone and update the release with the new ones
# [RSpecRunTime] RSpec elapsed time: 15 minutes 54.67 seconds. Current RSS: ~1574M. load average: 1.17 1.12 1.27 1/297 9305


      by id
        behaves like updates multiple milestones
          removes the old milestone and update the release with the new ones
# [RSpecRunTime] RSpec elapsed time: 15 minutes 55.87 seconds. Current RSS: ~1582M. load average: 1.17 1.12 1.27 1/297 9326



# [RSpecRunTime] Finishing example group spec/services/releases/update_service_spec.rb. It took 12.85 seconds. Expected to take 13.08 seconds.
# [RSpecRunTime] Starting example group spec/uploaders/ci/pipeline_artifact_uploader_spec.rb. Expected to take 12.65 seconds.

Ci::PipelineArtifactUploader
  behaves like builds correct paths
    #store_dir
      behaves like matches the method pattern
        is expected to match /\h{2}\/\h{2}\/\h{64}\/pipelines\/\d+\/artifacts\/\d+/
    #cache_dir
      behaves like matches the method pattern
        is expected to match /artifacts\/tmp\/cache/
    #work_dir
      behaves like matches the method pattern
        is expected to match /artifacts\/tmp\/work/
    #upload_path
      behaves like matches the method pattern
        example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)
    #relative_path
      is relative (PENDING: Path not set, skipping.)
    .absolute_path
      behaves like matches the method pattern
        example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)
    .base_dir
      behaves like matches the method pattern
        example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)
    path traversal exploits
      throws an exception
  when object store is REMOTE
    behaves like builds correct paths
      #store_dir
        behaves like matches the method pattern
          is expected to match /\h{2}\/\h{2}\/\h{64}\/pipelines\/\d+\/artifacts\/\d+/
      #cache_dir
        behaves like matches the method pattern
          example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)
      #work_dir
        behaves like matches the method pattern
          example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)
      #upload_path
        behaves like matches the method pattern
          example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)
      #relative_path
        is relative (PENDING: Path not set, skipping.)
      .absolute_path
        behaves like matches the method pattern
          example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)
      .base_dir
        behaves like matches the method pattern
          example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)
      path traversal exploits
        throws an exception
  when file is stored in valid local_path
    is expected to match /\/builds\/gitlab-org\/gitlab\/tmp\/tests\/artifacts\/\h{2}\/\h{2}\/\h{64}\/pipelines\/199\/artifacts\/17\/code_coverage.json/

# [RSpecRunTime] Finishing example group spec/uploaders/ci/pipeline_artifact_uploader_spec.rb. It took 10.23 seconds. Expected to take 12.65 seconds.
# [RSpecRunTime] Starting example group spec/finders/merge_requests/oldest_per_commit_finder_spec.rb. Expected to take 12.48 seconds.

MergeRequests::OldestPerCommitFinder
  #execute
    returns a Hash mapping commit SHAs to their oldest merge requests
    skips merge requests that are not merged
    includes the merge request for a merge commit
    includes a merge request that was squashed into the target branch
    includes a merge request for both a squash and merge commit
    includes a merge request for fast-forward merged MR
    includes the oldest merge request when a merge commit is present in a newer merge request
# [RSpecRunTime] RSpec elapsed time: 16 minutes 16.79 seconds. Current RSS: ~1607M. load average: 1.11 1.11 1.26 1/297 9445



# [RSpecRunTime] Finishing example group spec/finders/merge_requests/oldest_per_commit_finder_spec.rb. It took 10.69 seconds. Expected to take 12.48 seconds.
# [RSpecRunTime] Starting example group spec/models/ci/namespace_mirror_spec.rb. Expected to take 11.64 seconds.

Ci::NamespaceMirror
  does not allow STI
  associations
    is expected to belong to namespace required: false
    is expected to have many project_mirrors
    has a bidirectional relationship with project mirrors
# [RSpecRunTime] RSpec elapsed time: 16 minutes 19.74 seconds. Current RSS: ~1596M. load average: 1.11 1.11 1.26 1/297 9446


  scopes
    .by_group_and_descendants
      returns groups having group2.id in traversal_ids
# [RSpecRunTime] RSpec elapsed time: 16 minutes 20.79 seconds. Current RSS: ~1590M. load average: 1.11 1.11 1.26 2/298 9447


    .contains_any_of_namespaces
      returns groups having group2.id in traversal_ids
# [RSpecRunTime] RSpec elapsed time: 16 minutes 21.87 seconds. Current RSS: ~1588M. load average: 1.10 1.11 1.26 1/297 9448


    .contains_traversal_ids
      when passing a top-level group
        returns only itself and children of that group
# [RSpecRunTime] RSpec elapsed time: 16 minutes 23.03 seconds. Current RSS: ~1580M. load average: 1.10 1.11 1.26 1/296 9449


      when passing many levels of groups
        returns only the asked group
# [RSpecRunTime] RSpec elapsed time: 16 minutes 24.18 seconds. Current RSS: ~1576M. load average: 1.10 1.11 1.26 1/295 9450


      when passing invalid data
        data is properly sanitised
# [RSpecRunTime] RSpec elapsed time: 16 minutes 25.36 seconds. Current RSS: ~1568M. load average: 1.10 1.11 1.26 1/294 9451


    .by_namespace_id
      returns namespace mirrors of namespace id
  .sync!
    when namespace mirror does not exist in the first place
      creates the mirror
    when namespace mirror does already exist
      updates the mirror

# [RSpecRunTime] Finishing example group spec/models/ci/namespace_mirror_spec.rb. It took 10.63 seconds. Expected to take 11.64 seconds.
# [RSpecRunTime] Starting example group spec/views/layouts/application.html.haml_spec.rb. Expected to take 11.53 seconds.

layouts/application
  when user is signed in
    behaves like a layout which reflects the application theme setting
      as a themed layout
        when no theme is explicitly selected
          renders with the default theme
# [RSpecRunTime] RSpec elapsed time: 16 minutes 28.72 seconds. Current RSS: ~1556M. load average: 1.10 1.11 1.26 1/292 9452


        when user is authenticated & has selected a specific theme
          chosen_theme: #<struct Gitlab::Themes::Theme id=1, name="Indigo", css_class="ui-indigo", primary_color="#222261">
            renders with the Indigo theme
          chosen_theme: #<struct Gitlab::Themes::Theme id=6, name="Light Indigo", css_class="ui-light-indigo", primary_color="#41419f">
            renders with the Light Indigo theme
          chosen_theme: #<struct Gitlab::Themes::Theme id=4, name="Blue", css_class="ui-blue", primary_color="#0b2640">
            renders with the Blue theme
          chosen_theme: #<struct Gitlab::Themes::Theme id=7, name="Light Blue", css_class="ui-light-blue", primary_color="#145aa1">
            renders with the Light Blue theme
          chosen_theme: #<struct Gitlab::Themes::Theme id=5, name="Green", css_class="ui-green", primary_color="#0e4328">
            renders with the Green theme
          chosen_theme: #<struct Gitlab::Themes::Theme id=8, name="Light Green", css_class="ui-light-green", primary_color="#1b653f">
            renders with the Light Green theme
          chosen_theme: #<struct Gitlab::Themes::Theme id=9, name="Red", css_class="ui-red", primary_color="#580d02">
            renders with the Red theme
          chosen_theme: #<struct Gitlab::Themes::Theme id=10, name="Light Red", css_class="ui-light-red", primary_color="#a02e1c">
            renders with the Light Red theme
          chosen_theme: #<struct Gitlab::Themes::Theme id=2, name="Gray", css_class="ui-gray", primary_color="#333238">
            renders with the Gray theme
          chosen_theme: #<struct Gitlab::Themes::Theme id=3, name="Neutral", css_class="ui-neutral", primary_color="#ececef">
            renders with the Neutral theme
    behaves like a layout which reflects the preferred language
      when changing the a preferred language
        renders the correct `lang` attribute in the html element
    visual review toolbar
      ENV['REVIEW_APPS_ENABLED'] is set to true
        renders the visual review toolbar
      ENV['REVIEW_APPS_ENABLED'] is set to false
        does not render the visual review toolbar
    body data elements for pageview context
      includes the body element page
      includes the body element page_type_id
      includes the body element project_id
      includes the body element namespace_id
# [RSpecRunTime] RSpec elapsed time: 16 minutes 37.66 seconds. Current RSS: ~1538M. load average: 1.08 1.10 1.26 1/292 9453


  when user is not signed in
    renders the new marketing header for logged-out users

# [RSpecRunTime] Finishing example group spec/views/layouts/application.html.haml_spec.rb. It took 10.41 seconds. Expected to take 11.53 seconds.
# [RSpecRunTime] Starting example group spec/services/merge_requests/post_merge_service_spec.rb. Expected to take 10.86 seconds.

MergeRequests::PostMergeService
  #execute
    refreshes the number of open merge requests for a valid MR
    updates metrics
    calls the merge request activity counter
    deletes non-latest diffs
    clean up environments for the merge request
    schedules CleanupRefsService
    behaves like cache counters invalidator
      invalidates counter cache for assignees
# [RSpecRunTime] RSpec elapsed time: 16 minutes 42.66 seconds. Current RSS: ~1557M. load average: 1.07 1.10 1.26 1/297 9500


    behaves like merge request reviewers cache counters invalidator
      invalidates counter cache for reviewers
    when there are issues to be closed
      performs MergeRequests::CloseIssueWorker asynchronously
      when issue is an external issue
        executes Issues::CloseService
# [RSpecRunTime] RSpec elapsed time: 16 minutes 44.69 seconds. Current RSS: ~1556M. load average: 1.07 1.10 1.26 1/297 9512


    when the merge request has review apps
      cancels all review app deployments
# [RSpecRunTime] RSpec elapsed time: 16 minutes 46.4 seconds. Current RSS: ~1557M. load average: 1.07 1.10 1.26 1/297 9563


    when the merge request has a pages deployment
      performs Pages::DeactivateMrDeploymentWorker asynchronously

# [RSpecRunTime] Finishing example group spec/services/merge_requests/post_merge_service_spec.rb. It took 9.11 seconds. Expected to take 10.86 seconds.
# [RSpecRunTime] Starting example group spec/lib/banzai/pipeline/full_pipeline_spec.rb. Expected to take 10.66 seconds.

Banzai::Pipeline::FullPipeline
  References
    handles markdown inside a reference
    sanitizes reference HTML
    prevents xss by not replacing the same reference in one anchor multiple times
    escapes the data-original attribute on a reference
# [RSpecRunTime] RSpec elapsed time: 16 minutes 49.6 seconds. Current RSS: ~1551M. load average: 1.39 1.17 1.28 1/297 9565


  footnotes
    properly adds the necessary ids and classes
  links are detected as malicious
    has tooltips for malicious links
    has no tooltips for safe links
  table of contents
    with [[_TOC_]] as tag
      behaves like table of contents tag
        inserts a table of contents
        does not insert a table of contents
# [RSpecRunTime] RSpec elapsed time: 16 minutes 51.53 seconds. Current RSS: ~1554M. load average: 1.36 1.16 1.27 1/297 9566


    with [toc] as tag
      behaves like table of contents tag
        inserts a table of contents
        does not insert a table of contents
# [RSpecRunTime] RSpec elapsed time: 16 minutes 52.58 seconds. Current RSS: ~1554M. load average: 1.36 1.16 1.27 1/297 9567


      behaves like table of contents tag
        inserts a table of contents
        does not insert a table of contents
# [RSpecRunTime] RSpec elapsed time: 16 minutes 53.61 seconds. Current RSS: ~1553M. load average: 1.36 1.16 1.27 1/297 9568


  backslash escapes
    does not convert an escaped reference
    converts user reference with escaped underscore because of italics
    when a reference (such as a label name) is autocompleted with characters that require escaping
      valid: true, label_name: "c_bug_", markdown: "~c_bug\\_"
        detects valid escaped reference
      valid: true, label_name: "c_bug_", markdown: "Label ~c_bug\\_ and _more_ text"
        detects valid escaped reference
      valid: true, label_name: "d _bug_", markdown: "~\"d \\_bug\\_\""
        detects valid escaped reference
      valid: true, label_name: "e*bug*", markdown: "~\"e\\*bug\\*\""
        detects valid escaped reference
      valid: true, label_name: "f *bug*", markdown: "~\"f \\*bug\\*\""
        detects valid escaped reference
      valid: true, label_name: "f *bug*", markdown: "Label ~\"f \\*bug\\*\" **with** more text"
        detects valid escaped reference
      valid: true, label_name: "g`bug`", markdown: "~\"g\\`bug\\`\" "
        detects valid escaped reference
      valid: true, label_name: "h `bug`", markdown: "~\"h \\`bug\\`\""
        detects valid escaped reference
  cmark-gfm and autlolinks
    does not hang with significant number of unclosed image links

# [RSpecRunTime] Finishing example group spec/lib/banzai/pipeline/full_pipeline_spec.rb. It took 8.94 seconds. Expected to take 10.66 seconds.
# [RSpecRunTime] Starting example group spec/graphql/mutations/design_management/delete_spec.rb. Expected to take 10.27 seconds.

Mutations::DesignManagement::Delete
  #resolve
    when the feature is not available
      behaves like resource not available
        behaves like failures
          raises Gitlab::Graphql::Errors::ResourceNotAvailable
# [RSpecRunTime] RSpec elapsed time: 16 minutes 57.13 seconds. Current RSS: ~1592M. load average: 1.33 1.16 1.27 1/294 9616


    when the feature is available
      when the user is not allowed to delete designs
        behaves like resource not available
          behaves like failures
            raises Gitlab::Graphql::Errors::ResourceNotAvailable
      deleting an already deleted file
        fails with an argument error
# [RSpecRunTime] RSpec elapsed time: 16 minutes 59.47 seconds. Current RSS: ~1587M. load average: 1.33 1.16 1.27 1/297 9729


      when deleting all the designs
        returns a new version, and no errors
        runs no more than 34 queries
        the current designs
          is empty
# [RSpecRunTime] RSpec elapsed time: 17 minutes 2.83 seconds. Current RSS: ~1580M. load average: 1.38 1.18 1.28 1/297 9925


      when deleting a design
        returns the expected response
        the current designs
          does contain designs b and c
# [RSpecRunTime] RSpec elapsed time: 17 minutes 4.96 seconds. Current RSS: ~1566M. load average: 1.38 1.18 1.28 1/297 10024



# [RSpecRunTime] Finishing example group spec/graphql/mutations/design_management/delete_spec.rb. It took 9.06 seconds. Expected to take 10.27 seconds.
# [RSpecRunTime] Starting example group spec/workers/prune_old_events_worker_spec.rb. Expected to take 9.72 seconds.

PruneOldEventsWorker
  #perform
    prunes events older than 3 years
    leaves fresh events
    leaves events from 13 months ago
    leaves events from 3 years ago
    with ops_prune_old_events FF disabled
      does not delete
# [RSpecRunTime] RSpec elapsed time: 17 minutes 13.23 seconds. Current RSS: ~1528M. load average: 1.32 1.17 1.27 1/296 10025



# [RSpecRunTime] Finishing example group spec/workers/prune_old_events_worker_spec.rb. It took 8.26 seconds. Expected to take 9.72 seconds.
# [RSpecRunTime] Starting example group spec/services/ci/play_manual_stage_service_spec.rb. Expected to take 9.66 seconds.

Ci::PlayManualStageService#execute
  when pipeline has manual processables
    starts manual processables from pipeline
    updates manual processables
# [RSpecRunTime] RSpec elapsed time: 17 minutes 17.86 seconds. Current RSS: ~1522M. load average: 1.30 1.17 1.27 1/292 10026


  when pipeline has no manual processables
    does not update the processables
# [RSpecRunTime] RSpec elapsed time: 17 minutes 19.15 seconds. Current RSS: ~1523M. load average: 1.30 1.17 1.27 1/292 10027


  when user does not have permission on a specific processable
    logs the error
# [RSpecRunTime] RSpec elapsed time: 17 minutes 21.46 seconds. Current RSS: ~1526M. load average: 1.27 1.16 1.27 1/292 10028



# [RSpecRunTime] Finishing example group spec/services/ci/play_manual_stage_service_spec.rb. It took 8.24 seconds. Expected to take 9.66 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/email/handler/unsubscribe_handler_spec.rb. Expected to take 9.09 seconds.

Gitlab::Email::Handler::UnsubscribeHandler
  when email key
    matches the new format
    matches the legacy format
    doesn't match either format
# [RSpecRunTime] RSpec elapsed time: 17 minutes 24.14 seconds. Current RSS: ~1529M. load average: 1.27 1.16 1.27 1/292 10029


  when notification concerns a commit
    handler does not raise an error
  user is unsubscribed
    leaves user unsubscribed
  user is subscribed
    unsubscribes user from notable
    when using old style unsubscribe link
      unsubscribes user from notable
# [RSpecRunTime] RSpec elapsed time: 17 minutes 27.27 seconds. Current RSS: ~1528M. load average: 1.25 1.16 1.27 1/292 10030


  when the noteable could not be found
    raises a NoteableNotFoundError
  when no sent notification for the mail key could be found
    raises a SentNotificationNotFoundError

# [RSpecRunTime] Finishing example group spec/lib/gitlab/email/handler/unsubscribe_handler_spec.rb. It took 7.31 seconds. Expected to take 9.09 seconds.
# [RSpecRunTime] Starting example group spec/services/projects/import_export/prune_expired_export_jobs_service_spec.rb. Expected to take 8.99 seconds.

Projects::ImportExport::PruneExpiredExportJobsService
  #execute
    prunes ProjectExportJob records and associations older than 7 days
    prunes ProjectExportJob records in batches
    with associated RelationExport records
      prunes expired RelationExport records
      and RelationExportUploads
        prunes expired RelationExportUpload records
        deletes associated Upload records
        deletes stored upload files
        deletes expired uploads in batches
# [RSpecRunTime] RSpec elapsed time: 17 minutes 37.25 seconds. Current RSS: ~1527M. load average: 1.13 1.14 1.26 1/292 10031



# [RSpecRunTime] Finishing example group spec/services/projects/import_export/prune_expired_export_jobs_service_spec.rb. It took 8.47 seconds. Expected to take 8.99 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/auth/saml/user_spec.rb. Expected to take 8.6 seconds.

Gitlab::Auth::Saml::User
  #save
    account exists on server
      and should bind with SAML
        adds the SAML identity to the existing user
      external groups
        are defined
          marks the user as external
        are defined but the user does not belong there
          does not mark the user as external
        user was external, now should not be
          makes user internal
    no account exists on server
      external groups
        are defined
          marks the user as external
        are defined but the user does not belong there
          does not mark the user as external
      with auto_link_ldap_user disabled (default)
        with allow_single_sign_on enabled
          creates a user from SAML
        with allow_single_sign_on default (["saml"])
          does not throw an error
        with allow_single_sign_on disabled
          throws an error
      with auto_link_ldap_user enabled
        and at least one LDAP provider is defined
          and a corresponding LDAP person
            and no account for the LDAP user
              creates a user with dual LDAP and SAML identities
            and LDAP user has an account already
              adds the omniauth identity to the LDAP account
              saves successfully on subsequent tries, when both identities are present
              when uid is an uid
                behaves like find LDAP person
                  adds the omniauth identity to the LDAP account
              when uid is a dn
                behaves like find LDAP person
                  adds the omniauth identity to the LDAP account
              when uid is an email
                behaves like find LDAP person
                  adds the omniauth identity to the LDAP account
            user has SAML user, and wants to add their LDAP identity
              adds the LDAP identity to the existing SAML user
      when signup is disabled
        creates the user
      when user confirmation email is enabled
        creates and confirms the user anyway
      when the current minimum password length is different from the default minimum password length
        creates the user
    blocking
      signup with SAML only
        dont block on create
          does not block the user
        block on create
          blocks user
      sign-in
        dont block on create
          is expected not to be blocked
        block on create
          is expected not to be blocked
  #find_user
    raw info hash attributes empty
      does not mark user as external
  #bypass_two_factor?
    with authn_contexts_worth_two_factors configured
      returns true when authn_context is worth two factors
      returns false when authn_context is not worth two factors
      returns false when authn_context is blank
    without auth_contexts_worth_two_factors_configured
      returns false when authn_context is present
      returns false when authn_context is blank

# [RSpecRunTime] Finishing example group spec/lib/gitlab/auth/saml/user_spec.rb. It took 7.82 seconds. Expected to take 8.6 seconds.
# [RSpecRunTime] Starting example group spec/graphql/types/issue_type_spec.rb. Expected to take 8.28 seconds.

Types::IssueType
  is expected to expose permissions using Types::PermissionTypes::Issue
  is expected to eq "Issue"
  is expected to require graphql authorizations :read_issue
  is expected to include Types::Notes::NoteableInterface
  is expected to include Types::CurrentUserTodos
  has specific fields
  pagination and count
    when user does not have the permission
      does not return an error
      returns no data
# [RSpecRunTime] RSpec elapsed time: 17 minutes 47.17 seconds. Current RSS: ~1542M. load average: 1.11 1.13 1.26 1/292 10032


    count
      returns total count
      total count does not change between pages
      pagination
        returns new ids during pagination
# [RSpecRunTime] RSpec elapsed time: 17 minutes 48.5 seconds. Current RSS: ~1550M. load average: 1.11 1.13 1.26 1/292 10033


  issue notes
    query issue notes
      when user signed in
        behaves like does not include private notes
          does not return private notes
        when user member of the project
          behaves like includes private notes
            returns all notes
      when user is anonymous
        behaves like does not include private notes
          does not return private notes
  hidden
    when issue is hidden
      returns `true`
    when issue is visible
      returns `false`
  escalation_status
    is expected to be nil
    for an incident
      is expected to be nil
      with an escalation status record
        is expected to eq "TRIGGERED"

# [RSpecRunTime] Finishing example group spec/graphql/types/issue_type_spec.rb. It took 7.39 seconds. Expected to take 8.28 seconds.
# [RSpecRunTime] Starting example group spec/services/merge_requests/resolved_discussion_notification_service_spec.rb. Expected to take 8.1 seconds.

MergeRequests::ResolvedDiscussionNotificationService
  #execute
    when not all discussions are resolved
      doesn't add a system note
      doesn't send a notification email
      doesn't send a webhook
# [RSpecRunTime] RSpec elapsed time: 17 minutes 55.63 seconds. Current RSS: ~1566M. load average: 1.10 1.13 1.26 1/299 10154


    when all discussions are resolved
      adds a system note
      sends a notification email
      sends a webhook
# [RSpecRunTime] RSpec elapsed time: 17 minutes 58.89 seconds. Current RSS: ~1571M. load average: 1.09 1.13 1.25 1/299 10272



# [RSpecRunTime] Finishing example group spec/services/merge_requests/resolved_discussion_notification_service_spec.rb. It took 6.44 seconds. Expected to take 8.1 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/pipeline/expression/lexeme/not_equals_spec.rb. Expected to take 7.85 seconds.

Gitlab::Ci::Pipeline::Expression::Lexeme::NotEquals
  .build
    with non-evaluable operands
      creates a new instance of the token
    with evaluable operands
      creates a new instance of the token
  .type
    is an operator
  .precedence
    has a precedence
  #evaluate
    when left and right are equal
      left_value: "string", right_value: "string"
        is expected to eq false
      left_value: 1, right_value: 1
        is expected to eq false
      left_value: "", right_value: ""
        is expected to eq false
      left_value: nil, right_value: nil
        is expected to eq false
    when left and right are not equal
      left_value: "one string", right_value: "two string"
        is expected to eq true
      left_value: "one string", right_value: 1
        is expected to eq true
      left_value: "one string", right_value: 2
        is expected to eq true
      left_value: "one string", right_value: ""
        is expected to eq true
      left_value: "one string", right_value: nil
        is expected to eq true
      left_value: "one string", right_value: false
        is expected to eq true
      left_value: "one string", right_value: true
        is expected to eq true
      left_value: "two string", right_value: "one string"
        is expected to eq true
      left_value: "two string", right_value: 1
        is expected to eq true
      left_value: "two string", right_value: 2
        is expected to eq true
      left_value: "two string", right_value: ""
        is expected to eq true
      left_value: "two string", right_value: nil
        is expected to eq true
      left_value: "two string", right_value: false
        is expected to eq true
      left_value: "two string", right_value: true
        is expected to eq true
      left_value: 1, right_value: "one string"
        is expected to eq true
      left_value: 1, right_value: "two string"
        is expected to eq true
      left_value: 1, right_value: 2
        is expected to eq true
      left_value: 1, right_value: ""
        is expected to eq true
      left_value: 1, right_value: nil
        is expected to eq true
      left_value: 1, right_value: false
        is expected to eq true
      left_value: 1, right_value: true
        is expected to eq true
      left_value: 2, right_value: "one string"
        is expected to eq true
      left_value: 2, right_value: "two string"
        is expected to eq true
      left_value: 2, right_value: 1
        is expected to eq true
      left_value: 2, right_value: ""
        is expected to eq true
      left_value: 2, right_value: nil
        is expected to eq true
      left_value: 2, right_value: false
        is expected to eq true
      left_value: 2, right_value: true
        is expected to eq true
      left_value: "", right_value: "one string"
        is expected to eq true
      left_value: "", right_value: "two string"
        is expected to eq true
      left_value: "", right_value: 1
        is expected to eq true
      left_value: "", right_value: 2
        is expected to eq true
      left_value: "", right_value: nil
        is expected to eq true
      left_value: "", right_value: false
        is expected to eq true
      left_value: "", right_value: true
        is expected to eq true
      left_value: nil, right_value: "one string"
        is expected to eq true
      left_value: nil, right_value: "two string"
        is expected to eq true
      left_value: nil, right_value: 1
        is expected to eq true
      left_value: nil, right_value: 2
        is expected to eq true
      left_value: nil, right_value: ""
        is expected to eq true
      left_value: nil, right_value: false
        is expected to eq true
      left_value: nil, right_value: true
        is expected to eq true
      left_value: false, right_value: "one string"
        is expected to eq true
      left_value: false, right_value: "two string"
        is expected to eq true
      left_value: false, right_value: 1
        is expected to eq true
      left_value: false, right_value: 2
        is expected to eq true
      left_value: false, right_value: ""
        is expected to eq true
      left_value: false, right_value: nil
        is expected to eq true
      left_value: false, right_value: true
        is expected to eq true
      left_value: true, right_value: "one string"
        is expected to eq true
      left_value: true, right_value: "two string"
        is expected to eq true
      left_value: true, right_value: 1
        is expected to eq true
      left_value: true, right_value: 2
        is expected to eq true
      left_value: true, right_value: ""
        is expected to eq true
      left_value: true, right_value: nil
        is expected to eq true
      left_value: true, right_value: false
        is expected to eq true

# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/pipeline/expression/lexeme/not_equals_spec.rb. It took 5.93 seconds. Expected to take 7.85 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/slash_commands/issue_comment_spec.rb. Expected to take 7.6 seconds.

Gitlab::SlashCommands::IssueComment
  #execute
    when the issue exists
      when project is private
        when the user is not a member of the project
          does not allow the user to comment
      when the user is not a member of the project
        when the discussion is locked in the issue
          does not allow the user to comment
      when the user can comment on the issue
        when comment body exists
          creates a new comment
          a new comment has a correct body
# [RSpecRunTime] RSpec elapsed time: 18 minutes 7.85 seconds. Current RSS: ~1594M. load average: 1.08 1.12 1.25 1/298 10273


        when comment body does not exist
          does not create a new comment
          displays the errors
# [RSpecRunTime] RSpec elapsed time: 18 minutes 9.24 seconds. Current RSS: ~1592M. load average: 1.08 1.12 1.25 1/293 10274


    when the issue does not exist
      returns not found
  .match
    when a command has an issue ID
      when command has a comment body
        matches an issue ID
        matches an note body
    when a command has a reference prefix for issue ID
      matches an issue ID
    when a command does not have an issue ID
      does not match

# [RSpecRunTime] Finishing example group spec/lib/gitlab/slash_commands/issue_comment_spec.rb. It took 5.36 seconds. Expected to take 7.6 seconds.
# [RSpecRunTime] Starting example group spec/models/slack_integration_spec.rb. Expected to take 7.33 seconds.

SlackIntegration
  does not allow STI
  toggles the integration to inactive when destroyed
  toggles the integration to active when created
  authorized_scope_names
    accepts assignment to nil
    accepts assignment to a string
    accepts assignment to an array of strings
    accepts assignment to a comma-separated string
    strips white-space
# [RSpecRunTime] RSpec elapsed time: 18 minutes 12.43 seconds. Current RSS: ~1590M. load average: 1.07 1.12 1.25 1/293 10275


  Scopes
    #with_bot
      returns records with bot data
    #by_team
      returns records with shared team_id
    #by_integration
      returns records by the integration
  #to_database_hash
    includes the correct attributes
  Associations
    is expected to belong to integration required: false
  feature_available?
    without any scopes
      is always true for :commands
      is always false for others
    with enough scopes for notifications
      only has the correct features
    with enough scopes for commands
      only has the correct features
    with all scopes
      only has the correct features
  all_features_supported?/upgrade_needed?
    with enough scopes
      is expected to be all features supported
      is expected not to be upgrade needed
    without chat:write.public
      is expected not to be all features supported
      is expected to be upgrade needed
    without chat:write
      is expected not to be all features supported
      is expected to be upgrade needed
  Validations
    is expected to validate that :team_id cannot be empty/falsy
    is expected to validate that :team_name cannot be empty/falsy
    is expected to validate that :alias cannot be empty/falsy
    is expected to validate that :user_id cannot be empty/falsy
    is expected to validate that :integration cannot be empty/falsy

# [RSpecRunTime] Finishing example group spec/models/slack_integration_spec.rb. It took 5.05 seconds. Expected to take 7.33 seconds.
# [RSpecRunTime] Starting example group spec/models/ci/group_variable_spec.rb. Expected to take 7.23 seconds.

Ci::GroupVariable
  does not allow STI
  is expected to includes the Presentable module
  is expected to includes the Ci::Maskable module
  is expected to includes the Ci::HidableVariable module
  is expected to includes the HasEnvironmentScope module
  behaves like CI variable
    is expected to includes the Ci::HasVariable module
    strips whitespaces when assigning key
    can convert to runner variable
    variable type
      defines variable types
      defaults variable type to env_var
      supports variable type file
# [RSpecRunTime] RSpec elapsed time: 18 minutes 16.59 seconds. Current RSS: ~1592M. load average: 1.07 1.12 1.25 1/292 10276


  behaves like includes Limitable concern
    #exceeds_limits?
      without plan limits configured
        is expected to eq false
      without plan limits configured
        is expected to eq false
        with an existing model
          is expected to eq true
    validations
      is expected to be a kind of Limitable
      without plan limits configured
        can create new models
      with plan limits configured
        can create new models
        with an existing model
          cannot create new models exceeding the plan limits
  validations
    is expected to validate that :key is case-sensitively unique within the scope of :group_id and :environment_scope, producing a custom validation error on failure
    is expected to allow :description to be ‹""›
    is expected to allow :description to be ‹nil›
    is expected to validate that the length of :description is at most 255
  .by_environment_scope
    is expected to contain exactly #<Ci::GroupVariable id: 6, key: [FILTERED], value: nil, encrypted_value: "MhtGg2sSRyeILR9BEZtEbw==\n"...iable_type: "env_var", environment_scope: "production", raw: false, description: nil, hidden: false>
  .unprotected
    when variable is protected
      returns nothing
    when variable is not protected
      returns the variable
  .for_groups
    is expected to eq [#<Ci::GroupVariable id: 10, key: [FILTERED], value: nil, encrypted_value: "gpzukEeiCYcNf9LIfW/ZGQ==\...lse, variable_type: "env_var", environment_scope: "*", raw: false, description: nil, hidden: false>]
  .for_environment_scope_like
    is expected to contain exactly #<Ci::GroupVariable id: 12, key: [FILTERED], value: nil, encrypted_value: "dgdQKnJagsKBQ3Zb+HtkOg==\n...ariable_type: "env_var", environment_scope: "staging1", raw: false, description: nil, hidden: false> and #<Ci::GroupVariable id: 13, key: [FILTERED], value: nil, encrypted_value: "xnhzBC7nJGhjlcEHgfx8nw==\n...ariable_type: "env_var", environment_scope: "staging2", raw: false, description: nil, hidden: false>
    is expected to contain exactly #<Ci::GroupVariable id: 14, key: [FILTERED], value: nil, encrypted_value: "5ExCxZSItOvHpbdP+vKG+Q==\n...iable_type: "env_var", environment_scope: "production", raw: false, description: nil, hidden: false>
  .environment_scope_names
    groups and orders
  sort_by_attribute
    .created_at_asc
      order by created_at ascending
    .created_at_desc
      order by created_at descending
    .key_asc
      order by key ascending
    .key_desc
      order by key descending
  behaves like cleanup by a loose foreign key
    cleans up (delete or nullify) the model
# [RSpecRunTime] RSpec elapsed time: 18 minutes 21.14 seconds. Current RSS: ~1573M. load average: 1.07 1.12 1.25 1/292 10277


  #audit_details
    equals to the group variable's key
  #group_name
    equals to the name of the group the variable belongs to
  #group_ci_cd_settings_path
    equals to the path of the CI/CD settings of the group the variable belongs to

# [RSpecRunTime] Finishing example group spec/models/ci/group_variable_spec.rb. It took 6.27 seconds. Expected to take 7.23 seconds.
# [RSpecRunTime] Starting example group spec/services/issues/reorder_service_spec.rb. Expected to take 6.96 seconds.

Issues::ReorderService
  #execute
    when ordering issues in a project
      behaves like issues reorder service
        when reordering issues
          returns false with no params
          returns false with both invalid params
          sorts issues
          sorts issues if only given one neighbour, on the left
          sorts issues if only given one neighbour, on the right
# [RSpecRunTime] RSpec elapsed time: 18 minutes 24.16 seconds. Current RSS: ~1568M. load average: 1.06 1.12 1.25 1/292 10278


    when ordering issues in a group
      behaves like issues reorder service
        when reordering issues
          returns false with no params
          returns false with both invalid params
          sorts issues
          sorts issues if only given one neighbour, on the left
          sorts issues if only given one neighbour, on the right
# [RSpecRunTime] RSpec elapsed time: 18 minutes 26.22 seconds. Current RSS: ~1569M. load average: 1.06 1.12 1.25 1/292 10279


      when ordering in a group issue list
        sorts issues

# [RSpecRunTime] Finishing example group spec/services/issues/reorder_service_spec.rb. It took 5.46 seconds. Expected to take 6.96 seconds.
# [RSpecRunTime] Starting example group spec/tasks/gitlab/incoming_email_rake_spec.rb. Expected to take 6.9 seconds.

gitlab:incoming_email:secret rake tasks
  write
    creates encrypted file from stdin
    displays error when key does not exist
    displays error when write directory does not exist
somevalue    shows a warning when content is invalid
# [RSpecRunTime] RSpec elapsed time: 18 minutes 28.34 seconds. Current RSS: ~1573M. load average: 1.06 1.12 1.25 1/292 10281


  :show
    displays error when file does not exist
    displays error when key does not exist
    displays error when key is changed
    outputs the unencrypted content when present
  edit
# password: '123'
# user: 'gitlab-incoming@gmail.com'
    creates encrypted file
    displays error when key does not exist
    displays error when key is changed
    displays error when write directory does not exist
somevalue    shows a warning when content is invalid
    displays error when $EDITOR is not set
# [RSpecRunTime] RSpec elapsed time: 18 minutes 30.09 seconds. Current RSS: ~1583M. load average: 1.06 1.12 1.25 1/292 10284



# [RSpecRunTime] Finishing example group spec/tasks/gitlab/incoming_email_rake_spec.rb. It took 5.46 seconds. Expected to take 6.9 seconds.
# [RSpecRunTime] RSpec elapsed time: 18 minutes 32.57 seconds. Current RSS: ~1564M. load average: 1.13 1.13 1.25 1/292 10285


# [RSpecRunTime] Starting example group spec/lib/gitlab/email/smime/signer_spec.rb. Expected to take 6.65 seconds.

Gitlab::Email::Smime::Signer
  when using an intermediate CA
    signs data appropriately with SMIME
# [RSpecRunTime] RSpec elapsed time: 18 minutes 38.91 seconds. Current RSS: ~1538M. load average: 1.12 1.13 1.25 1/292 10286


  when not using an intermediate CA
    signs data appropriately with SMIME
# [RSpecRunTime] RSpec elapsed time: 18 minutes 40.56 seconds. Current RSS: ~1536M. load average: 1.12 1.13 1.25 1/292 10287



# [RSpecRunTime] Finishing example group spec/lib/gitlab/email/smime/signer_spec.rb. It took 8.09 seconds. Expected to take 6.65 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/templates/Verify/load_performance_testing_gitlab_ci_yaml_spec.rb. Expected to take 6.56 seconds.

Verify/Load-Performance-Testing.gitlab-ci.yml
  the created pipeline
    has no errors
    on master
      behaves like load_performance job on tag or branch
        by default
# [RSpecRunTime] RSpec elapsed time: 18 minutes 43.2 seconds. Current RSS: ~1551M. load average: 1.11 1.13 1.25 1/296 10314


    on another branch
      behaves like load_performance job on tag or branch
        by default
# [RSpecRunTime] RSpec elapsed time: 18 minutes 44.28 seconds. Current RSS: ~1558M. load average: 1.11 1.13 1.25 1/297 10328


    on tag
      behaves like load_performance job on tag or branch
        by default
# [RSpecRunTime] RSpec elapsed time: 18 minutes 45.37 seconds. Current RSS: ~1559M. load average: 1.11 1.13 1.25 1/297 10345


    on merge request
      has no jobs
# [RSpecRunTime] RSpec elapsed time: 18 minutes 46.61 seconds. Current RSS: ~1569M. load average: 1.10 1.12 1.25 1/298 10390



# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/templates/Verify/load_performance_testing_gitlab_ci_yaml_spec.rb. It took 6.06 seconds. Expected to take 6.56 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/pipeline/chain/ensure_resource_groups_spec.rb. Expected to take 6.25 seconds.

Gitlab::Ci::Pipeline::Chain::EnsureResourceGroups
  #perform!
    when a pipeline contains a job that requires a resource group
      ensures the resource group existence
      when a resource group has already been existed
        ensures the resource group existence
# [RSpecRunTime] RSpec elapsed time: 18 minutes 49.32 seconds. Current RSS: ~1551M. load average: 1.10 1.12 1.25 1/297 10391


      when a resource group key contains an invalid character
        does not create any resource groups
# [RSpecRunTime] RSpec elapsed time: 18 minutes 50.49 seconds. Current RSS: ~1544M. load average: 1.10 1.12 1.25 1/297 10392


    when a pipeline does not contain a job that requires a resource group
      does not create any resource groups
# [RSpecRunTime] RSpec elapsed time: 18 minutes 51.66 seconds. Current RSS: ~1544M. load average: 1.09 1.12 1.24 1/297 10393



# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/pipeline/chain/ensure_resource_groups_spec.rb. It took 5.04 seconds. Expected to take 6.25 seconds.
# [RSpecRunTime] Starting example group spec/models/ssh_host_key_spec.rb. Expected to take 6.2 seconds.

SshHostKey
  does not allow STI
  .primary_key
    returns a symbol
  .find_by
    accepts a string key
    accepts a symbol key
  #fingerprints
    returns an array of indexed fingerprints when the cache is filled
    returns an empty array when the cache is empty
  #fingerprints
    returns an array of indexed fingerprints when the cache is filled
    returns an empty array when the cache is empty
    when FIPS is enabled
      only includes SHA256 fingerprint
  #host_keys_changed?
    known_hosts_a: "example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3UpyF2iLqy1d63M6k3jH1vuEnq/NWtE+orJe1Xn7JoRbduKd6zpsJ0JhBGWgcQK0ph0aGW5PcudzzBSc+SlYfCc4GTaxDtmj41hW0o72mNiuDW3oKXXShOiVRde2ZOquH8Z865jGiZIC8BI/bXZD29IGUih0hPu7Rjp70VYiE+35QRf/psD0Ddrz8QUIG3A/2dMzLI5F5ZORk3BIX2F3mJwJOvZxRhR/SqyphDMZ5eZ0EzqbFBCDE6HABWoz9ck8RBGLvCIggmDHj3FmMLcQGMDiy6wKp7QdnBtxjCP6vtE6YPUM223AqsWt+9NTtCfB8YdNAH7YcHHOR1FgtSk1x git@localhost\n@revoked other.example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLIp+4ciR2YO9f9rpldc7InNQw/TBUtcNbJ2XR0rr15/5ytz7YM16xXG0Qjx576PNSmqs4gbTrvTuFZak+v1Jx/9deHRq/yqp9f+tv33+iaJGCQCX/+OVY7aWgV2R9YsS7XQ4mnv4XlOTEssib/rGAIT+ATd/GcdYSEOO+dh4O09/6O/jIMGSeP+NNetgn1nPCnLOjrXFZUnUtNDi6EEKeIlrliJjSb7Jr4f7gjvZnv4RskWHHFo8FgAAqt0gOMT6EmKrnypBe2vLGSAXbtkXr01q6/DNPH+n9VA1LTV6v1KN/W5CN5tQV11wRSKiM8g5OEbi86VjJRi2sOuYoXQU1 git@localhost\n", known_hosts_b: "example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3UpyF2iLqy1d63M6k3jH1vuEnq/NWtE+orJe1Xn7JoRbduKd6zpsJ0JhBGWgcQK0ph0aGW5PcudzzBSc+SlYfCc4GTaxDtmj41hW0o72mNiuDW3oKXXShOiVRde2ZOquH8Z865jGiZIC8BI/bXZD29IGUih0hPu7Rjp70VYiE+35QRf/psD0Ddrz8QUIG3A/2dMzLI5F5ZORk3BIX2F3mJwJOvZxRhR/SqyphDMZ5eZ0EzqbFBCDE6HABWoz9ck8RBGLvCIggmDHj3FmMLcQGMDiy6wKp7QdnBtxjCP6vtE6YPUM223AqsWt+9NTtCfB8YdNAH7YcHHOR1FgtSk1x git@localhost\n@revoked other.example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLIp+4ciR2YO9f9rpldc7InNQw/TBUtcNbJ2XR0rr15/5ytz7YM16xXG0Qjx576PNSmqs4gbTrvTuFZak+v1Jx/9deHRq/yqp9f+tv33+iaJGCQCX/+OVY7aWgV2R9YsS7XQ4mnv4XlOTEssib/rGAIT+ATd/GcdYSEOO+dh4O09/6O/jIMGSeP+NNetgn1nPCnLOjrXFZUnUtNDi6EEKeIlrliJjSb7Jr4f7gjvZnv4RskWHHFo8FgAAqt0gOMT6EmKrnypBe2vLGSAXbtkXr01q6/DNPH+n9VA1LTV6v1KN/W5CN5tQV11wRSKiM8g5OEbi86VjJRi2sOuYoXQU1 git@localhost\nfoo\nbar\n", result: true
      (normal)
        is expected to eq true
      (reversed)
        is expected to eq true
    known_hosts_a: "example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3UpyF2iLqy1d63M6k3jH1vuEnq/NWtE+orJe1Xn7JoRbduKd6zpsJ0JhBGWgcQK0ph0aGW5PcudzzBSc+SlYfCc4GTaxDtmj41hW0o72mNiuDW3oKXXShOiVRde2ZOquH8Z865jGiZIC8BI/bXZD29IGUih0hPu7Rjp70VYiE+35QRf/psD0Ddrz8QUIG3A/2dMzLI5F5ZORk3BIX2F3mJwJOvZxRhR/SqyphDMZ5eZ0EzqbFBCDE6HABWoz9ck8RBGLvCIggmDHj3FmMLcQGMDiy6wKp7QdnBtxjCP6vtE6YPUM223AqsWt+9NTtCfB8YdNAH7YcHHOR1FgtSk1x git@localhost\n@revoked other.example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLIp+4ciR2YO9f9rpldc7InNQw/TBUtcNbJ2XR0rr15/5ytz7YM16xXG0Qjx576PNSmqs4gbTrvTuFZak+v1Jx/9deHRq/yqp9f+tv33+iaJGCQCX/+OVY7aWgV2R9YsS7XQ4mnv4XlOTEssib/rGAIT+ATd/GcdYSEOO+dh4O09/6O/jIMGSeP+NNetgn1nPCnLOjrXFZUnUtNDi6EEKeIlrliJjSb7Jr4f7gjvZnv4RskWHHFo8FgAAqt0gOMT6EmKrnypBe2vLGSAXbtkXr01q6/DNPH+n9VA1LTV6v1KN/W5CN5tQV11wRSKiM8g5OEbi86VjJRi2sOuYoXQU1 git@localhost\n", known_hosts_b: "foo\n", result: true
      (normal)
        is expected to eq true
      (reversed)
        is expected to eq true
    known_hosts_a: "example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3UpyF2iLqy1d63M6k3jH1vuEnq/NWtE+orJe1Xn7JoRbduKd6zpsJ0JhBGWgcQK0ph0aGW5PcudzzBSc+SlYfCc4GTaxDtmj41hW0o72mNiuDW3oKXXShOiVRde2ZOquH8Z865jGiZIC8BI/bXZD29IGUih0hPu7Rjp70VYiE+35QRf/psD0Ddrz8QUIG3A/2dMzLI5F5ZORk3BIX2F3mJwJOvZxRhR/SqyphDMZ5eZ0EzqbFBCDE6HABWoz9ck8RBGLvCIggmDHj3FmMLcQGMDiy6wKp7QdnBtxjCP6vtE6YPUM223AqsWt+9NTtCfB8YdNAH7YcHHOR1FgtSk1x git@localhost\n@revoked other.example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLIp+4ciR2YO9f9rpldc7InNQw/TBUtcNbJ2XR0rr15/5ytz7YM16xXG0Qjx576PNSmqs4gbTrvTuFZak+v1Jx/9deHRq/yqp9f+tv33+iaJGCQCX/+OVY7aWgV2R9YsS7XQ4mnv4XlOTEssib/rGAIT+ATd/GcdYSEOO+dh4O09/6O/jIMGSeP+NNetgn1nPCnLOjrXFZUnUtNDi6EEKeIlrliJjSb7Jr4f7gjvZnv4RskWHHFo8FgAAqt0gOMT6EmKrnypBe2vLGSAXbtkXr01q6/DNPH+n9VA1LTV6v1KN/W5CN5tQV11wRSKiM8g5OEbi86VjJRi2sOuYoXQU1 git@localhost\n", known_hosts_b: "", result: true
      (normal)
        is expected to eq true
      (reversed)
        is expected to eq true
    known_hosts_a: "example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3UpyF2iLqy1d63M6k3jH1vuEnq/NWtE+orJe1Xn7JoRbduKd6zpsJ0JhBGWgcQK0ph0aGW5PcudzzBSc+SlYfCc4GTaxDtmj41hW0o72mNiuDW3oKXXShOiVRde2ZOquH8Z865jGiZIC8BI/bXZD29IGUih0hPu7Rjp70VYiE+35QRf/psD0Ddrz8QUIG3A/2dMzLI5F5ZORk3BIX2F3mJwJOvZxRhR/SqyphDMZ5eZ0EzqbFBCDE6HABWoz9ck8RBGLvCIggmDHj3FmMLcQGMDiy6wKp7QdnBtxjCP6vtE6YPUM223AqsWt+9NTtCfB8YdNAH7YcHHOR1FgtSk1x git@localhost\n@revoked other.example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLIp+4ciR2YO9f9rpldc7InNQw/TBUtcNbJ2XR0rr15/5ytz7YM16xXG0Qjx576PNSmqs4gbTrvTuFZak+v1Jx/9deHRq/yqp9f+tv33+iaJGCQCX/+OVY7aWgV2R9YsS7XQ4mnv4XlOTEssib/rGAIT+ATd/GcdYSEOO+dh4O09/6O/jIMGSeP+NNetgn1nPCnLOjrXFZUnUtNDi6EEKeIlrliJjSb7Jr4f7gjvZnv4RskWHHFo8FgAAqt0gOMT6EmKrnypBe2vLGSAXbtkXr01q6/DNPH+n9VA1LTV6v1KN/W5CN5tQV11wRSKiM8g5OEbi86VjJRi2sOuYoXQU1 git@localhost\n", known_hosts_b: nil, result: true
      (normal)
        is expected to eq true
      (reversed)
        is expected to eq true
    known_hosts_a: "example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3UpyF2iLqy1d63M6k3jH1vuEnq/NWtE+orJe1Xn7JoRbduKd6zpsJ0JhBGWgcQK0ph0aGW5PcudzzBSc+SlYfCc4GTaxDtmj41hW0o72mNiuDW3oKXXShOiVRde2ZOquH8Z865jGiZIC8BI/bXZD29IGUih0hPu7Rjp70VYiE+35QRf/psD0Ddrz8QUIG3A/2dMzLI5F5ZORk3BIX2F3mJwJOvZxRhR/SqyphDMZ5eZ0EzqbFBCDE6HABWoz9ck8RBGLvCIggmDHj3FmMLcQGMDiy6wKp7QdnBtxjCP6vtE6YPUM223AqsWt+9NTtCfB8YdNAH7YcHHOR1FgtSk1x git@localhost\n@revoked other.example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLIp+4ciR2YO9f9rpldc7InNQw/TBUtcNbJ2XR0rr15/5ytz7YM16xXG0Qjx576PNSmqs4gbTrvTuFZak+v1Jx/9deHRq/yqp9f+tv33+iaJGCQCX/+OVY7aWgV2R9YsS7XQ4mnv4XlOTEssib/rGAIT+ATd/GcdYSEOO+dh4O09/6O/jIMGSeP+NNetgn1nPCnLOjrXFZUnUtNDi6EEKeIlrliJjSb7Jr4f7gjvZnv4RskWHHFo8FgAAqt0gOMT6EmKrnypBe2vLGSAXbtkXr01q6/DNPH+n9VA1LTV6v1KN/W5CN5tQV11wRSKiM8g5OEbi86VjJRi2sOuYoXQU1 git@localhost\n", known_hosts_b: "example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3UpyF2iLqy1d63M6k3jH1vuEnq/NWtE+orJe1Xn7JoRbduKd6zpsJ0JhBGWgcQK0ph0aGW5PcudzzBSc+SlYfCc4GTaxDtmj41hW0o72mNiuDW3oKXXShOiVRde2ZOquH8Z865jGiZIC8BI/bXZD29IGUih0hPu7Rjp70VYiE+35QRf/psD0Ddrz8QUIG3A/2dMzLI5F5ZORk3BIX2F3mJwJOvZxRhR/SqyphDMZ5eZ0EzqbFBCDE6HABWoz9ck8RBGLvCIggmDHj3FmMLcQGMDiy6wKp7QdnBtxjCP6vtE6YPUM223AqsWt+9NTtCfB8YdNAH7YcHHOR1FgtSk1x git@localhost\n@revoked other.example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLIp+4ciR2YO9f9rpldc7InNQw/TBUtcNbJ2XR0rr15/5ytz7YM16xXG0Qjx576PNSmqs4gbTrvTuFZak+v1Jx/9deHRq/yqp9f+tv33+iaJGCQCX/+OVY7aWgV2R9YsS7XQ4mnv4XlOTEssib/rGAIT+ATd/GcdYSEOO+dh4O09/6O/jIMGSeP+NNetgn1nPCnLOjrXFZUnUtNDi6EEKeIlrliJjSb7Jr4f7gjvZnv4RskWHHFo8FgAAqt0gOMT6EmKrnypBe2vLGSAXbtkXr01q6/DNPH+n9VA1LTV6v1KN/W5CN5tQV11wRSKiM8g5OEbi86VjJRi2sOuYoXQU1 git@localhost\n", result: false
      (normal)
        is expected to eq false
      (reversed)
        is expected to eq false
    known_hosts_a: "@revoked other.example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLIp+4ciR2YO9f9rpldc7InNQw/TBUtcNbJ2XR0rr15/5ytz7YM16xXG0Qjx576PNSmqs4gbTrvTuFZak+v1Jx/9deHRq/yqp9f+tv33+iaJGCQCX/+OVY7aWgV2R9YsS7XQ4mnv4XlOTEssib/rGAIT+ATd/GcdYSEOO+dh4O09/6O/jIMGSeP+NNetgn1nPCnLOjrXFZUnUtNDi6EEKeIlrliJjSb7Jr4f7gjvZnv4RskWHHFo8FgAAqt0gOMT6EmKrnypBe2vLGSAXbtkXr01q6/DNPH+n9VA1LTV6v1KN/W5CN5tQV11wRSKiM8g5OEbi86VjJRi2sOuYoXQU1 git@localhost\nexample.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3UpyF2iLqy1d63M6k3jH1vuEnq/NWtE+orJe1Xn7JoRbduKd6zpsJ0JhBGWgcQK0ph0aGW5PcudzzBSc+SlYfCc4GTaxDtmj41hW0o72mNiuDW3oKXXShOiVRde2ZOquH8Z865jGiZIC8BI/bXZD29IGUih0hPu7Rjp70VYiE+35QRf/psD0Ddrz8QUIG3A/2dMzLI5F5ZORk3BIX2F3mJwJOvZxRhR/SqyphDMZ5eZ0EzqbFBCDE6HABWoz9ck8RBGLvCIggmDHj3FmMLcQGMDiy6wKp7QdnBtxjCP6vtE6YPUM223AqsWt+9NTtCfB8YdNAH7YcHHOR1FgtSk1x git@localhost\n", known_hosts_b: "example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3UpyF2iLqy1d63M6k3jH1vuEnq/NWtE+orJe1Xn7JoRbduKd6zpsJ0JhBGWgcQK0ph0aGW5PcudzzBSc+SlYfCc4GTaxDtmj41hW0o72mNiuDW3oKXXShOiVRde2ZOquH8Z865jGiZIC8BI/bXZD29IGUih0hPu7Rjp70VYiE+35QRf/psD0Ddrz8QUIG3A/2dMzLI5F5ZORk3BIX2F3mJwJOvZxRhR/SqyphDMZ5eZ0EzqbFBCDE6HABWoz9ck8RBGLvCIggmDHj3FmMLcQGMDiy6wKp7QdnBtxjCP6vtE6YPUM223AqsWt+9NTtCfB8YdNAH7YcHHOR1FgtSk1x git@localhost\n@revoked other.example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLIp+4ciR2YO9f9rpldc7InNQw/TBUtcNbJ2XR0rr15/5ytz7YM16xXG0Qjx576PNSmqs4gbTrvTuFZak+v1Jx/9deHRq/yqp9f+tv33+iaJGCQCX/+OVY7aWgV2R9YsS7XQ4mnv4XlOTEssib/rGAIT+ATd/GcdYSEOO+dh4O09/6O/jIMGSeP+NNetgn1nPCnLOjrXFZUnUtNDi6EEKeIlrliJjSb7Jr4f7gjvZnv4RskWHHFo8FgAAqt0gOMT6EmKrnypBe2vLGSAXbtkXr01q6/DNPH+n9VA1LTV6v1KN/W5CN5tQV11wRSKiM8g5OEbi86VjJRi2sOuYoXQU1 git@localhost\n", result: false
      (normal)
        is expected to eq false
      (reversed)
        is expected to eq false
    known_hosts_a: "example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3UpyF2iLqy1d63M6k3jH1vuEnq/NWtE+orJe1Xn7JoRbduKd6zpsJ0JhBGWgcQK0ph0aGW5PcudzzBSc+SlYfCc4GTaxDtmj41hW0o72mNiuDW3oKXXShOiVRde2ZOquH8Z865jGiZIC8BI/bXZD29IGUih0hPu7Rjp70VYiE+35QRf/psD0Ddrz8QUIG3A/2dMzLI5F5ZORk3BIX2F3mJwJOvZxRhR/SqyphDMZ5eZ0EzqbFBCDE6HABWoz9ck8RBGLvCIggmDHj3FmMLcQGMDiy6wKp7QdnBtxjCP6vtE6YPUM223AqsWt+9NTtCfB8YdNAH7YcHHOR1FgtSk1x git@localhost\n@revoked other.example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLIp+4ciR2YO9f9rpldc7InNQw/TBUtcNbJ2XR0rr15/5ytz7YM16xXG0Qjx576PNSmqs4gbTrvTuFZak+v1Jx/9deHRq/yqp9f+tv33+iaJGCQCX/+OVY7aWgV2R9YsS7XQ4mnv4XlOTEssib/rGAIT+ATd/GcdYSEOO+dh4O09/6O/jIMGSeP+NNetgn1nPCnLOjrXFZUnUtNDi6EEKeIlrliJjSb7Jr4f7gjvZnv4RskWHHFo8FgAAqt0gOMT6EmKrnypBe2vLGSAXbtkXr01q6/DNPH+n9VA1LTV6v1KN/W5CN5tQV11wRSKiM8g5OEbi86VjJRi2sOuYoXQU1 git@localhost\nfoo\nbar\n", known_hosts_b: "foo\n", result: true
      (normal)
        is expected to eq true
      (reversed)
        is expected to eq true
    known_hosts_a: "", known_hosts_b: "", result: false
      (normal)
        is expected to eq false
      (reversed)
        is expected to eq false
    known_hosts_a: nil, known_hosts_b: nil, result: false
      (normal)
        is expected to eq false
      (reversed)
        is expected to eq false
    known_hosts_a: "", known_hosts_b: nil, result: false
      (normal)
        is expected to eq false
      (reversed)
        is expected to eq false
  #calculate_reactive_cache
    writes the hostname to STDIN
    successful key scan
      stores the cleaned known_hosts data
    failed key scan (exit code 1)
      returns a generic error
    failed key scan (exit code 0)
      returns a generic error
    DNS rebinding protection enabled
      sends an address as well as hostname to ssh-keyscan
  URL validation
    when local requests are not allowed
      forbids scanning localhost
    when local requests are allowed
      permits scanning localhost

# [RSpecRunTime] Finishing example group spec/models/ssh_host_key_spec.rb. It took 4.78 seconds. Expected to take 6.2 seconds.
# [RSpecRunTime] Starting example group spec/helpers/icons_helper_spec.rb. Expected to take 5.91 seconds.

IconsHelper
  sprite_icon_path
    returns relative path
    only calls image_path once when called multiple times
    when an asset_host is set in the config it will return an absolute local URL
      returns an absolute URL on that asset host
  sprite_icon
    returns svg icon html with DEFAULT_ICON_SIZE
    returns svg icon html without size class
    returns svg icon html + size classes
    returns svg icon html + size classes + additional class
    returns svg icon html with aria label
    returns a file icon
    non existing icon
      raises in development mode
      raises in test mode
      does not raise in production mode
  audit icon
    returns right icon name for standard auth
    returns right icon name for two-factor auth
    returns right icon name for google_oauth2 auth
  file_type_icon_class
    returns folder-o class
    returns share class
    returns document class with .pdf
    returns doc-image class with .jpg
    returns doc-image class with .JPG
    returns doc-image class with .png
    returns doc-image class with .apng
    returns doc-image class with .webp
    returns doc-compressed class with .tar
    returns doc-compressed class with .TAR
    returns doc-compressed class with .tar.gz
    returns volume-up class with .mp3
    returns volume-up class with .MP3
    returns volume-up class with .m4a
    returns volume-up class with .wav
    returns live-preview class with .avi
    returns live-preview class with .AVI
    returns live-preview class with .mp4
    returns doc-text class with .odt
    returns doc-text class with .doc
    returns doc-text class with .DOC
    returns doc-text class with .docx
    returns document class with .xls
    returns document class with .XLS
    returns document class with .xlsx
    returns doc-chart class with .odp
    returns doc-chart class with .ppt
    returns doc-chart class with .PPT
    returns doc-chart class with .pptx
    returns doc-text class with .unknow
    returns doc-text class with no extension
# [RSpecRunTime] RSpec elapsed time: 19 minutes 0.76 second. Current RSS: ~1590M. load average: 1.09 1.12 1.24 1/293 10394


  #external_snippet_icon
    returns external snippet icon
  gl_loading_icon
    returns the default spinner markup
    when css_class is provided
      appends css_class to container element
    when size is provided
      sets the size class
    when color is provided
      sets the color class
    when inline is true
      creates an inline container

# [RSpecRunTime] Finishing example group spec/helpers/icons_helper_spec.rb. It took 4.95 seconds. Expected to take 5.91 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/cleanup/orphan_lfs_file_references_spec.rb. Expected to take 5.9 seconds.

Gitlab::Cleanup::OrphanLfsFileReferences
  dry run
    prints messages and does not delete references
  regular run
    prints messages and deletes invalid reference
    does nothing if the project has no LFS objects
    LFS object is in design repository
      is not removed
# [RSpecRunTime] RSpec elapsed time: 19 minutes 4.58 seconds. Current RSS: ~1612M. load average: 1.16 1.13 1.25 1/297 10440


    LFS object is in wiki repository
      is not removed
  LFS for project snippets
    is disabled
# [RSpecRunTime] RSpec elapsed time: 19 minutes 6.53 seconds. Current RSS: ~1617M. load average: 1.15 1.13 1.25 1/297 10462



# [RSpecRunTime] Finishing example group spec/lib/gitlab/cleanup/orphan_lfs_file_references_spec.rb. It took 5.14 seconds. Expected to take 5.9 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/badge/release/latest_release_spec.rb. Expected to take 5.57 seconds.

Gitlab::Ci::Badge::Release::LatestRelease
  #entity
    describes latest release
# [RSpecRunTime] RSpec elapsed time: 19 minutes 7.8 seconds. Current RSS: ~1610M. load average: 1.15 1.13 1.25 1/297 10469


  #tag
    returns latest release tag for the project ordered using release_at
# [RSpecRunTime] RSpec elapsed time: 19 minutes 8.99 seconds. Current RSS: ~1599M. load average: 1.15 1.13 1.25 1/297 10476


  #metadata
    returns correct metadata
# [RSpecRunTime] RSpec elapsed time: 19 minutes 11.3 seconds. Current RSS: ~1576M. load average: 1.15 1.13 1.25 1/297 10483


  #template
    returns correct template
# [RSpecRunTime] RSpec elapsed time: 19 minutes 12.31 seconds. Current RSS: ~1581M. load average: 1.05 1.11 1.24 1/297 10490



# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/badge/release/latest_release_spec.rb. It took 5.77 seconds. Expected to take 5.57 seconds.
# [RSpecRunTime] Starting example group spec/helpers/namespaces_helper_spec.rb. Expected to take 5.57 seconds.

NamespacesHelper
  #cascading_namespace_settings_popover_data
    when locked by an application setting
      returns expected hash
# [RSpecRunTime] RSpec elapsed time: 19 minutes 13.54 seconds. Current RSS: ~1575M. load average: 1.05 1.11 1.24 1/297 10491


    when locked by an ancestor namespace
      returns expected hash
# [RSpecRunTime] RSpec elapsed time: 19 minutes 14.56 seconds. Current RSS: ~1574M. load average: 1.05 1.11 1.24 1/297 10492


  #cascading_namespace_setting_locked?
    when `group` argument is `nil`
      returns `false`
# [RSpecRunTime] RSpec elapsed time: 19 minutes 15.61 seconds. Current RSS: ~1575M. load average: 1.05 1.11 1.24 1/295 10493


    when `*_locked?` method does not exist
      returns `false`
# [RSpecRunTime] RSpec elapsed time: 19 minutes 16.72 seconds. Current RSS: ~1574M. load average: 1.05 1.11 1.24 1/293 10494


    when `*_locked?` method does exist
      calls corresponding `*_locked?` method
# [RSpecRunTime] RSpec elapsed time: 19 minutes 17.76 seconds. Current RSS: ~1574M. load average: 1.05 1.11 1.24 1/292 10495



# [RSpecRunTime] Finishing example group spec/helpers/namespaces_helper_spec.rb. It took 5.44 seconds. Expected to take 5.57 seconds.
# [RSpecRunTime] Starting example group spec/presenters/packages/conan/package_presenter_spec.rb. Expected to take 5.37 seconds.

Packages::Conan::PackagePresenter
  #recipe_urls
    behaves like no existing package
      when package does not exist
        is expected to be empty
# [RSpecRunTime] RSpec elapsed time: 19 minutes 18.91 seconds. Current RSS: ~1566M. load average: 1.05 1.11 1.24 1/292 10496


    behaves like conan_file_metadatum is not found
      when no conan_file_metadatum exists
        is expected to be empty
    existing package
      is expected to eq {"conanfile.py"=>"http://localhost/api/v4/packages/conan/v1/files/package-1/1.0.0/namespace903+projec...packages/conan/v1/files/package-1/1.0.0/namespace903+project-805/stable/0/export/conanmanifest.txt"}
      when there are multiple channels for the same package
        is expected to eq {"conanfile.py"=>"http://localhost/api/v4/packages/conan/v1/files/package-1/1.0.0/namespace903+projec...packages/conan/v1/files/package-1/1.0.0/namespace903+project-805/stable/0/export/conanmanifest.txt"}
      with package_scope of project
        is expected to eq {"conanfile.py"=>"http://localhost/api/v4/projects/896/packages/conan/v1/files/package-1/1.0.0/namesp...packages/conan/v1/files/package-1/1.0.0/namespace903+project-805/stable/0/export/conanmanifest.txt"}
  #recipe_snapshot
    behaves like no existing package
      when package does not exist
        is expected to be empty
    behaves like conan_file_metadatum is not found
      when no conan_file_metadatum exists
        is expected to be empty
    existing package
      is expected to eq {"conanfile.py"=>"12345abcde", "conanmanifest.txt"=>"12345abcde"}
  #package_urls
    behaves like no existing package
      when package does not exist
        is expected to be empty
    behaves like conan_file_metadatum is not found
      when no conan_file_metadatum exists
        is expected to be empty
    existing package
      is expected to eq {"conan_package.tgz"=>"http://localhost/api/v4/packages/conan/v1/files/package-1/1.0.0/namespace903+p...n/v1/files/package-1/1.0.0/namespace903+project-805/stable/0/package/123456789/0/conanmanifest.txt"}
      with package_scope of project
        is expected to eq {"conan_package.tgz"=>"http://localhost/api/v4/projects/896/packages/conan/v1/files/package-1/1.0.0/n...n/v1/files/package-1/1.0.0/namespace903+project-805/stable/0/package/123456789/0/conanmanifest.txt"}
      multiple packages with different references
        is expected to eq {"conan_package.tgz"=>"http://localhost/api/v4/packages/conan/v1/files/package-1/1.0.0/namespace903+p...n/v1/files/package-1/1.0.0/namespace903+project-805/stable/0/package/123456789/0/conanmanifest.txt"}
        returns empty if the reference does not exist
        requesting the alternative reference
          is expected to eq {"conan_package.tgz"=>"http://localhost/api/v4/packages/conan/v1/files/package-1/1.0.0/namespace903+p...n/v1/files/package-1/1.0.0/namespace903+project-805/stable/0/package/abcdefghi/0/conanmanifest.txt"}
  #package_snapshot
    behaves like no existing package
      when package does not exist
        is expected to be empty
    behaves like conan_file_metadatum is not found
      when no conan_file_metadatum exists
        is expected to be empty
    existing package
      is expected to eq {"conan_package.tgz"=>"12345abcde", "conaninfo.txt"=>"12345abcde", "conanmanifest.txt"=>"12345abcde"}
      when requested with invalid reference
        is expected to eq {}

# [RSpecRunTime] Finishing example group spec/presenters/packages/conan/package_presenter_spec.rb. It took 4.2 seconds. Expected to take 5.37 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/reports/test_suite_spec.rb. Expected to take 5.24 seconds.

Gitlab::Ci::Reports::TestSuite
  is expected to eq "Rspec"
  #add_test_case
    when status of the test case is success
      stores data correctly
    when status of the test case is failed
      stores data correctly
    when two test cases are added
      sums up total time
  #total_count
    is expected to eq 4
  #total_status
    when all test cases succeeded
      is expected to eq "success"
    when a test case failed
      is expected to eq "failed"
    when a test case errored
      is expected to eq "failed"
  #with_attachment
    when test cases do not contain an attachment
      returns an empty hash
    when test cases contain an attachment
      returns failed test cases with attachment
  #set_suite_error
    when @suite_error is nil
      returns message
      sets the new message
    when a suite_error has already been set
      overwrites the existing message
  #+
    when adding multiple suites together
      returns a new test suite
      returns the suite name
      returns the sum for total_time
      merges tests cases hash
  #sorted
    when there are multiple failed test cases
      returns test cases sorted by execution time desc
    when there are multiple test cases
      returns test cases sorted by status
  #error
    when error test case exists
      returns all success test cases
    when error test case do not exist
      returns nothing
  #failed
    when failed test case exists
      returns all success test cases
    when failed test case do not exist
      returns nothing
  #success
    when success test case exists
      returns all success test cases
    when success test case do not exist
      returns nothing
  #skipped
    when skipped test case exists
      returns all success test cases
    when skipped test case do not exist
      returns nothing
  #each_test_case
    yields each test case to given block
  #error_count
    when error test case exists
      returns the count
    when error test case do not exist
      returns nothing
  #failed_count
    when failed test case exists
      returns the count
    when failed test case do not exist
      returns nothing
  #success_count
    when success test case exists
      returns the count
    when success test case do not exist
      returns nothing
  #skipped_count
    when skipped test case exists
      returns the count
    when skipped test case do not exist
      returns nothing

# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/reports/test_suite_spec.rb. It took 4.21 seconds. Expected to take 5.24 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/slash_commands/presenters/issue_move_spec.rb. Expected to take 5.19 seconds.

Gitlab::SlashCommands::Presenters::IssueMove
  is expected to be a kind of Hash
  shows the new issue
  mentions the old issue and the new issue in the pretext

# [RSpecRunTime] Finishing example group spec/lib/gitlab/slash_commands/presenters/issue_move_spec.rb. It took 4.18 seconds. Expected to take 5.19 seconds.
# [RSpecRunTime] RSpec elapsed time: 19 minutes 30.49 seconds. Current RSS: ~1598M. load average: 1.04 1.11 1.23 1/292 10497


# [RSpecRunTime] Starting example group spec/db/production/settings_spec.rb. Expected to take 5.01 seconds.

seed production settings
  GITLAB_SHARED_RUNNERS_REGISTRATION_TOKEN is set in the environment
Saved Runner Registration Token
Saved CI JWT signing key
    writes the token to the database
# [RSpecRunTime] RSpec elapsed time: 19 minutes 31.57 seconds. Current RSS: ~1601M. load average: 1.04 1.10 1.23 1/292 10498


  GITLAB_PROMETHEUS_METRICS_ENABLED is set in the environment
    GITLAB_PROMETHEUS_METRICS_ENABLED is true
Saved Prometheus metrics enabled flag
Saved CI JWT signing key
      prometheus_metrics_enabled is set to true
# [RSpecRunTime] RSpec elapsed time: 19 minutes 32.68 seconds. Current RSS: ~1619M. load average: 1.04 1.10 1.23 1/292 10499


    GITLAB_PROMETHEUS_METRICS_ENABLED is false
Saved Prometheus metrics enabled flag
Saved CI JWT signing key
      prometheus_metrics_enabled is set to false
    GITLAB_PROMETHEUS_METRICS_ENABLED is default
Saved CI JWT signing key
      prometheus_metrics_enabled is set to true
  CI JWT signing key
Saved CI JWT signing key
    writes valid RSA key to the database

# [RSpecRunTime] Finishing example group spec/db/production/settings_spec.rb. It took 4.77 seconds. Expected to take 5.01 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/checks/push_check_spec.rb. Expected to take 4.93 seconds.

Gitlab::Checks::PushCheck
  #validate!
    does not raise any error
    when the user is not allowed to push to the repo
      raises an error
# [RSpecRunTime] RSpec elapsed time: 19 minutes 37.11 seconds. Current RSS: ~1644M. load average: 0.95 1.08 1.23 1/292 10512


    when using a DeployKeyAccess instance
      when the deploy key cannot push to the targetted branch
        raises an error
# [RSpecRunTime] RSpec elapsed time: 19 minutes 38.18 seconds. Current RSS: ~1640M. load average: 0.95 1.08 1.23 1/292 10520


      when the deploy key can push to the targetted branch
        is valid
# [RSpecRunTime] RSpec elapsed time: 19 minutes 39.28 seconds. Current RSS: ~1639M. load average: 0.95 1.08 1.23 1/292 10527



# [RSpecRunTime] Finishing example group spec/lib/gitlab/checks/push_check_spec.rb. It took 4.12 seconds. Expected to take 4.93 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/config/entry/variables_spec.rb. Expected to take 4.81 seconds.

Gitlab::Ci::Config::Entry::Variables
  when entry config value has key-value pairs
    behaves like valid config
      #value
        returns hash with key value strings
      #errors
        does not append errors
      #valid?
        is valid
    #value_with_data
      returns variable with data
    #value_with_prefill_data
      returns variable with prefill data
  with numeric keys and values in the config
    behaves like valid config
      #value
        returns hash with key value strings
      #errors
        does not append errors
      #valid?
        is valid
  when key is an array
    behaves like invalid config
      #valid?
        is not valid
      #errors
        saves errors
  when value is a symbol
    behaves like valid config
      #value
        returns hash with key value strings
      #errors
        does not append errors
      #valid?
        is valid
  when value is a boolean
    behaves like valid config
      #value
        returns hash with key value strings
      #errors
        does not append errors
      #valid?
        is valid
  when entry config value has unallowed value key-value pair and value is a string
    when there is no allowed_value_data metadata
      behaves like invalid config
        #valid?
          is not valid
        #errors
          saves errors
    when metadata has the allowed_value_data key
      behaves like valid config
        #value
          returns hash with key value strings
        #errors
          does not append errors
        #valid?
          is valid
      #value_with_data
        returns variable with data
      #value_with_prefill_data
        returns variable with prefill data
  when entry config value has options
    when metadata has allowed_value_data
      behaves like valid config
        #value
          returns hash with key value strings
        #errors
          does not append errors
        #valid?
          is valid
      #value_with_data
        returns variable with data
      #value_with_prefill_data
        returns variable with prefill data
  when entry config value has key-value pair and hash
    behaves like invalid config
      #valid?
        is not valid
      #errors
        saves errors
    when metadata has allowed_value_data
      behaves like valid config
        #value
          returns hash with key value strings
        #errors
          does not append errors
        #valid?
          is valid
      #value_with_data
        returns variable with data
      #value_with_prefill_data
        returns variable with prefill data
  when entry value is an array
    behaves like invalid config
      #valid?
        is not valid
      #errors
        saves errors
  when metadata has allowed_value_data
    when entry value has hash with other key-pairs
      behaves like invalid config
        #valid?
          is not valid
        #errors
          saves errors
    when entry config value has hash without description
      behaves like valid config
        #value
          returns hash with key value strings
        #errors
          does not append errors
        #valid?
          is valid

# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/config/entry/variables_spec.rb. It took 4.44 seconds. Expected to take 4.81 seconds.
# [RSpecRunTime] Starting example group spec/models/instance_configuration_spec.rb. Expected to take 4.75 seconds.

InstanceConfiguration
  does not allow STI
  without cache
    #settings
      #ssh_algorithms_hashes
        does not return anything if file does not exist
        does not return anything if file is empty
        returns the md5 and sha256 if file valid and exists
        includes all algorithms
        does not include disabled algorithm
# [RSpecRunTime] RSpec elapsed time: 19 minutes 44.9 seconds. Current RSS: ~1682M. load average: 0.96 1.08 1.22 1/292 10528


      #host
        returns current instance host
      #gitlab_pages
        returns Settings.pages
        returns the GitLab's pages host ip address
        returns the ip address as nil if the domain is invalid
        returns the ip address of the domain
      #size_limits
        returns size limits from application settings
        returns nil if receive_max_input_size not set
        returns nil if set to 0 (unlimited)
# [RSpecRunTime] RSpec elapsed time: 19 minutes 46.96 seconds. Current RSS: ~1697M. load average: 0.96 1.08 1.22 1/292 10529


      #package_file_size_limits
        returns package file size limits
      #ci_cd_limits
        returns CI/CD limits
      #rate_limits
        returns rate limits from application settings
  with cache
    caches settings content
    cached settings
      expires after EXPIRATION_TIME

# [RSpecRunTime] Finishing example group spec/models/instance_configuration_spec.rb. It took 4.22 seconds. Expected to take 4.75 seconds.
# [RSpecRunTime] Starting example group spec/services/members/request_access_service_spec.rb. Expected to take 4.51 seconds.

Members::RequestAccessService
  when source is nil
    behaves like a service raising Gitlab::Access::AccessDeniedError
      raises Gitlab::Access::AccessDeniedError
  when current user cannot request access to the project
    behaves like a service raising Gitlab::Access::AccessDeniedError
      raises Gitlab::Access::AccessDeniedError
    behaves like a service raising Gitlab::Access::AccessDeniedError
      raises Gitlab::Access::AccessDeniedError
  when access requests are disabled
    behaves like a service raising Gitlab::Access::AccessDeniedError
      raises Gitlab::Access::AccessDeniedError
    behaves like a service raising Gitlab::Access::AccessDeniedError
      raises Gitlab::Access::AccessDeniedError
  when current user can request access to the project
    behaves like a service creating a access request
      succeeds
      returns a <Source>Member
# [RSpecRunTime] RSpec elapsed time: 19 minutes 51.5 seconds. Current RSS: ~1653M. load average: 1.04 1.10 1.23 1/292 10530


    behaves like a service creating a access request
      succeeds
      returns a <Source>Member

# [RSpecRunTime] Finishing example group spec/services/members/request_access_service_spec.rb. It took 4.34 seconds. Expected to take 4.51 seconds.
# [RSpecRunTime] Starting example group spec/lib/api/entities/project_import_status_spec.rb. Expected to take 4.45 seconds.

API::Entities::ProjectImportStatus
  #as_json
    when no import state exists
      includes basic fields and no failures
    when import has not finished yet
      includes basic fields and no failures
    when import has finished with failed relations
      includes basic fields with failed relations
    when import has failed
      when user has access to read import status
        includes basic fields with import error
      when user does not have access to read import status
        includes basic fields with import error
    when importing from github
      exposes the import stats

# [RSpecRunTime] Finishing example group spec/lib/api/entities/project_import_status_spec.rb. It took 3.44 seconds. Expected to take 4.45 seconds.
# [RSpecRunTime] Starting example group spec/finders/autocomplete/group_users_finder_spec.rb. Expected to take 4.4 seconds.

Autocomplete::GroupUsersFinder
  #execute
    with group members
      returns members of groups in the hierarchy
# [RSpecRunTime] RSpec elapsed time: 19 minutes 57.51 seconds. Current RSS: ~1561M. load average: 1.04 1.10 1.23 1/292 10531


    with project members
      returns members of descendant projects
    with invited group members
      returns members of groups invited to this group
      returns members of groups invited to an ancestor group
      returns members of groups invited to a descendant group
      returns members of groups invited to a child project
      returns members of groups invited to a descendant project
      does not return members of groups invited to a project of an ancestor group
# [RSpecRunTime] RSpec elapsed time: 19 minutes 59.32 seconds. Current RSS: ~1564M. load average: 1.04 1.10 1.23 1/292 10532



# [RSpecRunTime] Finishing example group spec/finders/autocomplete/group_users_finder_spec.rb. It took 3.6 seconds. Expected to take 4.4 seconds.
# [RSpecRunTime] Starting example group spec/services/packages/helm/process_file_service_spec.rb. Expected to take 4.28 seconds.

Packages::Helm::ProcessFileService
  #execute
    without a file
      returns error
    with existing package
      reuses existing package
      marked as pending_destruction
        reuses the processing package
# [RSpecRunTime] RSpec elapsed time: 20 minutes 0.81 second. Current RSS: ~1570M. load average: 1.04 1.10 1.23 1/293 10533


    with a valid file
      processes file
    without Chart.yaml
      is expected to raise Packages::Helm::ExtractFileMetadataService::ExtractionError with "Chart.yaml not found within a directory"
    with Chart.yaml at root
      is expected to raise Packages::Helm::ExtractFileMetadataService::ExtractionError with "Chart.yaml not found within a directory"
    with an invalid YAML
      is expected to raise Packages::Helm::ExtractFileMetadataService::ExtractionError with "Error while parsing Chart.yaml: (<unknown>): did not find expected node content while parsing a flow node at line 2 column 1"

# [RSpecRunTime] Finishing example group spec/services/packages/helm/process_file_service_spec.rb. It took 3.61 seconds. Expected to take 4.28 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/changelog/committer_spec.rb. Expected to take 4.25 seconds.

Gitlab::Changelog::Committer
  #commit
    when the release isn't in the changelog
      commits the changes
    when the release is already in the changelog
      doesn't commit the changes
    when committing the changes fails
      retries the operation
    when the changelog changes before saving the changes
      raises a Error

# [RSpecRunTime] Finishing example group spec/lib/gitlab/changelog/committer_spec.rb. It took 3.35 seconds. Expected to take 4.25 seconds.
# [RSpecRunTime] Starting example group spec/models/deployment_merge_request_spec.rb. Expected to take 4.11 seconds.

DeploymentMergeRequest
  does not allow STI
  is expected to belong to deployment required: true
  is expected to belong to merge_request required: true

# [RSpecRunTime] Finishing example group spec/models/deployment_merge_request_spec.rb. It took 3.6 seconds. Expected to take 4.11 seconds.
# [RSpecRunTime] RSpec elapsed time: 20 minutes 10.02 seconds. Current RSS: ~1602M. load average: 0.95 1.08 1.22 1/298 10771


# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/config/external/file/local_spec.rb. Expected to take 3.95 seconds.

Gitlab::Ci::Config::External::File::Local
  .initialize
    when a local is specified
      sets the location
      when the local is prefixed with a slash
        removes the slash
      when the local is prefixed with multiple slashes
        removes slashes
    with a missing local
      sets the location to an empty string
  #matching?
    when a local is specified
      returns true
    with a missing local
      returns false
    with a missing local key
      returns false
  #valid?
    when is a valid local path
      is expected to be truthy
    when it is not a valid local path
      is expected to be falsy
    when it is not a yaml file
      is expected to be falsy
    when it is an empty file
      returns false and adds an error message about an empty file
    when the given sha is not valid
      returns false and adds an error message stating that included file does not exist
  #content
    with a valid file
      returns the content of the file
    with an invalid file
      is nil
  #error_message
    returns an error message
  #expand_context
    inherits project, user and sha
  #to_hash
    properly includes another local file in the same repository
      does expand hash to include the template
    when interpolaton is being used
      correctly interpolates the local template
  #metadata
    is expected to eq {:blob=>"http://localhost/namespace939/project-844/-/blob/526f240367a422e81812fddd15b183ec9e1d73c5/li.../526f240367a422e81812fddd15b183ec9e1d73c5/lib/gitlab/ci/templates/existent-file.yml", :type=>:local}

# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/config/external/file/local_spec.rb. It took 3.1 seconds. Expected to take 3.95 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/usage/metrics/instrumentations/unique_users_all_imports_metric_spec.rb. Expected to take 3.92 seconds.

Gitlab::Usage::Metrics::Instrumentations::UniqueUsersAllImportsMetric
  behaves like a correct instrumented metric value and query
    behaves like a correct instrumented metric value
      has correct value
# [RSpecRunTime] RSpec elapsed time: 20 minutes 15.83 seconds. Current RSS: ~1602M. load average: 0.96 1.07 1.22 1/297 10889


    behaves like a correct instrumented metric query
      has correct generate query
  behaves like a correct instrumented metric value and query
    behaves like a correct instrumented metric value
      has correct value
    behaves like a correct instrumented metric query
      has correct generate query

# [RSpecRunTime] Finishing example group spec/lib/gitlab/usage/metrics/instrumentations/unique_users_all_imports_metric_spec.rb. It took 3.2 seconds. Expected to take 3.92 seconds.
# [RSpecRunTime] Starting example group spec/graphql/resolvers/project_pipeline_resolver_spec.rb. Expected to take 3.79 seconds.

Resolvers::ProjectPipelineResolver
  is expected to have nullable GraphQL type Pipeline
  resolves pipeline for the passed iid
  resolves pipeline for the passed sha
  keeps the queries under the threshold for iid
  keeps the queries under the threshold for sha
  does not resolve a pipeline outside the project
  errors when no iid or sha is passed
  errors when both iid and sha are passed
  when the pipeline is a dangling pipeline
    resolves pipeline for the passed iid
# [RSpecRunTime] RSpec elapsed time: 20 minutes 19.51 seconds. Current RSS: ~1597M. load average: 0.96 1.07 1.21 1/297 10890



# [RSpecRunTime] Finishing example group spec/graphql/resolvers/project_pipeline_resolver_spec.rb. It took 3.28 seconds. Expected to take 3.79 seconds.
# [RSpecRunTime] Starting example group spec/models/users_statistics_spec.rb. Expected to take 3.77 seconds.

UsersStatistics
  does not allow STI
  scopes
    .order_created_at_desc
      returns the entries ordered by created at descending
  .latest
    returns the latest entry
  .create_current_stats!
    when successful
      creates an entry with the current statistics values
# [RSpecRunTime] RSpec elapsed time: 20 minutes 21.25 seconds. Current RSS: ~1591M. load average: 0.96 1.07 1.21 1/298 10891


    when unsuccessful
      raises an ActiveRecord::RecordInvalid exception
# [RSpecRunTime] RSpec elapsed time: 20 minutes 22.45 seconds. Current RSS: ~1571M. load average: 1.04 1.09 1.22 2/297 10892


  #active
    sums users statistics values without the value for blocked
  #total
    sums all users statistics values

# [RSpecRunTime] Finishing example group spec/models/users_statistics_spec.rb. It took 3.15 seconds. Expected to take 3.77 seconds.
# [RSpecRunTime] Starting example group spec/graphql/resolvers/project_pipeline_statistics_resolver_spec.rb. Expected to take 3.66 seconds.

Resolvers::ProjectPipelineStatisticsResolver
  is expected to have nullable GraphQL type PipelineAnalytics
  #resolve
    behaves like returns the pipelines statistics for a given project
      is expected to contain exactly :week_pipelines_labels, :week_pipelines_totals, :week_pipelines_successful, :month_pipelines_labels, :month_pipelines_totals, :month_pipelines_successful, :year_pipelines_labels, :year_pipelines_totals, :year_pipelines_successful, :pipeline_times_labels, and :pipeline_times_values
# [RSpecRunTime] RSpec elapsed time: 20 minutes 23.91 seconds. Current RSS: ~1561M. load average: 1.04 1.09 1.22 1/292 10893


    when the user does not have access to the CI/CD analytics data
      behaves like it returns nils
        is expected to be nil
    when the project is public
      public pipelines are disabled
        user is not a member
          behaves like it returns nils
            is expected to be nil
        user is a guest
          behaves like it returns nils
            is expected to be nil
        user is a reporter or above
          behaves like returns the pipelines statistics for a given project
            is expected to contain exactly :week_pipelines_labels, :week_pipelines_totals, :week_pipelines_successful, :month_pipelines_labels, :month_pipelines_totals, :month_pipelines_successful, :year_pipelines_labels, :year_pipelines_totals, :year_pipelines_successful, :pipeline_times_labels, and :pipeline_times_values
      public pipelines are enabled
        user is not a member
          behaves like returns the pipelines statistics for a given project
            is expected to contain exactly :week_pipelines_labels, :week_pipelines_totals, :week_pipelines_successful, :month_pipelines_labels, :month_pipelines_totals, :month_pipelines_successful, :year_pipelines_labels, :year_pipelines_totals, :year_pipelines_successful, :pipeline_times_labels, and :pipeline_times_values

# [RSpecRunTime] Finishing example group spec/graphql/resolvers/project_pipeline_statistics_resolver_spec.rb. It took 3.45 seconds. Expected to take 3.66 seconds.
# [RSpecRunTime] Starting example group spec/serializers/diff_viewer_entity_spec.rb. Expected to take 3.63 seconds.

DiffViewerEntity
  serializes diff file viewer
  contains whitespace_only attribute
  when whitespace_only option is true
    returns the whitespace_only attribute true
# [RSpecRunTime] RSpec elapsed time: 20 minutes 28.32 seconds. Current RSS: ~1582M. load average: 1.04 1.09 1.22 1/297 10933


  when whitespace_only option is false
    returns the whitespace_only attribute false

# [RSpecRunTime] Finishing example group spec/serializers/diff_viewer_entity_spec.rb. It took 2.94 seconds. Expected to take 3.63 seconds.
# [RSpecRunTime] Starting example group spec/finders/groups/user_groups_finder_spec.rb. Expected to take 3.6 seconds.

Groups::UserGroupsFinder
  #execute
    returns all groups where the user is a direct member
    when target_user is nil
      is expected to be empty
# [RSpecRunTime] RSpec elapsed time: 20 minutes 30.46 seconds. Current RSS: ~1582M. load average: 1.04 1.09 1.22 1/297 10947


    when current_user is nil
      is expected to be empty
    when permission is :create_projects
      is expected to contain exactly #<Group id:2468 @root-group/a-public-maintainer>, #<Group id:2469 @a-public-owner>, #<Group id:2466 @root-group/b-private-maintainer>, and #<Group id:2467 @root-group/c-public-developer>
      behaves like user group finder searching by name or path
        is expected to contain exactly #<Group id:2468 @root-group/a-public-maintainer> and #<Group id:2466 @root-group/b-private-maintainer>
        when searching for a full path (including parent)
          is expected to contain exactly #<Group id:2466 @root-group/b-private-maintainer>
        when search keywords include the parent route
          is expected to match [#<Group id:2468 @root-group/a-public-maintainer>, #<Group id:2467 @root-group/c-public-developer>]
    when permission is :import_projects
      is expected to contain exactly #<Group id:2468 @root-group/a-public-maintainer>, #<Group id:2469 @a-public-owner>, and #<Group id:2466 @root-group/b-private-maintainer>
      behaves like user group finder searching by name or path
        is expected to contain exactly #<Group id:2468 @root-group/a-public-maintainer> and #<Group id:2466 @root-group/b-private-maintainer>
        when searching for a full path (including parent)
          is expected to contain exactly #<Group id:2466 @root-group/b-private-maintainer>
        when search keywords include the parent route
          is expected to match [#<Group id:2468 @root-group/a-public-maintainer>]
    when permission is :transfer_projects
      is expected to contain exactly #<Group id:2468 @root-group/a-public-maintainer>, #<Group id:2469 @a-public-owner>, and #<Group id:2466 @root-group/b-private-maintainer>
      behaves like user group finder searching by name or path
        is expected to contain exactly #<Group id:2468 @root-group/a-public-maintainer> and #<Group id:2466 @root-group/b-private-maintainer>
        when searching for a full path (including parent)
          is expected to contain exactly #<Group id:2466 @root-group/b-private-maintainer>
        when search keywords include the parent route
          is expected to match [#<Group id:2468 @root-group/a-public-maintainer>]

# [RSpecRunTime] Finishing example group spec/finders/groups/user_groups_finder_spec.rb. It took 3.09 seconds. Expected to take 3.6 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/analytics/cycle_analytics/stage_events/merge_request_first_deployed_to_production_spec.rb. Expected to take 3.36 seconds.

Gitlab::Analytics::CycleAnalytics::StageEvents::MergeRequestFirstDeployedToProduction
  behaves like value stream analytics event
    is expected to be a kind of String
    is expected to be a kind of Symbol
    is expected to include ApplicationRecord(abstract)
    is expected to respond to #timestamp_projection
    is expected to respond to #html_description
    is expected to be a kind of Array
    #apply_query_customization
      expects an ActiveRecord::Relation object as argument and returns a modified version of it
    #hash_code
      returns a hash that uniquely identifies an event
      does not differ when the same object is built with the same params
  behaves like LEFT JOIN-able value stream analytics event
    can use the event as LEFT JOIN
    when looking at the record with data
      contains the timestamp expression
# [RSpecRunTime] RSpec elapsed time: 20 minutes 34.83 seconds. Current RSS: ~1625M. load average: 1.04 1.08 1.22 1/298 11027


    when looking at the record without data
      returns nil for the timestamp expression

# [RSpecRunTime] Finishing example group spec/lib/gitlab/analytics/cycle_analytics/stage_events/merge_request_first_deployed_to_production_spec.rb. It took 2.81 seconds. Expected to take 3.36 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/git/patches/commit_patches_spec.rb. Expected to take 3.33 seconds.

Gitlab::Git::Patches::CommitPatches
  #commit
    applies the patches
    updates the branch cache
    when the repository does not exist
      raises the correct error
# [RSpecRunTime] RSpec elapsed time: 20 minutes 37.13 seconds. Current RSS: ~1623M. load average: 1.11 1.10 1.22 1/298 11076


    when the patch does not apply
      raises the correct error

# [RSpecRunTime] Finishing example group spec/lib/gitlab/git/patches/commit_patches_spec.rb. It took 2.89 seconds. Expected to take 3.33 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/security/scan_configuration_spec.rb. Expected to take 3.28 seconds.

Gitlab::Security::ScanConfiguration
  #available?
    with a core scanner
      type: :sast
        is expected to be truthy
      type: :sast_iac
        is expected to be truthy
      type: :secret_detection
        is expected to be truthy
      type: :container_scanning
        is expected to be truthy
    with custom scanner
      is expected to be falsey
  #configured?
    is expected to be falsey
  #configuration_path
    is expected to be nil
  #meta_info_path
    is expected to be nil
  #on_demand_available?
    is expected to be falsey
  #can_enable_by_merge_request?
    with a core scanner
      type: :sast
        is expected to be truthy
      type: :sast_iac
        is expected to be truthy
      type: :secret_detection
        is expected to be truthy
    with a custom scanner
      is expected to be falsey
  #security_features
    scan_type: :sast, features_hash: {:name=>"Static Application Security Testing (SAST)", :short_name=>"SAST", :description=>"Analyze your source code for known vulnerabilities.", :help_path=>"/help/user/application_security/sast/index", :configuration_help_path=>"/help/user/application_security/sast/index#configuration", :type=>"sast"}
      is expected to eq {:configuration_help_path=>"/help/user/application_security/sast/index#configuration", :description=>...ast/index", :name=>"Static Application Security Testing (SAST)", :short_name=>"SAST", :type=>"sast"}
    scan_type: :sast_iac, features_hash: {:name=>"Infrastructure as Code (IaC) Scanning", :short_name=>"SAST IaC", :description=>"Analyze your infrastructure as code configuration files for known vulnerabilities.", :help_path=>"/help/user/application_security/iac_scanning/index", :configuration_help_path=>"/help/user/application_security/iac_scanning/index#configuration", :type=>"sast_iac"}
      is expected to eq {:configuration_help_path=>"/help/user/application_security/iac_scanning/index#configuration", :descr.../index", :name=>"Infrastructure as Code (IaC) Scanning", :short_name=>"SAST IaC", :type=>"sast_iac"}
    scan_type: :dast, features_hash: {:badge=>{:text=>"Available on demand", :tooltip_text=>"On-demand scans run outside of the DevOps cycle and find vulnerabilities in your projects", :variant=>"info"}, :secondary=>{:type=>"dast_profiles", :name=>"DAST profiles", :description=>"Manage profiles for use by DAST scans.", :configuration_text=>"Manage profiles"}, :name=>"Dynamic Application Security Testing (DAST)", :short_name=>"DAST", :description=>"Analyze a deployed version of your web application for known vulnerabilities by examining it from the outside in. DAST works by simulating external attacks on your application while it is running.", :help_path=>"/help/user/application_security/dast/index", :configuration_help_path=>"/help/user/application_security/dast/index#enable-automatic-dast-run", :type=>"dast", :anchor=>"dast"}
      is expected to eq {:anchor=>"dast", :badge=>{:text=>"Available on demand", :tooltip_text=>"On-demand scans run outside ...y DAST scans.", :name=>"DAST profiles", :type=>"dast_profiles"}, :short_name=>"DAST", :type=>"dast"}
    scan_type: :dependency_scanning, features_hash: {:name=>"Dependency Scanning", :description=>"Analyze your dependencies for known vulnerabilities.", :help_path=>"/help/user/application_security/dependency_scanning/index", :configuration_help_path=>"/help/user/application_security/dependency_scanning/index#configuration", :type=>"dependency_scanning", :anchor=>"dependency-scanning"}
      is expected to eq {:anchor=>"dependency-scanning", :configuration_help_path=>"/help/user/application_security/dependenc...ion_security/dependency_scanning/index", :name=>"Dependency Scanning", :type=>"dependency_scanning"}
    scan_type: :container_scanning, features_hash: {:name=>"Container Scanning", :description=>"Check your Docker images for known vulnerabilities.", :help_path=>"/help/user/application_security/container_scanning/index", :configuration_help_path=>"/help/user/application_security/container_scanning/index#configuration", :type=>"container_scanning"}
      is expected to eq {:configuration_help_path=>"/help/user/application_security/container_scanning/index#configuration", ...cation_security/container_scanning/index", :name=>"Container Scanning", :type=>"container_scanning"}
    scan_type: :secret_detection, features_hash: {:name=>"Secret Detection", :description=>"Analyze your source code and Git history for secrets.", :help_path=>"/help/user/application_security/secret_detection/pipeline/index", :configuration_help_path=>"/help/user/application_security/secret_detection/pipeline/index#configuration", :type=>"secret_detection"}
      is expected to eq {:configuration_help_path=>"/help/user/application_security/secret_detection/pipeline/index#configura...ion_security/secret_detection/pipeline/index", :name=>"Secret Detection", :type=>"secret_detection"}
    scan_type: :api_fuzzing, features_hash: {:name=>"API Fuzzing", :description=>"Find bugs in your code with API fuzzing.", :help_path=>"/help/user/application_security/api_fuzzing/index", :type=>"api_fuzzing"}
      is expected to eq {:description=>"Find bugs in your code with API fuzzing.", :help_path=>"/help/user/application_security/api_fuzzing/index", :name=>"API Fuzzing", :type=>"api_fuzzing"}
    scan_type: :coverage_fuzzing, features_hash: {:name=>"Coverage Fuzzing", :description=>"Find bugs in your code with coverage-guided fuzzing.", :help_path=>"/help/user/application_security/coverage_fuzzing/index", :configuration_help_path=>"/help/user/application_security/coverage_fuzzing/index#enable-coverage-guided-fuzz-testing", :type=>"coverage_fuzzing", :secondary=>{:type=>"corpus_management", :name=>"Corpus Management", :description=>"Manage corpus files used as seed inputs with coverage-guided fuzzing.", :configuration_text=>"Manage corpus"}}
      is expected to eq {:configuration_help_path=>"/help/user/application_security/coverage_fuzzing/index#enable-coverage-gu...uided fuzzing.", :name=>"Corpus Management", :type=>"corpus_management"}, :type=>"coverage_fuzzing"}
    scan_type: :breach_and_attack_simulation, features_hash: {:anchor=>"bas", :badge=>{:always_display=>true, :text=>"Incubating feature", :tooltip_text=>"Breach and Attack Simulation is an incubating feature extending existing security testing by simulating adversary activity.", :variant=>"info"}, :description=>"Simulate breach and attack scenarios against your running application by attempting to detect and exploit known vulnerabilities.", :name=>"Breach and Attack Simulation (BAS)", :help_path=>"/help/user/application_security/breach_and_attack_simulation/index", :secondary=>{:configuration_help_path=>"/help/user/application_security/breach_and_attack_simulation/index#extend-dynamic-application-security-testing-dast", :description=>"Enable incubating Breach and Attack Simulation focused features such as callback attacks in your DAST scans.", :name=>"Out-of-Band Application Security Testing (OAST)"}, :short_name=>"BAS", :type=>"breach_and_attack_simulation"}
      is expected to eq {:anchor=>"bas", :badge=>{:always_display=>true, :text=>"Incubating feature", :tooltip_text=>"Breach ...nd Application Security Testing (OAST)"}, :short_name=>"BAS", :type=>"breach_and_attack_simulation"}
    scan_type: :invalid, features_hash: {}
      is expected to eq {}

# [RSpecRunTime] Finishing example group spec/lib/gitlab/security/scan_configuration_spec.rb. It took 2.94 seconds. Expected to take 3.28 seconds.
# [RSpecRunTime] Starting example group spec/services/ci/job_artifacts/track_artifact_report_service_spec.rb. Expected to take 3.21 seconds.

Ci::JobArtifacts::TrackArtifactReportService
  #execute
    when pipeline has test reports
      tracks the test event using HLLRedisCounter
    when pipeline does not have test reports
      does not track the test event
      does not track the coverage test event
    when a single user started multiple pipelines with test reports
      tracks all pipelines using HLLRedisCounter by one user_id for the test event
    when multiple users started multiple pipelines with test reports
      tracks all pipelines using HLLRedisCounter by multiple users for test reports
    when pipeline has coverage test reports
      tracks the coverage test event using HLLRedisCounter
    when a single user started multiple pipelines with coverage reports
      tracks all pipelines using HLLRedisCounter by one user_id for the coverage test event
    when multiple users started multiple pipelines with coverage test reports
      tracks all pipelines using HLLRedisCounter by multiple users for coverage test reports

# [RSpecRunTime] Finishing example group spec/services/ci/job_artifacts/track_artifact_report_service_spec.rb. It took 2.54 seconds. Expected to take 3.21 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/graphs/commits_spec.rb. Expected to take 3.15 seconds.

Gitlab::Graphs::Commits
  #commit_per_day
    when range is only commits from today
      is expected to eq 2
  when range is only commits from today
    #commit_per_day
      is expected to eq 2
    #duration
      is expected to eq 0
  with commits from yesterday and today
    #commit_per_day
      is expected to eq 1.0
    #duration
      is expected to eq 1

# [RSpecRunTime] Finishing example group spec/lib/gitlab/graphs/commits_spec.rb. It took 2.43 seconds. Expected to take 3.15 seconds.
# [RSpecRunTime] Starting example group spec/graphql/resolvers/ci/catalog/resources_resolver_spec.rb. Expected to take 3.09 seconds.

Resolvers::Ci::Catalog::ResourcesResolver
  #resolve
    with an authorized user
      when sort argument is not provided
        returns all catalog resources sorted by descending created date
# [RSpecRunTime] RSpec elapsed time: 20 minutes 47.17 seconds. Current RSS: ~1578M. load average: 1.18 1.11 1.22 1/292 11100


      when the sort argument is provided
        returns all published catalog resources sorted by descending name
      when the search argument is provided
        returns published catalog resources that match the search term
      with scope argument
        defaults to :all and returns all catalog resources
        when the scope argument is :namespaces
          returns projects of the namespaces the user is a member of
        when the scope is invalid
          defaults to :all and returns all catalog resources
    when the user is anonymous
      returns only public projects

# [RSpecRunTime] Finishing example group spec/graphql/resolvers/ci/catalog/resources_resolver_spec.rb. It took 2.46 seconds. Expected to take 3.09 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/event_store/store_spec.rb. Expected to take 3.07 seconds.

Gitlab::EventStore::Store
  #subscribe
    subscribes a worker to an event
    subscribes multiple workers to an event
    subscribes a worker to multiple events is separate calls
    subscribes a worker to multiple events in a single call
    subscribes a worker to an event with condition
    refuses the subscription if the target is not an Event object
    refuses the subscription if the subscriber is not a worker
  #publish
    when event has a subscribed worker
      dispatches the event to the subscribed worker
      does not raise any Sidekiq warning
      raises and tracks an error when event is published inside a database transaction
      refuses publishing if the target is not an Event object
      when other workers subscribe to the same event
        dispatches the event to each subscribed worker
      when an error is raised
        is rescued and tracked
    when event has subscribed workers with condition
      dispatches the event to the workers satisfying the condition
    when subscription has delayed dispatching of event
      dispatches the event to the worker after some time
    when the event does not have any subscribers
      returns successfully
      does not dispatch the event to another subscription
  #publish_group
    with valid events
      calls consume_events of subscription
    when there is invalid event
      when event is invalid
        raises InvalidEvent error
      when one of the events is a different event
        raises InvalidEvent error
  subscriber
    is a Sidekiq worker
    handles the event
    when the event name does not exist
      raises an error
    when the worker does not define handle_event method
      raises an error
    when there are multiple events
      calls handle_event multiple times

# [RSpecRunTime] Finishing example group spec/lib/gitlab/event_store/store_spec.rb. It took 2.52 seconds. Expected to take 3.07 seconds.
# [RSpecRunTime] Starting example group spec/workers/gitlab/bitbucket_import/stage/import_pull_requests_worker_spec.rb. Expected to take 2.96 seconds.

Gitlab::BitbucketImport::Stage::ImportPullRequestsWorker
  #perform
    when the import succeeds
      schedules the next stage
      logs stage start and finish
    when project does not exists
      does not call the importer
    when project import state is not `started`
      does not call the importer
    when the importer fails
      does not schedule the next stage and raises error
  behaves like Gitlab::BitbucketImport::StageMethods
    .sidekiq_retries_exhausted
      tracks the import failure
    #perform
      does not execute the importer if no project could be found
      does not execute the importer if the import state is no longer in progress
      logs error when import fails with a StandardError
      when the import is successful
        executes the import
        queues RefreshImportJidWorker
        logs stage start and finish

# [RSpecRunTime] Finishing example group spec/workers/gitlab/bitbucket_import/stage/import_pull_requests_worker_spec.rb. It took 2.41 seconds. Expected to take 2.96 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/asciidoc/include_processor_spec.rb. Expected to take 2.95 seconds.

Gitlab::Asciidoc::IncludeProcessor
  read_lines
    when reading a file in the repository
      returns the blob contents
      allows at most N blob includes
      when the blob does not exist
        raises NoData
      when there is a selector
        selects the lines
    when reading content from a URL
      fetches the data using a GET request
      allows at most N HTTP includes
      when the URI returns 404
        raises NoData
      when there is a selector
        selects the lines
  #include_allowed?
    allows the first include
    allows the Nth include
    disallows the Nth + 1 include
    when allow-uri-read is nil
      allows http includes
      allows blob includes
    when allow-uri-read is false
      allows http includes
      allows blob includes
    when allow-uri-read is true
      allows http includes
      allows blob includes
    without allow-uri-read
      forbids http includes
      allows blob includes

# [RSpecRunTime] Finishing example group spec/lib/gitlab/asciidoc/include_processor_spec.rb. It took 2.32 seconds. Expected to take 2.95 seconds.
# [RSpecRunTime] Starting example group spec/lib/atlassian/jira_connect/serializers/pull_request_entity_spec.rb. Expected to take 2.88 seconds.

Atlassian::JiraConnect::Serializers::PullRequestEntity
  exposes commentCount
  exposes reviewers
  with user_notes_count option
    avoids N+1 database queries
    uses counts from user_notes_count
    when count is missing for some MRs
      uses 0 as default when count for the MR is not available
# [RSpecRunTime] RSpec elapsed time: 20 minutes 57.64 seconds. Current RSS: ~1601M. load average: 1.30 1.14 1.23 1/297 11145



# [RSpecRunTime] Finishing example group spec/lib/atlassian/jira_connect/serializers/pull_request_entity_spec.rb. It took 2.21 seconds. Expected to take 2.88 seconds.
# [RSpecRunTime] Starting example group spec/services/merge_requests/pushed_branches_service_spec.rb. Expected to take 2.86 seconds.

MergeRequests::PushedBranchesService
  when branches pushed
    returns only branches which have a open and closed merge request
# [RSpecRunTime] RSpec elapsed time: 20 minutes 59.61 seconds. Current RSS: ~1593M. load average: 1.30 1.14 1.23 1/297 11161


  when tags pushed
    returns empty result without any SQL query performed

# [RSpecRunTime] Finishing example group spec/services/merge_requests/pushed_branches_service_spec.rb. It took 2.45 seconds. Expected to take 2.86 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/hotlinking_detector_spec.rb. Expected to take 2.8 seconds.

Gitlab::HotlinkingDetector
  .intercept_hotlinking?
    hotlinked as media
      return_value: false, accept_header: "*/*"
        is expected to equal false
      return_value: false, accept_header: "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
        is expected to equal false
      return_value: false, accept_header: "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"
        is expected to equal false
      return_value: false, accept_header: "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
        is expected to equal false
      return_value: false, accept_header: "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"
        is expected to equal false
      return_value: false, accept_header: "image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, application/msword, */*"
        is expected to equal false
      return_value: false, accept_header: "text/html, application/xhtml+xml, image/jxr, */*"
        is expected to equal false
      return_value: false, accept_header: "text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1"
        is expected to equal false
      return_value: true, accept_header: "image/webp,*/*"
        is expected to equal true
      return_value: true, accept_header: "image/png,image/*;q=0.8,*/*;q=0.5"
        is expected to equal true
      return_value: true, accept_header: "image/webp,image/apng,image/*,*/*;q=0.8"
        is expected to equal true
      return_value: true, accept_header: "image/png,image/svg+xml,image/*;q=0.8, */*;q=0.5"
        is expected to equal true
      return_value: true, accept_header: "video/webm,video/ogg,video/*;q=0.9,application/ogg;q=0.7,audio/*;q=0.6,*/*;q=0.5"
        is expected to equal true
      return_value: true, accept_header: "audio/webm,audio/ogg,audio/wav,audio/*;q=0.9,application/ogg;q=0.7,video/*;q=0.6,*/*;q=0.5"
        is expected to equal true
      return_value: true, accept_header: "text/css,*/*;q=0.1"
        is expected to equal true
      return_value: true, accept_header: "text/css"
        is expected to equal true
      return_value: true, accept_header: "text/css,*/*;q=0.1"
        is expected to equal true
      return_value: true, accept_header: "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"
        is expected to equal true
    hotlinked as a script
      return_value: false, fetch_mode: "navigate"
        is expected to equal false
      return_value: false, fetch_mode: "nested-navigate"
        is expected to equal false
      return_value: false, fetch_mode: "same-origin"
        is expected to equal false
      return_value: true, fetch_mode: "cors"
        is expected to equal true
      return_value: true, fetch_mode: "no-cors"
        is expected to equal true
      return_value: true, fetch_mode: "websocket"
        is expected to equal true

# [RSpecRunTime] Finishing example group spec/lib/gitlab/hotlinking_detector_spec.rb. It took 2.58 seconds. Expected to take 2.8 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/pagination/keyset/simple_order_builder_spec.rb. Expected to take 2.77 seconds.

Gitlab::Pagination::Keyset::SimpleOrderBuilder
  when no order present
    orders by primary key
    sets the column definition distinct and not nullable
    when the order scope's model uses default_scope
      orders by primary key
  when primary key order present
    orders by primary key without altering the direction
  when ordered by other column
    adds extra primary key order as tie-breaker
    sets the column definition for created_at non-distinct and nullable
  when ordered by two columns where the last one is the tie breaker
    preserves the order
  when non-nullable column is given
    sets the column definition for namespace_id non-distinct and non-nullable
  when column with null check constraint is given
    when the check constraint is not valid
      sets the column definition for name non-distinct and nullable
    when the check constraint is valid
      sets the column definition for name non-distinct and non-nullable
  when ordering by a column with the lower named function
    sets the column definition for name
    adds extra primary key order as tie-breaker
  NULLS order given as as an Arel node
    when NULLS LAST order is given without a tie-breaker
      sets the column definition for created_at appropriately
      orders by primary key
    when NULLS FIRST order is given with a tie-breaker
      sets the column definition for created_at appropriately
      orders by the given primary key
  return :unable_to_order symbol when order cannot be built
    when raw SQL order is given
      is expected to eq false
    when an invalid NULLS order is given
      scope: lazy { Project.order(Arel.sql('projects.updated_at created_at Asc Nulls Last')) }
        is expected to eq false
      scope: lazy { Project.order(Arel.sql('projects.created_at ZZZ NULLS FIRST')) }
        is expected to eq false
      scope: lazy { Project.order(Arel.sql('projects.relative_position ASC NULLS LAST')) }
        is expected to eq false
    when more than 2 columns are given for the order
      is expected to eq true

# [RSpecRunTime] Finishing example group spec/lib/gitlab/pagination/keyset/simple_order_builder_spec.rb. It took 2.11 seconds. Expected to take 2.77 seconds.
# [RSpecRunTime] Starting example group spec/services/users/upsert_credit_card_validation_service_spec.rb. Expected to take 2.71 seconds.

Users::UpsertCreditCardValidationService
  #execute
    successfully set credit card validation record for the user
      when user does not have credit card validation record
        creates the credit card validation and returns a success
      when user has credit card validation record
        updates the credit card validation record and returns a success
    when the zuora_payment_method_xid is missing
      successfully validates the credit card
    when the user_id does not exist
      behaves like returns an error without tracking the exception
        does not send an exception to Gitlab::ErrorTracking
        returns an error
    when the request is missing the credit_card_validated_at field
      behaves like returns an error without tracking the exception
        does not send an exception to Gitlab::ErrorTracking
        returns an error
    when the request is missing the user_id field
      behaves like returns an error without tracking the exception
        does not send an exception to Gitlab::ErrorTracking
        returns an error
    when the validation params are invalid
      behaves like returns an error without tracking the exception
        does not send an exception to Gitlab::ErrorTracking
        returns an error
    when a user has already been validated with this Zuora payment method
      behaves like returns an error without tracking the exception
        does not send an exception to Gitlab::ErrorTracking
        returns an error
    when there is an unexpected error
      sends an exception to Gitlab::ErrorTracking
      returns an error

# [RSpecRunTime] Finishing example group spec/services/users/upsert_credit_card_validation_service_spec.rb. It took 1.96 seconds. Expected to take 2.71 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/regex/packages/protection/rules_spec.rb. Expected to take 2.67 seconds.

Gitlab::Regex::Packages::Protection::Rules
  .protection_rules_npm_package_name_pattern_regex
    is expected to match "@scope/package-*"
    is expected to match "@my-scope/*my-package-with-wildcard-inbetween"
    is expected to match "@my-scope/*my-package-with-wildcard-start"
    is expected to match "@my-scope/my-*package-*with-wildcard-multiple-*"
    is expected to match "@my-scope/my-package-with_____underscore"
    is expected to match "@my-scope/my-package-with-wildcard-end*"
    is expected to match "@my-scope/my-package-with-regex-characters.+"
    is expected not to match "@my-scope/my-package-with-percent-sign-%"
    is expected not to match "*@my-scope/my-package-with-wildcard-start"
    is expected not to match "@my-scope/my-package-with-backslash-\\*"
    behaves like npm package name regex
      is expected to match "@scope/package"
      is expected to match "unscoped-package"
      is expected not to match "@first-scope@second-scope/package"
      is expected not to match "scope-without-at-symbol/package"
      is expected not to match "@not-a-scoped-package"
      is expected not to match "@scope/sub/package"
      is expected not to match "@scope/../../package"
      is expected not to match "@scope%2e%2e%2fpackage"
      is expected not to match "@%2e%2e%2f/package"
# [RSpecRunTime] RSpec elapsed time: 21 minutes 8.66 seconds. Current RSS: ~1610M. load average: 1.26 1.14 1.23 1/294 11162



# [RSpecRunTime] Finishing example group spec/lib/gitlab/regex/packages/protection/rules_spec.rb. It took 1.92 seconds. Expected to take 2.67 seconds.
# [RSpecRunTime] Starting example group spec/serializers/feature_flag_serializer_spec.rb. Expected to take 2.6 seconds.

FeatureFlagSerializer
  #represent
    includes feature flag attributes
# [RSpecRunTime] RSpec elapsed time: 21 minutes 10.8 seconds. Current RSS: ~1602M. load average: 1.26 1.14 1.23 1/292 11163



# [RSpecRunTime] Finishing example group spec/serializers/feature_flag_serializer_spec.rb. It took 2.14 seconds. Expected to take 2.6 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/metrics/prometheus_spec.rb. Expected to take 2.59 seconds.

Gitlab::Metrics::Prometheus
  #reset_registry!
    clears existing metrics
  #error_detected!
    disables Prometheus metrics

# [RSpecRunTime] Finishing example group spec/lib/gitlab/metrics/prometheus_spec.rb. It took 1.36 seconds. Expected to take 2.59 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/cleanup/remote_uploads_spec.rb. Expected to take 2.53 seconds.

Gitlab::Cleanup::RemoteUploads
  when object_storage is enabled
    when dry_run is set to false
      moves files that are not in uploads table
    when dry_run is set to true
      does not move filese
  when object_storage is not enabled
    does not connect to any storage
  when a bucket prefix is configured
    does not connect to any storage

# [RSpecRunTime] Finishing example group spec/lib/gitlab/cleanup/remote_uploads_spec.rb. It took 2.06 seconds. Expected to take 2.53 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/config/entry/product/parallel_spec.rb. Expected to take 2.5 seconds.

Gitlab::Ci::Config::Entry::Product::Parallel
  with invalid config
    when it is not a numeric value
      behaves like invalid config
        #valid?
          is expected not to be valid
        #errors
          returns error about invalid type
    when it is lower than one
      behaves like invalid config
        #valid?
          is expected not to be valid
        #errors
          returns error about invalid type
    when it is bigger than 200
      behaves like invalid config
        #valid?
          is expected not to be valid
        #errors
          returns error about invalid type
    when it is not an integer
      behaves like invalid config
        #valid?
          is expected not to be valid
        #errors
          returns error about invalid type
    with empty hash config
      behaves like invalid config
        #valid?
          is expected not to be valid
        #errors
          returns error about invalid type
  with numeric config
    when job is specified
      #valid?
        is expected to be valid
      #value
        returns job needs configuration
      when :numeric is not allowed
        behaves like invalid config
          #valid?
            is expected not to be valid
          #errors
            returns error about invalid type
  with matrix builds config
    when matrix is specified
      #valid?
        is expected to be valid
      #value
        returns job needs configuration
      when :matrix is not allowed
        behaves like invalid config
          #valid?
            is expected not to be valid
          #errors
            returns error about invalid type

# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/config/entry/product/parallel_spec.rb. It took 1.85 seconds. Expected to take 2.5 seconds.
# [RSpecRunTime] Starting example group spec/finders/projects/topics_finder_spec.rb. Expected to take 2.45 seconds.

Projects::TopicsFinder
  #execute
    returns topics
    filter by name
      search: "topic", result: ["topicC", "topicA", "topicB"]
        returns filtered topics
# [RSpecRunTime] RSpec elapsed time: 21 minutes 17.26 seconds. Current RSS: ~1608M. load average: 1.22 1.13 1.23 1/292 11164


      search: "pic", result: ["topicC", "topicA", "topicB"]
        returns filtered topics
      search: "B", result: []
        returns filtered topics
      search: "cB", result: []
        returns filtered topics
      search: "icB", result: ["topicB"]
        returns filtered topics
      search: "topicA", result: ["topicA"]
        returns filtered topics
      search: "topica", result: ["topicA"]
        returns filtered topics
    filter by without_projects
      returns topics without assigned projects
      returns topics without assigned projects

# [RSpecRunTime] Finishing example group spec/finders/projects/topics_finder_spec.rb. It took 1.96 seconds. Expected to take 2.45 seconds.
# [RSpecRunTime] Starting example group spec/initializers/rest-client-hostname_override_spec.rb. Expected to take 2.4 seconds.

rest-client dns rebinding protection
  behaves like a request using Gitlab::HTTP_V2::UrlBlocker
    when local requests are not allowed
      allows an external request with http
      allows an external request with https
      raises error when it is a request that resolves to a local address
      raises error when it is a request that resolves to a localhost address
      raises error when it is a request to local address
      raises error when it is a request to localhost address
    when port different from URL scheme is used
      allows the request
      raises error when it is a request to local address
      raises error when it is a request to localhost address
    when DNS rebinding protection is disabled
      allows the request
    when http(s) proxy environment variable is set
      allows the request
    when local requests are allowed
      allows an external request
      allows an external request that resolves to a local address
      allows an external request that resolves to a localhost address
      allows a local address request
      allows a localhost address request
    when a non HTTP/HTTPS URL is provided
      raises an error

# [RSpecRunTime] Finishing example group spec/initializers/rest-client-hostname_override_spec.rb. It took 2.05 seconds. Expected to take 2.4 seconds.
# [RSpecRunTime] Starting example group spec/workers/gitlab/bitbucket_import/stage/finish_import_worker_spec.rb. Expected to take 2.36 seconds.

Gitlab::BitbucketImport::Stage::FinishImportWorker
  does not abort on failure
  behaves like Gitlab::BitbucketImport::StageMethods
    .sidekiq_retries_exhausted
      tracks the import failure
# [RSpecRunTime] RSpec elapsed time: 21 minutes 21.3 seconds. Current RSS: ~1598M. load average: 1.22 1.13 1.23 1/292 11165


    #perform
      does not execute the importer if no project could be found
      does not execute the importer if the import state is no longer in progress
      logs error when import fails with a StandardError
      when the import is successful
        executes the import
        queues RefreshImportJidWorker
        logs stage start and finish
  #perform
    finalises the import process

# [RSpecRunTime] Finishing example group spec/workers/gitlab/bitbucket_import/stage/finish_import_worker_spec.rb. It took 2.19 seconds. Expected to take 2.36 seconds.
# [RSpecRunTime] Starting example group spec/lib/bulk_imports/common/graphql/get_members_query_spec.rb. Expected to take 2.33 seconds.

BulkImports::Common::Graphql::GetMembersQuery
  behaves like a valid Direct Transfer GraphQL query
    has a valid query
    does not use any deprecated GraphQL schema
    does not exceed max authenticated complexity
    does not exceed max depth
  #data_path
    returns data path
  #page_info_path
    returns pagination information path
  #to_s
    when entity is group
      queries group & group members
      when source version is past 14.7.0
        includes SHARED_FROM_GROUPS
    when entity is project
      queries project & project members
      when source version is at least 16.0.0
        includes SHARED_INTO_ANCESTORS

# [RSpecRunTime] Finishing example group spec/lib/bulk_imports/common/graphql/get_members_query_spec.rb. It took 2.03 seconds. Expected to take 2.33 seconds.
# [RSpecRunTime] Starting example group spec/services/authorized_project_update/periodic_recalculate_service_spec.rb. Expected to take 2.3 seconds.

AuthorizedProjectUpdate::PeriodicRecalculateService
  #execute
    calls AuthorizedProjectUpdate::UserRefreshOverUserRangeWorker
# [RSpecRunTime] RSpec elapsed time: 21 minutes 26.27 seconds. Current RSS: ~1558M. load average: 1.20 1.13 1.22 1/292 11166



# [RSpecRunTime] Finishing example group spec/services/authorized_project_update/periodic_recalculate_service_spec.rb. It took 1.97 seconds. Expected to take 2.3 seconds.
# [RSpecRunTime] Starting example group spec/models/packages/debian/group_distribution_key_spec.rb. Expected to take 2.27 seconds.

Packages::Debian::GroupDistributionKey
  does not allow STI
  behaves like Debian Distribution Key
    relationships
      is expected to belong to distribution class_name => Packages::Debian::GroupDistribution required: false inverse_of => key
    validations
      #distribution
        is expected to validate that :distribution cannot be empty/falsy
      #private_key
        is expected to validate that :private_key cannot be empty/falsy
        is expected to allow :private_key to be ‹"-----BEGIN PGP PRIVATE KEY BLOCK-----\n..."›
        is expected not to allow :private_key to be ‹"A"›, producing a custom validation error on failure
      #passphrase
        is expected to validate that :passphrase cannot be empty/falsy
        is expected to allow :passphrase to be ‹"P@$$w0rd"›
        is expected to allow :passphrase to be ‹"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"›
        is expected not to allow :passphrase to be ‹"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"›
      #public_key
        is expected to validate that :public_key cannot be empty/falsy
        is expected to allow :public_key to be ‹"-----BEGIN PGP PUBLIC KEY BLOCK-----\n..."›
        is expected not to allow :public_key to be ‹"A"›, producing a custom validation error on failure
      #fingerprint
        is expected to validate that :passphrase cannot be empty/falsy
        is expected to allow :passphrase to be ‹"abc"›
        is expected to allow :passphrase to be ‹"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"›
        is expected not to allow :passphrase to be ‹"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"›

# [RSpecRunTime] Finishing example group spec/models/packages/debian/group_distribution_key_spec.rb. It took 2.02 seconds. Expected to take 2.27 seconds.
# [RSpecRunTime] Starting example group spec/workers/authorized_project_update/project_recalculate_per_user_worker_spec.rb. Expected to take 2.22 seconds.

AuthorizedProjectUpdate::ProjectRecalculatePerUserWorker
  is labeled as idempotent
  performs multiple times sequentially without raising an exception
  does not change authorizations when run twice
  #perform
    does not fail if the project does not exist
    does not fail if the user does not exist
    calls AuthorizedProjectUpdate::ProjectRecalculatePerUserService
    exclusive lease
      when exclusive lease has not been taken
        obtains a new exclusive lease
# [RSpecRunTime] RSpec elapsed time: 21 minutes 29.76 seconds. Current RSS: ~1584M. load average: 1.26 1.15 1.23 1/292 11167


      when exclusive lease has already been taken
        raises an error

# [RSpecRunTime] Finishing example group spec/workers/authorized_project_update/project_recalculate_per_user_worker_spec.rb. It took 1.72 seconds. Expected to take 2.22 seconds.
# [RSpecRunTime] Starting example group spec/workers/delete_merged_branches_worker_spec.rb. Expected to take 2.2 seconds.

DeleteMergedBranchesWorker
  #perform
    delegates to Branches::DeleteMergedService
    returns false when project was not found
# [RSpecRunTime] RSpec elapsed time: 21 minutes 31.51 seconds. Current RSS: ~1587M. load average: 1.24 1.14 1.23 1/292 11180



# [RSpecRunTime] Finishing example group spec/workers/delete_merged_branches_worker_spec.rb. It took 1.5 seconds. Expected to take 2.2 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/wiki_pages/front_matter_parser_spec.rb. Expected to take 2.15 seconds.

Gitlab::WikiPages::FrontMatterParser
  #parse
    there is front matter
      is expected to have attributes {:content => "This is the content\n", :error => (be nil), :front_matter => (include {:a => 1, :b => 2, :c => ["foo", "bar"]})}
    there is no content
      is expected to have attributes {:content => "", :error => (be nil), :front_matter => {}}
    there is no front_matter
      is expected to have attributes {:content => "This is the content", :front_matter => (be empty)}
      is expected to have attributes {:reason => :no_match}
    the feature flag is disabled
      is expected to have attributes {:content => "---\na: 1\nb: 2\nc:\n - foo\n - bar\ndate: I am safe. Not actually a date\n---\nThis is the content\n", :front_matter => (be empty)}
    the feature flag is enabled for the gated object
      is expected to have attributes {:content => "This is the content\n", :front_matter => (include {:a => 1, :b => 2, :c => ["foo", "bar"]}), :reason => (be nil)}
    the end divider is ...
      is expected to have attributes {:front_matter => (include {:a => 1, :b => 2, :c => ["foo", "bar"]})}
    the front-matter is not a mapping
      is expected to have attributes {:reason => :not_mapping}
    there is nothing in the front-matter block
      is expected to have attributes {:reason => :no_match}
    there is a string in the YAML block
      is expected to have attributes {:reason => :not_mapping}
    there is dangerous YAML in the block
      is expected to have attributes {:error => (be present), :reason => :parse_error}
    there is acceptably long YAML in the front-matter block
      is expected to have attributes {:front_matter => (include {:title => (be present)})}
    there is suspiciously long YAML in the front-matter block
      is expected to have attributes {:reason => :too_long}
    TOML front matter
      is expected to have attributes {:reason => :not_yaml}
    TOML style fences, advertised as YAML
      is expected to have attributes {:front_matter => (include {:title => "My title"})}
    YAML, advertised as something else
      is expected to have attributes {:reason => :not_yaml}
    there is text content in the YAML block, in comments
      is expected to have attributes {:front_matter => (include {:foo => 1})}
    there is text content in the YAML block
      is expected to have attributes {:reason => :not_mapping}

# [RSpecRunTime] Finishing example group spec/lib/gitlab/wiki_pages/front_matter_parser_spec.rb. It took 2.03 seconds. Expected to take 2.15 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/code_navigation_path_spec.rb. Expected to take 2.11 seconds.

Gitlab::CodeNavigationPath
  when there is an artifact with code navigation data
    when a pipeline exist for a sha
      returns path to a file in the artifact
      when passed commit sha is nil
        returns path to a file in the artifact
    when a pipeline exist for the latest commits
      returns path to a file in the artifact

# [RSpecRunTime] Finishing example group spec/lib/gitlab/code_navigation_path_spec.rb. It took 1.14 seconds. Expected to take 2.11 seconds.
# [RSpecRunTime] Starting example group spec/helpers/projects/ml/experiments_helper_spec.rb. Expected to take 2.08 seconds.

Projects::Ml::ExperimentsHelper
  #experiment_as_data
    is expected to eq {"metadata"=>#<ActiveRecord::Associations::CollectionProxy []>, "name"=>"experiment1", "path"=>"/namespace995/project-906/-/ml/experiments/1"}
  #unique_logged_names
    when for params
      is expected to contain exactly "param1", "param2", and "param3"
    when latest_metrics is passed
      is expected to contain exactly "metric1", "metric2", and "metric3"
  #page_info
    when is first page
      generates the correct page_info
    when is last page
      generates the correct page_info
  #experiments_as_data
    generates the correct info
  #candidates_table_items
    creates the correct model for the table
    when candidate does not have user
      has the user property, but is nil
    when user is not allowed to read the project
      does not include ci info and user for candidate created through CI
  #formatted_page_info
    formats to json

# [RSpecRunTime] Finishing example group spec/helpers/projects/ml/experiments_helper_spec.rb. It took 1.78 seconds. Expected to take 2.08 seconds.
# [RSpecRunTime] Starting example group spec/finders/packages/helm/packages_finder_spec.rb. Expected to take 2.03 seconds.

Packages::Helm::PackagesFinder
  #execute
    with project
      with channel
        is expected to eq [#<Packages::Package id: 14, project_id: 997, created_at: "2024-04-10 21:10:33.292898367 +0000", upda...ge_type: "helm", creator_id: 1737, status: "default", last_downloaded_at: nil, status_message: nil>]
        ignores duplicate package files
          is expected to eq [#<Packages::Package id: 14, project_id: 997, created_at: "2024-04-10 21:10:33.292898367 +0000", upda...ge_type: "helm", creator_id: 1737, status: "default", last_downloaded_at: nil, status_message: nil>]
          let clients use select id
            is expected to eq [14]
# [RSpecRunTime] RSpec elapsed time: 21 minutes 37.63 seconds. Current RSS: ~1597M. load average: 1.22 1.14 1.23 1/297 11205


      with not existing channel
        is expected to be empty
      with no channel
        is expected to be empty
      with no helm packages
        is expected to be empty
    with no project
      is expected to be empty
    when the limit is hit
      is expected to eq [#<Packages::Package id: 19, project_id: 997, created_at: "2024-04-10 21:10:34.201438409 +0000", upda...ge_type: "helm", creator_id: 1737, status: "default", last_downloaded_at: nil, status_message: nil>]

# [RSpecRunTime] Finishing example group spec/finders/packages/helm/packages_finder_spec.rb. It took 1.76 seconds. Expected to take 2.03 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/auth/external_username_sanitizer_spec.rb. Expected to take 2.02 seconds.

Gitlab::Auth::ExternalUsernameSanitizer
  #sanitize
    external_username: "alice", output: "alice"
      is expected to eq "alice"
    external_username: "admin", output: "admin1"
      is expected to eq "admin1"
    external_username: "testy.git", output: "testy"
      is expected to eq "testy"
    external_username: "___carly_the_capybara", output: "carly_the_capybara"
      is expected to eq "carly_the_capybara"
    external_username: "shingo___the...shiba---inu", output: "shingo_the.shiba-inu"
      is expected to eq "shingo_the.shiba-inu"
    external_username: "francis-the-ferret-", output: "francis-the-ferret"
      is expected to eq "francis-the-ferret"
    external_username: "___opie.-_!the$_#^^opossum---", output: "opie.the_opossum"
      is expected to eq "opie.the_opossum"
    external_username: " --ricky.^#!__the._raccoon--", output: "ricky.the.raccoon"
      is expected to eq "ricky.the.raccoon"
    external_username: "*&$amy_the_armadillo", output: "amy_the_armadillo"
      is expected to eq "amy_the_armadillo"
    external_username: "bobby-the-badger$!()", output: "bobby-the-badger"
      is expected to eq "bobby-the-badger"
    external_username: "denise^&*the!dhole", output: "denisethedhole"
      is expected to eq "denisethedhole"

# [RSpecRunTime] Finishing example group spec/lib/gitlab/auth/external_username_sanitizer_spec.rb. It took 1.26 seconds. Expected to take 2.02 seconds.
# [RSpecRunTime] Starting example group spec/workers/releases/create_evidence_worker_spec.rb. Expected to take 1.97 seconds.

Releases::CreateEvidenceWorker
  creates a new Evidence record
  creates a new Evidence record with pipeline

# [RSpecRunTime] Finishing example group spec/workers/releases/create_evidence_worker_spec.rb. It took 1.78 seconds. Expected to take 1.97 seconds.
# [RSpecRunTime] RSpec elapsed time: 21 minutes 41.42 seconds. Current RSS: ~1596M. load average: 1.22 1.14 1.23 1/297 11219


# [RSpecRunTime] Starting example group spec/workers/ml/experiment_tracking/associate_ml_candidate_to_package_worker_spec.rb. Expected to take 1.97 seconds.

Ml::ExperimentTracking::AssociateMlCandidateToPackageWorker
  .handle_event
    behaves like subscribes to event
      consumes the published event
      behaves like an idempotent worker
        is labeled as idempotent
        performs multiple times sequentially without raising an exception
    when package name matches ml_experiment_{id}
      when candidate with iid exists
        associates candidate to package
      when no candidate with iid exists
        does not associate candidate
      when candidate with iid exists but in a different project
        does not associate candidate
    when package is deleted before event is called
      does not associate candidate
  #handles_event?
    package_name: "ml_experiment_1234", package_type: "generic", handles_event: true
      is expected to eq true
    package_name: "ml_experiment_1234", package_type: "maven", handles_event: false
      is expected to eq false
    package_name: "1234", package_type: "generic", handles_event: false
      is expected to eq false
    package_name: "ml_experiment_", package_type: "generic", handles_event: false
      is expected to eq false
    package_name: "blah", package_type: "generic", handles_event: false
      is expected to eq false

# [RSpecRunTime] Finishing example group spec/workers/ml/experiment_tracking/associate_ml_candidate_to_package_worker_spec.rb. It took 1.74 seconds. Expected to take 1.97 seconds.
# [RSpecRunTime] Starting example group spec/services/keys/expiry_notification_service_spec.rb. Expected to take 1.92 seconds.

Keys::ExpiryNotificationService
  with key expiring today
    when user has permission to receive notification
      updates notified column
      behaves like sends a notification
        is expected to eq 1
      behaves like uses notification service to send email to the user
        is expected to receive ssh_key_expired(#<User id:1744 @user893>, ["e0:ea:4d:b3:52:5e:0e:f5:5c:8a:74:c6:e9:9c:ec:f8"]) 1 time
    when user does NOT have permission to receive notification
      does not update notified column
      behaves like does not send notification
        is expected to eq 0
  with key expiring soon
    when user has permission to receive notification
      updates notified column
      behaves like sends a notification
        is expected to eq 1
      behaves like uses notification service to send email to the user
        is expected to receive ssh_key_expiring_soon(#<User id:1744 @user893>, ["2b:12:0c:46:71:21:02:fe:2e:7a:c2:0b:55:47:fb:e8"]) 1 time
# [RSpecRunTime] RSpec elapsed time: 21 minutes 45.44 seconds. Current RSS: ~1579M. load average: 1.20 1.14 1.22 1/292 11220


    when user does NOT have permission to receive notification
      does not update notified column
      behaves like does not send notification
        is expected to eq 0

# [RSpecRunTime] Finishing example group spec/services/keys/expiry_notification_service_spec.rb. It took 2.91 seconds. Expected to take 1.92 seconds.
# [RSpecRunTime] Starting example group spec/serializers/user_serializer_spec.rb. Expected to take 1.91 seconds.

UserSerializer
  serializer with merge request context
    returns a user with can_merge option
# [RSpecRunTime] RSpec elapsed time: 21 minutes 47.4 seconds. Current RSS: ~1581M. load average: 1.27 1.15 1.23 1/298 11261



# [RSpecRunTime] Finishing example group spec/serializers/user_serializer_spec.rb. It took 1.42 seconds. Expected to take 1.91 seconds.
# [RSpecRunTime] Starting example group spec/serializers/issue_board_entity_spec.rb. Expected to take 1.87 seconds.

IssueBoardEntity
  has basic attributes
  has path and endpoints
  has milestone attributes
  has assignee attributes
  has label attributes
  type
    has an issue type
# [RSpecRunTime] RSpec elapsed time: 21 minutes 48.65 seconds. Current RSS: ~1578M. load average: 1.27 1.15 1.23 1/298 11262


  real_path
    has an issue path
    when issue is of type task
      has a work item path with iid

# [RSpecRunTime] Finishing example group spec/serializers/issue_board_entity_spec.rb. It took 1.53 seconds. Expected to take 1.87 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/composer/version_index_spec.rb. Expected to take 1.86 seconds.

Gitlab::Composer::VersionIndex
  #as_json
    with a public project
      behaves like returns the packages json
        returns the packages json
        with an unordered list of packages
          returns the packages sorted by version
    with an internal project
      behaves like returns the packages json
        returns the packages json
        with an unordered list of packages
          returns the packages sorted by version
    with a private project
      behaves like returns the packages json
        returns the packages json
        with an unordered list of packages
          returns the packages sorted by version
  #sha
    returns the json SHA

# [RSpecRunTime] Finishing example group spec/lib/gitlab/composer/version_index_spec.rb. It took 1.78 seconds. Expected to take 1.86 seconds.
# [RSpecRunTime] Starting example group spec/services/branches/diverging_commit_counts_service_spec.rb. Expected to take 1.82 seconds.

Branches::DivergingCommitCountsService
  #call
    returns the commit counts behind and ahead of default branch
    calls diverging_commit_count without max count
# [RSpecRunTime] RSpec elapsed time: 21 minutes 52.21 seconds. Current RSS: ~1603M. load average: 1.25 1.15 1.23 1/297 11322



# [RSpecRunTime] Finishing example group spec/services/branches/diverging_commit_counts_service_spec.rb. It took 1.51 seconds. Expected to take 1.82 seconds.
# [RSpecRunTime] Starting example group spec/graphql/resolvers/paginated_tree_resolver_spec.rb. Expected to take 1.81 seconds.

Resolvers::PaginatedTreeResolver
  is expected to have nullable GraphQL type TreeConnection
  #resolve
    resolves to a collection with a tree object
    with recursive option
      resolve to a recursive tree
    with limited max_page_size
      resolves to a pagination collection with a tree object
    when repository does not exist
      returns nil
    when repository is empty
      returns nil
    Cursor pagination
      returns all tree entries during cursor pagination
      when cursor is invalid
        generates an error
    Custom error handling
      when gitaly is not available
        generates an unavailable error

# [RSpecRunTime] Finishing example group spec/graphql/resolvers/paginated_tree_resolver_spec.rb. It took 1.67 seconds. Expected to take 1.81 seconds.
# [RSpecRunTime] Starting example group spec/lib/initializer_connections_spec.rb. Expected to take 1.76 seconds.

InitializerConnections
  .raise_if_new_database_connection
    prevents any database connection within the block
    prevents any database connection re-use within the block
    does not prevent database connection if SKIP_RAISE_ON_INITIALIZE_CONNECTIONS is set
    prevents any database connection if SKIP_RAISE_ON_INITIALIZE_CONNECTIONS is false
    restores original connection handler
    restores original connection handler even there is an error
    does not raise if connection_pool is retrieved in the block
# [RSpecRunTime] RSpec elapsed time: 21 minutes 55.2 seconds. Current RSS: ~1619M. load average: 1.25 1.15 1.23 1/297 11365



# [RSpecRunTime] Finishing example group spec/lib/initializer_connections_spec.rb. It took 1.32 seconds. Expected to take 1.76 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/templates/kaniko_gitlab_ci_yaml_spec.rb. Expected to take 1.76 seconds.

Kaniko.gitlab-ci.yml
  the created pipeline
    creates "kaniko-build" job
# [RSpecRunTime] RSpec elapsed time: 21 minutes 56.5 seconds. Current RSS: ~1613M. load average: 1.23 1.15 1.23 1/297 11395



# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/templates/kaniko_gitlab_ci_yaml_spec.rb. It took 1.29 seconds. Expected to take 1.76 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/email/service_desk_receiver_spec.rb. Expected to take 1.72 seconds.

Gitlab::Email::ServiceDeskReceiver
  when the email contains a valid email address
    when in a To header
      behaves like received successfully
        finds the service desk key
    when the email contains a valid email address in a header
      when in a Delivered-To header
        behaves like received successfully
          finds the service desk key
      when in a Envelope-To header
        behaves like received successfully
          finds the service desk key
      when in a X-Envelope-To header
        behaves like received successfully
          finds the service desk key
      when in a Cc header
        behaves like received successfully
          finds the service desk key
  when the email contains no key in the To header and contains reference header with no key
    sends a rejection email
  when the email does not contain a valid email address
    raises an error

# [RSpecRunTime] Finishing example group spec/lib/gitlab/email/service_desk_receiver_spec.rb. It took 0.91 second. Expected to take 1.72 seconds.
# [RSpecRunTime] Starting example group spec/lib/bulk_imports/groups/pipelines/namespace_settings_pipeline_spec.rb. Expected to take 1.7 seconds.

BulkImports::Groups::Pipelines::NamespaceSettingsPipeline
  #run
    imports allowed namespace settings attributes
  #transform
    fetches only allowed attributes and symbolize keys
    when there is no data to transform
      is expected to eq nil
  #after_run
    calls extractor#remove_tmpdir

# [RSpecRunTime] Finishing example group spec/lib/bulk_imports/groups/pipelines/namespace_settings_pipeline_spec.rb. It took 1.35 seconds. Expected to take 1.7 seconds.
# [RSpecRunTime] Starting example group spec/graphql/resolvers/ci/runner_jobs_resolver_spec.rb. Expected to take 1.68 seconds.

Resolvers::Ci::RunnerJobsResolver
  #resolve
    with authorized user
      with statuses argument
        is expected to contain exactly #<Ci::Build status: "success", finished_at: "2024-04-10 08:53:29.000000000 +0000", created_at: "2024-...rtition_id: 100, auto_canceled_by_id: nil, commit_id: 230, upstream_pipeline_id: nil, tag_list: nil> and #<Ci::Build status: "success", finished_at: "2024-04-10 08:53:29.000000000 +0000", created_at: "2024-...rtition_id: 100, auto_canceled_by_id: nil, commit_id: 230, upstream_pipeline_id: nil, tag_list: nil>
      without statuses argument
        is expected to contain exactly #<Ci::Build status: "success", finished_at: "2024-04-10 08:53:29.000000000 +0000", created_at: "2024-...rtition_id: 100, auto_canceled_by_id: nil, commit_id: 230, upstream_pipeline_id: nil, tag_list: nil>, #<Ci::Build status: "success", finished_at: "2024-04-10 08:53:29.000000000 +0000", created_at: "2024-...rtition_id: 100, auto_canceled_by_id: nil, commit_id: 230, upstream_pipeline_id: nil, tag_list: nil>, and #<Ci::Build status: "failed", finished_at: "2024-04-10 08:53:29.000000000 +0000", created_at: "2024-0...rtition_id: 100, auto_canceled_by_id: nil, commit_id: 230, upstream_pipeline_id: nil, tag_list: nil>
    with unauthorized user
      is expected to be nil

# [RSpecRunTime] Finishing example group spec/graphql/resolvers/ci/runner_jobs_resolver_spec.rb. It took 1.32 seconds. Expected to take 1.68 seconds.
# [RSpecRunTime] Starting example group spec/lib/bulk_imports/projects/pipelines/pipeline_schedules_pipeline_spec.rb. Expected to take 1.67 seconds.

BulkImports::Projects::Pipelines::PipelineSchedulesPipeline
  imports schedule into destination project
  is active
    imports the schedule but active is false
# [RSpecRunTime] RSpec elapsed time: 22 minutes 1.34 seconds. Current RSS: ~1594M. load average: 1.23 1.15 1.23 1/298 11404



# [RSpecRunTime] Finishing example group spec/lib/bulk_imports/projects/pipelines/pipeline_schedules_pipeline_spec.rb. It took 1.28 seconds. Expected to take 1.67 seconds.
# [RSpecRunTime] Starting example group spec/helpers/projects/terraform_helper_spec.rb. Expected to take 1.64 seconds.

Projects::TerraformHelper
  #js_terraform_list_data
    includes image path
    includes project path
    includes access token path
    includes username
    includes terraform state api url
    indicates the user is a terraform admin
    when current_user is not a terraform admin
      indicates the user is not an admin
# [RSpecRunTime] RSpec elapsed time: 22 minutes 2.68 seconds. Current RSS: ~1591M. load average: 1.21 1.14 1.22 1/297 11405


    when current_user is missing
      indicates the user is not an admin

# [RSpecRunTime] Finishing example group spec/helpers/projects/terraform_helper_spec.rb. It took 1.44 seconds. Expected to take 1.64 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/github_import/importer/lfs_objects_importer_spec.rb. Expected to take 1.61 seconds.

Gitlab::GithubImport::Importer::LfsObjectsImporter
  #parallel?
    returns true when running in parallel mode
    returns false when running in sequential mode
  #execute
    when running in parallel mode
      imports lfs objects in parallel
    when running in sequential mode
      imports lfs objects in sequence
    when LFS list download fails
      rescues and logs the known exceptions
      raises and logs the unknown exceptions
  #sequential_import
    imports each lfs object in sequence
  #parallel_import
    imports each lfs object in parallel
  #collection_options
    returns an empty Hash

# [RSpecRunTime] Finishing example group spec/lib/gitlab/github_import/importer/lfs_objects_importer_spec.rb. It took 1.33 seconds. Expected to take 1.61 seconds.
# [RSpecRunTime] Starting example group spec/helpers/hooks_helper_spec.rb. Expected to take 1.58 seconds.

HooksHelper
  #webhook_form_data
    when there are no URL variables
      returns proper data
    when there are URL variables
      returns proper data
    when there are custom headers
      returns proper data
  #webhook_test_items
    returns test items for disclosure
  #test_hook_path
    returns project namespaced link
    returns admin namespaced link
  #hook_log_path
    with a project hook
      returns project-namespaced link
    with a service hook
      returns project-namespaced link
    with a system hook
      returns admin-namespaced link

# [RSpecRunTime] Finishing example group spec/helpers/hooks_helper_spec.rb. It took 1.22 seconds. Expected to take 1.58 seconds.
# [RSpecRunTime] Starting example group spec/services/users/activate_service_spec.rb. Expected to take 1.58 seconds.

Users::ActivateService
  #execute
    when successful
      returns success status
      changes the user's state
      creates a log entry
    when the user is already active
      returns success result
      does not change the user's state
    when user activation fails
      returns an unprocessable entity error
    when user is not an admin
      returns permissions error message

# [RSpecRunTime] Finishing example group spec/services/users/activate_service_spec.rb. It took 1.35 seconds. Expected to take 1.58 seconds.
# [RSpecRunTime] Starting example group spec/services/timelogs/delete_service_spec.rb. Expected to take 1.53 seconds.

Timelogs::DeleteService
  #execute
    when the timelog exists
      removes the timelog
      returns the removed timelog
    when the timelog does not exist
      returns an error
    when the user does not have permission
      returns an error
    when the timelog deletion fails
      returns an error

# [RSpecRunTime] Finishing example group spec/services/timelogs/delete_service_spec.rb. It took 1.22 seconds. Expected to take 1.53 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/config/entry/inherit/default_spec.rb. Expected to take 1.53 seconds.

Gitlab::Ci::Config::Entry::Inherit::Default
  validations
    config: true, valid: true
      is expected to eq true
    config: false, valid: true
      is expected to eq true
    config: ["image"], valid: true
      is expected to eq true
    config: ["unknown"], valid: false
      is expected to eq false
    config: [:image], valid: false
      is expected to eq false
    config: [true], valid: false
      is expected to eq false
    config: "string", valid: false
      is expected to eq false
  #inherit?
    config: true, inherit: true
      is expected to eq true
    config: false, inherit: false
      is expected to eq false
    config: ["image"], inherit: true
      is expected to eq true
    config: ["before_script"], inherit: false
      is expected to eq false
    config: "123", inherit: false
      is expected to eq false

# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/config/entry/inherit/default_spec.rb. It took 1.22 seconds. Expected to take 1.53 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/etag_caching/store_spec.rb. Expected to take 1.48 seconds.

Gitlab::EtagCaching::Store
  #get
    with invalid keys
      raises errors
      does not raise errors in production
    with GraphQL keys
      returns a stored value
    with RESTful keys
      returns a stored value
  #touch
    with invalid keys
      raises errors
    with GraphQL keys
      stores and returns a value
    with RESTful keys
      stores and returns a value
    with multiple keys
      stores and returns multiple values

# [RSpecRunTime] Finishing example group spec/lib/gitlab/etag_caching/store_spec.rb. It took 0.87 second. Expected to take 1.48 seconds.
# [RSpecRunTime] Starting example group spec/support_specs/database/multiple_databases_helpers_spec.rb. Expected to take 1.48 seconds.

Database::MultipleDatabasesHelpers
  preloads database version for ApplicationRecord
  preloads database version for Ci::ApplicationRecord
  .with_added_ci_connection
    when only a single database is setup
      connects Ci::ApplicationRecord to the main database for the duration of the block (PENDING: Skipping because some of the extra databases [:ci] are setup)
    when multiple databases are setup
      does not mock the original Ci::ApplicationRecord connection
  .with_reestablished_active_record_base
    when doing establish_connection
      on ActiveRecord::Base
        raises exception
        when using with_reestablished_active_record_base
          does not raise exception
      on Ci::ApplicationRecord
        raises exception
        when using with_reestablished_active_record_base
          does not raise exception
    when trying to access connection
      when reconnect is true
        does not raise exception
      when reconnect is false
        does raise exception

# [RSpecRunTime] Finishing example group spec/support_specs/database/multiple_databases_helpers_spec.rb. It took 1.12 seconds. Expected to take 1.48 seconds.
# [RSpecRunTime] Starting example group spec/views/search/show.html.haml_spec.rb. Expected to take 1.44 seconds.

search/show
  when search term is supplied
    renders the results partial
  when the search page is opened
    does not render the results partial
    does render the sidebar
  unfurling support
    search with full count
      renders meta tags for a group
      renders meta tags for both group and project
    search without full count
      renders meta tags for a group
      renders meta tags for both group and project

# [RSpecRunTime] Finishing example group spec/views/search/show.html.haml_spec.rb. It took 1.24 seconds. Expected to take 1.44 seconds.
# [RSpecRunTime] Starting example group spec/services/work_items/callbacks/notes_spec.rb. Expected to take 1.42 seconds.

WorkItems::Callbacks::Notes
  #before_update_callback
    when discussion_locked param is not present
      behaves like discussion_locked is unchanged
        does not change the discussion_locked of the work item
    when user cannot set work item metadata
      behaves like discussion_locked is unchanged
        does not change the discussion_locked of the work item
    when user can set work item metadata
      sets the discussion_locked for the work item
      when widget does not exist in new type
        keeps item's discussion_locked value intact

# [RSpecRunTime] Finishing example group spec/services/work_items/callbacks/notes_spec.rb. It took 1.14 seconds. Expected to take 1.42 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/database/migration_helpers/swapping_spec.rb. Expected to take 1.4 seconds.

Gitlab::Database::MigrationHelpers::Swapping
  #swap_indexes
    behaves like swapping indexes correctly
-- quote_table_name("index_on_integer")
   -> 0.0003s
-- quote_table_name("temp_75ea8b544f")
   -> 0.0001s
-- execute("ALTER INDEX \"index_on_integer\" RENAME TO \"temp_75ea8b544f\"")
   -> 0.0013s
-- quote_table_name("index_on_bigint")
   -> 0.0001s
-- quote_table_name(:index_on_integer)
   -> 0.0001s
-- execute("ALTER INDEX \"index_on_bigint\" RENAME TO \"index_on_integer\"")
   -> 0.0010s
-- quote_table_name("temp_75ea8b544f")
   -> 0.0001s
-- quote_table_name(:index_on_bigint)
   -> 0.0001s
-- execute("ALTER INDEX \"temp_75ea8b544f\" RENAME TO \"index_on_bigint\"")
   -> 0.0009s
      is expected to change `find_index_by(index1).columns` from ["integer_column"] to ["bigint_column"] and change `find_index_by(index2).columns` from ["bigint_column"] to ["integer_column"]
    when index names are 63 bytes
      behaves like swapping indexes correctly
-- quote_table_name("i1_012345678901234567890123456789012345678901234567890123456789")
   -> 0.0003s
-- quote_table_name("temp_aeddaac9dd")
   -> 0.0002s
-- execute("ALTER INDEX \"i1_012345678901234567890123456789012345678901234567890123456789\" RENAME TO \"temp_aeddaac9dd\"")
   -> 0.0013s
-- quote_table_name("i2_012345678901234567890123456789012345678901234567890123456789")
   -> 0.0001s
-- quote_table_name(:i1_012345678901234567890123456789012345678901234567890123456789)
   -> 0.0001s
-- execute("ALTER INDEX \"i2_012345678901234567890123456789012345678901234567890123456789\" RENAME TO \"i1_012345678901234567890123456789012345678901234567890123456789\"")
   -> 0.0012s
-- quote_table_name("temp_aeddaac9dd")
   -> 0.0001s
-- quote_table_name(:i2_012345678901234567890123456789012345678901234567890123456789)
   -> 0.0001s
-- execute("ALTER INDEX \"temp_aeddaac9dd\" RENAME TO \"i2_012345678901234567890123456789012345678901234567890123456789\"")
   -> 0.0010s
        is expected to change `find_index_by(index1).columns` from ["integer_column"] to ["bigint_column"] and change `find_index_by(index2).columns` from ["bigint_column"] to ["integer_column"]
    for schema
      behaves like swapping indexes correctly
-- quote_table_name("gitlab_partitions_dynamic.index_on_integer")
   -> 0.0002s
-- quote_table_name("temp_75ea8b544f")
   -> 0.0001s
-- execute("ALTER INDEX \"gitlab_partitions_dynamic\".\"index_on_integer\" RENAME TO \"temp_75ea8b544f\"")
   -> 0.0012s
-- quote_table_name("gitlab_partitions_dynamic.index_on_bigint")
   -> 0.0001s
-- quote_table_name(:index_on_integer)
   -> 0.0001s
-- execute("ALTER INDEX \"gitlab_partitions_dynamic\".\"index_on_bigint\" RENAME TO \"index_on_integer\"")
   -> 0.0011s
-- quote_table_name("gitlab_partitions_dynamic.temp_75ea8b544f")
   -> 0.0001s
-- quote_table_name(:index_on_bigint)
   -> 0.0001s
-- execute("ALTER INDEX \"gitlab_partitions_dynamic\".\"temp_75ea8b544f\" RENAME TO \"index_on_bigint\"")
   -> 0.0012s
        is expected to change `find_index_by(index1).columns` from ["integer_column"] to ["bigint_column"] and change `find_index_by(index2).columns` from ["bigint_column"] to ["integer_column"]
  #reset_trigger_function
-- quote_table_name("existing_trigger_function")
   -> 0.0002s
-- execute("ALTER FUNCTION \"existing_trigger_function\" RESET ALL")
   -> 0.0014s
    resets
  #swap_columns_default
    calls service
  #swap_foreign_keys
    behaves like swapping foreign keys correctly
-- quote_table_name(:_test_swap_foreign_keys)
   -> 0.0002s
-- quote_column_name(:fkey_on_integer_column)
   -> 0.0001s
-- quote_column_name(:temp_name_for_renaming)
   -> 0.0001s
-- execute("ALTER TABLE \"_test_swap_foreign_keys\"\nRENAME CONSTRAINT \"fkey_on_integer_column\" TO \"temp_name_for_renaming\"\n")
   -> 0.0020s
-- quote_table_name(:_test_swap_foreign_keys)
   -> 0.0001s
-- quote_column_name(:fkey_on_bigint_column)
   -> 0.0001s
-- quote_column_name(:fkey_on_integer_column)
   -> 0.0001s
-- execute("ALTER TABLE \"_test_swap_foreign_keys\"\nRENAME CONSTRAINT \"fkey_on_bigint_column\" TO \"fkey_on_integer_column\"\n")
   -> 0.0010s
-- quote_table_name(:_test_swap_foreign_keys)
   -> 0.0001s
-- quote_column_name(:temp_name_for_renaming)
   -> 0.0001s
-- quote_column_name(:fkey_on_bigint_column)
   -> 0.0001s
-- execute("ALTER TABLE \"_test_swap_foreign_keys\"\nRENAME CONSTRAINT \"temp_name_for_renaming\" TO \"fkey_on_bigint_column\"\n")
   -> 0.0010s
      is expected to change `find_foreign_key_by(foreign_key1).options[:column]` from "integer_column" to "bigint_column" and change `find_foreign_key_by(foreign_key2).options[:column]` from "bigint_column" to "integer_column"
    when foreign key names are 63 bytes
      behaves like swapping foreign keys correctly
-- quote_table_name(:_test_swap_foreign_keys)
   -> 0.0001s
-- quote_column_name(:f1_012345678901234567890123456789012345678901234567890123456789)
   -> 0.0001s
-- quote_column_name(:temp_name_for_renaming)
   -> 0.0001s
-- execute("ALTER TABLE \"_test_swap_foreign_keys\"\nRENAME CONSTRAINT \"f1_012345678901234567890123456789012345678901234567890123456789\" TO \"temp_name_for_renaming\"\n")
   -> 0.0018s
-- quote_table_name(:_test_swap_foreign_keys)
   -> 0.0001s
-- quote_column_name(:f2_012345678901234567890123456789012345678901234567890123456789)
   -> 0.0001s
-- quote_column_name(:f1_012345678901234567890123456789012345678901234567890123456789)
   -> 0.0001s
-- execute("ALTER TABLE \"_test_swap_foreign_keys\"\nRENAME CONSTRAINT \"f2_012345678901234567890123456789012345678901234567890123456789\" TO \"f1_012345678901234567890123456789012345678901234567890123456789\"\n")
   -> 0.0009s
-- quote_table_name(:_test_swap_foreign_keys)
   -> 0.0001s
-- quote_column_name(:temp_name_for_renaming)
   -> 0.0001s
-- quote_column_name(:f2_012345678901234567890123456789012345678901234567890123456789)
   -> 0.0001s
-- execute("ALTER TABLE \"_test_swap_foreign_keys\"\nRENAME CONSTRAINT \"temp_name_for_renaming\" TO \"f2_012345678901234567890123456789012345678901234567890123456789\"\n")
   -> 0.0009s
        is expected to change `find_foreign_key_by(foreign_key1).options[:column]` from "integer_column" to "bigint_column" and change `find_foreign_key_by(foreign_key2).options[:column]` from "bigint_column" to "integer_column"
  #swap_columns
    calls service

# [RSpecRunTime] Finishing example group spec/lib/gitlab/database/migration_helpers/swapping_spec.rb. It took 1.24 seconds. Expected to take 1.4 seconds.
# [RSpecRunTime] Starting example group spec/services/projects/all_merge_requests_count_service_spec.rb. Expected to take 1.38 seconds.

Projects::AllMergeRequestsCountService
  behaves like a counter caching service
    #count
      caches the count
    #refresh_cache
      refreshes the cache
    #delete_cache
      removes the cache
    #uncached_count
      does not cache the count
  #count
    returns the number of all merge requests

# [RSpecRunTime] Finishing example group spec/services/projects/all_merge_requests_count_service_spec.rb. It took 1.2 seconds. Expected to take 1.38 seconds.
# [RSpecRunTime] Starting example group spec/graphql/mutations/custom_emoji/create_spec.rb. Expected to take 1.36 seconds.

Mutations::CustomEmoji::Create
  #resolve
    creates the custom emoji
    sets the creator to be the user who added the emoji
# [RSpecRunTime] RSpec elapsed time: 22 minutes 17.13 seconds. Current RSS: ~1618M. load average: 1.08 1.12 1.21 1/292 11406



# [RSpecRunTime] Finishing example group spec/graphql/mutations/custom_emoji/create_spec.rb. It took 1.17 seconds. Expected to take 1.36 seconds.
# [RSpecRunTime] Starting example group spec/workers/deployments/archive_in_project_worker_spec.rb. Expected to take 1.33 seconds.

Deployments::ArchiveInProjectWorker
  #perform
    executes Deployments::ArchiveInProjectService

# [RSpecRunTime] Finishing example group spec/workers/deployments/archive_in_project_worker_spec.rb. It took 1.09 seconds. Expected to take 1.33 seconds.
# [RSpecRunTime] Starting example group spec/services/reset_project_cache_service_spec.rb. Expected to take 1.32 seconds.

ResetProjectCacheService
  when project cache_index is nil
    sets project cache_index to one
  when project cache_index is a numeric value
    increments project cache index

# [RSpecRunTime] Finishing example group spec/services/reset_project_cache_service_spec.rb. It took 1.21 seconds. Expected to take 1.32 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/github_import/settings_spec.rb. Expected to take 1.3 seconds.

Gitlab::GithubImport::Settings
  #write
    puts optional steps and timeout strategy into projects import_data
  #enabled?
    returns is enabled or not specific optional stage
  #disabled?
    returns is disabled or not specific optional stage
  .stages_array
    returns stages list as array

# [RSpecRunTime] Finishing example group spec/lib/gitlab/github_import/settings_spec.rb. It took 0.84 second. Expected to take 1.3 seconds.
# [RSpecRunTime] Starting example group spec/models/push_event_payload_spec.rb. Expected to take 1.27 seconds.

PushEventPayload
  does not allow STI
  behaves like having unique enum values
    has unique values in "action"
    has unique values in "ref_type"
  saving payloads
    does not allow commit messages longer than 70 characters

# [RSpecRunTime] Finishing example group spec/models/push_event_payload_spec.rb. It took 1.26 seconds. Expected to take 1.27 seconds.
# [RSpecRunTime] Starting example group spec/models/user_agent_detail_spec.rb. Expected to take 1.25 seconds.

UserAgentDetail
  does not allow STI
  .submittable?
    is submittable when not already submitted
    is not submittable when already submitted
  .valid?
    is valid with a subject
    is invalid without a subject

# [RSpecRunTime] Finishing example group spec/models/user_agent_detail_spec.rb. It took 1.11 seconds. Expected to take 1.25 seconds.
# [RSpecRunTime] Starting example group spec/workers/stuck_ci_jobs_worker_spec.rb. Expected to take 1.23 seconds.

StuckCiJobsWorker
  #perform
    enqueues a Ci::StuckBuilds::DropRunningWorker job
    enqueues a Ci::StuckBuilds::DropScheduledWorker job
    enqueues a Ci::StuckBuilds::DropCancelingWorker job
    executes an instance of Ci::StuckBuilds::DropPendingService
    when feature flag is disabled
      enqueues a Ci::StuckBuilds::DropRunningWorker job
      enqueues a Ci::StuckBuilds::DropScheduledWorker job
      does not enqueue a Ci::StuckBuilds::DropCancelingWorker job
      executes an instance of Ci::StuckBuilds::DropPendingService

# [RSpecRunTime] Finishing example group spec/workers/stuck_ci_jobs_worker_spec.rb. It took 0.98 second. Expected to take 1.23 seconds.
# [RSpecRunTime] Starting example group spec/rubocop/cop/graphql/enum_values_spec.rb. Expected to take 1.2 seconds.

RuboCop::Cop::Graphql::EnumValues
  adds an offense when enum value is not uppercase
  when values are set dynamically
    adds an offense when enum value is set without `:upcase`
    adds no offense when enum value is deprecated
    adds no offense when enum value is uppercased literally
    adds no offense when enum value is calling upcased

# [RSpecRunTime] Finishing example group spec/rubocop/cop/graphql/enum_values_spec.rb. It took 0.78 second. Expected to take 1.2 seconds.
# [RSpecRunTime] Starting example group spec/lib/sidebars/admin/menus/applications_menu_spec.rb. Expected to take 1.19 seconds.

Sidebars::Admin::Menus::ApplicationsMenu
  behaves like Admin menu
    renders the correct link
    renders the correct title
    renders the correct icon
    renders the separator if needed
    #render?
      when user is admin
        renders
      when user is not admin
        does not render
      when user is not logged in
        does not render
  behaves like Admin menu without sub menus
    does not contain any sub menu(s)
    defines correct active route

# [RSpecRunTime] Finishing example group spec/lib/sidebars/admin/menus/applications_menu_spec.rb. It took 0.99 second. Expected to take 1.19 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/instrumentation/exclusive_lock_spec.rb. Expected to take 1.16 seconds.

Gitlab::Instrumentation::ExclusiveLock
  .increment_requested_count
    increments the lock count
  .payload
    returns a hash with metrics
  .add_hold_duration
    increments the duration
  .add_wait_duration
    increments the duration
  .requested_count
    returns the value from Gitlab::SafeRequestStore
    returns 0 if value not set in Gitlab::SafeRequestStore
  .hold_duration
    returns the value from Gitlab::SafeRequestStore
    returns 0 if value not set in Gitlab::SafeRequestStore
  .wait_duration
    returns the value from Gitlab::SafeRequestStore
    returns 0 if value not set in Gitlab::SafeRequestStore

# [RSpecRunTime] Finishing example group spec/lib/gitlab/instrumentation/exclusive_lock_spec.rb. It took 1.06 seconds. Expected to take 1.16 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/bitbucket_import/importers/pull_requests_notes_importer_spec.rb. Expected to take 1.15 seconds.

Gitlab::BitbucketImport::Importers::PullRequestsNotesImporter
  #execute
    imports the notes from each merge request in parallel
    when an error is raised
      tracks the failure and does not fail
    when merge request was already enqueued
      does not schedule job for enqueued merge requests

# [RSpecRunTime] Finishing example group spec/lib/gitlab/bitbucket_import/importers/pull_requests_notes_importer_spec.rb. It took 0.91 second. Expected to take 1.15 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/seeders/ci/variables_instance_seeder_spec.rb. Expected to take 1.11 seconds.

Gitlab::Seeders::Ci::VariablesInstanceSeeder
  #seed
    creates instance-level CI variables with default values
    creates instance-level CI variables with custom arguments
WARNING: Instance CI Variable with key 'INSTANCE_VAR_15' already exists. Skipping to next CI variable...
    skips CI variable creation if CI variable already exists

# [RSpecRunTime] Finishing example group spec/lib/gitlab/seeders/ci/variables_instance_seeder_spec.rb. It took 0.91 second. Expected to take 1.11 seconds.
# [RSpecRunTime] Starting example group spec/lib/api/helpers/related_resources_helpers_spec.rb. Expected to take 1.11 seconds.

API::Helpers::RelatedResourcesHelpers
  #expose_path
    empty relative URL root
      returns the existing path
    slash relative URL root
      returns the existing path
    with relative URL root
      returns the existing path
  #expose_url
    respects the protocol if it is HTTP
    respects the protocol if it is HTTPS
    accepts the host if it contains an underscore
    accepts port to be nil
    includes port if provided
    includes the relative_url before the path if it is set
    includes the path after the host

# [RSpecRunTime] Finishing example group spec/lib/api/helpers/related_resources_helpers_spec.rb. It took 1.05 seconds. Expected to take 1.11 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/usage/metrics/instrumentations/group_imports_users_metric_spec.rb. Expected to take 1.09 seconds.

Gitlab::Usage::Metrics::Instrumentations::GroupImportsUsersMetric
  behaves like a correct instrumented metric value and query
    behaves like a correct instrumented metric value
      has correct value
    behaves like a correct instrumented metric query
      has correct generate query
  behaves like a correct instrumented metric value and query
    behaves like a correct instrumented metric value
      has correct value
    behaves like a correct instrumented metric query
      has correct generate query

# [RSpecRunTime] Finishing example group spec/lib/gitlab/usage/metrics/instrumentations/group_imports_users_metric_spec.rb. It took 0.95 second. Expected to take 1.09 seconds.
# [RSpecRunTime] Starting example group spec/lib/api/entities/ml/mlflow/get_run_spec.rb. Expected to take 1.07 seconds.

API::Entities::Ml::Mlflow::GetRun
  presents the metrics
  presents metrics correctly
  has run key
  presents the params
  presents params correctly
  has the id
  when candidate has no metrics
    returns empty data
  when candidate has no params
    data is empty

# [RSpecRunTime] Finishing example group spec/lib/api/entities/ml/mlflow/get_run_spec.rb. It took 0.89 second. Expected to take 1.07 seconds.
# [RSpecRunTime] Starting example group spec/lib/sidebars/admin/menus/analytics_menu_spec.rb. Expected to take 1.05 seconds.

Sidebars::Admin::Menus::AnalyticsMenu
  behaves like Admin menu with sub menus
    contains submemus
  behaves like Admin menu
    renders the correct link
    renders the correct title
    renders the correct icon
    renders the separator if needed
    #render?
      when user is admin
        renders
      when user is not admin
        does not render
      when user is not logged in
        does not render

# [RSpecRunTime] Finishing example group spec/lib/sidebars/admin/menus/analytics_menu_spec.rb. It took 0.88 second. Expected to take 1.05 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/utils/link_header_parser_spec.rb. Expected to take 1.04 seconds.

Gitlab::Utils::LinkHeaderParser
  #parse
    with a valid header
      is expected to eq {:next=>{:uri=>#<URI::HTTP http://sandbox.org/next>}}
      with multiple links
        is expected to eq {:next=>{:uri=>#<URI::HTTP http://sandbox.org/next>}, :previous=>{:uri=>#<URI::HTTP http://sandbox.org/previous>}}
      with an incomplete uri
        is expected to eq {}
      with no rel
        is expected to eq {}
      with multiple rel elements
        is expected to eq {:next=>{:uri=>#<URI::HTTP http://sandbox.org/next>}}
      when the url is too long
        is expected to eq {}
    with nil header
      is expected to eq {}
    with empty header
      is expected to eq {}

# [RSpecRunTime] Finishing example group spec/lib/gitlab/utils/link_header_parser_spec.rb. It took 0.83 second. Expected to take 1.04 seconds.
# [RSpecRunTime] Starting example group spec/views/shared/projects/_inactive_project_deletion_alert.html.haml_spec.rb. Expected to take 1.01 seconds.

shared/projects/_inactive_project_deletion_alert
  without a project
    behaves like does not render
      is expected not to have text "Due to inactivity, this project is scheduled to be deleted on 2022-04-01. Why is this scheduled?"
  with a project
    when the project is active
      behaves like does not render
        is expected not to have text "Due to inactivity, this project is scheduled to be deleted on 2022-04-01. Why is this scheduled?"
    when the project is inactive
      does render the alert

# [RSpecRunTime] Finishing example group spec/views/shared/projects/_inactive_project_deletion_alert.html.haml_spec.rb. It took 0.83 second. Expected to take 1.01 seconds.
# [RSpecRunTime] Starting example group spec/workers/gitlab/bitbucket_server_import/stage/import_lfs_objects_worker_spec.rb. Expected to take 1.0 second.

Gitlab::BitbucketServerImport::Stage::ImportLfsObjectsWorker
  #perform
    when the import succeeds
      schedules the next stage
  behaves like Gitlab::BitbucketServerImport::StageMethods
    .sidekiq_retries_exhausted
      tracks the import failure
    #perform
      executes the import
      queues RefreshImportJidWorker

# [RSpecRunTime] Finishing example group spec/workers/gitlab/bitbucket_server_import/stage/import_lfs_objects_worker_spec.rb. It took 0.81 second. Expected to take 1.0 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/dependency_linker/podspec_json_linker_spec.rb. Expected to take 0.98 second.

Gitlab::DependencyLinker::PodspecJsonLinker
  .support?
    supports *.podspec.json
    does not support other files
  #link
    links the gem name
    links the license
    links the homepage
    links the source URL
    links dependencies
    does not link subspec names

# [RSpecRunTime] Finishing example group spec/lib/gitlab/dependency_linker/podspec_json_linker_spec.rb. It took 0.94 second. Expected to take 0.98 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/throttle_spec.rb. Expected to take 0.97 second.

Gitlab::Throttle
  .protected_paths_enabled?
    returns Application Settings throttle_protected_paths_enabled?
  .bypass_header
    is nil
    when a header is configured
      is a funny upper case rack key
  .rate_limiting_response_text
    when the setting is not present
      returns the default value with a trailing newline
    when the setting is present
      returns the default value with a trailing newline

# [RSpecRunTime] Finishing example group spec/lib/gitlab/throttle_spec.rb. It took 0.61 second. Expected to take 0.97 second.
# [RSpecRunTime] Starting example group spec/policies/packages/package_policy_spec.rb. Expected to take 0.95 second.

Packages::PackagePolicy
  when the user is part of the project
    allows read_package
  when the user is not part of the project
    disallows read_package for any Package

# [RSpecRunTime] Finishing example group spec/policies/packages/package_policy_spec.rb. It took 0.76 second. Expected to take 0.95 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/config/entry/kubernetes_spec.rb. Expected to take 0.95 second.

Gitlab::Ci::Config::Entry::Kubernetes
  attributes
    is expected to respond to #namespace
    is expected to respond to #has_namespace?
  validations
    config
      is a hash containing known keys
        is expected to be valid
      is a hash containing an unknown key
        is expected not to be valid
      is a string
        is expected not to be valid
    namespace
      is a string
        is expected to be valid
      is a hash
        is expected not to be valid
      is not present
        is expected not to be valid

# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/config/entry/kubernetes_spec.rb. It took 0.84 second. Expected to take 0.95 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/graphql/limit/field_call_count_spec.rb. Expected to take 0.93 second.

Gitlab::Graphql::Limit::FieldCallCount
  allows the call
  does not return an error when the field is called multiple times in separte queries
  executes the extension
  returns an error when the field is called multiple times
  when limit is not specified
    returns an error
  when the field is not extended
    allows the call
    does not execute the extension

# [RSpecRunTime] Finishing example group spec/lib/gitlab/graphql/limit/field_call_count_spec.rb. It took 0.8 second. Expected to take 0.93 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/templates/Terraform/module_base_gitlab_ci_yaml_spec.rb. Expected to take 0.93 second.

Terraform/Module-Base.gitlab-ci.yml
  the created pipeline
    does not create any jobs

# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/templates/Terraform/module_base_gitlab_ci_yaml_spec.rb. It took 0.74 second. Expected to take 0.93 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/cache/metrics_spec.rb. Expected to take 0.91 second.

Gitlab::Cache::Metrics
  #increment_cache_miss
    increments number of misses
    when labels redefine defaults
      increments number of misses
  #observe_cache_generation
    updates histogram metric
    when labels redefine defaults
      updates histogram metric
  #increment_cache_hit
    increments number of hits
    when labels redefine defaults
      increments number of hits

# [RSpecRunTime] Finishing example group spec/lib/gitlab/cache/metrics_spec.rb. It took 0.69 second. Expected to take 0.91 second.
# [RSpecRunTime] Starting example group spec/initializers/fog_google_https_private_urls_spec.rb. Expected to take 0.9 second.

Fog::Storage::GoogleXML::File
  delegates to #get_https_url

# [RSpecRunTime] Finishing example group spec/initializers/fog_google_https_private_urls_spec.rb. It took 0.28 second. Expected to take 0.9 second.
# [RSpecRunTime] Starting example group spec/services/saved_replies/update_service_spec.rb. Expected to take 0.88 second.

SavedReplies::UpdateService
  #execute
    when update fails
      is expected to eq :error
      returns error messages
    when update succeeds
      is expected to eq :success
      updates new Saved Reply in database
      returns saved reply

# [RSpecRunTime] Finishing example group spec/services/saved_replies/update_service_spec.rb. It took 0.81 second. Expected to take 0.88 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/sql/cte_spec.rb. Expected to take 0.87 second.

Gitlab::SQL::CTE
  #to_arel
    when relation is an ActiveRecord::Relation
      generates an Arel relation for the CTE body
    when relation is a String
      generates an Arel relation for the CTE body
  #alias_to
    returns an alias for the CTE
  #apply_to
    applies a CTE to an ActiveRecord::Relation
  behaves like CTE with MATERIALIZED keyword examples
    adding MATERIALIZE to the CTE
      adds MATERIALIZE keyword
      when materialized is disabled
        does not add MATERIALIZE keyword

# [RSpecRunTime] Finishing example group spec/lib/gitlab/sql/cte_spec.rb. It took 0.76 second. Expected to take 0.87 second.
# [RSpecRunTime] Starting example group spec/services/ci/runners/update_runner_service_spec.rb. Expected to take 0.85 second.

Ci::Runners::UpdateRunnerService#execute
  with description params
    updates the runner and ticking the queue
  with paused param
    updates the runner and ticking the queue
  with cost factor params
    updates the runner cost factors
  when params are not valid
    does not update and returns error because it is not valid

# [RSpecRunTime] Finishing example group spec/services/ci/runners/update_runner_service_spec.rb. It took 0.65 second. Expected to take 0.85 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/alert_management/payload_spec.rb. Expected to take 0.84 second.

Gitlab::AlertManagement::Payload
  #parse
    without a monitoring_tool specified by caller
      without a monitoring tool in the payload
        is expected to be a kind of Gitlab::AlertManagement::Payload::Generic
      with the payload specifying Prometheus
        is expected to be a kind of Gitlab::AlertManagement::Payload::Prometheus
      with the payload specifying an unknown tool
        is expected to be a kind of Gitlab::AlertManagement::Payload::Generic
    with monitoring_tool specified by caller
      as Prometheus
        with an externally managed prometheus payload
          is expected to be a kind of Gitlab::AlertManagement::Payload::Prometheus
      as an unknown tool
        is expected to be a kind of Gitlab::AlertManagement::Payload::Generic
    with integration specified by caller
      passes an integration to a specific payload

# [RSpecRunTime] Finishing example group spec/lib/gitlab/alert_management/payload_spec.rb. It took 0.73 second. Expected to take 0.84 second.
# [RSpecRunTime] Starting example group spec/rubocop/cop/default_scope_spec.rb. Expected to take 0.83 second.

RuboCop::Cop::DefaultScope
  ignores the use of default_scope with a local variable receiver
  flags the use of default_scope when passing a block
  flags the use of default_scope when passing arguments
  does not flag the use of default_scope with a send receiver
  flags the use of default_scope with a nil receiver
  flags the use of default_scope with a constant receiver

# [RSpecRunTime] Finishing example group spec/rubocop/cop/default_scope_spec.rb. It took 0.72 second. Expected to take 0.83 second.
# [RSpecRunTime] Starting example group spec/finders/vs_code/settings/settings_finder_spec.rb. Expected to take 0.82 second.

VsCode::Settings::SettingsFinder
  #execute
    when nil is passed in as the list of settings
      when user has no settings
        returns an empty array
      when user has settings
        returns an array of settings
    when a list of settings is passed, filters by the setting
      when user has no settings with that type
        returns an empty array
      when user does have settings with the type
        returns the record when a single setting exists
        returns multiple records when more than one setting exists

# [RSpecRunTime] Finishing example group spec/finders/vs_code/settings/settings_finder_spec.rb. It took 0.73 second. Expected to take 0.82 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/middleware/basic_health_check_spec.rb. Expected to take 0.81 second.

Gitlab::Middleware::BasicHealthCheck
  #call
    outside IP
      returns a 404
      forwards the call for other paths
    with X-Forwarded-For headers
      returns 200 response when endpoint is allowed
      returns 404 when whitelist is not configured
    whitelisted IP
      returns 200 response when endpoint is hit
      forwards the call for other paths

# [RSpecRunTime] Finishing example group spec/lib/gitlab/middleware/basic_health_check_spec.rb. It took 0.71 second. Expected to take 0.81 second.
# [RSpecRunTime] Starting example group spec/lib/prometheus/pid_provider_spec.rb. Expected to take 0.8 second.

Prometheus::PidProvider
  .worker_id
    when running in Sidekiq server mode
      in a clustered setup
        is expected to eq "sidekiq_123"
      in a single process setup
        is expected to eq "sidekiq"
    when running in Puma mode
      when cluster worker id is specified in process name
        is expected to eq "puma_1"
      when no worker id is specified in process name
        is expected to eq "puma_master"
    when running in unknown mode
      is expected to eq "process_338"

# [RSpecRunTime] Finishing example group spec/lib/prometheus/pid_provider_spec.rb. It took 0.6 second. Expected to take 0.8 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/github_gists_import/status_spec.rb. Expected to take 0.78 second.

Gitlab::GithubGistsImport::Status
  #finish!
    sets finished status
  #started?
    checks if status is started
  #fail!
    sets failed status
  #start!
    expires the key

# [RSpecRunTime] Finishing example group spec/lib/gitlab/github_gists_import/status_spec.rb. It took 0.56 second. Expected to take 0.78 second.
# [RSpecRunTime] Starting example group spec/validators/namespace_path_validator_spec.rb. Expected to take 0.76 second.

NamespacePathValidator
  .valid_path?
    handles invalid utf8
  #validates_each
    adds a message when the path is not in the correct format
    adds a message when the path is reserved when creating
    adds a message when the path is reserved when updating

# [RSpecRunTime] Finishing example group spec/validators/namespace_path_validator_spec.rb. It took 0.59 second. Expected to take 0.76 second.
# [RSpecRunTime] Starting example group spec/lib/error_tracking/sentry_client_spec.rb. Expected to take 0.76 second.

ErrorTracking::SentryClient
  is expected to respond to #issue_latest_event
  is expected to respond to #projects
  is expected to respond to #create_issue_link
  is expected to respond to #list_issues
  is expected to respond to #issue_details
  is expected to respond to #repos

# [RSpecRunTime] Finishing example group spec/lib/error_tracking/sentry_client_spec.rb. It took 0.7 second. Expected to take 0.76 second.
# [RSpecRunTime] Starting example group spec/rubocop/cop/background_migration/feature_category_spec.rb. Expected to take 0.74 second.

RuboCop::Cop::BackgroundMigration::FeatureCategory
  for background migrations
    throws offense on not defining the feature_category
    throws offense on not defining a valid feature_category
    will not throw offense on defining a valid feature_category
  #external_dependency_checksum
    returns a SHA256 digest used by RuboCop to invalid cache
  for non background migrations
    does not throw any offense

# [RSpecRunTime] Finishing example group spec/rubocop/cop/background_migration/feature_category_spec.rb. It took 0.63 second. Expected to take 0.74 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/config/entry/simplifiable_spec.rb. Expected to take 0.72 second.

Gitlab::Config::Entry::Simplifiable
  .strategy
    defines entry strategies
  setting strategy by a condition
    when first strategy should be used
      attemps to load a first strategy
    when second strategy should be used
      attemps to load a second strategy
    when neither one is a valid strategy
      instantiates an unknown strategy
  when a unknown strategy class is not defined
    raises an error when being initialized

# [RSpecRunTime] Finishing example group spec/lib/gitlab/config/entry/simplifiable_spec.rb. It took 0.6 second. Expected to take 0.72 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/git/changed_path_spec.rb. Expected to take 0.71 second.

Gitlab::Git::ChangedPath
  #new_file?
    when it is a new file
      returns true
    when it is not a new file
      returns false
  #submodule_change?
    with a regular file change
      is expected to eq false
    with a submodule addition
      is expected to eq true
    with a submodule deletion
      is expected to eq true

# [RSpecRunTime] Finishing example group spec/lib/gitlab/git/changed_path_spec.rb. It took 0.63 second. Expected to take 0.71 second.
# [RSpecRunTime] Starting example group spec/serializers/group_link/group_link_entity_spec.rb. Expected to take 0.71 second.

GroupLink::GroupLinkEntity
  matches json schema
  correctly exposes `shared_with_group.avatar_url`

# [RSpecRunTime] Finishing example group spec/serializers/group_link/group_link_entity_spec.rb. It took 0.52 second. Expected to take 0.71 second.
# [RSpecRunTime] Starting example group spec/lib/api/entities/clusters/agent_spec.rb. Expected to take 0.69 second.

API::Entities::Clusters::Agent
  includes basic fields

# [RSpecRunTime] Finishing example group spec/lib/api/entities/clusters/agent_spec.rb. It took 0.56 second. Expected to take 0.69 second.
# [RSpecRunTime] Starting example group spec/graphql/types/time_type_spec.rb. Expected to take 0.69 second.

Types::TimeType
  is expected to eq "Time"
  coerces Time object into ISO 8601
  coerces an ISO-time into Time object
  rejects invalid input
  allows nil

# [RSpecRunTime] Finishing example group spec/graphql/types/time_type_spec.rb. It took 0.59 second. Expected to take 0.69 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/pagination/keyset/cursor_based_request_context_spec.rb. Expected to take 0.67 second.

Gitlab::Pagination::Keyset::CursorBasedRequestContext
  #per_page
    is expected to eq 2
  #cursor
    is expected to eq "eyJuYW1lIjoiR2l0TGFiIEluc3RhbmNlIiwiaWQiOiI1MiIsIl9rZCI6Im4ifQ=="
  #order_by
    is expected to eq {:name=>:asc}
  #apply_headers
    sets Link header with same host/path as the original request
    sets Link header with a cursor to the next page

# [RSpecRunTime] Finishing example group spec/lib/gitlab/pagination/keyset/cursor_based_request_context_spec.rb. It took 0.6 second. Expected to take 0.67 second.
# [RSpecRunTime] Starting example group spec/rubocop/cop/migration/background_migration_record_spec.rb. Expected to take 0.66 second.

RuboCop::Cop::Migration::BackgroundMigrationRecord
  in migration
    adds an offense if inheriting from ActiveRecord::Base
    adds an offense if create dynamic model from ActiveRecord::Base
    adds an offense if inheriting from ::ActiveRecord::Base
  outside of a migration
    does not register any offenses

# [RSpecRunTime] Finishing example group spec/rubocop/cop/migration/background_migration_record_spec.rb. It took 0.56 second. Expected to take 0.66 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/status/build/canceling_spec.rb. Expected to take 0.64 second.

Gitlab::Ci::Status::Build::Canceling
  #illustration
    is expected to include :image, :size, and :title
  .matches?
    when build is canceled
      is a correct match
    when build is not canceled
      does not match

# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/status/build/canceling_spec.rb. It took 0.57 second. Expected to take 0.64 second.
# [RSpecRunTime] Starting example group spec/graphql/types/achievements/achievement_type_spec.rb. Expected to take 0.64 second.

Types::Achievements::AchievementType
  is expected to require graphql authorizations :read_achievement
  is expected to have graphql fields "id", "namespace", "name", "avatar_url", "description", "created_at", "updated_at", and "user_achievements"
  is expected to eq "Achievement"
  #avatar_url
    calls Achievement#avatar_url(only_path: false)

# [RSpecRunTime] Finishing example group spec/graphql/types/achievements/achievement_type_spec.rb. It took 0.55 second. Expected to take 0.64 second.
# [RSpecRunTime] Starting example group spec/serializers/impersonation_access_token_serializer_spec.rb. Expected to take 0.62 second.

ImpersonationAccessTokenSerializer
  #represent
    can render a single token
    can render a collection of tokens

# [RSpecRunTime] Finishing example group spec/serializers/impersonation_access_token_serializer_spec.rb. It took 0.58 second. Expected to take 0.62 second.
# [RSpecRunTime] Starting example group spec/workers/batched_git_ref_updates/project_cleanup_worker_spec.rb. Expected to take 0.62 second.

BatchedGitRefUpdates::ProjectCleanupWorker
  behaves like an idempotent worker
    is labeled as idempotent
    performs multiple times sequentially without raising an exception
  #perform
    delegates to ProjectCleanupService
    logs stats

# [RSpecRunTime] Finishing example group spec/workers/batched_git_ref_updates/project_cleanup_worker_spec.rb. It took 0.55 second. Expected to take 0.62 second.
# [RSpecRunTime] Starting example group spec/support_specs/matchers/exceed_redis_call_limit_spec.rb. Expected to take 0.6 second.

RedisCommand matchers
  verifies maximum number of Redis calls
  verifies minimum number of Redis calls
  with Recorder matching only some Redis calls
    counts only Redis calls captured by Recorder
  when expect part is a function
    automatically enables RedisCommand::Recorder for it

# [RSpecRunTime] Finishing example group spec/support_specs/matchers/exceed_redis_call_limit_spec.rb. It took 0.54 second. Expected to take 0.6 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/database/migrations/observers/query_statistics_spec.rb. Expected to take 0.6 second.

Gitlab::Database::Migrations::Observers::QueryStatistics
  #before
    with pgss available
      resets pg_stat_statements
    without pgss available
      executes nothing
  #record
    with pgss available
      fetches data from pg_stat_statements and stores on the observation
    without pgss available
      executes nothing

# [RSpecRunTime] Finishing example group spec/lib/gitlab/database/migrations/observers/query_statistics_spec.rb. It took 0.52 second. Expected to take 0.6 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/process_memory_cache/helper_spec.rb. Expected to take 0.58 second.

Gitlab::ProcessMemoryCache::Helper
  .fetch_memory_cache
    memoizes the result
    resets the cache when the shared key is missing
    does not set the shared timestamp if it is already present
  .invalidate_memory_cache
    invalidates the cache

# [RSpecRunTime] Finishing example group spec/lib/gitlab/process_memory_cache/helper_spec.rb. It took 0.55 second. Expected to take 0.58 second.
# [RSpecRunTime] Starting example group spec/helpers/ci/triggers_helper_spec.rb. Expected to take 0.57 second.

Ci::TriggersHelper
  .builds_trigger_url
    with no ref
      is expected to eq "http://localhost/api/v4/projects/1/trigger/pipeline"
    with ref
      is expected to eq "http://localhost/api/v4/projects/1/ref/master/trigger/pipeline"
  .integration_trigger_url
    is expected to eq "http://localhost/api/v4/projects/1/integrations/param/trigger"

# [RSpecRunTime] Finishing example group spec/helpers/ci/triggers_helper_spec.rb. It took 0.46 second. Expected to take 0.57 second.
# [RSpecRunTime] Starting example group spec/lib/bulk_imports/clients/graphql_spec.rb. Expected to take 0.56 second.

BulkImports::Clients::Graphql
  #execute
    network errors
      when response cannot be parsed
        raises network error
      when response is unsuccessful
        raises network error

# [RSpecRunTime] Finishing example group spec/lib/bulk_imports/clients/graphql_spec.rb. It took 0.5 second. Expected to take 0.56 second.
# [RSpecRunTime] Starting example group spec/models/discussion_note_spec.rb. Expected to take 0.55 second.

DiscussionNote
  does not allow STI
  #to_ability_name
    is expected to eq "note"
  validations
    when noteable is an abuse report
      is expected to be valid

# [RSpecRunTime] Finishing example group spec/models/discussion_note_spec.rb. It took 0.47 second. Expected to take 0.55 second.
# [RSpecRunTime] Starting example group spec/helpers/tracking_helper_spec.rb. Expected to take 0.54 second.

TrackingHelper
  #tracking_attrs
    returns no data if snowplow is disabled
    returns data hash
    can return data directly

# [RSpecRunTime] Finishing example group spec/helpers/tracking_helper_spec.rb. It took 0.47 second. Expected to take 0.54 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/sidekiq_middleware/extra_done_log_metadata_spec.rb. Expected to take 0.53 second.

Gitlab::SidekiqMiddleware::ExtraDoneLogMetadata
  #call
    merges Application#logging_extras in to job
    does not raise when the worker does not respond to #logging_extras
    still merges logging_extras even when an error is raised during job execution

# [RSpecRunTime] Finishing example group spec/lib/gitlab/sidekiq_middleware/extra_done_log_metadata_spec.rb. It took 0.45 second. Expected to take 0.53 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/reports/codequality_mr_diff_spec.rb. Expected to take 0.52 second.

Gitlab::Ci::Reports::CodequalityMrDiff
  #initialize!
    when quality has degradations
      with several degradations on the same line
        generates quality report for mr diff
      with several degradations on several files
        returns quality report for mr diff
    when quality has no degradation
      returns an empty hash

# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/reports/codequality_mr_diff_spec.rb. It took 0.43 second. Expected to take 0.52 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/external_authorization/logger_spec.rb. Expected to take 0.51 second.

Gitlab::ExternalAuthorization::Logger
  .log_access
    logs a nice message for an access request
    does not trip without a project path
    adds the load time for cached accesses

# [RSpecRunTime] Finishing example group spec/lib/gitlab/external_authorization/logger_spec.rb. It took 0.47 second. Expected to take 0.51 second.
# [RSpecRunTime] Starting example group spec/rubocop/cop/qa/fabricate_usage_spec.rb. Expected to take 0.5 second.

RuboCop::Cop::QA::FabricateUsage
  registers an offense for groups
  does not register an offense when using fabricate_via_api! for an unenforced resource
  registers an offense when using fabricate_via_api! for a valid resource

# [RSpecRunTime] Finishing example group spec/rubocop/cop/qa/fabricate_usage_spec.rb. It took 0.45 second. Expected to take 0.5 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/config/interpolation/functions_stack_spec.rb. Expected to take 0.5 second.

Gitlab::Ci::Config::Interpolation::FunctionsStack
  modifies the given input value according to the function expressions
  when function expressions do not match any function
    returns an error
  when applying a function fails
    returns the error given by the failure

# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/config/interpolation/functions_stack_spec.rb. It took 0.43 second. Expected to take 0.5 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/project_config/source_spec.rb. Expected to take 0.49 second.

Gitlab::Ci::ProjectConfig::Source
  #internal_include_prepended?
    is expected to eq false
  #source
    is expected to raise NotImplementedError
  #content
    is expected to raise NotImplementedError

# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/project_config/source_spec.rb. It took 0.47 second. Expected to take 0.49 second.
# [RSpecRunTime] Starting example group spec/graphql/types/alert_management/integration_type_enum_spec.rb. Expected to take 0.48 second.

Types::AlertManagement::IntegrationTypeEnum
  is expected to eq "AlertManagementIntegrationType"
  statuses
    name: "PROMETHEUS", value: :prometheus
      exposes a type with the correct value
    name: "HTTP", value: :http
      exposes a type with the correct value

# [RSpecRunTime] Finishing example group spec/graphql/types/alert_management/integration_type_enum_spec.rb. It took 0.45 second. Expected to take 0.48 second.
# [RSpecRunTime] Starting example group spec/lib/api/validations/validators/git_ref_spec.rb. Expected to take 0.46 second.

API::Validations::Validators::GitRef
  valid revision param
    does not raise a validation error
  revision param contains invalid chars
    raises a validation error

# [RSpecRunTime] Finishing example group spec/lib/api/validations/validators/git_ref_spec.rb. It took 0.36 second. Expected to take 0.46 second.
# [RSpecRunTime] Starting example group spec/serializers/codequality_reports_comparer_serializer_spec.rb. Expected to take 0.46 second.

CodequalityReportsComparerSerializer
  #to_json
    when base report has error and head has a different error
      matches the schema
    when base report has no error and head has errors
      matches the schema

# [RSpecRunTime] Finishing example group spec/serializers/codequality_reports_comparer_serializer_spec.rb. It took 0.43 second. Expected to take 0.46 second.
# [RSpecRunTime] Starting example group spec/graphql/types/issue_status_count_type_spec.rb. Expected to take 0.44 second.

Types::IssueStatusCountsType
  is expected to eq "IssueStatusCountsType"
  exposes the expected fields

# [RSpecRunTime] Finishing example group spec/graphql/types/issue_status_count_type_spec.rb. It took 0.36 second. Expected to take 0.44 second.
# [RSpecRunTime] Starting example group spec/rubocop/cop/migration/refer_to_index_by_name_spec.rb. Expected to take 0.44 second.

RuboCop::Cop::Migration::ReferToIndexByName
  when in migration
    when existing indexes are referred to without an explicit name
      registers an offense
  when outside migration
    registers no offenses

# [RSpecRunTime] Finishing example group spec/rubocop/cop/migration/refer_to_index_by_name_spec.rb. It took 0.37 second. Expected to take 0.44 second.
# [RSpecRunTime] Starting example group spec/graphql/types/error_tracking/sentry_error_type_spec.rb. Expected to take 0.43 second.

Types::ErrorTracking::SentryErrorType
  is expected to eq "SentryError"
  exposes the expected fields

# [RSpecRunTime] Finishing example group spec/graphql/types/error_tracking/sentry_error_type_spec.rb. It took 0.35 second. Expected to take 0.43 second.
# [RSpecRunTime] Starting example group spec/graphql/types/work_items/widgets/current_user_todos_input_type_spec.rb. Expected to take 0.43 second.

Types::WorkItems::Widgets::CurrentUserTodosInputType
  is expected to eq "WorkItemWidgetCurrentUserTodosInput"
  is expected to contain exactly "action" and "todoId"

# [RSpecRunTime] Finishing example group spec/graphql/types/work_items/widgets/current_user_todos_input_type_spec.rb. It took 0.36 second. Expected to take 0.43 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/grape_logging/formatters/lograge_with_timestamp_spec.rb. Expected to take 0.42 second.

Gitlab::GrapeLogging::Formatters::LogrageWithTimestamp
  turns the log entry to valid JSON
  re-formats the params hash

# [RSpecRunTime] Finishing example group spec/lib/gitlab/grape_logging/formatters/lograge_with_timestamp_spec.rb. It took 0.36 second. Expected to take 0.42 second.
# [RSpecRunTime] Starting example group spec/graphql/types/metadata/kas_type_spec.rb. Expected to take 0.42 second.

Types::Metadata::KasType
  is expected to eq "Kas"
  is expected to require graphql authorizations :read_instance_metadata

# [RSpecRunTime] Finishing example group spec/graphql/types/metadata/kas_type_spec.rb. It took 0.37 second. Expected to take 0.42 second.
# [RSpecRunTime] Starting example group spec/lib/api/entities/ci/job_artifact_file_spec.rb. Expected to take 0.42 second.

API::Entities::Ci::JobArtifactFile
  returns the filename
  returns the size

# [RSpecRunTime] Finishing example group spec/lib/api/entities/ci/job_artifact_file_spec.rb. It took 0.37 second. Expected to take 0.42 second.
# [RSpecRunTime] Starting example group spec/components/projects/ml/show_ml_model_component_spec.rb. Expected to take 0.41 second.

Projects::Ml::ShowMlModelComponent
  rendered
    renders element with view_model

# [RSpecRunTime] Finishing example group spec/components/projects/ml/show_ml_model_component_spec.rb. It took 0.42 second. Expected to take 0.41 second.
# [RSpecRunTime] Starting example group spec/graphql/types/jira_user_type_spec.rb. Expected to take 0.41 second.

Types::JiraUserType
  is expected to eq "JiraUser"
  has the expected fields

# [RSpecRunTime] Finishing example group spec/graphql/types/jira_user_type_spec.rb. It took 0.35 second. Expected to take 0.41 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/graphql/timeout_spec.rb. Expected to take 0.41 second.

Gitlab::Graphql::Timeout
  inherits from
  sends the error to our GraphQL logger

# [RSpecRunTime] Finishing example group spec/lib/gitlab/graphql/timeout_spec.rb. It took 0.35 second. Expected to take 0.41 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/graphql/loaders/lazy_relation_loader/registry_spec.rb. Expected to take 0.4 second.

Gitlab::Graphql::Loaders::LazyRelationLoader::Registry
  #respond_to?
    when the relation responds to given method
      is expected to be truthy
    when the relation does not respond to given method
      is expected to be falsey

# [RSpecRunTime] Finishing example group spec/lib/gitlab/graphql/loaders/lazy_relation_loader/registry_spec.rb. It took 0.35 second. Expected to take 0.4 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/diff/inline_diff_marker_spec.rb. Expected to take 0.4 second.

Gitlab::Diff::InlineDiffMarker
  #mark
    when the rich text is html safe
      marks the range
    when the text is not html safe
      marks the range

# [RSpecRunTime] Finishing example group spec/lib/gitlab/diff/inline_diff_marker_spec.rb. It took 0.36 second. Expected to take 0.4 second.
# [RSpecRunTime] Starting example group spec/workers/database/partition_management_worker_spec.rb. Expected to take 0.38 second.

Database::PartitionManagementWorker
  #perform
    syncs partitions
    reports partition metrics

# [RSpecRunTime] Finishing example group spec/workers/database/partition_management_worker_spec.rb. It took 0.35 second. Expected to take 0.38 second.
# [RSpecRunTime] Starting example group spec/graphql/types/projects/topic_type_spec.rb. Expected to take 0.38 second.

Types::Projects::TopicType
  is expected to eq "Topic"
  is expected to have graphql fields :id, :name, :title, :description, :description_html, and :avatar_url

# [RSpecRunTime] Finishing example group spec/graphql/types/projects/topic_type_spec.rb. It took 0.34 second. Expected to take 0.38 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/memory/watchdog/handlers/puma_handler_spec.rb. Expected to take 0.35 second.

Gitlab::Memory::Watchdog::Handlers::PumaHandler
  #call
    invokes orderly termination via Puma API

# [RSpecRunTime] Finishing example group spec/lib/gitlab/memory/watchdog/handlers/puma_handler_spec.rb. It took 0.27 second. Expected to take 0.35 second.
# [RSpecRunTime] Starting example group spec/lib/peek/views/active_record_spec.rb. Expected to take 0.34 second.

Peek::Views::ActiveRecord
  includes db role data and db_config_name name

# [RSpecRunTime] Finishing example group spec/lib/peek/views/active_record_spec.rb. It took 0.29 second. Expected to take 0.34 second.
# [RSpecRunTime] Starting example group spec/workers/trending_projects_worker_spec.rb. Expected to take 0.34 second.

TrendingProjectsWorker
  #perform
    refreshes the trending projects

# [RSpecRunTime] Finishing example group spec/workers/trending_projects_worker_spec.rb. It took 0.31 second. Expected to take 0.34 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/reports/sbom/reports_spec.rb. Expected to take 0.33 second.

Gitlab::Ci::Reports::Sbom::Reports
  #add_report
    appends the report to the report list

# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/reports/sbom/reports_spec.rb. It took 0.27 second. Expected to take 0.33 second.
# [RSpecRunTime] Starting example group spec/workers/gitlab/github_import/pull_requests/import_review_request_worker_spec.rb. Expected to take 0.32 second.

Gitlab::GithubImport::PullRequests::ImportReviewRequestWorker
  #import
    imports an pull request review requests

# [RSpecRunTime] Finishing example group spec/workers/gitlab/github_import/pull_requests/import_review_request_worker_spec.rb. It took 0.3 second. Expected to take 0.32 second.
# [RSpecRunTime] Starting example group spec/graphql/types/countable_connection_type_spec.rb. Expected to take 0.32 second.

#<Class:0x00007d3c59097dc0>
  has the expected fields

# [RSpecRunTime] Finishing example group spec/graphql/types/countable_connection_type_spec.rb. It took 0.31 second. Expected to take 0.32 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/log_timestamp_formatter_spec.rb. Expected to take 0.32 second.

Gitlab::LogTimestampFormatter
  logs the timestamp in UTC and ISO8601.3 format

# [RSpecRunTime] Finishing example group spec/lib/gitlab/log_timestamp_formatter_spec.rb. It took 0.28 second. Expected to take 0.32 second.
# [RSpecRunTime] Starting example group spec/serializers/integrations/project_serializer_spec.rb. Expected to take 0.31 second.

Integrations::ProjectSerializer
  represents Integrations::ProjectEntity entities

# [RSpecRunTime] Finishing example group spec/serializers/integrations/project_serializer_spec.rb. It took 0.28 second. Expected to take 0.31 second.
# [RSpecRunTime] Starting example group spec/serializers/rollout_statuses/ingress_entity_spec.rb. Expected to take 0.3 second.

RolloutStatuses::IngressEntity
  exposes canary weight

# [RSpecRunTime] Finishing example group spec/serializers/rollout_statuses/ingress_entity_spec.rb. It took 0.29 second. Expected to take 0.3 second.
auto_explain log contains 1725 entries for main, writing to /builds/gitlab-org/gitlab/auto_explain/rspec-unit-pg14-26-32.338.main.ndjson.gz
took 29.457341767
auto_explain log contains 1726 entries for ci, writing to /builds/gitlab-org/gitlab/auto_explain/rspec-unit-pg14-26-32.338.ci.ndjson.gz
took 28.778635705
[TEST PROF INFO] EventProf results for sql.active_record

Total time: 05:55.402 of 23:05.956 (25.64%)
Total events: 309043

Top 5 slowest suites (by time):

MergeRequests::BuildService (./spec/services/merge_requests/build_service_spec.rb:4) – 00:43.205 (32994 / 130) of 02:59.495 (24.07%)
ContainerRepository (./spec/models/container_repository_spec.rb:5) – 00:41.522 (45327 / 285) of 02:29.762 (27.73%)
Gitlab::Datab...kWritesManager (./spec/lib/gitlab/database/lock_writes_manager_spec.rb:5) – 00:34.209 (44068 / 20) of 00:59.944 (57.07%)
Ci::CreatePipelineService (./spec/services/ci/create_pipeline_service_spec.rb:5) – 00:24.049 (18026 / 120) of 01:40.521 (23.92%)
Clusters::Pla...ms::Kubernetes (./spec/models/clusters/platforms/kubernetes_spec.rb:5) – 00:20.456 (12704 / 109) of 01:04.248 (31.84%)

Knapsack report was generated. Preview:
{
  "spec/services/merge_requests/build_service_spec.rb": 179.45989779699994,
  "spec/models/container_repository_spec.rb": 149.76174162999996,
  "spec/services/ci/create_pipeline_service_spec.rb": 100.52068537600007,
  "spec/models/clusters/platforms/kubernetes_spec.rb": 64.24796901199988,
  "spec/lib/gitlab/database/lock_writes_manager_spec.rb": 59.94456361799985,
  "spec/services/projects/fork_service_spec.rb": 41.40007367900034,
  "spec/models/commit_spec.rb": 38.59104924100029,
  "spec/uploaders/object_storage_spec.rb": 35.74727286699999,
  "spec/models/namespace_setting_spec.rb": 28.29821493199961,
  "spec/services/issues/import_csv_service_spec.rb": 27.810556614000234,
  "spec/models/award_emoji_spec.rb": 24.994143957000233,
  "spec/services/files/multi_service_spec.rb": 21.602352032000454,
  "spec/serializers/issue_entity_spec.rb": 20.13563762800004,
  "spec/models/abuse_report_spec.rb": 20.378549487999408,
  "spec/finders/ci/pipelines_for_merge_request_finder_spec.rb": 13.794258956999329,
  "spec/services/snippets/create_service_spec.rb": 18.86446677799995,
  "spec/lib/gitlab/git_access_wiki_spec.rb": 16.217110618000333,
  "spec/lib/gitlab/ci/lint_spec.rb": 14.340541312000823,
  "spec/models/integrations/prometheus_spec.rb": 13.932668906999425,
  "spec/lib/banzai/filter/video_link_filter_spec.rb": 12.250860378000652,
  "spec/services/ci/stuck_builds/drop_running_service_spec.rb": 12.469182480999734,
  "spec/services/dependency_proxy/image_ttl_group_policies/update_service_spec.rb": 11.04192692200013,
  "spec/services/verify_pages_domain_service_spec.rb": 13.417323138999564,
  "spec/services/releases/update_service_spec.rb": 12.850006257999667,
  "spec/uploaders/ci/pipeline_artifact_uploader_spec.rb": 10.234378741,
  "spec/finders/merge_requests/oldest_per_commit_finder_spec.rb": 10.690690061999703,
  "spec/models/ci/namespace_mirror_spec.rb": 10.634031125000547,
  "spec/views/layouts/application.html.haml_spec.rb": 10.4080866660006,
  "spec/services/merge_requests/post_merge_service_spec.rb": 9.110126395999941,
  "spec/lib/banzai/pipeline/full_pipeline_spec.rb": 8.942744750000202,
  "spec/graphql/mutations/design_management/delete_spec.rb": 9.063565019000634,
  "spec/workers/prune_old_events_worker_spec.rb": 8.257205168999462,
  "spec/services/ci/play_manual_stage_service_spec.rb": 8.235372899999675,
  "spec/lib/gitlab/email/handler/unsubscribe_handler_spec.rb": 7.312444569000036,
  "spec/services/projects/import_export/prune_expired_export_jobs_service_spec.rb": 8.468305499999587,
  "spec/lib/gitlab/auth/saml/user_spec.rb": 7.818475876000775,
  "spec/graphql/types/issue_type_spec.rb": 7.387368102000437,
  "spec/services/merge_requests/resolved_discussion_notification_service_spec.rb": 6.442528722999668,
  "spec/lib/gitlab/ci/pipeline/expression/lexeme/not_equals_spec.rb": 5.929378316000111,
  "spec/lib/gitlab/slash_commands/issue_comment_spec.rb": 5.363325683999392,
  "spec/models/slack_integration_spec.rb": 5.047744910999427,
  "spec/models/ci/group_variable_spec.rb": 6.268709426999521,
  "spec/services/issues/reorder_service_spec.rb": 5.4580697559995315,
  "spec/tasks/gitlab/incoming_email_rake_spec.rb": 5.455555575999824,
  "spec/lib/gitlab/email/smime/signer_spec.rb": 8.092274112000268,
  "spec/lib/gitlab/ci/templates/Verify/load_performance_testing_gitlab_ci_yaml_spec.rb": 6.060492180999972,
  "spec/lib/gitlab/ci/pipeline/chain/ensure_resource_groups_spec.rb": 5.04226823099998,
  "spec/models/ssh_host_key_spec.rb": 4.775878215000375,
  "spec/helpers/icons_helper_spec.rb": 4.952960020000319,
  "spec/lib/gitlab/cleanup/orphan_lfs_file_references_spec.rb": 5.140851653999562,
  "spec/lib/gitlab/ci/badge/release/latest_release_spec.rb": 5.770739888999742,
  "spec/helpers/namespaces_helper_spec.rb": 5.443410356999266,
  "spec/presenters/packages/conan/package_presenter_spec.rb": 4.200204462999864,
  "spec/lib/gitlab/ci/reports/test_suite_spec.rb": 4.214349091999793,
  "spec/lib/gitlab/slash_commands/presenters/issue_move_spec.rb": 4.179299405000165,
  "spec/db/production/settings_spec.rb": 4.768960754000545,
  "spec/lib/gitlab/checks/push_check_spec.rb": 4.122705619999579,
  "spec/lib/gitlab/ci/config/entry/variables_spec.rb": 4.443522852000569,
  "spec/models/instance_configuration_spec.rb": 4.2176730119999775,
  "spec/services/members/request_access_service_spec.rb": 4.338981352000701,
  "spec/lib/api/entities/project_import_status_spec.rb": 3.4404661679991477,
  "spec/finders/autocomplete/group_users_finder_spec.rb": 3.5963095940005587,
  "spec/services/packages/helm/process_file_service_spec.rb": 3.60497682300047,
  "spec/lib/gitlab/changelog/committer_spec.rb": 3.34677767499943,
  "spec/models/deployment_merge_request_spec.rb": 3.596541853999952,
  "spec/lib/gitlab/ci/config/external/file/local_spec.rb": 3.101318237000669,
  "spec/lib/gitlab/usage/metrics/instrumentations/unique_users_all_imports_metric_spec.rb": 3.1949449479998293,
  "spec/graphql/resolvers/project_pipeline_resolver_spec.rb": 3.2812861610000255,
  "spec/models/users_statistics_spec.rb": 3.1488230129998556,
  "spec/graphql/resolvers/project_pipeline_statistics_resolver_spec.rb": 3.4483716669992646,
  "spec/serializers/diff_viewer_entity_spec.rb": 2.935058971000217,
  "spec/finders/groups/user_groups_finder_spec.rb": 3.0925659770000493,
  "spec/lib/gitlab/analytics/cycle_analytics/stage_events/merge_request_first_deployed_to_production_spec.rb": 2.809999371000231,
  "spec/lib/gitlab/git/patches/commit_patches_spec.rb": 2.8849404649999997,
  "spec/lib/gitlab/security/scan_configuration_spec.rb": 2.9346114509999097,
  "spec/services/ci/job_artifacts/track_artifact_report_service_spec.rb": 2.5350388349997957,
  "spec/lib/gitlab/graphs/commits_spec.rb": 2.4272273229998973,
  "spec/graphql/resolvers/ci/catalog/resources_resolver_spec.rb": 2.455211542000143,
  "spec/lib/gitlab/event_store/store_spec.rb": 2.518243796000206,
  "spec/workers/gitlab/bitbucket_import/stage/import_pull_requests_worker_spec.rb": 2.407606785000098,
  "spec/lib/gitlab/asciidoc/include_processor_spec.rb": 2.317050552999717,
  "spec/lib/atlassian/jira_connect/serializers/pull_request_entity_spec.rb": 2.2133162820000507,
  "spec/services/merge_requests/pushed_branches_service_spec.rb": 2.4471712020003906,
  "spec/lib/gitlab/hotlinking_detector_spec.rb": 2.5805914310003573,
  "spec/lib/gitlab/pagination/keyset/simple_order_builder_spec.rb": 2.109240050999688,
  "spec/services/users/upsert_credit_card_validation_service_spec.rb": 1.9615251029999854,
  "spec/lib/gitlab/regex/packages/protection/rules_spec.rb": 1.9213149070001236,
  "spec/serializers/feature_flag_serializer_spec.rb": 2.1391400390002673,
  "spec/lib/gitlab/metrics/prometheus_spec.rb": 1.3627948639996248,
  "spec/lib/gitlab/cleanup/remote_uploads_spec.rb": 2.0563828049998847,
  "spec/lib/gitlab/ci/config/entry/product/parallel_spec.rb": 1.8487287529997047,
  "spec/finders/projects/topics_finder_spec.rb": 1.9557391339994865,
  "spec/initializers/rest-client-hostname_override_spec.rb": 2.0455710259993793,
  "spec/workers/gitlab/bitbucket_import/stage/finish_import_worker_spec.rb": 2.186727764000352,
  "spec/lib/bulk_imports/common/graphql/get_members_query_spec.rb": 2.028549118000228,
  "spec/services/authorized_project_update/periodic_recalculate_service_spec.rb": 1.974022172000332,
  "spec/models/packages/debian/group_distribution_key_spec.rb": 2.0233993480005665,
  "spec/workers/authorized_project_update/project_recalculate_per_user_worker_spec.rb": 1.7191936540002644,
  "spec/workers/delete_merged_branches_worker_spec.rb": 1.5028786419998141,
  "spec/lib/gitlab/wiki_pages/front_matter_parser_spec.rb": 2.032847806999598,
  "spec/lib/gitlab/code_navigation_path_spec.rb": 1.1430856629995105,
  "spec/helpers/projects/ml/experiments_helper_spec.rb": 1.7824461279997195,
  "spec/finders/packages/helm/packages_finder_spec.rb": 1.7642667500003881,
  "spec/lib/gitlab/auth/external_username_sanitizer_spec.rb": 1.2636089220004578,
  "spec/workers/releases/create_evidence_worker_spec.rb": 1.7807761090007261,
  "spec/workers/ml/experiment_tracking/associate_ml_candidate_to_package_worker_spec.rb": 1.739498162000018,
  "spec/services/keys/expiry_notification_service_spec.rb": 2.9134680029992523,
  "spec/serializers/user_serializer_spec.rb": 1.4194092389998332,
  "spec/serializers/issue_board_entity_spec.rb": 1.5320801899997605,
  "spec/lib/gitlab/composer/version_index_spec.rb": 1.7762443790006728,
  "spec/services/branches/diverging_commit_counts_service_spec.rb": 1.5053050020005685,
  "spec/graphql/resolvers/paginated_tree_resolver_spec.rb": 1.6668288880000546,
  "spec/lib/initializer_connections_spec.rb": 1.3154986190002091,
  "spec/lib/gitlab/ci/templates/kaniko_gitlab_ci_yaml_spec.rb": 1.29186811100044,
  "spec/lib/gitlab/email/service_desk_receiver_spec.rb": 0.9093190319999849,
  "spec/lib/bulk_imports/groups/pipelines/namespace_settings_pipeline_spec.rb": 1.345580226000493,
  "spec/graphql/resolvers/ci/runner_jobs_resolver_spec.rb": 1.3156566879997627,
  "spec/lib/bulk_imports/projects/pipelines/pipeline_schedules_pipeline_spec.rb": 1.2819152219999523,
  "spec/helpers/projects/terraform_helper_spec.rb": 1.4406428479996976,
  "spec/lib/gitlab/github_import/importer/lfs_objects_importer_spec.rb": 1.331338656999833,
  "spec/helpers/hooks_helper_spec.rb": 1.224072236000211,
  "spec/services/users/activate_service_spec.rb": 1.3531851859997914,
  "spec/services/timelogs/delete_service_spec.rb": 1.2157644359995174,
  "spec/lib/gitlab/ci/config/entry/inherit/default_spec.rb": 1.2235638769998332,
  "spec/lib/gitlab/etag_caching/store_spec.rb": 0.8726432959992962,
  "spec/support_specs/database/multiple_databases_helpers_spec.rb": 1.1194208550004987,
  "spec/views/search/show.html.haml_spec.rb": 1.2436793049992048,
  "spec/services/work_items/callbacks/notes_spec.rb": 1.137893594000161,
  "spec/lib/gitlab/database/migration_helpers/swapping_spec.rb": 1.2409305339997445,
  "spec/services/projects/all_merge_requests_count_service_spec.rb": 1.2023668779993386,
  "spec/graphql/mutations/custom_emoji/create_spec.rb": 1.1710839899997154,
  "spec/workers/deployments/archive_in_project_worker_spec.rb": 1.0916634669993073,
  "spec/services/reset_project_cache_service_spec.rb": 1.2105126979995475,
  "spec/lib/gitlab/github_import/settings_spec.rb": 0.8392436690000977,
  "spec/models/push_event_payload_spec.rb": 1.2623148029997537,
  "spec/models/user_agent_detail_spec.rb": 1.1059058460004962,
  "spec/workers/stuck_ci_jobs_worker_spec.rb": 0.9794309870003417,
  "spec/rubocop/cop/graphql/enum_values_spec.rb": 0.7777760239996496,
  "spec/lib/sidebars/admin/menus/applications_menu_spec.rb": 0.9877477260006344,
  "spec/lib/gitlab/instrumentation/exclusive_lock_spec.rb": 1.059790588999931,
  "spec/lib/gitlab/bitbucket_import/importers/pull_requests_notes_importer_spec.rb": 0.9087948319993302,
  "spec/lib/gitlab/seeders/ci/variables_instance_seeder_spec.rb": 0.91343961199982,
  "spec/lib/api/helpers/related_resources_helpers_spec.rb": 1.0543051309996372,
  "spec/lib/gitlab/usage/metrics/instrumentations/group_imports_users_metric_spec.rb": 0.9538091590002296,
  "spec/lib/api/entities/ml/mlflow/get_run_spec.rb": 0.8938045140002941,
  "spec/lib/sidebars/admin/menus/analytics_menu_spec.rb": 0.8757708949997323,
  "spec/lib/gitlab/utils/link_header_parser_spec.rb": 0.8301544699997976,
  "spec/views/shared/projects/_inactive_project_deletion_alert.html.haml_spec.rb": 0.8269127699995806,
  "spec/workers/gitlab/bitbucket_server_import/stage/import_lfs_objects_worker_spec.rb": 0.8071040710001398,
  "spec/lib/gitlab/dependency_linker/podspec_json_linker_spec.rb": 0.9347606500004986,
  "spec/lib/gitlab/throttle_spec.rb": 0.604743308000252,
  "spec/policies/packages/package_policy_spec.rb": 0.7631328750003377,
  "spec/lib/gitlab/ci/config/entry/kubernetes_spec.rb": 0.8370934190006665,
  "spec/lib/gitlab/graphql/limit/field_call_count_spec.rb": 0.8027274819996819,
  "spec/lib/gitlab/ci/templates/Terraform/module_base_gitlab_ci_yaml_spec.rb": 0.74401721599952,
  "spec/lib/gitlab/cache/metrics_spec.rb": 0.6873075319999771,
  "spec/initializers/fog_google_https_private_urls_spec.rb": 0.28451384599975427,
  "spec/services/saved_replies/update_service_spec.rb": 0.8127431209995848,
  "spec/lib/gitlab/sql/cte_spec.rb": 0.755386465999436,
  "spec/services/ci/runners/update_runner_service_spec.rb": 0.6456387660000473,
  "spec/lib/gitlab/alert_management/payload_spec.rb": 0.7342724469999666,
  "spec/rubocop/cop/default_scope_spec.rb": 0.7149527990004572,
  "spec/finders/vs_code/settings/settings_finder_spec.rb": 0.7263282389994856,
  "spec/lib/gitlab/middleware/basic_health_check_spec.rb": 0.7122788990000117,
  "spec/lib/prometheus/pid_provider_spec.rb": 0.6040113990002283,
  "spec/lib/gitlab/github_gists_import/status_spec.rb": 0.5636203520007257,
  "spec/validators/namespace_path_validator_spec.rb": 0.5890070499999638,
  "spec/lib/error_tracking/sentry_client_spec.rb": 0.704373100000339,
  "spec/rubocop/cop/background_migration/feature_category_spec.rb": 0.6295707560002484,
  "spec/lib/gitlab/config/entry/simplifiable_spec.rb": 0.5961104500001966,
  "spec/lib/gitlab/git/changed_path_spec.rb": 0.6267040459997588,
  "spec/serializers/group_link/group_link_entity_spec.rb": 0.5216401060006319,
  "spec/lib/api/entities/clusters/agent_spec.rb": 0.5555574930003786,
  "spec/graphql/types/time_type_spec.rb": 0.5901847499999349,
  "spec/lib/gitlab/pagination/keyset/cursor_based_request_context_spec.rb": 0.5975002489994949,
  "spec/rubocop/cop/migration/background_migration_record_spec.rb": 0.5559755219992439,
  "spec/lib/gitlab/ci/status/build/canceling_spec.rb": 0.5699391419993844,
  "spec/graphql/types/achievements/achievement_type_spec.rb": 0.545921613000246,
  "spec/serializers/impersonation_access_token_serializer_spec.rb": 0.5771700909999709,
  "spec/workers/batched_git_ref_updates/project_cleanup_worker_spec.rb": 0.5500749029997678,
  "spec/support_specs/matchers/exceed_redis_call_limit_spec.rb": 0.5445960139995805,
  "spec/lib/gitlab/database/migrations/observers/query_statistics_spec.rb": 0.5229803359998186,
  "spec/lib/gitlab/process_memory_cache/helper_spec.rb": 0.5469041129999823,
  "spec/helpers/ci/triggers_helper_spec.rb": 0.4560982619996139,
  "spec/lib/bulk_imports/clients/graphql_spec.rb": 0.5042046569997183,
  "spec/models/discussion_note_spec.rb": 0.47179340999991837,
  "spec/helpers/tracking_helper_spec.rb": 0.4708027890001176,
  "spec/lib/gitlab/sidekiq_middleware/extra_done_log_metadata_spec.rb": 0.4470496320000166,
  "spec/lib/gitlab/ci/reports/codequality_mr_diff_spec.rb": 0.43211601300026814,
  "spec/lib/gitlab/external_authorization/logger_spec.rb": 0.46957418999954825,
  "spec/rubocop/cop/qa/fabricate_usage_spec.rb": 0.4468564120006704,
  "spec/lib/gitlab/ci/config/interpolation/functions_stack_spec.rb": 0.4270417629995791,
  "spec/lib/gitlab/ci/project_config/source_spec.rb": 0.4711624510000547,
  "spec/graphql/types/alert_management/integration_type_enum_spec.rb": 0.44873216100040736,
  "spec/lib/api/validations/validators/git_ref_spec.rb": 0.3634351489999972,
  "spec/serializers/codequality_reports_comparer_serializer_spec.rb": 0.4278346929995678,
  "spec/graphql/types/issue_status_count_type_spec.rb": 0.3549008899999535,
  "spec/rubocop/cop/migration/refer_to_index_by_name_spec.rb": 0.37038706800012733,
  "spec/graphql/types/error_tracking/sentry_error_type_spec.rb": 0.35127860000011424,
  "spec/graphql/types/work_items/widgets/current_user_todos_input_type_spec.rb": 0.359158109999953,
  "spec/lib/gitlab/grape_logging/formatters/lograge_with_timestamp_spec.rb": 0.3625169390006704,
  "spec/graphql/types/metadata/kas_type_spec.rb": 0.3671101190002446,
  "spec/lib/api/entities/ci/job_artifact_file_spec.rb": 0.36601520899967,
  "spec/components/projects/ml/show_ml_model_component_spec.rb": 0.41793000399957236,
  "spec/graphql/types/jira_user_type_spec.rb": 0.35445946999971056,
  "spec/lib/gitlab/graphql/timeout_spec.rb": 0.3539785100001609,
  "spec/lib/gitlab/graphql/loaders/lazy_relation_loader/registry_spec.rb": 0.3491890199993577,
  "spec/lib/gitlab/diff/inline_diff_marker_spec.rb": 0.3587300489998597,
  "spec/workers/database/partition_management_worker_spec.rb": 0.34528301099999226,
  "spec/graphql/types/projects/topic_type_spec.rb": 0.34323998099989694,
  "spec/lib/gitlab/memory/watchdog/handlers/puma_handler_spec.rb": 0.2652284569994663,
  "spec/lib/peek/views/active_record_spec.rb": 0.28725170599955163,
  "spec/workers/trending_projects_worker_spec.rb": 0.3109102439993876,
  "spec/lib/gitlab/ci/reports/sbom/reports_spec.rb": 0.2722178569993048,
  "spec/workers/gitlab/github_import/pull_requests/import_review_request_worker_spec.rb": 0.2983099350003613,
  "spec/graphql/types/countable_connection_type_spec.rb": 0.30637723399922834,
  "spec/lib/gitlab/log_timestamp_formatter_spec.rb": 0.2790413359998638,
  "spec/serializers/integrations/project_serializer_spec.rb": 0.2801132360000338,
  "spec/serializers/rollout_statuses/ingress_entity_spec.rb": 0.28532816599999933
}

Knapsack global time execution for tests: 23m 05s

Pending: (Failures listed here are expected and do not affect your suite's status)

  1) Ci::CreatePipelineService#execute Pipeline for external pull requests when source is external pull request when config has external_pull_requests keywords when external pull request is specified when pull request is created from fork does not create an external pull request pipeline
     # Not yet implemented
     # ./spec/services/ci/create_pipeline_service_spec.rb:1250

  2) Ci::PipelineArtifactUploader behaves like builds correct paths #upload_path behaves like matches the method pattern 
     # No pattern provided, skipping.
     # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8

  3) Ci::PipelineArtifactUploader behaves like builds correct paths #relative_path is relative
     # Path not set, skipping.
     # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:40

  4) Ci::PipelineArtifactUploader behaves like builds correct paths .absolute_path behaves like matches the method pattern 
     # No pattern provided, skipping.
     # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8

  5) Ci::PipelineArtifactUploader behaves like builds correct paths .base_dir behaves like matches the method pattern 
     # No pattern provided, skipping.
     # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8

  6) Ci::PipelineArtifactUploader when object store is REMOTE behaves like builds correct paths #cache_dir behaves like matches the method pattern 
     # No pattern provided, skipping.
     # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8

  7) Ci::PipelineArtifactUploader when object store is REMOTE behaves like builds correct paths #work_dir behaves like matches the method pattern 
     # No pattern provided, skipping.
     # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8

  8) Ci::PipelineArtifactUploader when object store is REMOTE behaves like builds correct paths #upload_path behaves like matches the method pattern 
     # No pattern provided, skipping.
     # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8

  9) Ci::PipelineArtifactUploader when object store is REMOTE behaves like builds correct paths #relative_path is relative
     # Path not set, skipping.
     # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:40

  10) Ci::PipelineArtifactUploader when object store is REMOTE behaves like builds correct paths .absolute_path behaves like matches the method pattern 
     # No pattern provided, skipping.
     # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8

  11) Ci::PipelineArtifactUploader when object store is REMOTE behaves like builds correct paths .base_dir behaves like matches the method pattern 
     # No pattern provided, skipping.
     # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8

  12) Database::MultipleDatabasesHelpers .with_added_ci_connection when only a single database is setup connects Ci::ApplicationRecord to the main database for the duration of the block
     # Skipping because some of the extra databases [:ci] are setup
     # ./spec/support_specs/database/multiple_databases_helpers_spec.rb:89

Finished in 24 minutes 8 seconds (files took 48.52 seconds to load)
3300 examples, 0 failures, 12 pending

Randomized with seed 52743

[TEST PROF INFO] Time spent in factories: 09:29.602 (39.19% of total time)
RSpec exited with 0.
No examples to retry, congrats!
section_end:1712783591:step_script
section_start:1712783591:after_script
Running after_script
Running after script...
$ source scripts/utils.sh
$ bundle exec gem list gitlab_quality-test_tooling
gitlab_quality-test_tooling (1.21.1)
$ section_start "relate-failure-issue" "Report test failures" # collapsed multi-line command
section_start:1712783593:relate-failure-issue[collapsed=true]
Report test failures
section_end:1712783593:relate-failure-issue

$ section_start "flaky-test-issues" "Report test flakiness" # collapsed multi-line command
section_start:1712783593:flaky-test-issues[collapsed=true]
Report test flakiness
section_end:1712783593:flaky-test-issues

$ section_start "slow-test-issues" "Report test slowness" # collapsed multi-line command
section_start:1712783593:slow-test-issues[collapsed=true]
Report test slowness
section_end:1712783593:slow-test-issues

$ section_start "slow-test-merge-request-report-note" "Report test slowness in MR note" # collapsed multi-line command
section_start:1712783593:slow-test-merge-request-report-note[collapsed=true]
Report test slowness in MR note
Reporting slow tests in MR 144819
=> Reporting 3300 tests in rspec/rspec-6597627953.json
section_end:1712783594:slow-test-merge-request-report-note

$ section_start "knapsack-report-issues" "Report test files close to timing out" # collapsed multi-line command
section_start:1712783594:knapsack-report-issues[collapsed=true]
Report test files close to timing out
Reporting spec file exceeding Knapsack expectaton issues in project `gitlab-org/gitlab` via the API at `https://gitlab.com/api/v4`.
=> Reporting 0 spec files exceeding Knapsack expectation.
section_end:1712783596:knapsack-report-issues

$ tooling/bin/push_job_metrics || true
[job-metrics] Pushing job metrics file for the CI/CD job.
[job-metrics] Pushed 4 CI job metric entries to InfluxDB.
section_end:1712783597:after_script
section_start:1712783597:archive_cache
Saving cache for successful job
Not uploading cache ruby-gems-debian-bookworm-ruby-3.1-17 due to policy
section_end:1712783597:archive_cache
section_start:1712783597:upload_artifacts_on_success
Uploading artifacts for successful job
Uploading artifacts...
auto_explain/: found 3 matching artifact files and directories 
coverage/: found 5 matching artifact files and directories 
crystalball/: found 2 matching artifact files and directories 
WARNING: deprecations/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 
knapsack/: found 4 matching artifact files and directories 
rspec/: found 16 matching artifact files and directories 
WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 
log/*.log: found 16 matching artifact files and directories 
WARNING: Upload request redirected                  location=https://gitlab.com/api/v4/jobs/6597627953/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com
WARNING: Retrying...                                context=artifacts-uploader error=request redirected
Uploading artifacts as "archive" to coordinator... 201 Created  id=6597627953 responseStatus=201 Created token=glcbt-65
Uploading artifacts...
rspec/rspec-*.xml: found 1 matching artifact files and directories 
WARNING: Upload request redirected                  location=https://gitlab.com/api/v4/jobs/6597627953/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com
WARNING: Retrying...                                context=artifacts-uploader error=request redirected
Uploading artifacts as "junit" to coordinator... 201 Created  id=6597627953 responseStatus=201 Created token=glcbt-65
section_end:1712783603:upload_artifacts_on_success
section_start:1712783603:cleanup_file_variables
Cleaning up project directory and file based variables
section_end:1712783604:cleanup_file_variables
Job succeeded