Running with gitlab-runner 16.9.1 (782c6ecb)
  on green-4.private.runners-manager.gitlab.com/gitlab.com/gitlab-org rpvz2FF9, system ID: s_d704414ba02a
  feature flags: FF_NETWORK_PER_BUILD:true, FF_USE_IMPROVED_URL_MASKING:true
section_start:1709877886:resolve_secrets
Resolving secrets
section_end:1709877886:resolve_secrets
section_start:1709877886: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:b6c412dc298714b5c26feca1330d8f743b48caf0b1feeadfd554d7d446f985a5 for redis:6.2-alpine with digest redis@sha256:51d6c56749a4243096327e3fb964a48ed92254357108449cb6e23999c37773c5 ...
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:c162b8fa17a58f014239a9b50abc767bdc8386e942cdea6cae2e6b397b8517c3 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:e573ddd38ed10fe9b9feed8d24fd63f6ea29b9ddf14e3bf208d8a74c0377eccc ...
section_end:1709877893:prepare_executor
section_start:1709877893:prepare_script
Preparing environment
Running on runner-rpvz2ff9-project-278964-concurrent-0 via runner-rpvz2ff9-private-1709870256-f945763a...
section_end:1709877894:prepare_script
section_start:1709877894:get_sources
Getting source from Git repository
Skipping Git repository setup
Skipping Git checkout
Skipping Git submodules setup
section_end:1709877894:get_sources
section_start:1709877894:restore_cache
Restoring cache
Checking cache for ruby-gems-debian-bookworm-ruby-3.1-17...
cache.zip is up to date                            
Successfully extracted cache
section_end:1709877911:restore_cache
section_start:1709877911:download_artifacts
Downloading artifacts
Downloading artifacts for clone-gitlab-repo (6348594283)...
Downloading artifacts from coordinator... ok        host=storage.googleapis.com id=6348594283 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 (6348594306)...
Downloading artifacts from coordinator... ok        host=storage.googleapis.com id=6348594306 responseStatus=200 OK token=glcbt-65
Downloading artifacts for retrieve-tests-metadata (6348594318)...
Downloading artifacts from coordinator... ok        host=storage.googleapis.com id=6348594318 responseStatus=200 OK token=glcbt-65
Downloading artifacts for setup-test-env (6348594313)...
Downloading artifacts from coordinator... ok        host=storage.googleapis.com id=6348594313 responseStatus=200 OK token=glcbt-65
section_end:1709877944:download_artifacts
section_start:1709877944:step_script
Executing "step_script" stage of the job script
Using docker image sha256:c162b8fa17a58f014239a9b50abc767bdc8386e942cdea6cae2e6b397b8517c3 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:e573ddd38ed10fe9b9feed8d24fd63f6ea29b9ddf14e3bf208d8a74c0377eccc ...
$ 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:1709877945: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.143.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.0
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 charlock_holmes 0.7.7
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.10.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.11.0
Using gitaly 16.10.0.pre.rc1
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.6.0
Using request_store 1.5.1
Using gitlab-experiment 0.9.1
Using gitlab-fog-azure-rm 1.8.0
Using rb_sys 0.9.86
Using gitlab-glfm-markdown 0.0.13 (x86_64-linux)
Using language_server-protocol 3.17.0.3
Using parallel 1.22.1
Using parser 3.3.0.2
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.0
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.17.0
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.1
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.0.1
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.21.1
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.10.1
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.4.14
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.0
Using rspec-retry 0.6.2
Using rspec_junit_formatter 0.6.0
Using rspec_profiling 0.0.8
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 1.6.2
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 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.1
Using test_file_finder 0.2.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.22.0
Using wikicloth 0.8.1
Using yajl-ruby 1.4.3
Bundle complete! 331 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 14 seconds.
section_end:1709877963: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:1709877963: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 53 seconds.
SELECT pg_catalog.set_config('search_path', '', false);
CREATE DATABASE praefect_test ENCODING 'UTF8';
section_end:1709878016: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 0 seconds.
$ section_start "gitaly-test-spawn" "Spawning Gitaly"; scripts/gitaly-test-spawn; section_end "gitaly-test-spawn"
section_start:1709878016: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:1709878020: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:1709878021:rspec[collapsed=false]
RSpec
[06:07:01] 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_29_32_278964_report.json
FLAKY_RSPEC_SUITE_REPORT_PATH: rspec/flaky/report-suite.json
FLAKY_RSPEC_REPORT_PATH: rspec/flaky/all_rspec_unit_pg14_29_32_278964_report.json
NEW_FLAKY_RSPEC_REPORT_PATH: rspec/flaky/new_rspec_unit_pg14_29_32_278964_report.json
RSPEC_SKIPPED_TESTS_REPORT_PATH: rspec/skipped_tests-6348595049.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 43 minutes 53.57 seconds.
Expected duration for tests:

{
  "spec/services/merge_requests/refresh_service_spec.rb": 270.05045700398364,
  "spec/rubocop/cop/rspec/feature_category_spec.rb": 223.02914831133563,
  "spec/services/todo_service_spec.rb": 162.0398129542728,
  "spec/lib/banzai/filter/references/issue_reference_filter_spec.rb": 107.89080782712458,
  "spec/helpers/projects_helper_spec.rb": 94.76700380447805,
  "spec/services/auto_merge/base_service_spec.rb": 77.42004677721874,
  "spec/services/merge_requests/mergeability_check_service_spec.rb": 72.14846108407514,
  "spec/models/protected_branch_spec.rb": 63.328965733716544,
  "spec/lib/gitlab/background_migration/disable_legacy_open_source_license_for_one_member_no_repo_projects_spec.rb": 54.57433147222059,
  "spec/lib/gitlab/database/migrations/background_migration_helpers_spec.rb": 51.81930676050034,
  "spec/models/concerns/milestoneish_spec.rb": 47.25230903896107,
  "spec/views/search/_results.html.haml_spec.rb": 43.4877919772999,
  "spec/scripts/internal_events/cli_spec.rb": 40.838468416059214,
  "spec/finders/ci/runner_jobs_finder_spec.rb": 36.84913962693073,
  "spec/policies/commit_policy_spec.rb": 35.31250801624751,
  "spec/services/projects/update_repository_storage_service_spec.rb": 32.84635409066733,
  "spec/lib/gitlab/project_authorizations_spec.rb": 31.91691729574547,
  "spec/models/container_registry/protection/rule_spec.rb": 30.62100552982248,
  "spec/models/merge_request_diff_commit_spec.rb": 28.055751908064295,
  "spec/lib/container_registry/client_spec.rb": 27.52734532819897,
  "spec/lib/bulk_imports/clients/http_spec.rb": 26.365555913056255,
  "spec/finders/clusters/knative_services_finder_spec.rb": 25.489986942697882,
  "spec/policies/ci/runner_manager_policy_spec.rb": 23.983756336928646,
  "spec/lib/api/helpers/packages/dependency_proxy_helpers_spec.rb": 23.38056411433475,
  "spec/services/post_receive_service_spec.rb": 22.609985513105237,
  "spec/policies/todo_policy_spec.rb": 21.478068504469555,
  "spec/models/concerns/project_api_compatibility_spec.rb": 21.127687838496893,
  "spec/lib/gitlab/cache/json_caches/json_keyed_spec.rb": 19.838595664280632,
  "spec/helpers/tab_helper_spec.rb": 19.57974554425268,
  "spec/workers/users/deactivate_dormant_users_worker_spec.rb": 18.746772096334414,
  "spec/lib/gitlab/ci/trace/checksum_spec.rb": 17.704666885306672,
  "spec/services/merge_requests/retarget_chain_service_spec.rb": 17.530310338476745,
  "spec/lib/extracts_path_spec.rb": 16.720739055621117,
  "spec/initializers/load_balancing_spec.rb": 16.485626954243017,
  "spec/workers/merge_request_cleanup_refs_worker_spec.rb": 15.603499240545505,
  "spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb": 15.494411766123486,
  "spec/uploaders/packages/package_file_uploader_spec.rb": 14.811466924693105,
  "spec/lib/gitlab/gitaly_client/ref_service_spec.rb": 14.573511888322122,
  "spec/lib/gitlab/diff/position_tracer/image_strategy_spec.rb": 13.933859544530138,
  "spec/lib/sidebars/projects/menus/infrastructure_menu_spec.rb": 13.759919031963305,
  "spec/lib/sidebars/projects/menus/settings_menu_spec.rb": 13.36460822422617,
  "spec/models/protected_branch/merge_access_level_spec.rb": 12.916103019555871,
  "spec/services/ci/pipeline_schedules/create_service_spec.rb": 12.723521721032593,
  "spec/serializers/commit_entity_spec.rb": 12.27541365957521,
  "spec/lib/gitlab/ci/pipeline/chain/populate_metadata_spec.rb": 12.061374006003524,
  "spec/lib/gitlab/mail_room/mail_room_spec.rb": 11.67373189244441,
  "spec/lib/gitlab/template/merge_request_template_spec.rb": 11.567523496591399,
  "spec/rubocop/cop/graphql/descriptions_spec.rb": 11.129977536695698,
  "spec/lib/gitlab/exclusive_lease_helpers/sleeping_lock_spec.rb": 10.983328194692366,
  "spec/services/security/ci_configuration/sast_create_service_spec.rb": 10.721455187608353,
  "spec/services/ci/runners/register_runner_service_spec.rb": 10.595332734090384,
  "spec/serializers/merge_request_diff_entity_spec.rb": 10.190715275431478,
  "spec/lib/gitlab/database/health_status/indicators/patroni_apdex_spec.rb": 9.978068799368822,
  "spec/lib/gitlab/consul/internal_spec.rb": 9.766260063259638,
  "spec/finders/keys_finder_spec.rb": 9.472474433992048,
  "spec/lib/gitlab/database/dictionary_spec.rb": 9.39933882260502,
  "spec/models/snippet_statistics_spec.rb": 9.26583333812744,
  "spec/services/service_ping/submit_service_ping_service_spec.rb": 8.903282812812986,
  "spec/services/ci/build_erase_service_spec.rb": 8.808241062325166,
  "spec/lib/gitlab/ci/build/step_spec.rb": 8.60803911091784,
  "spec/lib/gitlab/github_import/importer/single_endpoint_diff_notes_importer_spec.rb": 8.519820192730126,
  "spec/services/projects/deploy_tokens/create_service_spec.rb": 8.315113217168696,
  "spec/services/quick_actions/target_service_spec.rb": 8.246908460484914,
  "spec/services/projects/download_service_spec.rb": 7.970128400748459,
  "spec/models/integrations/campfire_spec.rb": 7.920459833881669,
  "spec/graphql/resolvers/board_resolver_spec.rb": 7.674898476182443,
  "spec/models/x509_certificate_spec.rb": 7.666963731242987,
  "spec/lib/gitlab/ci/pipeline/expression/parser_spec.rb": 7.408154142529803,
  "spec/models/concerns/use_sql_function_for_primary_key_lookups_spec.rb": 7.398871537346372,
  "spec/models/clusters/agents/authorizations/user_access/project_authorization_spec.rb": 7.142206565547229,
  "spec/tooling/graphql/docs/renderer_spec.rb": 7.129280166346711,
  "spec/lib/gitlab/database/async_constraints/postgres_async_constraint_validation_spec.rb": 6.958496940480684,
  "spec/lib/gitlab/ci/pipeline/expression/lexer_spec.rb": 6.845420680208215,
  "spec/services/users/assigned_issues_count_service_spec.rb": 6.723373370757965,
  "spec/views/layouts/terms.html.haml_spec.rb": 6.66057232494669,
  "spec/lib/gitlab/email/service_desk_email_spec.rb": 6.484599019168486,
  "spec/models/packages/sem_ver_spec.rb": 6.4220391351489905,
  "spec/models/ci/commit_with_pipeline_spec.rb": 6.3256325983188955,
  "spec/workers/bulk_imports/pipeline_batch_worker_spec.rb": 6.248149500075996,
  "spec/finders/autocomplete/group_users_finder_spec.rb": 6.115291372435008,
  "spec/lib/gitlab/cache/request_cache_spec.rb": 6.0637332525164,
  "spec/models/milestone_note_spec.rb": 5.911962468415158,
  "spec/finders/releases/evidence_pipeline_finder_spec.rb": 5.851034346333515,
  "spec/lib/gitlab/github_import/importer/events/cross_referenced_spec.rb": 5.788364495984054,
  "spec/lib/gitlab/popen/runner_spec.rb": 5.6405287353558595,
  "spec/services/projects/import_export/parallel_export_service_spec.rb": 5.570000933923638,
  "spec/lib/gitlab/ci/config/entry/reports/coverage_report_spec.rb": 5.460330605858714,
  "spec/lib/gitlab/usage_data_counters/note_counter_spec.rb": 5.377471574925911,
  "spec/lib/gitlab/auth/user_access_denied_reason_spec.rb": 5.26781215950925,
  "spec/lib/gitlab/endpoint_attributes_spec.rb": 5.159507541552851,
  "spec/lib/gitlab/reactive_cache_set_cache_spec.rb": 5.1203524553726165,
  "spec/policies/projects/branch_rule_policy_spec.rb": 5.024196481857994,
  "spec/lib/bitbucket/representation/pull_request_comment_spec.rb": 4.9275809438330445,
  "spec/services/ci/create_pipeline_service/parameter_content_spec.rb": 4.90835732885689,
  "spec/models/ci/build_trace_spec.rb": 4.778899819035548,
  "spec/lib/gitlab/sanitizers/svg_spec.rb": 4.773440332232588,
  "spec/models/concerns/access_requestable_spec.rb": 4.640204706000652,
  "spec/lib/gitlab/import_export/repo_saver_spec.rb": 4.632090086303809,
  "spec/services/packages/composer/composer_json_service_spec.rb": 4.525143757410636,
  "spec/lib/gitlab/ci/reports/test_reports_comparer_spec.rb": 4.479385412184678,
  "spec/graphql/types/snippets/blob_viewer_type_spec.rb": 4.372227898541444,
  "spec/tasks/gitlab/sidekiq_rake_spec.rb": 4.370533569741628,
  "spec/models/concerns/clusters/agents/authorizations/ci_access/config_scopes_spec.rb": 4.279503171428167,
  "spec/graphql/resolvers/merge_requests_count_resolver_spec.rb": 4.23378441602549,
  "spec/services/branches/validate_new_service_spec.rb": 4.159718920042314,
  "spec/lib/gitlab/database/schema_cache_with_renamed_table_spec.rb": 4.1318513129190055,
  "spec/lib/file_size_validator_spec.rb": 4.064959498521869,
  "spec/services/update_container_registry_info_service_spec.rb": 4.007917875977217,
  "spec/helpers/sessions_helper_spec.rb": 3.9663314025756673,
  "spec/lib/gitlab/ci/variables/builder/project_spec.rb": 3.886149282530117,
  "spec/lib/gitlab/tracking/service_ping_context_spec.rb": 3.8462990675301714,
  "spec/helpers/award_emoji_helper_spec.rb": 3.809731370597749,
  "spec/lib/gitlab/database/load_balancing/service_discovery/sampler_spec.rb": 3.7634843801533173,
  "spec/models/work_items/widgets/assignees_spec.rb": 3.7218437273960934,
  "spec/lib/sidebars/admin/menus/applications_menu_spec.rb": 3.6798280076901633,
  "spec/lib/gitlab/background_migration/batching_strategies/dismissed_vulnerabilities_strategy_spec.rb": 3.649764406948808,
  "spec/components/pajamas/card_component_spec.rb": 3.5887576095998757,
  "spec/channels/noteable/notes_channel_spec.rb": 3.5340613641627883,
  "spec/services/packages/create_temporary_package_service_spec.rb": 3.494072298098877,
  "spec/models/packages/event_spec.rb": 3.4579736471211175,
  "spec/serializers/rollout_status_entity_spec.rb": 3.4089752721743314,
  "spec/lib/gitlab/database/async_indexes/index_creator_spec.rb": 3.3718457739360757,
  "spec/lib/gitlab/issuable/clone/copy_resource_events_service_spec.rb": 3.347564341250773,
  "spec/workers/packages/mark_package_files_for_destruction_worker_spec.rb": 3.2993041447980405,
  "spec/graphql/mutations/todos/restore_spec.rb": 3.2600689213124117,
  "spec/policies/project_hook_policy_spec.rb": 3.2414647408042905,
  "spec/services/alert_management/http_integrations/update_service_spec.rb": 3.17829105406003,
  "spec/lib/bulk_imports/groups/pipelines/namespace_settings_pipeline_spec.rb": 3.1626197307184416,
  "spec/services/ci/create_pipeline_service/artifacts_spec.rb": 3.1002072940144343,
  "spec/services/packages/update_tags_service_spec.rb": 3.059532236747715,
  "spec/workers/ci/archive_trace_worker_spec.rb": 3.0153533305764473,
  "spec/lib/gitlab/seeders/ci/runner/runner_fleet_pipeline_seeder_spec.rb": 2.9704355848881647,
  "spec/lib/gitlab/gitaly_client/cleanup_service_spec.rb": 2.9411894769552465,
  "spec/lib/gitlab/import_export/group/object_builder_spec.rb": 2.91236131765461,
  "spec/lib/bitbucket/representation/comment_spec.rb": 2.8458737135243544,
  "spec/finders/ci/runner_managers_finder_spec.rb": 2.8301087318013796,
  "spec/lib/gitlab/usage/metrics/instrumentations/project_imports_creators_metric_spec.rb": 2.7980365600590074,
  "spec/lib/gitlab/plantuml_spec.rb": 2.7617562132073368,
  "spec/models/projects/wiki_repository_spec.rb": 2.7109969409014516,
  "spec/lib/gitlab/slash_commands/presenters/issue_close_spec.rb": 2.6873288557792705,
  "spec/workers/pipeline_hooks_worker_spec.rb": 2.6593810522180013,
  "spec/services/packages/remove_tag_service_spec.rb": 2.6107966595645373,
  "spec/lib/gitlab/legacy_github_import/release_formatter_spec.rb": 2.5846309307816595,
  "spec/services/ci/build_unschedule_service_spec.rb": 2.5501070122489984,
  "spec/lib/gitlab/database/type/color_spec.rb": 2.5231773799869694,
  "spec/lib/gitlab/github_import/importer/events/reopened_spec.rb": 2.4932184151733505,
  "spec/lib/gitlab/import_export/wiki_repo_saver_spec.rb": 2.469214203757665,
  "spec/services/incident_management/issuable_escalation_statuses/after_update_service_spec.rb": 2.4229908713455064,
  "spec/models/user_mentions/commit_user_mention_spec.rb": 2.403387861827471,
  "spec/serializers/ci/daily_build_group_report_result_entity_spec.rb": 2.3498565128091435,
  "spec/graphql/resolvers/ci/test_suite_resolver_spec.rb": 2.3107083304842875,
  "spec/rubocop/cop/migration/migration_record_spec.rb": 2.2674477374973496,
  "spec/services/admin/abuse_report_labels/create_service_spec.rb": 2.2576093240378547,
  "spec/services/ci/build_cancel_service_spec.rb": 2.2137375396146943,
  "spec/lib/gitlab/ci/reports/security/locations/secret_detection_spec.rb": 2.1917761970201415,
  "spec/lib/gitlab/sidekiq_middleware/concurrency_limit/workers_map_spec.rb": 2.1487893309199038,
  "spec/lib/gitlab/pagination/keyset/in_operator_optimization/array_scope_columns_spec.rb": 2.1152874607630237,
  "spec/services/packages/npm/deprecate_package_service_spec.rb": 2.110140775668505,
  "spec/graphql/types/color_type_spec.rb": 2.0562834581910896,
  "spec/lib/gitlab/ci/config/entry/release/assets_spec.rb": 2.046114564349234,
  "spec/lib/gitlab/github_gists_import/status_spec.rb": 1.98964968177404,
  "spec/lib/gitlab/circuit_breaker/notifier_spec.rb": 1.9886289182749946,
  "spec/lib/gitlab/github_import/clients/proxy_spec.rb": 1.9330463428550084,
  "spec/lib/gitlab/ci/status/waiting_for_callback_spec.rb": 1.9143250834862706,
  "spec/lib/constraints/admin_constrainer_spec.rb": 1.9083705063830037,
  "spec/models/notes/note_metadata_spec.rb": 1.8616211234024655,
  "spec/workers/pages_domain_verification_worker_spec.rb": 1.8483218230718625,
  "spec/graphql/types/timeframe_type_spec.rb": 1.8082817264855153,
  "spec/services/ci/queue/pending_builds_strategy_spec.rb": 1.793586834938221,
  "spec/services/projects/batch_open_issues_count_service_spec.rb": 1.7480850180776342,
  "spec/views/notify/push_to_merge_request_email.text.haml_spec.rb": 1.7313760176112414,
  "spec/graphql/mutations/users/saved_replies/create_spec.rb": 1.686953411277936,
  "spec/lib/gitlab/kubernetes/config_map_spec.rb": 1.6627172356020714,
  "spec/rubocop/cop/gitlab/avoid_feature_get_spec.rb": 1.6426425791335024,
  "spec/views/admin/projects/_form.html.haml_spec.rb": 1.612625324454548,
  "spec/lib/gitlab/checks/force_push_spec.rb": 1.5657218277995648,
  "spec/lib/gitlab/kubernetes/ingress_spec.rb": 1.541797253985998,
  "spec/workers/jira_connect/sync_feature_flags_worker_spec.rb": 1.5192971764130796,
  "spec/routing/user_routing_spec.rb": 1.4821766870948854,
  "spec/lib/slack/block_kit/app_home_opened_spec.rb": 1.4705894971829572,
  "spec/rubocop/cop/migration/background_migration_missing_active_concern_spec.rb": 1.429112557921411,
  "spec/validators/js_regex_validator_spec.rb": 1.419171331733882,
  "spec/lib/gitlab/word_diff/positions_counter_spec.rb": 1.3794493970890291,
  "spec/lib/gitlab/usage/metrics/instrumentations/count_project_snippets_metric_spec.rb": 1.3479559156810579,
  "spec/views/shared/milestones/_top.html.haml_spec.rb": 1.3154716284479464,
  "spec/presenters/dev_ops_report/metric_presenter_spec.rb": 1.2946808062706878,
  "spec/services/export_csv/map_export_fields_service_spec.rb": 1.2495381197928868,
  "spec/lib/banzai/pipeline/post_process_pipeline_spec.rb": 1.2410247673007873,
  "spec/views/devise/shared/_signup_omniauth_provider_list_spec.rb": 1.2119758814727937,
  "spec/graphql/types/incident_management/timeline_event_tag_type_spec.rb": 1.185999570089142,
  "spec/workers/todos_destroyer/entity_leave_worker_spec.rb": 1.1628142447556362,
  "spec/lib/google_api/auth_spec.rb": 1.1400122173059204,
  "spec/graphql/types/container_respository_tags_sort_enum_spec.rb": 1.1192482507879078,
  "spec/graphql/types/merge_requests/mergeability_check_type_spec.rb": 1.081098587517364,
  "spec/models/concerns/cross_database_modification_spec.rb": 1.060686890173097,
  "spec/models/group/crm_settings_spec.rb": 1.0203921124271038,
  "spec/helpers/environment_helper_spec.rb": 1.0200130181243943,
  "spec/lib/bitbucket_server/retry_with_delay_spec.rb": 0.9760517808094189,
  "spec/graphql/resolvers/alert_management/alert_status_counts_resolver_spec.rb": 0.9601000845425158,
  "spec/lib/gitlab/tracking/helpers/weak_password_error_event_spec.rb": 0.9312802548037938,
  "spec/graphql/types/kas/agent_metadata_type_spec.rb": 0.9177022828192313,
  "spec/graphql/types/ci/test_report_summary_type_spec.rb": 0.8858772152173015,
  "spec/lib/gitlab/github_import/importer/issue_and_label_links_importer_spec.rb": 0.8738286612877152,
  "spec/graphql/types/label_type_spec.rb": 0.8324772402757596,
  "spec/serializers/serverless/domain_entity_spec.rb": 0.797442482174677,
  "spec/workers/concerns/cluster_agent_queue_spec.rb": 0.7801091513004096,
  "spec/lib/gitlab/sidekiq_middleware/pause_control/client_spec.rb": 0.7527868181943009,
  "spec/rubocop/qa_helpers_spec.rb": 0.7409635228263782,
  "spec/policies/concerns/archived_abilities_spec.rb": 0.7132050636059524,
  "spec/graphql/types/security/codequality_reports_comparer/report_type_spec.rb": 0.7075047504105457,
  "spec/lib/mattermost/command_spec.rb": 0.6917164080496007,
  "spec/graphql/types/ci/catalog/resource_sort_enum_spec.rb": 0.6848753232449867,
  "spec/graphql/types/permission_types/container_repository_spec.rb": 0.6594447006088184,
  "spec/graphql/types/packages/composer/metadatum_type_spec.rb": 0.6523829045790621,
  "spec/lib/bulk_imports/groups/extractors/subgroups_extractor_spec.rb": 0.6351481525727692,
  "spec/helpers/deploy_tokens_helper_spec.rb": 0.5862920122186904,
  "spec/lib/gitlab/error_tracking/log_formatter_spec.rb": 0.5385898435984343,
  "spec/graphql/types/permission_types/ci/pipeline_spec.rb": 0.5055066860942351,
  "spec/lib/gitlab/database/async_constraints_spec.rb": 0.4881950308478177,
  "spec/lib/gitlab/usage/metrics/instrumentations/uuid_metric_spec.rb": 0.47524635334693177,
  "spec/lib/gitlab/ci/status/bridge/waiting_for_resource_spec.rb": 0.4643722898198481,
  "spec/graphql/types/work_items/widgets/notifications_type_spec.rb": 0.45333175992195485,
  "spec/lib/gitlab/saas_spec.rb": 0.4459208211258586,
  "spec/lib/gitlab/memory/watchdog/handlers/puma_handler_spec.rb": 0.4326524736817772,
  "spec/graphql/types/ci/group_variable_connection_type_spec.rb": 0.4162846591620072
}

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-6348595049.json --format RspecJunitFormatter --out rspec/rspec-6348595049.xml --fail-fast=20 --tag ~quarantine --tag ~level:background_migration --tag ~click_house --tag ~real_ai_request -- spec/services/merge_requests/refresh_service_spec.rb spec/rubocop/cop/rspec/feature_category_spec.rb spec/services/todo_service_spec.rb spec/lib/banzai/filter/references/issue_reference_filter_spec.rb spec/helpers/projects_helper_spec.rb spec/services/auto_merge/base_service_spec.rb spec/services/merge_requests/mergeability_check_service_spec.rb spec/models/protected_branch_spec.rb spec/lib/gitlab/background_migration/disable_legacy_open_source_license_for_one_member_no_repo_projects_spec.rb spec/lib/gitlab/database/migrations/background_migration_helpers_spec.rb spec/models/concerns/milestoneish_spec.rb spec/views/search/_results.html.haml_spec.rb spec/scripts/internal_events/cli_spec.rb spec/finders/ci/runner_jobs_finder_spec.rb spec/policies/commit_policy_spec.rb spec/services/projects/update_repository_storage_service_spec.rb spec/lib/gitlab/project_authorizations_spec.rb spec/models/container_registry/protection/rule_spec.rb spec/models/merge_request_diff_commit_spec.rb spec/lib/container_registry/client_spec.rb spec/lib/bulk_imports/clients/http_spec.rb spec/finders/clusters/knative_services_finder_spec.rb spec/policies/ci/runner_manager_policy_spec.rb spec/lib/api/helpers/packages/dependency_proxy_helpers_spec.rb spec/services/post_receive_service_spec.rb spec/policies/todo_policy_spec.rb spec/models/concerns/project_api_compatibility_spec.rb spec/lib/gitlab/cache/json_caches/json_keyed_spec.rb spec/helpers/tab_helper_spec.rb spec/workers/users/deactivate_dormant_users_worker_spec.rb spec/lib/gitlab/ci/trace/checksum_spec.rb spec/services/merge_requests/retarget_chain_service_spec.rb spec/lib/extracts_path_spec.rb spec/initializers/load_balancing_spec.rb spec/workers/merge_request_cleanup_refs_worker_spec.rb spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb spec/uploaders/packages/package_file_uploader_spec.rb spec/lib/gitlab/gitaly_client/ref_service_spec.rb spec/lib/gitlab/diff/position_tracer/image_strategy_spec.rb spec/lib/sidebars/projects/menus/infrastructure_menu_spec.rb spec/lib/sidebars/projects/menus/settings_menu_spec.rb spec/models/protected_branch/merge_access_level_spec.rb spec/services/ci/pipeline_schedules/create_service_spec.rb spec/serializers/commit_entity_spec.rb spec/lib/gitlab/ci/pipeline/chain/populate_metadata_spec.rb spec/lib/gitlab/mail_room/mail_room_spec.rb spec/lib/gitlab/template/merge_request_template_spec.rb spec/rubocop/cop/graphql/descriptions_spec.rb spec/lib/gitlab/exclusive_lease_helpers/sleeping_lock_spec.rb spec/services/security/ci_configuration/sast_create_service_spec.rb spec/services/ci/runners/register_runner_service_spec.rb spec/serializers/merge_request_diff_entity_spec.rb spec/lib/gitlab/database/health_status/indicators/patroni_apdex_spec.rb spec/lib/gitlab/consul/internal_spec.rb spec/finders/keys_finder_spec.rb spec/lib/gitlab/database/dictionary_spec.rb spec/models/snippet_statistics_spec.rb spec/services/service_ping/submit_service_ping_service_spec.rb spec/services/ci/build_erase_service_spec.rb spec/lib/gitlab/ci/build/step_spec.rb spec/lib/gitlab/github_import/importer/single_endpoint_diff_notes_importer_spec.rb spec/services/projects/deploy_tokens/create_service_spec.rb spec/services/quick_actions/target_service_spec.rb spec/services/projects/download_service_spec.rb spec/models/integrations/campfire_spec.rb spec/graphql/resolvers/board_resolver_spec.rb spec/models/x509_certificate_spec.rb spec/lib/gitlab/ci/pipeline/expression/parser_spec.rb spec/models/concerns/use_sql_function_for_primary_key_lookups_spec.rb spec/models/clusters/agents/authorizations/user_access/project_authorization_spec.rb spec/tooling/graphql/docs/renderer_spec.rb spec/lib/gitlab/database/async_constraints/postgres_async_constraint_validation_spec.rb spec/lib/gitlab/ci/pipeline/expression/lexer_spec.rb spec/services/users/assigned_issues_count_service_spec.rb spec/views/layouts/terms.html.haml_spec.rb spec/lib/gitlab/email/service_desk_email_spec.rb spec/models/packages/sem_ver_spec.rb spec/models/ci/commit_with_pipeline_spec.rb spec/workers/bulk_imports/pipeline_batch_worker_spec.rb spec/finders/autocomplete/group_users_finder_spec.rb spec/lib/gitlab/cache/request_cache_spec.rb spec/models/milestone_note_spec.rb spec/finders/releases/evidence_pipeline_finder_spec.rb spec/lib/gitlab/github_import/importer/events/cross_referenced_spec.rb spec/lib/gitlab/popen/runner_spec.rb spec/services/projects/import_export/parallel_export_service_spec.rb spec/lib/gitlab/ci/config/entry/reports/coverage_report_spec.rb spec/lib/gitlab/usage_data_counters/note_counter_spec.rb spec/lib/gitlab/auth/user_access_denied_reason_spec.rb spec/lib/gitlab/endpoint_attributes_spec.rb spec/lib/gitlab/reactive_cache_set_cache_spec.rb spec/policies/projects/branch_rule_policy_spec.rb spec/lib/bitbucket/representation/pull_request_comment_spec.rb spec/services/ci/create_pipeline_service/parameter_content_spec.rb spec/models/ci/build_trace_spec.rb spec/lib/gitlab/sanitizers/svg_spec.rb spec/models/concerns/access_requestable_spec.rb spec/lib/gitlab/import_export/repo_saver_spec.rb spec/services/packages/composer/composer_json_service_spec.rb spec/lib/gitlab/ci/reports/test_reports_comparer_spec.rb spec/graphql/types/snippets/blob_viewer_type_spec.rb spec/tasks/gitlab/sidekiq_rake_spec.rb spec/models/concerns/clusters/agents/authorizations/ci_access/config_scopes_spec.rb spec/graphql/resolvers/merge_requests_count_resolver_spec.rb spec/services/branches/validate_new_service_spec.rb spec/lib/gitlab/database/schema_cache_with_renamed_table_spec.rb spec/lib/file_size_validator_spec.rb spec/services/update_container_registry_info_service_spec.rb spec/helpers/sessions_helper_spec.rb spec/lib/gitlab/ci/variables/builder/project_spec.rb spec/lib/gitlab/tracking/service_ping_context_spec.rb spec/helpers/award_emoji_helper_spec.rb spec/lib/gitlab/database/load_balancing/service_discovery/sampler_spec.rb spec/models/work_items/widgets/assignees_spec.rb spec/lib/sidebars/admin/menus/applications_menu_spec.rb spec/lib/gitlab/background_migration/batching_strategies/dismissed_vulnerabilities_strategy_spec.rb spec/components/pajamas/card_component_spec.rb spec/channels/noteable/notes_channel_spec.rb spec/services/packages/create_temporary_package_service_spec.rb spec/models/packages/event_spec.rb spec/serializers/rollout_status_entity_spec.rb spec/lib/gitlab/database/async_indexes/index_creator_spec.rb spec/lib/gitlab/issuable/clone/copy_resource_events_service_spec.rb spec/workers/packages/mark_package_files_for_destruction_worker_spec.rb spec/graphql/mutations/todos/restore_spec.rb spec/policies/project_hook_policy_spec.rb spec/services/alert_management/http_integrations/update_service_spec.rb spec/lib/bulk_imports/groups/pipelines/namespace_settings_pipeline_spec.rb spec/services/ci/create_pipeline_service/artifacts_spec.rb spec/services/packages/update_tags_service_spec.rb spec/workers/ci/archive_trace_worker_spec.rb spec/lib/gitlab/seeders/ci/runner/runner_fleet_pipeline_seeder_spec.rb spec/lib/gitlab/gitaly_client/cleanup_service_spec.rb spec/lib/gitlab/import_export/group/object_builder_spec.rb spec/lib/bitbucket/representation/comment_spec.rb spec/finders/ci/runner_managers_finder_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/project_imports_creators_metric_spec.rb spec/lib/gitlab/plantuml_spec.rb spec/models/projects/wiki_repository_spec.rb spec/lib/gitlab/slash_commands/presenters/issue_close_spec.rb spec/workers/pipeline_hooks_worker_spec.rb spec/services/packages/remove_tag_service_spec.rb spec/lib/gitlab/legacy_github_import/release_formatter_spec.rb spec/services/ci/build_unschedule_service_spec.rb spec/lib/gitlab/database/type/color_spec.rb spec/lib/gitlab/github_import/importer/events/reopened_spec.rb spec/lib/gitlab/import_export/wiki_repo_saver_spec.rb spec/services/incident_management/issuable_escalation_statuses/after_update_service_spec.rb spec/models/user_mentions/commit_user_mention_spec.rb spec/serializers/ci/daily_build_group_report_result_entity_spec.rb spec/graphql/resolvers/ci/test_suite_resolver_spec.rb spec/rubocop/cop/migration/migration_record_spec.rb spec/services/admin/abuse_report_labels/create_service_spec.rb spec/services/ci/build_cancel_service_spec.rb spec/lib/gitlab/ci/reports/security/locations/secret_detection_spec.rb spec/lib/gitlab/sidekiq_middleware/concurrency_limit/workers_map_spec.rb spec/lib/gitlab/pagination/keyset/in_operator_optimization/array_scope_columns_spec.rb spec/services/packages/npm/deprecate_package_service_spec.rb spec/graphql/types/color_type_spec.rb spec/lib/gitlab/ci/config/entry/release/assets_spec.rb spec/lib/gitlab/github_gists_import/status_spec.rb spec/lib/gitlab/circuit_breaker/notifier_spec.rb spec/lib/gitlab/github_import/clients/proxy_spec.rb spec/lib/gitlab/ci/status/waiting_for_callback_spec.rb spec/lib/constraints/admin_constrainer_spec.rb spec/models/notes/note_metadata_spec.rb spec/workers/pages_domain_verification_worker_spec.rb spec/graphql/types/timeframe_type_spec.rb spec/services/ci/queue/pending_builds_strategy_spec.rb spec/services/projects/batch_open_issues_count_service_spec.rb spec/views/notify/push_to_merge_request_email.text.haml_spec.rb spec/graphql/mutations/users/saved_replies/create_spec.rb spec/lib/gitlab/kubernetes/config_map_spec.rb spec/rubocop/cop/gitlab/avoid_feature_get_spec.rb spec/views/admin/projects/_form.html.haml_spec.rb spec/lib/gitlab/checks/force_push_spec.rb spec/lib/gitlab/kubernetes/ingress_spec.rb spec/workers/jira_connect/sync_feature_flags_worker_spec.rb spec/routing/user_routing_spec.rb spec/lib/slack/block_kit/app_home_opened_spec.rb spec/rubocop/cop/migration/background_migration_missing_active_concern_spec.rb spec/validators/js_regex_validator_spec.rb spec/lib/gitlab/word_diff/positions_counter_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/count_project_snippets_metric_spec.rb spec/views/shared/milestones/_top.html.haml_spec.rb spec/presenters/dev_ops_report/metric_presenter_spec.rb spec/services/export_csv/map_export_fields_service_spec.rb spec/lib/banzai/pipeline/post_process_pipeline_spec.rb spec/views/devise/shared/_signup_omniauth_provider_list_spec.rb spec/graphql/types/incident_management/timeline_event_tag_type_spec.rb spec/workers/todos_destroyer/entity_leave_worker_spec.rb spec/lib/google_api/auth_spec.rb spec/graphql/types/container_respository_tags_sort_enum_spec.rb spec/graphql/types/merge_requests/mergeability_check_type_spec.rb spec/models/concerns/cross_database_modification_spec.rb spec/models/group/crm_settings_spec.rb spec/helpers/environment_helper_spec.rb spec/lib/bitbucket_server/retry_with_delay_spec.rb spec/graphql/resolvers/alert_management/alert_status_counts_resolver_spec.rb spec/lib/gitlab/tracking/helpers/weak_password_error_event_spec.rb spec/graphql/types/kas/agent_metadata_type_spec.rb spec/graphql/types/ci/test_report_summary_type_spec.rb spec/lib/gitlab/github_import/importer/issue_and_label_links_importer_spec.rb spec/graphql/types/label_type_spec.rb spec/serializers/serverless/domain_entity_spec.rb spec/workers/concerns/cluster_agent_queue_spec.rb spec/lib/gitlab/sidekiq_middleware/pause_control/client_spec.rb spec/rubocop/qa_helpers_spec.rb spec/policies/concerns/archived_abilities_spec.rb spec/graphql/types/security/codequality_reports_comparer/report_type_spec.rb spec/lib/mattermost/command_spec.rb spec/graphql/types/ci/catalog/resource_sort_enum_spec.rb spec/graphql/types/permission_types/container_repository_spec.rb spec/graphql/types/packages/composer/metadatum_type_spec.rb spec/lib/bulk_imports/groups/extractors/subgroups_extractor_spec.rb spec/helpers/deploy_tokens_helper_spec.rb spec/lib/gitlab/error_tracking/log_formatter_spec.rb spec/graphql/types/permission_types/ci/pipeline_spec.rb spec/lib/gitlab/database/async_constraints_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/uuid_metric_spec.rb spec/lib/gitlab/ci/status/bridge/waiting_for_resource_spec.rb spec/graphql/types/work_items/widgets/notifications_type_spec.rb spec/lib/gitlab/saas_spec.rb spec/lib/gitlab/memory/watchdog/handlers/puma_handler_spec.rb spec/graphql/types/ci/group_variable_connection_type_spec.rbKnapsack report generator started!
tput: No value for $TERM and no -T specified
tput: No value for $TERM and no -T specified
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 3.05875 seconds
# [RSpecRunTime] Starting example group spec/services/merge_requests/refresh_service_spec.rb. Expected to take 4 minutes 30.05 seconds.

MergeRequests::RefreshService
  #execute
    push to origin repo source branch
      executes hooks with update action
      triggers mergeRequestMergeStatusUpdated GraphQL subscription conditionally
      reloads source branch MRs memoization
      outdates MR suggestions
      calls the merge request activity counter
      query count
        does not execute a lot of queries
      when a merge error exists
        clears merge errors when pushing to the source branch
        does not clear merge errors when pushing to the target branch
# [RSpecRunTime] RSpec elapsed time: 40.27 seconds. Current RSS: ~1481M. load average: 1.27 1.15 1.00 1/291 1870


      when source branch ref does not exists
        closes MRs without source branch ref
        does not change the merge request diff
# [RSpecRunTime] RSpec elapsed time: 47.48 seconds. Current RSS: ~1484M. load average: 1.25 1.15 1.00 1/292 2126


    when pipeline exists for the source branch
      updates the head_pipeline_id for @merge_request
      does not update the head_pipeline_id for @fork_merge_request
# [RSpecRunTime] RSpec elapsed time: 57.26 seconds. Current RSS: ~1452M. load average: 1.36 1.18 1.01 1/292 2481


    Pipelines for merge requests
      when .gitlab-ci.yml has merge_requests keywords
        create detached merge request pipeline with commits
        does not create detached merge request pipeline for forked project
        create detached merge request pipeline for non-fork merge request
        when "push_options: nil" is passed
          creates a detached merge request pipeline with commits
# [RSpecRunTime] RSpec elapsed time: 1 minute 18.94 seconds. Current RSS: ~1461M. load average: 1.60 1.25 1.03 1/290 3217


        when ci.skip push_options are passed
          creates a skipped detached merge request pipeline with commits
# [RSpecRunTime] RSpec elapsed time: 1 minute 24.02 seconds. Current RSS: ~1464M. load average: 1.55 1.24 1.03 1/290 3392


        when service is hooked by target branch
          does not create detached merge request pipeline
# [RSpecRunTime] RSpec elapsed time: 1 minute 27.39 seconds. Current RSS: ~1469M. load average: 1.51 1.24 1.03 1/290 3485


        when service runs on forked project
          creates detached merge request pipeline for fork merge request
# [RSpecRunTime] RSpec elapsed time: 1 minute 32.03 seconds. Current RSS: ~1479M. load average: 1.47 1.23 1.03 1/290 3631


        when branch pipeline was created before a detaced merge request pipeline has been created
          sets the latest detached merge request pipeline as a head pipeline
          returns pipelines in correct order
# [RSpecRunTime] RSpec elapsed time: 1 minute 42.85 seconds. Current RSS: ~1461M. load average: 1.47 1.24 1.04 1/290 4002


        when MergeRequestUpdateWorker is retried by an exception
          does not re-create a duplicate detached merge request pipeline
# [RSpecRunTime] RSpec elapsed time: 1 minute 49.9 seconds. Current RSS: ~1457M. load average: 1.48 1.25 1.04 1/290 4271


        when the pipeline should be skipped
          saves a skipped detached merge request pipeline
# [RSpecRunTime] RSpec elapsed time: 1 minute 55.04 seconds. Current RSS: ~1462M. load average: 1.44 1.25 1.04 1/290 4459


      when .gitlab-ci.yml does not have merge_requests keywords
        does not create a detached merge request pipeline
# [RSpecRunTime] RSpec elapsed time: 1 minute 59.79 seconds. Current RSS: ~1459M. load average: 1.44 1.25 1.04 1/291 4635


      when .gitlab-ci.yml is invalid
        persists a pipeline with config error
# [RSpecRunTime] RSpec elapsed time: 2 minutes 5.06 seconds. Current RSS: ~1464M. load average: 1.37 1.24 1.04 3/292 4810


      when .gitlab-ci.yml file is valid but has a logical error
        persists a pipeline with config error
# [RSpecRunTime] RSpec elapsed time: 2 minutes 10.46 seconds. Current RSS: ~1460M. load average: 1.34 1.23 1.04 1/291 4985


    push to origin repo source branch
      executes hooks with update action
# [RSpecRunTime] RSpec elapsed time: 2 minutes 14.34 seconds. Current RSS: ~1461M. load average: 1.34 1.23 1.04 1/291 5156


    push to origin repo target branch
      when all MRs to the target branch had diffs
        updates the merge state
# [RSpecRunTime] RSpec elapsed time: 2 minutes 17.52 seconds. Current RSS: ~1475M. load average: 1.31 1.23 1.04 1/291 5248


      when an MR to be closed was empty already
        only updates the non-empty MRs
# [RSpecRunTime] RSpec elapsed time: 2 minutes 20.75 seconds. Current RSS: ~1484M. load average: 1.29 1.23 1.04 1/291 5357


      manual merge of source branch
        updates the merge state
# [RSpecRunTime] RSpec elapsed time: 2 minutes 23.92 seconds. Current RSS: ~1482M. load average: 1.29 1.23 1.04 1/291 5459


    push to fork repo source branch
      open fork merge request
        calls MergeRequests::LinkLfsObjectsService#execute
        executes hooks with update action
        outdates opened forked MR suggestions
# [RSpecRunTime] RSpec elapsed time: 2 minutes 33.5 seconds. Current RSS: ~1487M. load average: 1.24 1.22 1.04 1/292 5847


      closed fork merge request
        do not execute hooks with update action
        updates merge request to closed state
# [RSpecRunTime] RSpec elapsed time: 2 minutes 38.67 seconds. Current RSS: ~1490M. load average: 1.30 1.23 1.04 1/292 6022


    push to fork repo target branch
      changes to merge requests
        updates the merge request state
# [RSpecRunTime] RSpec elapsed time: 2 minutes 41.18 seconds. Current RSS: ~1488M. load average: 1.36 1.24 1.05 1/292 6110


      merge request diff
        does not reload the diff of the merge request made from fork
# [RSpecRunTime] RSpec elapsed time: 2 minutes 43.83 seconds. Current RSS: ~1486M. load average: 1.36 1.24 1.05 1/292 6198


    forked projects with the same source branch name as target branch
      reloads a new diff for a push to the forked project
      reloads a new diff for a force push to the source branch
      reloads a new diff for a force push to the target branch
      reloads a new diff for a push to the target project that contains a commit in the MR
      does not increase the diff count for a new push to target branch
# [RSpecRunTime] RSpec elapsed time: 3 minutes 6.9 seconds. Current RSS: ~1469M. load average: 1.50 1.29 1.07 3/293 7452


    push to origin repo target branch after fork project was removed
      updates the merge request state
# [RSpecRunTime] RSpec elapsed time: 3 minutes 10.0 seconds. Current RSS: ~1475M. load average: 1.46 1.28 1.07 1/292 7543


    push new branch that exists in a merge request
      refreshes the merge request
# [RSpecRunTime] RSpec elapsed time: 3 minutes 13.34 seconds. Current RSS: ~1487M. load average: 1.46 1.28 1.07 1/292 7672


    merge request metrics
      when the merge request is sourced from the same project
        creates a `MergeRequestsClosingIssues` record for each issue closed by a commit
# [RSpecRunTime] RSpec elapsed time: 3 minutes 17.38 seconds. Current RSS: ~1486M. load average: 1.42 1.28 1.07 1/292 7778


      when the merge request is sourced from a different project
        creates a `MergeRequestsClosingIssues` record for each issue closed by a commit
# [RSpecRunTime] RSpec elapsed time: 3 minutes 21.89 seconds. Current RSS: ~1488M. load average: 1.39 1.27 1.07 1/292 7893


    marking the merge request as draft
      marks the merge request as draft from fixup commits
      references the commit that caused the draft status
      does not mark as draft based on commits that do not belong to an MR
# [RSpecRunTime] RSpec elapsed time: 3 minutes 32.27 seconds. Current RSS: ~1483M. load average: 1.33 1.26 1.07 1/292 8329


  updating merge_commit
    feature enabled
      updates merge requests' merge_commit and merged_commit values
# [RSpecRunTime] RSpec elapsed time: 3 minutes 34.23 seconds. Current RSS: ~1482M. load average: 1.33 1.26 1.07 1/292 8409


  #abort_ff_merge_requests_with_when_pipeline_succeeds
    when Project#merge_method is set to FF
      behaves like aborted merge requests for MWPS
        aborts auto_merge
        removes merge_user
        does not add todos for merge user
        adds todos for merge author
# [RSpecRunTime] RSpec elapsed time: 3 minutes 37.8 seconds. Current RSS: ~1489M. load average: 1.30 1.26 1.06 1/292 8499


      with forked project
        behaves like aborted merge requests for MWPS
          aborts auto_merge
          removes merge_user
          does not add todos for merge user
          adds todos for merge author
# [RSpecRunTime] RSpec elapsed time: 3 minutes 39.69 seconds. Current RSS: ~1488M. load average: 1.30 1.26 1.06 1/291 8524


      with bogus auto merge strategy
        behaves like maintained merge requests for MWPS
          does not cancel auto merge
          does not change merge_user
          does not add todos
    when Project#merge_method is set to rebase_merge
      behaves like aborted merge requests for MWPS
        aborts auto_merge
        removes merge_user
        does not add todos for merge user
        adds todos for merge author
# [RSpecRunTime] RSpec elapsed time: 3 minutes 42.48 seconds. Current RSS: ~1491M. load average: 1.36 1.27 1.07 1/291 8561


      with forked project
        behaves like aborted merge requests for MWPS
          aborts auto_merge
          removes merge_user
          does not add todos for merge user
          adds todos for merge author
# [RSpecRunTime] RSpec elapsed time: 3 minutes 44.46 seconds. Current RSS: ~1490M. load average: 1.36 1.27 1.07 1/291 8586


    when Project#merge_method is set to merge
      behaves like maintained merge requests for MWPS
        does not cancel auto merge
        does not change merge_user
        does not add todos
      with forked project
        behaves like maintained merge requests for MWPS
          does not cancel auto merge
          does not change merge_user
          does not add todos
  #abort_auto_merges
    aborts MWPS for merge requests
    when merge params contains up-to-date sha
      maintains MWPS for merge requests
# [RSpecRunTime] RSpec elapsed time: 3 minutes 48.8 seconds. Current RSS: ~1495M. load average: 1.33 1.27 1.07 1/292 8726



# [RSpecRunTime] Finishing example group spec/services/merge_requests/refresh_service_spec.rb. It took 3 minutes 44.16 seconds. Expected to take 4 minutes 30.05 seconds.
# [RSpecRunTime] RSpec elapsed time: 3 minutes 49.88 seconds. Current RSS: ~1487M. load average: 1.33 1.27 1.07 1/292 8727


# [RSpecRunTime] Starting example group spec/rubocop/cop/rspec/feature_category_spec.rb. Expected to take 3 minutes 43.03 seconds.

RuboCop::Cop::RSpec::FeatureCategory
  does not flag use of invalid categories in non-example code
  flags missing feature category in top level example group
  flags invalid feature category for non-symbols
  with defined in config/feature_categories.yml and custom categories
    valid_category: "acquisition"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
# [RSpecRunTime] RSpec elapsed time: 3 minutes 51.05 seconds. Current RSS: ~1496M. load average: 1.38 1.28 1.08 1/292 8728


    valid_category: "activation"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "advisory_database"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "ai_abstraction_layer"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "ai_evaluation"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "ai_research"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "api"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "api_security"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "application_instrumentation"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "attack_emulation"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "audit_events"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "auto_devops"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "backup_restore"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "build"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "build_artifacts"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "capacity_planning"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "cell"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "cloud_connector"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "cloud_native_installation"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "code_quality"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "code_review_workflow"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "code_search"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "code_suggestions"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "code_testing"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "commerce_integrations"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "compliance_management"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "consumables_cost_management"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "container_registry"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "container_scanning"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "continuous_delivery"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "continuous_integration"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "customersdot_application"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "database"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "dataops"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "dedicated"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "delivery"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "dependency_firewall"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "dependency_management"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "dependency_proxy"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "deployment_management"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "design_management"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "design_system"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "devops_reports"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "disaster_recovery"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "dora_metrics"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "duo_chat"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "dynamic_application_security_testing"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "editor_extensions"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "environment_management"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "error_budgets"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "error_tracking"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "feature_flags"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "five_minute_production_app"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "fleet_visibility"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "fulfillment_admin_tooling"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "fulfillment_infrastructure"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "fuzz_testing"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "geo_replication"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "gitaly"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "gitlab_cli"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "gitlab_docs"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "global_search"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "groups_and_projects"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "helm_chart_registry"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "importers"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "incident_management"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "infrastructure_as_code"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "infrastructure_cost_data"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "insider_threat"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "instance_resiliency"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "integrations"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "internationalization"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
# [RSpecRunTime] RSpec elapsed time: 4 minutes 31.07 seconds. Current RSS: ~1536M. load average: 1.19 1.24 1.07 1/286 8729


    valid_category: "logging"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "measurement_and_locking"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "merge_trains"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "metrics"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "mlops"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "mobile_devops"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "navigation"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "okr_management"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "omnibus_package"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "on_call_schedule_management"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "onboarding"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "organization"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "package_registry"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "pages"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "permissions"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "pipeline_composition"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "portfolio_management"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "product_analytics_data_management"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "product_analytics_visualization"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "pubsec_services"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "purchase"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "quality_management"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "rate_limiting"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "redis"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "release_evidence"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "release_orchestration"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "remote_development"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "requirements_management"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "review_apps"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "runner"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "runner_saas"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "saas_provisioning"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "sbom"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "scalability"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "seat_cost_management"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "secret_detection"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "secrets_management"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "security_policy_management"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "service_desk"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "service_ping"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "sm_provisioning"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "software_composition_analysis"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "source_code_management"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "static_application_security_testing"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "subscription_management"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "switchboard"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "system_access"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "team_planning"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "tracing"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "user_management"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "user_profile"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "value_stream_management"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "vulnerability_management"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "web_ide"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "webhooks"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "wiki"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "tooling"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
    valid_category: "shared"
      behaves like feature category validation
        flags invalid feature category in top level example group
        flags invalid feature category in nested context
        flags invalid feature category in examples
        does not flag if feature category is valid
        suggests an alternative
  #external_dependency_checksum
    returns a SHA256 digest used by RuboCop to invalid cache

# [RSpecRunTime] Finishing example group spec/rubocop/cop/rspec/feature_category_spec.rb. It took 1 minute 13.37 seconds. Expected to take 3 minutes 43.03 seconds.
# [RSpecRunTime] Starting example group spec/services/todo_service_spec.rb. Expected to take 2 minutes 42.04 seconds.

TodoService
  updates cached counts when a todo is created
  Issues
    #new_issue
      creates a todo if assigned
      does not create a todo if unassigned
      creates a todo if assignee is the current user
      creates a todo for each valid mentioned user
      creates a directly addressed todo for each valid addressed user
      creates correct todos for each valid user based on the type of mention
      does not create todo if user can not see the issue when issue is confidential
      does not create directly addressed todo if user cannot see the issue when issue is confidential
      when a private group is mentioned
        creates a todo for group members
# [RSpecRunTime] RSpec elapsed time: 5 minutes 11.53 seconds. Current RSS: ~1552M. load average: 1.16 1.23 1.07 1/284 8736


      issue is an incident
        behaves like an incident management tracked event
          .track_event
            tracks the event using redis
        behaves like Snowplow event tracking with RedisHLL context
          behaves like Snowplow event tracking
            is emitted
    #update_issue
      creates a todo for each valid mentioned user not included in skip_users
      creates a todo for each valid user not included in skip_users based on the type of mention
      creates a directly addressed todo for each valid addressed user not included in skip_users
      does not create a todo if user was already mentioned and todo is pending
      does not create a todo if user was already mentioned and todo is done
      does not create a directly addressed todo if user was already mentioned or addressed and todo is pending
      does not create a directly addressed todo if user was already mentioned or addressed and todo is done
      does not create todo if user can not see the issue when issue is confidential
      does not create a directly addressed todo if user can not see the issue when issue is confidential
      issues with a task list
        does not create todo when tasks are marked as completed
        does not create directly addressed todo when tasks are marked as completed
        does not raise an error when description not change
# [RSpecRunTime] RSpec elapsed time: 5 minutes 20.42 seconds. Current RSS: ~1515M. load average: 1.14 1.22 1.07 1/283 8737


    #close_issue
      marks related pending todos to the target for the user as done
    #destroy_target
      refreshes the todos count cache for users with todos on the target
      yields the target to the caller
    #resolve_todos_for_target
      marks related pending todos to the target for the user as done
      cached counts
        updates when todos change
    #resolve_todos_with_attributes_for_target
      marks related pending todos to the target for all the users as done
      marks related only filtered pending todos to the target for all the users as done
      fetches the pending todos with users preloaded
    #new_note
      mark related pending todos to the noteable for the note author as done
      does not mark related pending todos it is a system note
      creates a todo for each valid mentioned user
      creates a todo for each valid user based on the type of mention
      creates a directly addressed todo for each valid addressed user
      does not create todo if user can not see the issue when leaving a note on a confidential issue
      does not create a directly addressed todo if user can not see the issue when leaving a note on a confidential issue
      does not create todo if user can not read confidential note
      does not create todo when leaving a note on snippet
      commits
        leaving a note on a commit in a public project
          creates a todo for each valid mentioned user
          creates a directly addressed todo for each valid mentioned user
# [RSpecRunTime] RSpec elapsed time: 5 minutes 33.9 seconds. Current RSS: ~1510M. load average: 1.11 1.21 1.07 1/288 8786


        leaving a note on a commit in a public project with private code
          creates a todo for each valid mentioned user
          creates a directly addressed todo for each valid mentioned user
# [RSpecRunTime] RSpec elapsed time: 5 minutes 36.37 seconds. Current RSS: ~1514M. load average: 1.03 1.19 1.07 1/288 8821


        leaving a note on a commit in a private project
          creates a todo for each valid mentioned user
          creates a directly addressed todo for each valid mentioned user
# [RSpecRunTime] RSpec elapsed time: 5 minutes 38.86 seconds. Current RSS: ~1517M. load average: 1.03 1.19 1.07 1/288 8852


    #mark_todo
      creates a todo from an issue
      when issue belongs to a group
        creates a todo from an issue
    #todo_exists?
      returns false when no todo exist for the given issuable
      returns true when a todo exist for the given issuable
    when multiple_todos are enabled
      creates a MENTIONED todo even if user already has a pending MENTIONED todo
      creates a DIRECTLY_ADDRESSED todo even if user already has a pending DIRECTLY_ADDRESSED todo
      creates an ASSIGNED todo even if user already has a pending MARKED todo
      does not create an ASSIGNED todo if user already has an ASSIGNED todo
      creates multiple todos if a user is assigned and mentioned in a new issue
# [RSpecRunTime] RSpec elapsed time: 5 minutes 42.7 seconds. Current RSS: ~1528M. load average: 1.02 1.19 1.06 1/288 8853


  Work Items
    #mark_todo
      creates a todo from a work item
      when work item belongs to a group
        creates a todo from a work item
    #todo_exists?
      returns false when no todo exist for the given work_item
      returns true when a todo exist for the given work_item
    #resolve_todos_for_target
      marks related pending todos to the target for the user as done
      cached counts
        updates when todos change
  #reassigned_assignable
    assignable is a merge request
      behaves like reassigned target
        creates a pending todo for new assignee
        does not create a todo if unassigned
        creates a todo if new assignee is the current user
        does not create a todo for guests
        does not create a directly addressed todo for guests
        does not create a todo if already assigned
# [RSpecRunTime] RSpec elapsed time: 5 minutes 47.53 seconds. Current RSS: ~1525M. load average: 1.02 1.18 1.06 1/289 9023


    assignable is a project level issue
      behaves like reassigned target
        creates a pending todo for new assignee
        does not create a todo if unassigned
        creates a todo if new assignee is the current user
        does not create a todo for guests
        does not create a directly addressed todo for guests
        does not create a todo if already assigned
# [RSpecRunTime] RSpec elapsed time: 5 minutes 49.29 seconds. Current RSS: ~1524M. load average: 1.02 1.18 1.06 1/289 9024


    assignable is a project level work_item
      behaves like reassigned target
        creates a pending todo for new assignee
        does not create a todo if unassigned
        creates a todo if new assignee is the current user
        does not create a todo for guests
        does not create a directly addressed todo for guests
        does not create a todo if already assigned
# [RSpecRunTime] RSpec elapsed time: 5 minutes 51.05 seconds. Current RSS: ~1529M. load average: 1.02 1.18 1.06 1/288 9025


    assignable is a group level issue
      behaves like reassigned target
        creates a pending todo for new assignee
        does not create a todo if unassigned
        creates a todo if new assignee is the current user
        does not create a todo for guests
        does not create a directly addressed todo for guests
        does not create a todo if already assigned
# [RSpecRunTime] RSpec elapsed time: 5 minutes 52.41 seconds. Current RSS: ~1522M. load average: 1.02 1.18 1.06 1/288 9026


    assignable is a group level work item
      behaves like reassigned target
        creates a pending todo for new assignee
        does not create a todo if unassigned
        creates a todo if new assignee is the current user
        does not create a todo for guests
        does not create a directly addressed todo for guests
        does not create a todo if already assigned
# [RSpecRunTime] RSpec elapsed time: 5 minutes 53.79 seconds. Current RSS: ~1525M. load average: 1.02 1.18 1.06 1/288 9027


    assignable is an alert
      behaves like reassigned target
        creates a pending todo for new assignee
        does not create a todo if unassigned
        creates a todo if new assignee is the current user
        does not create a todo for guests
        does not create a directly addressed todo for guests
        does not create a todo if already assigned
  #reassigned_reviewable
    reviewable is a merge request
      behaves like reassigned reviewable target
        with no existing reviewers
          creates a pending todo for new reviewer
        with an existing reviewer
          does not create a todo if unassigned
          creates a todo if new reviewer is the current user
          does not create a todo if already assigned
# [RSpecRunTime] RSpec elapsed time: 5 minutes 56.72 seconds. Current RSS: ~1528M. load average: 1.02 1.18 1.06 1/289 9137


  Merge Requests
    #new_merge_request
      creates a pending todo if assigned
      does not create a todo if unassigned
      creates a todo if assignee is the current user
      creates a todo for each valid mentioned user
      creates a todo for each valid user based on the type of mention
      creates a directly addressed todo for each valid addressed user
# [RSpecRunTime] RSpec elapsed time: 6 minutes 1.05 seconds. Current RSS: ~1519M. load average: 1.02 1.17 1.06 1/290 9300


    #update_merge_request
      creates a todo for each valid mentioned user not included in skip_users
      creates a todo for each valid user not included in skip_users based on the type of mention
      creates a directly addressed todo for each valid addressed user not included in skip_users
      does not create a todo if user was already mentioned and todo is pending
      does not create a todo if user was already mentioned and todo is done
      does not create a directly addressed todo if user was already mentioned or addressed and todo is pending
      does not create a directly addressed todo if user was already mentioned or addressed and todo is done
      with a task list
        does not create todo when tasks are marked as completed
        does not create directly addressed todo when tasks are marked as completed
        does not raise an error when description not change
# [RSpecRunTime] RSpec elapsed time: 6 minutes 9.49 seconds. Current RSS: ~1498M. load average: 1.01 1.17 1.06 1/290 9571


    #close_merge_request
      marks related pending todos to the target for the user as done
    #merge_merge_request
      marks related pending todos to the target for the user as done
      does not create todo for guests
      does not create directly addressed todo for guests
# [RSpecRunTime] RSpec elapsed time: 6 minutes 11.56 seconds. Current RSS: ~1502M. load average: 1.01 1.17 1.06 1/290 9680


    #new_award_emoji
      marks related pending todos to the target for the user as done
    #merge_request_build_failed
      creates a pending todo for each merge_participant
    #merge_request_push
      marks related pending todos to the target for the user as done
    #merge_request_became_unmergeable
      creates a pending todo for each merge_participant
    #mark_todo
      creates a todo from a merge request
    #new_note
      creates a todo for mentioned user on new diff note
      creates a directly addressed todo for addressed user on new diff note
      creates a todo for mentioned user on legacy diff note
      does not create todo for guests
# [RSpecRunTime] RSpec elapsed time: 6 minutes 18.56 seconds. Current RSS: ~1509M. load average: 1.01 1.16 1.06 1/290 9962


  Designs
    creates a todo for mentioned user on new diff note
  #update_note
    creates a todo for each valid mentioned user not included in skip_users
    creates a todo for each valid user not included in skip_users based on the type of mention
    creates a directly addressed todo for each valid addressed user not included in skip_users
    does not create a todo if user was already mentioned and todo is done
    does not create a directly addressed todo if user was already mentioned or addressed and todo is pending
    does not create a directly addressed todo if user was already mentioned or addressed and todo is done
    users already have pending todos and the multiple_todos feature is off
      does not create a todo if user was already mentioned and todo is pending
      does not create N+1 queries for pending todos
# [RSpecRunTime] RSpec elapsed time: 6 minutes 24.34 seconds. Current RSS: ~1494M. load average: 0.93 1.15 1.06 1/289 9963


  #resolve_todos
    behaves like updating todos state
      updates related todos for the user with the new_state
      updates resolution mechanism
      returns the updated ids
      cached counts
        updates when todos change
# [RSpecRunTime] RSpec elapsed time: 6 minutes 31.85 seconds. Current RSS: ~1485M. load average: 0.95 1.14 1.06 1/284 9964


  #restore_todos
    behaves like updating todos state
      updates related todos for the user with the new_state
      returns the updated ids
      cached counts
        updates when todos change
# [RSpecRunTime] RSpec elapsed time: 6 minutes 37.35 seconds. Current RSS: ~1470M. load average: 0.95 1.14 1.05 1/284 9965


  #resolve_todo
    marks pending todo as done
    saves resolution mechanism
    cached counts
      updates when todos change
# [RSpecRunTime] RSpec elapsed time: 6 minutes 40.51 seconds. Current RSS: ~1472M. load average: 0.96 1.14 1.05 1/284 9966


  #resolve_access_request_todos
    marks the todos for group access request handlers as done
    marks the todos for project access request handlers as done
# [RSpecRunTime] RSpec elapsed time: 6 minutes 43.99 seconds. Current RSS: ~1470M. load average: 0.96 1.14 1.05 1/284 9967


  #restore_todo
    marks resolved todo as pending
    cached counts
      updates when todos change
# [RSpecRunTime] RSpec elapsed time: 6 minutes 46.0 seconds. Current RSS: ~1475M. load average: 0.96 1.13 1.05 2/284 9968


  #create_request_review_todo
    creates a todo for reviewer
  #create_member_access_request_todos
    when request is raised for group
      behaves like member access request is raised
        when the source has more than 10 owners
          creates todos for 10 recently active source owners
# [RSpecRunTime] RSpec elapsed time: 6 minutes 50.52 seconds. Current RSS: ~1466M. load average: 0.88 1.11 1.05 1/289 9997


        when total owners are less than 10
          creates todos for all source owners
# [RSpecRunTime] RSpec elapsed time: 6 minutes 51.76 seconds. Current RSS: ~1466M. load average: 0.88 1.11 1.05 1/289 9998


        when multiple access requests are raised
          creates todos for 10 recently active source owners for multiple requests
# [RSpecRunTime] RSpec elapsed time: 6 minutes 55.2 seconds. Current RSS: ~1451M. load average: 0.89 1.11 1.05 1/289 9999


    when request is raised for project
      behaves like member access request is raised
        when the source has more than 10 owners
          creates todos for 10 recently active source owners
# [RSpecRunTime] RSpec elapsed time: 6 minutes 59.47 seconds. Current RSS: ~1447M. load average: 0.89 1.11 1.05 1/284 10000


        when total owners are less than 10
          creates todos for all source owners
# [RSpecRunTime] RSpec elapsed time: 7 minutes 0.74 second. Current RSS: ~1449M. load average: 0.90 1.11 1.05 2/284 10001


        when multiple access requests are raised
          creates todos for 10 recently active source owners for multiple requests
# [RSpecRunTime] RSpec elapsed time: 7 minutes 4.73 seconds. Current RSS: ~1450M. load average: 0.90 1.11 1.05 1/284 10002



# [RSpecRunTime] Finishing example group spec/services/todo_service_spec.rb. It took 2 minutes 1.57 seconds. Expected to take 2 minutes 42.04 seconds.
# [RSpecRunTime] Starting example group spec/lib/banzai/filter/references/issue_reference_filter_spec.rb. Expected to take 1 minute 47.89 seconds.

Banzai::Filter::References::IssueReferenceFilter
  requires project context
  ignores valid references contained inside 'pre' element
  ignores valid references contained inside 'code' element
  ignores valid references contained inside 'a' element
  ignores valid references contained inside 'style' element
  performance
    does not have a N+1 query problem
# [RSpecRunTime] RSpec elapsed time: 7 minutes 8.05 seconds. Current RSS: ~1461M. load average: 0.99 1.13 1.05 1/284 10003


  standard internal reference
    behaves like an internal reference
      links to a valid reference
      links with adjacent text
      ignores invalid issue IDs
      includes a title attribute
      escapes the title attribute
      renders non-HTML tooltips
      includes default classes
      includes a data-project attribute
      includes a data-issue attribute
      includes data attributes for issuable popover
      includes a data-original attribute
      does not escape the data-original attribute
      includes a data-reference-format attribute
      includes a data-reference-format attribute for URL references
      includes a data-reference-format attribute for extended summary URL references
      supports an :only_path context
      does not process links containing issue numbers followed by text
      behaves like a reference containing an element node
        does not escape inner html
# [RSpecRunTime] RSpec elapsed time: 7 minutes 18.34 seconds. Current RSS: ~1463M. load average: 0.92 1.10 1.05 1/284 10004


      behaves like a reference with issue type information
        contains issue-type as a data attribute
  alternative internal_reference
    behaves like an internal reference
      links to a valid reference
      links with adjacent text
      ignores invalid issue IDs
      includes a title attribute
      escapes the title attribute
      renders non-HTML tooltips
      includes default classes
      includes a data-project attribute
      includes a data-issue attribute
      includes data attributes for issuable popover
      includes a data-original attribute
      does not escape the data-original attribute
      includes a data-reference-format attribute
      includes a data-reference-format attribute for URL references
      includes a data-reference-format attribute for extended summary URL references
      supports an :only_path context
      does not process links containing issue numbers followed by text
      behaves like a reference containing an element node
        does not escape inner html
# [RSpecRunTime] RSpec elapsed time: 7 minutes 29.23 seconds. Current RSS: ~1462M. load average: 0.93 1.10 1.04 1/284 10005


      behaves like a reference with issue type information
        contains issue-type as a data attribute
  cross-project / cross-namespace complete reference
    ignores valid references when cross-reference project uses external tracker
    links to a valid reference
    link has valid text
    has valid text
    includes default classes
    ignores invalid issue IDs on the referenced project
    behaves like a reference containing an element node
      does not escape inner html
# [RSpecRunTime] RSpec elapsed time: 7 minutes 36.66 seconds. Current RSS: ~1466M. load average: 0.94 1.10 1.04 1/284 10006


    behaves like a reference with issue type information
      contains issue-type as a data attribute
# [RSpecRunTime] RSpec elapsed time: 7 minutes 37.74 seconds. Current RSS: ~1465M. load average: 0.94 1.10 1.04 1/284 10007


  cross-project / same-namespace complete reference
    ignores valid references when cross-reference project uses external tracker
    links to a valid reference
    link has valid text
    has valid text
    includes default classes
    ignores invalid issue IDs on the referenced project
    behaves like a reference containing an element node
      does not escape inner html
# [RSpecRunTime] RSpec elapsed time: 7 minutes 43.79 seconds. Current RSS: ~1456M. load average: 0.95 1.10 1.04 1/284 10008


    behaves like a reference with issue type information
      contains issue-type as a data attribute
  cross-project shorthand reference
    ignores valid references when cross-reference project uses external tracker
    links to a valid reference
    link has valid text
    has valid text
    includes default classes
    ignores invalid issue IDs on the referenced project
    behaves like a reference containing an element node
      does not escape inner html
# [RSpecRunTime] RSpec elapsed time: 7 minutes 50.94 seconds. Current RSS: ~1456M. load average: 1.03 1.11 1.05 1/284 10009


    behaves like a reference with issue type information
      contains issue-type as a data attribute
  cross-project URL reference
    links to a valid reference
    link with trailing slash
    links with adjacent text
    includes default classes
    behaves like a reference containing an element node
      does not escape inner html
# [RSpecRunTime] RSpec elapsed time: 7 minutes 56.8 seconds. Current RSS: ~1455M. load average: 1.03 1.11 1.05 1/284 10010


    behaves like a reference with issue type information
      contains issue-type as a data attribute
# [RSpecRunTime] RSpec elapsed time: 7 minutes 57.82 seconds. Current RSS: ~1457M. load average: 1.03 1.11 1.05 1/284 10011


  cross-project reference in link href
    links to a valid reference
    links with adjacent text
    includes default classes
    behaves like a reference containing an element node
      does not escape inner html
# [RSpecRunTime] RSpec elapsed time: 8 minutes 1.91 seconds. Current RSS: ~1461M. load average: 1.02 1.10 1.05 1/284 10012


    behaves like a reference with issue type information
      contains issue-type as a data attribute
# [RSpecRunTime] RSpec elapsed time: 8 minutes 3.04 seconds. Current RSS: ~1462M. load average: 1.02 1.10 1.05 1/284 10013


  cross-project URL in link href
    links to a valid reference
    links with adjacent text
    includes default classes
    behaves like a reference containing an element node
      does not escape inner html
# [RSpecRunTime] RSpec elapsed time: 8 minutes 7.03 seconds. Current RSS: ~1462M. load average: 1.10 1.12 1.05 1/284 10014


    behaves like a reference with issue type information
      contains issue-type as a data attribute
# [RSpecRunTime] RSpec elapsed time: 8 minutes 8.1 seconds. Current RSS: ~1461M. load average: 1.10 1.12 1.05 1/284 10015


  when processing a link to the designs tab
    includes the word "designs" after the reference in the text content
    design management is not available
      links to the issue, but not to the designs tab
# [RSpecRunTime] RSpec elapsed time: 8 minutes 9.42 seconds. Current RSS: ~1463M. load average: 1.10 1.12 1.05 1/284 10016


  group context
    ignores shorthanded issue reference
    ignores valid references when cross-reference project uses external tracker
    links to a valid reference for complete cross-reference
    ignores reference for shorthand cross-reference
    links to a valid reference for url cross-reference
    links to a valid reference for cross-reference in link href
    links to a valid reference for issue reference in the link href
# [RSpecRunTime] RSpec elapsed time: 8 minutes 14.42 seconds. Current RSS: ~1469M. load average: 1.09 1.12 1.05 1/284 10017


  .references_in
    yields valid references
    doesn't yield invalid references
    doesn't yield unsupported references
# [RSpecRunTime] RSpec elapsed time: 8 minutes 16.28 seconds. Current RSS: ~1475M. load average: 1.17 1.13 1.06 1/290 10058


  #object_link_text_extras
    the link does not go to the designs tab
      does not include designs
    the link goes to the designs tab
      includes designs
      design management is disabled
        does not include designs in the extras
# [RSpecRunTime] RSpec elapsed time: 8 minutes 18.07 seconds. Current RSS: ~1480M. load average: 1.17 1.13 1.06 1/290 10059



# [RSpecRunTime] Finishing example group spec/lib/banzai/filter/references/issue_reference_filter_spec.rb. It took 1 minute 13.33 seconds. Expected to take 1 minute 47.89 seconds.
# [RSpecRunTime] Starting example group spec/helpers/projects_helper_spec.rb. Expected to take 1 minute 34.77 seconds.

ProjectsHelper
  #project_incident_management_setting
    when incident_management_setting exists
      return project_incident_management_setting
# [RSpecRunTime] RSpec elapsed time: 8 minutes 19.43 seconds. Current RSS: ~1488M. load average: 1.17 1.13 1.06 1/289 10072


    when incident_management_setting does not exist
      builds incident_management_setting
  #error_tracking_setting_project_json
    error tracking setting does not exist
      returns nil
    error tracking setting exists
      api_url present
        returns error tracking json
      api_url not present
        returns nil
  can_change_visibility_level?
    returns false if there are no appropriate permissions
    returns true if there are permissions
  #can_disable_emails?
    returns true for the project owner
    returns false for anyone else
    returns false if group emails disabled
# [RSpecRunTime] RSpec elapsed time: 8 minutes 22.2 seconds. Current RSS: ~1503M. load average: 1.15 1.13 1.06 1/290 10073


  #load_pipeline_status
    loads the pipeline status in batch
  #load_catalog_resources
    does not execute a database query when project.catalog_resource is accessed
  #last_pipeline_from_status_cache
    without a pipeline
      returns nil
      when pipeline_status is loaded
        returns nil without calling gitaly when there is no pipeline
      when FF load_last_pipeline_from_pipeline_status is disabled
        returns nil
    with a pipeline
      returns the latest pipeline
      when pipeline_status is loaded
        returns the latest pipeline without calling gitaly
        when FF load_last_pipeline_from_pipeline_status is disabled
          returns the latest pipeline
  #show_no_ssh_key_message?
    user has no keys
      returns true
    user has an ssh key
      returns false
  #show_no_password_message?
    user has password set
      returns false
    user has hidden the message
      returns false
    user requires a password for Git
      returns true
    user requires a personal access token for Git
      returns true
  #no_password_message
    password authentication is enabled for Git
      returns message prompting user to set password or set up a PAT
    password authentication is disabled for Git
      returns message prompting user to set up a PAT
  #link_to_project
    returns an HTML link to the project
# [RSpecRunTime] RSpec elapsed time: 8 minutes 28.06 seconds. Current RSS: ~1479M. load average: 1.14 1.13 1.06 1/289 10101


  #link_to_member_avatar
    returns image tag for member avatar
    returns image tag with avatar class
  #link_to_member
    using the default options
      returns an HTML link to the user
      HTML escapes the name of the user
    when user is nil
      returns "(deleted)"
  default_clone_protocol
    when user is not logged in and gitlab protocol is HTTP
      returns HTTP
    when user is not logged in and gitlab protocol is HTTPS
      returns HTTPS
  #last_push_event
    returns recent push on the current project
    when there is no current_user
      returns nil
  #show_projects
    returns true when there are projects
    returns true when there are no projects but a name is given
    returns true when there are no projects but personal is present
    returns false when there are no projects and there is no name
  #push_to_create_project_command
    returns the command to push to create project over HTTP
    returns the command to push to create project over SSH
  #any_projects?
    returns true when projects will be returned
    returns false when no projects will be returned
    returns true when using a non-empty Array
    returns false when using an empty Array
    only executes a single query when a LIMIT is applied
  #git_user_name
    parses quotes in name
  #git_user_email
    not logged-in
      returns your@email.com
    user logged in
      user has no configured commit email
        returns the primary email
      user has a configured commit email
        returns the commit email
  show_xcode_link
    when the repository is xcode compatible
      returns false if the visitor is not using macos
      returns true if the visitor is using macos
    when the repository is not xcode compatible
      returns false if the visitor is not using macos
      returns false if the visitor is using macos
  #explore_projects_tab?
    returns true when on the "All" tab under "Explore projects"
    returns true when on the "Trending" tab under "Explore projects"
    returns true when on the "Starred" tab under "Explore projects"
    returns false when on the "Your projects" tab
  #show_count?
    enabled flag
      returns true if compact mode is disabled
      returns false if compact mode is enabled
    disabled flag
      returns false if disabled flag is true
      returns true if disabled flag is false
  #show_auto_devops_implicitly_enabled_banner?
    global_setting: true, project_setting: nil, builds_visibility: :disabled, gitlab_ci_yml: true, user_access: :developer, result: false
      is expected to eq false
# [RSpecRunTime] RSpec elapsed time: 8 minutes 34.06 seconds. Current RSS: ~1512M. load average: 1.13 1.12 1.06 1/289 10108


    global_setting: true, project_setting: nil, builds_visibility: :disabled, gitlab_ci_yml: true, user_access: :maintainer, result: false
      is expected to eq false
    global_setting: true, project_setting: nil, builds_visibility: :disabled, gitlab_ci_yml: true, user_access: :owner, result: false
      is expected to eq false
    global_setting: true, project_setting: nil, builds_visibility: :disabled, gitlab_ci_yml: false, user_access: :developer, result: false
      is expected to eq false
    global_setting: true, project_setting: nil, builds_visibility: :disabled, gitlab_ci_yml: false, user_access: :maintainer, result: false
      is expected to eq false
    global_setting: true, project_setting: nil, builds_visibility: :disabled, gitlab_ci_yml: false, user_access: :owner, result: false
      is expected to eq false
    global_setting: true, project_setting: nil, builds_visibility: :enabled, gitlab_ci_yml: true, user_access: :developer, result: false
      is expected to eq false
    global_setting: true, project_setting: nil, builds_visibility: :enabled, gitlab_ci_yml: true, user_access: :maintainer, result: false
      is expected to eq false
    global_setting: true, project_setting: nil, builds_visibility: :enabled, gitlab_ci_yml: true, user_access: :owner, result: false
      is expected to eq false
    global_setting: true, project_setting: nil, builds_visibility: :enabled, gitlab_ci_yml: false, user_access: :developer, result: false
      is expected to eq false
    global_setting: true, project_setting: nil, builds_visibility: :enabled, gitlab_ci_yml: false, user_access: :maintainer, result: true
      is expected to eq true
    global_setting: true, project_setting: nil, builds_visibility: :enabled, gitlab_ci_yml: false, user_access: :owner, result: true
      is expected to eq true
    global_setting: true, project_setting: true, builds_visibility: :disabled, gitlab_ci_yml: true, user_access: :developer, result: false
      is expected to eq false
    global_setting: true, project_setting: true, builds_visibility: :disabled, gitlab_ci_yml: true, user_access: :maintainer, result: false
      is expected to eq false
    global_setting: true, project_setting: true, builds_visibility: :disabled, gitlab_ci_yml: true, user_access: :owner, result: false
      is expected to eq false
    global_setting: true, project_setting: true, builds_visibility: :disabled, gitlab_ci_yml: false, user_access: :developer, result: false
      is expected to eq false
    global_setting: true, project_setting: true, builds_visibility: :disabled, gitlab_ci_yml: false, user_access: :maintainer, result: false
      is expected to eq false
    global_setting: true, project_setting: true, builds_visibility: :disabled, gitlab_ci_yml: false, user_access: :owner, result: false
      is expected to eq false
    global_setting: true, project_setting: true, builds_visibility: :enabled, gitlab_ci_yml: true, user_access: :developer, result: false
      is expected to eq false
    global_setting: true, project_setting: true, builds_visibility: :enabled, gitlab_ci_yml: true, user_access: :maintainer, result: false
      is expected to eq false
    global_setting: true, project_setting: true, builds_visibility: :enabled, gitlab_ci_yml: true, user_access: :owner, result: false
      is expected to eq false
    global_setting: true, project_setting: true, builds_visibility: :enabled, gitlab_ci_yml: false, user_access: :developer, result: false
      is expected to eq false
    global_setting: true, project_setting: true, builds_visibility: :enabled, gitlab_ci_yml: false, user_access: :maintainer, result: false
      is expected to eq false
    global_setting: true, project_setting: true, builds_visibility: :enabled, gitlab_ci_yml: false, user_access: :owner, result: false
      is expected to eq false
    global_setting: true, project_setting: false, builds_visibility: :disabled, gitlab_ci_yml: true, user_access: :developer, result: false
      is expected to eq false
    global_setting: true, project_setting: false, builds_visibility: :disabled, gitlab_ci_yml: true, user_access: :maintainer, result: false
      is expected to eq false
    global_setting: true, project_setting: false, builds_visibility: :disabled, gitlab_ci_yml: true, user_access: :owner, result: false
      is expected to eq false
    global_setting: true, project_setting: false, builds_visibility: :disabled, gitlab_ci_yml: false, user_access: :developer, result: false
      is expected to eq false
    global_setting: true, project_setting: false, builds_visibility: :disabled, gitlab_ci_yml: false, user_access: :maintainer, result: false
      is expected to eq false
    global_setting: true, project_setting: false, builds_visibility: :disabled, gitlab_ci_yml: false, user_access: :owner, result: false
      is expected to eq false
    global_setting: true, project_setting: false, builds_visibility: :enabled, gitlab_ci_yml: true, user_access: :developer, result: false
      is expected to eq false
    global_setting: true, project_setting: false, builds_visibility: :enabled, gitlab_ci_yml: true, user_access: :maintainer, result: false
      is expected to eq false
    global_setting: true, project_setting: false, builds_visibility: :enabled, gitlab_ci_yml: true, user_access: :owner, result: false
      is expected to eq false
    global_setting: true, project_setting: false, builds_visibility: :enabled, gitlab_ci_yml: false, user_access: :developer, result: false
      is expected to eq false
    global_setting: true, project_setting: false, builds_visibility: :enabled, gitlab_ci_yml: false, user_access: :maintainer, result: false
      is expected to eq false
    global_setting: true, project_setting: false, builds_visibility: :enabled, gitlab_ci_yml: false, user_access: :owner, result: false
      is expected to eq false
  #show_mobile_devops_project_promo?
    hide_cookie: false, mobile_target_platform: true, result: true
      resolves if mobile devops promo banner should be displayed
    hide_cookie: false, mobile_target_platform: false, result: false
      resolves if mobile devops promo banner should be displayed
    hide_cookie: true, mobile_target_platform: false, result: false
      resolves if mobile devops promo banner should be displayed
    hide_cookie: true, mobile_target_platform: true, result: false
      resolves if mobile devops promo banner should be displayed
  #can_admin_project_member?
    when user is project owner
      returns true for owner of project
    when user is not a project owner
      user_project_role: :maintainer, can_admin: true
        resolves if the user can import members
      user_project_role: :developer, can_admin: false
        resolves if the user can import members
      user_project_role: :reporter, can_admin: false
        resolves if the user can import members
      user_project_role: :guest, can_admin: false
        resolves if the user can import members
  #project_license_name(project)
    gitaly is working appropriately
      returns the license name
      memoizes the value
    gitaly is unreachable
      Gitlab::Git::CommandError
        behaves like returns nil and tracks exception
          is expected to be nil
          tracks the exception
          memoizes the nil value
      GRPC::Unavailable
        behaves like returns nil and tracks exception
          is expected to be nil
          tracks the exception
          memoizes the nil value
      GRPC::DeadlineExceeded
        behaves like returns nil and tracks exception
          is expected to be nil
          tracks the exception
          memoizes the nil value
  #show_terraform_banner?
    the project does not contain terraform files
      is expected to be falsey
    the project contains terraform files
      is expected to be truthy
      the project already has a terraform state
        is expected to be falsey
      the :show_terraform_banner feature flag is disabled
        is expected to be falsey
  #project_title
    enqueues the elements in the breadcrumb schema list
    with malicious owner name
      escapes the malicious owner name
  #project_permissions_panel_data
    includes project_permissions_settings
    includes membersPagePath
    includes canAddCatalogResource
  #project_classes
    is expected to be a kind of String
    PUC highlighting enabled
      is expected to include "project-highlight-puc"
    PUC highlighting disabled
      is expected not to include "project-highlight-puc"
  #delete_confirm_phrase
    includes the project path with namespace
  fork security helpers
    #able_to_see_merge_requests?
      can_read_merge_request: false, merge_requests_enabled: false, expected: false
        returns the correct response
      can_read_merge_request: true, merge_requests_enabled: false, expected: false
        returns the correct response
      can_read_merge_request: false, merge_requests_enabled: true, expected: false
        returns the correct response
      can_read_merge_request: true, merge_requests_enabled: true, expected: true
        returns the correct response
    #able_to_see_issues?
      can_read_issues: false, issues_enabled: false, expected: false
        returns the correct response
      can_read_issues: true, issues_enabled: false, expected: false
        returns the correct response
      can_read_issues: false, issues_enabled: true, expected: false
        returns the correct response
      can_read_issues: true, issues_enabled: true, expected: true
        returns the correct response
    #able_to_see_forks_count?
      can_read_code: false, forking_enabled: false, expected: false
        returns the correct response
      can_read_code: true, forking_enabled: false, expected: false
        returns the correct response
      can_read_code: false, forking_enabled: true, expected: false
        returns the correct response
      can_read_code: true, forking_enabled: true, expected: true
        returns the correct response
  #fork_button_data_attributes
    has_user: false, project_already_forked: false, forkable_namespaces: [], expected: nil
      is expected to eq nil
    has_user: true, project_already_forked: false, forkable_namespaces: [0], expected: {:forks_count=>4, :project_full_path=>"/project/path", :project_forks_url=>"/project/forks", :can_create_fork=>"true", :can_fork_project=>"true", :can_read_code=>"true", :new_fork_url=>"/project/new/fork", :user_fork_url=>nil}
      is expected to eq {:can_create_fork=>"true", :can_fork_project=>"true", :can_read_code=>"true", :forks_count=>4, :new_f...rk", :project_forks_url=>"/project/forks", :project_full_path=>"/project/path", :user_fork_url=>nil}
    has_user: true, project_already_forked: false, forkable_namespaces: [0, 1], expected: {:forks_count=>4, :project_full_path=>"/project/path", :project_forks_url=>"/project/forks", :can_create_fork=>"true", :can_fork_project=>"true", :can_read_code=>"true", :new_fork_url=>"/project/new/fork", :user_fork_url=>nil}
      is expected to eq {:can_create_fork=>"true", :can_fork_project=>"true", :can_read_code=>"true", :forks_count=>4, :new_f...rk", :project_forks_url=>"/project/forks", :project_full_path=>"/project/path", :user_fork_url=>nil}
    has_user: true, project_already_forked: true, forkable_namespaces: [0], expected: {:forks_count=>4, :project_full_path=>"/project/path", :project_forks_url=>"/project/forks", :can_create_fork=>"true", :can_fork_project=>"true", :can_read_code=>"true", :new_fork_url=>"/project/new/fork", :user_fork_url=>"/user/fork"}
      is expected to eq {:can_create_fork=>"true", :can_fork_project=>"true", :can_read_code=>"true", :forks_count=>4, :new_f...ject_forks_url=>"/project/forks", :project_full_path=>"/project/path", :user_fork_url=>"/user/fork"}
    has_user: true, project_already_forked: true, forkable_namespaces: [0, 1], expected: {:forks_count=>4, :project_full_path=>"/project/path", :project_forks_url=>"/project/forks", :can_create_fork=>"true", :can_fork_project=>"true", :can_read_code=>"true", :new_fork_url=>"/project/new/fork", :user_fork_url=>nil}
      is expected to eq {:can_create_fork=>"true", :can_fork_project=>"true", :can_read_code=>"true", :forks_count=>4, :new_f...rk", :project_forks_url=>"/project/forks", :project_full_path=>"/project/path", :user_fork_url=>nil}
  #star_count_data_attributes
    when user has already starred the project
      is expected to eq {:project_id=>300, :sign_in_path=>"sign/in/path", :star_count=>5, :starred=>"true", :starrers_path=>"/namespace169/project-301/-/starrers"}
    when user has not starred the project
      is expected to eq {:project_id=>300, :sign_in_path=>"sign/in/path", :star_count=>5, :starred=>"false", :starrers_path=>"/namespace169/project-301/-/starrers"}
  #notification_data_attributes
    returns default user notification settings
      is expected to eq {:emails_disabled=>"false", :notification_dropdown_items=>"[\"global\",\"watch\",\"participating\",\"...disabled\"]", :notification_help_page_path=>"notification/help/path", :notification_level=>"global"}
    returns configured users notification settings
      is expected to eq {:emails_disabled=>"true", :notification_dropdown_items=>"[\"global\",\"watch\",\"participating\",\"m..."disabled\"]", :notification_help_page_path=>"notification/help/path", :notification_level=>"watch"}
  #home_panel_data_attributes
    can_read_project: true, is_empty_repo: true
      returns default user project details
        is expected to eq {:can_read_project=>"true", :is_project_empty=>"true", :project_id=>300}
    can_read_project: false, is_empty_repo: false
      returns default user project details
        is expected to eq {:can_read_project=>"false", :is_project_empty=>"false", :project_id=>300}
  #import_from_bitbucket_message
    behaves like configure import method modal
      as a user
        returns a link to contact an administrator
      as an administrator
        returns a link to configure bitbucket
  #show_archived_project_banner?
    with no project
      behaves like does not show the banner
        is expected to equal false
    with unsaved project
      behaves like does not show the banner
        is expected to equal false
    with the setting enabled
      with an active project
        behaves like does not show the banner
          is expected to equal false
      with an inactive project
        shows the banner
  #show_inactive_project_deletion_banner?
    with no project
      behaves like does not show the banner
        is expected to equal false
    with unsaved project
      behaves like does not show the banner
        is expected to equal false
    with the setting disabled
      behaves like does not show the banner
        is expected to equal false
    with the setting enabled
      with an active project
        behaves like does not show the banner
          is expected to equal false
      with an inactive project
        shows the banner
  #inactive_project_deletion_date
    returns the deletion date
  #can_admin_associated_clusters?
    when project has a cluster
      if user can admin cluster
        is expected to be truthy
      if user can not admin cluster
        is expected to be falsey
    when project has a group cluster
      if user can admin cluster
        is expected to be truthy
      if user can not admin cluster
        is expected to be falsey
    when project doesn't have a cluster
      if user can admin cluster
        is expected to be falsey
      if user can not admin cluster
        is expected to be falsey
  #show_clusters_alert?
    is_gitlab_com: false, user_can_admin_cluster: false, expected: false
      is expected to eq false
    is_gitlab_com: false, user_can_admin_cluster: true, expected: false
      is expected to eq false
    is_gitlab_com: true, user_can_admin_cluster: false, expected: false
      is expected to eq false
    is_gitlab_com: true, user_can_admin_cluster: true, expected: true
      is expected to eq true
  #clusters_deprecation_alert_message
    if user has an active licence
      displays the correct messagee
    if user doesn't have an active licence
      displays the correct message
  #project_coverage_chart_data_attributes
    returns project data to render coverage chart
  #localized_project_human_access
    key: 0, localized_project_human_access: "No access"
      with correct key
    key: 5, localized_project_human_access: "Minimal Access"
      with correct key
    key: 10, localized_project_human_access: "Guest"
      with correct key
    key: 20, localized_project_human_access: "Reporter"
      with correct key
    key: 30, localized_project_human_access: "Developer"
      with correct key
    key: 40, localized_project_human_access: "Maintainer"
      with correct key
    key: 50, localized_project_human_access: "Owner"
      with correct key
  #vue_fork_divergence_data
    returns empty hash when fork source is not available
    when fork source is available
      returns the data related to fork divergence
      returns view_mr_path if a merge request for the branch exists
      when a user cannot create a merge request
        project_role: :guest, source_project_role: :developer
          create_mr_path is nil
# [RSpecRunTime] RSpec elapsed time: 8 minutes 59.61 seconds. Current RSS: ~1562M. load average: 1.02 1.10 1.05 1/289 10142


        project_role: :developer, source_project_role: :guest
          create_mr_path is nil
  #remote_mirror_setting_enabled?
    returns false
  #http_clone_url_to_repo
    is expected to eq "http_url_to_repo"
  #ssh_clone_url_to_repo
    is expected to eq "ssh_url_to_repo"
  #can_view_branch_rules?
    when user is a maintainer
      is expected to be truthy
    when user is a developer
      is expected to be falsey
  #can_push_code?
    when user is nil
      is expected to be falsey
    when user is a developer on the project
      is expected to be truthy
    when user is a reporter on the project
      is expected to be falsey
  #can_admin_associated_clusters?(project)
    project_clusters_exist: false, user_can_admin_project_clusters: false, group_clusters_exist: false, user_can_admin_group_clusters: false, expected: false
      is expected to eq false
    project_clusters_exist: true, user_can_admin_project_clusters: false, group_clusters_exist: false, user_can_admin_group_clusters: false, expected: false
      is expected to eq false
    project_clusters_exist: false, user_can_admin_project_clusters: true, group_clusters_exist: false, user_can_admin_group_clusters: false, expected: false
      is expected to eq false
    project_clusters_exist: false, user_can_admin_project_clusters: false, group_clusters_exist: true, user_can_admin_group_clusters: false, expected: false
      is expected to eq false
    project_clusters_exist: false, user_can_admin_project_clusters: false, group_clusters_exist: false, user_can_admin_group_clusters: true, expected: false
      is expected to eq false
    project_clusters_exist: true, user_can_admin_project_clusters: true, group_clusters_exist: false, user_can_admin_group_clusters: false, expected: true
      is expected to eq true
    project_clusters_exist: false, user_can_admin_project_clusters: false, group_clusters_exist: true, user_can_admin_group_clusters: true, expected: true
      is expected to eq true
    project_clusters_exist: true, user_can_admin_project_clusters: true, group_clusters_exist: true, user_can_admin_group_clusters: true, expected: true
      is expected to eq true
  #branch_rules_path
    is expected to eq "/namespace169/project-301/-/settings/repository#js-branch-rules"
  #visibility_level_content
    behaves like returns visibility level content_tag
      returns visibility level content_tag
      returns visibility level content_tag with extra CSS classes
    when project creator is banned
      returns hidden resource icon
    with hide_projects_of_banned_users feature flag disabled
      behaves like returns visibility level content_tag
        returns visibility level content_tag
        returns visibility level content_tag with extra CSS classes
      when project creator is banned
        behaves like returns visibility level content_tag
          returns visibility level content_tag
          returns visibility level content_tag with extra CSS classes
  #hidden_issue_icon
    when issue is hidden
      returns icon with tooltip
    when issue is not hidden
      returns `nil`
  #issue_manual_ordering_class
    when sorting by relative position
      returns manual ordering class
      when manual sorting disabled
        returns nil

# [RSpecRunTime] Finishing example group spec/helpers/projects_helper_spec.rb. It took 46.62 seconds. Expected to take 1 minute 34.77 seconds.
# [RSpecRunTime] Starting example group spec/services/auto_merge/base_service_spec.rb. Expected to take 1 minute 17.42 seconds.

AutoMerge::BaseService
  #execute
    sets properies to the merge request
    yields block
    returns activated strategy name
    when merge parameters are given
      sets merge parameters
# [RSpecRunTime] RSpec elapsed time: 9 minutes 10.67 seconds. Current RSS: ~1573M. load average: 1.02 1.09 1.05 1/291 10302


    when strategy is merge when pipeline succeeds
      sets the auto merge strategy
      returns activated strategy name
      calls AutoMergeProcessWorker
# [RSpecRunTime] RSpec elapsed time: 9 minutes 15.93 seconds. Current RSS: ~1548M. load average: 0.93 1.07 1.04 1/291 10420


    when failed to save merge request
      does not yield block
      returns failed
      tracks the exception
# [RSpecRunTime] RSpec elapsed time: 9 minutes 20.35 seconds. Current RSS: ~1547M. load average: 0.94 1.07 1.04 2/292 10538


    when exception happens in yield block
      returns failed status
      rollback the transaction
      tracks the exception
# [RSpecRunTime] RSpec elapsed time: 9 minutes 24.75 seconds. Current RSS: ~1550M. load average: 0.94 1.07 1.04 1/291 10656


  #update
    when merge params are specified
      updates merge params
# [RSpecRunTime] RSpec elapsed time: 9 minutes 26.37 seconds. Current RSS: ~1551M. load average: 1.02 1.09 1.05 1/291 10696


  #cancel
    behaves like Canceled or Dropped
      removes properies from the merge request
      yields block
      returns success status
      when merge params are set
        removes merge parameters
# [RSpecRunTime] RSpec elapsed time: 9 minutes 32.37 seconds. Current RSS: ~1547M. load average: 0.94 1.07 1.04 1/291 10853


      when failed to save
        does not yield block
# [RSpecRunTime] RSpec elapsed time: 9 minutes 33.91 seconds. Current RSS: ~1545M. load average: 0.94 1.07 1.04 1/291 10893


    when failed to save merge request
      returns error status
# [RSpecRunTime] RSpec elapsed time: 9 minutes 35.45 seconds. Current RSS: ~1544M. load average: 0.95 1.07 1.04 1/291 10933


    when exception happens in yield block
      returns error
      rollback the transaction
      tracks the exception
# [RSpecRunTime] RSpec elapsed time: 9 minutes 39.95 seconds. Current RSS: ~1544M. load average: 0.95 1.07 1.04 1/291 11051


  #abort
    behaves like Canceled or Dropped
      removes properies from the merge request
      yields block
      returns success status
      when merge params are set
        removes merge parameters
# [RSpecRunTime] RSpec elapsed time: 9 minutes 45.97 seconds. Current RSS: ~1545M. load average: 0.96 1.06 1.04 1/291 11208


      when failed to save
        does not yield block
# [RSpecRunTime] RSpec elapsed time: 9 minutes 47.49 seconds. Current RSS: ~1542M. load average: 0.96 1.06 1.04 1/291 11248


    when failed to save
      returns error status
# [RSpecRunTime] RSpec elapsed time: 9 minutes 48.99 seconds. Current RSS: ~1542M. load average: 0.96 1.06 1.04 1/291 11288


    when exception happens in yield block
      returns error
      rollback the transaction
      tracks the exception
# [RSpecRunTime] RSpec elapsed time: 9 minutes 53.48 seconds. Current RSS: ~1541M. load average: 0.96 1.06 1.04 1/291 11406


  #process
    is expected to respond to #process
    is expected to raise NotImplementedError
# [RSpecRunTime] RSpec elapsed time: 9 minutes 54.7 seconds. Current RSS: ~1541M. load average: 0.96 1.06 1.04 1/291 11407


  #available_for?
    can_be_merged: true, open: true, broken: false, discussions: true, blocked: false, draft: false, result: true
      returns the expected results
# [RSpecRunTime] RSpec elapsed time: 9 minutes 56.32 seconds. Current RSS: ~1542M. load average: 0.96 1.06 1.04 1/291 11447


    can_be_merged: false, open: true, broken: false, discussions: true, blocked: false, draft: false, result: false
      returns the expected results
# [RSpecRunTime] RSpec elapsed time: 9 minutes 57.99 seconds. Current RSS: ~1535M. load average: 0.96 1.06 1.04 1/291 11487


    can_be_merged: true, open: false, broken: false, discussions: true, blocked: false, draft: false, result: false
      returns the expected results
# [RSpecRunTime] RSpec elapsed time: 9 minutes 59.52 seconds. Current RSS: ~1535M. load average: 0.96 1.06 1.04 1/291 11527


    can_be_merged: true, open: true, broken: true, discussions: true, blocked: false, draft: false, result: false
      returns the expected results
# [RSpecRunTime] RSpec elapsed time: 10 minutes 1.12 seconds. Current RSS: ~1537M. load average: 0.97 1.06 1.04 1/292 11567


    can_be_merged: true, open: true, broken: false, discussions: false, blocked: false, draft: false, result: false
      returns the expected results
# [RSpecRunTime] RSpec elapsed time: 10 minutes 2.71 seconds. Current RSS: ~1540M. load average: 0.97 1.06 1.04 2/292 11607


    can_be_merged: true, open: true, broken: false, discussions: true, blocked: true, draft: false, result: false
      returns the expected results
# [RSpecRunTime] RSpec elapsed time: 10 minutes 4.33 seconds. Current RSS: ~1540M. load average: 0.97 1.06 1.04 1/291 11647


    can_be_merged: true, open: true, broken: false, discussions: true, blocked: false, draft: true, result: false
      returns the expected results
# [RSpecRunTime] RSpec elapsed time: 10 minutes 5.95 seconds. Current RSS: ~1539M. load average: 0.97 1.06 1.04 1/291 11687



# [RSpecRunTime] Finishing example group spec/services/auto_merge/base_service_spec.rb. It took 1 minute 1.32 seconds. Expected to take 1 minute 17.42 seconds.
# [RSpecRunTime] Starting example group spec/services/merge_requests/mergeability_check_service_spec.rb. Expected to take 1 minute 12.15 seconds.

MergeRequests::MergeabilityCheckService
  #async_execute
    updates merge status to checking
    enqueues MergeRequestMergeabilityCheckWorker
    when read-only DB
      does not enqueue MergeRequestMergeabilityCheckWorker
# [RSpecRunTime] RSpec elapsed time: 10 minutes 9.5 seconds. Current RSS: ~1540M. load average: 0.97 1.06 1.04 1/291 11805


  #execute
    behaves like mergeable merge request
      updates or keeps merge status as can_be_merged
      reloads merge head diff
      update diff discussion positions
      updates the merge ref
      returns ServiceResponse.success
      ServiceResponse has merge_ref_head payload
# [RSpecRunTime] RSpec elapsed time: 10 minutes 18.15 seconds. Current RSS: ~1541M. load average: 1.13 1.09 1.05 1/291 12294


    when concurrent calls
      waits first lock and returns "cached" result in subsequent calls
      writes the merge-ref once
      resets one merge request upon execution
      when retry_lease flag is false
        the first call succeeds, subsequent concurrent calls get a lock error response
# [RSpecRunTime] RSpec elapsed time: 10 minutes 28.24 seconds. Current RSS: ~1534M. load average: 1.04 1.07 1.04 1/293 12581


    when broken
      returns ServiceResponse.error
      behaves like unmergeable merge request
        updates or keeps merge status as cannot_be_merged
        does not change the merge ref HEAD
        returns ServiceResponse.error
# [RSpecRunTime] RSpec elapsed time: 10 minutes 33.12 seconds. Current RSS: ~1551M. load average: 1.12 1.09 1.05 1/291 12774


    when it cannot be merged on git
      returns ServiceResponse.error and keeps merge status as cannot_be_merged
# [RSpecRunTime] RSpec elapsed time: 10 minutes 34.53 seconds. Current RSS: ~1552M. load average: 1.12 1.09 1.05 1/291 12828


    when MR cannot be merged and has no merge ref
      returns ServiceResponse.error
      behaves like unmergeable merge request
        updates or keeps merge status as cannot_be_merged
        does not change the merge ref HEAD
        returns ServiceResponse.error
# [RSpecRunTime] RSpec elapsed time: 10 minutes 39.42 seconds. Current RSS: ~1559M. load average: 1.11 1.08 1.05 1/291 13021


    when MR cannot be merged and has outdated merge ref
      returns ServiceResponse.error
      behaves like unmergeable merge request
        updates or keeps merge status as cannot_be_merged
        does not change the merge ref HEAD
        returns ServiceResponse.error
# [RSpecRunTime] RSpec elapsed time: 10 minutes 44.45 seconds. Current RSS: ~1559M. load average: 1.10 1.08 1.04 1/291 13254


    when merge request is not given
      returns ServiceResponse.error
# [RSpecRunTime] RSpec elapsed time: 10 minutes 45.7 seconds. Current RSS: ~1558M. load average: 1.33 1.13 1.06 1/291 13294


    when read-only DB
      returns ServiceResponse.error
# [RSpecRunTime] RSpec elapsed time: 10 minutes 46.91 seconds. Current RSS: ~1558M. load average: 1.33 1.13 1.06 1/291 13334


    when fails to update the merge-ref
      does not reload merge head diff
      returns ServiceResponse.error
      behaves like unmergeable merge request
        updates or keeps merge status as cannot_be_merged
        does not change the merge ref HEAD
        returns ServiceResponse.error
# [RSpecRunTime] RSpec elapsed time: 10 minutes 52.91 seconds. Current RSS: ~1559M. load average: 1.38 1.15 1.07 1/291 13574


    recheck enforced
      when MR is marked as mergeable, but repo is not mergeable and MR is not opened
        returns ServiceResponse.error
        does not change the merge status
# [RSpecRunTime] RSpec elapsed time: 10 minutes 55.31 seconds. Current RSS: ~1558M. load average: 1.43 1.16 1.07 1/291 13657


      when MR is mergeable but merge-ref does not exists
        behaves like mergeable merge request
          updates or keeps merge status as can_be_merged
          reloads merge head diff
          update diff discussion positions
          updates the merge ref
          returns ServiceResponse.success
          ServiceResponse has merge_ref_head payload
# [RSpecRunTime] RSpec elapsed time: 11 minutes 4.13 seconds. Current RSS: ~1542M. load average: 1.40 1.16 1.07 1/291 14158


      when MR is mergeable but merge-ref is already updated
        returns ServiceResponse.success
        does not recreate the merge-ref
        does not reload merge head diff
# [RSpecRunTime] RSpec elapsed time: 11 minutes 7.94 seconds. Current RSS: ~1540M. load average: 1.45 1.17 1.08 1/291 14330



# [RSpecRunTime] Finishing example group spec/services/merge_requests/mergeability_check_service_spec.rb. It took 1 minute 2.01 seconds. Expected to take 1 minute 12.15 seconds.
# [RSpecRunTime] Starting example group spec/models/protected_branch_spec.rb. Expected to take 1 minute 3.33 seconds.

ProtectedBranch
  does not allow STI
  Associations
    is expected to belong to project required: false
    is expected to belong to group required: false
    is expected to have many merge_access_levels inverse_of => protected_branch
    is expected to have many push_access_levels inverse_of => protected_branch
  Validation
    is expected to validate that :name cannot be empty/falsy
    uniqueness
      is expected to validate that :name is case-sensitively unique within the scope of :project_id and :namespace_id
      when the protected_branch was saved previously
        is expected not to validate that :name is case-sensitively unique
        and name is changed
          is expected to validate that :name is case-sensitively unique within the scope of :project_id and :namespace_id
# [RSpecRunTime] RSpec elapsed time: 11 minutes 10.38 seconds. Current RSS: ~1548M. load average: 1.41 1.17 1.08 1/291 14331


    #validate_either_project_or_top_group
      when protected branch does not have project or group association
        validate failed
      when protected branch is associated with both project and group
        validate failed
      when protected branch is associated with a subgroup
        validate failed
  set a group
    when associated with group
      create successfully
    when associated with other namespace
      create failed with `ActiveRecord::AssociationTypeMismatch`
  #matches?
    when the protected branch setting is not a wildcard
      returns true for branch names that are an exact match
      returns false for branch names that are not an exact match
    when the protected branch name contains wildcard(s)
      when there is a single '*'
        returns true for branch names matching the wildcard
        returns false for branch names not matching the wildcard
      when the wildcard contains regex symbols other than a '*'
        returns true for branch names matching the wildcard
        returns false for branch names not matching the wildcard
      when there are '*'s at either end
        returns true for branch names matching the wildcard
        returns false for branch names not matching the wildcard
      when there are arbitrarily placed '*'s
        returns true for branch names matching the wildcard
        returns false for branch names not matching the wildcard
  #matching
    for direct matches
      returns a list of protected branches matching the given branch name
      accepts a list of protected branches to search from, so as to avoid a DB call
    for wildcard matches
      returns a list of protected branches matching the given branch name
      accepts a list of protected branches to search from, so as to avoid a DB call
  #protected?
    existing project
      returns true when the branch matches a protected branch via direct match
      returns true when the branch matches a protected branch via wildcard match
      returns false when the branch does not match a protected branch via direct match
      returns false when the branch does not match a protected branch via wildcard match
      returns false when branch name is nil
      with caching
        correctly invalidates a cache
        correctly uses the cached version
        when project is updated
          does not invalidate a cache
# [RSpecRunTime] RSpec elapsed time: 11 minutes 18.37 seconds. Current RSS: ~1581M. load average: 1.38 1.17 1.08 1/287 14374


        when other project protected branch is updated
          does not invalidate the current project cache
    new project
      when feature flag `default_branch_protection_defaults` is disabled
        when the group has set their own default_branch_protection level
          default_branch_protection_level: 0, result: false
            protects the default branch based on the default branch protection setting of the group
          default_branch_protection_level: 1, result: false
            protects the default branch based on the default branch protection setting of the group
          default_branch_protection_level: 3, result: true
            protects the default branch based on the default branch protection setting of the group
          default_branch_protection_level: 2, result: true
            protects the default branch based on the default branch protection setting of the group
        when the group has not set their own default_branch_protection level
          default_branch_protection_level: 0, result: false
            protects the default branch based on the instance level default branch protection setting
          default_branch_protection_level: 1, result: false
            protects the default branch based on the instance level default branch protection setting
          default_branch_protection_level: 3, result: true
            protects the default branch based on the instance level default branch protection setting
          default_branch_protection_level: 2, result: true
            protects the default branch based on the instance level default branch protection setting
      when feature flag `default_branch_protection_defaults` is enabled
        when the group has set their own default_branch_protection level
          default_branch_protection_level: {:allowed_to_push=>[{"access_level"=>30}], :allowed_to_merge=>[{"access_level"=>30}], :allow_force_push=>true}, result: false
            protects the default branch based on the default branch protection setting of the group
          default_branch_protection_level: {:allowed_to_push=>[{"access_level"=>30}], :allowed_to_merge=>[{"access_level"=>40}], :allow_force_push=>false}, result: false
            protects the default branch based on the default branch protection setting of the group
          default_branch_protection_level: {:allowed_to_push=>[{"access_level"=>40}], :allowed_to_merge=>[{"access_level"=>30}], :allow_force_push=>false}, result: true
            protects the default branch based on the default branch protection setting of the group
          default_branch_protection_level: {:allowed_to_push=>[{"access_level"=>40}], :allowed_to_merge=>[{"access_level"=>40}], :allow_force_push=>false}, result: true
            protects the default branch based on the default branch protection setting of the group
        when the group has not set their own default_branch_protection level
          default_branch_protection_level: {:allowed_to_push=>[{"access_level"=>30}], :allowed_to_merge=>[{"access_level"=>30}], :allow_force_push=>true}, result: false
            protects the default branch based on the instance level default branch protection setting
          default_branch_protection_level: {:allowed_to_push=>[{"access_level"=>30}], :allowed_to_merge=>[{"access_level"=>40}], :allow_force_push=>false}, result: false
            protects the default branch based on the instance level default branch protection setting
          default_branch_protection_level: {:allowed_to_push=>[{"access_level"=>40}], :allowed_to_merge=>[{"access_level"=>30}], :allow_force_push=>false}, result: true
            protects the default branch based on the instance level default branch protection setting
          default_branch_protection_level: {:allowed_to_push=>[{"access_level"=>40}], :allowed_to_merge=>[{"access_level"=>40}], :allow_force_push=>false}, result: true
            protects the default branch based on the instance level default branch protection setting
  #allow_force_push?
    when feature flag disabled
      when the attr allow_force_push is true
        returns true
      when the attr allow_force_push is false
        returns false
    when feature flag enabled
      group_level_value: true, project_level_value: false, result: true
        returns result
      group_level_value: false, project_level_value: true, result: false
        returns result
      group_level_value: true, project_level_value: nil, result: true
        returns result
      group_level_value: false, project_level_value: nil, result: false
        returns result
      group_level_value: nil, project_level_value: nil, result: false
        returns result
  #any_protected?
    existing project
      returns true when any of the branch names match a protected branch via direct match
      returns true when any of the branch matches a protected branch via wildcard match
      returns false when none of branches does not match a protected branch via direct match
      returns false when none of the branches does not match a protected branch via wildcard match
# [RSpecRunTime] RSpec elapsed time: 11 minutes 31.26 seconds. Current RSS: ~1547M. load average: 1.29 1.16 1.07 1/285 14399


  .protected_refs
    when feature flag enabled
      call `all_protected_branches`
    when feature flag disabled
      call `protected_branches`
  .protected_ref_accessible_to?
    with guest
      is expected to eq false
# [RSpecRunTime] RSpec elapsed time: 11 minutes 32.94 seconds. Current RSS: ~1543M. load average: 1.29 1.16 1.07 1/285 14400


    with reporter
      is expected to eq false
    with developer
      is expected to eq false
    with maintainer
      is expected to eq true
    with owner
      is expected to eq true
    with admin
      is expected to eq true
    when project is an empty repository
      when user is an admin
        is expected to eq true
      when user is maintainer
        is expected to eq true
      when user is developer and initial push is allowed
        is expected to eq true
      when user is developer and initial push is not allowed
        is expected to eq false
  .by_name
    returns protected branches with a matching name
    returns protected branches with a partially matching name
    returns protected branches with a matching name regardless of the casing
    returns nothing when nothing matches
    return nothing when query is blank
# [RSpecRunTime] RSpec elapsed time: 11 minutes 43.06 seconds. Current RSS: ~1491M. load average: 1.25 1.15 1.07 1/285 14401


  .get_ids_by_name
    returns the id for each protected branch matching name
  .downcase_humanized_name
    returns downcase humanized name
  .default_branch?
    when the name matches the default branch
      is expected to be default branch
    when the name does not match the default branch
      is expected not to be default branch
    when a wildcard name matches the default branch
      is expected not to be default branch
  #group_level?
    when entity is a Group
      is expected to be group level
    when entity is a Project
      is expected not to be group level

# [RSpecRunTime] Finishing example group spec/models/protected_branch_spec.rb. It took 36.33 seconds. Expected to take 1 minute 3.33 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/database/migrations/background_migration_helpers_spec.rb. Expected to take 51.82 seconds.

Gitlab::Database::Migrations::BackgroundMigrationHelpers
  when the migration is running against the main database
    behaves like helpers that enqueue background migrations
      #queue_background_migration_jobs_by_range_at_intervals
        when the model has an ID column
-- Scheduled 2 FooJob jobs with a maximum of 2 records per batch and an interval of 600 seconds.

The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2024-03-08 06:40:36 UTC."
          returns the final expected delay
-- Scheduled 0 FooJob jobs with a maximum of 1000 records per batch and an interval of 600 seconds.

The migration is expected to take at least 0 seconds. Expect all jobs to have completed after 2024-03-08 06:20:36 UTC."
          returns zero when nothing gets queued
          when the delay_interval is smaller than the minimum
-- Scheduled 2 FooJob jobs with a maximum of 2 records per batch and an interval of 120 seconds.

The migration is expected to take at least 240 seconds. Expect all jobs to have completed after 2024-03-08 06:24:36 UTC."
            sets the delay_interval to the minimum value
          with batch_size option
-- Scheduled 2 FooJob jobs with a maximum of 2 records per batch and an interval of 600 seconds.

The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2024-03-08 06:40:37 UTC."
            queues jobs correctly
          without batch_size option
-- Scheduled 1 FooJob jobs with a maximum of 1000 records per batch and an interval of 600 seconds.

The migration is expected to take at least 600 seconds. Expect all jobs to have completed after 2024-03-08 06:30:37 UTC."
            queues jobs correctly
          with other_job_arguments option
-- Scheduled 1 FooJob jobs with a maximum of 1000 records per batch and an interval of 600 seconds.

The migration is expected to take at least 600 seconds. Expect all jobs to have completed after 2024-03-08 06:30:37 UTC."
            queues jobs correctly
          with initial_delay option
-- Scheduled 1 FooJob jobs with a maximum of 1000 records per batch and an interval of 600 seconds.

The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2024-03-08 06:40:37 UTC."
            queues jobs correctly
          with track_jobs option
-- Scheduled 1 ::FooJob jobs with a maximum of 1000 records per batch and an interval of 600 seconds.

The migration is expected to take at least 600 seconds. Expect all jobs to have completed after 2024-03-08 06:30:38 UTC."
            creates a record for each job in the database
          without track_jobs option
-- Scheduled 1 FooJob jobs with a maximum of 1000 records per batch and an interval of 600 seconds.

The migration is expected to take at least 600 seconds. Expect all jobs to have completed after 2024-03-08 06:30:38 UTC."
            does not create records in the database
        when the model specifies a primary_column_name
-- Scheduled 2 FooJob jobs with a maximum of 2 records per batch and an interval of 600 seconds.

The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2024-03-08 06:40:38 UTC."
          returns the final expected delay
          when the primary_column_name is a string
-- Scheduled 1 FooJob jobs with a maximum of 1000 records per batch and an interval of 600 seconds.

The migration is expected to take at least 600 seconds. Expect all jobs to have completed after 2024-03-08 06:30:39 UTC."
            does not raise error
# [RSpecRunTime] RSpec elapsed time: 11 minutes 48.67 seconds. Current RSS: ~1501M. load average: 1.23 1.15 1.07 1/285 14402


          when the primary_column_name is not an integer or a string
            raises error
          when the primary_column_name does not exist
            raises error
        when the model doesn't have an ID or primary_column_name column
          raises error (for now)
        when using Migration[2.0]
          when restriction is set to gitlab_shared
            does raise an exception
        when within transaction
          does raise an exception
      #requeue_background_migration_jobs_by_range_at_intervals
-- Scheduled 2 TestJob jobs with an interval of 600 seconds.

The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2024-03-08 06:40:42 UTC."
        returns the expected duration
-- Scheduled 2 TestJob jobs with an interval of 600 seconds.

The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2024-03-08 06:40:42 UTC."
        queues pending jobs
        when using Migration[2.0]
main: -- Scheduled 2 TestJob jobs with an interval of 600 seconds.

The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2024-03-08 06:40:42 UTC."
          does re-enqueue pending jobs
          when restriction is set
            does raise an exception
        when within transaction
          does raise an exception
        when nothing is queued
-- Scheduled 0 FakeJob jobs with an interval of 600 seconds.

The migration is expected to take at least 0 seconds. Expect all jobs to have completed after 2024-03-08 06:20:43 UTC."
          returns expected duration of zero when nothing gets queued
        with batch_size option
-- Scheduled 2 TestJob jobs with an interval of 600 seconds.

The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2024-03-08 06:40:43 UTC."
          returns the expected duration
-- Scheduled 2 TestJob jobs with an interval of 600 seconds.

The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2024-03-08 06:40:43 UTC."
          queues pending jobs
-- Scheduled 0 TestJob jobs with an interval of 600 seconds.

The migration is expected to take at least 0 seconds. Expect all jobs to have completed after 2024-03-08 06:20:43 UTC."
          retrieve jobs in batches
        with initial_delay option
-- Scheduled 2 TestJob jobs with an interval of 600 seconds.

The migration is expected to take at least 1380 seconds. Expect all jobs to have completed after 2024-03-08 06:43:43 UTC."
          returns the expected duration
-- Scheduled 2 TestJob jobs with an interval of 600 seconds.

The migration is expected to take at least 1380 seconds. Expect all jobs to have completed after 2024-03-08 06:43:43 UTC."
          queues pending jobs
          when nothing is queued
-- Scheduled 0 FakeJob jobs with an interval of 600 seconds.

The migration is expected to take at least 0 seconds. Expect all jobs to have completed after 2024-03-08 06:20:43 UTC."
            returns expected duration of zero when nothing gets queued
      #finalize_background_migration
        behaves like finalized tracked background migration
          processed the scheduled sidekiq queue
          processed the async sidekiq queue
          removes 'pending' tracked jobs
          removes 'succeeded' tracked jobs
        when within transaction
          does raise an exception
        when using Migration[2.0]
          behaves like finalized tracked background migration
            processed the scheduled sidekiq queue
            processed the async sidekiq queue
            removes 'pending' tracked jobs
            removes 'succeeded' tracked jobs
          when restriction is set
            does raise an exception
        when running migration in reconfigured ActiveRecord::Base context
          behaves like reconfigures connection stack
            does restore connection hierarchy
        when removing all tracked job records
          behaves like finalized tracked background migration
            processed the scheduled sidekiq queue
            processed the async sidekiq queue
            removes 'pending' tracked jobs
            removes 'succeeded' tracked jobs
          behaves like removed tracked jobs
            removes 'pending' tracked jobs
          behaves like removed tracked jobs
            removes 'succeeded' tracked jobs
        when retaining all tracked job records
          retains 'succeeded' tracked jobs
          behaves like finalized background migration
            processed the scheduled sidekiq queue
            processed the async sidekiq queue
            removes 'pending' tracked jobs
        during retry race condition
          behaves like finalized tracked background migration
            processed the scheduled sidekiq queue
            processed the async sidekiq queue
            removes 'pending' tracked jobs
            removes 'succeeded' tracked jobs
      #migrate_in
        calls perform_in for the correct worker
        pushes a context with the current class name as caller_id
        when a specific coordinator is given
          uses that coordinator
      #delete_queued_jobs
        deletes all queued jobs for the given background migration
  when the migration is running against the ci database
    behaves like helpers that enqueue background migrations
      #queue_background_migration_jobs_by_range_at_intervals
        when the model has an ID column
-- Scheduled 2 FooJob jobs with a maximum of 2 records per batch and an interval of 600 seconds.

The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2024-03-08 06:40:47 UTC."
          returns the final expected delay
-- Scheduled 0 FooJob jobs with a maximum of 1000 records per batch and an interval of 600 seconds.

The migration is expected to take at least 0 seconds. Expect all jobs to have completed after 2024-03-08 06:20:48 UTC."
          returns zero when nothing gets queued
          when the delay_interval is smaller than the minimum
-- Scheduled 2 FooJob jobs with a maximum of 2 records per batch and an interval of 120 seconds.

The migration is expected to take at least 240 seconds. Expect all jobs to have completed after 2024-03-08 06:24:48 UTC."
            sets the delay_interval to the minimum value
          with batch_size option
-- Scheduled 2 FooJob jobs with a maximum of 2 records per batch and an interval of 600 seconds.

The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2024-03-08 06:40:48 UTC."
            queues jobs correctly
          without batch_size option
-- Scheduled 1 FooJob jobs with a maximum of 1000 records per batch and an interval of 600 seconds.

The migration is expected to take at least 600 seconds. Expect all jobs to have completed after 2024-03-08 06:30:48 UTC."
            queues jobs correctly
          with other_job_arguments option
-- Scheduled 1 FooJob jobs with a maximum of 1000 records per batch and an interval of 600 seconds.

The migration is expected to take at least 600 seconds. Expect all jobs to have completed after 2024-03-08 06:30:49 UTC."
            queues jobs correctly
          with initial_delay option
-- Scheduled 1 FooJob jobs with a maximum of 1000 records per batch and an interval of 600 seconds.

The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2024-03-08 06:40:49 UTC."
            queues jobs correctly
          with track_jobs option
-- Scheduled 1 ::FooJob jobs with a maximum of 1000 records per batch and an interval of 600 seconds.

The migration is expected to take at least 600 seconds. Expect all jobs to have completed after 2024-03-08 06:30:49 UTC."
            creates a record for each job in the database
          without track_jobs option
-- Scheduled 1 FooJob jobs with a maximum of 1000 records per batch and an interval of 600 seconds.

The migration is expected to take at least 600 seconds. Expect all jobs to have completed after 2024-03-08 06:30:50 UTC."
            does not create records in the database
        when the model specifies a primary_column_name
-- Scheduled 2 FooJob jobs with a maximum of 2 records per batch and an interval of 600 seconds.

The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2024-03-08 06:40:50 UTC."
          returns the final expected delay
          when the primary_column_name is a string
-- Scheduled 1 FooJob jobs with a maximum of 1000 records per batch and an interval of 600 seconds.

The migration is expected to take at least 600 seconds. Expect all jobs to have completed after 2024-03-08 06:30:51 UTC."
            does not raise error
# [RSpecRunTime] RSpec elapsed time: 12 minutes 0.35 second. Current RSS: ~1507M. load average: 1.19 1.14 1.07 2/286 14403


          when the primary_column_name is not an integer or a string
            raises error
          when the primary_column_name does not exist
            raises error
        when the model doesn't have an ID or primary_column_name column
          raises error (for now)
        when using Migration[2.0]
          when restriction is set to gitlab_shared
            does raise an exception
        when within transaction
          does raise an exception
      #requeue_background_migration_jobs_by_range_at_intervals
-- Scheduled 2 TestJob jobs with an interval of 600 seconds.

The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2024-03-08 06:40:54 UTC."
        returns the expected duration
-- Scheduled 2 TestJob jobs with an interval of 600 seconds.

The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2024-03-08 06:40:54 UTC."
        queues pending jobs
        when using Migration[2.0]
ci: -- Scheduled 2 TestJob jobs with an interval of 600 seconds.

The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2024-03-08 06:40:54 UTC."
          does re-enqueue pending jobs
          when restriction is set
            does raise an exception
        when within transaction
          does raise an exception
        when nothing is queued
-- Scheduled 0 FakeJob jobs with an interval of 600 seconds.

The migration is expected to take at least 0 seconds. Expect all jobs to have completed after 2024-03-08 06:20:54 UTC."
          returns expected duration of zero when nothing gets queued
        with batch_size option
-- Scheduled 2 TestJob jobs with an interval of 600 seconds.

The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2024-03-08 06:40:54 UTC."
          returns the expected duration
-- Scheduled 2 TestJob jobs with an interval of 600 seconds.

The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2024-03-08 06:40:55 UTC."
          queues pending jobs
-- Scheduled 0 TestJob jobs with an interval of 600 seconds.

The migration is expected to take at least 0 seconds. Expect all jobs to have completed after 2024-03-08 06:20:55 UTC."
          retrieve jobs in batches
        with initial_delay option
-- Scheduled 2 TestJob jobs with an interval of 600 seconds.

The migration is expected to take at least 1380 seconds. Expect all jobs to have completed after 2024-03-08 06:43:55 UTC."
          returns the expected duration
-- Scheduled 2 TestJob jobs with an interval of 600 seconds.

The migration is expected to take at least 1380 seconds. Expect all jobs to have completed after 2024-03-08 06:43:55 UTC."
          queues pending jobs
          when nothing is queued
-- Scheduled 0 FakeJob jobs with an interval of 600 seconds.

The migration is expected to take at least 0 seconds. Expect all jobs to have completed after 2024-03-08 06:20:55 UTC."
            returns expected duration of zero when nothing gets queued
      #finalize_background_migration
        behaves like finalized tracked background migration
          processed the scheduled sidekiq queue
          processed the async sidekiq queue
          removes 'pending' tracked jobs
          removes 'succeeded' tracked jobs
        when within transaction
          does raise an exception
        when using Migration[2.0]
          behaves like finalized tracked background migration
            processed the scheduled sidekiq queue
            processed the async sidekiq queue
            removes 'pending' tracked jobs
            removes 'succeeded' tracked jobs
          when restriction is set
            does raise an exception
        when running migration in reconfigured ActiveRecord::Base context
          behaves like reconfigures connection stack
            does restore connection hierarchy
        when removing all tracked job records
          behaves like finalized tracked background migration
            processed the scheduled sidekiq queue
            processed the async sidekiq queue
            removes 'pending' tracked jobs
            removes 'succeeded' tracked jobs
          behaves like removed tracked jobs
            removes 'pending' tracked jobs
          behaves like removed tracked jobs
            removes 'succeeded' tracked jobs
        when retaining all tracked job records
          retains 'succeeded' tracked jobs
          behaves like finalized background migration
            processed the scheduled sidekiq queue
            processed the async sidekiq queue
            removes 'pending' tracked jobs
        during retry race condition
          behaves like finalized tracked background migration
            processed the scheduled sidekiq queue
            processed the async sidekiq queue
            removes 'pending' tracked jobs
            removes 'succeeded' tracked jobs
      #migrate_in
        calls perform_in for the correct worker
        pushes a context with the current class name as caller_id
        when a specific coordinator is given
          uses that coordinator
      #delete_queued_jobs
        deletes all queued jobs for the given background migration
  #delete_job_tracking
    with default status
      retains 'pending' tracked jobs
      removes 'succeeded' tracked jobs
    with explicit status
      removes 'pending' tracked jobs
      removes 'succeeded' tracked jobs

# [RSpecRunTime] Finishing example group spec/lib/gitlab/database/migrations/background_migration_helpers_spec.rb. It took 24.38 seconds. Expected to take 51.82 seconds.
# [RSpecRunTime] Starting example group spec/models/concerns/milestoneish_spec.rb. Expected to take 47.25 seconds.

Milestone Milestoneish
  does not allow STI
  #sorted_issues
    sorts issues by label priority
    limits issue count and keeps the ordering
# [RSpecRunTime] RSpec elapsed time: 12 minutes 11.37 seconds. Current RSS: ~1518M. load average: 1.16 1.14 1.07 1/287 14412


  with attributes visibility
    #issue_participants_visible_by_user
      visibility: :public, user_role: nil, result: [:member]
        returns the proper participants
      visibility: :public, user_role: :non_member, result: [:member]
        returns the proper participants
      visibility: :public, user_role: :guest, result: [:member]
        returns the proper participants
      visibility: :public, user_role: :member, result: [:member, :assignee]
        returns the proper participants
      visibility: :internal, user_role: nil, result: []
        returns the proper participants
      visibility: :internal, user_role: :non_member, result: [:member]
        returns the proper participants
      visibility: :internal, user_role: :guest, result: [:member]
        returns the proper participants
      visibility: :internal, user_role: :member, result: [:member, :assignee]
        returns the proper participants
      visibility: :private, user_role: nil, result: []
        returns the proper participants
      visibility: :private, user_role: :non_member, result: []
        returns the proper participants
      visibility: :private, user_role: :guest, result: [:member]
        returns the proper participants
      visibility: :private, user_role: :member, result: [:member, :assignee]
        returns the proper participants
    #issue_labels_visible_by_user
      visibility: :public, user_role: nil, result: [:label1]
        returns the proper participants
      visibility: :public, user_role: :non_member, result: [:label1]
        returns the proper participants
      visibility: :public, user_role: :guest, result: [:label1]
        returns the proper participants
      visibility: :public, user_role: :member, result: [:label1, :label2]
        returns the proper participants
      visibility: :internal, user_role: nil, result: []
        returns the proper participants
      visibility: :internal, user_role: :non_member, result: [:label1]
        returns the proper participants
      visibility: :internal, user_role: :guest, result: [:label1]
        returns the proper participants
      visibility: :internal, user_role: :member, result: [:label1, :label2]
        returns the proper participants
      visibility: :private, user_role: nil, result: []
        returns the proper participants
      visibility: :private, user_role: :non_member, result: []
        returns the proper participants
      visibility: :private, user_role: :guest, result: [:label1]
        returns the proper participants
      visibility: :private, user_role: :member, result: [:label1, :label2]
        returns the proper participants
  #sorted_merge_requests
    sorts merge requests by label priority
  #merge_requests_visible_to_user
    when project is private
      does not return any merge request for a non member
      returns milestone merge requests for a member
    when project is public
      when merge requests are available to anyone
        returns milestone merge requests for a non member
      when merge requests are available to project members
        does not return any merge request for a non member
        returns milestone merge requests for a member
    when milestone is at parent level group
      does not return any merge request for a non member
      returns milestone merge requests for a member
# [RSpecRunTime] RSpec elapsed time: 12 minutes 26.56 seconds. Current RSS: ~1501M. load average: 1.12 1.13 1.07 1/290 14436


  #complete?
    returns false when has items opened
    returns true when all items are closed
  #percent_complete
    with division by zero
      is expected to eq 0
  #closed_issues_count
    counts all closed issues including confidential
  #total_issues_count
    counts all issues including confidential
  #total_merge_requests_count
    counts merge requests
  #remaining_days
    shows 0 if no due date
    shows 0 if expired
    shows correct remaining days
# [RSpecRunTime] RSpec elapsed time: 12 minutes 31.46 seconds. Current RSS: ~1497M. load average: 1.11 1.13 1.07 1/290 14437


  #elapsed_days
    shows 0 if no start_date set
    shows 0 if start_date is a future
    shows correct amount of days
# [RSpecRunTime] RSpec elapsed time: 12 minutes 33.67 seconds. Current RSS: ~1488M. load average: 1.11 1.13 1.07 1/287 14438


  #total_time_spent
    calculates total time spent
    includes merge request time spent
# [RSpecRunTime] RSpec elapsed time: 12 minutes 34.75 seconds. Current RSS: ~1486M. load average: 1.11 1.13 1.07 1/287 14439


  #human_total_time_spent
    returns nil if no time has been spent
  #total_time_estimate
    calculates total estimate
    includes merge request time estimate
  #human_total_time_estimate
    returns nil if no time has been spent
  #expires_at
    returns the date when milestone expires
    returns the date when milestone expires

# [RSpecRunTime] Finishing example group spec/models/concerns/milestoneish_spec.rb. It took 28.46 seconds. Expected to take 47.25 seconds.
# [RSpecRunTime] Starting example group spec/views/search/_results.html.haml_spec.rb. Expected to take 43.49 seconds.

search/_results
  page size
    when search results have a count
      displays the page size
# [RSpecRunTime] RSpec elapsed time: 12 minutes 39.43 seconds. Current RSS: ~1491M. load average: 1.18 1.14 1.07 1/285 14440


    when search results do not have a count
      does not display the page size
# [RSpecRunTime] RSpec elapsed time: 12 minutes 41.03 seconds. Current RSS: ~1480M. load average: 1.17 1.14 1.07 1/285 14441


  when searching notes which contain quotes in markdown
    renders plain quotes
# [RSpecRunTime] RSpec elapsed time: 12 minutes 43.07 seconds. Current RSS: ~1478M. load average: 1.17 1.14 1.07 1/285 14442


  rendering all types of search results
    when scope is issues
      when admin mode is enabled
        renders the click text event tracking attributes
# [RSpecRunTime] RSpec elapsed time: 12 minutes 46.03 seconds. Current RSS: ~1471M. load average: 1.16 1.14 1.07 1/291 14516


      when admin mode is disabled
        does not render the click text event tracking attributes
# [RSpecRunTime] RSpec elapsed time: 12 minutes 47.59 seconds. Current RSS: ~1469M. load average: 1.16 1.14 1.07 1/290 14517


    when scope is merge_requests
      when admin mode is enabled
        renders the click text event tracking attributes
# [RSpecRunTime] RSpec elapsed time: 12 minutes 49.26 seconds. Current RSS: ~1463M. load average: 1.16 1.14 1.07 1/290 14518


      when admin mode is disabled
        does not render the click text event tracking attributes
# [RSpecRunTime] RSpec elapsed time: 12 minutes 50.85 seconds. Current RSS: ~1460M. load average: 1.14 1.13 1.07 1/290 14519


    git blame click tracking
      when admin mode is enabled
        renders the click link event tracking attributes
# [RSpecRunTime] RSpec elapsed time: 12 minutes 53.8 seconds. Current RSS: ~1462M. load average: 1.14 1.13 1.07 1/290 14523


      when admin mode is disabled
        does not render the click link event tracking attributes
# [RSpecRunTime] RSpec elapsed time: 12 minutes 55.37 seconds. Current RSS: ~1460M. load average: 1.13 1.13 1.07 1/285 14524


    when scope is blobs
      does not render the sidebar
      when admin mode is enabled
        renders the click text event tracking attributes
# [RSpecRunTime] RSpec elapsed time: 12 minutes 58.51 seconds. Current RSS: ~1475M. load average: 1.13 1.13 1.07 1/285 14528


      when admin mode is disabled
        does not render the click text event tracking attributes
# [RSpecRunTime] RSpec elapsed time: 13 minutes 0.15 second. Current RSS: ~1480M. load average: 1.12 1.13 1.07 1/285 14529


    when scope is notes
      does not render the sidebar
      when admin mode is enabled
        renders the click text event tracking attributes
# [RSpecRunTime] RSpec elapsed time: 13 minutes 3.49 seconds. Current RSS: ~1488M. load average: 1.12 1.13 1.07 1/286 14530


      when admin mode is disabled
        does not render the click text event tracking attributes
# [RSpecRunTime] RSpec elapsed time: 13 minutes 5.2 seconds. Current RSS: ~1491M. load average: 1.11 1.13 1.07 1/286 14531


    when scope is wiki_blobs
      does not render the sidebar
      when admin mode is enabled
        renders the click text event tracking attributes
# [RSpecRunTime] RSpec elapsed time: 13 minutes 8.38 seconds. Current RSS: ~1492M. load average: 1.11 1.13 1.07 1/285 14539


      when admin mode is disabled
        does not render the click text event tracking attributes
# [RSpecRunTime] RSpec elapsed time: 13 minutes 9.94 seconds. Current RSS: ~1492M. load average: 1.11 1.13 1.07 1/285 14540


    when scope is milestones
      does not render the sidebar
      when admin mode is enabled
        renders the click text event tracking attributes
# [RSpecRunTime] RSpec elapsed time: 13 minutes 13.04 seconds. Current RSS: ~1490M. load average: 1.10 1.12 1.07 1/285 14541


      when admin mode is disabled
        does not render the click text event tracking attributes
# [RSpecRunTime] RSpec elapsed time: 13 minutes 14.6 seconds. Current RSS: ~1490M. load average: 1.10 1.12 1.07 1/285 14542



# [RSpecRunTime] Finishing example group spec/views/search/_results.html.haml_spec.rb. It took 37.42 seconds. Expected to take 43.49 seconds.
# [RSpecRunTime] Starting example group spec/scripts/internal_events/cli_spec.rb. Expected to take 40.84 seconds.

Cli
  behaves like definition fixtures are valid
    for events
  when offline
    behaves like creates the right defintion files
      in scenario: Creates a new event with product stage/section/group input manually
    behaves like creates the right defintion files
tput: No value for $TERM and no -T specified
      in scenario: Creates a new metric with product stage/section/group input manually
# [RSpecRunTime] RSpec elapsed time: 13 minutes 16.67 seconds. Current RSS: ~1536M. load average: 1.09 1.12 1.07 1/286 14545


  when window size is unavailable
    behaves like creates the right defintion files
      in scenario: Terminal size does not prevent file creation
  when creating new events
    behaves like creates the right defintion files
      in scenario: Creates a new event and flows directly into metric creation
    behaves like creates the right defintion files
      in scenario: Requires description & action before continuing
    behaves like creates the right defintion files
      in scenario: Does not allow existing events for action
    behaves like creates the right defintion files
      in scenario: Creates a new event without identifiers
    behaves like creates the right defintion files
      in scenario: Smashing the keyboard/return creates an event & metrics with the most common attributes, then shows usage
    behaves like creates the right defintion files
      in scenario: Creates an event after helping the user figure out next steps
    behaves like creates the right defintion files
      in scenario: Creates a new event and flows directly into usage examples
    behaves like creates the right defintion files
      in scenario: Skips event creation, then saves event & flows directly into metric creation
    with invalid event name
      prompts user to select another name
  when user doesn't know what they're trying to do
    handles when user isn't trying to track product usage
    handles when product usage can't be tracked with events
    handles when user needs to add a new event
    handles when user needs to add a new metric
  when showing usage examples
    for an event with identifiers
      shows backend examples
    for an event without identifiers
      shows all examples
    when viewing examples for multiple events
      switches between events gracefully (FAILED - 1)
# [RSpecRunTime] RSpec elapsed time: 13 minutes 41.75 seconds. Current RSS: ~1616M. load average: 0.85 1.06 1.05 1/285 14546


  behaves like definition fixtures are valid
    for metrics
  when creating new metrics
    behaves like creates the right defintion files
tput: No value for $TERM and no -T specified
      in scenario: Create a weekly/monthly metric for a single event
    behaves like creates the right defintion files
tput: No value for $TERM and no -T specified
      in scenario: Create a weekly/monthly metric for a multiple events, but select only one event
    behaves like creates the right defintion files
tput: No value for $TERM and no -T specified
      in scenario: Create a weekly/monthly metric for multiple events
    behaves like creates the right defintion files
tput: No value for $TERM and no -T specified
      in scenario: Create an all time total metric for a single event
    behaves like creates the right defintion files
      in scenario: Try to create a database metric
    behaves like creates the right defintion files
tput: No value for $TERM and no -T specified
      in scenario: Create an all time total metric for a single event, and confirm each attribute copied from event
    behaves like creates the right defintion files
tput: No value for $TERM and no -T specified
      in scenario: Create a metric after helping the user figure out next steps
    behaves like creates the right defintion files
tput: No value for $TERM and no -T specified
      in scenario: User overwrites metric that already exists
    behaves like creates the right defintion files
tput: No value for $TERM and no -T specified
      in scenario: User opts not to overwrite metric that already exists
    when creating a metric from multiple events
tput: No value for $TERM and no -T specified
      filters the product group options based on common section
tput: No value for $TERM and no -T specified
      filters the product group options based on common section & stage
# [RSpecRunTime] RSpec elapsed time: 13 minutes 50.46 seconds. Current RSS: ~1728M. load average: 0.87 1.06 1.05 1/286 14558


    when product group for event no longer exists
tput: No value for $TERM and no -T specified
      prompts user to select another group
    when creating a metric for an event which has metrics
tput: No value for $TERM and no -T specified
      shows all metrics options
      with an existing weekly metric
tput: No value for $TERM and no -T specified
        partially filters metric options
# [RSpecRunTime] RSpec elapsed time: 13 minutes 53.02 seconds. Current RSS: ~1737M. load average: 0.87 1.06 1.05 2/286 14562


      with an existing total metric
tput: No value for $TERM and no -T specified
        filters whole metric options
    when event excludes identifiers
tput: No value for $TERM and no -T specified
      filters unavailable identifiers
    when all metrics already exist
tput: No value for $TERM and no -T specified
      exits the script and directs user to search for existing metrics

# [RSpecRunTime] Finishing example group spec/scripts/internal_events/cli_spec.rb. It took 40.92 seconds. Expected to take 40.84 seconds.
# [RSpecRunTime] Starting example group spec/finders/ci/runner_jobs_finder_spec.rb. Expected to take 36.85 seconds.

Ci::RunnerJobsFinder
  #execute
    when params is empty
      returns all jobs assigned to Runner
# [RSpecRunTime] RSpec elapsed time: 13 minutes 58.67 seconds. Current RSS: ~1686M. load average: 0.88 1.06 1.05 1/285 14566


    when the user has guest access
      does not returns jobs the user does not have permission to see
# [RSpecRunTime] RSpec elapsed time: 13 minutes 59.99 seconds. Current RSS: ~1634M. load average: 0.88 1.06 1.05 1/285 14567


    when the user is admin
      is expected to contain exactly #<Ci::Build status: "pending", finished_at: nil, created_at: "2024-03-08 08:50:29.000000000 +0000", u...: 9, partition_id: 101, auto_canceled_by_partition_id: 100, auto_canceled_by_id: nil, tag_list: nil>, #<Ci::Build status: "pending", finished_at: nil, created_at: "2024-03-08 08:50:29.000000000 +0000", u... 10, partition_id: 101, auto_canceled_by_partition_id: 100, auto_canceled_by_id: nil, tag_list: nil>, #<Ci::Build status: "pending", finished_at: nil, created_at: "2024-03-08 08:50:29.000000000 +0000", u... 11, partition_id: 101, auto_canceled_by_partition_id: 100, auto_canceled_by_id: nil, tag_list: nil>, #<Ci::Build status: "pending", finished_at: nil, created_at: "2024-03-08 08:50:29.000000000 +0000", u... 12, partition_id: 101, auto_canceled_by_partition_id: 100, auto_canceled_by_id: nil, tag_list: nil>, and #<Ci::Build status: "pending", finished_at: nil, created_at: "2024-03-08 08:50:29.000000000 +0000", u... 13, partition_id: 101, auto_canceled_by_partition_id: 100, auto_canceled_by_id: nil, tag_list: nil>
    when user is developer
      is expected to contain exactly #<Ci::Build status: "pending", finished_at: nil, created_at: "2024-03-08 08:50:29.000000000 +0000", u...: 9, partition_id: 101, auto_canceled_by_partition_id: 100, auto_canceled_by_id: nil, tag_list: nil>, #<Ci::Build status: "pending", finished_at: nil, created_at: "2024-03-08 08:50:29.000000000 +0000", u... 10, partition_id: 101, auto_canceled_by_partition_id: 100, auto_canceled_by_id: nil, tag_list: nil>, #<Ci::Build status: "pending", finished_at: nil, created_at: "2024-03-08 08:50:29.000000000 +0000", u... 11, partition_id: 101, auto_canceled_by_partition_id: 100, auto_canceled_by_id: nil, tag_list: nil>, #<Ci::Build status: "pending", finished_at: nil, created_at: "2024-03-08 08:50:29.000000000 +0000", u... 12, partition_id: 101, auto_canceled_by_partition_id: 100, auto_canceled_by_id: nil, tag_list: nil>, and #<Ci::Build status: "pending", finished_at: nil, created_at: "2024-03-08 08:50:29.000000000 +0000", u... 13, partition_id: 101, auto_canceled_by_partition_id: 100, auto_canceled_by_id: nil, tag_list: nil>
    when the user has different access levels in different projects
      returns only the jobs the user has permission to see
# [RSpecRunTime] RSpec elapsed time: 14 minutes 2.88 seconds. Current RSS: ~1587M. load average: 0.89 1.06 1.05 1/286 14568


    when the user has reporter access level or greater
      returns jobs assigned to the Runner that the user has access to
    when params contains status
      when status is created
        returns matched job
# [RSpecRunTime] RSpec elapsed time: 14 minutes 4.12 seconds. Current RSS: ~1566M. load average: 0.89 1.06 1.05 1/286 14569


      when status is waiting_for_resource
        returns matched job
# [RSpecRunTime] RSpec elapsed time: 14 minutes 5.17 seconds. Current RSS: ~1547M. load average: 0.98 1.07 1.06 1/286 14570


      when status is preparing
        returns matched job
# [RSpecRunTime] RSpec elapsed time: 14 minutes 6.27 seconds. Current RSS: ~1540M. load average: 0.98 1.07 1.06 1/286 14571


      when status is waiting_for_callback
        returns matched job
# [RSpecRunTime] RSpec elapsed time: 14 minutes 7.37 seconds. Current RSS: ~1528M. load average: 0.98 1.07 1.06 1/286 14572


      when status is pending
        returns matched job
# [RSpecRunTime] RSpec elapsed time: 14 minutes 8.49 seconds. Current RSS: ~1523M. load average: 0.98 1.07 1.06 1/286 14573


      when status is running
        returns matched job
# [RSpecRunTime] RSpec elapsed time: 14 minutes 9.67 seconds. Current RSS: ~1525M. load average: 0.98 1.07 1.06 1/286 14574


      when status is success
        returns matched job
# [RSpecRunTime] RSpec elapsed time: 14 minutes 10.86 seconds. Current RSS: ~1528M. load average: 0.98 1.07 1.05 1/286 14575


      when status is failed
        returns matched job
# [RSpecRunTime] RSpec elapsed time: 14 minutes 11.97 seconds. Current RSS: ~1528M. load average: 0.98 1.07 1.05 1/286 14576


      when status is canceling
        returns matched job
# [RSpecRunTime] RSpec elapsed time: 14 minutes 13.06 seconds. Current RSS: ~1525M. load average: 0.98 1.07 1.05 1/286 14577


      when status is canceled
        returns matched job
# [RSpecRunTime] RSpec elapsed time: 14 minutes 14.22 seconds. Current RSS: ~1525M. load average: 0.98 1.07 1.05 1/286 14578


      when status is skipped
        returns matched job
# [RSpecRunTime] RSpec elapsed time: 14 minutes 15.42 seconds. Current RSS: ~1523M. load average: 0.99 1.07 1.05 1/286 14579


      when status is manual
        returns matched job
# [RSpecRunTime] RSpec elapsed time: 14 minutes 16.55 seconds. Current RSS: ~1521M. load average: 0.99 1.07 1.05 1/286 14580


      when status is scheduled
        returns matched job
# [RSpecRunTime] RSpec elapsed time: 14 minutes 17.65 seconds. Current RSS: ~1520M. load average: 0.99 1.07 1.05 1/286 14581


    when system_id is specified
      returns jobs from the specified system
      when specified system_id does not exist
        is expected to be empty
    when order_by and sort are specified
      when order_by id and sort is asc
        sorts as id: :asc
    when order_by is specified and sort is not specified
      when order_by id and sort is not specified
        sorts as id: :desc

# [RSpecRunTime] Finishing example group spec/finders/ci/runner_jobs_finder_spec.rb. It took 23.09 seconds. Expected to take 36.85 seconds.
# [RSpecRunTime] Starting example group spec/policies/commit_policy_spec.rb. Expected to take 35.31 seconds.

CommitPolicy
  #rules
    when project is public
      when the user is not a project member
        behaves like can read commit and create a note
          can read commit
          can create a note
# [RSpecRunTime] RSpec elapsed time: 14 minutes 20.59 seconds. Current RSS: ~1537M. load average: 1.07 1.09 1.06 3/288 14604


      when repository access level is private
        when the user is not a project member
          behaves like cannot read commit nor create a note
            cannot read commit
            cannot create a note
# [RSpecRunTime] RSpec elapsed time: 14 minutes 22.41 seconds. Current RSS: ~1548M. load average: 1.07 1.09 1.06 1/289 14627


        when the user is a direct project member
          and the user is a developer
            behaves like can read commit and create a note
              can read commit
              can create a note
# [RSpecRunTime] RSpec elapsed time: 14 minutes 24.48 seconds. Current RSS: ~1566M. load average: 1.07 1.09 1.06 1/290 14650


        when the user is an inherited member from the group
          and the user is a guest
            behaves like can read commit and create a note
              can read commit
              can create a note
# [RSpecRunTime] RSpec elapsed time: 14 minutes 26.57 seconds. Current RSS: ~1572M. load average: 1.14 1.10 1.06 1/290 14673


          and the user is a reporter
            behaves like can read commit and create a note
              can read commit
              can create a note
# [RSpecRunTime] RSpec elapsed time: 14 minutes 28.74 seconds. Current RSS: ~1567M. load average: 1.14 1.10 1.06 1/290 14696


          and the user is a developer
            behaves like can read commit and create a note
              can read commit
              can create a note
# [RSpecRunTime] RSpec elapsed time: 14 minutes 30.77 seconds. Current RSS: ~1558M. load average: 1.13 1.10 1.06 1/290 14719


    when project is private
      when the user is not a project member
        behaves like cannot read commit nor create a note
          cannot read commit
          cannot create a note
# [RSpecRunTime] RSpec elapsed time: 14 minutes 32.58 seconds. Current RSS: ~1553M. load average: 1.13 1.10 1.06 1/290 14742


      when the user is a direct project member
        and the user is a developer
          behaves like can read commit and create a note
            can read commit
            can create a note
# [RSpecRunTime] RSpec elapsed time: 14 minutes 34.75 seconds. Current RSS: ~1555M. load average: 1.13 1.10 1.06 1/290 14765


        and the user is a guest
          cannot download code
          behaves like cannot read commit nor create a note
            cannot read commit
            cannot create a note
# [RSpecRunTime] RSpec elapsed time: 14 minutes 37.86 seconds. Current RSS: ~1555M. load average: 1.12 1.10 1.06 1/290 14799


      when the user is an inherited member from the group
        and the user is a guest
          behaves like cannot read commit nor create a note
            cannot read commit
            cannot create a note
# [RSpecRunTime] RSpec elapsed time: 14 minutes 40.03 seconds. Current RSS: ~1552M. load average: 1.11 1.10 1.06 1/290 14822


        and the user is a reporter
          behaves like can read commit and create a note
            can read commit
            can create a note
# [RSpecRunTime] RSpec elapsed time: 14 minutes 42.2 seconds. Current RSS: ~1546M. load average: 1.11 1.10 1.06 1/290 14845


        and the user is a developer
          behaves like can read commit and create a note
            can read commit
            can create a note
# [RSpecRunTime] RSpec elapsed time: 14 minutes 44.28 seconds. Current RSS: ~1554M. load average: 1.11 1.10 1.06 1/290 14868



# [RSpecRunTime] Finishing example group spec/policies/commit_policy_spec.rb. It took 25.69 seconds. Expected to take 35.31 seconds.
# [RSpecRunTime] Starting example group spec/services/projects/update_repository_storage_service_spec.rb. Expected to take 32.85 seconds.

Projects::UpdateRepositoryStorageService
  #execute
    without wiki and design repository
      when the move succeeds
        moves the repository to the new storage and unmarks the repository as read-only
# [RSpecRunTime] RSpec elapsed time: 14 minutes 45.58 seconds. Current RSS: ~1552M. load average: 1.10 1.09 1.06 1/290 14878


      when touch raises an exception
        marks the storage move as failed and restores read-write access
      when the filesystems are the same
        updates the database without trying to move the repostory
      when the move fails
        unmarks the repository as read-only without updating the repository storage
      when the cleanup fails
        sets the correct state
      when the checksum does not match
        unmarks the repository as read-only without updating the repository storage
      with repository pool
        when project had a repository pool
          creates a new repository pool and connects project to it
          when new shard has a repository pool
            connects project to it
# [RSpecRunTime] RSpec elapsed time: 14 minutes 51.58 seconds. Current RSS: ~1549M. load average: 1.09 1.09 1.06 1/289 14936


          when new shard has a repository pool without the root project
            connects project to it
# [RSpecRunTime] RSpec elapsed time: 14 minutes 53.25 seconds. Current RSS: ~1544M. load average: 1.09 1.09 1.06 1/287 14952


          when repository does not exist
            does not mirror object pool
          when project belongs to repository pool, but not as a root project
            creates a new repository pool and connects project to it
# [RSpecRunTime] RSpec elapsed time: 14 minutes 55.64 seconds. Current RSS: ~1529M. load average: 1.08 1.09 1.06 1/285 14968


          when project belongs to the repository pool without a root project
            creates a new repository pool without a root project and connects project to it
# [RSpecRunTime] RSpec elapsed time: 14 minutes 57.29 seconds. Current RSS: ~1526M. load average: 1.08 1.09 1.06 1/285 14984


          when object pool checksum does not match
            raises an error and removes the new object pool repository
# [RSpecRunTime] RSpec elapsed time: 14 minutes 58.3 seconds. Current RSS: ~1526M. load average: 1.08 1.09 1.06 1/285 14993


      when the repository move is finished
        is idempotent
      when the repository move is failed
        is idempotent
    project with no repositories
      updates the database
    with wiki repository
      when the move succeeds
        moves the project and its wiki repository to the new storage and unmarks the repository as read-only
      when the filesystems are the same
        updates the database without trying to move the repostory
      when the move of the wiki repository fails
        unmarks the repository as read-only without updating the repository storage
      when the cleanup of the wiki repository fails
        sets the correct state
      when the checksum of the wiki repository does not match
        unmarks the repository as read-only without updating the repository storage
    with design repository
      when the move succeeds
        moves the project and its design repository to the new storage and unmarks the repository as read-only
      when the filesystems are the same
        updates the database without trying to move the repostory
      when the move of the design repository fails
        unmarks the repository as read-only without updating the repository storage
      when the cleanup of the design repository fails
        sets the correct state
      when the checksum of the design repository does not match
        unmarks the repository as read-only without updating the repository storage

# [RSpecRunTime] Finishing example group spec/services/projects/update_repository_storage_service_spec.rb. It took 24.88 seconds. Expected to take 32.85 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/project_authorizations_spec.rb. Expected to take 31.92 seconds.

Gitlab::ProjectAuthorizations
  user added to group and project
    returns the correct number of authorizations
    includes the correct projects
    includes the correct access levels
# [RSpecRunTime] RSpec elapsed time: 15 minutes 13.63 seconds. Current RSS: ~1522M. load average: 1.14 1.10 1.07 1/285 15130


  unapproved access request
    group membership
      does not create authorization
    inherited group membership
      does not create authorization
    project membership
      does not create authorization
    shared group
      does not create authorization
    shared project
      does not create authorization
  user with minimal access to group
    group membership
      does not create authorization
    inherited group membership
      does not create authorization
    shared group
      does not create authorization
    shared project
      does not create authorization
  with nested groups
    includes nested groups
    inherits access levels when the user is not a member of a nested group
    uses the greatest access level when a user is a member of a nested group
# [RSpecRunTime] RSpec elapsed time: 15 minutes 22.22 seconds. Current RSS: ~1508M. load average: 1.19 1.11 1.07 1/285 15131


  with shared projects
    creates proper authorizations
    even when the `lock_memberships_to_ldap` setting has been turned ON
      creates proper authorizations
# [RSpecRunTime] RSpec elapsed time: 15 minutes 23.38 seconds. Current RSS: ~1508M. load average: 1.19 1.11 1.07 1/285 15132


    when the group containing the project has forbidden group shares for any of its projects
      does not create authorizations
  with shared groups
    group user
      creates proper authorizations
# [RSpecRunTime] RSpec elapsed time: 15 minutes 25.79 seconds. Current RSS: ~1501M. load average: 1.18 1.11 1.07 1/285 15133


    with lower group access level than max access level for share
      creates proper authorizations
    parent group user
      creates proper authorizations
    child group user
      creates proper authorizations
    user without accepted access request
      does not have access to group and its projects
    unrelated project owner
      does not have access to group and its projects
# [RSpecRunTime] RSpec elapsed time: 15 minutes 30.27 seconds. Current RSS: ~1499M. load average: 1.16 1.11 1.07 1/285 15134


  with pending memberships
    group membership
      does not create authorization
    inherited group membership
      does not create authorization
    project membership
      does not create authorization
    shared group
      does not create authorization
    shared project
      does not create authorization

# [RSpecRunTime] Finishing example group spec/lib/gitlab/project_authorizations_spec.rb. It took 25.09 seconds. Expected to take 31.92 seconds.
# [RSpecRunTime] Starting example group spec/models/container_registry/protection/rule_spec.rb. Expected to take 30.62 seconds.

ContainerRegistry::Protection::Rule
  does not allow STI
  enums
    is expected to define :push_protected_up_to_access_level as an enum backed by an integer with values ‹{developer: 30, maintainer: 40, owner: 50}›, prefix: :push_protected_up_to
    is expected to define :delete_protected_up_to_access_level as an enum backed by an integer with values ‹{developer: 30, maintainer: 40, owner: 50}›, prefix: :delete_protected_up_to
  behaves like having unique enum values
    has unique values in "delete_protected_up_to_access_level"
    has unique values in "push_protected_up_to_access_level"
  .for_push_exists?
    when the repository path matches multiple protection rules
      project: project_with_crpr, access_level: 20, repository_path: lazy { "#{project_with_crpr.full_path}/my-container-stage-sha-1234" }, for_push_exists: true
        is expected to eq true
      project: project_with_crpr, access_level: 30, repository_path: lazy { "#{project_with_crpr.full_path}/my-container-stage-sha-1234" }, for_push_exists: true
        is expected to eq true
      project: project_with_crpr, access_level: 40, repository_path: lazy { "#{project_with_crpr.full_path}/my-container-stage-sha-1234" }, for_push_exists: false
        is expected to eq false
      project: project_with_crpr, access_level: 40, repository_path: lazy { "#{project_with_crpr.full_path}/my-container-stage-sha-1234" }, for_push_exists: false
        is expected to eq false
      project: project_with_crpr, access_level: 50, repository_path: lazy { "#{project_with_crpr.full_path}/my-container-stage-sha-1234" }, for_push_exists: false
        is expected to eq false
      project: project_with_crpr, access_level: 60, repository_path: lazy { "#{project_with_crpr.full_path}/my-container-stage-sha-1234" }, for_push_exists: false
        is expected to eq false
      project: project_with_crpr, access_level: 30, repository_path: lazy { "#{project_with_crpr.full_path}/my-container-prod-sha-1234" }, for_push_exists: true
        is expected to eq true
      project: project_with_crpr, access_level: 40, repository_path: lazy { "#{project_with_crpr.full_path}/my-container-prod-sha-1234" }, for_push_exists: true
        is expected to eq true
      project: project_with_crpr, access_level: 50, repository_path: lazy { "#{project_with_crpr.full_path}/my-container-prod-sha-1234" }, for_push_exists: false
        is expected to eq false
      project: project_with_crpr, access_level: 60, repository_path: lazy { "#{project_with_crpr.full_path}/my-container-prod-sha-1234" }, for_push_exists: false
        is expected to eq false
      project: project_with_crpr, access_level: 30, repository_path: lazy { "#{project_with_crpr.full_path}/my-container-release-v1" }, for_push_exists: true
        is expected to eq true
      project: project_with_crpr, access_level: 50, repository_path: lazy { "#{project_with_crpr.full_path}/my-container-release-v1" }, for_push_exists: true
        is expected to eq true
      project: project_with_crpr, access_level: 60, repository_path: lazy { "#{project_with_crpr.full_path}/my-container-release-v1" }, for_push_exists: false
        is expected to eq false
      project: project_with_crpr, access_level: 30, repository_path: lazy { "#{project_with_crpr.full_path}/my-container-any-suffix" }, for_push_exists: true
        is expected to eq true
      project: project_with_crpr, access_level: 40, repository_path: lazy { "#{project_with_crpr.full_path}/my-container-any-suffix" }, for_push_exists: false
        is expected to eq false
      project: project_with_crpr, access_level: 50, repository_path: lazy { "#{project_with_crpr.full_path}/my-container-any-suffix" }, for_push_exists: false
        is expected to eq false
      project: project_with_crpr, access_level: 30, repository_path: lazy { "#{project_with_crpr.full_path}/non-matching-container" }, for_push_exists: false
        is expected to eq false
      project: project_with_crpr, access_level: 0, repository_path: lazy { "#{project_with_crpr.full_path}/my-container-prod-sha-1234" }, for_push_exists: true
        is expected to eq true
      project: project_with_crpr, access_level: 0, repository_path: "", for_push_exists: false
        is expected to eq false
      project: project_with_crpr, access_level: nil, repository_path: nil, for_push_exists: false
        is expected to eq false
      project: project_with_crpr, access_level: 30, repository_path: nil, for_push_exists: false
        is expected to eq false
      project: project_with_crpr, access_level: nil, repository_path: lazy { "#{project_with_crpr.full_path}/non-matching-container" }, for_push_exists: false
        is expected to eq false
      project: project_without_crpr, access_level: 30, repository_path: lazy { "#{project_without_crpr.full_path}/my-container-prod-sha-1234" }, for_push_exists: false
        is expected to eq false
      project: project_without_crpr, access_level: 40, repository_path: lazy { "#{project_without_crpr.full_path}/my-container-prod-sha-1234" }, for_push_exists: false
        is expected to eq false
      project: project_without_crpr, access_level: 50, repository_path: lazy { "#{project_without_crpr.full_path}/my-container-prod-sha-1234" }, for_push_exists: false
        is expected to eq false
  relationships
    is expected to belong to project required: false inverse_of => container_registry_protection_rules
  .for_repository_path
    with several container registry protection rule scenarios
      repository_path: lazy { "#{project.full_path}/my_container" }, expected_container_registry_protection_rules: [container_registry_protection_rule]
        is expected to contain exactly #<ContainerRegistry::Protection::Rule id: 5, project_id: 718, created_at: "2024-03-08 06:24:30.122332...d_up_to_access_level: "developer", repository_path_pattern: "namespace606/project-758/my_container">
      repository_path: lazy { "#{project.full_path}/my2container" }, expected_container_registry_protection_rules: []
        is expected to contain exactly
      repository_path: lazy { "#{project.full_path}/my_container-2" }, expected_container_registry_protection_rules: []
        is expected to contain exactly
      repository_path: lazy { "#{project.full_path}/my_container-with-wildcard-start" }, expected_container_registry_protection_rules: [protection_rule_with_wildcard_start]
        is expected to contain exactly #<ContainerRegistry::Protection::Rule id: 6, project_id: 718, created_at: "2024-03-08 06:24:30.128092...evel: "developer", repository_path_pattern: "namespace606/project-758/*my_container-with-wildca...">
      repository_path: lazy { "#{project.full_path}/my_container-with-wildcard-start-end" }, expected_container_registry_protection_rules: []
        is expected to contain exactly
      repository_path: lazy { "#{project.full_path}/anychar-my_container-with-wildcard-start" }, expected_container_registry_protection_rules: [protection_rule_with_wildcard_start]
        is expected to contain exactly #<ContainerRegistry::Protection::Rule id: 6, project_id: 718, created_at: "2024-03-08 06:24:30.128092...evel: "developer", repository_path_pattern: "namespace606/project-758/*my_container-with-wildca...">
      repository_path: lazy { "#{project.full_path}/anychar-my_container-with-wildcard-start-anychar" }, expected_container_registry_protection_rules: []
        is expected to contain exactly
      repository_path: lazy { "#{project.full_path}/my_container-with-wildcard-end" }, expected_container_registry_protection_rules: [protection_rule_with_wildcard_end]
        is expected to contain exactly #<ContainerRegistry::Protection::Rule id: 7, project_id: 718, created_at: "2024-03-08 06:24:30.133592...evel: "developer", repository_path_pattern: "namespace606/project-758/my_container-with-wildcar...">
      repository_path: lazy { "#{project.full_path}/my_container-with-wildcard-end-anychar:1234567890" }, expected_container_registry_protection_rules: [protection_rule_with_wildcard_end]
        is expected to contain exactly #<ContainerRegistry::Protection::Rule id: 7, project_id: 718, created_at: "2024-03-08 06:24:30.133592...evel: "developer", repository_path_pattern: "namespace606/project-758/my_container-with-wildcar...">
      repository_path: lazy { "#{project.full_path}/anychar-my_container-with-wildcard-end" }, expected_container_registry_protection_rules: []
        is expected to contain exactly
      repository_path: lazy { "#{project.full_path}/anychar-my_container-with-wildcard-end-anychar:1234567890" }, expected_container_registry_protection_rules: []
        is expected to contain exactly
      repository_path: lazy { "#{project.full_path}/my_container-with-wildcard-middle" }, expected_container_registry_protection_rules: [protection_rule_with_wildcard_middle]
        is expected to contain exactly #<ContainerRegistry::Protection::Rule id: 8, project_id: 718, created_at: "2024-03-08 06:24:30.138579...evel: "developer", repository_path_pattern: "namespace606/project-758/*my_container-with-wildca...">
      repository_path: lazy { "#{project.full_path}/anychar-my_container-with-wildcard-middle" }, expected_container_registry_protection_rules: [protection_rule_with_wildcard_middle]
        is expected to contain exactly #<ContainerRegistry::Protection::Rule id: 8, project_id: 718, created_at: "2024-03-08 06:24:30.138579...evel: "developer", repository_path_pattern: "namespace606/project-758/*my_container-with-wildca...">
      repository_path: lazy { "#{project.full_path}/anychar-my_container-anychar-wildcard-middle-anychar" }, expected_container_registry_protection_rules: []
        is expected to contain exactly
      repository_path: lazy { "#{project.full_path}/my_container-with-wildcard-start-middle-end" }, expected_container_registry_protection_rules: [protection_rule_with_wildcard_start_middle_end]
        is expected to contain exactly #<ContainerRegistry::Protection::Rule id: 9, project_id: 718, created_at: "2024-03-08 06:24:30.143522...evel: "developer", repository_path_pattern: "namespace606/project-758/**my_container**with-wild...">
      repository_path: lazy { "#{project.full_path}/anychar-my_container-anychar-with-wildcard-start-middle-end-anychar" }, expected_container_registry_protection_rules: [protection_rule_with_wildcard_start_middle_end]
        is expected to contain exactly #<ContainerRegistry::Protection::Rule id: 9, project_id: 718, created_at: "2024-03-08 06:24:30.143522...evel: "developer", repository_path_pattern: "namespace606/project-758/**my_container**with-wild...">
      repository_path: lazy { "#{project.full_path}/****my_container-*****-with-wildcard-start-middle-end****" }, expected_container_registry_protection_rules: [protection_rule_with_wildcard_start_middle_end]
        is expected to contain exactly #<ContainerRegistry::Protection::Rule id: 9, project_id: 718, created_at: "2024-03-08 06:24:30.143522...evel: "developer", repository_path_pattern: "namespace606/project-758/**my_container**with-wild...">
      repository_path: lazy { "other-#{project.full_path}/anychar-my_container-anychar-with-wildcard-start-middle-end-anychar" }, expected_container_registry_protection_rules: []
        is expected to contain exactly
      repository_path: lazy { "#{project.full_path}/my_container-with_underscore" }, expected_container_registry_protection_rules: [protection_rule_with_underscore]
        is expected to contain exactly #<ContainerRegistry::Protection::Rule id: 10, project_id: 718, created_at: "2024-03-08 06:24:30.14837...evel: "developer", repository_path_pattern: "namespace606/project-758/my_container-with_undersc...">
      repository_path: lazy { "#{project.full_path}/my_container-with*underscore" }, expected_container_registry_protection_rules: []
        is expected to contain exactly
      repository_path: lazy { "#{project.full_path}/my_container-with_any_underscore" }, expected_container_registry_protection_rules: []
        is expected to contain exactly
      repository_path: lazy { "#{project.full_path}/my_container-with-regex-char-period.*" }, expected_container_registry_protection_rules: [protection_rule_with_regex_char_period]
        is expected to contain exactly #<ContainerRegistry::Protection::Rule id: 11, project_id: 718, created_at: "2024-03-08 06:24:30.15325...evel: "developer", repository_path_pattern: "namespace606/project-758/my_container-with-regex-c...">
      repository_path: lazy { "#{project.full_path}/my_container-with-regex-char-period.anychar" }, expected_container_registry_protection_rules: [protection_rule_with_regex_char_period]
        is expected to contain exactly #<ContainerRegistry::Protection::Rule id: 11, project_id: 718, created_at: "2024-03-08 06:24:30.15325...evel: "developer", repository_path_pattern: "namespace606/project-758/my_container-with-regex-c...">
      repository_path: lazy { "#{project.full_path}/my_container-with-regex-char-period." }, expected_container_registry_protection_rules: [protection_rule_with_regex_char_period]
        is expected to contain exactly #<ContainerRegistry::Protection::Rule id: 11, project_id: 718, created_at: "2024-03-08 06:24:30.15325...evel: "developer", repository_path_pattern: "namespace606/project-758/my_container-with-regex-c...">
      repository_path: lazy { "#{project.full_path}/my_container-with-regex-char-period" }, expected_container_registry_protection_rules: []
        is expected to contain exactly
      repository_path: lazy { "#{project.full_path}/my_container-with-regex-char-period-any" }, expected_container_registry_protection_rules: []
        is expected to contain exactly
      repository_path: nil, expected_container_registry_protection_rules: []
        is expected to contain exactly
      repository_path: "", expected_container_registry_protection_rules: []
        is expected to contain exactly
      repository_path: "other_project_scope/any_container", expected_container_registry_protection_rules: []
        is expected to contain exactly
    with multiple matching container registry protection rules
      is expected to contain exactly #<ContainerRegistry::Protection::Rule id: 12, project_id: 718, created_at: "2024-03-08 06:24:33.12460..._up_to_access_level: "developer", repository_path_pattern: "namespace606/project-758/my_container*"> and #<ContainerRegistry::Protection::Rule id: 5, project_id: 718, created_at: "2024-03-08 06:24:30.122332...d_up_to_access_level: "developer", repository_path_pattern: "namespace606/project-758/my_container">
  validations
    #repository_path_pattern
      is expected to validate that :repository_path_pattern cannot be empty/falsy
      is expected to validate that the length of :repository_path_pattern is at most 255
      #path_pattern_starts_with_project_full_path
        project: project_downcased_path, repository_path_pattern: lazy { project_downcased_path.full_path }, allowed: true
          is expected to allow :repository_path_pattern to be ‹"namespace609/project-761"›
        project: project_downcased_path, repository_path_pattern: lazy { "#{project_downcased_path.full_path}*" }, allowed: true
          is expected to allow :repository_path_pattern to be ‹"namespace610/project-762*"›
        project: project_downcased_path, repository_path_pattern: lazy { "#{project_downcased_path.full_path}/*" }, allowed: true
          is expected to allow :repository_path_pattern to be ‹"namespace611/project-763/*"›
        project: project_downcased_path, repository_path_pattern: lazy { "#{project_downcased_path.full_path}/sub-image*" }, allowed: true
          is expected to allow :repository_path_pattern to be ‹"namespace612/project-764/sub-image*"›
        project: project_downcased_path, repository_path_pattern: lazy { "#{project_downcased_path.full_path}/sub-image/*" }, allowed: true
          is expected to allow :repository_path_pattern to be ‹"namespace613/project-765/sub-image/*"›
        project: project_downcased_path, repository_path_pattern: lazy { "#{project_downcased_path.full_path}/sub-image/*/sub-sub-image" }, allowed: true
          is expected to allow :repository_path_pattern to be ‹"namespace614/project-766/sub-image/*/sub-sub-image"›
        project: project_downcased_path, repository_path_pattern: lazy { "#{project_downcased_path.full_path}/sub-image/sub-sub-image*" }, allowed: true
          is expected to allow :repository_path_pattern to be ‹"namespace615/project-767/sub-image/sub-sub-image*"›
        project: project_downcased_path, repository_path_pattern: lazy { project_downcased_path.full_path.upcase }, allowed: false
          is expected not to allow :repository_path_pattern to be ‹"NAMESPACE616/PROJECT-768"›
        project: project_downcased_path, repository_path_pattern: lazy { "*#{project_downcased_path.path}" }, allowed: false
          is expected not to allow :repository_path_pattern to be ‹"*project-769"›
        project: project_downcased_path, repository_path_pattern: lazy { "*#{project_downcased_path.path}/*" }, allowed: false
          is expected not to allow :repository_path_pattern to be ‹"*project-770/*"›
        project: project_downcased_path, repository_path_pattern: lazy { "any-project-scope/#{project_downcased_path.path}" }, allowed: false
          is expected not to allow :repository_path_pattern to be ‹"any-project-scope/project-771"›
        project: project_downcased_path, repository_path_pattern: lazy { build(:project).full_path }, allowed: false
          is expected not to allow :repository_path_pattern to be ‹"namespace621/project-773"›
        project: project_downcased_path, repository_path_pattern: lazy { project_downcased_path.path }, allowed: false
          is expected not to allow :repository_path_pattern to be ‹"project-774"›
        project: project_downcased_path, repository_path_pattern: nil, allowed: false
          is expected not to allow :repository_path_pattern to be ‹nil›
        project: project_mixcased_path, repository_path_pattern: lazy { project_mixcased_path.full_path.downcase }, allowed: true
          is expected to allow :repository_path_pattern to be ‹"namespace624/namespace1/mixcased-project-path"›
        project: project_mixcased_path, repository_path_pattern: lazy { "#{project_mixcased_path.full_path.downcase}*" }, allowed: true
          is expected to allow :repository_path_pattern to be ‹"namespace625/namespace1/mixcased-project-path*"›
        project: project_mixcased_path, repository_path_pattern: lazy { "#{project_mixcased_path.full_path.downcase}/sub-image/*" }, allowed: true
          is expected to allow :repository_path_pattern to be ‹"namespace626/namespace1/mixcased-project-path/sub-image/*"›
        project: project_mixcased_path, repository_path_pattern: lazy { project_mixcased_path.full_path }, allowed: false
          is expected not to allow :repository_path_pattern to be ‹"namespace627/namespace1/MIXCASED-project-path"›
        project: project_mixcased_path, repository_path_pattern: lazy { project_mixcased_path.full_path.upcase }, allowed: false
          is expected not to allow :repository_path_pattern to be ‹"NAMESPACE628/NAMESPACE1/MIXCASED-PROJECT-PATH"›
        project: project_mixcased_path, repository_path_pattern: lazy { "#{project_mixcased_path.full_path}/sub-image*" }, allowed: false
          is expected not to allow :repository_path_pattern to be ‹"namespace629/namespace1/MIXCASED-project-path/sub-image*"›
    #delete_protected_up_to_access_level
      is expected to validate that :delete_protected_up_to_access_level cannot be empty/falsy
    #push_protected_up_to_access_level
      is expected to validate that :push_protected_up_to_access_level cannot be empty/falsy

# [RSpecRunTime] Finishing example group spec/models/container_registry/protection/rule_spec.rb. It took 9.85 seconds. Expected to take 30.62 seconds.
# [RSpecRunTime] Starting example group spec/models/merge_request_diff_commit_spec.rb. Expected to take 28.06 seconds.

MergeRequestDiffCommit
  does not allow STI
  behaves like a BulkInsertSafe model
    when calling class methods directly
      raises an error when method is not bulk-insert safe
      does not raise an error when method is bulk-insert safe
    .bulk_insert!
      when all items are valid
        inserts them all
        returns an empty array
# [RSpecRunTime] RSpec elapsed time: 15 minutes 59.35 seconds. Current RSS: ~1562M. load average: 1.16 1.12 1.07 1/290 15455


      when some items are invalid
        does not insert any of them and raises an error
        inserts them anyway when bypassing validations
  associations
    is expected to belong to commit_author required: false
    is expected to belong to committer required: false
  #to_hash
    returns the same results as Commit#to_hash, except for parent_ids
# [RSpecRunTime] RSpec elapsed time: 16 minutes 0.91 second. Current RSS: ~1569M. load average: 1.15 1.11 1.07 1/292 15498


  .create_bulk
    inserts the commits into the database en masse
    creates diff commit users
    with dates larger than the DB limit
      uses a sanitized date
# [RSpecRunTime] RSpec elapsed time: 16 minutes 4.21 seconds. Current RSS: ~1575M. load average: 1.15 1.11 1.07 1/291 15632


  .prepare_commits_for_bulk_insert
    returns the commit hashes and unique user tuples

# [RSpecRunTime] Finishing example group spec/models/merge_request_diff_commit_spec.rb. It took 20.22 seconds. Expected to take 28.06 seconds.
# [RSpecRunTime] Starting example group spec/lib/container_registry/client_spec.rb. Expected to take 27.53 seconds.

ContainerRegistry::Client
  #repository_manifest
    behaves like handling repository manifest
      GET /v2/:name/manifests/mytag
      behaves like handling timeouts
        handles network timeouts
        logs the error
    behaves like handling repository manifest
      GET /v2/:name/manifests/mytag
      behaves like handling timeouts
        handles network timeouts
        logs the error
  #blob
    GET /v2/:name/blobs/:digest
    with a 307 redirect
      behaves like handling redirects
        follows the redirect
      with a redirect location with params ending with =
        behaves like handling redirects
          follows the redirect
      with a redirect location with params ending with %3D
        behaves like handling redirects
          follows the redirect
    behaves like handling timeouts
      handles network timeouts
      logs the error
  #upload_blob
    with successful uploads
      starts the upload and posts the blob
    with a failed upload
      returns a failure
  #generate_empty_manifest
    uploads a random image and returns the manifest
    when upload fails
      is expected to equal nil
  #put_tag
    uploads the manifest and returns the digest
  #delete_repository_tag_by_digest
    when the tag exists
      is expected to be truthy
    when the tag does not exist
      is expected to be truthy
    when an error occurs
      is expected to be falsey
  #supports_tag_delete?
    registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: true
      returns the expected result
    registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: true, expected_result: true
      returns the expected result
    registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: true
      returns the expected result
    registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: true
      returns the expected result
    registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: true
      returns the expected result
    registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: true, expected_result: false
      returns the expected result
    registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: false
      returns the expected result
    registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: false
      returns the expected result
  #registry_info
    behaves like handling registry info
      when the check is successful
        when using the GitLab container registry
          identifies the vendor as "gitlab"
          identifies version and features
          identifies the registry DB as enabled
        when using a third-party container registry
          identifies the vendor as "other"
          does not identify version or features
          does not identify the registry DB as enabled
      when the check is not successful
        does not identify vendor, version or features
      when the check returns an unexpected value in the database enabled header
        does not identify the registry DB as enabled
  .supports_tag_delete?
    registry_api_url: "http://sandbox.local", registry_enabled: true, registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: true
      returns the expected result
    registry_api_url: "http://sandbox.local", registry_enabled: true, registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: true, expected_result: true
      returns the expected result
    registry_api_url: "http://sandbox.local", registry_enabled: true, registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: true
      returns the expected result
    registry_api_url: "http://sandbox.local", registry_enabled: true, registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: true, expected_result: false
      returns the expected result
    registry_api_url: "http://sandbox.local", registry_enabled: false, registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false
      returns the expected result
    registry_api_url: "http://sandbox.local", registry_enabled: false, registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false
      returns the expected result
    registry_api_url: "http://sandbox.local", registry_enabled: false, registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false
      returns the expected result
    registry_api_url: "http://sandbox.local", registry_enabled: false, registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false
      returns the expected result
    registry_api_url: "http://sandbox.local", registry_enabled: true, registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: true
      returns the expected result
    registry_api_url: "http://sandbox.local", registry_enabled: true, registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: true
      returns the expected result
    registry_api_url: "http://sandbox.local", registry_enabled: true, registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: false
      returns the expected result
    registry_api_url: "http://sandbox.local", registry_enabled: true, registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: false
      returns the expected result
    registry_api_url: "http://sandbox.local", registry_enabled: false, registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false
      returns the expected result
    registry_api_url: "http://sandbox.local", registry_enabled: false, registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false
      returns the expected result
    registry_api_url: "http://sandbox.local", registry_enabled: false, registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false
      returns the expected result
    registry_api_url: "http://sandbox.local", registry_enabled: false, registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false
      returns the expected result
    registry_api_url: "", registry_enabled: true, registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false
      returns the expected result
    registry_api_url: "", registry_enabled: true, registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false
      returns the expected result
    registry_api_url: "", registry_enabled: true, registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false
      returns the expected result
    registry_api_url: "", registry_enabled: true, registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false
      returns the expected result
    registry_api_url: "", registry_enabled: false, registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false
      returns the expected result
    registry_api_url: "", registry_enabled: false, registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false
      returns the expected result
    registry_api_url: "", registry_enabled: false, registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false
      returns the expected result
    registry_api_url: "", registry_enabled: false, registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false
      returns the expected result
    registry_api_url: "", registry_enabled: true, registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false
      returns the expected result
    registry_api_url: "", registry_enabled: true, registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false
      returns the expected result
    registry_api_url: "", registry_enabled: true, registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false
      returns the expected result
    registry_api_url: "", registry_enabled: true, registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false
      returns the expected result
    registry_api_url: "", registry_enabled: false, registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false
      returns the expected result
    registry_api_url: "", registry_enabled: false, registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false
      returns the expected result
    registry_api_url: "", registry_enabled: false, registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false
      returns the expected result
    registry_api_url: "", registry_enabled: false, registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false
      returns the expected result
  #repository_tags
    returns a successful response
  .registry_info
    behaves like handling registry info
      when the check is successful
        when using the GitLab container registry
          identifies the vendor as "gitlab"
          identifies version and features
          identifies the registry DB as enabled
        when using a third-party container registry
          identifies the vendor as "other"
          does not identify version or features
          does not identify the registry DB as enabled
      when the check is not successful
        does not identify vendor, version or features
      when the check returns an unexpected value in the database enabled header
        does not identify the registry DB as enabled

# [RSpecRunTime] Finishing example group spec/lib/container_registry/client_spec.rb. It took 10.38 seconds. Expected to take 27.53 seconds.
# [RSpecRunTime] Starting example group spec/lib/bulk_imports/clients/http_spec.rb. Expected to take 26.37 seconds.

BulkImports::Clients::HTTP
  #get
    performs network request
    error handling
      when any known HTTP error occurs
        exception_class: Net::OpenTimeout
          raises BulkImports::NetworkError
        exception_class: Net::ReadTimeout
          raises BulkImports::NetworkError
        exception_class: Net::WriteTimeout
          raises BulkImports::NetworkError
        exception_class: Gitlab::HTTP_V2::ReadTotalTimeout
          raises BulkImports::NetworkError
        exception_class: EOFError
          raises BulkImports::NetworkError
        exception_class: SocketError
          raises BulkImports::NetworkError
        exception_class: OpenSSL::SSL::SSLError
          raises BulkImports::NetworkError
        exception_class: OpenSSL::OpenSSLError
          raises BulkImports::NetworkError
        exception_class: Errno::ECONNRESET
          raises BulkImports::NetworkError
        exception_class: Errno::ECONNREFUSED
          raises BulkImports::NetworkError
        exception_class: Errno::EHOSTUNREACH
          raises BulkImports::NetworkError
        exception_class: Errno::ENETUNREACH
          raises BulkImports::NetworkError
        exception_class: Gitlab::HTTP_V2::BlockedUrlError
          raises BulkImports::NetworkError
        exception_class: Gitlab::HTTP_V2::RedirectionTooDeep
          raises BulkImports::NetworkError
        exception_class: Net::HTTPBadResponse
          raises BulkImports::NetworkError
      when response is not success
        raises BulkImports::NetworkError
    #each_page
      with a block
        yields every retrieved page to the supplied block
      without a block
        returns an Enumerator
    when the request is asynchronous
      sets a timeout that is double the default read timeout
  #post
    performs network request
    error handling
      when any known HTTP error occurs
        exception_class: Net::OpenTimeout
          raises BulkImports::NetworkError
        exception_class: Net::ReadTimeout
          raises BulkImports::NetworkError
        exception_class: Net::WriteTimeout
          raises BulkImports::NetworkError
        exception_class: Gitlab::HTTP_V2::ReadTotalTimeout
          raises BulkImports::NetworkError
        exception_class: EOFError
          raises BulkImports::NetworkError
        exception_class: SocketError
          raises BulkImports::NetworkError
        exception_class: OpenSSL::SSL::SSLError
          raises BulkImports::NetworkError
        exception_class: OpenSSL::OpenSSLError
          raises BulkImports::NetworkError
        exception_class: Errno::ECONNRESET
          raises BulkImports::NetworkError
        exception_class: Errno::ECONNREFUSED
          raises BulkImports::NetworkError
        exception_class: Errno::EHOSTUNREACH
          raises BulkImports::NetworkError
        exception_class: Errno::ENETUNREACH
          raises BulkImports::NetworkError
        exception_class: Gitlab::HTTP_V2::BlockedUrlError
          raises BulkImports::NetworkError
        exception_class: Gitlab::HTTP_V2::RedirectionTooDeep
          raises BulkImports::NetworkError
        exception_class: Net::HTTPBadResponse
          raises BulkImports::NetworkError
      when response is not success
        raises BulkImports::NetworkError
  #head
    performs network request
    error handling
      when any known HTTP error occurs
        exception_class: Net::OpenTimeout
          raises BulkImports::NetworkError
        exception_class: Net::ReadTimeout
          raises BulkImports::NetworkError
        exception_class: Net::WriteTimeout
          raises BulkImports::NetworkError
        exception_class: Gitlab::HTTP_V2::ReadTotalTimeout
          raises BulkImports::NetworkError
        exception_class: EOFError
          raises BulkImports::NetworkError
        exception_class: SocketError
          raises BulkImports::NetworkError
        exception_class: OpenSSL::SSL::SSLError
          raises BulkImports::NetworkError
        exception_class: OpenSSL::OpenSSLError
          raises BulkImports::NetworkError
        exception_class: Errno::ECONNRESET
          raises BulkImports::NetworkError
        exception_class: Errno::ECONNREFUSED
          raises BulkImports::NetworkError
        exception_class: Errno::EHOSTUNREACH
          raises BulkImports::NetworkError
        exception_class: Errno::ENETUNREACH
          raises BulkImports::NetworkError
        exception_class: Gitlab::HTTP_V2::BlockedUrlError
          raises BulkImports::NetworkError
        exception_class: Gitlab::HTTP_V2::RedirectionTooDeep
          raises BulkImports::NetworkError
        exception_class: Net::HTTPBadResponse
          raises BulkImports::NetworkError
      when response is not success
        raises BulkImports::NetworkError
  #stream
    performs network request with stream_body option
  #instance_version
    returns version as an instance of Gitlab::VersionInfo
    when /version endpoint is not available
      requests /metadata endpoint
      when /metadata endpoint returns a 401
        raises a BulkImports:Error
      when /metadata endpoint returns a 403
        raises a BulkImports:Error
      when /metadata endpoint returns a 404
        raises a BulkImports:Error
      when /metadata endpoint returns any other BulkImports::NetworkError
        raises a BulkImports:NetworkError
  #validate_instance_version!
    when instance version is greater than or equal to the minimum major version
      is expected to eq true
    when instance version is less than the minimum major version
      is expected to raise BulkImports::Error
  #validate_import_scopes!
    when the source_version is < 15.5
      skips validation
    when source version is 15.5 or higher
      when an HTTP error is raised
        raises BulkImports::NetworkError
      when scopes are valid
        returns true
      when scopes are invalid
        raises a BulkImports error
  #instance_enterprise
    returns source instance enterprise information
    when enterprise information is missing
      defaults to true
  #compatible_for_project_migration?
    when instance version is lower the the expected minimum
      returns false
    when instance version is at least the expected minimum
      returns true
  when url is relative
    performs network request to a relative gitlab url

# [RSpecRunTime] Finishing example group spec/lib/bulk_imports/clients/http_spec.rb. It took 7.5 seconds. Expected to take 26.37 seconds.
# [RSpecRunTime] Starting example group spec/finders/clusters/knative_services_finder_spec.rb. Expected to take 25.49 seconds.

Clusters::KnativeServicesFinder
  #service_pod_details
    behaves like a cached data
      has an unintialized cache
      when using synchronous reactive cache
        when there are functions for cluster namespace
          is expected not to be blank
# [RSpecRunTime] RSpec elapsed time: 16 minutes 26.29 seconds. Current RSS: ~1618M. load average: 1.26 1.14 1.08 1/290 15677


        when there are no functions for cluster namespace
          is expected to be blank
# [RSpecRunTime] RSpec elapsed time: 16 minutes 28.41 seconds. Current RSS: ~1618M. load average: 1.26 1.14 1.08 1/290 15700


  #services
    behaves like a cached data
      has an unintialized cache
      when using synchronous reactive cache
        when there are functions for cluster namespace
          is expected not to be blank
# [RSpecRunTime] RSpec elapsed time: 16 minutes 32.28 seconds. Current RSS: ~1587M. load average: 1.24 1.14 1.08 1/290 15745


        when there are no functions for cluster namespace
          is expected to be blank
# [RSpecRunTime] RSpec elapsed time: 16 minutes 34.27 seconds. Current RSS: ~1584M. load average: 1.24 1.14 1.08 1/290 15768


  #knative_detected
    when knative is installed
      is expected to be truthy
      discovers knative installation
# [RSpecRunTime] RSpec elapsed time: 16 minutes 38.14 seconds. Current RSS: ~1579M. load average: 1.30 1.15 1.09 1/290 15813


    when knative is not installed
      is expected to be falsy
      does not discover knative installation
# [RSpecRunTime] RSpec elapsed time: 16 minutes 42.03 seconds. Current RSS: ~1570M. load average: 1.27 1.15 1.09 1/290 15858



# [RSpecRunTime] Finishing example group spec/finders/clusters/knative_services_finder_spec.rb. It took 19.82 seconds. Expected to take 25.49 seconds.
# [RSpecRunTime] Starting example group spec/policies/ci/runner_manager_policy_spec.rb. Expected to take 23.98 seconds.

Ci::RunnerManagerPolicy
  ability :read_runner_manager
    without access
      behaves like does not allow reading runners managers on any scope
        with instance runner
          is expected not to be allowed :read_runner_manager
          with shared runners disabled for groups and projects
            is expected not to be allowed :read_runner_manager
# [RSpecRunTime] RSpec elapsed time: 16 minutes 44.0 seconds. Current RSS: ~1560M. load average: 1.27 1.15 1.09 1/290 15859


        with group runner
          is expected not to be allowed :read_runner_manager
          with sharing of group runners disabled
            is expected not to be allowed :read_runner_manager
        with project runner
          is expected not to be allowed :read_runner_manager
    with guest access
      behaves like does not allow reading runners managers on any scope
        with instance runner
          is expected not to be allowed :read_runner_manager
          with shared runners disabled for groups and projects
            is expected not to be allowed :read_runner_manager
        with group runner
          is expected not to be allowed :read_runner_manager
          with sharing of group runners disabled
            is expected not to be allowed :read_runner_manager
        with project runner
          is expected not to be allowed :read_runner_manager
    with developer access
      behaves like a policy allowing reading instance runner manager depending on runner sharing
        with instance runner
          shared_runners_enabled_on_group: false, shared_runners_enabled_on_project: false, expect_can_read: false
            is expected not to be allowed :read_runner_manager
          shared_runners_enabled_on_group: false, shared_runners_enabled_on_project: true, expect_can_read: true
            is expected to be allowed :read_runner_manager
          shared_runners_enabled_on_group: true, shared_runners_enabled_on_project: false, expect_can_read: true
            is expected to be allowed :read_runner_manager
          shared_runners_enabled_on_group: true, shared_runners_enabled_on_project: true, expect_can_read: true
            is expected to be allowed :read_runner_manager
      behaves like a policy allowing reading group runner manager depending on runner sharing
        with group runner
          is expected to be allowed :read_runner_manager
          with sharing of group runners disabled
            is expected to be allowed :read_runner_manager
          when user belongs to subgroup only
            with runner visible to group project
              is expected to be allowed :read_runner_manager
              with sharing of group runners disabled
                is expected not to be allowed :read_runner_manager
            without projects in group
              is expected not to be allowed :read_runner_manager
          when user is not developer in associated group
            is expected not to be allowed :read_runner_manager
            when user is developer in a group invited to group as developer
              is expected to be allowed :read_runner_manager
        when runner is in subgroup
          is expected to be allowed :read_runner_manager
          with sharing of group runners disabled
            is expected not to be allowed :read_runner_manager
      with project runner
        is expected to be allowed :read_runner_manager
        when user is not developer in parent group
          is expected not to be allowed :read_runner_manager
          when user is developer in a group invited to project as developer
            is expected to be allowed :read_runner_manager
    with maintainer access
      behaves like a policy allowing reading instance runner manager depending on runner sharing
        with instance runner
          shared_runners_enabled_on_group: false, shared_runners_enabled_on_project: false, expect_can_read: false
            is expected not to be allowed :read_runner_manager
          shared_runners_enabled_on_group: false, shared_runners_enabled_on_project: true, expect_can_read: true
            is expected to be allowed :read_runner_manager
          shared_runners_enabled_on_group: true, shared_runners_enabled_on_project: false, expect_can_read: true
            is expected to be allowed :read_runner_manager
          shared_runners_enabled_on_group: true, shared_runners_enabled_on_project: true, expect_can_read: true
            is expected to be allowed :read_runner_manager
      behaves like a policy allowing reading group runner manager depending on runner sharing
        with group runner
          is expected to be allowed :read_runner_manager
          with sharing of group runners disabled
            is expected to be allowed :read_runner_manager
          when user belongs to subgroup only
            with runner visible to group project
              is expected to be allowed :read_runner_manager
              with sharing of group runners disabled
                is expected not to be allowed :read_runner_manager
            without projects in group
              is expected not to be allowed :read_runner_manager
          when user is not maintainer in associated group
            is expected not to be allowed :read_runner_manager
            when user is maintainer in a group invited to group as maintainer
              is expected to be allowed :read_runner_manager
        when runner is in subgroup
          is expected to be allowed :read_runner_manager
          with sharing of group runners disabled
            is expected not to be allowed :read_runner_manager
      with project runner
        is expected to be allowed :read_runner_manager
    with owner access
      behaves like a policy allowing reading instance runner manager depending on runner sharing
        with instance runner
          shared_runners_enabled_on_group: false, shared_runners_enabled_on_project: false, expect_can_read: false
            is expected not to be allowed :read_runner_manager
          shared_runners_enabled_on_group: false, shared_runners_enabled_on_project: true, expect_can_read: true
            is expected to be allowed :read_runner_manager
          shared_runners_enabled_on_group: true, shared_runners_enabled_on_project: false, expect_can_read: true
            is expected to be allowed :read_runner_manager
          shared_runners_enabled_on_group: true, shared_runners_enabled_on_project: true, expect_can_read: true
            is expected to be allowed :read_runner_manager
      with group runner
        is expected to be allowed :read_runner_manager
        with sharing of group runners disabled
          is expected to be allowed :read_runner_manager
      with project runner
        is expected to be allowed :read_runner_manager

# [RSpecRunTime] Finishing example group spec/policies/ci/runner_manager_policy_spec.rb. It took 11.68 seconds. Expected to take 23.98 seconds.
# [RSpecRunTime] Starting example group spec/lib/api/helpers/packages/dependency_proxy_helpers_spec.rb. Expected to take 23.38 seconds.

API::Helpers::Packages::DependencyProxyHelpers
  #redirect_registry_request
    with maven packages
      application_setting: true, group_setting: nil, forward_to_registry: true, example_name: "executing redirect"
        behaves like executing redirect
          redirects to package registry
      application_setting: true, group_setting: nil, forward_to_registry: false, example_name: "executing fallback"
        behaves like executing fallback
          redirects to package registry
      application_setting: false, group_setting: nil, forward_to_registry: true, example_name: "executing fallback"
        behaves like executing fallback
          redirects to package registry
      application_setting: false, group_setting: nil, forward_to_registry: false, example_name: "executing fallback"
        behaves like executing fallback
          redirects to package registry
      application_setting: true, group_setting: false, forward_to_registry: true, example_name: "executing fallback"
        behaves like executing fallback
          redirects to package registry
      application_setting: true, group_setting: false, forward_to_registry: false, example_name: "executing fallback"
        behaves like executing fallback
          redirects to package registry
      application_setting: false, group_setting: true, forward_to_registry: true, example_name: "executing redirect"
        behaves like executing redirect
          redirects to package registry
      application_setting: false, group_setting: true, forward_to_registry: false, example_name: "executing fallback"
        behaves like executing fallback
          redirects to package registry
    when no target is present
      behaves like executing redirect
        redirects to package registry
    when maven_central_request_forwarding is disabled
      application_setting: true, forward_to_registry: true
        behaves like executing fallback
          redirects to package registry
      application_setting: true, forward_to_registry: false
        behaves like executing fallback
          redirects to package registry
      application_setting: false, forward_to_registry: true
        behaves like executing fallback
          redirects to package registry
      application_setting: false, forward_to_registry: false
        behaves like executing fallback
          redirects to package registry
    with npm packages
      application_setting: true, group_setting: nil, forward_to_registry: true, example_name: "executing redirect"
        behaves like executing redirect
          redirects to package registry
      application_setting: true, group_setting: nil, forward_to_registry: false, example_name: "executing fallback"
        behaves like executing fallback
          redirects to package registry
      application_setting: false, group_setting: nil, forward_to_registry: true, example_name: "executing fallback"
        behaves like executing fallback
          redirects to package registry
      application_setting: false, group_setting: nil, forward_to_registry: false, example_name: "executing fallback"
        behaves like executing fallback
          redirects to package registry
      application_setting: true, group_setting: false, forward_to_registry: true, example_name: "executing fallback"
        behaves like executing fallback
          redirects to package registry
      application_setting: true, group_setting: false, forward_to_registry: false, example_name: "executing fallback"
        behaves like executing fallback
          redirects to package registry
      application_setting: false, group_setting: true, forward_to_registry: true, example_name: "executing redirect"
        behaves like executing redirect
          redirects to package registry
      application_setting: false, group_setting: true, forward_to_registry: false, example_name: "executing fallback"
        behaves like executing fallback
          redirects to package registry
    when no target is present
      behaves like executing redirect
        redirects to package registry
    when maven_central_request_forwarding is disabled
      application_setting: true, forward_to_registry: true
        behaves like executing fallback
          redirects to package registry
      application_setting: true, forward_to_registry: false
        behaves like executing fallback
          redirects to package registry
      application_setting: false, forward_to_registry: true
        behaves like executing fallback
          redirects to package registry
      application_setting: false, forward_to_registry: false
        behaves like executing fallback
          redirects to package registry
    with pypi packages
      application_setting: true, group_setting: nil, forward_to_registry: true, example_name: "executing redirect"
        behaves like executing redirect
          redirects to package registry
      application_setting: true, group_setting: nil, forward_to_registry: false, example_name: "executing fallback"
        behaves like executing fallback
          redirects to package registry
      application_setting: false, group_setting: nil, forward_to_registry: true, example_name: "executing fallback"
        behaves like executing fallback
          redirects to package registry
      application_setting: false, group_setting: nil, forward_to_registry: false, example_name: "executing fallback"
        behaves like executing fallback
          redirects to package registry
      application_setting: true, group_setting: false, forward_to_registry: true, example_name: "executing fallback"
        behaves like executing fallback
          redirects to package registry
      application_setting: true, group_setting: false, forward_to_registry: false, example_name: "executing fallback"
        behaves like executing fallback
          redirects to package registry
      application_setting: false, group_setting: true, forward_to_registry: true, example_name: "executing redirect"
        behaves like executing redirect
          redirects to package registry
      application_setting: false, group_setting: true, forward_to_registry: false, example_name: "executing fallback"
        behaves like executing fallback
          redirects to package registry
    when no target is present
      behaves like executing redirect
        redirects to package registry
    when maven_central_request_forwarding is disabled
      application_setting: true, forward_to_registry: true
        behaves like executing fallback
          redirects to package registry
      application_setting: true, forward_to_registry: false
        behaves like executing fallback
          redirects to package registry
      application_setting: false, forward_to_registry: true
        behaves like executing fallback
          redirects to package registry
      application_setting: false, forward_to_registry: false
        behaves like executing fallback
          redirects to package registry
    with non-forwardable package type
      conan
        raises an error
      nuget
        raises an error
      composer
        raises an error
      generic
        raises an error
      golang
        raises an error
      debian
        raises an error
      rubygems
        raises an error
      helm
        raises an error
      terraform_module
        raises an error
      rpm
        raises an error
      ml_model
        raises an error
    #registry_url
      package_type: :maven, expected_result: "https://repo.maven.apache.org/maven2/test/123", params: {:path=>"test", :file_name=>"123", :project=>nil}
        is expected to eq "https://repo.maven.apache.org/maven2/test/123"
      package_type: :npm, expected_result: "https://registry.npmjs.org/test", params: {:package_name=>"test"}
        is expected to eq "https://registry.npmjs.org/test"
      package_type: :pypi, expected_result: "https://pypi.org/simple/test/", params: {:package_name=>"test"}
        is expected to eq "https://pypi.org/simple/test/"
      with non-forwardable package type conan
        raises an error
      with non-forwardable package type nuget
        raises an error
      with non-forwardable package type composer
        raises an error
      with non-forwardable package type generic
        raises an error
      with non-forwardable package type golang
        raises an error
      with non-forwardable package type debian
        raises an error
      with non-forwardable package type rubygems
        raises an error
      with non-forwardable package type helm
        raises an error
      with non-forwardable package type terraform_module
        raises an error
      with non-forwardable package type rpm
        raises an error
      with non-forwardable package type ml_model
        raises an error

# [RSpecRunTime] Finishing example group spec/lib/api/helpers/packages/dependency_proxy_helpers_spec.rb. It took 8.5 seconds. Expected to take 23.38 seconds.
# [RSpecRunTime] Starting example group spec/services/post_receive_service_spec.rb. Expected to take 22.61 seconds.

PostReceiveService
  when project is nil
    does not return error
    behaves like does not record an onboarding progress action
      is expected not to receive new(*(any args)) 0 times
# [RSpecRunTime] RSpec elapsed time: 17 minutes 3.57 seconds. Current RSS: ~1602M. load average: 1.26 1.15 1.09 1/285 15878


  when repository is nil
    does not return error
  when both repository and project are nil
    does not return error
  with Project
    returns link to create new merge request
    returns the link to an existing merge request when it exists
    does not invoke MergeRequests::PushOptionsHandlerService
    behaves like post_receive_service actions
      enqueues a PostReceive worker job
      decreases the reference counter and returns the result
      behaves like records an onboarding progress action
        is expected to receive execute({:action=>:git_write}) 1 time
# [RSpecRunTime] RSpec elapsed time: 17 minutes 4.98 seconds. Current RSS: ~1596M. load average: 1.26 1.15 1.09 1/291 15913


    when printing_merge_request_link_enabled is false
      returns no merge request messages
    when there are merge_request push options
      invalidates the branch name cache
      invokes MergeRequests::PushOptionsHandlerService
      creates a new merge request
      links to the newly created merge request
      adds errors on the service instance to warnings
      adds ActiveRecord errors on invalid MergeRequest records to warnings
# [RSpecRunTime] RSpec elapsed time: 17 minutes 9.38 seconds. Current RSS: ~1587M. load average: 1.24 1.15 1.09 1/290 15972


  with PersonalSnippet
    does not return link to create new merge request
    does not return the link to an existing merge request when it exists
    behaves like post_receive_service actions
      enqueues a PostReceive worker job
      decreases the reference counter and returns the result
      behaves like records an onboarding progress action
        is expected to receive execute({:action=>:git_write}) 1 time
  with ProjectSnippet
    does not return link to create new merge request
    does not return the link to an existing merge request when it exists
    behaves like post_receive_service actions
      enqueues a PostReceive worker job
      decreases the reference counter and returns the result
      behaves like records an onboarding progress action
        is expected to receive execute({:action=>:git_write}) 1 time
  broadcast message banner exists
    outputs a broadcast message when show_in_cli is true
    does not output a broadcast message when show_in_cli is false
  broadcast message notification exists
    does not output a broadcast message
  broadcast message does not exist
    does not output a broadcast message
  nil broadcast message
    does not output a broadcast message
  broadcast message has a target_path
    no project path matches
      does not output the scoped broadcast messages
      does output another message that doesn't have a target_path
    project path matches
      does output the latest scoped broadcast message
      does not output the older scoped broadcast message
      does not output another message that doesn't have a target_path
  with a redirected data
    returns redirected message on the response
  with new project data
    returns new project message on the response
  #process_mr_push_options
    when repository belongs to a snippet
      with PersonalSnippet
        returns an error message
      with ProjectSnippet
        returns an error message
  #merge_request_urls
    when repository belongs to a snippet
      with PersonalSnippet
        returns an empty array
      with ProjectSnippet
        returns an empty array

# [RSpecRunTime] Finishing example group spec/services/post_receive_service_spec.rb. It took 11.16 seconds. Expected to take 22.61 seconds.
# [RSpecRunTime] Starting example group spec/policies/todo_policy_spec.rb. Expected to take 21.48 seconds.

TodoPolicy
  own_todo
    user: user1, todo: todo1, allowed: true
      behaves like grants the expected permissions
        is expected to be allowed :read_todo
# [RSpecRunTime] RSpec elapsed time: 17 minutes 16.65 seconds. Current RSS: ~1560M. load average: 1.20 1.14 1.09 1/290 16028


    user: user2, todo: todo2, allowed: true
      behaves like grants the expected permissions
        is expected to be allowed :read_todo
    user: user1, todo: todo2, allowed: false
      behaves like grants the expected permissions
        is expected to be disallowed :read_todo
    user: user1, todo: todo3, allowed: false
      behaves like grants the expected permissions
        is expected to be disallowed :read_todo
    user: user2, todo: todo1, allowed: false
      behaves like grants the expected permissions
        is expected to be disallowed :read_todo
    user: user2, todo: todo4, allowed: false
      behaves like grants the expected permissions
        is expected to be disallowed :read_todo
    user: user3, todo: todo1, allowed: false
      behaves like grants the expected permissions
        is expected to be disallowed :read_todo
    user: user3, todo: todo2, allowed: false
      behaves like grants the expected permissions
        is expected to be disallowed :read_todo
    user: user3, todo: todo3, allowed: false
      behaves like grants the expected permissions
        is expected to be disallowed :read_todo
    user: user3, todo: todo4, allowed: false
      behaves like grants the expected permissions
        is expected to be disallowed :read_todo
    user: user2, todo: todo3, allowed: false
      behaves like grants the expected permissions
        is expected to be disallowed :read_todo
  read_note
    user: reporter, todo: no_note_todo1, allowed: true
      behaves like grants the expected permissions
        is expected to be allowed :read_todo
# [RSpecRunTime] RSpec elapsed time: 17 minutes 23.58 seconds. Current RSS: ~1501M. load average: 1.18 1.14 1.09 1/285 16029


      behaves like grants the expected permissions
        is expected to be allowed :update_todo
    user: reporter, todo: note_todo1, allowed: true
      behaves like grants the expected permissions
        is expected to be allowed :read_todo
      behaves like grants the expected permissions
        is expected to be allowed :update_todo
    user: reporter, todo: internal_note_todo1, allowed: true
      behaves like grants the expected permissions
        is expected to be allowed :read_todo
      behaves like grants the expected permissions
        is expected to be allowed :update_todo
    user: guest, todo: no_note_todo2, allowed: true
      behaves like grants the expected permissions
        is expected to be allowed :read_todo
      behaves like grants the expected permissions
        is expected to be allowed :update_todo
    user: guest, todo: note_todo2, allowed: true
      behaves like grants the expected permissions
        is expected to be allowed :read_todo
      behaves like grants the expected permissions
        is expected to be allowed :update_todo
    user: guest, todo: internal_note_todo2, allowed: false
      behaves like grants the expected permissions
        is expected to be disallowed :read_todo
      behaves like grants the expected permissions
        is expected to be disallowed :update_todo
    user: non_member, todo: no_note_todo3, allowed: false
      behaves like grants the expected permissions
        is expected to be disallowed :read_todo
      behaves like grants the expected permissions
        is expected to be disallowed :update_todo
    user: non_member, todo: note_todo3, allowed: false
      behaves like grants the expected permissions
        is expected to be disallowed :read_todo
      behaves like grants the expected permissions
        is expected to be disallowed :update_todo
    user: non_member, todo: internal_note_todo3, allowed: false
      behaves like grants the expected permissions
        is expected to be disallowed :read_todo
      behaves like grants the expected permissions
        is expected to be disallowed :update_todo

# [RSpecRunTime] Finishing example group spec/policies/todo_policy_spec.rb. It took 12.32 seconds. Expected to take 21.48 seconds.
# [RSpecRunTime] Starting example group spec/models/concerns/project_api_compatibility_spec.rb. Expected to take 21.13 seconds.

ProjectAPICompatibility
  does not allow STI
  converts build_git_strategy=fetch to build_allow_git_fetch=true
  converts build_git_strategy=clone to build_allow_git_fetch=false
  #auto_devops_enabled
    initial: :missing, final: nil
      sets the correct value
# [RSpecRunTime] RSpec elapsed time: 17 minutes 27.49 seconds. Current RSS: ~1522M. load average: 1.17 1.14 1.09 1/285 16030


    initial: :missing, final: false
      sets the correct value
    initial: :missing, final: true
      sets the correct value
    initial: nil, final: nil
      sets the correct value
    initial: nil, final: false
      sets the correct value
    initial: nil, final: true
      sets the correct value
    initial: false, final: nil
      sets the correct value
    initial: false, final: false
      sets the correct value
    initial: false, final: true
      sets the correct value
    initial: true, final: nil
      sets the correct value
    initial: true, final: false
      sets the correct value
    initial: true, final: true
      sets the correct value
  #auto_devops_deploy_strategy
    initial: :missing, final: "continuous"
      sets the correct value
    initial: :missing, final: "manual"
      sets the correct value
    initial: :missing, final: "timed_incremental"
      sets the correct value
    initial: "continuous", final: "continuous"
      sets the correct value
    initial: "continuous", final: "manual"
      sets the correct value
    initial: "continuous", final: "timed_incremental"
      sets the correct value
    initial: "manual", final: "continuous"
      sets the correct value
    initial: "manual", final: "manual"
      sets the correct value
    initial: "manual", final: "timed_incremental"
      sets the correct value
    initial: "timed_incremental", final: "continuous"
      sets the correct value
    initial: "timed_incremental", final: "manual"
      sets the correct value
    initial: "timed_incremental", final: "timed_incremental"
      sets the correct value

# [RSpecRunTime] Finishing example group spec/models/concerns/project_api_compatibility_spec.rb. It took 13.34 seconds. Expected to take 21.13 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/cache/json_caches/json_keyed_spec.rb. Expected to take 19.84 seconds.

Gitlab::Cache::JsonCaches::JsonKeyed
  behaves like Json Cache class
    #read
      returns the cached value when there is data in the cache with the given key
      returns nil when there is no data in the cache with the given key
      parses the cached value
      returns nil when klass is nil
      gracefully handles an empty hash
      when the cached value is a JSON true value
        parses the cached value
      when the cached value is a JSON false value
        parses the cached value
      when the cached value is a hash
        gracefully handles bad cached entry
        gracefully handles unknown attributes
        gracefully handles excluded fields from attributes during serialization
      when the cached value is an array
        parses the cached value
        returns an empty array when klass is nil
        gracefully handles bad cached entry
        gracefully handles an empty array
        gracefully handles items with unknown attributes
    #write
      writes value to the cache with the given key
      writes a string containing a JSON representation of the value to the cache
      passes options the underlying cache implementation
      passes options the underlying cache implementation when options is empty
      passes options the underlying cache implementation when options is nil
    #fetch
      requires a block
      passes options the underlying cache implementation
      when the given key does not exist in the cache
        when the result of the block is truthy
          returns the result of the block
          caches the value
        when the result of the block is false
          returns the result of the block
          caches the value
        when the result of the block is nil
          returns the result of the block
          caches the value
      when the given key exists in the cache
        when the cached value is a hash
          parses the cached value
          decodes enums correctly
          returns the result of the block when `as` option is nil
          returns the result of the block when `as` option is missing
          when the cached value is an instance of ActiveRecord::Base
            returns a persisted record when id is set
            returns a new record when id is nil
            returns a new record when id is missing
            gracefully handles bad cached entry
            gracefully handles an empty hash
            gracefully handles unknown attributes
            gracefully handles excluded fields from attributes during serialization
# [RSpecRunTime] RSpec elapsed time: 17 minutes 43.63 seconds. Current RSS: ~1527M. load average: 1.13 1.13 1.09 1/285 16031


        when the cached value is a array
          parses the cached value
          returns an empty array when `as` option is nil
          returns an empty array when `as` option is not provided
        when the cached value is true
          returns the cached value
          does not execute the block
          does not write to the cache
        when the cached value is false
          returns the cached value
          does not execute the block
          does not write to the cache
        when the cached value is nil
          returns the result of the block
          writes the result of the block to the cache
  #read
    when the cached value is a hash
      returns nil when the data is not in a nested structure
      when there are other nested keys in the cache
        only returns the value we are concerned with
    when cache_key_strategy is unknown
      raises KeyError
  #write
    when there is an existing value in the cache
      preserves the existing value when writing a different key
      overwrites existing value when writing the same key
    when using the version strategy
      writes value to the cache with the given key
  #expire
    with cache_key concerns
      uses the expanded_key
      when namespace is nil
        uses the expanded_key

# [RSpecRunTime] Finishing example group spec/lib/gitlab/cache/json_caches/json_keyed_spec.rb. It took 6.74 seconds. Expected to take 19.84 seconds.
# [RSpecRunTime] Starting example group spec/helpers/tab_helper_spec.rb. Expected to take 19.58 seconds.

TabHelper
  gl_tabs_nav
    creates a tabs navigation
    captures block output
    adds custom class
  gl_tab_link_to
    creates a tab
    creates a tab with block output
    creates a tab with custom classes for enclosing list item without content block provided
    creates a tab with custom classes for enclosing list item with content block provided
    creates a tab with custom classes for anchor element
    creates an active tab with item_active = true
    when on the active page
      creates an active tab
      creates an inactive tab with item_active = false
  nav_link
    passes extra html options to the list element
    with the content of the li
      captures block output
    controller_param: nil, action_param: nil, path_param: nil, active: false
      is expected to eq false
    controller_param: :foo, action_param: nil, path_param: nil, active: true
      is expected to eq true
    controller_param: :bar, action_param: nil, path_param: nil, active: false
      is expected to eq false
    controller_param: :bar, action_param: :foo, path_param: nil, active: false
      is expected to eq false
    controller_param: :foo, action_param: :bar, path_param: nil, active: false
      is expected to eq false
    controller_param: :foo, action_param: :foo, path_param: nil, active: true
      is expected to eq true
    controller_param: :bar, action_param: nil, path_param: "foo#foo", active: true
      is expected to eq true
    controller_param: :bar, action_param: nil, path_param: ["foo#foo", "bar#bar"], active: true
      is expected to eq true
    controller_param: :bar, action_param: :bar, path_param: ["foo#foo", "bar#bar"], active: true
      is expected to eq true
    controller_param: :foo, action_param: nil, path_param: "bar#foo", active: true
      is expected to eq true
    controller_param: :bar, action_param: nil, path_param: "bar#foo", active: false
      is expected to eq false
    controller_param: :foo, action_param: [:foo, :bar], path_param: "bar#foo", active: true
      is expected to eq true
    controller_param: :bar, action_param: :bar, path_param: "foo#foo", active: true
      is expected to eq true
    controller_param: :foo, action_param: :foo, path_param: "bar#foo", active: true
      is expected to eq true
    controller_param: :bar, action_param: :foo, path_param: "bar#foo", active: false
      is expected to eq false
    controller_param: :foo, action_param: :bar, path_param: "bar#foo", active: false
      is expected to eq false
    controller_param: [:foo, :bar], action_param: nil, path_param: nil, active: true
      is expected to eq true
    controller_param: [:foo, :bar], action_param: nil, path_param: "bar#foo", active: true
      is expected to eq true
    controller_param: [:foo, :bar], action_param: :foo, path_param: "bar#foo", active: true
      is expected to eq true
    controller_param: nil, action_param: :foo, path_param: nil, active: true
      is expected to eq true
    controller_param: nil, action_param: :bar, path_param: nil, active: false
      is expected to eq false
    controller_param: nil, action_param: nil, path_param: "foo#bar", active: false
      is expected to eq false
    controller_param: nil, action_param: nil, path_param: "foo#foo", active: true
      is expected to eq true
    controller_param: nil, action_param: :bar, path_param: ["foo#foo", "bar#bar"], active: true
      is expected to eq true
    controller_param: nil, action_param: :bar, path_param: "foo#foo", active: true
      is expected to eq true
    controller_param: nil, action_param: :foo, path_param: "bar#foo", active: true
      is expected to eq true
    controller_param: nil, action_param: [:foo, :bar], path_param: nil, active: true
      is expected to eq true
    controller_param: nil, action_param: [:foo, :bar], path_param: "bar#foo", active: true
      is expected to eq true
    controller_param: nil, action_param: :bar, path_param: "bar#foo", active: false
      is expected to eq false
    page: nil, excluded_page: nil, active: false
      is expected to eq false
    page: "_some_page_", excluded_page: nil, active: true
      is expected to eq true
    page: "_some_page_", excluded_page: "_excluded_page_", active: true
      is expected to eq true
    page: "_some_page_", excluded_page: "_some_page_", active: false
      is expected to eq false
    with namespace in path notation
      controller_param: "foo/foo", action_param: nil, path_param: nil, active: false
        is expected to eq false
      controller_param: "bar/foo", action_param: nil, path_param: nil, active: true
        is expected to eq true
      controller_param: "foo/foo", action_param: :foo, path_param: nil, active: false
        is expected to eq false
      controller_param: "bar/foo", action_param: :bar, path_param: nil, active: false
        is expected to eq false
      controller_param: "bar/foo", action_param: :foo, path_param: nil, active: true
        is expected to eq true
      controller_param: nil, action_param: nil, path_param: "foo/foo#foo", active: false
        is expected to eq false
      controller_param: nil, action_param: nil, path_param: "bar/foo#foo", active: true
        is expected to eq true
  gl_tab_counter_badge
    creates a tab counter badge
    with extra classes
      creates a tab counter badge with the correct class attribute
    with data attributes
      creates a tab counter badge with the data attributes

# [RSpecRunTime] Finishing example group spec/helpers/tab_helper_spec.rb. It took 6.64 seconds. Expected to take 19.58 seconds.
# [RSpecRunTime] Starting example group spec/workers/users/deactivate_dormant_users_worker_spec.rb. Expected to take 18.75 seconds.

Users::DeactivateDormantUsersWorker
  #perform
    does not run for SaaS
    when automatic deactivation of dormant users is enabled
      when admin mode is not enabled
        is expected to change `dormant.reload.state` to "deactivated" and change `inactive.reload.state` to "deactivated"
        example at ./spec/workers/users/deactivate_dormant_users_worker_spec.rb:67
        example at ./spec/workers/users/deactivate_dormant_users_worker_spec.rb:81
        user_type: :human, expected_state: "deactivated"
          is expected to eq "deactivated"
# [RSpecRunTime] RSpec elapsed time: 17 minutes 54.34 seconds. Current RSS: ~1526M. load average: 1.11 1.13 1.08 1/285 16032


        user_type: :support_bot, expected_state: "active"
          is expected to eq "active"
        user_type: :alert_bot, expected_state: "active"
          is expected to eq "active"
        user_type: :visual_review_bot, expected_state: "active"
          is expected to eq "active"
        user_type: :service_user, expected_state: "deactivated"
          is expected to eq "deactivated"
        user_type: :ghost, expected_state: "active"
          is expected to eq "active"
        user_type: :project_bot, expected_state: "active"
          is expected to eq "active"
        user_type: :migration_bot, expected_state: "active"
          is expected to eq "active"
        user_type: :security_bot, expected_state: "active"
          is expected to eq "active"
        user_type: :automation_bot, expected_state: "active"
          is expected to eq "active"
      when admin mode is enabled
        is expected to change `dormant.reload.state` to "deactivated" and change `inactive.reload.state` to "deactivated"
        example at ./spec/workers/users/deactivate_dormant_users_worker_spec.rb:67
        example at ./spec/workers/users/deactivate_dormant_users_worker_spec.rb:81
        user_type: :human, expected_state: "deactivated"
          is expected to eq "deactivated"
# [RSpecRunTime] RSpec elapsed time: 17 minutes 58.94 seconds. Current RSS: ~1522M. load average: 1.10 1.12 1.08 1/285 16033


        user_type: :support_bot, expected_state: "active"
          is expected to eq "active"
        user_type: :alert_bot, expected_state: "active"
          is expected to eq "active"
        user_type: :visual_review_bot, expected_state: "active"
          is expected to eq "active"
        user_type: :service_user, expected_state: "deactivated"
          is expected to eq "deactivated"
        user_type: :ghost, expected_state: "active"
          is expected to eq "active"
        user_type: :project_bot, expected_state: "active"
          is expected to eq "active"
        user_type: :migration_bot, expected_state: "active"
          is expected to eq "active"
        user_type: :security_bot, expected_state: "active"
          is expected to eq "active"
        user_type: :automation_bot, expected_state: "active"
          is expected to eq "active"
    when automatic deactivation of dormant users is disabled
      does nothing

# [RSpecRunTime] Finishing example group spec/workers/users/deactivate_dormant_users_worker_spec.rb. It took 10.18 seconds. Expected to take 18.75 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/trace/checksum_spec.rb. Expected to take 17.7 seconds.

Gitlab::Ci::Trace::Checksum
  when build pending state exists
    when matching persisted trace chunks exist
      calculates combined trace chunks CRC32 correctly
    when trace chunks were persisted in a wrong order
      makes trace checksum invalid but not corrupted
    when one of the trace chunks is missing
      makes trace checksum invalid and corrupted
    when checksums of persisted trace chunks do not match
      makes trace checksum invalid but not corrupted
    when persisted trace chunks are missing
      makes trace checksum invalid
  when build pending state is missing
    #state_crc32
      returns nil
    #valid?
      is expected not to be valid
  #trace_chunks
    does not load raw_data from a database store
  #last_chunk
    when there are no chunks
      returns nil
      is not a valid trace
      is not a corrupted trace
# [RSpecRunTime] RSpec elapsed time: 18 minutes 9.52 seconds. Current RSS: ~1505M. load average: 1.24 1.15 1.10 1/285 16034


    when there are multiple chunks
      returns chunk with the highest index
      is not a valid trace
      is not a corrupted trace
# [RSpecRunTime] RSpec elapsed time: 18 minutes 11.39 seconds. Current RSS: ~1500M. load average: 1.22 1.15 1.09 1/285 16035


  #trace_size
    returns total trace size in bytes

# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/trace/checksum_spec.rb. It took 9.39 seconds. Expected to take 17.7 seconds.
# [RSpecRunTime] Starting example group spec/services/merge_requests/retarget_chain_service_spec.rb. Expected to take 17.53 seconds.

MergeRequests::RetargetChainService
  #execute
    when there is another MR
      in the same project
        and current is merged
          behaves like retargets merge request
            another merge request is retargeted
# [RSpecRunTime] RSpec elapsed time: 18 minutes 13.75 seconds. Current RSS: ~1504M. load average: 1.22 1.15 1.09 1/291 16083


        and current is closed
          behaves like does not retarget merge request
            another merge request is unchanged
        and another is closed
          behaves like does not retarget merge request
            another merge request is unchanged
        and another is merged
          behaves like does not retarget merge request
            another merge request is unchanged
      in forked project
        when user has access to source project
          behaves like retargets merge request
            another merge request is retargeted
# [RSpecRunTime] RSpec elapsed time: 18 minutes 16.7 seconds. Current RSS: ~1500M. load average: 1.28 1.17 1.10 1/290 16101


        when user does not have access to source project
          behaves like does not retarget merge request
            another merge request is unchanged
# [RSpecRunTime] RSpec elapsed time: 18 minutes 17.88 seconds. Current RSS: ~1498M. load average: 1.28 1.17 1.10 1/290 16104


      and current and another MR is from a fork
        behaves like does not retarget merge request
          another merge request is unchanged
# [RSpecRunTime] RSpec elapsed time: 18 minutes 19.61 seconds. Current RSS: ~1496M. load average: 1.28 1.17 1.10 1/290 16105


    when many merge requests are to be retargeted
      retargets and rebases only 4 of them
      when rebase_when_retargetting_mrs is disabled
        does not rebase any MRs
# [RSpecRunTime] RSpec elapsed time: 18 minutes 26.36 seconds. Current RSS: ~1498M. load average: 1.24 1.16 1.10 1/290 16222



# [RSpecRunTime] Finishing example group spec/services/merge_requests/retarget_chain_service_spec.rb. It took 14.35 seconds. Expected to take 17.53 seconds.
# [RSpecRunTime] Starting example group spec/lib/extracts_path_spec.rb. Expected to take 16.72 seconds.

ExtractsPath
  #assign_ref_vars
    log tree path has no escape sequences
    behaves like assigns ref vars
      assigns the repository var
      ref contains %20
        is not converted to a space in @id
# [RSpecRunTime] RSpec elapsed time: 18 minutes 27.59 seconds. Current RSS: ~1512M. load average: 1.24 1.16 1.10 1/290 16242


      ref contains trailing space
        strips surrounding space
      ref contains leading space
        strips surrounding space
      path contains space
        is not converted to %20 in @path
      subclass overrides get_id
        uses ref returned by get_id
    ref contains space in the middle
      returns 404
    ref only exists without .atom suffix
      with a path
        renders a 404
      without a path
        sets the un-suffixed version as @ref
        sets the request format to Atom
    ref exists with .atom suffix
      with a path
        sets the suffixed version as @ref
        does not change the request format
      without a path
        sets the suffixed version as @ref
        does not change the request format
    ref and path are nil
      does not set commit
    ref points to a previous default branch
      redirects to the new default branch for a GET request
      redirects to the new default branch for a HEAD request
      returns 404 for any other request type
      redirect behaviour is disabled
        returns 404 for a GET request
  behaves like extracts refs
    #extract_ref
      returns an empty pair when no repository_container is set
      without a path
        extracts a valid branch
        extracts a valid tag
        extracts a valid commit SHA1 ref without a path
        extracts a valid commit SHA256 ref without a path
        falls back to a primitive split for an invalid ref
        does not fetch ref names when there is no slash
        fetches ref names when there is a slash
      with a path
        extracts a valid branch
        extracts a valid tag
        extracts a valid commit SHA1
        extracts a valid commit SHA256
        falls back to a primitive split for an invalid ref
        extracts the longest matching ref
        when the repository does not have ambiguous refs
          does not fetch all ref names when the first path component is a ref
          fetches all ref names when the first path component is not a ref
        when the repository has ambiguous refs
          always fetches all ref names
  #extract_ref_without_atom
    ignores any matching refs suffixed with atom
    returns the longest matching ref
    raises an error if there are no matching refs

# [RSpecRunTime] Finishing example group spec/lib/extracts_path_spec.rb. It took 5.99 seconds. Expected to take 16.72 seconds.
# [RSpecRunTime] Starting example group spec/initializers/load_balancing_spec.rb. Expected to take 16.49 seconds.

load_balancing
  with replica hosts configured
    configures load balancer with two replica hosts
    for a clustered puma worker
      configures load balancer to have two replica hosts
      makes a read query successfully
      makes a write query successfully
# [RSpecRunTime] RSpec elapsed time: 18 minutes 44.83 seconds. Current RSS: ~1504M. load average: 1.11 1.13 1.09 1/283 16277



# [RSpecRunTime] Finishing example group spec/initializers/load_balancing_spec.rb. It took 12.6 seconds. Expected to take 16.49 seconds.
# [RSpecRunTime] Starting example group spec/workers/merge_request_cleanup_refs_worker_spec.rb. Expected to take 15.6 seconds.

MergeRequestCleanupRefsWorker
  #perform_work
    when next cleanup schedule is found
      marks the cleanup schedule as completed on success
      when service fails
        marks the cleanup schedule as unstarted and track the failure
        and cleanup schedule has already failed 3 times
          marks the cleanup schedule as failed and track the failure
# [RSpecRunTime] RSpec elapsed time: 18 minutes 48.5 seconds. Current RSS: ~1532M. load average: 1.10 1.13 1.09 1/291 16408


    when there is no next cleanup schedule found
      does nothing
  #remaining_work_count
    returns number of scheduled and unstarted cleanup schedule records
    when count exceeds max_running_jobs
      gets capped at max_running_jobs
# [RSpecRunTime] RSpec elapsed time: 18 minutes 56.6 seconds. Current RSS: ~1589M. load average: 1.09 1.13 1.09 1/291 16799


  #max_running_jobs
    returns the value of MAX_RUNNING_JOBS

# [RSpecRunTime] Finishing example group spec/workers/merge_request_cleanup_refs_worker_spec.rb. It took 11.79 seconds. Expected to take 15.6 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb. Expected to take 15.49 seconds.

Gitlab::SidekiqConfig::WorkerMatcher
  #match?
    with valid input
      query: "worker_name=WorkerA", expected_metadatas: ["WorkerA"]
        is expected to contain exactly "WorkerA"
      query: "worker_name=WorkerA2", expected_metadatas: ["WorkerA2"]
        is expected to contain exactly "WorkerA2"
      query: "worker_name=WorkerB|worker_name=WorkerD", expected_metadatas: ["WorkerB"]
        is expected to contain exactly "WorkerB"
      query: "worker_name!=WorkerA", expected_metadatas: ["WorkerA2", "WorkerB", "WorkerC"]
        is expected to contain exactly "WorkerA2", "WorkerB", and "WorkerC"
      query: "feature_category=category_a", expected_metadatas: ["WorkerA", "WorkerA2"]
        is expected to contain exactly "WorkerA" and "WorkerA2"
      query: "feature_category=category_a,category_c", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerC"]
        is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerC"
      query: "feature_category=category_a|feature_category=category_c", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerC"]
        is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerC"
      query: "feature_category!=category_a", expected_metadatas: ["WorkerB", "WorkerC"]
        is expected to contain exactly "WorkerB" and "WorkerC"
      query: "has_external_dependencies=true", expected_metadatas: ["WorkerB"]
        is expected to contain exactly "WorkerB"
      query: "has_external_dependencies=false", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerC"]
        is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerC"
      query: "has_external_dependencies=true,false", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB", "WorkerC"]
        is expected to contain exactly "WorkerA", "WorkerA2", "WorkerB", and "WorkerC"
      query: "has_external_dependencies=true|has_external_dependencies=false", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB", "WorkerC"]
        is expected to contain exactly "WorkerA", "WorkerA2", "WorkerB", and "WorkerC"
      query: "has_external_dependencies!=true", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerC"]
        is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerC"
      query: "urgency=high", expected_metadatas: ["WorkerA2", "WorkerB"]
        is expected to contain exactly "WorkerA2" and "WorkerB"
      query: "urgency=low", expected_metadatas: ["WorkerA"]
        is expected to contain exactly "WorkerA"
      query: "urgency=high,low,throttled", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB", "WorkerC"]
        is expected to contain exactly "WorkerA", "WorkerA2", "WorkerB", and "WorkerC"
      query: "urgency=low|urgency=throttled", expected_metadatas: ["WorkerA", "WorkerC"]
        is expected to contain exactly "WorkerA" and "WorkerC"
      query: "urgency!=high", expected_metadatas: ["WorkerA", "WorkerC"]
        is expected to contain exactly "WorkerA" and "WorkerC"
      query: "name=a", expected_metadatas: ["WorkerA"]
        is expected to contain exactly "WorkerA"
      query: "name=a,b", expected_metadatas: ["WorkerA", "WorkerB"]
        is expected to contain exactly "WorkerA" and "WorkerB"
      query: "name=a,a:2|name=b", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB"]
        is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerB"
      query: "name!=a,a:2", expected_metadatas: ["WorkerB", "WorkerC"]
        is expected to contain exactly "WorkerB" and "WorkerC"
      query: "resource_boundary=memory", expected_metadatas: ["WorkerB", "WorkerC"]
        is expected to contain exactly "WorkerB" and "WorkerC"
      query: "resource_boundary=memory,cpu", expected_metadatas: ["WorkerA", "WorkerB", "WorkerC"]
        is expected to contain exactly "WorkerA", "WorkerB", and "WorkerC"
      query: "resource_boundary=memory|resource_boundary=cpu", expected_metadatas: ["WorkerA", "WorkerB", "WorkerC"]
        is expected to contain exactly "WorkerA", "WorkerB", and "WorkerC"
      query: "resource_boundary!=memory,cpu", expected_metadatas: ["WorkerA2"]
        is expected to contain exactly "WorkerA2"
      query: "tags=no_disk_io", expected_metadatas: ["WorkerA", "WorkerB"]
        is expected to contain exactly "WorkerA" and "WorkerB"
      query: "tags=no_disk_io,git_access", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB"]
        is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerB"
      query: "tags=no_disk_io|tags=git_access", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB"]
        is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerB"
      query: "tags=no_disk_io&tags=git_access", expected_metadatas: ["WorkerA"]
        is expected to contain exactly "WorkerA"
      query: "tags!=no_disk_io", expected_metadatas: ["WorkerA2", "WorkerC"]
        is expected to contain exactly "WorkerA2" and "WorkerC"
      query: "tags!=no_disk_io,git_access", expected_metadatas: ["WorkerC"]
        is expected to contain exactly "WorkerC"
      query: "tags=unknown_tag", expected_metadatas: []
        is expected to contain exactly
      query: "tags!=no_disk_io", expected_metadatas: ["WorkerA2", "WorkerC"]
        is expected to contain exactly "WorkerA2" and "WorkerC"
      query: "tags!=no_disk_io,git_access", expected_metadatas: ["WorkerC"]
        is expected to contain exactly "WorkerC"
      query: "tags!=unknown_tag", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB", "WorkerC"]
        is expected to contain exactly "WorkerA", "WorkerA2", "WorkerB", and "WorkerC"
      query: "feature_category=category_a&urgency=high", expected_metadatas: ["WorkerA2"]
        is expected to contain exactly "WorkerA2"
      query: "feature_category=category_a&urgency=high|feature_category=category_c", expected_metadatas: ["WorkerA2", "WorkerC"]
        is expected to contain exactly "WorkerA2" and "WorkerC"
      query: "*", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB", "WorkerC"]
        is expected to contain exactly "WorkerA", "WorkerA2", "WorkerB", and "WorkerC"
    with invalid input
      query: "feature_category=\"category_a\"", error: Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm
        is expected to raise Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm
      query: "feature_category=", error: Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm
        is expected to raise Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm
      query: "feature_category~category_a", error: Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm
        is expected to raise Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm
      query: "invalid_term=a", error: Gitlab::SidekiqConfig::WorkerMatcher::UnknownPredicate
        is expected to raise Gitlab::SidekiqConfig::WorkerMatcher::UnknownPredicate

# [RSpecRunTime] Finishing example group spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb. It took 5.48 seconds. Expected to take 15.49 seconds.
# [RSpecRunTime] Starting example group spec/uploaders/packages/package_file_uploader_spec.rb. Expected to take 14.81 seconds.

Packages::PackageFileUploader
  behaves like builds correct paths
    #store_dir
      behaves like matches the method pattern
        is expected to match /^\h{2}\/\h{2}\/\h{64}\/packages\/\d+\/files\/\d+$/
    #cache_dir
      behaves like matches the method pattern
        is expected to match /\/packages\/tmp\/cache/
    #work_dir
      behaves like matches the method pattern
        is expected to match /\/packages\/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
  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}\/packages\/\d+\/files\/\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
  remote file
    with object storage enabled
      can store file remotely

# [RSpecRunTime] Finishing example group spec/uploaders/packages/package_file_uploader_spec.rb. It took 8.31 seconds. Expected to take 14.81 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/gitaly_client/ref_service_spec.rb. Expected to take 14.57 seconds.

Gitlab::GitalyClient::RefService
  #branches
    sends a find_all_branches message
  #remote_branches
    sends a find_all_remote_branches message
    concatenates and returns the response branches as Gitlab::Git::Branch objects
  #merged_branches
    sends a find_all_branches message
  #find_branch
    sends a find_branch message
    when Gitaly returns a ambiguios reference error
      raises an UnknownRef error
  #find_tag
    sends a find_tag message
    when tag is empty
      does not send a fing_tag message
    when Gitaly returns an Internal error
      raises an Internal error
    when Gitaly returns a tag_not_found error
      raises an UnknownRef error
  #default_branch_name
    sends a find_default_branch_name message
  #local_branches
    sends a find_local_branches message
    parses and sends the sort parameter
    translates known mismatches on sort param values
    uses default sort by name
  #tags
    sends a find_all_tags message
    with sorting option
      sends a correct find_all_tags message
      with semantic version sorting
        sends a correct find_all_tags message
      when sorting option is invalid
        uses default sort by name
    with pagination option
      sends a correct find_all_tags message
  #branch_names_contains_sha
    sends a list_branch_names_containing_commit message
  #get_tag_messages
    sends a get_tag_messages message
  #get_tag_signatures
    sends a get_tag_signatures message
  #ref_exists?
    sends a ref_exists message
  #update_refs
    sends a update_refs message
    with a generic BadStatus error
      raises the BadStatus error
    with a reference state mismatch error
      raises ReferencesLockedError
    with a references locked error
      raises ReferencesLockedError
    with a invalid format error
      raises InvalidRefFormatError
  #delete_refs
    sends a delete_refs message
    with a references locked error
      raises ReferencesLockedError
    with a invalid format error
      raises InvalidRefFormatError
  #list_refs
    sends a list_refs message
    accepts a patterns argument
    accepts a pointing_at_oids argument
    accepts a peel_tags argument
  #find_refs_by_oid
    sends a find_refs_by_oid message
    filters by ref_patterns

# [RSpecRunTime] Finishing example group spec/lib/gitlab/gitaly_client/ref_service_spec.rb. It took 5.4 seconds. Expected to take 14.57 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/diff/position_tracer/image_strategy_spec.rb. Expected to take 13.93 seconds.

Gitlab::Diff::PositionTracer::ImageStrategy
  #trace
    diff scenarios
      when the file was created in the old diff
        when the file is unchanged between the old and the new diff
          returns the new position
        when the file was updated between the old and the new diff
          returns the position of the change
        when the file was renamed in between the old and the new diff
          returns the position of the change
        when the file was removed in between the old and the new diff
          returns the position of the change
        when the file is unchanged in the new diff
          returns the position of the change
# [RSpecRunTime] RSpec elapsed time: 19 minutes 21.05 seconds. Current RSS: ~1590M. load average: 1.18 1.15 1.10 1/294 17180


      when the file was changed in the old diff
        when the file is unchanged in between the old and the new diff
          returns the new position
# [RSpecRunTime] RSpec elapsed time: 19 minutes 22.18 seconds. Current RSS: ~1586M. load average: 1.18 1.15 1.10 1/293 17267


        when the file was updated in between the old and the new diff
          returns the position of the change
# [RSpecRunTime] RSpec elapsed time: 19 minutes 23.26 seconds. Current RSS: ~1590M. load average: 1.18 1.15 1.10 1/293 17344


        when the file was renamed in between the old and the new diff
          returns the position of the change
# [RSpecRunTime] RSpec elapsed time: 19 minutes 24.46 seconds. Current RSS: ~1588M. load average: 1.18 1.15 1.10 1/293 17438


        when the file was removed in between the old and the new diff
          returns the position of the change
# [RSpecRunTime] RSpec elapsed time: 19 minutes 25.55 seconds. Current RSS: ~1585M. load average: 1.24 1.16 1.10 1/293 17514


        when the file is unchanged in the new diff
          returns the position of the change
# [RSpecRunTime] RSpec elapsed time: 19 minutes 26.82 seconds. Current RSS: ~1581M. load average: 1.24 1.16 1.10 3/293 17625



# [RSpecRunTime] Finishing example group spec/lib/gitlab/diff/position_tracer/image_strategy_spec.rb. It took 10.89 seconds. Expected to take 13.93 seconds.
# [RSpecRunTime] Starting example group spec/lib/sidebars/projects/menus/infrastructure_menu_spec.rb. Expected to take 13.76 seconds.

Sidebars::Projects::Menus::InfrastructureMenu
  behaves like not serializable as super_sidebar_menu_args
    returns nil
  #render?
    when menu does not have any menu items
      returns false
    when menu has menu items
      returns true
    behavior based on access level setting
      infrastructure_access_level: enabled, render: true
        renders based on the infrastructure access level
      infrastructure_access_level: disabled, render: false
        renders based on the infrastructure access level
  #link
    when Kubernetes menu item is visible
      menu link points to Kubernetes page
    when Kubernetes menu item is not visible
      menu link points to Terraform states page
      when Terraform states menu is not visible
        menu link points to Google Cloud page
  Menu Items
    Kubernetes
      behaves like access rights checks
        is expected not to be nil
        when the user does not have access
          is expected to be nil
    Terraform states
      behaves like access rights checks
        is expected not to be nil
        when the user does not have access
          is expected to be nil
      if terraform_state.enabled=true
        behaves like access rights checks
          is expected not to be nil
          when the user does not have access
            is expected to be nil
      if terraform_state.enabled=false
        is expected to be nil
    Google Cloud
      behaves like access rights checks
        is expected not to be nil
        when the user does not have access
          is expected to be nil
      when feature flag is turned off globally
        is expected to be nil
        when feature flag is enabled for specific project
          behaves like access rights checks
            is expected not to be nil
            when the user does not have access
              is expected to be nil
        when feature flag is enabled for specific group
          behaves like access rights checks
            is expected not to be nil
            when the user does not have access
              is expected to be nil
        when feature flag is enabled for specific project
          behaves like access rights checks
            is expected not to be nil
            when the user does not have access
              is expected to be nil
      when instance is not configured for Google OAuth2
        is expected to be nil
    AWS
      behaves like access rights checks
        is expected not to be nil
        when the user does not have access
          is expected to be nil
      when feature flag is turned off globally
        is expected to be nil
        when feature flag is enabled for specific project
          behaves like access rights checks
            is expected not to be nil
            when the user does not have access
              is expected to be nil
        when feature flag is enabled for specific group
          behaves like access rights checks
            is expected not to be nil
            when the user does not have access
              is expected to be nil
        when feature flag is enabled for specific project
          behaves like access rights checks
            is expected not to be nil
            when the user does not have access
              is expected to be nil

# [RSpecRunTime] Finishing example group spec/lib/sidebars/projects/menus/infrastructure_menu_spec.rb. It took 5.61 seconds. Expected to take 13.76 seconds.
# [RSpecRunTime] Starting example group spec/lib/sidebars/projects/menus/settings_menu_spec.rb. Expected to take 13.36 seconds.

Sidebars::Projects::Menus::SettingsMenu
  #render?
    returns false when menu does not have any menu items
  #separated?
    returns true
  Menu items
    General
      behaves like access rights checks
        is expected not to be nil
        when the user does not have access
          is expected to be nil
    Integrations
      behaves like access rights checks
        is expected not to be nil
        when the user does not have access
          is expected to be nil
    Webhooks
      behaves like access rights checks
        is expected not to be nil
        when the user does not have access
          is expected to be nil
    Access Tokens
      behaves like access rights checks
        is expected not to be nil
        when the user does not have access
          is expected to be nil
    Repository
      behaves like access rights checks
        is expected not to be nil
        when the user does not have access
          is expected to be nil
    CI/CD
      when project is archived
        is expected to be nil
      when project is not archived
        is expected not to be nil
        when the user does not have access
          is expected to be nil
    Monitor
      when project is archived
        is expected to be nil
      when project is not archived
        is expected not to be nil
        is expected to eq "Monitor"
        when the user does not have access
          is expected to be nil
    Merge requests
      behaves like access rights checks
        is expected not to be nil
        when the user does not have access
          is expected to be nil
    Packages and registries
      when container registry setting is disabled
        is expected to be nil
      when container registry setting is enabled
        is expected not to be nil
        when the user does not have access
          is expected to be nil
      when package registry setting is enabled
        is expected not to be nil
        when the user does not have access
          is expected to be nil
    Usage Quotas
      is expected not to be nil
      when the user does not have access
        is expected to be nil

# [RSpecRunTime] Finishing example group spec/lib/sidebars/projects/menus/settings_menu_spec.rb. It took 5.59 seconds. Expected to take 13.36 seconds.
# [RSpecRunTime] Starting example group spec/models/protected_branch/merge_access_level_spec.rb. Expected to take 12.92 seconds.

ProtectedBranch::MergeAccessLevel
  does not allow STI
  is expected to belong to protected_branch required: false
  validations
    when role?
      is expected to validate that :access_level is either ‹30›, ‹40›, ‹60›, or ‹0›
      is expected to validate that :access_level cannot be empty/falsy
      is expected to validate that :access_level is case-sensitively unique within the scope of :protected_branch_id
# [RSpecRunTime] RSpec elapsed time: 19 minutes 39.18 seconds. Current RSS: ~1587M. load average: 1.12 1.14 1.09 1/288 17626


    when not role?
      is expected not to validate that :access_level cannot be empty/falsy
      is expected not to validate that :access_level is either ‹30›, ‹40›, ‹60›, or ‹0›
      is expected not to validate that :access_level is case-sensitively unique within the scope of :protected_branch_id
  ::human_access_levels
    is expected to eq {30=>"Developers + Maintainers", 40=>"Maintainers", 60=>"Instance admins", 0=>"No one"}
  #check_access
    when current_user is nil
      is expected to eq false
    when current_user access exists without membership
      does not check membership if check_membership_in_protected_ref_access FF is disabled
      when check_membership_in_protected_ref_access FF is enabled
        does check membership
        returns false
        when user has inherited membership
          is expected to be truthy
    when access_level is NO_ACCESS
      is expected to eq false
    when instance admin access is configured
      when current_user is a maintainer
        is expected to eq false
      when current_user is admin
        is expected to eq true
    when current_user can push_code to project
      and member access is high enough
        is expected to eq true
        when external authorization denies access
          is expected to be falsey
      and member access is too low
        is expected to eq false
    when current_user cannot push_code to project
      is expected to eq false
  #project
    delegates project to protected_branch association
  #protected_branch_group
    looks for the group attached to protected_branch
  when current_project is nil
    and protected_branch_group isn't nil
      assign_access_level: :guest, expected_check_access: false
        is expected to eq false
      assign_access_level: :reporter, expected_check_access: false
        is expected to eq false
      assign_access_level: :developer, expected_check_access: true
        is expected to eq true
      assign_access_level: :maintainer, expected_check_access: true
        is expected to eq true
      assign_access_level: :owner, expected_check_access: true
        is expected to eq true
  ::allowed_access_levels
    when running on Gitlab.com?
      is expected to contain exactly 30, 40, and 0
    when self hosted?
      is expected to contain exactly 30, 40, 60, and 0

# [RSpecRunTime] Finishing example group spec/models/protected_branch/merge_access_level_spec.rb. It took 6.15 seconds. Expected to take 12.92 seconds.
# [RSpecRunTime] Starting example group spec/services/ci/pipeline_schedules/create_service_spec.rb. Expected to take 12.72 seconds.

Ci::PipelineSchedules::CreateService
  execute
    when user does not have permission
      returns ServiceResponse.error
    when user has permission
      saves values with passed params
      returns ServiceResponse.success
      when enforce_full_refs_for_pipeline_schedules is enabled
        saves values with passed params
      when schedule save fails
        returns ServiceResponse.error
    behaves like pipeline schedules checking variables permission
      when sending variables
        when user is maintainer
          behaves like success response with variables
            saves variables
            behaves like success response
              saves values with passed params
              when enforce_full_refs_for_pipeline_schedules is enabled
                saves values with passed params
        when user is developer
          behaves like success response with variables
            saves variables
            behaves like success response
              saves values with passed params
              when enforce_full_refs_for_pipeline_schedules is enabled
                saves values with passed params
        when restrict_user_defined_variables is true
          behaves like success response with variables
            saves variables
            behaves like success response
              saves values with passed params
              when enforce_full_refs_for_pipeline_schedules is enabled
                saves values with passed params
          when user is developer
            behaves like failure response
              does not save
      when not sending variables
        when user is maintainer
          behaves like success response
            saves values with passed params
            when enforce_full_refs_for_pipeline_schedules is enabled
              saves values with passed params
        when user is developer
          behaves like success response
            saves values with passed params
            when enforce_full_refs_for_pipeline_schedules is enabled
              saves values with passed params
        when restrict_user_defined_variables is true
          behaves like success response
            saves values with passed params
            when enforce_full_refs_for_pipeline_schedules is enabled
              saves values with passed params
          when user is developer
            behaves like success response
              saves values with passed params
              when enforce_full_refs_for_pipeline_schedules is enabled
                saves values with passed params

# [RSpecRunTime] Finishing example group spec/services/ci/pipeline_schedules/create_service_spec.rb. It took 6.04 seconds. Expected to take 12.72 seconds.
# [RSpecRunTime] Starting example group spec/serializers/commit_entity_spec.rb. Expected to take 12.28 seconds.

CommitEntity
  contains path to commit
  contains URL to commit
  needs to receive project in the request
  exposes gravatar url that belongs to author
  when commit author is a user
    contains information about user
# [RSpecRunTime] RSpec elapsed time: 19 minutes 53.62 seconds. Current RSS: ~1585M. load average: 1.10 1.13 1.09 1/293 17681


  when commit author is not a user
    does not contain author details
  when type is not set
    does not expose extra properties
  when type is "full"
    exposes extra properties
    when commit has signature
      exposes "signature_html"
# [RSpecRunTime] RSpec elapsed time: 19 minutes 58.12 seconds. Current RSS: ~1578M. load average: 1.09 1.13 1.09 1/293 17740


    when commit has pipeline
      exposes "pipeline_status_path"
  when commit_url_params is set
    adds commit_url_params to url and path

# [RSpecRunTime] Finishing example group spec/serializers/commit_entity_spec.rb. It took 9.54 seconds. Expected to take 12.28 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/pipeline/chain/populate_metadata_spec.rb. Expected to take 12.06 seconds.

Gitlab::Ci::Pipeline::Chain::PopulateMetadata
  with auto_cancel
    builds pipeline_metadata
    behaves like not breaking the chain
      does not break the chain
# [RSpecRunTime] RSpec elapsed time: 20 minutes 1.1 seconds. Current RSS: ~1571M. load average: 1.08 1.13 1.09 1/293 17780


    with no auto_cancel
      behaves like not saving pipeline metadata
        does not save pipeline metadata
    with auto_cancel: nil
      behaves like not saving pipeline metadata
        does not save pipeline metadata
    with auto_cancel_on_new_commit and no auto_cancel_on_job_failure
      builds pipeline_metadata
    with auto_cancel_on_job_failure and no auto_cancel_on_new_commit
      builds pipeline_metadata
    with auto_cancel_on_new_commit: nil and auto_cancel_on_job_failure: nil
      behaves like not saving pipeline metadata
        does not save pipeline metadata
    with auto_cancel_on_new_commit valid and auto_cancel_on_job_failure: nil
      builds pipeline_metadata
    with auto_cancel_on_new_commit: nil and auto_cancel_on_job_failure valid
      builds pipeline_metadata
    when auto_cancel_on_job_failure: none
      builds pipeline_metadata
    when auto_cancel_pipeline_on_job_failure feature is disabled
      ignores the auto_cancel_on_job_failure value
    with workflow:rules:auto_cancel
      with auto_cancel:on_new_commit not set and rules:workflow:auto_cancel:on_new_commit set
        when the rule is matched
          builds pipeline_metadata
        when the rule is not matched
          builds pipeline_metadata
      with auto_cancel:on_new_commit set and rules:workflow:auto_cancel:on_new_commit set
        when the rule is matched
          builds pipeline_metadata
        when the rule is not matched
          builds pipeline_metadata
  with pipeline name
    builds pipeline_metadata
    behaves like not breaking the chain
      does not break the chain
    with empty name
      behaves like not saving pipeline metadata
        does not save pipeline metadata
      with empty name after variable substitution
        behaves like not saving pipeline metadata
          does not save pipeline metadata
    with variables
      substitutes variables
    with invalid name
      returns error and breaks chain
  with both pipeline name and auto_cancel
    builds pipeline_metadata
    behaves like not breaking the chain
      does not break the chain

# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/pipeline/chain/populate_metadata_spec.rb. It took 6.14 seconds. Expected to take 12.06 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/mail_room/mail_room_spec.rb. Expected to take 11.67 seconds.

Gitlab::MailRoom
  #enabled_configs
    when both email and address is set
      returns email configs
    when the yml file cannot be found
      returns an empty list
    when email is disabled
      returns an empty list
    when email is enabled but address is not set
      returns an empty list
    when a config value is missing from the yml file
      overwrites missing values with the default
    when only incoming_email config is present
      returns only encoming_email
    setting up redis settings
      sets delivery method to Sidekiq by default
      sets redis config
    setting up the log path
      if the log path is a relative path
        expands the log path to an absolute value
      if the log path is absolute path
        leaves the path as-is
  #enabled_mailbox_types
    when all mailbox types are enabled
      returns the mailbox types
    when an mailbox_types is disabled
      returns the mailbox types
    when email is disabled
      returns an empty array
  #worker_for
    matched mailbox types
      returns the constantized worker class
    non-existing mailbox_type
      returns nil
  config/mail_room.yml
    when delivery_method is implicit
      behaves like renders mail-specific config file correctly
        renders mail room config file correctly
      behaves like renders arbitration options correctly
        renders arbitration options correctly
      behaves like renders the sidekiq delivery method and options correctly
        renders the sidekiq delivery method and options correctly
    when delivery_method is explicitly sidekiq
      behaves like renders mail-specific config file correctly
        renders mail room config file correctly
      behaves like renders arbitration options correctly
        renders arbitration options correctly
      behaves like renders the sidekiq delivery method and options correctly
        renders the sidekiq delivery method and options correctly
    when delivery_method is webhook (internally postback in mail_room)
      renders the webhook (postback) delivery method and options correctly
      behaves like renders mail-specific config file correctly
        renders mail room config file correctly
      behaves like renders arbitration options correctly
        renders arbitration options correctly
  mailroom encrypted configuration
    when parsing secrets.yml
      reads in the secrets.yml file as erb and merges shared and test environments
    when parsing gitlab.yml
      returns default encrypted_secret_file path
      returns encrypted_secret_file relative to custom shared path
      returns custom encrypted_secret_file
    when using encrypted secrets
      renders the encrypted secrets into the configuration correctly

# [RSpecRunTime] Finishing example group spec/lib/gitlab/mail_room/mail_room_spec.rb. It took 3.96 seconds. Expected to take 11.67 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/template/merge_request_template_spec.rb. Expected to take 11.57 seconds.

Gitlab::Template::MergeRequestTemplate
  .all
    strips the md suffix
    combines the globals and rest
# [RSpecRunTime] RSpec elapsed time: 20 minutes 12.06 seconds. Current RSS: ~1575M. load average: 1.07 1.12 1.09 1/293 18004


  .find
    returns nil if the file does not exist
    returns the merge request object of a valid file
# [RSpecRunTime] RSpec elapsed time: 20 minutes 14.01 seconds. Current RSS: ~1585M. load average: 1.07 1.12 1.09 1/293 18161


  .by_category
    return array of templates
    when repo is bare or empty
      returns empty array
# [RSpecRunTime] RSpec elapsed time: 20 minutes 15.61 seconds. Current RSS: ~1580M. load average: 1.06 1.12 1.09 1/293 18242


  #content
    loads the full file
    raises error when file is not found
    when repo is empty
      raises file not found
# [RSpecRunTime] RSpec elapsed time: 20 minutes 18.0 seconds. Current RSS: ~1579M. load average: 1.06 1.12 1.09 1/293 18399



# [RSpecRunTime] Finishing example group spec/lib/gitlab/template/merge_request_template_spec.rb. It took 8.14 seconds. Expected to take 11.57 seconds.
# [RSpecRunTime] Starting example group spec/rubocop/cop/graphql/descriptions_spec.rb. Expected to take 11.13 seconds.

RuboCop::Cop::Graphql::Descriptions
  autocorrecting "this" to "the"
    autocorrects if "this" is found
    does not autocorrect if "this" is not found
    autocorrects a heredoc if "this" is found
    does not autocorrect a heredoc if "this" is not found
  with fields
    adds an offense when there is no description
    adds an offense when description does not end in a period
    adds an offense when description begins with "A"
    adds an offense when description begins with "The"
    adds an offense when description contains the demonstrative "this"
    does not add an offense when a word does not contain the substring "this"
    does not add an offense when description is correct
    does not add an offense when there is a resolver
# [RSpecRunTime] RSpec elapsed time: 20 minutes 19.94 seconds. Current RSS: ~1576M. load average: 1.06 1.12 1.09 1/293 18400


  with arguments
    adds an offense when there is no description
    adds an offense when description does not end in a period
    adds an offense when description begins with "A"
    adds an offense when description begins with "The"
    adds an offense when description contains the demonstrative "this"
    does not add an offense when a word does not contain the substring "this"
    does not add an offense when description is correct
# [RSpecRunTime] RSpec elapsed time: 20 minutes 21.1 seconds. Current RSS: ~1580M. load average: 1.06 1.12 1.09 1/293 18401


  autocorrecting periods in descriptions
    autocorrects missing periods
    does not autocorrect if periods exist
    autocorrects a heredoc
    does not autocorrect a heredoc if periods exist
  with enum values
    adds an offense when there is no description
    adds an offense when description does not end in a period
    adds an offense when description begins with "The"
    adds an offense when description begins with "A"
    adds an offense when description contains the demonstrative "this"
    does not add an offense when a word does not contain the substring "this"
    does not add an offense when description is correct (defined using `description:`)
    does not add an offense when description is correct (defined as a second argument)
# [RSpecRunTime] RSpec elapsed time: 20 minutes 22.76 seconds. Current RSS: ~1583M. load average: 1.06 1.12 1.09 1/293 18402



# [RSpecRunTime] Finishing example group spec/rubocop/cop/graphql/descriptions_spec.rb. It took 4.74 seconds. Expected to take 11.13 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/exclusive_lease_helpers/sleeping_lock_spec.rb. Expected to take 10.98 seconds.

Gitlab::ExclusiveLeaseHelpers::SleepingLock
  #retried?
    we have not made any attempts
      is expected not to be retried
    we just made a single (initial) attempt
      is not considered a retry
    made multiple attempts
      is considered a retry
  #obtain
    when the lease is not held
      obtains the lease on the first attempt, without sleeping
    when the lease is obtained already
      when retries are not specified
        retries to obtain a lease and raises an error
# [RSpecRunTime] RSpec elapsed time: 20 minutes 24.41 seconds. Current RSS: ~1581M. load average: 1.06 1.12 1.09 1/293 18403


      when specified retries are above the maximum attempts
        retries to obtain a lease and raises an error
# [RSpecRunTime] RSpec elapsed time: 20 minutes 30.99 seconds. Current RSS: ~1576M. load average: 0.89 1.08 1.08 1/288 18404


    when the lease is held elsewhere
      retries to obtain a lease and raises an error
      when the delay is computed from the attempt number
        uses the computation to determine the sleep length
      when lease is granted after retry
        knows that it retried
    cancel
      cancels the lease

# [RSpecRunTime] Finishing example group spec/lib/gitlab/exclusive_lease_helpers/sleeping_lock_spec.rb. It took 8.63 seconds. Expected to take 10.98 seconds.
# [RSpecRunTime] Starting example group spec/services/security/ci_configuration/sast_create_service_spec.rb. Expected to take 10.72 seconds.

Security::CiConfiguration::SastCreateService
  #execute
    user does not belong to project
      returns an error status
      does not track a snowplow event
    user belongs to project
      does track the snowplow event
      raises exception if the user does not have permission to create a new branch
      when exception is raised
        when branch was created
          tries to rm branch
# [RSpecRunTime] RSpec elapsed time: 20 minutes 33.65 seconds. Current RSS: ~1586M. load average: 0.89 1.08 1.08 1/293 18476


        when branch was not created
          does not try to rm branch
      with no parameters
        returns the path to create a new merge request
      when the project has a non-default ci config file
        does track the snowplow event
      when existing ci config contains anchors/aliases
        returns a ServiceResponse error
      when parsing existing ci config gives a Psych error
        returns a ServiceResponse error
      when parsing existing ci config gives any other error
        is successful
      with parameters
        returns the path to create a new merge request
      when the project is empty
        returns a ServiceResponse error
  when the repository is empty
    when initialize_with_sast is false
      returns a ServiceResponse error
    when initialize_with_sast is true
      behaves like commits directly to the default branch
        commits directly to the default branch
  when committing to the default branch
    does not try to remove that branch on raised exceptions
    behaves like commits directly to the default branch
      commits directly to the default branch

# [RSpecRunTime] Finishing example group spec/services/security/ci_configuration/sast_create_service_spec.rb. It took 6.07 seconds. Expected to take 10.72 seconds.
# [RSpecRunTime] Starting example group spec/services/ci/runners/register_runner_service_spec.rb. Expected to take 10.6 seconds.

Ci::Runners::RegisterRunnerService#execute
  when no token is provided
    returns error response
  when invalid token is provided
    returns error response
  when valid token is provided
    when instance registration token is used
      creates runner with default values
      when registering instance runners is disallowed
        behaves like runner registration is disallowed
          returns error response with runner_registration_disallowed reason
      with non-default arguments
        creates runner with specified values
      with runner token expiration interval
        creates runner with token expiration
    when project registration token is used
      creates project runner
      with runner registration disabled at instance level
        behaves like runner registration is disallowed
          returns error response with runner_registration_disallowed reason
      with runner registration disabled at group level
        behaves like runner registration is disallowed
          returns error response with runner_registration_disallowed reason
      when it exceeds the application limits
        does not create runner
      when abandoned runners cause application limits to not be exceeded
        creates runner
      when valid runner registrars do not include project
        returns 403 error
    when group registration token is used
      creates a group runner
      with runner registration disabled at instance level
        behaves like runner registration is disallowed
          returns error response with runner_registration_disallowed reason
      with runner registration disabled at group level
        behaves like runner registration is disallowed
          returns error response with runner_registration_disallowed reason
      when it exceeds the application limits
        does not create runner
      when abandoned runners cause application limits to not be exceeded
        creates runner
      when valid runner registrars do not include group
        returns error response
    when tags are provided
      creates runner with tags
      creates tags in bulk
      and tag list exceeds limit
        does not create any tags

# [RSpecRunTime] Finishing example group spec/services/ci/runners/register_runner_service_spec.rb. It took 4.68 seconds. Expected to take 10.6 seconds.
# [RSpecRunTime] Starting example group spec/serializers/merge_request_diff_entity_spec.rb. Expected to take 10.19 seconds.

MergeRequestDiffEntity
  as json
    exposes needed attributes
  #version_index
    when diff is not present
      behaves like version_index is nil
        returns nil
    when diff is not included in @merge_request_diffs
      behaves like version_index is nil
        returns nil
# [RSpecRunTime] RSpec elapsed time: 20 minutes 45.33 seconds. Current RSS: ~1544M. load average: 0.99 1.09 1.08 1/294 18788


    when @merge_request_diffs.size <= 1
      behaves like version_index is nil
        returns nil
    when @merge_request_diffs.size > 1
      returns difference between size and diff index
# [RSpecRunTime] RSpec elapsed time: 20 minutes 46.96 seconds. Current RSS: ~1545M. load average: 0.99 1.09 1.08 1/294 18874


  #short_commit_sha
    returns short sha
    returns nil if head_commit_sha does not exist
  #head_version_path
    merge request can be merged
      returns diff path with diff_head param set
    merge request cannot be merged
      returns diff path with diff_head param set

# [RSpecRunTime] Finishing example group spec/serializers/merge_request_diff_entity_spec.rb. It took 6.57 seconds. Expected to take 10.19 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/database/health_status/indicators/patroni_apdex_spec.rb. Expected to take 9.98 seconds.

Gitlab::Database::HealthStatus::Indicators::PatroniApdex
  behaves like Prometheus Alert based health indicator
    #evaluate
      behaves like Patroni Apdex Evaluator
        with main schema
          returns NoSignal signal in case the feature flag is disabled
          returns Normal signal when SLI condition is met
          returns Stop signal when SLI condition is not met
          without prometheus_alert_db_indicators_settings
            returns Unknown signal
          when Prometheus client is not ready
            returns Unknown signal
          when apdex SLI query is not configured
            returns Unknown signal
          when slo is not configured
            returns Unknown signal
          when SLI can not be calculated
            result: nil
              returns Unknown signal
            result: []
              returns Unknown signal
            result: [{}]
              returns Unknown signal
            result: [{"value"=>1}]
              returns Unknown signal
            result: [{"value"=>[1]}]
              returns Unknown signal
      behaves like Patroni Apdex Evaluator
        with ci schema
          returns NoSignal signal in case the feature flag is disabled
          returns Normal signal when SLI condition is met
          returns Stop signal when SLI condition is not met
          without prometheus_alert_db_indicators_settings
            returns Unknown signal
          when Prometheus client is not ready
            returns Unknown signal
          when apdex SLI query is not configured
            returns Unknown signal
          when slo is not configured
            returns Unknown signal
          when SLI can not be calculated
            result: nil
              returns Unknown signal
            result: []
              returns Unknown signal
            result: [{}]
              returns Unknown signal
            result: [{"value"=>1}]
              returns Unknown signal
            result: [{"value"=>[1]}]
              returns Unknown signal

# [RSpecRunTime] Finishing example group spec/lib/gitlab/database/health_status/indicators/patroni_apdex_spec.rb. It took 2.66 seconds. Expected to take 9.98 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/consul/internal_spec.rb. Expected to take 9.77 seconds.

Gitlab::Consul::Internal
  .api_url
    returns correct value
    when consul setting is not present in gitlab.yml
      does not fail
  .discover_service
    behaves like returns nil given blank value of
      with
        is expected to be nil
      with
        is expected to be nil
    behaves like returns nil given blank value of
      with
        is expected to be nil
      with
        is expected to be nil
    one service discovered
      returns the service address and port
    multiple services discovered
      uses the first service
    behaves like handles failure response
      raises Gitlab::Consul::Internal::SocketError when SocketError is rescued
      raises Gitlab::Consul::Internal::SSLError when OpenSSL::SSL::SSLError is rescued
      raises Gitlab::Consul::Internal::ECONNREFUSED when Errno::ECONNREFUSED is rescued
      raises Consul::Internal::UnexpectedResponseError when StandardError is rescued
      raises Consul::Internal::UnexpectedResponseError when request returns 500
      raises Consul::Internal::UnexpectedResponseError when request returns non json data
  .discover_prometheus_server_address
    returns the server address
    behaves like returns nil given blank value of
      with
        is expected to be nil
      with
        is expected to be nil
    behaves like handles failure response
      raises Gitlab::Consul::Internal::SocketError when SocketError is rescued
      raises Gitlab::Consul::Internal::SSLError when OpenSSL::SSL::SSLError is rescued
      raises Gitlab::Consul::Internal::ECONNREFUSED when Errno::ECONNREFUSED is rescued
      raises Consul::Internal::UnexpectedResponseError when StandardError is rescued
      raises Consul::Internal::UnexpectedResponseError when request returns 500
      raises Consul::Internal::UnexpectedResponseError when request returns non json data

# [RSpecRunTime] Finishing example group spec/lib/gitlab/consul/internal_spec.rb. It took 2.33 seconds. Expected to take 9.77 seconds.
# [RSpecRunTime] Starting example group spec/finders/keys_finder_spec.rb. Expected to take 9.47 seconds.

KeysFinder
  key_type
    when `key_type` is `ssh`
      returns only SSH keys
# [RSpecRunTime] RSpec elapsed time: 20 minutes 56.52 seconds. Current RSS: ~1559M. load average: 0.99 1.09 1.08 1/293 18983


    when `key_type` is not specified
      returns all types of keys
  fingerprint
    with invalid fingerprint
      with invalid MD5 fingerprint
        raises InvalidFingerprint
      with invalid SHA fingerprint
        raises InvalidFingerprint
    with valid fingerprints
      personal key with valid MD5 params
        with an existent fingerprint
          returns the key
          with FIPS mode
            raises InvalidFingerprint
        deploy key with an existent fingerprint
          returns the key
          with FIPS mode
            raises InvalidFingerprint
        with a non-existent fingerprint
          returns nil
          with FIPS mode
            raises InvalidFingerprint
      personal key with valid SHA256 params
        with an existent fingerprint
          returns key
        deploy key with an existent fingerprint
          returns key
        with a non-existent fingerprint
          returns nil
  user
    without user
      contains ssh_keys of all users in the system
    with user
      contains ssh_keys of only the specified users
  sort order
    sorts in last_used_at_desc order

# [RSpecRunTime] Finishing example group spec/finders/keys_finder_spec.rb. It took 4.38 seconds. Expected to take 9.47 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/database/dictionary_spec.rb. Expected to take 9.4 seconds.

Gitlab::Database::Dictionary
  #find_all_by_schema
    returns an array of entries with a given schema
    returns an empty array if no entries match the schema
  .entries
    all tables and views are unique
    builds a Dictionary with validated Entry records
  #find_all_having_desired_sharding_key_migration_job
    returns an array of entries having desired sharding key migration job
  #find_by_table_name
    finds an entry by table name
    returns nil if the entry is not found
  ::Entry
    for a table
      #name_and_schema
        returns the name of the table and its gitlab schema
      #table_name
        returns the name of the table
      #view_name
        returns nil
      #milestone
        returns the milestone in which the table was introduced
      #gitlab_schema
        returns the gitlab_schema of the table
      #schema?
        checks if the given schema matches the schema of the table
      #key_name
        returns the value of the name of the table
      #desired_sharding_key_migration_job_name
        returns the name of the migration that backfills the desired sharding key
      #validate!
        raises an error if the gitlab_schema is empty
      with allow_cross_joins
        #allow_cross_to_schemas
          returns the list of allowed schemas
      with allow_cross_transactions
        #allow_cross_to_schemas
          returns the list of allowed schemas
      with allow_cross_foreign_keys
        #allow_cross_to_schemas
          returns the list of allowed schemas
    for a view
      #table_name
        returns nil
      #view_name
        returns the name of the view
      #key_name
        returns the value of the name of the view
  .any_entry
    loads an entry from any scope
  #to_name_and_schema_mapping
    returns a hash of name and schema mappings
  .entry
    loads an Entry from the given scope

# [RSpecRunTime] Finishing example group spec/lib/gitlab/database/dictionary_spec.rb. It took 2.5 seconds. Expected to take 9.4 seconds.
# [RSpecRunTime] Starting example group spec/models/snippet_statistics_spec.rb. Expected to take 9.27 seconds.

SnippetStatistics
  does not allow STI
  is expected to belong to snippet required: false
  is expected to validate that :snippet cannot be empty/falsy
  #update_commit_count
    updates the count of commits
    when the snippet does not have a repository
      returns 0
  #update_file_count
    updates the count of files
    when the snippet does not have a repository
      returns 0
  #update_repository_size
    updates the repository_size
    when the snippet does not have a repository
      returns 0
  #refresh!
    retrieves and saves statistic data from repository
    when the database is read-only
      does nothing
  with a PersonalSnippet
    when creating
      behaves like personal snippet statistics updates
        schedules a namespace statistics worker
        does not try to update project stats
    when updating
      behaves like personal snippet statistics updates
        schedules a namespace statistics worker
        does not try to update project stats
  with a ProjectSnippet
    does not call personal snippet callbacks
    behaves like UpdateProjectStatistics
      is expected to be a new record

# [RSpecRunTime] Finishing example group spec/models/snippet_statistics_spec.rb. It took 3.85 seconds. Expected to take 9.27 seconds.
# [RSpecRunTime] Starting example group spec/services/service_ping/submit_service_ping_service_spec.rb. Expected to take 8.9 seconds.

ServicePing::SubmitService
  when usage ping is disabled
    behaves like does not run
      is expected not to receive post(*(any args)) 0 times
  when usage ping is disabled from GitLab config file
    behaves like does not run
      is expected not to receive post(*(any args)) 0 times
  when enabled_and_consented is false
    behaves like does not run
      is expected not to receive post(*(any args)) 0 times
  when enabled_and_consented is true
    submits a service ping payload without errors
  when usage ping is enabled
    sends a POST request
    and user requires usage stats consent
      behaves like does not run
        is expected not to receive post(*(any args)) 0 times
    when conv_index data is passed
      saves usage_data_id to version_usage_data_id_value
      behaves like saves DevOps report data from the response
        is expected to eq 31.37
    when only usage_data_id is passed in response
      does not save DevOps report data
      saves usage_data_id to version_usage_data_id_value
    when version app usage_data_id is invalid
      raises an exception
    when DevOps report data is passed
      behaves like saves DevOps report data from the response
        is expected to eq 31.37
    with saving raw_usage_data
      creates a raw_usage_data record
      saves the correct payload
      links to the default organization
    and usage ping response has unsuccessful status
      raises an exception
    and usage data is empty string
      behaves like does not send a blank usage ping payload
        is expected to raise ServicePing::SubmitService::SubmissionError
    and usage data is nil
      behaves like does not send a blank usage ping payload
        is expected to raise ServicePing::SubmitService::SubmissionError
    if version app response fails
      raises SubmissionError
    when skip_db_write passed to service
      does not save RawUsageData
      does not call DevOpsReport service
  metadata reporting
    submits metadata

# [RSpecRunTime] Finishing example group spec/services/service_ping/submit_service_ping_service_spec.rb. It took 3.07 seconds. Expected to take 8.9 seconds.
# [RSpecRunTime] Starting example group spec/services/ci/build_erase_service_spec.rb. Expected to take 8.81 seconds.

Ci::BuildEraseService
  #execute
    when build is erasable
      is successful
      erases artifacts
      erases trace
      records erasure detail
      when project is undergoing statistics refresh
        logs a warning
# [RSpecRunTime] RSpec elapsed time: 21 minutes 11.27 seconds. Current RSS: ~1538M. load average: 0.99 1.08 1.08 1/288 19023


    when build is not erasable
      is not successful
      does not erase artifacts
      does not erase trace
# [RSpecRunTime] RSpec elapsed time: 21 minutes 14.53 seconds. Current RSS: ~1510M. load average: 0.99 1.08 1.08 1/288 19024



# [RSpecRunTime] Finishing example group spec/services/ci/build_erase_service_spec.rb. It took 7.05 seconds. Expected to take 8.81 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/build/step_spec.rb. Expected to take 8.61 seconds.

Gitlab::Ci::Build::Step
  #from_commands
    when script option is specified
      behaves like has correct script
        fabricates an object
    when before and script option is specified
      behaves like has correct script
        fabricates an object
    when timeout option is specified in seconds
      has job level timeout
      behaves like has correct script
        fabricates an object
# [RSpecRunTime] RSpec elapsed time: 21 minutes 17.17 seconds. Current RSS: ~1499M. load average: 0.99 1.08 1.08 1/288 19025


  #from_release
    with release
      returns the release-cli command line
    when release is empty
      does not fabricate an object
  #from_after_script
    when after_script is empty
      does not fabricate an object
    when after_script is not empty
      fabricates an object

# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/build/step_spec.rb. It took 5.05 seconds. Expected to take 8.61 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/github_import/importer/single_endpoint_diff_notes_importer_spec.rb. Expected to take 8.52 seconds.

Gitlab::GithubImport::Importer::SingleEndpointDiffNotesImporter
  is expected to includes the Gitlab::GithubImport::ParallelScheduling module
  is expected to includes the Gitlab::GithubImport::SingleEndpointNotesImporting module
  is expected to eq Gitlab::GithubImport::Representation::DiffNote
  is expected to eq Gitlab::GithubImport::Importer::DiffNoteImporter
  is expected to eq :pull_request_comments
  is expected to eq :diff_note
  is expected to eq 1
  #each_object_to_import
    fetches data
    skips cached pages
    skips cached merge requests
# [RSpecRunTime] RSpec elapsed time: 21 minutes 24.74 seconds. Current RSS: ~1516M. load average: 0.99 1.08 1.08 1/288 19026



# [RSpecRunTime] Finishing example group spec/lib/gitlab/github_import/importer/single_endpoint_diff_notes_importer_spec.rb. It took 5.15 seconds. Expected to take 8.52 seconds.
# [RSpecRunTime] Starting example group spec/services/projects/deploy_tokens/create_service_spec.rb. Expected to take 8.32 seconds.

Projects::DeployTokens::CreateService
  behaves like a deploy token creation service
    #execute
      when the deploy token is valid
        creates a new DeployToken
        creates a new ProjectDeployToken
        returns a DeployToken
        sets the creator_id as the id of the current_user
# [RSpecRunTime] RSpec elapsed time: 21 minutes 27.01 seconds. Current RSS: ~1514M. load average: 0.99 1.08 1.08 1/288 19027


      when expires at date is not passed
        sets Forever.date
      when username is empty string
        converts it to nil
      when username is provided
        keeps the provided username
      when the deploy token is invalid
        does not create a new DeployToken
        does not create a new ProjectDeployToken
# [RSpecRunTime] RSpec elapsed time: 21 minutes 29.65 seconds. Current RSS: ~1509M. load average: 0.99 1.08 1.08 1/288 19028



# [RSpecRunTime] Finishing example group spec/services/projects/deploy_tokens/create_service_spec.rb. It took 4.91 seconds. Expected to take 8.32 seconds.
# [RSpecRunTime] Starting example group spec/services/quick_actions/target_service_spec.rb. Expected to take 8.25 seconds.

QuickActions::TargetService
  #execute
    for issue
      behaves like find target
        returns the target
# [RSpecRunTime] RSpec elapsed time: 21 minutes 30.82 seconds. Current RSS: ~1505M. load average: 0.99 1.08 1.08 1/288 19029


      behaves like build target
        builds a new target
      behaves like build target
        builds a new target
    for work item
      behaves like find target
        returns the target
      when work item belongs to a group
        behaves like find target
          returns the target
    for merge request
      behaves like find target
        returns the target
      behaves like build target
        builds a new target
      behaves like build target
        builds a new target
    for commit
      behaves like find target
        returns the target
      behaves like no target
        returns nil
      with nil target_iid
        behaves like find target
          returns the target
    for unknown type
      behaves like no target
        returns nil

# [RSpecRunTime] Finishing example group spec/services/quick_actions/target_service_spec.rb. It took 4.89 seconds. Expected to take 8.25 seconds.
# [RSpecRunTime] Starting example group spec/services/projects/download_service_spec.rb. Expected to take 7.97 seconds.

Projects::DownloadService
  File service
    for a URL that is not on allowlist
      is expected to eq nil
    for URLs that are on the allowlist
      an image file
        is expected to have key :alt
        is expected to have key :url
        is expected to match "rails_sample.jpg"
        is expected to eq "rails_sample"
# [RSpecRunTime] RSpec elapsed time: 21 minutes 36.98 seconds. Current RSS: ~1551M. load average: 1.00 1.08 1.08 1/293 19063


      a txt file
        is expected to have key :alt
        is expected to have key :url
        is expected to match "doc_sample.txt"
        is expected to eq "doc_sample.txt"
# [RSpecRunTime] RSpec elapsed time: 21 minutes 38.9 seconds. Current RSS: ~1542M. load average: 1.00 1.08 1.08 1/293 19064



# [RSpecRunTime] Finishing example group spec/services/projects/download_service_spec.rb. It took 4.37 seconds. Expected to take 7.97 seconds.
# [RSpecRunTime] Starting example group spec/models/integrations/campfire_spec.rb. Expected to take 7.92 seconds.

Integrations::Campfire
  does not allow STI
  behaves like Integrations::ResetSecretFields
    #exposing_secrets_fields
      returns an array of strings
    #reset_secret_fields?
      returns false if no exposing field has changed
      returns true if any exposing field has changed
    validation callback
      when an exposing field has changed
        clears all secret fields
        when a secret field has been updated
          does not clear this secret field
          when a secret field has been updated with the same value
            does not clear this secret field
      when no exposing field has changed
        does not clear any secret fields
  behaves like Integrations::HasAvatar
    #avatar_url
      returns the expected avatar URL
  Validations
    is expected to validate that :room looks like an integer greater than 0
    is expected to validate that the length of :subdomain is between 1 and 63
    is expected to allow :subdomain to be ‹"foo"›
    is expected not to allow :subdomain to be ‹"foo.bar"›
    is expected not to allow :subdomain to be ‹"foo.bar/#"›
    when integration is active
      is expected to validate that :token cannot be empty/falsy
    when integration is inactive
      is expected not to validate that :token cannot be empty/falsy
  #execute
    calls Campfire API to get a list of rooms and speak in a room
    calls Campfire API to get a list of rooms but shouldn't speak in a room
  #log_error
    logs an error

# [RSpecRunTime] Finishing example group spec/models/integrations/campfire_spec.rb. It took 2.3 seconds. Expected to take 7.92 seconds.
# [RSpecRunTime] Starting example group spec/graphql/resolvers/board_resolver_spec.rb. Expected to take 7.67 seconds.

Resolvers::BaseResolver.single
  #resolve
    when there is no parent
      returns nil if parent is nil
    when project boards
      behaves like group and project boards resolver
        does not create a default board
        calls Boards::BoardsFinder
        requires an ID
        when querying for a single board
          returns specified board
          returns nil if board not found
# [RSpecRunTime] RSpec elapsed time: 21 minutes 43.68 seconds. Current RSS: ~1537M. load average: 1.00 1.07 1.07 1/291 19065


    when group boards
      behaves like group and project boards resolver
        does not create a default board
        calls Boards::BoardsFinder
        requires an ID
        when querying for a single board
          returns specified board
          returns nil if board not found
# [RSpecRunTime] RSpec elapsed time: 21 minutes 44.83 seconds. Current RSS: ~1536M. load average: 1.00 1.07 1.07 1/290 19066



# [RSpecRunTime] Finishing example group spec/graphql/resolvers/board_resolver_spec.rb. It took 3.62 seconds. Expected to take 7.67 seconds.
# [RSpecRunTime] Starting example group spec/models/x509_certificate_spec.rb. Expected to take 7.67 seconds.

X509Certificate
  does not allow STI
  validation
    is expected to validate that :subject_key_identifier cannot be empty/falsy
    is expected to validate that :email cannot be empty/falsy
    is expected to validate that :serial_number cannot be empty/falsy
    is expected to validate that :x509_issuer_id cannot be empty/falsy
  associations
    is expected to belong to x509_issuer required: true
  .safe_create!
    creates a new certificate if it was not found
    assigns the correct attributes when creating
    calls mark_commit_signatures_unverified
    certificate revocation handling
      starts a revoke worker if certificate is revoked
      does not starts a revoke worker for good certificates
# [RSpecRunTime] RSpec elapsed time: 21 minutes 46.93 seconds. Current RSS: ~1558M. load average: 1.00 1.07 1.07 1/288 19067


  validators
    accepts correct subject_key_identifier
    rejects invalid subject_key_identifier
    accepts correct email address
    rejects invalid email
    accepts valid serial_number
    rejects invalid serial_number

# [RSpecRunTime] Finishing example group spec/models/x509_certificate_spec.rb. It took 2.78 seconds. Expected to take 7.67 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/pipeline/expression/parser_spec.rb. Expected to take 7.41 seconds.

Gitlab::Ci::Pipeline::Expression::Parser
  #tree
    validates simple operators
      expression: "$VAR1 == \"123\"", result_tree: "equals($VAR1, \"123\")"
        is expected to eq "equals($VAR1, \"123\")"
      expression: "$VAR1 == \"123\" == $VAR2", result_tree: "equals(equals($VAR1, \"123\"), $VAR2)"
        is expected to eq "equals(equals($VAR1, \"123\"), $VAR2)"
      expression: "$VAR", result_tree: "$VAR"
        is expected to eq "$VAR"
      expression: "\"some value\"", result_tree: "\"some value\""
        is expected to eq "\"some value\""
      expression: "null", result_tree: "null"
        is expected to eq "null"
      expression: "$VAR1 || $VAR2 && $VAR3", result_tree: "or($VAR1, and($VAR2, $VAR3))"
        is expected to eq "or($VAR1, and($VAR2, $VAR3))"
      expression: "$VAR1 && $VAR2 || $VAR3", result_tree: "or(and($VAR1, $VAR2), $VAR3)"
        is expected to eq "or(and($VAR1, $VAR2), $VAR3)"
      expression: "$VAR1 && $VAR2 || $VAR3 && $VAR4", result_tree: "or(and($VAR1, $VAR2), and($VAR3, $VAR4))"
        is expected to eq "or(and($VAR1, $VAR2), and($VAR3, $VAR4))"
      expression: "$VAR1 && ($VAR2 || $VAR3) && $VAR4", result_tree: "and(and($VAR1, or($VAR2, $VAR3)), $VAR4)"
        is expected to eq "and(and($VAR1, or($VAR2, $VAR3)), $VAR4)"
    when combining && and OR operators
      returns operations in a correct order
    when using parenthesis
      returns operations in a correct order
    when expression is empty
      raises a parsing error
    when two value tokens have no operator
      raises a parsing error
    when an operator has no left side
      raises an OperatorError
    when an operator has no right side
      raises an OperatorError
    when parenthesis are unmatched
      expression: "$VAR == ("
        raises a ParseError
      expression: "$VAR2 == (\"aa\""
        raises a ParseError
      expression: "$VAR2 == (\"aa\"))"
        raises a ParseError
      expression: "$VAR2 == \"aa\")"
        raises a ParseError
      expression: "(($VAR2 == \"aa\")"
        raises a ParseError
      expression: "($VAR2 == \"aa\"))"
        raises a ParseError

# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/pipeline/expression/parser_spec.rb. It took 2.21 seconds. Expected to take 7.41 seconds.
# [RSpecRunTime] Starting example group spec/models/concerns/use_sql_function_for_primary_key_lookups_spec.rb. Expected to take 7.4 seconds.

UseSqlFunctionForPrimaryKeyLookups
  does not allow STI
  when the use_sql_functions_for_primary_key_lookups FF is off
    loads the correct record
    uses the SQL-based finder query
  when the use_sql_functions_for_primary_key_lookups FF is on
    loads the correct record
    uses the fuction-based finder query
    uses query cache
    when the model has ignored columns
      enumerates the column names
    when there are scope attributes
      loads the correct record
      does not use the function-based finder query
    when there are multiple arguments
      loads the correct records
      does not use the function-based finder query
    when there is block given
      loads the correct records
      does not use the function-based finder query
    when there is no primary key defined
      raises ActiveRecord::UnknownPrimaryKey
    when id is provided as an array
      returns the correct record as an array
      does use the function-based finder query
      when array has multiple elements
        does not use the function-based finder query
    when the provided id is null
      raises ActiveRecord::RecordNotFound
    when the provided id is not a string that can cast to numeric
      raises ActiveRecord::RecordNotFound

# [RSpecRunTime] Finishing example group spec/models/concerns/use_sql_function_for_primary_key_lookups_spec.rb. It took 2.86 seconds. Expected to take 7.4 seconds.
# [RSpecRunTime] Starting example group spec/models/clusters/agents/authorizations/user_access/project_authorization_spec.rb. Expected to take 7.14 seconds.

Clusters::Agents::Authorizations::UserAccess::ProjectAuthorization
  is expected to validate jsonb schema "config"
  is expected to belong to agent class_name => Clusters::Agent required: true
  is expected to belong to project class_name => Project required: true
  does not allow STI
  .for_user
    user_role: :guest, expected_access_level: nil
      returns the expected result
# [RSpecRunTime] RSpec elapsed time: 21 minutes 54.0 seconds. Current RSS: ~1553M. load average: 1.00 1.07 1.07 1/288 19068


    user_role: :reporter, expected_access_level: nil
      returns the expected result
    user_role: :developer, expected_access_level: 30
      returns the expected result
    user_role: :maintainer, expected_access_level: 40
      returns the expected result
    user_role: :owner, expected_access_level: 50
      returns the expected result
  #config_project
    is expected to eq #<Project id:976 namespace959/project-1123>>

# [RSpecRunTime] Finishing example group spec/models/clusters/agents/authorizations/user_access/project_authorization_spec.rb. It took 3.16 seconds. Expected to take 7.14 seconds.
# [RSpecRunTime] Starting example group spec/tooling/graphql/docs/renderer_spec.rb. Expected to take 7.13 seconds.

Tooling::Graphql::Docs::Renderer
  #contents
    headings
      contains the expected sections
    when a field has a list type
      is expected to include "### `ArrayTest`\n\n#### Fields\n\n| Name | Type | Description |\n| ---- | ---- | ----------- |\n| <a id=\"arraytestfoo\"></a>`foo` | [`[String!]!`](#string) | A description. |\n"
      a top level query field
        generates the query with arguments
        when description does not end with `.`
          adds the `.` to the end
    when fields are not defined in alphabetical order
      lists the fields in alphabetical order
    when a field has a documentation reference
      behaves like renders correctly as GraphQL documentation
        contains the expected section
    when an argument is deprecated
      behaves like renders correctly as GraphQL documentation
        contains the expected section
    when a field is deprecated
      behaves like renders correctly as GraphQL documentation
        contains the expected section
    when a Query.field is deprecated
      behaves like renders correctly as GraphQL documentation
        contains the expected section
    when an argument is in alpha
      behaves like renders correctly as GraphQL documentation
        contains the expected section
    when a field is in alpha
      behaves like renders correctly as GraphQL documentation
        contains the expected section
    when a Query.field is in alpha
      behaves like renders correctly as GraphQL documentation
        contains the expected section
    when a field has an Enumeration type
      behaves like renders correctly as GraphQL documentation
        contains the expected section
    when a field has a global ID type
      section for IDTest
        behaves like renders correctly as GraphQL documentation
          contains the expected section
      section for UserID
        behaves like renders correctly as GraphQL documentation
          contains the expected section
    when there is a mutation
      does not render the automatically generated payload type
      does not render the automatically generated input type as its own section
      behaves like renders correctly as GraphQL documentation
        contains the expected section
    when there is an input type
      behaves like renders correctly as GraphQL documentation
        contains the expected section
    when there is an interface and a union
      lists the fields correctly, and includes descriptions of all the types

# [RSpecRunTime] Finishing example group spec/tooling/graphql/docs/renderer_spec.rb. It took 2.37 seconds. Expected to take 7.13 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/database/async_constraints/postgres_async_constraint_validation_spec.rb. Expected to take 6.96 seconds.

Gitlab::Database::AsyncConstraints::PostgresAsyncConstraintValidation
  is expected to be a kind of Gitlab::Database::SharedModel(abstract)
  does not allow STI
  .constraint_type_exists?
    is expected to be truthy
    always asks the database
  #handle_exception!
    increases the attempts number
    saves error details
  .table_available?
    is expected to be truthy
    when the table does not exist
      is expected to be falsy
  scopes
    .ordered
      is expected to eq [#<Gitlab::Database::AsyncConstraints::PostgresAsyncConstraintValidation id: 3, created_at: "2024-03-..."fk_users_id_2", table_name: "users", last_error: nil, attempts: 1, constraint_type: "foreign_key">]
    .foreign_key_type
      is expected to eq [#<Gitlab::Database::AsyncConstraints::PostgresAsyncConstraintValidation id: 4, created_at: "2024-03-..."fk_users_id_4", table_name: "users", last_error: nil, attempts: 1, constraint_type: "foreign_key">]
      does not apply the filter if the column is not present
    .check_constraint_type
      is expected to eq [#<Gitlab::Database::AsyncConstraints::PostgresAsyncConstraintValidation id: 9, created_at: "2024-03-...sers_id_9", table_name: "users", last_error: nil, attempts: 0, constraint_type: "check_constraint">]
  validations
    is expected to validate that :name cannot be empty/falsy
    is expected to validate that :name is case-sensitively unique within the scope of :table_name
    is expected to validate that the length of :name is at most 63
    is expected to validate that :table_name cannot be empty/falsy
    is expected to validate that the length of :table_name is at most 63
    is expected to validate that the length of :last_error is at most 10000

# [RSpecRunTime] Finishing example group spec/lib/gitlab/database/async_constraints/postgres_async_constraint_validation_spec.rb. It took 2.38 seconds. Expected to take 6.96 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/pipeline/expression/lexer_spec.rb. Expected to take 6.85 seconds.

Gitlab::Ci::Pipeline::Expression::Lexer
  #tokens
    returns single value
    does ignore whitespace characters
    returns multiple values of the same token
    returns multiple values with different tokens
    returns tokens and operators
    limits statement to specified amount of tokens
    raises syntax error in case of finding unknown tokens
    with complex expressions
      expression: "$PRESENT_VARIABLE =~ /my var/ && $EMPTY_VARIABLE =~ /nope/", tokens: ["$PRESENT_VARIABLE", "=~", "/my var/", "&&", "$EMPTY_VARIABLE", "=~", "/nope/"]
        is expected to eq ["$PRESENT_VARIABLE", "=~", "/my var/", "&&", "$EMPTY_VARIABLE", "=~", "/nope/"]
      expression: "$EMPTY_VARIABLE == \"\" && $PRESENT_VARIABLE", tokens: ["$EMPTY_VARIABLE", "==", "\"\"", "&&", "$PRESENT_VARIABLE"]
        is expected to eq ["$EMPTY_VARIABLE", "==", "\"\"", "&&", "$PRESENT_VARIABLE"]
      expression: "$EMPTY_VARIABLE == \"\" && $PRESENT_VARIABLE != \"nope\"", tokens: ["$EMPTY_VARIABLE", "==", "\"\"", "&&", "$PRESENT_VARIABLE", "!=", "\"nope\""]
        is expected to eq ["$EMPTY_VARIABLE", "==", "\"\"", "&&", "$PRESENT_VARIABLE", "!=", "\"nope\""]
      expression: "$PRESENT_VARIABLE && $EMPTY_VARIABLE", tokens: ["$PRESENT_VARIABLE", "&&", "$EMPTY_VARIABLE"]
        is expected to eq ["$PRESENT_VARIABLE", "&&", "$EMPTY_VARIABLE"]
      expression: "$PRESENT_VARIABLE =~ /my var/ || $EMPTY_VARIABLE =~ /nope/", tokens: ["$PRESENT_VARIABLE", "=~", "/my var/", "||", "$EMPTY_VARIABLE", "=~", "/nope/"]
        is expected to eq ["$PRESENT_VARIABLE", "=~", "/my var/", "||", "$EMPTY_VARIABLE", "=~", "/nope/"]
      expression: "$EMPTY_VARIABLE == \"\" || $PRESENT_VARIABLE", tokens: ["$EMPTY_VARIABLE", "==", "\"\"", "||", "$PRESENT_VARIABLE"]
        is expected to eq ["$EMPTY_VARIABLE", "==", "\"\"", "||", "$PRESENT_VARIABLE"]
      expression: "$EMPTY_VARIABLE == \"\" || $PRESENT_VARIABLE != \"nope\"", tokens: ["$EMPTY_VARIABLE", "==", "\"\"", "||", "$PRESENT_VARIABLE", "!=", "\"nope\""]
        is expected to eq ["$EMPTY_VARIABLE", "==", "\"\"", "||", "$PRESENT_VARIABLE", "!=", "\"nope\""]
      expression: "$PRESENT_VARIABLE || $EMPTY_VARIABLE", tokens: ["$PRESENT_VARIABLE", "||", "$EMPTY_VARIABLE"]
        is expected to eq ["$PRESENT_VARIABLE", "||", "$EMPTY_VARIABLE"]
      expression: "$PRESENT_VARIABLE && null || $EMPTY_VARIABLE == \"\"", tokens: ["$PRESENT_VARIABLE", "&&", "null", "||", "$EMPTY_VARIABLE", "==", "\"\""]
        is expected to eq ["$PRESENT_VARIABLE", "&&", "null", "||", "$EMPTY_VARIABLE", "==", "\"\""]
      with parentheses are used
        expression: "($PRESENT_VARIABLE =~ /my var/) && $EMPTY_VARIABLE =~ /nope/", tokens: ["(", "$PRESENT_VARIABLE", "=~", "/my var/", ")", "&&", "$EMPTY_VARIABLE", "=~", "/nope/"]
          is expected to eq ["(", "$PRESENT_VARIABLE", "=~", "/my var/", ")", "&&", "$EMPTY_VARIABLE", "=~", "/nope/"]
        expression: "$PRESENT_VARIABLE =~ /my var/ || ($EMPTY_VARIABLE =~ /nope/)", tokens: ["$PRESENT_VARIABLE", "=~", "/my var/", "||", "(", "$EMPTY_VARIABLE", "=~", "/nope/", ")"]
          is expected to eq ["$PRESENT_VARIABLE", "=~", "/my var/", "||", "(", "$EMPTY_VARIABLE", "=~", "/nope/", ")"]
        expression: "($PRESENT_VARIABLE && (null || $EMPTY_VARIABLE == \"\"))", tokens: ["(", "$PRESENT_VARIABLE", "&&", "(", "null", "||", "$EMPTY_VARIABLE", "==", "\"\"", ")", ")"]
          is expected to eq ["(", "$PRESENT_VARIABLE", "&&", "(", "null", "||", "$EMPTY_VARIABLE", "==", "\"\"", ")", ")"]
  #lexemes
    returns an array of syntax lexemes

# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/pipeline/expression/lexer_spec.rb. It took 2.05 seconds. Expected to take 6.85 seconds.
# [RSpecRunTime] Starting example group spec/services/users/assigned_issues_count_service_spec.rb. Expected to take 6.72 seconds.

Users::AssignedIssuesCountService
  when the number of assigned open issues exceeds max_limit
    when user is admin
      returns the max_limit count
# [RSpecRunTime] RSpec elapsed time: 22 minutes 4.15 seconds. Current RSS: ~1548M. load average: 1.00 1.07 1.07 1/288 19070


    when user is non-admin
      returns the max_limit count
  when user has assigned open issues from archived and closed projects
    count all assigned open issues excluding those from closed or archived projects
  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

# [RSpecRunTime] Finishing example group spec/services/users/assigned_issues_count_service_spec.rb. It took 3.98 seconds. Expected to take 6.72 seconds.
# [RSpecRunTime] Starting example group spec/views/layouts/terms.html.haml_spec.rb. Expected to take 6.66 seconds.

layouts/terms
  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
      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

# [RSpecRunTime] Finishing example group spec/views/layouts/terms.html.haml_spec.rb. It took 3.6 seconds. Expected to take 6.66 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/email/service_desk_email_spec.rb. Expected to take 6.48 seconds.

Gitlab::Email::ServiceDeskEmail
  behaves like common email methods
    behaves like enabled? method for email
      value: false, address: nil, result: false
        is expected to eq false
      value: false, address: "replies+%{key}@example.com", result: false
        is expected to eq false
      value: true, address: nil, result: false
        is expected to eq false
      value: true, address: "replies+%{key}@example.com", result: true
        is expected to eq true
    behaves like supports_wildcard? method for email
      when address contains the wildcard placeholder
        confirms that wildcard is supported
      when address doesn't contain the wildcard placeholder
        returns that wildcard is not supported
      when address is nil
        returns that wildcard is not supported
    behaves like key_from_fallback_message_id method for email
      returns reply key
    behaves like supports_issue_creation? method for email
      enabled_value: false, supports_wildcard_value: false, result: false
        is expected to eq false
      enabled_value: false, supports_wildcard_value: true, result: false
        is expected to eq false
      enabled_value: true, supports_wildcard_value: false, result: false
        is expected to eq false
      enabled_value: true, supports_wildcard_value: true, result: true
        is expected to eq true
    behaves like reply_address method for email
      returns the address with an interpolated reply key
    behaves like unsubscribe_address method for email
      returns the address with interpolated reply key and unsubscribe suffix
    behaves like scan_fallback_references method for email
      returns reply key
  .address_for_key
    when service desk address is set
      returns address
    when service desk address is not set
      returns nil
  .key_from_address
    when service desk address is set
      returns key
    when service desk address is not set
      returns nil

# [RSpecRunTime] Finishing example group spec/lib/gitlab/email/service_desk_email_spec.rb. It took 1.97 seconds. Expected to take 6.48 seconds.
# [RSpecRunTime] Starting example group spec/models/packages/sem_ver_spec.rb. Expected to take 6.42 seconds.

Packages::SemVer
  does not allow STI
  #parse
    behaves like #parse with a valid semver
      with 1.0.0
        returns v1.0.0 with prefix
        returns 1.0.0 without prefix
    behaves like #parse with a valid semver
      with 1.0.0-pre
        returns v1.0.0-pre with prefix
        returns 1.0.0-pre without prefix
    behaves like #parse with a valid semver
      with 1.0.0+build
        returns v1.0.0+build with prefix
        returns 1.0.0+build without prefix
    behaves like #parse with a valid semver
      with 1.0.0-pre+build
        returns v1.0.0-pre+build with prefix
        returns 1.0.0-pre+build without prefix
    behaves like #parse with an invalid semver
      with 01.0.0
        returns nil with prefix
        returns nil without prefix
    behaves like #parse with an invalid semver
      with 0.01.0
        returns nil with prefix
        returns nil without prefix
    behaves like #parse with an invalid semver
      with 0.0.01
        returns nil with prefix
        returns nil without prefix
    behaves like #parse with an invalid semver
      with 1.0.0asdf
        returns nil with prefix
        returns nil without prefix

# [RSpecRunTime] Finishing example group spec/models/packages/sem_ver_spec.rb. It took 1.77 seconds. Expected to take 6.42 seconds.
# [RSpecRunTime] Starting example group spec/models/ci/commit_with_pipeline_spec.rb. Expected to take 6.33 seconds.

Ci::CommitWithPipeline
  does not allow STI
  #last_pipeline
    returns last pipeline
  #lazy_latest_pipeline
    returns the correct pipelines with only 1 SQL query per project
  #latest_pipeline
    without ref argument
      behaves like fetching latest pipeline
        returns the latest pipeline for the project
        returns the memoized pipeline for the key of
    when a particular ref is specified
      behaves like fetching latest pipeline
        returns the latest pipeline for the project
        returns the memoized pipeline for the key of master
  #latest_pipeline_for_project
    returns the latest pipeline of the commit for the given ref and project
  #set_latest_pipeline_for_ref
    sets the latest pipeline for a given reference
  #status
    returns the status of the latest pipeline for the given ref
    returns nil when latest pipeline is not present for the given ref
    returns the status of the latest pipeline when no ref is given

# [RSpecRunTime] Finishing example group spec/models/ci/commit_with_pipeline_spec.rb. It took 2.4 seconds. Expected to take 6.33 seconds.
# [RSpecRunTime] Starting example group spec/workers/bulk_imports/pipeline_batch_worker_spec.rb. Expected to take 6.25 seconds.

BulkImports::PipelineBatchWorker
  performs multiple times sequentially without raising an exception
  is labeled as idempotent
  processes the batch once
  with stop signal from database health check
DEPRECATION WARNING: Invalid Feature Flag drop_sidekiq_jobs_BulkImports::PipelineBatchWorker stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:49)
    defers the job by set time
DEPRECATION WARNING: Invalid Feature Flag drop_sidekiq_jobs_BulkImports::PipelineBatchWorker stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:49)
    lazy evaluates schema and tables
    when `bulk_import_deferred_workers` feature flag is disabled
DEPRECATION WARNING: Invalid Feature Flag drop_sidekiq_jobs_BulkImports::PipelineBatchWorker stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:49)
      does not defer job execution
# [RSpecRunTime] RSpec elapsed time: 22 minutes 17.5 seconds. Current RSS: ~1550M. load average: 1.24 1.11 1.09 1/293 19109


  .sidekiq_retries_exhausted
    sets batch status to failed
  #perform
    runs the given pipeline batch successfully
    with tracker status
      when tracker is failed
        skips the batch
      when tracker is finished
        skips the batch
    with batch status
      when batch status is started
        finishes the batch
      when batch status is created
        finishes the batch
      when batch status is finished
        stays finished
    when exclusive lease cannot be obtained
      does not run the pipeline
    when pipeline raises an exception
      when pipeline is retryable
        retries the batch
      when pipeline raises an error
        keeps batch status as `started` and lets the error bubble up

# [RSpecRunTime] Finishing example group spec/workers/bulk_imports/pipeline_batch_worker_spec.rb. It took 2.71 seconds. Expected to take 6.25 seconds.
# [RSpecRunTime] Starting example group spec/finders/autocomplete/group_users_finder_spec.rb. Expected to take 6.12 seconds.

Autocomplete::GroupUsersFinder
  #execute
    with group members
      returns members of groups in the hierarchy
# [RSpecRunTime] RSpec elapsed time: 22 minutes 20.77 seconds. Current RSS: ~1539M. load average: 1.22 1.11 1.09 2/294 19110


    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: 22 minutes 22.49 seconds. Current RSS: ~1535M. load average: 1.22 1.11 1.09 1/293 19111



# [RSpecRunTime] Finishing example group spec/finders/autocomplete/group_users_finder_spec.rb. It took 3.42 seconds. Expected to take 6.12 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/cache/request_cache_spec.rb. Expected to take 6.06 seconds.

Gitlab::Cache::RequestCache
  when RequestStore is active
    computes once for different instances when keys are the same
    computes twice if RequestStore starts over
    behaves like cache for the same instance
      does not compute twice for the same argument
      computes twice for the different argument
      computes twice for the different class name
      computes twice for the different method
      when request_cache_key is provided
        computes twice for the different keys, id
        computes twice for the different keys, name
        uses extra method cache key if provided
# [RSpecRunTime] RSpec elapsed time: 22 minutes 23.66 seconds. Current RSS: ~1548M. load average: 1.22 1.11 1.09 1/293 19112


  when RequestStore is inactive
    computes twice for different instances even if keys are the same
    behaves like cache for the same instance
      does not compute twice for the same argument
      computes twice for the different argument
      computes twice for the different class name
      computes twice for the different method
      when request_cache_key is provided
        computes twice for the different keys, id
        computes twice for the different keys, name
        uses extra method cache key if provided

# [RSpecRunTime] Finishing example group spec/lib/gitlab/cache/request_cache_spec.rb. It took 1.98 seconds. Expected to take 6.06 seconds.
# [RSpecRunTime] Starting example group spec/models/milestone_note_spec.rb. Expected to take 5.91 seconds.

MilestoneNote
  does not allow STI
  .from_event
    behaves like a synthetic note
      behaves like a system note
        has the correct attributes
# [RSpecRunTime] RSpec elapsed time: 22 minutes 25.96 seconds. Current RSS: ~1556M. load average: 1.20 1.11 1.09 1/293 19119


      #discussion_id
        returns the expected discussion id
# [RSpecRunTime] RSpec elapsed time: 22 minutes 27.1 seconds. Current RSS: ~1554M. load average: 1.20 1.11 1.09 1/289 19126


    with a remove milestone event
      creates the expected note
# [RSpecRunTime] RSpec elapsed time: 22 minutes 28.35 seconds. Current RSS: ~1556M. load average: 1.20 1.11 1.09 1/288 19133



# [RSpecRunTime] Finishing example group spec/models/milestone_note_spec.rb. It took 3.87 seconds. Expected to take 5.91 seconds.
# [RSpecRunTime] Starting example group spec/finders/releases/evidence_pipeline_finder_spec.rb. Expected to take 5.85 seconds.

Releases::EvidencePipelineFinder#execute
  when the tag is passed
    returns the evidence pipeline
  when the ref is passed
    returns the evidence pipeline
  empty params
    returns nil
  params[:evidence_pipeline] is present
    returns the passed evidence pipeline

# [RSpecRunTime] Finishing example group spec/finders/releases/evidence_pipeline_finder_spec.rb. It took 3.39 seconds. Expected to take 5.85 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/github_import/importer/events/cross_referenced_spec.rb. Expected to take 5.79 seconds.

Gitlab::GithubImport::Importer::Events::CrossReferenced
  with Issue
    behaves like import cross-referenced event
      when referenced in other issue
        creates expected note
# [RSpecRunTime] RSpec elapsed time: 22 minutes 33.51 seconds. Current RSS: ~1553M. load average: 1.18 1.11 1.09 1/293 19199


      when referenced in pull request
        creates expected note
      when referenced in out of project issue/pull_request
        does not create expected note
  with MergeRequest
    behaves like import cross-referenced event
      when referenced in other issue
        creates expected note
      when referenced in pull request
        creates expected note
      when referenced in out of project issue/pull_request
        does not create expected note

# [RSpecRunTime] Finishing example group spec/lib/gitlab/github_import/importer/events/cross_referenced_spec.rb. It took 3.69 seconds. Expected to take 5.79 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/popen/runner_spec.rb. Expected to take 5.64 seconds.

Gitlab::Popen::Runner
  #run
    runs the command and returns the result
  #all_success_and_clean?
    returns true when exit status is 0 and stderr is empty
    returns false when exit status is not 0
    returns false when exit stderr has something
  #all_success?
    returns true when exit status is 0
    returns false when exit status is not 0
    returns true
  #all_stderr_empty?
    returns true when stderr is empty
    returns true when exit status is not 0
    returns false when exit stderr has something
  #failed_results
    returns [] when everything is passed
    returns the result when exit status is not 0
    returns [] when exit stderr has something
  #warned_results
    returns [] when everything is passed
    returns [] when exit status is not 0
    returns the result when exit stderr has something

# [RSpecRunTime] Finishing example group spec/lib/gitlab/popen/runner_spec.rb. It took 1.72 seconds. Expected to take 5.64 seconds.
# [RSpecRunTime] Starting example group spec/services/projects/import_export/parallel_export_service_spec.rb. Expected to take 5.57 seconds.

Projects::ImportExport::ParallelExportService
  #execute
    creates a project export archive file
    logs export progress
    executes after export stragegy on export success
    ensures files are cleaned up
    when export fails
      notifies the error to the user
# [RSpecRunTime] RSpec elapsed time: 22 minutes 39.57 seconds. Current RSS: ~1562M. load average: 1.17 1.11 1.09 1/293 19288


    when after export stragegy fails
      notifies the error to the user

# [RSpecRunTime] Finishing example group spec/services/projects/import_export/parallel_export_service_spec.rb. It took 2.86 seconds. Expected to take 5.57 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/config/entry/reports/coverage_report_spec.rb. Expected to take 5.46 seconds.

Gitlab::Ci::Config::Entry::Reports::CoverageReport
  validations
    when it is valid
      is expected to be valid
      is expected to eq {:coverage_format=>"cobertura", :path=>"cobertura-coverage.xml"}
    when it is not a hash
      config: "string"
        is expected not to be valid
        is expected to include /should be a hash/
      config: true
        is expected not to be valid
        is expected to include /should be a hash/
      config: []
        is expected not to be valid
        is expected to include /should be a hash/
    with unsupported coverage format
      is expected not to be valid
      is expected to include /format must be one of supported formats/
    without coverage format
      is expected not to be valid
      is expected to include /format can't be blank/
    without path
      is expected not to be valid
      is expected to include /path can't be blank/
    with invalid path
      is expected not to be valid
      is expected to include /path should be a string/
    with unknown keys
      is expected not to be valid
      is expected to include /contains unknown keys/

# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/config/entry/reports/coverage_report_spec.rb. It took 1.99 seconds. Expected to take 5.46 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/usage_data_counters/note_counter_spec.rb. Expected to take 5.38 seconds.

Gitlab::UsageDataCounters::NoteCounter
  behaves like a note usage counter
    .count(create)
      increments the Note create counter by 1
    .read(create)
      returns the total number of create events
  behaves like a note usage counter
    .count(create)
      increments the Note create counter by 1
    .read(create)
      returns the total number of create events
  behaves like a note usage counter
    .count(create)
      increments the Note create counter by 1
    .read(create)
      returns the total number of create events
  .totals
    can report all totals
  unknown events or noteable_type
    event: :create, noteable_type: "Snippet", expected_count: 1, should_raise: false
      handles event
    event: :wibble, noteable_type: "Snippet", expected_count: 0, should_raise: true
      handles event
    event: :create, noteable_type: "MergeRequest", expected_count: 1, should_raise: false
      handles event
    event: :wibble, noteable_type: "MergeRequest", expected_count: 0, should_raise: true
      handles event
    event: :create, noteable_type: "Commit", expected_count: 1, should_raise: false
      handles event
    event: :wibble, noteable_type: "Commit", expected_count: 0, should_raise: true
      handles event
    event: :create, noteable_type: "Issue", expected_count: 0, should_raise: false
      handles event
    event: :wibble, noteable_type: "Issue", expected_count: 0, should_raise: false
      handles event

# [RSpecRunTime] Finishing example group spec/lib/gitlab/usage_data_counters/note_counter_spec.rb. It took 1.57 seconds. Expected to take 5.38 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/auth/user_access_denied_reason_spec.rb. Expected to take 5.27 seconds.

Gitlab::Auth::UserAccessDeniedReason
  #rejection_message
    when a user is blocked
      is expected to match /blocked/
    a user did not accept the enforced terms
      is expected to match /must accept the Terms of Service/
      is expected to include "user570"
      is expected to include "http://localhost"
# [RSpecRunTime] RSpec elapsed time: 22 minutes 45.85 seconds. Current RSS: ~1577M. load average: 1.07 1.09 1.08 1/288 19289


    when the user is internal
      is expected to match /This action cannot be performed by internal users/
    when the user is deactivated
      is expected to eq "Your account has been deactivated by your administrator. Please log back in from a web browser to reactivate your account at http://localhost"
    when the user is unconfirmed
      is expected to match /Your primary email address is not confirmed/
    when the user is blocked pending approval
      is expected to eq "Your account is pending approval from your administrator and hence blocked."
    when the user has expired password
      is expected to eq "Your password expired. Please access GitLab from a web browser to update your password."

# [RSpecRunTime] Finishing example group spec/lib/gitlab/auth/user_access_denied_reason_spec.rb. It took 3.04 seconds. Expected to take 5.27 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/endpoint_attributes_spec.rb. Expected to take 5.16 seconds.

Gitlab::EndpointAttributes
  is nil when nothing was defined
  returns the expected category
  falls back to default when urgency was not defined
  returns the expected urgency
  returns feature category for an implied action if not specify actions
  returns expected duration for an implied action if not specify actions
  returns the expected category for categories defined in subclasses
  falls back to superclass's feature category
  returns the expected urgency for categories defined in subclasses
  falls back to superclass's expected duration
  raises an error when defining for the controller and for individual actions
  raises an error when multiple calls define the same action
  raises an error when multiple calls define the same action
  does not raise an error when multiple calls define the same action and configs
  raises an error if the expected duration is not supported

# [RSpecRunTime] Finishing example group spec/lib/gitlab/endpoint_attributes_spec.rb. It took 1.72 seconds. Expected to take 5.16 seconds.
# [RSpecRunTime] RSpec elapsed time: 22 minutes 48.45 seconds. Current RSS: ~1578M. load average: 1.07 1.09 1.08 1/288 19290


# [RSpecRunTime] Starting example group spec/lib/gitlab/reactive_cache_set_cache_spec.rb. Expected to take 5.12 seconds.

Gitlab::ReactiveCacheSetCache
  #cache_key
    includes the suffix
  #read
    is expected to be empty
    after item added
      is expected to contain exactly "test_item"
  #write
    writes the value to the cache
    sets the expiry of the set
  #clear_cache!
    deletes the cached items
    when key size is large
      sends multiple pipelines of 1000 unlinks
  #include?
    is expected to equal false
    item added
      is expected to equal true
  count
    is expected to equal 0
    item added
      is expected to equal 1

# [RSpecRunTime] Finishing example group spec/lib/gitlab/reactive_cache_set_cache_spec.rb. It took 1.99 seconds. Expected to take 5.12 seconds.
# [RSpecRunTime] Starting example group spec/policies/projects/branch_rule_policy_spec.rb. Expected to take 5.02 seconds.

Projects::BranchRulePolicy
  as a developer
    behaves like disallows branch rule crud
      is expected not to be allowed :read_branch_rule
      is expected not to be allowed :create_branch_rule
      is expected not to be allowed :update_branch_rule
      is expected not to be allowed :destroy_branch_rule
  as a guest
    behaves like disallows branch rule crud
      is expected not to be allowed :read_branch_rule
      is expected not to be allowed :create_branch_rule
      is expected not to be allowed :update_branch_rule
      is expected not to be allowed :destroy_branch_rule
  as a maintainer
    behaves like allows branch rule crud
      is expected to be allowed :read_branch_rule
      is expected to be allowed :create_branch_rule
      is expected to be allowed :update_branch_rule
      is expected to be allowed :destroy_branch_rule

# [RSpecRunTime] Finishing example group spec/policies/projects/branch_rule_policy_spec.rb. It took 1.87 seconds. Expected to take 5.02 seconds.
# [RSpecRunTime] Starting example group spec/lib/bitbucket/representation/pull_request_comment_spec.rb. Expected to take 4.93 seconds.

Bitbucket::Representation::PullRequestComment
  #iid
    is expected to eq 1
  #file_path
    is expected to eq "/path"
  #old_pos
    is expected to eq 3
  #new_pos
    is expected to eq 3
  #parent_id
    is expected to eq 2
    is expected to be nil
  #inline?
    is expected to be truthy
    is expected to be falsey
  #has_parent?
    is expected to be truthy
    is expected to be falsey
  #deleted?
    is expected to be truthy
    is expected to be falsey
    is expected to be falsey

# [RSpecRunTime] Finishing example group spec/lib/bitbucket/representation/pull_request_comment_spec.rb. It took 1.3 seconds. Expected to take 4.93 seconds.
# [RSpecRunTime] Starting example group spec/services/ci/create_pipeline_service/parameter_content_spec.rb. Expected to take 4.91 seconds.

Ci::CreatePipelineService
  #execute
    when source is a dangling build
      parameter config content
        creates a pipeline
        creates builds with the correct names
        creates stages with the correct names
        sets the correct config source
# [RSpecRunTime] RSpec elapsed time: 22 minutes 56.47 seconds. Current RSS: ~1554M. load average: 1.06 1.08 1.08 1/293 19327



# [RSpecRunTime] Finishing example group spec/services/ci/create_pipeline_service/parameter_content_spec.rb. It took 2.95 seconds. Expected to take 4.91 seconds.
# [RSpecRunTime] Starting example group spec/models/ci/build_trace_spec.rb. Expected to take 4.78 seconds.

Ci::BuildTrace
  does not allow STI
  returns formatted trace
  delegated methods
    is expected to delegate #state to the #trace object
    is expected to delegate #append to the #trace object
    is expected to delegate #truncated to the #trace object
    is expected to delegate #offset to the #trace object
    is expected to delegate #size to the #trace object
    is expected to delegate #total to the #trace object
    is expected to delegate #build_id to the #build object as #id
    is expected to delegate #build_status to the #build object as #status
    is expected to delegate #build_complete? to the #build object as #complete?
# [RSpecRunTime] RSpec elapsed time: 22 minutes 58.13 seconds. Current RSS: ~1555M. load average: 1.06 1.08 1.08 1/293 19328


  with invalid UTF-8 data
    returns valid UTF-8 data

# [RSpecRunTime] Finishing example group spec/models/ci/build_trace_spec.rb. It took 1.78 seconds. Expected to take 4.78 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/sanitizers/svg_spec.rb. Expected to take 4.77 seconds.

Gitlab::Sanitizers::SVG
  .clean
    delegates sanitization to scrubber
    returns sanitized data
  scrubber
    #scrub
      removes an invalid element
      removes an invalid attribute
      accepts valid element
      accepts valid namespaced attributes
    #attribute_name_with_namespace
      returns name with prefix when attribute is namespaced
    #unsafe_href?
      returns true if href attribute is an external url
      returns false if href atttribute is an internal reference
    #data_attribute?
      returns true if is a valid data attribute
      returns false if attribute is namespaced
      returns false if not a data attribute

# [RSpecRunTime] Finishing example group spec/lib/gitlab/sanitizers/svg_spec.rb. It took 1.38 seconds. Expected to take 4.77 seconds.
# [RSpecRunTime] Starting example group spec/models/concerns/access_requestable_spec.rb. Expected to take 4.64 seconds.

AccessRequestable
  does not allow STI
  Group
    #request_access
      is expected to be a kind of GroupMember(id: integer, access_level: integer, source_id: integer, source_type: string, user_id: int...ss: boolean, member_namespace_id: integer, member_role_id: integer, expiry_notified_at: timestamptz)
      is expected to eq #<User id:1438 @user578>
    #access_requested?
      is expected to be truthy
  Project
    #request_access
      is expected to be a kind of ProjectMember(id: integer, access_level: integer, source_id: integer, source_type: string, user_id: i...ss: boolean, member_namespace_id: integer, member_role_id: integer, expiry_notified_at: timestamptz)
    #access_requested?
      is expected to be truthy

# [RSpecRunTime] Finishing example group spec/models/concerns/access_requestable_spec.rb. It took 2.59 seconds. Expected to take 4.64 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/import_export/repo_saver_spec.rb. Expected to take 4.63 seconds.

Gitlab::ImportExport::RepoSaver
  bundle a project Git repo
    bundles the repo successfully
    creates the directory for the repository
    when the repo is empty
      bundles the repo successfully
# [RSpecRunTime] RSpec elapsed time: 23 minutes 4.53 seconds. Current RSS: ~1558M. load average: 1.05 1.08 1.08 1/293 19345



# [RSpecRunTime] Finishing example group spec/lib/gitlab/import_export/repo_saver_spec.rb. It took 2.3 seconds. Expected to take 4.63 seconds.
# [RSpecRunTime] Starting example group spec/services/packages/composer/composer_json_service_spec.rb. Expected to take 4.53 seconds.

Packages::Composer::ComposerJsonService
  #execute
    with an existing file
      with a valid file
        returns the parsed json
      with an invalid file
        raises an error
    without the composer.json file
      raises an error

# [RSpecRunTime] Finishing example group spec/services/packages/composer/composer_json_service_spec.rb. It took 2.13 seconds. Expected to take 4.53 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/reports/test_reports_comparer_spec.rb. Expected to take 4.48 seconds.

Gitlab::Ci::Reports::TestReportsComparer
  #suite_comparers
    when head and base reports include two test suites
      returns test suite comparers with specified values
  #total_status
    when all tests cases are success in head suites
      returns the total status
    when there is a failed test case in head suites
      returns the total status in head suite
    when there is an error test case in head suites
      returns the total status in head suite
  #total_count
    returns the total test counts in head suites
  #resolved_count
    when there is a resolved failure test case in head suites
      returns the correct count
    when there is a resolved error test case in head suites
      returns the correct count
    when there are no resolved test cases in head suites
      returns the correct count
  #failed_count
    when there is a failed test case in head suites
      returns the correct count
    when there are no failed test cases in head suites
      returns the correct count
  #error_count
    when there is an error test case in head suites
      returns the correct count
    when there are no error test cases in head suites
      returns the correct count

# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/reports/test_reports_comparer_spec.rb. It took 1.43 seconds. Expected to take 4.48 seconds.
# [RSpecRunTime] Starting example group spec/graphql/types/snippets/blob_viewer_type_spec.rb. Expected to take 4.37 seconds.

Types::Snippets::BlobViewerType
  has the correct fields
  is expected to be non null
  is expected to be non null
  is expected to be non null
  is expected to be non null
  is expected not to be non null
  is expected to be non null
  is expected to be non null
  collapsed
    behaves like nil field converted to false
      returns false
# [RSpecRunTime] RSpec elapsed time: 23 minutes 9.65 seconds. Current RSS: ~1579M. load average: 0.97 1.06 1.07 1/293 19415


  tooLarge
    behaves like nil field converted to false
      returns false

# [RSpecRunTime] Finishing example group spec/graphql/types/snippets/blob_viewer_type_spec.rb. It took 1.78 seconds. Expected to take 4.37 seconds.
# [RSpecRunTime] Starting example group spec/tasks/gitlab/sidekiq_rake_spec.rb. Expected to take 4.37 seconds.

sidekiq.rake
  gitlab:sidekiq:migrate_jobs:schedule rake task
    behaves like migration rake task
      runs the migrator with a mapping of workers to queues
  gitlab:sidekiq:migrate_jobs:retry rake task
    behaves like migration rake task
      runs the migrator with a mapping of workers to queues
  gitlab:sidekiq:migrate_jobs:queued rake task
    runs the migrator with a mapping of workers to queues

# [RSpecRunTime] Finishing example group spec/tasks/gitlab/sidekiq_rake_spec.rb. It took 3.11 seconds. Expected to take 4.37 seconds.
# [RSpecRunTime] RSpec elapsed time: 23 minutes 13.11 seconds. Current RSS: ~1549M. load average: 0.97 1.06 1.07 1/293 19423


# [RSpecRunTime] Starting example group spec/models/concerns/clusters/agents/authorizations/ci_access/config_scopes_spec.rb. Expected to take 4.28 seconds.

Clusters::Agents::Authorizations::CiAccess::ConfigScopes
  does not allow STI
  .with_available_ci_access_fields
    is expected to contain exactly #<Clusters::Agents::Authorizations::CiAccess::ProjectAuthorization id: 1, project_id: 1014, agent_id: 3, config: {"default_namespace"=>"production"}>, #<Clusters::Agents::Authorizations::CiAccess::ProjectAuthorization id: 2, project_id: 1014, agent_id: 4, config: {"access_as"=>{}}>, and #<Clusters::Agents::Authorizations::CiAccess::ProjectAuthorization id: 3, project_id: 1014, agent_id: 5, config: {"access_as"=>{"agent"=>{}}}>
# [RSpecRunTime] RSpec elapsed time: 23 minutes 16.75 seconds. Current RSS: ~1528M. load average: 0.97 1.06 1.07 1/294 19424



# [RSpecRunTime] Finishing example group spec/models/concerns/clusters/agents/authorizations/ci_access/config_scopes_spec.rb. It took 3.72 seconds. Expected to take 4.28 seconds.
# [RSpecRunTime] Starting example group spec/graphql/resolvers/merge_requests_count_resolver_spec.rb. Expected to take 4.23 seconds.

Resolvers::MergeRequestsCountResolver
  #resolve
    is expected to have nullable GraphQL type Int
    when user can only view an issue's closing merge requests that are public
      returns the count of the merge requests closing the issue
# [RSpecRunTime] RSpec elapsed time: 23 minutes 19.26 seconds. Current RSS: ~1524M. load average: 0.97 1.06 1.07 1/295 19510


    when user can view an issue's closing merge requests that are both public and private
      returns the count of the merge requests closing the issue

# [RSpecRunTime] Finishing example group spec/graphql/resolvers/merge_requests_count_resolver_spec.rb. It took 2.77 seconds. Expected to take 4.23 seconds.
# [RSpecRunTime] Starting example group spec/services/branches/validate_new_service_spec.rb. Expected to take 4.16 seconds.

Branches::ValidateNewService
  #execute
    validation
      returns error with an invalid branch name
      returns success with a valid branch name
# [RSpecRunTime] RSpec elapsed time: 23 minutes 21.23 seconds. Current RSS: ~1542M. load average: 0.98 1.06 1.07 1/295 19524


    branch exist
      returns error when branch exists
      returns success when branch name is available
# [RSpecRunTime] RSpec elapsed time: 23 minutes 22.58 seconds. Current RSS: ~1542M. load average: 0.98 1.06 1.07 1/294 19539



# [RSpecRunTime] Finishing example group spec/services/branches/validate_new_service_spec.rb. It took 3.06 seconds. Expected to take 4.16 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/database/schema_cache_with_renamed_table_spec.rb. Expected to take 4.13 seconds.

Gitlab::Database::SchemaCacheWithRenamedTable
  when table is not renamed yet
    uses the original table to look up metadata
  when table is renamed
    uses the renamed table to look up metadata
    has primary key
    has the same column definitions
    has the same indexes
    has the same column_hash
    when the table behind a model is actually a view
      can persist records
      can find records
# [RSpecRunTime] RSpec elapsed time: 23 minutes 25.12 seconds. Current RSS: ~1547M. load average: 0.98 1.06 1.07 1/294 19540



# [RSpecRunTime] Finishing example group spec/lib/gitlab/database/schema_cache_with_renamed_table_spec.rb. It took 2.54 seconds. Expected to take 4.13 seconds.
# [RSpecRunTime] Starting example group spec/lib/file_size_validator_spec.rb. Expected to take 4.06 seconds.

FileSizeValidator
  options uses an integer
    attachment exceeds maximum limit
    attachment under maximum limit
# [RSpecRunTime] RSpec elapsed time: 23 minutes 26.57 seconds. Current RSS: ~1539M. load average: 1.06 1.08 1.08 1/294 19541


  options uses a symbol
    attachment exceeds maximum limit
    attachment under maximum limit
# [RSpecRunTime] RSpec elapsed time: 23 minutes 27.78 seconds. Current RSS: ~1538M. load average: 1.06 1.08 1.08 1/294 19542



# [RSpecRunTime] Finishing example group spec/lib/file_size_validator_spec.rb. It took 2.66 seconds. Expected to take 4.06 seconds.
# [RSpecRunTime] Starting example group spec/services/update_container_registry_info_service_spec.rb. Expected to take 4.01 seconds.

UpdateContainerRegistryInfoService
  #execute
    when container registry is disabled
      behaves like invalid config
        does not update the application settings
        does not raise an error
    when container registry api_url is blank
      behaves like invalid config
        does not update the application settings
        does not raise an error
    when creating a registry client instance
      uses a token with no access permissions
    when unabled to detect the container registry type
      sets the application settings to their defaults
    when able to detect the container registry type
      when using the GitLab container registry
        updates application settings accordingly
      when using a third-party container registry
        updates application settings accordingly
# [RSpecRunTime] RSpec elapsed time: 23 minutes 31.46 seconds. Current RSS: ~1572M. load average: 1.05 1.07 1.08 1/289 19543



# [RSpecRunTime] Finishing example group spec/services/update_container_registry_info_service_spec.rb. It took 3.67 seconds. Expected to take 4.01 seconds.
# [RSpecRunTime] Starting example group spec/helpers/sessions_helper_spec.rb. Expected to take 3.97 seconds.

SessionsHelper
  #unconfirmed_email?
    returns true when the flash alert contains a devise failure unconfirmed message
    returns false when the flash alert does not contain a devise failure unconfirmed message
  #unconfirmed_verification_email?
    reset_first_offer?: true, unconfirmed_email_present?: true, token_valid?: true, result: true
      is expected to eq true
    reset_first_offer?: false, unconfirmed_email_present?: true, token_valid?: true, result: false
      is expected to eq false
    reset_first_offer?: true, unconfirmed_email_present?: false, token_valid?: true, result: false
      is expected to eq false
    reset_first_offer?: true, unconfirmed_email_present?: true, token_valid?: false, result: false
      is expected to eq false
  #verification_email
    when there is an unconfirmed verification email
      is expected to eq "unconfirmed@email"
    when there is no unconfirmed verification email
      is expected to eq "user1764@example.org"
  #verification_data
    returns the expected data
  #obfuscated_email
    delegates to Gitlab::Utils::Email.obfuscated_email
  #remember_me_enabled?
    when application setting is enabled
      is expected to equal true
    when application setting is disabled
      is expected to equal false

# [RSpecRunTime] Finishing example group spec/helpers/sessions_helper_spec.rb. It took 1.67 seconds. Expected to take 3.97 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/variables/builder/project_spec.rb. Expected to take 3.89 seconds.

Gitlab::Ci::Variables::Builder::Project
  #secret_variables
    when the ref is protected
      contains all the variables
    when the ref is not protected
      contains only the unprotected variables
    when environment name is specified
      when environment scope is exactly matched
        is expected to contain exactly #<Gitlab::Ci::Variables::Collection::Item:0x00007ce35592f058 @variable={:key=>"VARIABLE_1", :value=>"secret", :public=>false, :file=>false, :masked=>false, :raw=>false}>
      when environment scope is matched by wildcard
        is expected to contain exactly #<Gitlab::Ci::Variables::Collection::Item:0x00007ce354b30100 @variable={:key=>"VARIABLE_1", :value=>"secret", :public=>false, :file=>false, :masked=>false, :raw=>false}>
      when environment scope does not match
        is expected not to contain exactly #<Gitlab::Ci::Variables::Collection::Item:0x00007ce35408f4f8 @variable={:key=>"VARIABLE_1", :value=>"secret", :public=>false, :file=>false, :masked=>false, :raw=>false}>
      when environment scope has _
        does not treat it as wildcard
      when environment name contains underscore
        matches literally for _
      when environment scope has %
        does not treat it as wildcard
      when environment name contains a percent
        matches literally for _
    when variables with the same name have different environment scopes
      puts variables matching environment scope more in the end

# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/variables/builder/project_spec.rb. It took 1.78 seconds. Expected to take 3.89 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/tracking/service_ping_context_spec.rb. Expected to take 3.85 seconds.

Gitlab::Tracking::ServicePingContext
  #to_context
    for redis_hll data source
      contains event_name
    for redis data source
      contains event_name
  #init
    with valid configuration
      data_source: :redis, event: "some_event"
        does not raise errors
      data_source: :redis_hll, event: "some_event"
        does not raise errors
    with invalid configuration
      data_source: :redis, event: nil
        does not raise errors
      data_source: :redis_hll, event: nil
        does not raise errors
      data_source: :random, event: "some_event"
        does not raise errors

# [RSpecRunTime] Finishing example group spec/lib/gitlab/tracking/service_ping_context_spec.rb. It took 0.84 second. Expected to take 3.85 seconds.
# [RSpecRunTime] Starting example group spec/helpers/award_emoji_helper_spec.rb. Expected to take 3.81 seconds.

AwardEmojiHelper
  .toggle_award_url
    note on personal snippet
      returns correct url
    note on project item
      returns correct url
    personal snippet
      returns correct url
    merge request
      returns correct url
    issue
      returns correct url

# [RSpecRunTime] Finishing example group spec/helpers/award_emoji_helper_spec.rb. It took 2.8 seconds. Expected to take 3.81 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/database/load_balancing/service_discovery/sampler_spec.rb. Expected to take 3.76 seconds.

Gitlab::Database::LoadBalancing::ServiceDiscovery::Sampler
  #sample
    samples max_replica_pools addresses
    samples random ports across all hosts
    returns the same answer for the same input when called multiple times
    gives a consistent answer regardless of input ordering
    samples fairly across all hosts
    when input is an empty array
      returns an empty array
    when there are less replicas than max_replica_pools
      returns the same addresses
    when max_replica_pools is nil
      returns the same addresses

# [RSpecRunTime] Finishing example group spec/lib/gitlab/database/load_balancing/service_discovery/sampler_spec.rb. It took 1.0 second. Expected to take 3.76 seconds.
# [RSpecRunTime] Starting example group spec/models/work_items/widgets/assignees_spec.rb. Expected to take 3.72 seconds.

WorkItems::Widgets::Assignees
  does not allow STI
  .type
    is expected to eq :assignees
  .quick_action_params
    is expected to include :assignee_ids
  .can_invite_members?
    when resource_parent is a project
      checks the ability with the correct permission
    when resource_parent is a group
      checks the ability with the correct permission
  #type
    is expected to eq :assignees
  #assignees
    is expected to eq #<ActiveRecord::Associations::CollectionProxy [#<User id:1486 @user602>]>
  #allows_multiple_assignees?
    is expected to eq false

# [RSpecRunTime] Finishing example group spec/models/work_items/widgets/assignees_spec.rb. It took 1.35 seconds. Expected to take 3.72 seconds.
# [RSpecRunTime] Starting example group spec/lib/sidebars/admin/menus/applications_menu_spec.rb. Expected to take 3.68 seconds.

Sidebars::Admin::Menus::ApplicationsMenu
  behaves like Admin menu without sub menus
    does not contain any sub menu(s)
    defines correct active route
  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/applications_menu_spec.rb. It took 1.08 seconds. Expected to take 3.68 seconds.
# [RSpecRunTime] Starting example group spec/components/pajamas/card_component_spec.rb. Expected to take 3.59 seconds.

Pajamas::CardComponent
  slots
    renders card header
    renders card body
    renders footer
  with defaults
    does not have a header or footer
    renders the card and body
  with custom options
    renders card options
    renders header options
    renders body options
    renders footer options

# [RSpecRunTime] Finishing example group spec/components/pajamas/card_component_spec.rb. It took 1.0 second. Expected to take 3.59 seconds.
# [RSpecRunTime] Starting example group spec/channels/noteable/notes_channel_spec.rb. Expected to take 3.53 seconds.

Noteable::NotesChannel
  #subscribed
    rejects the subscription when noteable params are missing
    on an issue
      behaves like handle subscription based on user access
        subscribes to the noteable stream when user has access
        rejects the subscription when the user does not have access
# [RSpecRunTime] RSpec elapsed time: 23 minutes 44.62 seconds. Current RSS: ~1596M. load average: 1.05 1.07 1.07 1/294 19596


    on a merge request
      behaves like handle subscription based on user access
        subscribes to the noteable stream when user has access
        rejects the subscription when the user does not have access

# [RSpecRunTime] Finishing example group spec/channels/noteable/notes_channel_spec.rb. It took 2.25 seconds. Expected to take 3.53 seconds.
# [RSpecRunTime] Starting example group spec/services/packages/create_temporary_package_service_spec.rb. Expected to take 3.49 seconds.

Packages::CreateTemporaryPackageService
  #execute
    creates the package
    can create two packages in a row
    behaves like assigns the package creator
      assigns the package creator
    behaves like assigns build to package
      with build info
        assigns the pipeline to the package

# [RSpecRunTime] Finishing example group spec/services/packages/create_temporary_package_service_spec.rb. It took 1.54 seconds. Expected to take 3.49 seconds.
# [RSpecRunTime] Starting example group spec/models/packages/event_spec.rb. Expected to take 3.46 seconds.

Packages::Event
  does not allow STI
  .unique_counters_for
    is expected to contain exactly "i_package_npm_deploy_token"
    behaves like handle forbidden event type
      is expected to eq []
    when an originator type is quest
      is expected to eq []
  .event_allowed?
    is expected to eq true
    behaves like handle forbidden event type
      is expected to eq false
  .counters_for
    is expected to contain exactly "i_package_push_package", "i_package_push_package_by_deploy_token", and "i_package_npm_push_package"
    behaves like handle forbidden event type
      is expected to eq []

# [RSpecRunTime] Finishing example group spec/models/packages/event_spec.rb. It took 0.99 second. Expected to take 3.46 seconds.
# [RSpecRunTime] Starting example group spec/serializers/rollout_status_entity_spec.rb. Expected to take 3.41 seconds.

RolloutStatusEntity
  exposes status
  exposes has_legacy_app_label
  when kube deployment is valid
    exposes deployment data
    does not expose canary ingress if it does not exist
    when canary ingress exists
      expose canary ingress
  when kube deployment is empty
    exposes status
    does not expose deployment data

# [RSpecRunTime] Finishing example group spec/serializers/rollout_status_entity_spec.rb. It took 0.84 second. Expected to take 3.41 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/database/async_indexes/index_creator_spec.rb. Expected to take 3.37 seconds.

Gitlab::Database::AsyncIndexes::IndexCreator
  #perform
    creates the index while controlling statement timeout
    removes the index preparation record from postgres_async_indexes
    skips logic if not able to acquire exclusive lease
    logs messages around execution
    when the index already exists
      skips index creation
      removes the index preparation record from postgres_async_indexes
      logs an appropriate message
# [RSpecRunTime] RSpec elapsed time: 23 minutes 49.88 seconds. Current RSS: ~1597M. load average: 1.04 1.07 1.07 1/294 19631



# [RSpecRunTime] Finishing example group spec/lib/gitlab/database/async_indexes/index_creator_spec.rb. It took 1.29 seconds. Expected to take 3.37 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/issuable/clone/copy_resource_events_service_spec.rb. Expected to take 3.35 seconds.

Gitlab::Issuable::Clone::CopyResourceEventsService
  copies the resource label events
  with existing milestone events
    copies existing resource milestone events
# [RSpecRunTime] RSpec elapsed time: 23 minutes 52.21 seconds. Current RSS: ~1579M. load average: 1.04 1.07 1.07 1/294 19632


  with existing state events
    copies existing state events as expected

# [RSpecRunTime] Finishing example group spec/lib/gitlab/issuable/clone/copy_resource_events_service_spec.rb. It took 2.55 seconds. Expected to take 3.35 seconds.
# [RSpecRunTime] Starting example group spec/workers/packages/mark_package_files_for_destruction_worker_spec.rb. Expected to take 3.3 seconds.

Packages::MarkPackageFilesForDestructionWorker
  #perform
    with a valid package id
      marks all package files as pending_destruction
      behaves like an idempotent worker
        is labeled as idempotent
        performs multiple times sequentially without raising an exception
    with an invalid package id
      marks no packag files
      behaves like an idempotent worker
        is labeled as idempotent
        performs multiple times sequentially without raising an exception
    with a nil package id
      marks no packag files
      behaves like an idempotent worker
        is labeled as idempotent
        performs multiple times sequentially without raising an exception

# [RSpecRunTime] Finishing example group spec/workers/packages/mark_package_files_for_destruction_worker_spec.rb. It took 1.48 seconds. Expected to take 3.3 seconds.
# [RSpecRunTime] Starting example group spec/graphql/mutations/todos/restore_spec.rb. Expected to take 3.26 seconds.

Mutations::Todos::Restore
  is expected to require graphql authorizations :update_todo
  #resolve
    restores a single todo
    handles a todo which is already pending as expected
    ignores requests for todos which do not belong to the current user
# [RSpecRunTime] RSpec elapsed time: 23 minutes 56.22 seconds. Current RSS: ~1574M. load average: 1.03 1.07 1.07 1/289 19633



# [RSpecRunTime] Finishing example group spec/graphql/mutations/todos/restore_spec.rb. It took 2.3 seconds. Expected to take 3.26 seconds.
# [RSpecRunTime] Starting example group spec/policies/project_hook_policy_spec.rb. Expected to take 3.24 seconds.

ProjectHookPolicy
  when the user is not a maintainer
    cannot read and destroy web-hooks
  when the user is a maintainer
    can read and destroy web-hooks

# [RSpecRunTime] Finishing example group spec/policies/project_hook_policy_spec.rb. It took 1.55 seconds. Expected to take 3.24 seconds.
# [RSpecRunTime] Starting example group spec/services/alert_management/http_integrations/update_service_spec.rb. Expected to take 3.18 seconds.

AlertManagement::HttpIntegrations::UpdateService
  #execute
    when the current_user is anonymous
      behaves like error response
        has an informative message
    when current_user does not have permission to create integrations
      behaves like error response
        has an informative message
    when an error occurs during update
      behaves like error response
        has an informative message
    with name param
      successfully updates the integration
    with active param
      successfully updates the integration
    with regenerate_token flag
      successfully updates the integration

# [RSpecRunTime] Finishing example group spec/services/alert_management/http_integrations/update_service_spec.rb. It took 1.38 seconds. Expected to take 3.18 seconds.
# [RSpecRunTime] Starting example group spec/lib/bulk_imports/groups/pipelines/namespace_settings_pipeline_spec.rb. Expected to take 3.16 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.42 seconds. Expected to take 3.16 seconds.
# [RSpecRunTime] Starting example group spec/services/ci/create_pipeline_service/artifacts_spec.rb. Expected to take 3.1 seconds.

Ci::CreatePipelineService
  artifacts:
    reports:
      with valid config
        creates pipeline with builds
# [RSpecRunTime] RSpec elapsed time: 24 minutes 1.73 seconds. Current RSS: ~1552M. load average: 1.03 1.06 1.07 1/292 19650


      with invalid config
        creates pipeline with yaml errors

# [RSpecRunTime] Finishing example group spec/services/ci/create_pipeline_service/artifacts_spec.rb. It took 1.6 seconds. Expected to take 3.1 seconds.
# [RSpecRunTime] Starting example group spec/services/packages/update_tags_service_spec.rb. Expected to take 3.06 seconds.

Packages::UpdateTagsService
  #execute
    behaves like updating tags
      updates a tag
    with an existing tag
      on the same package
        behaves like updating tags
          updates a tag
        with different name
          behaves like updating tags
            updates a tag
      on a different package
        behaves like updating tags
          updates a tag
    with empty tags
      is a no op

# [RSpecRunTime] Finishing example group spec/services/packages/update_tags_service_spec.rb. It took 1.46 seconds. Expected to take 3.06 seconds.
# [RSpecRunTime] Starting example group spec/workers/ci/archive_trace_worker_spec.rb. Expected to take 3.02 seconds.

Ci::ArchiveTraceWorker
  #perform
    when job is found
      executes service
      has preloaded the arguments for archiving
# [RSpecRunTime] RSpec elapsed time: 24 minutes 5.09 seconds. Current RSS: ~1542M. load average: 1.03 1.06 1.07 1/294 19657


    when job is not found
      does not execute service

# [RSpecRunTime] Finishing example group spec/workers/ci/archive_trace_worker_spec.rb. It took 1.57 seconds. Expected to take 3.02 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/seeders/ci/runner/runner_fleet_pipeline_seeder_spec.rb. Expected to take 2.97 seconds.

Gitlab::Seeders::Ci::Runner::RunnerFleetPipelineSeeder
  #seed
    with nil job_count
      creates expected jobs
# [RSpecRunTime] RSpec elapsed time: 24 minutes 7.1 seconds. Current RSS: ~1526M. load average: 1.03 1.06 1.07 1/294 19658



# [RSpecRunTime] Finishing example group spec/lib/gitlab/seeders/ci/runner/runner_fleet_pipeline_seeder_spec.rb. It took 1.9 seconds. Expected to take 2.97 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/gitaly_client/cleanup_service_spec.rb. Expected to take 2.94 seconds.

Gitlab::GitalyClient::CleanupService
  #apply_bfg_object_map_stream
    sends an apply_bfg_object_map_stream message
  #rewrite_history
    sends a rewrite_history message
    with a generic BadStatus error
      raises the BadStatus error
    with an empty request
      raises an InvalidArgument error

# [RSpecRunTime] Finishing example group spec/lib/gitlab/gitaly_client/cleanup_service_spec.rb. It took 1.99 seconds. Expected to take 2.94 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/import_export/group/object_builder_spec.rb. Expected to take 2.91 seconds.

Gitlab::ImportExport::Group::ObjectBuilder
  labels
    finds the existing group label
    creates a new label
    when description is an empty string
      finds the existing group label
  milestones
    finds the existing group milestone
    creates a new milestone

# [RSpecRunTime] Finishing example group spec/lib/gitlab/import_export/group/object_builder_spec.rb. It took 1.26 seconds. Expected to take 2.91 seconds.
# [RSpecRunTime] Starting example group spec/lib/bitbucket/representation/comment_spec.rb. Expected to take 2.85 seconds.

Bitbucket::Representation::Comment
  #author
    is expected to eq "Ben"
    is expected to be nil
  #note
    is expected to eq "Text"
    is expected to be nil
  #created_at
    is expected to eq Fri, 08 Mar 2024
  #updated_at
    is expected to eq Fri, 08 Mar 2024
    is expected to eq Fri, 08 Mar 2024

# [RSpecRunTime] Finishing example group spec/lib/bitbucket/representation/comment_spec.rb. It took 0.94 second. Expected to take 2.85 seconds.
# [RSpecRunTime] Starting example group spec/finders/ci/runner_managers_finder_spec.rb. Expected to take 2.83 seconds.

Ci::RunnerManagersFinder#execute
  filter by status
    for offline
      is expected to contain exactly #<Ci::RunnerManager id: 8, runner_id: 27, executor_type: nil, created_at: "2024-03-08 06:33:03.000000...ion: nil, platform: nil, architecture: nil, ip_address: nil, config: {}, system_xid: "r_495711da47">
    for online
      is expected to contain exactly #<Ci::RunnerManager id: 9, runner_id: 27, executor_type: nil, created_at: "2024-03-08 06:33:03.000000...ion: nil, platform: nil, architecture: nil, ip_address: nil, config: {}, system_xid: "r_b4ca42d88e">
    for stale
      is expected to contain exactly #<Ci::RunnerManager id: 11, runner_id: 27, executor_type: nil, created_at: "2024-03-01 06:33:02.00000...ion: nil, platform: nil, architecture: nil, ip_address: nil, config: {}, system_xid: "r_39edcf88e1">
    for never_contacted
      is expected to contain exactly #<Ci::RunnerManager id: 10, runner_id: 27, executor_type: nil, created_at: "2024-03-08 06:33:03.00000...ion: nil, platform: nil, architecture: nil, ip_address: nil, config: {}, system_xid: "r_86d23bb50f"> and #<Ci::RunnerManager id: 11, runner_id: 27, executor_type: nil, created_at: "2024-03-01 06:33:02.00000...ion: nil, platform: nil, architecture: nil, ip_address: nil, config: {}, system_xid: "r_39edcf88e1">
    for invalid status
      returns all runner managers
  filter by system_id
    when system_id matches runner_manager1's
      is expected to contain exactly #<Ci::RunnerManager id: 12, runner_id: 27, executor_type: nil, created_at: "2024-03-08 06:33:03.68904...ion: nil, platform: nil, architecture: nil, ip_address: nil, config: {}, system_xid: "r_da26d7ff06">
    when system_id matches runner_manager2's
      is expected to contain exactly #<Ci::RunnerManager id: 13, runner_id: 27, executor_type: nil, created_at: "2024-03-08 06:33:03.69376...ion: nil, platform: nil, architecture: nil, ip_address: nil, config: {}, system_xid: "r_9f49ed64b1">
    when system_id doesn't match
      is expected to be empty
  without any arguments
    returns all runner managers in id_desc order

# [RSpecRunTime] Finishing example group spec/finders/ci/runner_managers_finder_spec.rb. It took 1.19 seconds. Expected to take 2.83 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/usage/metrics/instrumentations/project_imports_creators_metric_spec.rb. Expected to take 2.8 seconds.

Gitlab::Usage::Metrics::Instrumentations::ProjectImportsCreatorsMetric
  behaves like a correct instrumented metric value and query
    behaves like a correct instrumented metric value
      has correct value
# [RSpecRunTime] RSpec elapsed time: 24 minutes 14.0 seconds. Current RSS: ~1532M. load average: 1.03 1.06 1.07 1/289 19659


    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/project_imports_creators_metric_spec.rb. It took 1.89 seconds. Expected to take 2.8 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/plantuml_spec.rb. Expected to take 2.76 seconds.

Gitlab::Plantuml
  .configure
    when PlantUML is enabled
      configures the endpoint URL
      enables PNG support
      disables SVG support
      disables TXT support
    when PlantUML is disabled
      configures the endpoint URL
      enables PNG support
      disables SVG support
      disables TXT support

# [RSpecRunTime] Finishing example group spec/lib/gitlab/plantuml_spec.rb. It took 1.09 seconds. Expected to take 2.76 seconds.
# [RSpecRunTime] Starting example group spec/models/projects/wiki_repository_spec.rb. Expected to take 2.71 seconds.

Projects::WikiRepository
  does not allow STI
  associations
    is expected to belong to project required: false inverse_of => wiki_repository
  validations
    is expected to validate that :project cannot be empty/falsy
    is expected to validate that :project is case-sensitively unique

# [RSpecRunTime] Finishing example group spec/models/projects/wiki_repository_spec.rb. It took 0.85 second. Expected to take 2.71 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/slash_commands/presenters/issue_close_spec.rb. Expected to take 2.69 seconds.

Gitlab::SlashCommands::Presenters::IssueClose
  is expected to be a kind of Hash
  shows the issue
  confidential issue
    shows an ephemeral response
# [RSpecRunTime] RSpec elapsed time: 24 minutes 18.11 seconds. Current RSS: ~1535M. load average: 1.02 1.06 1.07 1/289 19660



# [RSpecRunTime] Finishing example group spec/lib/gitlab/slash_commands/presenters/issue_close_spec.rb. It took 1.8 seconds. Expected to take 2.69 seconds.
# [RSpecRunTime] Starting example group spec/workers/pipeline_hooks_worker_spec.rb. Expected to take 2.66 seconds.

PipelineHooksWorker
  #perform
    when pipeline exists
      executes hooks for the pipeline
    when pipeline does not exist
      does not raise exception
    when the user is blocked
      returns early without executing
  behaves like worker with data consistency
    .get_data_consistency_feature_flag_enabled?
      returns true
    .get_data_consistency
      returns correct data consistency

# [RSpecRunTime] Finishing example group spec/workers/pipeline_hooks_worker_spec.rb. It took 1.58 seconds. Expected to take 2.66 seconds.
# [RSpecRunTime] Starting example group spec/services/packages/remove_tag_service_spec.rb. Expected to take 2.61 seconds.

Packages::RemoveTagService
  #execute
    with existing tag
      is expected to change `Packages::Tag.count` by -1
    with nil
      is expected to raise ArgumentError
# [RSpecRunTime] RSpec elapsed time: 24 minutes 22.21 seconds. Current RSS: ~1518M. load average: 1.02 1.06 1.07 1/289 19661



# [RSpecRunTime] Finishing example group spec/services/packages/remove_tag_service_spec.rb. It took 2.53 seconds. Expected to take 2.61 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/legacy_github_import/release_formatter_spec.rb. Expected to take 2.58 seconds.

Gitlab::LegacyGithubImport::ReleaseFormatter
  #attributes
    returns formatted attributes
    with a nil published_at date
      inserts a timestamp for released_at
  #valid
    when release is not a draft
      returns true
    when release is draft
      returns false
    when release has NULL tag
      returns false

# [RSpecRunTime] Finishing example group spec/lib/gitlab/legacy_github_import/release_formatter_spec.rb. It took 0.96 second. Expected to take 2.58 seconds.
# [RSpecRunTime] Starting example group spec/services/ci/build_unschedule_service_spec.rb. Expected to take 2.55 seconds.

Ci::BuildUnscheduleService
  #execute
    when user is authorized to unschedule the build
      when build is scheduled
        transits build to manual
      when build is not scheduled
        responds with unprocessable entity
    when user is not authorized to unschedule the build
      responds with forbidden

# [RSpecRunTime] Finishing example group spec/services/ci/build_unschedule_service_spec.rb. It took 1.34 seconds. Expected to take 2.55 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/database/type/color_spec.rb. Expected to take 2.52 seconds.

Gitlab::Database::Type::Color
  serializes by calling #to_s
  serializes nil to nil
  casts by calling Color::new
  accepts colors as arguments to cast
  allows nil database values
  tells us what is serializable
  tells us what is not serializable

# [RSpecRunTime] Finishing example group spec/lib/gitlab/database/type/color_spec.rb. It took 0.93 second. Expected to take 2.52 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/github_import/importer/events/reopened_spec.rb. Expected to take 2.49 seconds.

Gitlab::GithubImport::Importer::Events::Reopened
  with Issue
    behaves like new event
      creates expected event and state event
  with MergeRequest
    behaves like new event
      creates expected event and state event

# [RSpecRunTime] Finishing example group spec/lib/gitlab/github_import/importer/events/reopened_spec.rb. It took 1.27 seconds. Expected to take 2.49 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/import_export/wiki_repo_saver_spec.rb. Expected to take 2.47 seconds.

Gitlab::ImportExport::WikiRepoSaver
  bundle a wiki Git repo
    bundles the repo successfully
    when the repo is empty
      bundles the repo successfully
# [RSpecRunTime] RSpec elapsed time: 24 minutes 28.35 seconds. Current RSS: ~1533M. load average: 1.02 1.06 1.07 1/295 19752



# [RSpecRunTime] Finishing example group spec/lib/gitlab/import_export/wiki_repo_saver_spec.rb. It took 1.63 seconds. Expected to take 2.47 seconds.
# [RSpecRunTime] Starting example group spec/services/incident_management/issuable_escalation_statuses/after_update_service_spec.rb. Expected to take 2.42 seconds.

IncidentManagement::IssuableEscalationStatuses::AfterUpdateService
  with status attributes
    adds a status change system note
    adds a status change timeline event
# [RSpecRunTime] RSpec elapsed time: 24 minutes 29.66 seconds. Current RSS: ~1529M. load average: 1.02 1.06 1.07 1/294 19753


  with non-status attributes
    does not add a status change system note or timeline event

# [RSpecRunTime] Finishing example group spec/services/incident_management/issuable_escalation_statuses/after_update_service_spec.rb. It took 1.61 seconds. Expected to take 2.42 seconds.
# [RSpecRunTime] Starting example group spec/models/user_mentions/commit_user_mention_spec.rb. Expected to take 2.4 seconds.

CommitUserMention
  does not allow STI
  associations
    is expected to belong to note required: false
  behaves like has user mentions
    #has_mentions?
      when no mentions
        returns false
      when mentioned_users_ids not null
        returns true
      when mentioned projects
        returns true
      when mentioned groups
        returns true

# [RSpecRunTime] Finishing example group spec/models/user_mentions/commit_user_mention_spec.rb. It took 0.89 second. Expected to take 2.4 seconds.
# [RSpecRunTime] Starting example group spec/serializers/ci/daily_build_group_report_result_entity_spec.rb. Expected to take 2.35 seconds.

Ci::DailyBuildGroupReportResultEntity
  #as_json
    is expected to include :date
    is expected not to include :group_name
    is expected to include :coverage
    when given param_type is not allowed
      is expected not to include :coverage
      is expected not to include :something_else

# [RSpecRunTime] Finishing example group spec/serializers/ci/daily_build_group_report_result_entity_spec.rb. It took 0.72 second. Expected to take 2.35 seconds.
# [RSpecRunTime] Starting example group spec/graphql/resolvers/ci/test_suite_resolver_spec.rb. Expected to take 2.31 seconds.

Resolvers::Ci::TestSuiteResolver
  #resolve
    when pipeline has builds with test reports
      renders test suite data
# [RSpecRunTime] RSpec elapsed time: 24 minutes 33.02 seconds. Current RSS: ~1553M. load average: 1.18 1.09 1.08 1/296 19772


    when pipeline has no builds that matches the given build_ids
      returns nil

# [RSpecRunTime] Finishing example group spec/graphql/resolvers/ci/test_suite_resolver_spec.rb. It took 1.83 seconds. Expected to take 2.31 seconds.
# [RSpecRunTime] Starting example group spec/rubocop/cop/migration/migration_record_spec.rb. Expected to take 2.27 seconds.

RuboCop::Cop::Migration::MigrationRecord
  outside of a migration
    behaves like a disabled cop
      does not register any offenses
  in migration
    in an old migration
      behaves like a disabled cop
        does not register any offenses
    that is recent
      adds an offense if inheriting from ActiveRecord::Base
      adds an offense if inheriting from ::ActiveRecord::Base
  in migration
    in an old migration
      behaves like a disabled cop
        does not register any offenses
    that is recent
      adds an offense if inheriting from ApplicationRecord
      adds an offense if inheriting from ::ApplicationRecord
  outside of a migration
    behaves like a disabled cop
      does not register any offenses

# [RSpecRunTime] Finishing example group spec/rubocop/cop/migration/migration_record_spec.rb. It took 1.1 seconds. Expected to take 2.27 seconds.
# [RSpecRunTime] Starting example group spec/services/admin/abuse_report_labels/create_service_spec.rb. Expected to take 2.26 seconds.

Admin::AbuseReportLabels::CreateService
  #execute
    behaves like creates a label with the correct values
      creates a label with the correct values
      returns the persisted label
    without color param
      behaves like creates a label with the correct values
        creates a label with the correct values
        returns the persisted label
    with errors
      does not create the label
      returns the label with errors

# [RSpecRunTime] Finishing example group spec/services/admin/abuse_report_labels/create_service_spec.rb. It took 0.9 second. Expected to take 2.26 seconds.
# [RSpecRunTime] Starting example group spec/services/ci/build_cancel_service_spec.rb. Expected to take 2.21 seconds.

Ci::BuildCancelService
  #execute
    when user is authorized to cancel the build
      when build is cancelable
        transits build to canceled
      when build is not cancelable
        responds with unprocessable entity
    when user is not authorized to cancel the build
      responds with forbidden

# [RSpecRunTime] Finishing example group spec/services/ci/build_cancel_service_spec.rb. It took 1.34 seconds. Expected to take 2.21 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/reports/security/locations/secret_detection_spec.rb. Expected to take 2.19 seconds.

Gitlab::Ci::Reports::Security::Locations::SecretDetection
  behaves like vulnerability location
    #initialize
      when all params are given
        initializes an instance
      param: :file_path
        when param file_path is missing
          raises an error
      param: :start_line
        when param start_line is missing
          raises an error
    #fingerprint
      generates expected fingerprint
    #fingerprint_path
      generates expected fingerprint
    #==
      returns true when fingerprints are equal
      returns false when fingerprints are different

# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/reports/security/locations/secret_detection_spec.rb. It took 0.89 second. Expected to take 2.19 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/sidekiq_middleware/concurrency_limit/workers_map_spec.rb. Expected to take 2.15 seconds.

Gitlab::SidekiqMiddleware::ConcurrencyLimit::WorkersMap
  .workers
    includes the worker
  .over_the_limit?
    returns false if no limit is set
    returns false if under the limit
    returns true if over the limit
  .limit_for
    accepts worker instance
    accepts worker class
    returns nil for unknown worker
    returns nil if the feature flag is disabled

# [RSpecRunTime] Finishing example group spec/lib/gitlab/sidekiq_middleware/concurrency_limit/workers_map_spec.rb. It took 1.04 seconds. Expected to take 2.15 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/pagination/keyset/in_operator_optimization/array_scope_columns_spec.rb. Expected to take 2.12 seconds.

Gitlab::Pagination::Keyset::InOperatorOptimization::ArrayScopeColumns
  builds array column names
  when no columns are given
    is expected to raise /No array columns were given/
  when Arel AS node is given as input
    works with Arel AS nodes

# [RSpecRunTime] Finishing example group spec/lib/gitlab/pagination/keyset/in_operator_optimization/array_scope_columns_spec.rb. It took 0.46 second. Expected to take 2.12 seconds.
# [RSpecRunTime] Starting example group spec/services/packages/npm/deprecate_package_service_spec.rb. Expected to take 2.11 seconds.

Packages::Npm::DeprecatePackageService
  #execute
    when passing deprecatation message
      adds or updates the deprecated field
      executes 5 queries
    when passing deprecated as empty string
      removes the deprecation warning
    when passing async: true to execute
      calls the worker and return

# [RSpecRunTime] Finishing example group spec/services/packages/npm/deprecate_package_service_spec.rb. It took 1.05 seconds. Expected to take 2.11 seconds.
# [RSpecRunTime] Starting example group spec/graphql/types/color_type_spec.rb. Expected to take 2.06 seconds.

Types::ColorType
  is expected to eq "Color"
  coerces Color object into hex string
  coerces an hex string into Color object
  coerces an named Color into hex string
  coerces an named color into Color object
  rejects invalid input
  rejects nil

# [RSpecRunTime] Finishing example group spec/graphql/types/color_type_spec.rb. It took 0.91 second. Expected to take 2.06 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/config/entry/release/assets_spec.rb. Expected to take 2.05 seconds.

Gitlab::Ci::Config::Entry::Release::Assets
  validation
    when entry config value is correct
      #value
        returns assets configuration
      #valid?
        is valid
    when entry value is not correct
      #errors
        when value of assets is invalid
          reports error
        when value of assets:links is empty
          reports error
        when there is an unknown key present
          reports error

# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/config/entry/release/assets_spec.rb. It took 0.69 second. Expected to take 2.05 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/github_gists_import/status_spec.rb. Expected to take 1.99 seconds.

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

# [RSpecRunTime] Finishing example group spec/lib/gitlab/github_gists_import/status_spec.rb. It took 0.58 second. Expected to take 1.99 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/circuit_breaker/notifier_spec.rb. Expected to take 1.99 seconds.

Gitlab::CircuitBreaker::Notifier
  #notify_run
test block
    is expected not to raise Exception
  #notify
    when event is failure
      sends an exception to Gitlab::ErrorTracking
    when event is not failure
      does not send an exception to Gitlab::ErrorTracking
  #notify_warning
    is expected not to raise Exception

# [RSpecRunTime] Finishing example group spec/lib/gitlab/circuit_breaker/notifier_spec.rb. It took 0.51 second. Expected to take 1.99 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/github_import/clients/proxy_spec.rb. Expected to take 1.93 seconds.

Gitlab::GithubImport::Clients::Proxy
  is expected to delegate #octokit to the #client object
  is expected to delegate #each_object to the #client object
  is expected to delegate #user to the #client object
  #repos
    fetches repos with Gitlab::GithubImport::Client (GraphQL API)
  #count_by
    when value is cached
      returns repository count from cache
    when value is not cached
      returns repository count

# [RSpecRunTime] Finishing example group spec/lib/gitlab/github_import/clients/proxy_spec.rb. It took 0.69 second. Expected to take 1.93 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/status/waiting_for_callback_spec.rb. Expected to take 1.91 seconds.

Gitlab::Ci::Status::WaitingForCallback
  #name
    is expected to eq "WAITING_FOR_CALLBACK"
  #favicon
    is expected to eq "favicon_status_pending"
  #group
    is expected to eq "waiting-for-callback"
  #label
    is expected to eq "waiting for callback"
  #text
    is expected to eq "Waiting"
  #details_path
    is expected to be nil
  #icon
    is expected to eq "status_pending"

# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/status/waiting_for_callback_spec.rb. It took 0.8 second. Expected to take 1.91 seconds.
# [RSpecRunTime] Starting example group spec/lib/constraints/admin_constrainer_spec.rb. Expected to take 1.91 seconds.

Constraints::AdminConstrainer
  #matches
    application setting :admin_mode is enabled
      when user is a regular user
        forbids access
      when user is an admin
        admin mode is disabled
          forbids access
        admin mode is enabled
          allows access
    application setting :admin_mode is disabled
      when user is a regular user
        forbids access
      when user is an admin
        allows access

# [RSpecRunTime] Finishing example group spec/lib/constraints/admin_constrainer_spec.rb. It took 0.87 second. Expected to take 1.91 seconds.
# [RSpecRunTime] Starting example group spec/models/notes/note_metadata_spec.rb. Expected to take 1.86 seconds.

Notes::NoteMetadata
  does not allow STI
  callbacks
    with before_save :ensure_email_participant_length
      when email length is > 255
        rewrites the email within max length
      when email is within permissible length
        saves the email as-is
  associations
    is expected to belong to note required: false

# [RSpecRunTime] Finishing example group spec/models/notes/note_metadata_spec.rb. It took 0.83 second. Expected to take 1.86 seconds.
# [RSpecRunTime] Starting example group spec/workers/pages_domain_verification_worker_spec.rb. Expected to take 1.85 seconds.

PagesDomainVerificationWorker
  #perform
    does nothing if the database is read-only
    does nothing for a non-existent domain
    delegates to VerifyPagesDomainService

# [RSpecRunTime] Finishing example group spec/workers/pages_domain_verification_worker_spec.rb. It took 0.57 second. Expected to take 1.85 seconds.
# [RSpecRunTime] Starting example group spec/graphql/types/timeframe_type_spec.rb. Expected to take 1.81 seconds.

Types::TimeframeInputType
  coerces ISO-dates into Time objects
  rejects invalid input
  accepts times as input
  requires both ends of the range
  rejects invalid range

# [RSpecRunTime] Finishing example group spec/graphql/types/timeframe_type_spec.rb. It took 0.62 second. Expected to take 1.81 seconds.
# [RSpecRunTime] Starting example group spec/services/ci/queue/pending_builds_strategy_spec.rb. Expected to take 1.79 seconds.

Ci::Queue::PendingBuildsStrategy
  build_and_partition_ids
    returns build id with partition id
  builds_for_group_runner
    returns builds ordered by build ID

# [RSpecRunTime] Finishing example group spec/services/ci/queue/pending_builds_strategy_spec.rb. It took 1.03 seconds. Expected to take 1.79 seconds.
# [RSpecRunTime] Starting example group spec/services/projects/batch_open_issues_count_service_spec.rb. Expected to take 1.75 seconds.

Projects::BatchOpenIssuesCountService
  #refresh_cache_and_retrieve_data
    when cache is clean
      refreshes cache keys correctly
# [RSpecRunTime] RSpec elapsed time: 24 minutes 49.48 seconds. Current RSS: ~1541M. load average: 1.14 1.08 1.08 1/289 19773



# [RSpecRunTime] Finishing example group spec/services/projects/batch_open_issues_count_service_spec.rb. It took 1.2 seconds. Expected to take 1.75 seconds.
# [RSpecRunTime] Starting example group spec/views/notify/push_to_merge_request_email.text.haml_spec.rb. Expected to take 1.73 seconds.

notify/push_to_merge_request_email.text.haml
  behaves like renders plain text email correctly
    renders the email without HTML links
# [RSpecRunTime] RSpec elapsed time: 24 minutes 50.87 seconds. Current RSS: ~1544M. load average: 1.37 1.13 1.10 1/295 19817



# [RSpecRunTime] Finishing example group spec/views/notify/push_to_merge_request_email.text.haml_spec.rb. It took 1.39 seconds. Expected to take 1.73 seconds.
# [RSpecRunTime] Starting example group spec/graphql/mutations/users/saved_replies/create_spec.rb. Expected to take 1.69 seconds.

Mutations::Users::SavedReplies::Create
  #resolve
    when service fails to create a new saved reply
      is expected to be nil
      is expected to contain exactly "Content can't be blank" and "Name can't be blank"
    when service successfully creates a new saved reply
      is expected to eq "save_reply_name"
      is expected to eq "Save Reply Content"
      is expected to be empty

# [RSpecRunTime] Finishing example group spec/graphql/mutations/users/saved_replies/create_spec.rb. It took 0.81 second. Expected to take 1.69 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/kubernetes/config_map_spec.rb. Expected to take 1.66 seconds.

Gitlab::Kubernetes::ConfigMap
  #generate
    builds a Kubeclient Resource
  #config_map_name
    returns the config_map name

# [RSpecRunTime] Finishing example group spec/lib/gitlab/kubernetes/config_map_spec.rb. It took 0.43 second. Expected to take 1.66 seconds.
# [RSpecRunTime] Starting example group spec/rubocop/cop/gitlab/avoid_feature_get_spec.rb. Expected to take 1.64 seconds.

RuboCop::Cop::Gitlab::AvoidFeatureGet
  bans use of Feature.ban
  ignores unrelated code

# [RSpecRunTime] Finishing example group spec/rubocop/cop/gitlab/avoid_feature_get_spec.rb. It took 0.38 second. Expected to take 1.64 seconds.
# [RSpecRunTime] Starting example group spec/views/admin/projects/_form.html.haml_spec.rb. Expected to take 1.61 seconds.

admin/projects/_form
  project runner registration setting
    runner_registration_enabled: true, valid_runner_registrars: ["project"], checked: true, disabled: false
      renders the checkbox correctly
    runner_registration_enabled: false, valid_runner_registrars: ["project"], checked: false, disabled: false
      renders the checkbox correctly
    runner_registration_enabled: false, valid_runner_registrars: ["group"], checked: false, disabled: true
      renders the checkbox correctly

# [RSpecRunTime] Finishing example group spec/views/admin/projects/_form.html.haml_spec.rb. It took 0.58 second. Expected to take 1.61 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/checks/force_push_spec.rb. Expected to take 1.57 seconds.

Gitlab::Checks::ForcePush
  .force_push?
    when the repo is empty
      returns false
    when new rev is a descendant of old rev
      returns false
    when new rev is not a descendant of old rev
      returns true

# [RSpecRunTime] Finishing example group spec/lib/gitlab/checks/force_push_spec.rb. It took 0.87 second. Expected to take 1.57 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/kubernetes/ingress_spec.rb. Expected to take 1.54 seconds.

Gitlab::Kubernetes::Ingress
  #canary?
    with canary ingress parameters
      is expected to be truthy
    with stable ingress parameters
      is expected to be falsey
  #canary_weight
    with canary ingress parameters
      is expected to eq 50
# [RSpecRunTime] RSpec elapsed time: 24 minutes 55.67 seconds. Current RSS: ~1557M. load average: 1.34 1.13 1.09 1/294 19827


    with stable ingress parameters
      is expected to be nil
  #name
    is expected to eq "production-auto-deploy"

# [RSpecRunTime] Finishing example group spec/lib/gitlab/kubernetes/ingress_spec.rb. It took 1.92 seconds. Expected to take 1.54 seconds.
# [RSpecRunTime] Starting example group spec/workers/jira_connect/sync_feature_flags_worker_spec.rb. Expected to take 1.52 seconds.

JiraConnect::SyncFeatureFlagsWorker
  behaves like worker with data consistency
    .get_data_consistency_feature_flag_enabled?
      returns true
    .get_data_consistency
      returns correct data consistency
  #perform
    when object exists
      calls the Jira sync service
    when object does not exist
      does not call the sync service

# [RSpecRunTime] Finishing example group spec/workers/jira_connect/sync_feature_flags_worker_spec.rb. It took 0.84 second. Expected to take 1.52 seconds.
# [RSpecRunTime] Starting example group spec/routing/user_routing_spec.rb. Expected to take 1.48 seconds.

user routing
  when GitHub OAuth on project import is cancelled
    behaves like redirecting a legacy path
      redirects /users/auth?error=access_denied&state=xyz to /users/sign_in
# [RSpecRunTime] RSpec elapsed time: 24 minutes 57.97 seconds. Current RSS: ~1569M. load average: 1.34 1.13 1.09 1/295 19829


  when GitHub OAuth on sign in is cancelled
    when all required parameters are present
      behaves like redirecting a legacy path
        redirects /users/auth?error=access_denied&state=xyz to /projects/new#import_project
    when one of the required parameters is missing
      behaves like redirecting a legacy path
        redirects /users/auth?error=access_denied&state= to /auth

# [RSpecRunTime] Finishing example group spec/routing/user_routing_spec.rb. It took 1.57 seconds. Expected to take 1.48 seconds.
# [RSpecRunTime] Starting example group spec/lib/slack/block_kit/app_home_opened_spec.rb. Expected to take 1.47 seconds.

Slack::BlockKit::AppHomeOpened
  #build
    generates blocks of type "home"
    prompts the user to connect their GitLab account
    when the user has linked their GitLab account
      displays the GitLab user they are linked to

# [RSpecRunTime] Finishing example group spec/lib/slack/block_kit/app_home_opened_spec.rb. It took 0.77 second. Expected to take 1.47 seconds.
# [RSpecRunTime] Starting example group spec/rubocop/cop/migration/background_migration_missing_active_concern_spec.rb. Expected to take 1.43 seconds.

RuboCop::Cop::Migration::BackgroundMigrationMissingActiveConcern
  in non-ee background migration
    behaves like offense is not registered
      does not register any offenses
  in ee background migration
    when scope_to is not used inside prepended block
      does not register any offenses
    when scope_to is used inside prepended block
      does not register any offenses if the module does extend ActiveSupport::Concern
      registers an offense if the module does not extend ActiveSupport::Concern
  when outside of a migration
    behaves like offense is not registered
      does not register any offenses

# [RSpecRunTime] Finishing example group spec/rubocop/cop/migration/background_migration_missing_active_concern_spec.rb. It took 0.68 second. Expected to take 1.43 seconds.
# [RSpecRunTime] Starting example group spec/validators/js_regex_validator_spec.rb. Expected to take 1.42 seconds.

JsRegexValidator
  #validates_each
    user_default_internal_regex: nil, result: []
      generates correct errors
    user_default_internal_regex: "", result: []
      generates correct errors
    user_default_internal_regex: "(?#comment)", result: ["Regex Pattern (?#comment) can not be expressed in Javascript"]
      generates correct errors
    user_default_internal_regex: "(?(a)b|c)", result: ["invalid conditional pattern: /(?(a)b|c)/i"]
      generates correct errors

# [RSpecRunTime] Finishing example group spec/validators/js_regex_validator_spec.rb. It took 0.55 second. Expected to take 1.42 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/word_diff/positions_counter_spec.rb. Expected to take 1.38 seconds.

Gitlab::WordDiff::PositionsCounter
  Initial state
    starts with predefined values
  #increase_pos_num
    increases old and new positions
  #increase_obj_index
    increases object index
  #set_pos_num
    sets old and new positions

# [RSpecRunTime] Finishing example group spec/lib/gitlab/word_diff/positions_counter_spec.rb. It took 0.61 second. Expected to take 1.38 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/usage/metrics/instrumentations/count_project_snippets_metric_spec.rb. Expected to take 1.35 seconds.

Gitlab::Usage::Metrics::Instrumentations::CountProjectSnippetsMetric
  with a timeframe of all
    behaves like a correct instrumented metric value
      has correct value
  with a time_frame of 28 days
    behaves like a correct instrumented metric value
      has correct value

# [RSpecRunTime] Finishing example group spec/lib/gitlab/usage/metrics/instrumentations/count_project_snippets_metric_spec.rb. It took 0.89 second. Expected to take 1.35 seconds.
# [RSpecRunTime] Starting example group spec/views/shared/milestones/_top.html.haml_spec.rb. Expected to take 1.32 seconds.

shared/milestones/_top.html.haml
  does not render a deprecation message for a non-legacy and non-dashboard milestone

# [RSpecRunTime] Finishing example group spec/views/shared/milestones/_top.html.haml_spec.rb. It took 0.87 second. Expected to take 1.32 seconds.
# [RSpecRunTime] Starting example group spec/presenters/dev_ops_report/metric_presenter_spec.rb. Expected to take 1.29 seconds.

DevOpsReport::MetricPresenter
  #cards
    includes instance score, leader score and percentage score
  #idea_to_production_steps
    returns percentage score when it depends on a single feature
    returns percentage score when it depends on two features
  #average_percentage_score
    calculates an average value across all the features

# [RSpecRunTime] Finishing example group spec/presenters/dev_ops_report/metric_presenter_spec.rb. It took 0.56 second. Expected to take 1.29 seconds.
# [RSpecRunTime] Starting example group spec/services/export_csv/map_export_fields_service_spec.rb. Expected to take 1.25 seconds.

ExportCsv::MapExportFieldsService
  #execute
    returns a hash with selected fields only
    when the fields collection is empty
      returns a hash with all fields
    when fields collection includes invalid fields
      returns a hash with valid selected fields only
  #invalid_fields
    returns an array containing invalid fields

# [RSpecRunTime] Finishing example group spec/services/export_csv/map_export_fields_service_spec.rb. It took 0.53 second. Expected to take 1.25 seconds.
# [RSpecRunTime] Starting example group spec/lib/banzai/pipeline/post_process_pipeline_spec.rb. Expected to take 1.24 seconds.

Banzai::Pipeline::PostProcessPipeline
  when a document only has upload links
    does not make any Gitaly calls
  when both upload and repository links are present
    searches for attributes only once

# [RSpecRunTime] Finishing example group spec/lib/banzai/pipeline/post_process_pipeline_spec.rb. It took 0.81 second. Expected to take 1.24 seconds.
# [RSpecRunTime] Starting example group spec/views/devise/shared/_signup_omniauth_provider_list_spec.rb. Expected to take 1.21 seconds.

devise/shared/_signup_omniauth_provider_list
  is expected to have text "Register with:"
  renders button in form
  behaves like sso buttons have snowplow tracking
    contains tracking attributes

# [RSpecRunTime] Finishing example group spec/views/devise/shared/_signup_omniauth_provider_list_spec.rb. It took 0.69 second. Expected to take 1.21 seconds.
# [RSpecRunTime] Starting example group spec/graphql/types/incident_management/timeline_event_tag_type_spec.rb. Expected to take 1.19 seconds.

Types::IncidentManagement::TimelineEventTagType
  is expected to require graphql authorizations :read_incident_management_timeline_event_tag
  is expected to eq "TimelineEventTagType"
  exposes the expected fields

# [RSpecRunTime] Finishing example group spec/graphql/types/incident_management/timeline_event_tag_type_spec.rb. It took 0.44 second. Expected to take 1.19 seconds.
# [RSpecRunTime] Starting example group spec/workers/todos_destroyer/entity_leave_worker_spec.rb. Expected to take 1.16 seconds.

TodosDestroyer::EntityLeaveWorker
  calls the Todos::Destroy::EntityLeaveService with the params it was given

# [RSpecRunTime] Finishing example group spec/workers/todos_destroyer/entity_leave_worker_spec.rb. It took 0.25 second. Expected to take 1.16 seconds.
# [RSpecRunTime] Starting example group spec/lib/google_api/auth_spec.rb. Expected to take 1.14 seconds.

GoogleApi::Auth
  #authorize_url
    returns authorize_url
  #get_token
    returns token and expires_at
    expects the client to receive default options

# [RSpecRunTime] Finishing example group spec/lib/google_api/auth_spec.rb. It took 0.44 second. Expected to take 1.14 seconds.
# [RSpecRunTime] Starting example group spec/graphql/types/container_respository_tags_sort_enum_spec.rb. Expected to take 1.12 seconds.

Types::ContainerRepositoryTagsSortEnum
  is expected to eq "ContainerRepositoryTagSort"
  exposes all the existing issue sort values

# [RSpecRunTime] Finishing example group spec/graphql/types/container_respository_tags_sort_enum_spec.rb. It took 0.34 second. Expected to take 1.12 seconds.
# [RSpecRunTime] Starting example group spec/graphql/types/merge_requests/mergeability_check_type_spec.rb. Expected to take 1.08 seconds.

Types::MergeRequests::MergeabilityCheckType
  is expected to eq "MergeRequestMergeabilityCheck"
  is expected to have graphql fields :identifier and :status

# [RSpecRunTime] Finishing example group spec/graphql/types/merge_requests/mergeability_check_type_spec.rb. It took 0.34 second. Expected to take 1.08 seconds.
# [RSpecRunTime] Starting example group spec/models/concerns/cross_database_modification_spec.rb. Expected to take 1.06 seconds.

CrossDatabaseModification
  does not allow STI
  .transaction
    adds the current gitlab schema to gitlab_transactions_stack
    yields

# [RSpecRunTime] Finishing example group spec/models/concerns/cross_database_modification_spec.rb. It took 0.45 second. Expected to take 1.06 seconds.
# [RSpecRunTime] Starting example group spec/models/group/crm_settings_spec.rb. Expected to take 1.02 seconds.

Group::CrmSettings
  does not allow STI
  associations
    is expected to belong to group required: false
  validations
    is expected to validate that :group cannot be empty/falsy

# [RSpecRunTime] Finishing example group spec/models/group/crm_settings_spec.rb. It took 0.45 second. Expected to take 1.02 seconds.
# [RSpecRunTime] Starting example group spec/helpers/environment_helper_spec.rb. Expected to take 1.02 seconds.

EnvironmentHelper
  #environments_detail_data_json
    returns the correct data

# [RSpecRunTime] Finishing example group spec/helpers/environment_helper_spec.rb. It took 0.76 second. Expected to take 1.02 seconds.
# [RSpecRunTime] Starting example group spec/lib/bitbucket_server/retry_with_delay_spec.rb. Expected to take 0.98 second.

BitbucketServer::RetryWithDelay
  .retry_with_delay
    when the function succeeds on the first try
      calls the function once and returns its result
    when the request has a status code of 429
      calls the function again after a delay

# [RSpecRunTime] Finishing example group spec/lib/bitbucket_server/retry_with_delay_spec.rb. It took 0.35 second. Expected to take 0.98 second.
# [RSpecRunTime] Starting example group spec/graphql/resolvers/alert_management/alert_status_counts_resolver_spec.rb. Expected to take 0.96 second.

Resolvers::AlertManagement::AlertStatusCountsResolver
  #resolve
    is expected to be a kind of Gitlab::AlertManagement::AlertStatusCounts
    is expected to eq #<Project id:1105 namespace1101/project-1269>>

# [RSpecRunTime] Finishing example group spec/graphql/resolvers/alert_management/alert_status_counts_resolver_spec.rb. It took 0.6 second. Expected to take 0.96 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/tracking/helpers/weak_password_error_event_spec.rb. Expected to take 0.93 second.

Gitlab::Tracking::Helpers::WeakPasswordErrorEvent
  when user does not have a weak password error
    does not track the event
  when user does not have any errors
    does not track the event
  when user has a weak password error
    tracks the event

# [RSpecRunTime] Finishing example group spec/lib/gitlab/tracking/helpers/weak_password_error_event_spec.rb. It took 0.47 second. Expected to take 0.93 second.
# [RSpecRunTime] Starting example group spec/graphql/types/kas/agent_metadata_type_spec.rb. Expected to take 0.92 second.

Types::Kas::AgentMetadataType
  is expected to eq "AgentMetadata"
  is expected to eq "Information about a connected Agent"
  is expected to have graphql fields :version, :commit, :pod_namespace, and :pod_name

# [RSpecRunTime] Finishing example group spec/graphql/types/kas/agent_metadata_type_spec.rb. It took 0.45 second. Expected to take 0.92 second.
# [RSpecRunTime] Starting example group spec/graphql/types/ci/test_report_summary_type_spec.rb. Expected to take 0.89 second.

Types::Ci::TestReportSummaryType
  is expected to eq "TestReportSummary"
  contains attributes related to a pipeline test report summary

# [RSpecRunTime] Finishing example group spec/graphql/types/ci/test_report_summary_type_spec.rb. It took 0.35 second. Expected to take 0.89 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/github_import/importer/issue_and_label_links_importer_spec.rb. Expected to take 0.87 second.

Gitlab::GithubImport::Importer::IssueAndLabelLinksImporter
  #execute
    imports an issue and its labels

# [RSpecRunTime] Finishing example group spec/lib/gitlab/github_import/importer/issue_and_label_links_importer_spec.rb. It took 0.26 second. Expected to take 0.87 second.
# [RSpecRunTime] Starting example group spec/graphql/types/label_type_spec.rb. Expected to take 0.83 second.

Types::LabelType
  has the correct fields
  is expected to require graphql authorizations :read_label

# [RSpecRunTime] Finishing example group spec/graphql/types/label_type_spec.rb. It took 0.34 second. Expected to take 0.83 second.
# [RSpecRunTime] Starting example group spec/serializers/serverless/domain_entity_spec.rb. Expected to take 0.8 second.

Serverless::DomainEntity
  #as_json
    has an id
    has a domain

# [RSpecRunTime] Finishing example group spec/serializers/serverless/domain_entity_spec.rb. It took 0.37 second. Expected to take 0.8 second.
# [RSpecRunTime] Starting example group spec/workers/concerns/cluster_agent_queue_spec.rb. Expected to take 0.78 second.

ClusterAgentQueue
  is expected to eq :deployment_management

# [RSpecRunTime] Finishing example group spec/workers/concerns/cluster_agent_queue_spec.rb. It took 0.26 second. Expected to take 0.78 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/sidekiq_middleware/pause_control/client_spec.rb. Expected to take 0.75 second.

Gitlab::SidekiqMiddleware::PauseControl::Client
  #call
    when strategy is enabled
      does not schedule the job
    when strategy is disabled
      schedules the job

# [RSpecRunTime] Finishing example group spec/lib/gitlab/sidekiq_middleware/pause_control/client_spec.rb. It took 0.36 second. Expected to take 0.75 second.
# [RSpecRunTime] Starting example group spec/rubocop/qa_helpers_spec.rb. Expected to take 0.74 second.

RuboCop::QAHelpers
  #in_qa_file?
    returns true for a node in the qa/ directory
    returns false for a node outside the qa/ directory

# [RSpecRunTime] Finishing example group spec/rubocop/qa_helpers_spec.rb. It took 0.34 second. Expected to take 0.74 second.
# [RSpecRunTime] Starting example group spec/policies/concerns/archived_abilities_spec.rb. Expected to take 0.71 second.

ArchivedAbilities
  .archived_abilities
    returns an array of abilities to be prevented when archived
  .archived_features
    returns an array of features to be prevented when archived

# [RSpecRunTime] Finishing example group spec/policies/concerns/archived_abilities_spec.rb. It took 0.37 second. Expected to take 0.71 second.
# [RSpecRunTime] Starting example group spec/graphql/types/security/codequality_reports_comparer/report_type_spec.rb. Expected to take 0.71 second.

Types::Security::CodequalityReportsComparer::ReportType
  has expected fields
  is expected to eq "CodequalityReportsComparerReport"

# [RSpecRunTime] Finishing example group spec/graphql/types/security/codequality_reports_comparer/report_type_spec.rb. It took 0.34 second. Expected to take 0.71 second.
# [RSpecRunTime] Starting example group spec/lib/mattermost/command_spec.rb. Expected to take 0.69 second.

Mattermost::Command
  #create
    for valid trigger word
      returns a token
    for error message
      raises an error with message

# [RSpecRunTime] Finishing example group spec/lib/mattermost/command_spec.rb. It took 0.35 second. Expected to take 0.69 second.
# [RSpecRunTime] Starting example group spec/graphql/types/ci/catalog/resource_sort_enum_spec.rb. Expected to take 0.68 second.

Types::Ci::Catalog::ResourceSortEnum
  exposes all the existing catalog resource sort orders
  is expected to eq "CiCatalogResourceSort"

# [RSpecRunTime] Finishing example group spec/graphql/types/ci/catalog/resource_sort_enum_spec.rb. It took 0.34 second. Expected to take 0.68 second.
# [RSpecRunTime] Starting example group spec/graphql/types/permission_types/container_repository_spec.rb. Expected to take 0.66 second.

Types::PermissionTypes::ContainerRepository
  has the expected fields

# [RSpecRunTime] Finishing example group spec/graphql/types/permission_types/container_repository_spec.rb. It took 0.27 second. Expected to take 0.66 second.
# [RSpecRunTime] Starting example group spec/graphql/types/packages/composer/metadatum_type_spec.rb. Expected to take 0.65 second.

Types::Packages::Composer::MetadatumType
  includes composer metadatum fields

# [RSpecRunTime] Finishing example group spec/graphql/types/packages/composer/metadatum_type_spec.rb. It took 0.26 second. Expected to take 0.65 second.
# [RSpecRunTime] Starting example group spec/lib/bulk_imports/groups/extractors/subgroups_extractor_spec.rb. Expected to take 0.64 second.

BulkImports::Groups::Extractors::SubgroupsExtractor
  #extract
    returns ExtractedData response

# [RSpecRunTime] Finishing example group spec/lib/bulk_imports/groups/extractors/subgroups_extractor_spec.rb. It took 0.41 second. Expected to take 0.64 second.
# [RSpecRunTime] Starting example group spec/helpers/deploy_tokens_helper_spec.rb. Expected to take 0.59 second.

DeployTokensHelper
  #deploy_token_revoke_button_data
    returns expected hash

# [RSpecRunTime] Finishing example group spec/helpers/deploy_tokens_helper_spec.rb. It took 0.27 second. Expected to take 0.59 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/error_tracking/log_formatter_spec.rb. Expected to take 0.54 second.

Gitlab::ErrorTracking::LogFormatter
  appends error-related log fields and filters sensitive Sidekiq arguments

# [RSpecRunTime] Finishing example group spec/lib/gitlab/error_tracking/log_formatter_spec.rb. It took 0.28 second. Expected to take 0.54 second.
# [RSpecRunTime] Starting example group spec/graphql/types/permission_types/ci/pipeline_spec.rb. Expected to take 0.51 second.

Types::PermissionTypes::Ci::Pipeline
  has expected permission fields

# [RSpecRunTime] Finishing example group spec/graphql/types/permission_types/ci/pipeline_spec.rb. It took 0.25 second. Expected to take 0.51 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/database/async_constraints_spec.rb. Expected to take 0.49 second.

Gitlab::Database::AsyncConstraints
  .validate_pending_entries!
    executes pending validations

# [RSpecRunTime] Finishing example group spec/lib/gitlab/database/async_constraints_spec.rb. It took 0.27 second. Expected to take 0.49 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/usage/metrics/instrumentations/uuid_metric_spec.rb. Expected to take 0.48 second.

Gitlab::Usage::Metrics::Instrumentations::UuidMetric
  behaves like a correct instrumented metric value
    has correct value

# [RSpecRunTime] Finishing example group spec/lib/gitlab/usage/metrics/instrumentations/uuid_metric_spec.rb. It took 0.26 second. Expected to take 0.48 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/status/bridge/waiting_for_resource_spec.rb. Expected to take 0.46 second.

Gitlab::Ci::Status::Bridge::WaitingForResource
  is expected to be < Gitlab::Ci::Status::Processable::WaitingForResource

# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/status/bridge/waiting_for_resource_spec.rb. It took 0.26 second. Expected to take 0.46 second.
# [RSpecRunTime] Starting example group spec/graphql/types/work_items/widgets/notifications_type_spec.rb. Expected to take 0.45 second.

Types::WorkItems::Widgets::NotificationsType
  exposes the expected fields

# [RSpecRunTime] Finishing example group spec/graphql/types/work_items/widgets/notifications_type_spec.rb. It took 0.26 second. Expected to take 0.45 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/saas_spec.rb. Expected to take 0.45 second.

Gitlab::Saas
  .canary_toggle_com_url
    is expected to eq "https://next.gitlab.com"

# [RSpecRunTime] Finishing example group spec/lib/gitlab/saas_spec.rb. It took 0.26 second. Expected to take 0.45 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/memory/watchdog/handlers/puma_handler_spec.rb. Expected to take 0.43 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.26 second. Expected to take 0.43 second.
# [RSpecRunTime] Starting example group spec/graphql/types/ci/group_variable_connection_type_spec.rb. Expected to take 0.42 second.

#<Class:0x00007ce3549afbf0>
  has the expected fields

# [RSpecRunTime] Finishing example group spec/graphql/types/ci/group_variable_connection_type_spec.rb. It took 0.26 second. Expected to take 0.42 second.
auto_explain log contains 1227 entries for main, writing to /builds/gitlab-org/gitlab/auto_explain/rspec-unit-pg14-29-32.340.main.ndjson.gz
took 19.817494379
auto_explain log contains 1227 entries for ci, writing to /builds/gitlab-org/gitlab/auto_explain/rspec-unit-pg14-29-32.340.ci.ndjson.gz
took 17.515849217
[TEST PROF INFO] EventProf results for sql.active_record

Total time: 04:59.702 of 25:12.206 (19.82%)
Total events: 278063

Top 5 slowest suites (by time):

MergeRequests::RefreshService (./spec/services/merge_requests/refresh_service_spec.rb:5) – 00:53.454 (41891 / 77) of 03:44.206 (23.84%)
TodoService (./spec/services/todo_service_spec.rb:5) – 00:31.130 (27420 / 161) of 02:01.573 (25.61%)
Banzai::Filte...eferenceFilter (./spec/lib/banzai/filter/references/issue_reference_filter_spec.rb:5) – 00:20.427 (17199 / 99) of 01:13.328 (27.86%)
AutoMerge::BaseService (./spec/services/auto_merge/base_service_spec.rb:5) – 00:13.840 (11777 / 41) of 01:01.320 (22.57%)
MergeRequests...tyCheckService (./spec/services/merge_requests/mergeability_check_service_spec.rb:5) – 00:11.270 (9199 / 44) of 01:02.008 (18.18%)

Knapsack report was generated. Preview:
{
  "spec/services/merge_requests/refresh_service_spec.rb": 224.15543018399967,
  "spec/rubocop/cop/rspec/feature_category_spec.rb": 73.37248686099974,
  "spec/services/todo_service_spec.rb": 121.57273549799993,
  "spec/lib/banzai/filter/references/issue_reference_filter_spec.rb": 73.3284045750006,
  "spec/helpers/projects_helper_spec.rb": 46.620867489000375,
  "spec/services/auto_merge/base_service_spec.rb": 61.32054509000045,
  "spec/services/merge_requests/mergeability_check_service_spec.rb": 62.00809244300035,
  "spec/models/protected_branch_spec.rb": 36.32740436399945,
  "spec/lib/gitlab/database/migrations/background_migration_helpers_spec.rb": 24.38458050600093,
  "spec/models/concerns/milestoneish_spec.rb": 28.45781352099948,
  "spec/views/search/_results.html.haml_spec.rb": 37.42203489599888,
  "spec/scripts/internal_events/cli_spec.rb": 40.921688313999766,
  "spec/finders/ci/runner_jobs_finder_spec.rb": 23.086432968000736,
  "spec/policies/commit_policy_spec.rb": 25.690249265000602,
  "spec/services/projects/update_repository_storage_service_spec.rb": 24.880237377999947,
  "spec/lib/gitlab/project_authorizations_spec.rb": 25.08782289499868,
  "spec/models/container_registry/protection/rule_spec.rb": 9.846844241999861,
  "spec/models/merge_request_diff_commit_spec.rb": 20.223671771000227,
  "spec/lib/container_registry/client_spec.rb": 10.38044280000031,
  "spec/lib/bulk_imports/clients/http_spec.rb": 7.501448395001717,
  "spec/finders/clusters/knative_services_finder_spec.rb": 19.816041366000718,
  "spec/policies/ci/runner_manager_policy_spec.rb": 11.675345395000477,
  "spec/lib/api/helpers/packages/dependency_proxy_helpers_spec.rb": 8.49696709500131,
  "spec/services/post_receive_service_spec.rb": 11.164130148999902,
  "spec/policies/todo_policy_spec.rb": 12.32017554399863,
  "spec/models/concerns/project_api_compatibility_spec.rb": 13.33620765500018,
  "spec/lib/gitlab/cache/json_caches/json_keyed_spec.rb": 6.736918135000451,
  "spec/helpers/tab_helper_spec.rb": 6.638710766001168,
  "spec/workers/users/deactivate_dormant_users_worker_spec.rb": 10.178104942999198,
  "spec/lib/gitlab/ci/trace/checksum_spec.rb": 9.394082114000412,
  "spec/services/merge_requests/retarget_chain_service_spec.rb": 14.350664765999682,
  "spec/lib/extracts_path_spec.rb": 5.992459741000857,
  "spec/initializers/load_balancing_spec.rb": 12.602689350000219,
  "spec/workers/merge_request_cleanup_refs_worker_spec.rb": 11.78862285499963,
  "spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb": 5.481801931000518,
  "spec/uploaders/packages/package_file_uploader_spec.rb": 8.314461050000318,
  "spec/lib/gitlab/gitaly_client/ref_service_spec.rb": 5.398537819999547,
  "spec/lib/gitlab/diff/position_tracer/image_strategy_spec.rb": 10.89281076000043,
  "spec/lib/sidebars/projects/menus/infrastructure_menu_spec.rb": 5.604624466001042,
  "spec/lib/sidebars/projects/menus/settings_menu_spec.rb": 5.587078478998592,
  "spec/models/protected_branch/merge_access_level_spec.rb": 6.145919894001054,
  "spec/services/ci/pipeline_schedules/create_service_spec.rb": 6.038667656001053,
  "spec/serializers/commit_entity_spec.rb": 9.542107657000088,
  "spec/lib/gitlab/ci/pipeline/chain/populate_metadata_spec.rb": 6.141881663999811,
  "spec/lib/gitlab/mail_room/mail_room_spec.rb": 3.9644683280002937,
  "spec/lib/gitlab/template/merge_request_template_spec.rb": 8.137975240999367,
  "spec/rubocop/cop/graphql/descriptions_spec.rb": 4.742077007000262,
  "spec/lib/gitlab/exclusive_lease_helpers/sleeping_lock_spec.rb": 8.628636213999926,
  "spec/services/security/ci_configuration/sast_create_service_spec.rb": 6.073192342000766,
  "spec/services/ci/runners/register_runner_service_spec.rb": 4.678495533999012,
  "spec/serializers/merge_request_diff_entity_spec.rb": 6.56878749399948,
  "spec/lib/gitlab/database/health_status/indicators/patroni_apdex_spec.rb": 2.6559218000002147,
  "spec/lib/gitlab/consul/internal_spec.rb": 2.3300764190007612,
  "spec/finders/keys_finder_spec.rb": 4.377074439000353,
  "spec/lib/gitlab/database/dictionary_spec.rb": 2.496389279000141,
  "spec/models/snippet_statistics_spec.rb": 3.8462162209998496,
  "spec/services/service_ping/submit_service_ping_service_spec.rb": 3.069201381998937,
  "spec/services/ci/build_erase_service_spec.rb": 7.04673897900102,
  "spec/lib/gitlab/ci/build/step_spec.rb": 5.052428269998927,
  "spec/lib/gitlab/github_import/importer/single_endpoint_diff_notes_importer_spec.rb": 5.147563589998754,
  "spec/services/projects/deploy_tokens/create_service_spec.rb": 4.906402477998199,
  "spec/services/quick_actions/target_service_spec.rb": 4.886748190001526,
  "spec/services/projects/download_service_spec.rb": 4.367516680000335,
  "spec/models/integrations/campfire_spec.rb": 2.303419451998707,
  "spec/graphql/resolvers/board_resolver_spec.rb": 3.6211196369986283,
  "spec/models/x509_certificate_spec.rb": 2.777725077001378,
  "spec/lib/gitlab/ci/pipeline/expression/parser_spec.rb": 2.209522602999641,
  "spec/models/concerns/use_sql_function_for_primary_key_lookups_spec.rb": 2.856256286999269,
  "spec/models/clusters/agents/authorizations/user_access/project_authorization_spec.rb": 3.163306610998916,
  "spec/tooling/graphql/docs/renderer_spec.rb": 2.370137212999907,
  "spec/lib/gitlab/database/async_constraints/postgres_async_constraint_validation_spec.rb": 2.381529562999276,
  "spec/lib/gitlab/ci/pipeline/expression/lexer_spec.rb": 2.049798280999312,
  "spec/services/users/assigned_issues_count_service_spec.rb": 3.9839689259988518,
  "spec/views/layouts/terms.html.haml_spec.rb": 3.5987856009996904,
  "spec/lib/gitlab/email/service_desk_email_spec.rb": 1.964953060998596,
  "spec/models/packages/sem_ver_spec.rb": 1.7663017449995095,
  "spec/models/ci/commit_with_pipeline_spec.rb": 2.403906890000144,
  "spec/workers/bulk_imports/pipeline_batch_worker_spec.rb": 2.7063944340006856,
  "spec/finders/autocomplete/group_users_finder_spec.rb": 3.422610411000278,
  "spec/lib/gitlab/cache/request_cache_spec.rb": 1.9841748689996166,
  "spec/models/milestone_note_spec.rb": 3.8703664889999345,
  "spec/finders/releases/evidence_pipeline_finder_spec.rb": 3.385704076001275,
  "spec/lib/gitlab/github_import/importer/events/cross_referenced_spec.rb": 3.688686099998449,
  "spec/lib/gitlab/popen/runner_spec.rb": 1.7191732200008119,
  "spec/services/projects/import_export/parallel_export_service_spec.rb": 2.8551691369993932,
  "spec/lib/gitlab/ci/config/entry/reports/coverage_report_spec.rb": 1.9933566370000335,
  "spec/lib/gitlab/usage_data_counters/note_counter_spec.rb": 1.568563296999855,
  "spec/lib/gitlab/auth/user_access_denied_reason_spec.rb": 3.0417172350007604,
  "spec/lib/gitlab/endpoint_attributes_spec.rb": 1.7192749400001048,
  "spec/lib/gitlab/reactive_cache_set_cache_spec.rb": 1.9927374879989657,
  "spec/policies/projects/branch_rule_policy_spec.rb": 1.8650992019993282,
  "spec/lib/bitbucket/representation/pull_request_comment_spec.rb": 1.3024891280001611,
  "spec/services/ci/create_pipeline_service/parameter_content_spec.rb": 2.9449080470003537,
  "spec/models/ci/build_trace_spec.rb": 1.780174662000718,
  "spec/lib/gitlab/sanitizers/svg_spec.rb": 1.377439730000333,
  "spec/models/concerns/access_requestable_spec.rb": 2.592121806999785,
  "spec/lib/gitlab/import_export/repo_saver_spec.rb": 2.302081881000049,
  "spec/services/packages/composer/composer_json_service_spec.rb": 2.131807971998569,
  "spec/lib/gitlab/ci/reports/test_reports_comparer_spec.rb": 1.4278372729986586,
  "spec/graphql/types/snippets/blob_viewer_type_spec.rb": 1.7749202930008323,
  "spec/tasks/gitlab/sidekiq_rake_spec.rb": 3.110900756999399,
  "spec/models/concerns/clusters/agents/authorizations/ci_access/config_scopes_spec.rb": 3.717662205999659,
  "spec/graphql/resolvers/merge_requests_count_resolver_spec.rb": 2.774181635999412,
  "spec/services/branches/validate_new_service_spec.rb": 3.059477582999534,
  "spec/lib/gitlab/database/schema_cache_with_renamed_table_spec.rb": 2.5394971839996288,
  "spec/lib/file_size_validator_spec.rb": 2.6566487700001744,
  "spec/services/update_container_registry_info_service_spec.rb": 3.673908612001469,
  "spec/helpers/sessions_helper_spec.rb": 1.6682470249998005,
  "spec/lib/gitlab/ci/variables/builder/project_spec.rb": 1.7837738620000891,
  "spec/lib/gitlab/tracking/service_ping_context_spec.rb": 0.8409980120013643,
  "spec/helpers/award_emoji_helper_spec.rb": 2.7972878930013394,
  "spec/lib/gitlab/database/load_balancing/service_discovery/sampler_spec.rb": 0.9955561139995552,
  "spec/models/work_items/widgets/assignees_spec.rb": 1.3521353929991164,
  "spec/lib/sidebars/admin/menus/applications_menu_spec.rb": 1.0767432550001104,
  "spec/components/pajamas/card_component_spec.rb": 1.003456663000179,
  "spec/channels/noteable/notes_channel_spec.rb": 2.2517322069998045,
  "spec/services/packages/create_temporary_package_service_spec.rb": 1.5361964109997643,
  "spec/models/packages/event_spec.rb": 0.9857535150003969,
  "spec/serializers/rollout_status_entity_spec.rb": 0.8398968619985681,
  "spec/lib/gitlab/database/async_indexes/index_creator_spec.rb": 1.285422920000201,
  "spec/lib/gitlab/issuable/clone/copy_resource_events_service_spec.rb": 2.5522550030000275,
  "spec/workers/packages/mark_package_files_for_destruction_worker_spec.rb": 1.4747916489995987,
  "spec/graphql/mutations/todos/restore_spec.rb": 2.303700022001067,
  "spec/policies/project_hook_policy_spec.rb": 1.5539092990002246,
  "spec/services/alert_management/http_integrations/update_service_spec.rb": 1.3810992979997536,
  "spec/lib/bulk_imports/groups/pipelines/namespace_settings_pipeline_spec.rb": 1.4173293250005372,
  "spec/services/ci/create_pipeline_service/artifacts_spec.rb": 1.6038150429994857,
  "spec/services/packages/update_tags_service_spec.rb": 1.4606069790006586,
  "spec/workers/ci/archive_trace_worker_spec.rb": 1.570841806998942,
  "spec/lib/gitlab/seeders/ci/runner/runner_fleet_pipeline_seeder_spec.rb": 1.8957214089987247,
  "spec/lib/gitlab/gitaly_client/cleanup_service_spec.rb": 1.9944185780004773,
  "spec/lib/gitlab/import_export/group/object_builder_spec.rb": 1.2577523830004793,
  "spec/lib/bitbucket/representation/comment_spec.rb": 0.9408619099995121,
  "spec/finders/ci/runner_managers_finder_spec.rb": 1.1858743320008216,
  "spec/lib/gitlab/usage/metrics/instrumentations/project_imports_creators_metric_spec.rb": 1.8891423490003945,
  "spec/lib/gitlab/plantuml_spec.rb": 1.088441892999981,
  "spec/models/projects/wiki_repository_spec.rb": 0.8538099199995486,
  "spec/lib/gitlab/slash_commands/presenters/issue_close_spec.rb": 1.7952554499988764,
  "spec/workers/pipeline_hooks_worker_spec.rb": 1.5767478460002167,
  "spec/services/packages/remove_tag_service_spec.rb": 2.524678396001036,
  "spec/lib/gitlab/legacy_github_import/release_formatter_spec.rb": 0.9610244579998835,
  "spec/services/ci/build_unschedule_service_spec.rb": 1.3436151839996455,
  "spec/lib/gitlab/database/type/color_spec.rb": 0.9313762609999685,
  "spec/lib/gitlab/github_import/importer/events/reopened_spec.rb": 1.2683412520000275,
  "spec/lib/gitlab/import_export/wiki_repo_saver_spec.rb": 1.6323645599986776,
  "spec/services/incident_management/issuable_escalation_statuses/after_update_service_spec.rb": 1.6139747409997653,
  "spec/models/user_mentions/commit_user_mention_spec.rb": 0.8902786569997261,
  "spec/serializers/ci/daily_build_group_report_result_entity_spec.rb": 0.721121234999373,
  "spec/graphql/resolvers/ci/test_suite_resolver_spec.rb": 1.8300380969994876,
  "spec/rubocop/cop/migration/migration_record_spec.rb": 1.103423300999566,
  "spec/services/admin/abuse_report_labels/create_service_spec.rb": 0.8959289849990455,
  "spec/services/ci/build_cancel_service_spec.rb": 1.3357128649986407,
  "spec/lib/gitlab/ci/reports/security/locations/secret_detection_spec.rb": 0.890393726000184,
  "spec/lib/gitlab/sidekiq_middleware/concurrency_limit/workers_map_spec.rb": 1.041279728000518,
  "spec/lib/gitlab/pagination/keyset/in_operator_optimization/array_scope_columns_spec.rb": 0.46309706600004574,
  "spec/services/packages/npm/deprecate_package_service_spec.rb": 1.0466066780008987,
  "spec/graphql/types/color_type_spec.rb": 0.9105337540004257,
  "spec/lib/gitlab/ci/config/entry/release/assets_spec.rb": 0.6847944700002699,
  "spec/lib/gitlab/github_gists_import/status_spec.rb": 0.5777180730001419,
  "spec/lib/gitlab/circuit_breaker/notifier_spec.rb": 0.5076472800010379,
  "spec/lib/gitlab/github_import/clients/proxy_spec.rb": 0.6906841700001678,
  "spec/lib/gitlab/ci/status/waiting_for_callback_spec.rb": 0.8040739359985309,
  "spec/lib/constraints/admin_constrainer_spec.rb": 0.8649170190001314,
  "spec/models/notes/note_metadata_spec.rb": 0.8251568140003656,
  "spec/workers/pages_domain_verification_worker_spec.rb": 0.5682005829985428,
  "spec/graphql/types/timeframe_type_spec.rb": 0.6147349090006173,
  "spec/services/ci/queue/pending_builds_strategy_spec.rb": 1.030416220000916,
  "spec/services/projects/batch_open_issues_count_service_spec.rb": 1.2004454099987925,
  "spec/views/notify/push_to_merge_request_email.text.haml_spec.rb": 1.389611837999837,
  "spec/graphql/mutations/users/saved_replies/create_spec.rb": 0.8097445549992699,
  "spec/lib/gitlab/kubernetes/config_map_spec.rb": 0.4315353799993318,
  "spec/rubocop/cop/gitlab/avoid_feature_get_spec.rb": 0.38403317499978584,
  "spec/views/admin/projects/_form.html.haml_spec.rb": 0.5827678719997493,
  "spec/lib/gitlab/checks/force_push_spec.rb": 0.8658244189991819,
  "spec/lib/gitlab/kubernetes/ingress_spec.rb": 1.921104376000585,
  "spec/workers/jira_connect/sync_feature_flags_worker_spec.rb": 0.8415702920010517,
  "spec/routing/user_routing_spec.rb": 1.570298026999808,
  "spec/lib/slack/block_kit/app_home_opened_spec.rb": 0.76642437999908,
  "spec/rubocop/cop/migration/background_migration_missing_active_concern_spec.rb": 0.6841975309998816,
  "spec/validators/js_regex_validator_spec.rb": 0.5503098860008322,
  "spec/lib/gitlab/word_diff/positions_counter_spec.rb": 0.6095423090009717,
  "spec/lib/gitlab/usage/metrics/instrumentations/count_project_snippets_metric_spec.rb": 0.8890165960001468,
  "spec/views/shared/milestones/_top.html.haml_spec.rb": 0.8734061979994294,
  "spec/presenters/dev_ops_report/metric_presenter_spec.rb": 0.5601394650002476,
  "spec/services/export_csv/map_export_fields_service_spec.rb": 0.5264669680000225,
  "spec/lib/banzai/pipeline/post_process_pipeline_spec.rb": 0.8092834159997437,
  "spec/views/devise/shared/_signup_omniauth_provider_list_spec.rb": 0.6898789589995431,
  "spec/graphql/types/incident_management/timeline_event_tag_type_spec.rb": 0.4435351890006132,
  "spec/workers/todos_destroyer/entity_leave_worker_spec.rb": 0.24767335099932097,
  "spec/lib/google_api/auth_spec.rb": 0.43986909799969,
  "spec/graphql/types/container_respository_tags_sort_enum_spec.rb": 0.33665128000029654,
  "spec/graphql/types/merge_requests/mergeability_check_type_spec.rb": 0.337453710999398,
  "spec/models/concerns/cross_database_modification_spec.rb": 0.4544590179993975,
  "spec/models/group/crm_settings_spec.rb": 0.4517813769998611,
  "spec/helpers/environment_helper_spec.rb": 0.7552594720000343,
  "spec/lib/bitbucket_server/retry_with_delay_spec.rb": 0.346203818999129,
  "spec/graphql/resolvers/alert_management/alert_status_counts_resolver_spec.rb": 0.600561449999077,
  "spec/lib/gitlab/tracking/helpers/weak_password_error_event_spec.rb": 0.46862743599922396,
  "spec/graphql/types/kas/agent_metadata_type_spec.rb": 0.453914576999523,
  "spec/graphql/types/ci/test_report_summary_type_spec.rb": 0.3484436199996708,
  "spec/lib/gitlab/github_import/importer/issue_and_label_links_importer_spec.rb": 0.2645195289987896,
  "spec/graphql/types/label_type_spec.rb": 0.34398592000070494,
  "spec/serializers/serverless/domain_entity_spec.rb": 0.37352550600007817,
  "spec/workers/concerns/cluster_agent_queue_spec.rb": 0.25657657999909134,
  "spec/lib/gitlab/sidekiq_middleware/pause_control/client_spec.rb": 0.3606548080006178,
  "spec/rubocop/qa_helpers_spec.rb": 0.34204827999928966,
  "spec/policies/concerns/archived_abilities_spec.rb": 0.3738196459999017,
  "spec/graphql/types/security/codequality_reports_comparer/report_type_spec.rb": 0.34208740099893475,
  "spec/lib/mattermost/command_spec.rb": 0.34913602999949944,
  "spec/graphql/types/ci/catalog/resource_sort_enum_spec.rb": 0.3430508999990707,
  "spec/graphql/types/permission_types/container_repository_spec.rb": 0.2732565380010783,
  "spec/graphql/types/packages/composer/metadatum_type_spec.rb": 0.2618165389994829,
  "spec/lib/bulk_imports/groups/extractors/subgroups_extractor_spec.rb": 0.40543365299890866,
  "spec/helpers/deploy_tokens_helper_spec.rb": 0.2739534079992154,
  "spec/lib/gitlab/error_tracking/log_formatter_spec.rb": 0.2823427269995591,
  "spec/graphql/types/permission_types/ci/pipeline_spec.rb": 0.2529574300006061,
  "spec/lib/gitlab/database/async_constraints_spec.rb": 0.2722644980003679,
  "spec/lib/gitlab/usage/metrics/instrumentations/uuid_metric_spec.rb": 0.25717729099960707,
  "spec/lib/gitlab/ci/status/bridge/waiting_for_resource_spec.rb": 0.25789371999962896,
  "spec/graphql/types/work_items/widgets/notifications_type_spec.rb": 0.2596359199997096,
  "spec/lib/gitlab/saas_spec.rb": 0.2576877900010004,
  "spec/lib/gitlab/memory/watchdog/handlers/puma_handler_spec.rb": 0.2643476190005458,
  "spec/graphql/types/ci/group_variable_connection_type_spec.rb": 0.25717514000098163
}

Knapsack global time execution for tests: 25m 11s

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

  1) Packages::PackageFileUploader 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

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

  3) Packages::PackageFileUploader 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

  4) Packages::PackageFileUploader 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

  5) Packages::PackageFileUploader 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

  6) Packages::PackageFileUploader 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

  7) Packages::PackageFileUploader 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

  8) Packages::PackageFileUploader 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

  9) Packages::PackageFileUploader 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

  10) Packages::PackageFileUploader 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

Failures:

  1) Cli when showing usage examples when viewing examples for multiple events switches between events gracefully
     Failure/Error: raise "Condition not met: #{condition_name}"

     RuntimeError:
       Condition not met:         expect_cli_output do
                 output = plain_last_lines(320)

                 output.include?(expected_example_prompt) &&
                   output.include?(expected_event1_example) &&
                   output.include?(expected_event2_example)
               end
     # ./spec/support/helpers/wait_helpers.rb:16:in `block in wait_for'
     # ./spec/support/helpers/wait_helpers.rb:9:in `loop'
     # ./spec/support/helpers/wait_helpers.rb:9:in `wait_for'
     # ./spec/scripts/internal_events/cli_spec.rb:908:in `block in expect_cli_output'
     # ./spec/scripts/internal_events/cli_spec.rb:902:in `with_cli_thread'
     # ./spec/scripts/internal_events/cli_spec.rb:908:in `expect_cli_output'
     # ./spec/scripts/internal_events/cli_spec.rb:677:in `block (4 levels) in <top (required)>'
     # ./spec/spec_helper.rb:426:in `block (3 levels) in <top (required)>'
     # ./spec/support/sidekiq_middleware.rb:9:in `with_sidekiq_server_middleware'
     # ./spec/spec_helper.rb:417:in `block (2 levels) in <top (required)>'
     # ./spec/spec_helper.rb:413:in `block (3 levels) in <top (required)>'
     # ./lib/gitlab/application_context.rb:70:in `with_raw_context'
     # ./spec/spec_helper.rb:413:in `block (2 levels) in <top (required)>'
     # ./spec/spec_helper.rb:260:in `block (2 levels) in <top (required)>'
     # ./spec/support/system_exit_detected.rb:7:in `block (2 levels) in <top (required)>'
     # ./spec/support/fast_quarantine.rb:22:in `block (2 levels) in <top (required)>'
     # ./spec/support/database/prevent_cross_joins.rb:106:in `block (3 levels) in <top (required)>'
     # ./spec/support/database/prevent_cross_joins.rb:60:in `with_cross_joins_prevented'
     # ./spec/support/database/prevent_cross_joins.rb:106:in `block (2 levels) in <top (required)>'

Finished in 25 minutes 56 seconds (files took 1 minute 45.37 seconds to load)
3893 examples, 1 failure, 10 pending

Failed examples:

rspec ./spec/scripts/internal_events/cli_spec.rb:664 # Cli when showing usage examples when viewing examples for multiple events switches between events gracefully

Randomized with seed 26704

Stopped processing SimpleCov as a previous error not related to SimpleCov has been detected
[TEST PROF INFO] Time spent in factories: 11:13.732 (42.01% of total time)
RSpec exited with 1.
[job-metrics] Updating job metrics tag for the CI/CD job.
RSPEC_RETRIED_TESTS_REPORT_PATH: rspec/retried_tests-6348595049.txt
Retrying the failing examples in a new RSpec process...
$ gem install junit_merge --no-document --version 0.1.2
Successfully installed nokogiri-1.16.2-x86_64-linux
Successfully installed junit_merge-0.1.2
2 gems installed
==> 'gem install junit_merge --no-document --version 0.1.2' succeeded in 1 seconds.
Running RSpec command: bin/rspec -Ispec -rspec_helper --color --failure-exit-code 1 --error-exit-code 2 --format documentation --format Support::Formatters::JsonFormatter --out rspec/rspec-retry-6348595049.json --format RspecJunitFormatter --out rspec/rspec-retry-6348595049.xml --only-failures --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"
tput: No value for $TERM and no -T specified
tput: No value for $TERM and no -T specified
Run options: include {:last_run_status=>"failed"}

# [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 0.424528408 seconds
# [RSpecRunTime] Starting example group spec/scripts/internal_events/cli_spec.rb. Expected to take 40.84 seconds.

Cli
  when showing usage examples
    when viewing examples for multiple events
      switches between events gracefully (FAILED - 1)

# [RSpecRunTime] Finishing example group spec/scripts/internal_events/cli_spec.rb. It took 20.83 seconds. Expected to take 40.84 seconds.
auto_explain log contains 1227 entries for main, writing to /builds/gitlab-org/gitlab/auto_explain/rspec-unit-pg14-29-32.19864.main.ndjson.gz
took 17.490230454
auto_explain log contains 1228 entries for ci, writing to /builds/gitlab-org/gitlab/auto_explain/rspec-unit-pg14-29-32.19864.ci.ndjson.gz
took 17.45225158
[TEST PROF INFO] EventProf results for sql.active_record

Total time: 00:00.225 of 00:20.825 (1.08%)
Total events: 115

Top 5 slowest suites (by time):

Cli (./spec/scripts/internal_events/cli_spec.rb:7) – 00:00.225 (115 / 1) of 00:20.825 (1.08%)


Failures:

  1) Cli when showing usage examples when viewing examples for multiple events switches between events gracefully
     Failure/Error: raise "Condition not met: #{condition_name}"

     RuntimeError:
       Condition not met:         expect_cli_output do
                 output = plain_last_lines(320)

                 output.include?(expected_example_prompt) &&
                   output.include?(expected_event1_example) &&
                   output.include?(expected_event2_example)
               end
     # ./spec/support/helpers/wait_helpers.rb:16:in `block in wait_for'
     # ./spec/support/helpers/wait_helpers.rb:9:in `loop'
     # ./spec/support/helpers/wait_helpers.rb:9:in `wait_for'
     # ./spec/scripts/internal_events/cli_spec.rb:908:in `block in expect_cli_output'
     # ./spec/scripts/internal_events/cli_spec.rb:902:in `with_cli_thread'
     # ./spec/scripts/internal_events/cli_spec.rb:908:in `expect_cli_output'
     # ./spec/scripts/internal_events/cli_spec.rb:677:in `block (4 levels) in <main>'
     # ./spec/spec_helper.rb:426:in `block (3 levels) in <top (required)>'
     # ./spec/support/sidekiq_middleware.rb:9:in `with_sidekiq_server_middleware'
     # ./spec/spec_helper.rb:417:in `block (2 levels) in <top (required)>'
     # ./spec/spec_helper.rb:413:in `block (3 levels) in <top (required)>'
     # ./lib/gitlab/application_context.rb:70:in `with_raw_context'
     # ./spec/spec_helper.rb:413:in `block (2 levels) in <top (required)>'
     # ./spec/spec_helper.rb:260:in `block (2 levels) in <top (required)>'
     # ./spec/support/system_exit_detected.rb:7:in `block (2 levels) in <main>'
     # ./spec/support/fast_quarantine.rb:22:in `block (2 levels) in <main>'
     # ./spec/support/database/prevent_cross_joins.rb:106:in `block (3 levels) in <main>'
     # ./spec/support/database/prevent_cross_joins.rb:60:in `with_cross_joins_prevented'
     # ./spec/support/database/prevent_cross_joins.rb:106:in `block (2 levels) in <main>'

Finished in 1 minute 0.87 seconds (files took 45.29 seconds to load)
1 example, 1 failure

Failed examples:

rspec ./spec/scripts/internal_events/cli_spec.rb:664 # Cli when showing usage examples when viewing examples for multiple events switches between events gracefully

Randomized with seed 22291

[TEST PROF INFO] Time spent in factories: 00:00.019 (0.03% of total time)
./scripts/rspec_helpers.sh: line 336: pop_var_context: head of shell_variables not a function context
./scripts/rspec_helpers.sh: line 220: pop_var_context: head of shell_variables not a function context
./scripts/rspec_helpers.sh: line 295: pop_var_context: head of shell_variables not a function context
scripts/utils.sh: line 83: pop_var_context: head of shell_variables not a function context
/usr/bin/bash: line 385: pop_var_context: head of shell_variables not a function context
section_end:1709879802:step_script
section_start:1709879802: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.17.0)
$ section_start "relate-failure-issue" "Report test failures" # collapsed multi-line command
section_start:1709879803:relate-failure-issue[collapsed=true]
Report test failures
Reporting test failures in `rspec/rspec-retry-6348595049.json` as issues in project `gitlab-org/gitlab` via the API at `https://gitlab.com/api/v4`.
=> Reporting 1 tests in rspec/rspec-retry-6348595049.json
 => Relating issues for test 'Cli when showing usage examples when viewing examples for multiple events switches between events gracefully'...
  => [DEBUG] Issue https://gitlab.com/gitlab-org/gitlab/-/issues/448636 has an acceptable diff ratio of 0.0%.
  => Found issue https://gitlab.com/gitlab-org/gitlab/-/issues/448636 for test 'Cli when showing usage examples when viewing examples for multiple events switches between events gracefully' with a diff ratio of 0.0%.
  => Added a report in '[Test] spec/scripts/internal_events/cli_spec.rb | Cli when showing usage examples when viewing examples for multiple events switches between events gracefully': https://gitlab.com/gitlab-org/gitlab/-/issues/448636!
section_end:1709879807:relate-failure-issue

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

$ section_start "slow-test-issues" "Report test slowness" # collapsed multi-line command
section_start:1709879807:slow-test-issues[collapsed=true]
Report test slowness
Reporting slow tests in `rspec/rspec-*.json` as issues in project `gitlab-org/gitlab` via the API at `https://gitlab.com/api/v4`.
=> Reporting 3893 tests in rspec/rspec-6348595049.json
=> Reporting 1 tests in rspec/rspec-retry-6348595049.json
section_end:1709879808:slow-test-issues

$ section_start "slow-test-merge-request-report-note" "Report test slowness in MR note" # collapsed multi-line command
section_start:1709879808:slow-test-merge-request-report-note[collapsed=true]
Report test slowness in MR note
section_end:1709879808:slow-test-merge-request-report-note

$ section_start "knapsack-report-issues" "Report test files close to timing out" # collapsed multi-line command
section_start:1709879808: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:1709879809: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:1709879810:after_script
section_start:1709879810:upload_artifacts_on_failure
Uploading artifacts for failed job
Uploading artifacts...
auto_explain/: found 5 matching artifact files and directories 
coverage/: found 4 matching artifact files and directories 
WARNING: crystalball/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 
deprecations/: found 4 matching artifact files and directories 
knapsack/: found 4 matching artifact files and directories 
rspec/: found 15 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 19 matching artifact files and directories 
WARNING: Upload request redirected                  location=https://gitlab.com/api/v4/jobs/6348595049/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=6348595049 responseStatus=201 Created token=glcbt-65
Uploading artifacts...
rspec/rspec-*.xml: found 2 matching artifact files and directories 
WARNING: Upload request redirected                  location=https://gitlab.com/api/v4/jobs/6348595049/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=6348595049 responseStatus=201 Created token=glcbt-65
section_end:1709879816:upload_artifacts_on_failure
section_start:1709879816:cleanup_file_variables
Cleaning up project directory and file based variables
section_end:1709879816:cleanup_file_variables
ERROR: Job failed: exit code 1