Running with gitlab-runner 16.8.0~beta.67.gb5664e8e (b5664e8e)
  on blue-1.private.runners-manager.gitlab.com/gitlab.com/gitlab-org 1zzGUpzq, system ID: s_fc31da7ae46e
  feature flags: FF_NETWORK_PER_BUILD:true, FF_USE_IMPROVED_URL_MASKING:true
section_start:1708470991:resolve_secrets
Resolving secrets
section_end:1708470991:resolve_secrets
section_start:1708470991: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:0704d2ebff510f3d6f608cd8e9064640a9dd041c4e3ac1e1ff2afb5fe22850bc 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:bbf2c8a67a31469f488a4541826628901b6eb5c0a4d68147919aca0b98107df6 ...
section_end:1708470998:prepare_executor
section_start:1708470998:prepare_script
Preparing environment
Running on runner-1zzgupzq-project-278964-concurrent-0 via runner-1zzgupzq-private-1708461764-8822d0fe...
section_end:1708470998:prepare_script
section_start:1708470998:get_sources
Getting source from Git repository
Skipping Git repository setup
Skipping Git checkout
Skipping Git submodules setup
section_end:1708470999:get_sources
section_start:1708470999:restore_cache
Restoring cache
Checking cache for ruby-gems-debian-bookworm-ruby-3.1-16...
cache.zip is up to date                            
Successfully extracted cache
section_end:1708471013:restore_cache
section_start:1708471013:download_artifacts
Downloading artifacts
Downloading artifacts for clone-gitlab-repo (6218670526)...
Downloading artifacts from coordinator... ok        host=storage.googleapis.com id=6218670526 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 (6218670555)...
Downloading artifacts from coordinator... ok        host=storage.googleapis.com id=6218670555 responseStatus=200 OK token=glcbt-65
Downloading artifacts for retrieve-tests-metadata (6218670576)...
Downloading artifacts from coordinator... ok        host=storage.googleapis.com id=6218670576 responseStatus=200 OK token=glcbt-65
Downloading artifacts for setup-test-env (6218670568)...
Downloading artifacts from coordinator... ok        host=storage.googleapis.com id=6218670568 responseStatus=200 OK token=glcbt-65
section_end:1708471047:download_artifacts
section_start:1708471047:step_script
Executing "step_script" stage of the job script
Using docker image sha256:0704d2ebff510f3d6f608cd8e9064640a9dd041c4e3ac1e1ff2afb5fe22850bc 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:bbf2c8a67a31469f488a4541826628901b6eb5c0a4d68147919aca0b98107df6 ...
$ 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:1708471047: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
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
Using rack 2.2.8
Using rack-test 2.1.0
Using actionpack 7.0.8
Using nio4r 2.7.0
Using websocket-extensions 0.1.5
Using websocket-driver 0.7.6
Using actioncable 7.0.8
Using globalid 1.1.0
Using activejob 7.0.8
Using activemodel 7.0.8
Using activerecord 7.0.8
Using marcel 1.0.2
Using mini_mime 1.1.2
Using activestorage 7.0.8
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
Using actionmailer 7.0.8
Using actiontext 7.0.8
Using pg 1.5.4
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 execjs 2.8.1
Using autoprefixer-rails 10.2.5.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 base64 0.2.0
Using jmespath 1.6.2
Using aws-sdk-core 3.191.2
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.0
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 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.6
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
Using cssbundling-rails 1.3.3
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.3
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.4.2
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 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.9.0.pre.rc3
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 4.8.0
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 redis-client 0.20.0
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.15.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.0
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
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 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 sqlite3 1.6.0 (x86_64-linux)
Using rspec_profiling 0.0.6
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 sassc 2.4.0
Using sassc-rails 2.1.2
Using sd_notify 0.1.1
Using seed-fu 2.3.7
Using websocket 1.2.10
Using selenium-webdriver 4.17.0
Using tty-command 0.10.1
Using semver_dialects 1.6.1
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.8.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.20.0
Using wikicloth 0.8.1
Using yajl-ruby 1.4.3
Bundle complete! 332 Gemfile dependencies, 647 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.4 with native extensions
==> 'bundle pristine pg' succeeded in 11 seconds.
section_end:1708471061: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:1708471061: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'
INFO:  analyzing "public.p_ci_runner_machine_builds" inheritance tree
INFO:  analyzing "gitlab_partitions_dynamic.ci_runner_machine_builds_100"
INFO:  "ci_runner_machine_builds_100": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows
INFO:  analyzing "gitlab_partitions_dynamic.ci_runner_machine_builds_101"
INFO:  "ci_runner_machine_builds_101": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows
INFO:  analyzing "public.p_ci_job_annotations" inheritance tree
INFO:  analyzing "gitlab_partitions_dynamic.ci_job_annotations_100"
INFO:  "ci_job_annotations_100": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows
INFO:  analyzing "gitlab_partitions_dynamic.ci_job_annotations_101"
INFO:  "ci_job_annotations_101": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows
INFO:  analyzing "public.p_ci_builds_metadata" inheritance tree
INFO:  analyzing "public.ci_builds_metadata"
INFO:  "ci_builds_metadata": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows
INFO:  analyzing "gitlab_partitions_dynamic.ci_builds_metadata_101"
INFO:  "ci_builds_metadata_101": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows
INFO:  analyzing "public.p_ci_builds" inheritance tree
INFO:  analyzing "public.ci_builds"
INFO:  "ci_builds": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows
INFO:  analyzing "gitlab_partitions_dynamic.ci_builds_101"
INFO:  "ci_builds_101": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows
INFO:  analyzing "public.p_ci_runner_machine_builds" inheritance tree
INFO:  analyzing "gitlab_partitions_dynamic.ci_runner_machine_builds_100"
INFO:  "ci_runner_machine_builds_100": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows
INFO:  analyzing "gitlab_partitions_dynamic.ci_runner_machine_builds_101"
INFO:  "ci_runner_machine_builds_101": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows
INFO:  analyzing "public.p_ci_job_annotations" inheritance tree
INFO:  analyzing "gitlab_partitions_dynamic.ci_job_annotations_100"
INFO:  "ci_job_annotations_100": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows
INFO:  analyzing "gitlab_partitions_dynamic.ci_job_annotations_101"
INFO:  "ci_job_annotations_101": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows
INFO:  analyzing "public.p_ci_builds_metadata" inheritance tree
INFO:  analyzing "public.ci_builds_metadata"
INFO:  "ci_builds_metadata": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows
INFO:  analyzing "gitlab_partitions_dynamic.ci_builds_metadata_101"
INFO:  "ci_builds_metadata_101": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows
INFO:  analyzing "public.p_ci_builds" inheritance tree
INFO:  analyzing "public.ci_builds"
INFO:  "ci_builds": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows
INFO:  analyzing "gitlab_partitions_dynamic.ci_builds_101"
INFO:  "ci_builds_101": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows
==> 'bundle exec rake db:drop db:create db:schema:load db:migrate gitlab:db:lock_writes' succeeded in 50 seconds.
SELECT pg_catalog.set_config('search_path', '', false);
CREATE DATABASE praefect_test ENCODING 'UTF8';
section_end:1708471111:setup-db

$ source ./scripts/rspec_helpers.sh
$ run_timed_command "gem install knapsack --no-document"
$ gem install knapsack --no-document
Successfully installed knapsack-4.0.0
1 gem installed
==> 'gem install knapsack --no-document' succeeded in 1 seconds.
$ section_start "gitaly-test-spawn" "Spawning Gitaly"; scripts/gitaly-test-spawn; section_end "gitaly-test-spawn"
section_start:1708471112: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:1708471115: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_parallelized_job "--fail-fast=${RSPEC_FAIL_FAST_THRESHOLD} --tag ~quarantine --tag ~level:background_migration --tag ~click_house --tag ~real_ai_request"
[23:18:37] 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_4_32_278964_report.json
FLAKY_RSPEC_SUITE_REPORT_PATH: rspec/flaky/report-suite.json
FLAKY_RSPEC_REPORT_PATH: rspec/flaky/all_rspec_unit_pg14_4_32_278964_report.json
NEW_FLAKY_RSPEC_REPORT_PATH: rspec/flaky/new_rspec_unit_pg14_4_32_278964_report.json
RSPEC_SKIPPED_TESTS_REPORT_PATH: rspec/skipped_tests-6218670763.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...
spec/tasks/gitlab/db/decomposition/migrate_rake_spec.rb not found in master report
RSpec suite is expected to take 43 minutes 45.02 seconds.
Expected duration for tests:

{
  "spec/lib/gitlab/middleware/path_traversal_check_spec.rb": 871.0792757919313,
  "spec/lib/gitlab/diff/position_tracer/line_strategy_spec.rb": 84.4378953002386,
  "spec/lib/gitlab/background_migration/fix_vulnerability_reads_has_issues_spec.rb": 76.59130638010527,
  "spec/lib/gitlab/sidekiq_middleware/server_metrics_spec.rb": 71.1950087804981,
  "spec/services/projects/fork_service_spec.rb": 60.86119308491864,
  "spec/finders/packages/group_packages_finder_spec.rb": 53.461824532863965,
  "spec/models/hooks/web_hook_spec.rb": 48.171700857538845,
  "spec/services/work_items/update_service_spec.rb": 43.63417607857556,
  "spec/lib/gitlab/pagination/offset_pagination_spec.rb": 39.63123981318325,
  "spec/lib/gitlab/closing_issue_extractor_spec.rb": 36.931537265876635,
  "spec/models/design_management/version_spec.rb": 34.66278668043246,
  "spec/lib/gitlab/diff/file_collection/merge_request_diff_batch_spec.rb": 32.38294031807527,
  "spec/policies/project_snippet_policy_spec.rb": 30.635498555486713,
  "spec/helpers/emails_helper_spec.rb": 29.172214337678618,
  "spec/graphql/mutations/merge_requests/set_locked_spec.rb": 27.57172943566649,
  "spec/helpers/diff_helper_spec.rb": 26.6591649987035,
  "spec/models/application_record_spec.rb": 25.431779186148983,
  "spec/lib/banzai/reference_parser/user_parser_spec.rb": 24.05546817339586,
  "spec/lib/gitlab/github_import/importer/pull_request_importer_spec.rb": 23.16153996297151,
  "spec/lib/gitlab/ci/templates/npm_spec.rb": 22.422762581821083,
  "spec/models/concerns/chronic_duration_attribute_spec.rb": 21.5633115365843,
  "spec/models/concerns/pg_full_text_searchable_spec.rb": 20.91531644596415,
  "spec/services/auto_merge_service_spec.rb": 20.090364937162093,
  "spec/services/projects/update_remote_mirror_service_spec.rb": 19.444126134754267,
  "spec/lib/gitlab/ci/config/entry/need_spec.rb": 18.66904535050512,
  "spec/services/auto_merge/merge_when_pipeline_succeeds_service_spec.rb": 18.00835400848495,
  "spec/models/container_expiration_policy_spec.rb": 17.35137229793724,
  "spec/graphql/mutations/discussions/toggle_resolve_spec.rb": 16.73415499316888,
  "spec/lib/gitlab/sql/pattern_spec.rb": 16.248550372983125,
  "spec/helpers/auth_helper_spec.rb": 15.843614325057786,
  "spec/serializers/diff_file_entity_spec.rb": 15.476356972036992,
  "spec/lib/gitlab/slash_commands/command_spec.rb": 14.966594038503148,
  "spec/rubocop/cop/rspec/misspelled_aggregate_failures_spec.rb": 14.542208559242063,
  "spec/lib/banzai/filter/references/feature_flag_reference_filter_spec.rb": 14.070809650195535,
  "spec/services/projects/operations/update_service_spec.rb": 13.756993208839805,
  "spec/models/ci/build_trace_chunks/fog_spec.rb": 13.406270429775205,
  "spec/lib/gitlab/tracking_spec.rb": 13.009458779466309,
  "spec/lib/banzai/pipeline/gfm_pipeline_spec.rb": 12.573875194343714,
  "spec/tasks/gitlab/artifacts/migrate_rake_spec.rb": 12.214835535307643,
  "spec/lib/gitlab/observability_spec.rb": 11.983599427908363,
  "spec/models/ci_platform_metric_spec.rb": 11.628724691841759,
  "spec/models/protected_branch/merge_access_level_spec.rb": 11.42968180567392,
  "spec/lib/gitlab/ci/status/build/retryable_spec.rb": 11.154084337282372,
  "spec/lib/gitlab/ci/build/context/global_spec.rb": 10.860980849599652,
  "spec/lib/gitlab_settings/options_spec.rb": 10.61473698765979,
  "spec/services/security/ci_configuration/secret_detection_create_service_spec.rb": 10.412584541016974,
  "spec/lib/gitlab/sidekiq_middleware/client_metrics_spec.rb": 10.115668392701302,
  "spec/lib/banzai/reference_redactor_spec.rb": 9.949125280484868,
  "spec/models/integrations/redmine_spec.rb": 9.717584071081784,
  "spec/finders/packages/maven/package_finder_spec.rb": 9.498242475379996,
  "spec/services/git/base_hooks_service_spec.rb": 9.231009417383188,
  "spec/helpers/badges_helper_spec.rb": 9.07567558307512,
  "spec/models/group_group_link_spec.rb": 8.89023273320187,
  "spec/services/projects/container_repository/cleanup_tags_service_spec.rb": 8.716691080317922,
  "spec/models/prometheus_alert_spec.rb": 8.49598809214038,
  "spec/db/docs_spec.rb": 8.27556825603032,
  "spec/lib/gitlab/internal_events_spec.rb": 8.18215317914214,
  "spec/components/pajamas/badge_component_spec.rb": 7.995585072197411,
  "spec/lib/bulk_imports/projects/pipelines/issues_pipeline_spec.rb": 7.901354039925606,
  "spec/lib/sidebars/groups/menus/settings_menu_spec.rb": 7.778277368720552,
  "spec/models/board_group_recent_visit_spec.rb": 7.5640665019439135,
  "spec/services/projects/group_links/update_service_spec.rb": 7.482614487057503,
  "spec/services/markup/rendering_service_spec.rb": 7.2645146356706345,
  "spec/lib/banzai/filter/asset_proxy_filter_spec.rb": 7.208961065953688,
  "spec/lib/gitlab/database/partitioning/monthly_strategy_spec.rb": 7.0422391255330234,
  "spec/lib/gitlab/gl_repository/identifier_spec.rb": 6.918046220895774,
  "spec/db/production/settings_spec.rb": 6.790661816234536,
  "spec/services/milestones/find_or_create_service_spec.rb": 6.705329209582877,
  "spec/lib/api/entities/project_import_status_spec.rb": 6.595085164993904,
  "spec/finders/releases/evidence_pipeline_finder_spec.rb": 6.422681796577871,
  "spec/lib/gitlab/ci/config/entry/port_spec.rb": 6.3477778043543,
  "spec/tooling/lib/tooling/mappings/partial_to_views_mappings_spec.rb": 6.276771247999775,
  "spec/rubocop/cop/rspec/factory_bot/inline_association_spec.rb": 6.118066848874099,
  "spec/sidekiq_cluster/sidekiq_cluster_spec.rb": 5.985135284298976,
  "spec/models/packages/npm/metadatum_spec.rb": 5.97494172831864,
  "spec/graphql/mutations/alert_management/update_alert_status_spec.rb": 5.821601702431439,
  "spec/workers/projects/inactive_projects_deletion_cron_worker_spec.rb": 5.806551906262453,
  "spec/services/work_items/callbacks/description_spec.rb": 5.669251703021816,
  "spec/lib/gitlab/ci/pipeline/expression/lexeme/not_matches_spec.rb": 5.592610442853056,
  "spec/models/concerns/bulk_insertable_associations_spec.rb": 5.540507309529593,
  "spec/models/ci/artifact_blob_spec.rb": 5.443474295051715,
  "spec/views/projects/diffs/_viewer.html.haml_spec.rb": 5.2967613880555,
  "spec/lib/gitlab/database/load_balancing/rack_middleware_spec.rb": 5.273544724628165,
  "spec/tasks/gitlab/feature_categories_rake_spec.rb": 5.139694644583631,
  "spec/policies/clusters/agents/activity_event_policy_spec.rb": 5.125180616228098,
  "spec/lib/bitbucket_server/connection_spec.rb": 4.995120034764729,
  "spec/lib/gitlab/harbor/client_spec.rb": 4.962132641800909,
  "spec/graphql/mutations/security/ci_configuration/configure_sast_iac_spec.rb": 4.879876308085332,
  "spec/graphql/mutations/users/set_namespace_commit_email_spec.rb": 4.750761753713368,
  "spec/models/users_statistics_spec.rb": 4.717534354192566,
  "spec/services/security/ci_configuration/sast_parser_service_spec.rb": 4.629308420794442,
  "spec/lib/gitlab/database/reindexing/reindex_concurrently_spec.rb": 4.597201219587021,
  "spec/graphql/resolvers/clusters/agent_tokens_resolver_spec.rb": 4.5022206778085625,
  "spec/models/merge_request_reviewer_spec.rb": 4.456915539029682,
  "spec/lib/banzai/pipeline/incident_management/timeline_event_pipeline_spec.rb": 4.340917629822661,
  "spec/workers/integrations/group_mention_worker_spec.rb": 4.317235317051098,
  "spec/lib/json_web_token/rsa_token_spec.rb": 4.254275080481662,
  "spec/lib/gitlab/github_import/importer/attachments/issues_importer_spec.rb": 4.2161958907148795,
  "spec/rubocop/cop/graphql/id_type_spec.rb": 4.154307491307474,
  "spec/models/packages/rpm/repository_file_spec.rb": 4.100977485846613,
  "spec/graphql/mutations/todos/restore_spec.rb": 4.035018802432601,
  "spec/services/packages/debian/create_package_file_service_spec.rb": 3.981934389848732,
  "spec/lib/gitlab/external_authorization/client_spec.rb": 3.943094984982248,
  "spec/support_specs/matchers/exceed_query_limit_helpers_spec.rb": 3.884056774411794,
  "spec/lib/gitlab/ci/config/entry/include/rules_spec.rb": 3.8380098715771847,
  "spec/lib/gitlab/ci/config/yaml/tags/reference_spec.rb": 3.7828876026536613,
  "spec/graphql/resolvers/container_repository_tags_resolver_spec.rb": 3.748953807483342,
  "spec/graphql/resolvers/ci/group_runners_resolver_spec.rb": 3.6946429654604502,
  "spec/lib/gitlab/jira_import/issues_importer_spec.rb": 3.6597321313269946,
  "spec/models/snippet_input_action_collection_spec.rb": 3.609941752130468,
  "spec/lib/gitlab/database/background_migration/batched_job_transition_log_spec.rb": 3.560736524575489,
  "spec/models/abuse/user_trust_score_spec.rb": 3.5004178577338454,
  "spec/lib/sbom/package_url/normalizer_spec.rb": 3.4587995706339916,
  "spec/workers/update_highest_role_worker_spec.rb": 3.3995077886030414,
  "spec/graphql/resolvers/projects/services_resolver_spec.rb": 3.3769727314391798,
  "spec/lib/gitlab/analytics/usage_trends/workers_argument_builder_spec.rb": 3.3518879794347267,
  "spec/workers/authorized_project_update/user_refresh_from_replica_worker_spec.rb": 3.272294511061344,
  "spec/services/work_items/callbacks/notifications_spec.rb": 3.247781897840798,
  "spec/lib/gitlab/hook_data/project_member_builder_spec.rb": 3.1945378358832968,
  "spec/services/personal_access_tokens/rotate_service_spec.rb": 3.1561511385784,
  "spec/graphql/resolvers/group_milestones_resolver_spec.rb": 3.1092953958645406,
  "spec/views/admin/sessions/new.html.haml_spec.rb": 3.0808213119353667,
  "spec/lib/gitlab/database/query_analyzers/prevent_set_operator_mismatch_spec.rb": 3.0326107777199836,
  "spec/workers/projects/delete_branch_worker_spec.rb": 3.0066015431118434,
  "spec/lib/gitlab/string_placeholder_replacer_spec.rb": 2.9639382825968346,
  "spec/lib/gitlab/database/partitioning/int_range_strategy_spec.rb": 2.9242867580480194,
  "spec/services/packages/composer/composer_json_service_spec.rb": 2.9020703505515155,
  "spec/graphql/types/container_repository_referrer_type_spec.rb": 2.8591426648655585,
  "spec/views/projects/settings/integrations/edit.html.haml_spec.rb": 2.8114899797903736,
  "spec/models/organizations/organization_detail_spec.rb": 2.790051482250864,
  "spec/validators/ip_address_validator_spec.rb": 2.7215199023551495,
  "spec/lib/gitlab/branch_push_merge_commit_analyzer_spec.rb": 2.70421536150602,
  "spec/support_specs/helpers/keyset_pagination_helpers_spec.rb": 2.65766481410328,
  "spec/services/branch_rules/update_service_spec.rb": 2.6355295461348938,
  "spec/lib/gitlab/ci/status/scheduled_spec.rb": 2.5731092344577258,
  "spec/services/saved_replies/create_service_spec.rb": 2.5694587024533373,
  "spec/tooling/lib/tooling/helpers/file_handler_spec.rb": 2.5189973099255054,
  "spec/graphql/resolvers/ml/model_detail_resolver_spec.rb": 2.502442416737598,
  "spec/presenters/packages/composer/packages_presenter_spec.rb": 2.4518850475387626,
  "spec/rubocop/cop/graphql/enum_values_spec.rb": 2.4325904618006597,
  "spec/services/award_emojis/copy_service_spec.rb": 2.393602220263399,
  "spec/lib/gitlab/code_navigation_path_spec.rb": 2.3500673837729473,
  "spec/services/projects/batch_open_issues_count_service_spec.rb": 2.3291718022011394,
  "spec/lib/gitlab/global_id/deprecations_spec.rb": 2.280404882395102,
  "spec/lib/bulk_imports/common/pipelines/entity_finisher_spec.rb": 2.264971855809086,
  "spec/services/terraform/states/trigger_destroy_service_spec.rb": 2.220264285719588,
  "spec/models/concerns/safely_change_column_default_spec.rb": 2.206503837706546,
  "spec/lib/bulk_imports/projects/pipelines/external_pull_requests_pipeline_spec.rb": 2.1526762846254384,
  "spec/rubocop/cop/rspec/factory_bot/local_static_assignment_spec.rb": 2.1505817129589264,
  "spec/rubocop/cop/gitlab/keys_first_and_values_first_spec.rb": 2.0996621428404794,
  "spec/workers/database/monitor_locked_tables_worker_spec.rb": 2.0865887098098854,
  "spec/services/ci/job_token_scope/add_group_or_project_service_spec.rb": 2.0310079627450084,
  "spec/components/pajamas/checkbox_tag_component_spec.rb": 2.011306967175322,
  "spec/config/smime_signature_settings_spec.rb": 1.9695387453783935,
  "spec/services/jira_connect_installations/destroy_service_spec.rb": 1.9420279182504168,
  "spec/bin/diagnostic_reports_uploader_spec.rb": 1.9166817442270425,
  "spec/lib/gitlab/usage/metrics/instrumentations/batched_background_migration_failed_jobs_metric_spec.rb": 1.8937261475074412,
  "spec/views/projects/merge_requests/creations/new.html.haml_spec.rb": 1.849378485717681,
  "spec/services/projects/readme_renderer_service_spec.rb": 1.836835596898275,
  "spec/components/pajamas/breadcrumb_component_spec.rb": 1.7998813155514326,
  "spec/lib/gitlab/ci/config/entry/id_token_spec.rb": 1.77304128393896,
  "spec/services/projects/forks_count_service_spec.rb": 1.745946725638416,
  "spec/lib/gitlab/usage/metrics/instrumentations/dormant_user_period_setting_metric_spec.rb": 1.724023411656082,
  "spec/finders/vs_code/settings/settings_finder_spec.rb": 1.6896288958882395,
  "spec/services/achievements/update_user_achievement_priorities_service_spec.rb": 1.656897048691101,
  "spec/workers/google_cloud/create_cloudsql_instance_worker_spec.rb": 1.6405695553857187,
  "spec/rubocop/cop/gitlab/event_store_subscriber_spec.rb": 1.6120696075197307,
  "spec/lib/gitlab/git/lfs_changes_spec.rb": 1.5843106675333518,
  "spec/serializers/ci/dag_stage_entity_spec.rb": 1.550267751608771,
  "spec/lib/gitlab/view/presenter/factory_spec.rb": 1.5491272893247292,
  "spec/presenters/packages/nuget/v2/service_index_presenter_spec.rb": 1.4970542561739257,
  "spec/graphql/resolvers/environments/nested_environments_resolver_spec.rb": 1.489133461925383,
  "spec/models/concerns/presentable_spec.rb": 1.4448943377731465,
  "spec/rubocop/cop/rspec/shared_groups_metadata_spec.rb": 1.4276908432328337,
  "spec/models/work_items/widgets/notifications_spec.rb": 1.3843580122607209,
  "spec/initializers/cookies_serializer_spec.rb": 1.3644960542433144,
  "spec/lib/gitlab/ci/mask_secret_spec.rb": 1.3300993989551637,
  "spec/lib/gitlab/usage_data_counters/source_code_counter_spec.rb": 1.3023804582179297,
  "spec/lib/generators/batched_background_migration/batched_background_migration_generator_spec.rb": 1.2784507812125154,
  "spec/graphql/resolvers/concerns/resolves_groups_spec.rb": 1.236575219687286,
  "spec/services/webauthn/authenticate_service_spec.rb": 1.2080930896980546,
  "spec/lib/gitlab/auth/blocked_user_tracker_spec.rb": 1.178132760088384,
  "spec/services/pages_domains/delete_service_spec.rb": 1.158132403676606,
  "spec/lib/gitlab/pagination/keyset/in_operator_optimization/strategies/order_values_loader_strategy_spec.rb": 1.1219813686174236,
  "spec/lib/gitlab/batch_worker_context_spec.rb": 1.0957579539291635,
  "spec/views/devise/confirmations/almost_there.html.haml_spec.rb": 1.0838979216541453,
  "spec/workers/update_external_pull_requests_worker_spec.rb": 1.060116153903709,
  "spec/lib/api/entities/ml/mlflow/search_runs_spec.rb": 1.0274469244420548,
  "spec/graphql/types/ci/config/group_type_spec.rb": 1.0180724839908217,
  "spec/graphql/resolvers/metrics/dashboards/annotation_resolver_spec.rb": 0.9825704688551529,
  "spec/initializers/rails_yaml_safe_load_spec.rb": 0.9802842841771557,
  "spec/lib/generators/gitlab/usage_metric_definition/redis_hll_generator_spec.rb": 0.9347746284771873,
  "spec/models/discussion_note_spec.rb": 0.9117339703893025,
  "spec/routing/notifications_routing_spec.rb": 0.8891772853381908,
  "spec/serializers/admin/reported_content_entity_spec.rb": 0.8627343362205842,
  "spec/lib/gitlab/memory/diagnostic_reports_logger_spec.rb": 0.8443972033606688,
  "spec/workers/gitlab/github_import/attachments/import_merge_request_worker_spec.rb": 0.8201367489112961,
  "spec/lib/sidebars/organizations/menus/scope_menu_spec.rb": 0.8040454214883137,
  "spec/graphql/types/issue_status_count_type_spec.rb": 0.7633770667985051,
  "spec/rubocop/cop/migration/with_lock_retries_with_change_spec.rb": 0.7568367972273446,
  "spec/graphql/types/projects/service_type_spec.rb": 0.7012091519876852,
  "spec/serializers/analytics/cycle_analytics/stage_entity_spec.rb": 0.681139826509245,
  "spec/graphql/types/tree/tree_entry_type_spec.rb": 0.6731955425167232,
  "spec/graphql/types/work_items/widgets/current_user_todos_input_type_spec.rb": 0.6615963136554258,
  "spec/graphql/types/issue_type_enum_spec.rb": 0.637227510758094,
  "spec/graphql/types/jira_import_type_spec.rb": 0.633106417449638,
  "spec/scripts/generate_failed_package_and_test_mr_message_spec.rb": 0.6086536155105644,
  "spec/graphql/types/ci_configuration/sast/ui_component_size_enum_spec.rb": 0.5989581406668154,
  "spec/lib/bulk_imports/groups/extractors/subgroups_extractor_spec.rb": 0.5832326699615745,
  "spec/views/layouts/_published_experiments.html.haml_spec.rb": 0.5682383586197637,
  "spec/lib/sidebars/uncategorized_menu_spec.rb": 0.5004000546524573,
  "spec/graphql/types/packages/maven/metadatum_type_spec.rb": 0.49381236267133305,
  "spec/lib/gitlab/nav/top_nav_menu_item_spec.rb": 0.45672587584213425,
  "spec/graphql/types/ci/pipeline_trigger_type_spec.rb": 0.44228111152207983,
  "spec/initializers/sidekiq_spec.rb": 0.4330126546981814,
  "spec/helpers/routing/packages_helper_spec.rb": 0.41511469223008896,
  "spec/lib/banzai/filter/html_entity_filter_spec.rb": 0.40917515863905296,
  "spec/rubocop/cop/gitlab/change_timezone_spec.rb": 0.39623479155327285,
  "spec/lib/gitlab/action_cable/request_store_callbacks_spec.rb": 0.3871932187872636
}

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-6218670763.json --format RspecJunitFormatter --out rspec/rspec-6218670763.xml --fail-fast=20 --tag ~quarantine --tag ~level:background_migration --tag ~click_house --tag ~real_ai_request -- spec/lib/gitlab/middleware/path_traversal_check_spec.rb spec/lib/gitlab/diff/position_tracer/line_strategy_spec.rb spec/lib/gitlab/background_migration/fix_vulnerability_reads_has_issues_spec.rb spec/lib/gitlab/sidekiq_middleware/server_metrics_spec.rb spec/services/projects/fork_service_spec.rb spec/finders/packages/group_packages_finder_spec.rb spec/models/hooks/web_hook_spec.rb spec/services/work_items/update_service_spec.rb spec/lib/gitlab/pagination/offset_pagination_spec.rb spec/lib/gitlab/closing_issue_extractor_spec.rb spec/models/design_management/version_spec.rb spec/lib/gitlab/diff/file_collection/merge_request_diff_batch_spec.rb spec/policies/project_snippet_policy_spec.rb spec/helpers/emails_helper_spec.rb spec/graphql/mutations/merge_requests/set_locked_spec.rb spec/helpers/diff_helper_spec.rb spec/models/application_record_spec.rb spec/lib/banzai/reference_parser/user_parser_spec.rb spec/lib/gitlab/github_import/importer/pull_request_importer_spec.rb spec/lib/gitlab/ci/templates/npm_spec.rb spec/models/concerns/chronic_duration_attribute_spec.rb spec/models/concerns/pg_full_text_searchable_spec.rb spec/services/auto_merge_service_spec.rb spec/services/projects/update_remote_mirror_service_spec.rb spec/lib/gitlab/ci/config/entry/need_spec.rb spec/services/auto_merge/merge_when_pipeline_succeeds_service_spec.rb spec/models/container_expiration_policy_spec.rb spec/graphql/mutations/discussions/toggle_resolve_spec.rb spec/lib/gitlab/sql/pattern_spec.rb spec/helpers/auth_helper_spec.rb spec/serializers/diff_file_entity_spec.rb spec/lib/gitlab/slash_commands/command_spec.rb spec/rubocop/cop/rspec/misspelled_aggregate_failures_spec.rb spec/lib/banzai/filter/references/feature_flag_reference_filter_spec.rb spec/services/projects/operations/update_service_spec.rb spec/models/ci/build_trace_chunks/fog_spec.rb spec/lib/gitlab/tracking_spec.rb spec/lib/banzai/pipeline/gfm_pipeline_spec.rb spec/tasks/gitlab/artifacts/migrate_rake_spec.rb spec/lib/gitlab/observability_spec.rb spec/models/ci_platform_metric_spec.rb spec/models/protected_branch/merge_access_level_spec.rb spec/lib/gitlab/ci/status/build/retryable_spec.rb spec/lib/gitlab/ci/build/context/global_spec.rb spec/lib/gitlab_settings/options_spec.rb spec/services/security/ci_configuration/secret_detection_create_service_spec.rb spec/lib/gitlab/sidekiq_middleware/client_metrics_spec.rb spec/lib/banzai/reference_redactor_spec.rb spec/models/integrations/redmine_spec.rb spec/finders/packages/maven/package_finder_spec.rb spec/services/git/base_hooks_service_spec.rb spec/helpers/badges_helper_spec.rb spec/models/group_group_link_spec.rb spec/services/projects/container_repository/cleanup_tags_service_spec.rb spec/models/prometheus_alert_spec.rb spec/db/docs_spec.rb spec/lib/gitlab/internal_events_spec.rb spec/components/pajamas/badge_component_spec.rb spec/lib/bulk_imports/projects/pipelines/issues_pipeline_spec.rb spec/lib/sidebars/groups/menus/settings_menu_spec.rb spec/models/board_group_recent_visit_spec.rb spec/services/projects/group_links/update_service_spec.rb spec/services/markup/rendering_service_spec.rb spec/lib/banzai/filter/asset_proxy_filter_spec.rb spec/lib/gitlab/database/partitioning/monthly_strategy_spec.rb spec/lib/gitlab/gl_repository/identifier_spec.rb spec/db/production/settings_spec.rb spec/services/milestones/find_or_create_service_spec.rb spec/lib/api/entities/project_import_status_spec.rb spec/finders/releases/evidence_pipeline_finder_spec.rb spec/lib/gitlab/ci/config/entry/port_spec.rb spec/tooling/lib/tooling/mappings/partial_to_views_mappings_spec.rb spec/rubocop/cop/rspec/factory_bot/inline_association_spec.rb spec/sidekiq_cluster/sidekiq_cluster_spec.rb spec/models/packages/npm/metadatum_spec.rb spec/graphql/mutations/alert_management/update_alert_status_spec.rb spec/workers/projects/inactive_projects_deletion_cron_worker_spec.rb spec/services/work_items/callbacks/description_spec.rb spec/lib/gitlab/ci/pipeline/expression/lexeme/not_matches_spec.rb spec/models/concerns/bulk_insertable_associations_spec.rb spec/models/ci/artifact_blob_spec.rb spec/views/projects/diffs/_viewer.html.haml_spec.rb spec/lib/gitlab/database/load_balancing/rack_middleware_spec.rb spec/tasks/gitlab/feature_categories_rake_spec.rb spec/policies/clusters/agents/activity_event_policy_spec.rb spec/lib/bitbucket_server/connection_spec.rb spec/lib/gitlab/harbor/client_spec.rb spec/graphql/mutations/security/ci_configuration/configure_sast_iac_spec.rb spec/graphql/mutations/users/set_namespace_commit_email_spec.rb spec/models/users_statistics_spec.rb spec/services/security/ci_configuration/sast_parser_service_spec.rb spec/lib/gitlab/database/reindexing/reindex_concurrently_spec.rb spec/graphql/resolvers/clusters/agent_tokens_resolver_spec.rb spec/models/merge_request_reviewer_spec.rb spec/lib/banzai/pipeline/incident_management/timeline_event_pipeline_spec.rb spec/workers/integrations/group_mention_worker_spec.rb spec/lib/json_web_token/rsa_token_spec.rb spec/lib/gitlab/github_import/importer/attachments/issues_importer_spec.rb spec/rubocop/cop/graphql/id_type_spec.rb spec/models/packages/rpm/repository_file_spec.rb spec/graphql/mutations/todos/restore_spec.rb spec/services/packages/debian/create_package_file_service_spec.rb spec/lib/gitlab/external_authorization/client_spec.rb spec/support_specs/matchers/exceed_query_limit_helpers_spec.rb spec/lib/gitlab/ci/config/entry/include/rules_spec.rb spec/lib/gitlab/ci/config/yaml/tags/reference_spec.rb spec/graphql/resolvers/container_repository_tags_resolver_spec.rb spec/graphql/resolvers/ci/group_runners_resolver_spec.rb spec/lib/gitlab/jira_import/issues_importer_spec.rb spec/models/snippet_input_action_collection_spec.rb spec/lib/gitlab/database/background_migration/batched_job_transition_log_spec.rb spec/models/abuse/user_trust_score_spec.rb spec/lib/sbom/package_url/normalizer_spec.rb spec/workers/update_highest_role_worker_spec.rb spec/graphql/resolvers/projects/services_resolver_spec.rb spec/lib/gitlab/analytics/usage_trends/workers_argument_builder_spec.rb spec/workers/authorized_project_update/user_refresh_from_replica_worker_spec.rb spec/services/work_items/callbacks/notifications_spec.rb spec/lib/gitlab/hook_data/project_member_builder_spec.rb spec/services/personal_access_tokens/rotate_service_spec.rb spec/graphql/resolvers/group_milestones_resolver_spec.rb spec/views/admin/sessions/new.html.haml_spec.rb spec/lib/gitlab/database/query_analyzers/prevent_set_operator_mismatch_spec.rb spec/workers/projects/delete_branch_worker_spec.rb spec/lib/gitlab/string_placeholder_replacer_spec.rb spec/lib/gitlab/database/partitioning/int_range_strategy_spec.rb spec/services/packages/composer/composer_json_service_spec.rb spec/graphql/types/container_repository_referrer_type_spec.rb spec/views/projects/settings/integrations/edit.html.haml_spec.rb spec/models/organizations/organization_detail_spec.rb spec/validators/ip_address_validator_spec.rb spec/lib/gitlab/branch_push_merge_commit_analyzer_spec.rb spec/support_specs/helpers/keyset_pagination_helpers_spec.rb spec/services/branch_rules/update_service_spec.rb spec/lib/gitlab/ci/status/scheduled_spec.rb spec/services/saved_replies/create_service_spec.rb spec/tooling/lib/tooling/helpers/file_handler_spec.rb spec/graphql/resolvers/ml/model_detail_resolver_spec.rb spec/presenters/packages/composer/packages_presenter_spec.rb spec/rubocop/cop/graphql/enum_values_spec.rb spec/services/award_emojis/copy_service_spec.rb spec/lib/gitlab/code_navigation_path_spec.rb spec/services/projects/batch_open_issues_count_service_spec.rb spec/lib/gitlab/global_id/deprecations_spec.rb spec/lib/bulk_imports/common/pipelines/entity_finisher_spec.rb spec/services/terraform/states/trigger_destroy_service_spec.rb spec/models/concerns/safely_change_column_default_spec.rb spec/lib/bulk_imports/projects/pipelines/external_pull_requests_pipeline_spec.rb spec/rubocop/cop/rspec/factory_bot/local_static_assignment_spec.rb spec/rubocop/cop/gitlab/keys_first_and_values_first_spec.rb spec/workers/database/monitor_locked_tables_worker_spec.rb spec/services/ci/job_token_scope/add_group_or_project_service_spec.rb spec/components/pajamas/checkbox_tag_component_spec.rb spec/config/smime_signature_settings_spec.rb spec/services/jira_connect_installations/destroy_service_spec.rb spec/bin/diagnostic_reports_uploader_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/batched_background_migration_failed_jobs_metric_spec.rb spec/views/projects/merge_requests/creations/new.html.haml_spec.rb spec/services/projects/readme_renderer_service_spec.rb spec/components/pajamas/breadcrumb_component_spec.rb spec/lib/gitlab/ci/config/entry/id_token_spec.rb spec/services/projects/forks_count_service_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/dormant_user_period_setting_metric_spec.rb spec/finders/vs_code/settings/settings_finder_spec.rb spec/services/achievements/update_user_achievement_priorities_service_spec.rb spec/workers/google_cloud/create_cloudsql_instance_worker_spec.rb spec/rubocop/cop/gitlab/event_store_subscriber_spec.rb spec/lib/gitlab/git/lfs_changes_spec.rb spec/serializers/ci/dag_stage_entity_spec.rb spec/lib/gitlab/view/presenter/factory_spec.rb spec/presenters/packages/nuget/v2/service_index_presenter_spec.rb spec/graphql/resolvers/environments/nested_environments_resolver_spec.rb spec/models/concerns/presentable_spec.rb spec/rubocop/cop/rspec/shared_groups_metadata_spec.rb spec/models/work_items/widgets/notifications_spec.rb spec/initializers/cookies_serializer_spec.rb spec/lib/gitlab/ci/mask_secret_spec.rb spec/lib/gitlab/usage_data_counters/source_code_counter_spec.rb spec/lib/generators/batched_background_migration/batched_background_migration_generator_spec.rb spec/graphql/resolvers/concerns/resolves_groups_spec.rb spec/services/webauthn/authenticate_service_spec.rb spec/lib/gitlab/auth/blocked_user_tracker_spec.rb spec/services/pages_domains/delete_service_spec.rb spec/lib/gitlab/pagination/keyset/in_operator_optimization/strategies/order_values_loader_strategy_spec.rb spec/lib/gitlab/batch_worker_context_spec.rb spec/views/devise/confirmations/almost_there.html.haml_spec.rb spec/workers/update_external_pull_requests_worker_spec.rb spec/lib/api/entities/ml/mlflow/search_runs_spec.rb spec/graphql/types/ci/config/group_type_spec.rb spec/graphql/resolvers/metrics/dashboards/annotation_resolver_spec.rb spec/initializers/rails_yaml_safe_load_spec.rb spec/lib/generators/gitlab/usage_metric_definition/redis_hll_generator_spec.rb spec/models/discussion_note_spec.rb spec/routing/notifications_routing_spec.rb spec/serializers/admin/reported_content_entity_spec.rb spec/lib/gitlab/memory/diagnostic_reports_logger_spec.rb spec/workers/gitlab/github_import/attachments/import_merge_request_worker_spec.rb spec/lib/sidebars/organizations/menus/scope_menu_spec.rb spec/graphql/types/issue_status_count_type_spec.rb spec/rubocop/cop/migration/with_lock_retries_with_change_spec.rb spec/graphql/types/projects/service_type_spec.rb spec/serializers/analytics/cycle_analytics/stage_entity_spec.rb spec/graphql/types/tree/tree_entry_type_spec.rb spec/graphql/types/work_items/widgets/current_user_todos_input_type_spec.rb spec/graphql/types/issue_type_enum_spec.rb spec/graphql/types/jira_import_type_spec.rb spec/scripts/generate_failed_package_and_test_mr_message_spec.rb spec/graphql/types/ci_configuration/sast/ui_component_size_enum_spec.rb spec/lib/bulk_imports/groups/extractors/subgroups_extractor_spec.rb spec/views/layouts/_published_experiments.html.haml_spec.rb spec/lib/sidebars/uncategorized_menu_spec.rb spec/graphql/types/packages/maven/metadatum_type_spec.rb spec/lib/gitlab/nav/top_nav_menu_item_spec.rb spec/graphql/types/ci/pipeline_trigger_type_spec.rb spec/initializers/sidekiq_spec.rb spec/helpers/routing/packages_helper_spec.rb spec/lib/banzai/filter/html_entity_filter_spec.rb spec/rubocop/cop/gitlab/change_timezone_spec.rb spec/lib/gitlab/action_cable/request_store_callbacks_spec.rb spec/tasks/gitlab/db/decomposition/migrate_rake_spec.rbKnapsack report generator started!
Run options: exclude {:quarantine=>true, :level=>"background_migration", :click_house=>true, :real_ai_request=>true}

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

Test environment set up in 1.235241261 seconds
# [RSpecRunTime] Starting example group spec/lib/gitlab/middleware/path_traversal_check_spec.rb. Expected to take 14 minutes 31.08 seconds.

Gitlab::Middleware::PathTraversalCheck
  #call
    when using get
      path: "/foo/bar", query_params: {}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo/../bar", query_params: {}, shared_example_name: "path traversal"
        behaves like path traversal
          logs the problem and measures the execution time
          with log_execution_time_path_traversal_middleware disabled
            logs the problem without the execution time
      path: "/foo%2Fbar", query_params: {}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo%2F..%2Fbar", query_params: {}, shared_example_name: "path traversal"
        behaves like path traversal
          logs the problem and measures the execution time
          with log_execution_time_path_traversal_middleware disabled
            logs the problem without the execution time
      path: "/foo%252F..%252Fbar", query_params: {}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo/bar", query_params: {:x=>"foo"}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo/bar", query_params: {:x=>"foo/../bar"}, shared_example_name: "path traversal"
        behaves like path traversal
          logs the problem and measures the execution time
          with log_execution_time_path_traversal_middleware disabled
            logs the problem without the execution time
      path: "/foo/bar", query_params: {:x=>"foo%2Fbar"}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo/bar", query_params: {:x=>"foo%2F..%2Fbar"}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo/bar", query_params: {:x=>"foo%252F..%252Fbar"}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo%2F..%2Fbar", query_params: {:x=>"foo%252F..%252Fbar"}, shared_example_name: "path traversal"
        behaves like path traversal
          logs the problem and measures the execution time
          with log_execution_time_path_traversal_middleware disabled
            logs the problem without the execution time
      for global search excluded paths
        for excluded path /search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest with query params {:x=>"foo/../bar"}
          behaves like path traversal
            logs the problem and measures the execution time
            with log_execution_time_path_traversal_middleware disabled
              logs the problem without the execution time
        for excluded path /search/count with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search/count with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search/count with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search/count with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search/count with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search/count with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest/count with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest/count with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest/count with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest/count with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest/count with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest/count with query params {:x=>"foo/../bar"}
          behaves like path traversal
            logs the problem and measures the execution time
            with log_execution_time_path_traversal_middleware disabled
              logs the problem without the execution time
        for excluded path /api/v4/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest with query params {:x=>"foo/../bar"}
          behaves like path traversal
            logs the problem and measures the execution time
            with log_execution_time_path_traversal_middleware disabled
              logs the problem without the execution time
        for excluded path /api/v4/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like path traversal
            logs the problem and measures the execution time
            with log_execution_time_path_traversal_middleware disabled
              logs the problem without the execution time
        for excluded path /api/v4/projects/4/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest with query params {:x=>"foo/../bar"}
          behaves like path traversal
            logs the problem and measures the execution time
            with log_execution_time_path_traversal_middleware disabled
              logs the problem without the execution time
        for excluded path /api/v4/projects/4/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like path traversal
            logs the problem and measures the execution time
            with log_execution_time_path_traversal_middleware disabled
              logs the problem without the execution time
        for excluded path /api/v4/projects/4/-/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest with query params {:x=>"foo/../bar"}
          behaves like path traversal
            logs the problem and measures the execution time
            with log_execution_time_path_traversal_middleware disabled
              logs the problem without the execution time
        for excluded path /api/v4/projects/4/-/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like path traversal
            logs the problem and measures the execution time
            with log_execution_time_path_traversal_middleware disabled
              logs the problem without the execution time
        for excluded path /api/v4/projects/my%2Fproject/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest with query params {:x=>"foo/../bar"}
          behaves like path traversal
            logs the problem and measures the execution time
            with log_execution_time_path_traversal_middleware disabled
              logs the problem without the execution time
        for excluded path /api/v4/projects/my%2Fproject/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like path traversal
            logs the problem and measures the execution time
            with log_execution_time_path_traversal_middleware disabled
              logs the problem without the execution time
        for excluded path /api/v4/projects/my%2Fproject/-/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest with query params {:x=>"foo/../bar"}
          behaves like path traversal
            logs the problem and measures the execution time
            with log_execution_time_path_traversal_middleware disabled
              logs the problem without the execution time
        for excluded path /api/v4/projects/my%2Fproject/-/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like path traversal
            logs the problem and measures the execution time
            with log_execution_time_path_traversal_middleware disabled
              logs the problem without the execution time
        for excluded path /api/v4/groups/4/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest with query params {:x=>"foo/../bar"}
          behaves like path traversal
            logs the problem and measures the execution time
            with log_execution_time_path_traversal_middleware disabled
              logs the problem without the execution time
        for excluded path /api/v4/groups/4/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like path traversal
            logs the problem and measures the execution time
            with log_execution_time_path_traversal_middleware disabled
              logs the problem without the execution time
        for excluded path /api/v4/groups/4/-/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest with query params {:x=>"foo/../bar"}
          behaves like path traversal
            logs the problem and measures the execution time
            with log_execution_time_path_traversal_middleware disabled
              logs the problem without the execution time
        for excluded path /api/v4/groups/4/-/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like path traversal
            logs the problem and measures the execution time
            with log_execution_time_path_traversal_middleware disabled
              logs the problem without the execution time
        for excluded path /api/v4/groups/my%2Fgroup/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest with query params {:x=>"foo/../bar"}
          behaves like path traversal
            logs the problem and measures the execution time
            with log_execution_time_path_traversal_middleware disabled
              logs the problem without the execution time
        for excluded path /api/v4/groups/my%2Fgroup/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like path traversal
            logs the problem and measures the execution time
            with log_execution_time_path_traversal_middleware disabled
              logs the problem without the execution time
        for excluded path /api/v4/groups/my%2Fgroup/-/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest with query params {:x=>"foo/../bar"}
          behaves like path traversal
            logs the problem and measures the execution time
            with log_execution_time_path_traversal_middleware disabled
              logs the problem without the execution time
        for excluded path /api/v4/groups/my%2Fgroup/-/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like path traversal
            logs the problem and measures the execution time
            with log_execution_time_path_traversal_middleware disabled
              logs the problem without the execution time
      with a issues search path
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
    when using post
      path: "/foo/bar", query_params: {}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo/../bar", query_params: {}, shared_example_name: "path traversal"
        behaves like path traversal
          logs the problem and measures the execution time
          with log_execution_time_path_traversal_middleware disabled
            logs the problem without the execution time
      path: "/foo%2Fbar", query_params: {}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo%2F..%2Fbar", query_params: {}, shared_example_name: "path traversal"
        behaves like path traversal
          logs the problem and measures the execution time
          with log_execution_time_path_traversal_middleware disabled
            logs the problem without the execution time
      path: "/foo%252F..%252Fbar", query_params: {}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo/bar", query_params: {:x=>"foo"}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo/bar", query_params: {:x=>"foo/../bar"}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo/bar", query_params: {:x=>"foo%2Fbar"}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo/bar", query_params: {:x=>"foo%2F..%2Fbar"}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo/bar", query_params: {:x=>"foo%252F..%252Fbar"}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo%2F..%2Fbar", query_params: {:x=>"foo%252F..%252Fbar"}, shared_example_name: "path traversal"
        behaves like path traversal
          logs the problem and measures the execution time
          with log_execution_time_path_traversal_middleware disabled
            logs the problem without the execution time
      for global search excluded paths
        for excluded path /search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search/count with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest/count with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search/count with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest/count with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search/count with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest/count with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search/count with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest/count with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search/count with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest/count with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search/count with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest/count with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
    when using put
      path: "/foo/bar", query_params: {}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo/../bar", query_params: {}, shared_example_name: "path traversal"
        behaves like path traversal
          logs the problem and measures the execution time
          with log_execution_time_path_traversal_middleware disabled
            logs the problem without the execution time
      path: "/foo%2Fbar", query_params: {}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo%2F..%2Fbar", query_params: {}, shared_example_name: "path traversal"
        behaves like path traversal
          logs the problem and measures the execution time
          with log_execution_time_path_traversal_middleware disabled
            logs the problem without the execution time
      path: "/foo%252F..%252Fbar", query_params: {}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo/bar", query_params: {:x=>"foo"}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo/bar", query_params: {:x=>"foo/../bar"}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo/bar", query_params: {:x=>"foo%2Fbar"}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo/bar", query_params: {:x=>"foo%2F..%2Fbar"}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo/bar", query_params: {:x=>"foo%252F..%252Fbar"}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo%2F..%2Fbar", query_params: {:x=>"foo%252F..%252Fbar"}, shared_example_name: "path traversal"
        behaves like path traversal
          logs the problem and measures the execution time
          with log_execution_time_path_traversal_middleware disabled
            logs the problem without the execution time
      for global search excluded paths
        for excluded path /search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search/count with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest/count with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search/count with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest/count with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search/count with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest/count with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search/count with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest/count with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search/count with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest/count with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search/count with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest/count with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
    when using post
      path: "/foo/bar", query_params: {}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo/../bar", query_params: {}, shared_example_name: "path traversal"
        behaves like path traversal
          logs the problem and measures the execution time
          with log_execution_time_path_traversal_middleware disabled
            logs the problem without the execution time
      path: "/foo%2Fbar", query_params: {}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo%2F..%2Fbar", query_params: {}, shared_example_name: "path traversal"
        behaves like path traversal
          logs the problem and measures the execution time
          with log_execution_time_path_traversal_middleware disabled
            logs the problem without the execution time
      path: "/foo%252F..%252Fbar", query_params: {}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo/bar", query_params: {:x=>"foo"}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo/bar", query_params: {:x=>"foo/../bar"}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo/bar", query_params: {:x=>"foo%2Fbar"}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo/bar", query_params: {:x=>"foo%2F..%2Fbar"}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo/bar", query_params: {:x=>"foo%252F..%252Fbar"}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo%2F..%2Fbar", query_params: {:x=>"foo%252F..%252Fbar"}, shared_example_name: "path traversal"
        behaves like path traversal
          logs the problem and measures the execution time
          with log_execution_time_path_traversal_middleware disabled
            logs the problem without the execution time
      for global search excluded paths
        for excluded path /search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search/count with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest/count with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search/count with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest/count with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search/count with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest/count with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search/count with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest/count with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search/count with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest/count with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search/count with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest/count with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
    when using delete
      path: "/foo/bar", query_params: {}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo/../bar", query_params: {}, shared_example_name: "path traversal"
        behaves like path traversal
          logs the problem and measures the execution time
          with log_execution_time_path_traversal_middleware disabled
            logs the problem without the execution time
      path: "/foo%2Fbar", query_params: {}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo%2F..%2Fbar", query_params: {}, shared_example_name: "path traversal"
        behaves like path traversal
          logs the problem and measures the execution time
          with log_execution_time_path_traversal_middleware disabled
            logs the problem without the execution time
      path: "/foo%252F..%252Fbar", query_params: {}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo/bar", query_params: {:x=>"foo"}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo/bar", query_params: {:x=>"foo/../bar"}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo/bar", query_params: {:x=>"foo%2Fbar"}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo/bar", query_params: {:x=>"foo%2F..%2Fbar"}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo/bar", query_params: {:x=>"foo%252F..%252Fbar"}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo%2F..%2Fbar", query_params: {:x=>"foo%252F..%252Fbar"}, shared_example_name: "path traversal"
        behaves like path traversal
          logs the problem and measures the execution time
          with log_execution_time_path_traversal_middleware disabled
            logs the problem without the execution time
      for global search excluded paths
        for excluded path /search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search/count with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest/count with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search/count with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest/count with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search/count with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest/count with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search/count with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest/count with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search/count with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest/count with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search/count with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest/count with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
    when using patch
      path: "/foo/bar", query_params: {}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo/../bar", query_params: {}, shared_example_name: "path traversal"
        behaves like path traversal
          logs the problem and measures the execution time
          with log_execution_time_path_traversal_middleware disabled
            logs the problem without the execution time
      path: "/foo%2Fbar", query_params: {}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo%2F..%2Fbar", query_params: {}, shared_example_name: "path traversal"
        behaves like path traversal
          logs the problem and measures the execution time
          with log_execution_time_path_traversal_middleware disabled
            logs the problem without the execution time
      path: "/foo%252F..%252Fbar", query_params: {}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo/bar", query_params: {:x=>"foo"}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo/bar", query_params: {:x=>"foo/../bar"}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo/bar", query_params: {:x=>"foo%2Fbar"}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo/bar", query_params: {:x=>"foo%2F..%2Fbar"}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo/bar", query_params: {:x=>"foo%252F..%252Fbar"}, shared_example_name: "no issue"
        behaves like no issue
          measures and logs the execution time
          with log_execution_time_path_traversal_middleware disabled
            does nothing
      path: "/foo%2F..%2Fbar", query_params: {:x=>"foo%252F..%252Fbar"}, shared_example_name: "path traversal"
        behaves like path traversal
          logs the problem and measures the execution time
          with log_execution_time_path_traversal_middleware disabled
            logs the problem without the execution time
      for global search excluded paths
        for excluded path /search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search/count with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest/count with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search/count with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest/count with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search/count with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest/count with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search/count with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest/count with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search/count with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest/count with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /search/count with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /searchtest/count with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/4/-/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/4/-/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/projects/my%2Fproject/-/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/projects/my%2Fproject/-/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/4/-/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/4/-/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search.json with query params {}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest.json with query params {}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search.json with query params {:x=>"foo"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest.json with query params {:x=>"foo"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest.json with query params {:x=>"foo%2F..%2Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest.json with query params {:x=>"foo%252F..%252Fbar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for excluded path /api/v4/groups/my%2Fgroup/-/search.json with query params {:x=>"foo/../bar"}
          behaves like excluded path
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
        for non excluded path /api/v4/groups/my%2Fgroup/-/searchtest.json with query params {:x=>"foo/../bar"}
          behaves like no issue
            measures and logs the execution time
            with log_execution_time_path_traversal_middleware disabled
              does nothing
    with check_path_traversal_middleware disabled
      path: "/foo/bar", query_params: {}
        when using get
          does not check for path traversals
        when using post
          does not check for path traversals
        when using put
          does not check for path traversals
        when using post
          does not check for path traversals
        when using delete
          does not check for path traversals
        when using patch
          does not check for path traversals
      path: "/foo/../bar", query_params: {}
        when using get
          does not check for path traversals
        when using post
          does not check for path traversals
        when using put
          does not check for path traversals
        when using post
          does not check for path traversals
        when using delete
          does not check for path traversals
        when using patch
          does not check for path traversals
      path: "/foo%2Fbar", query_params: {}
        when using get
          does not check for path traversals
        when using post
          does not check for path traversals
        when using put
          does not check for path traversals
        when using post
          does not check for path traversals
        when using delete
          does not check for path traversals
        when using patch
          does not check for path traversals
      path: "/foo%2F..%2Fbar", query_params: {}
        when using get
          does not check for path traversals
        when using post
          does not check for path traversals
        when using put
          does not check for path traversals
        when using post
          does not check for path traversals
        when using delete
          does not check for path traversals
        when using patch
          does not check for path traversals
      path: "/foo%252F..%252Fbar", query_params: {}
        when using get
          does not check for path traversals
        when using post
          does not check for path traversals
        when using put
          does not check for path traversals
        when using post
          does not check for path traversals
        when using delete
          does not check for path traversals
        when using patch
          does not check for path traversals
      path: "/foo/bar", query_params: {:x=>"foo"}
        when using get
          does not check for path traversals
        when using post
          does not check for path traversals
        when using put
          does not check for path traversals
        when using post
          does not check for path traversals
        when using delete
          does not check for path traversals
        when using patch
          does not check for path traversals
      path: "/foo/bar", query_params: {:x=>"foo/../bar"}
        when using get
          does not check for path traversals
        when using post
          does not check for path traversals
        when using put
          does not check for path traversals
        when using post
          does not check for path traversals
        when using delete
          does not check for path traversals
        when using patch
          does not check for path traversals
      path: "/foo/bar", query_params: {:x=>"foo%2Fbar"}
        when using get
          does not check for path traversals
        when using post
          does not check for path traversals
        when using put
          does not check for path traversals
        when using post
          does not check for path traversals
        when using delete
          does not check for path traversals
        when using patch
          does not check for path traversals
      path: "/foo/bar", query_params: {:x=>"foo%2F..%2Fbar"}
        when using get
          does not check for path traversals
        when using post
          does not check for path traversals
        when using put
          does not check for path traversals
        when using post
          does not check for path traversals
        when using delete
          does not check for path traversals
        when using patch
          does not check for path traversals
      path: "/foo/bar", query_params: {:x=>"foo%252F..%252Fbar"}
        when using get
          does not check for path traversals
        when using post
          does not check for path traversals
        when using put
          does not check for path traversals
        when using post
          does not check for path traversals
        when using delete
          does not check for path traversals
        when using patch
          does not check for path traversals
      path: "/search", query_params: {:x=>"foo/../bar"}
        when using get
          does not check for path traversals
        when using post
          does not check for path traversals
        when using put
          does not check for path traversals
        when using post
          does not check for path traversals
        when using delete
          does not check for path traversals
        when using patch
          does not check for path traversals
      path: "/search", query_params: {:x=>"foo%2F..%2Fbar"}
        when using get
          does not check for path traversals
        when using post
          does not check for path traversals
        when using put
          does not check for path traversals
        when using post
          does not check for path traversals
        when using delete
          does not check for path traversals
        when using patch
          does not check for path traversals
      path: "/search", query_params: {:x=>"foo%252F..%252Fbar"}
        when using get
          does not check for path traversals
        when using post
          does not check for path traversals
        when using put
          does not check for path traversals
        when using post
          does not check for path traversals
        when using delete
          does not check for path traversals
        when using patch
          does not check for path traversals
      path: "%2Fsearch", query_params: {:x=>"foo/../bar"}
        when using get
          does not check for path traversals
        when using post
          does not check for path traversals
        when using put
          does not check for path traversals
        when using post
          does not check for path traversals
        when using delete
          does not check for path traversals
        when using patch
          does not check for path traversals
      path: "%2Fsearch", query_params: {:x=>"foo%2F..%2Fbar"}
        when using get
          does not check for path traversals
        when using post
          does not check for path traversals
        when using put
          does not check for path traversals
        when using post
          does not check for path traversals
        when using delete
          does not check for path traversals
        when using patch
          does not check for path traversals
      path: "%2Fsearch", query_params: {:x=>"foo%252F..%252Fbar"}
        when using get
          does not check for path traversals
        when using post
          does not check for path traversals
        when using put
          does not check for path traversals
        when using post
          does not check for path traversals
        when using delete
          does not check for path traversals
        when using patch
          does not check for path traversals

# [RSpecRunTime] Finishing example group spec/lib/gitlab/middleware/path_traversal_check_spec.rb. It took 3 minutes 39.81 seconds. Expected to take 14 minutes 31.08 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/diff/position_tracer/line_strategy_spec.rb. Expected to take 1 minute 24.44 seconds.

Gitlab::Diff::PositionTracer::LineStrategy
  #trace
    diff scenarios
      when the file was created in the old diff
        when the file is created in the new diff
          when the position pointed at an added line in the old diff
            when the file's content was unchanged between the old and the new diff
              returns the new position
              when the position is multiline
                returns the new position along with line_range
# [RSpecRunTime] RSpec elapsed time: 3 minutes 46.95 seconds. Current RSS: ~1538M. load average: 1.10 1.17 1.37 1/288 533


            when the file's content was changed between the old and the new diff
              when that line was unchanged between the old and the new diff
                returns the new position
# [RSpecRunTime] RSpec elapsed time: 3 minutes 48.05 seconds. Current RSS: ~1544M. load average: 1.10 1.17 1.37 1/288 620


              when that line was moved between the old and the new diff
                returns the new position
# [RSpecRunTime] RSpec elapsed time: 3 minutes 49.29 seconds. Current RSS: ~1543M. load average: 1.17 1.19 1.37 1/287 743


              when that line was changed between the old and the new diff
                returns the position of the change
# [RSpecRunTime] RSpec elapsed time: 3 minutes 50.31 seconds. Current RSS: ~1546M. load average: 1.17 1.19 1.37 1/288 821


              when that line was deleted between the old and the new diff
                returns the position of the change
# [RSpecRunTime] RSpec elapsed time: 3 minutes 51.79 seconds. Current RSS: ~1557M. load average: 1.17 1.19 1.37 1/288 988


        when the file is changed in the new diff
          when the position pointed at an added line in the old diff
            when the file's content was unchanged between the old and the new diff
              returns the new position
# [RSpecRunTime] RSpec elapsed time: 3 minutes 52.95 seconds. Current RSS: ~1554M. load average: 1.17 1.19 1.37 1/288 1084


            when the file's content was changed between the old and the new diff
              when that line was unchanged between the old and the new diff
                returns the new position
# [RSpecRunTime] RSpec elapsed time: 3 minutes 54.32 seconds. Current RSS: ~1551M. load average: 1.08 1.17 1.37 1/289 1216


              when that line was moved between the old and the new diff
                returns the new position
# [RSpecRunTime] RSpec elapsed time: 3 minutes 56.99 seconds. Current RSS: ~1549M. load average: 1.08 1.17 1.37 1/289 1348


              when that line was changed between the old and the new diff
                returns the position of the change
# [RSpecRunTime] RSpec elapsed time: 3 minutes 58.1 seconds. Current RSS: ~1550M. load average: 1.08 1.17 1.37 1/289 1425


              when that line was deleted between the old and the new diff
                returns the position of the change
# [RSpecRunTime] RSpec elapsed time: 3 minutes 59.53 seconds. Current RSS: ~1555M. load average: 1.31 1.22 1.38 1/290 1592


        when the file is renamed in the new diff
          when the position pointed at an added line in the old diff
            when the file's content was unchanged between the old and the new diff
              returns the position of the change
              when the position is multiline
                returns the new position
# [RSpecRunTime] RSpec elapsed time: 4 minutes 3.05 seconds. Current RSS: ~1552M. load average: 1.31 1.22 1.38 1/291 2081


            when the file's content was changed between the old and the new diff
              when that line was unchanged between the old and the new diff
                returns the new position
# [RSpecRunTime] RSpec elapsed time: 4 minutes 4.88 seconds. Current RSS: ~1550M. load average: 1.37 1.23 1.38 1/291 2338


              when that line was moved between the old and the new diff
                returns the new position
# [RSpecRunTime] RSpec elapsed time: 4 minutes 7.05 seconds. Current RSS: ~1569M. load average: 1.37 1.23 1.38 1/291 2613


              when that line was changed between the old and the new diff
                returns the position of the change
# [RSpecRunTime] RSpec elapsed time: 4 minutes 8.94 seconds. Current RSS: ~1571M. load average: 1.34 1.23 1.38 1/291 2851


        when the file is deleted in the new diff
          when the position pointed at an added line in the old diff
            when the file's content was unchanged between the old and the new diff
              returns the position of the change
# [RSpecRunTime] RSpec elapsed time: 4 minutes 10.65 seconds. Current RSS: ~1577M. load average: 1.34 1.23 1.38 1/291 3053


            when the file's content was changed between the old and the new diff
              when that line was unchanged between the old and the new diff
                returns the position of the change
# [RSpecRunTime] RSpec elapsed time: 4 minutes 12.23 seconds. Current RSS: ~1575M. load average: 1.34 1.23 1.38 1/291 3255


              when that line was moved between the old and the new diff
                returns the position of the change
# [RSpecRunTime] RSpec elapsed time: 4 minutes 13.81 seconds. Current RSS: ~1575M. load average: 1.23 1.20 1.37 1/291 3457


              when that line was changed between the old and the new diff
                returns the position of the change
# [RSpecRunTime] RSpec elapsed time: 4 minutes 15.5 seconds. Current RSS: ~1576M. load average: 1.23 1.20 1.37 2/292 3660


              when that line was deleted between the old and the new diff
                returns the position of the change
# [RSpecRunTime] RSpec elapsed time: 4 minutes 17.32 seconds. Current RSS: ~1577M. load average: 1.23 1.20 1.37 1/292 3862


        when the file is unchanged in the new diff
          when the position pointed at an added line in the old diff
            when the file's content was unchanged between the old and the new diff
              returns the position of the change
# [RSpecRunTime] RSpec elapsed time: 4 minutes 18.41 seconds. Current RSS: ~1579M. load average: 1.23 1.20 1.37 1/292 3937


            when the file's content was changed between the old and the new diff
              when that line was unchanged between the old and the new diff
                returns the position of the change
# [RSpecRunTime] RSpec elapsed time: 4 minutes 19.59 seconds. Current RSS: ~1580M. load average: 1.21 1.20 1.37 1/292 4048


              when that line was moved between the old and the new diff
                returns the position of the change
# [RSpecRunTime] RSpec elapsed time: 4 minutes 21.14 seconds. Current RSS: ~1587M. load average: 1.21 1.20 1.37 1/292 4213


              when that line was changed between the old and the new diff
                returns the position of the change
# [RSpecRunTime] RSpec elapsed time: 4 minutes 22.37 seconds. Current RSS: ~1588M. load average: 1.21 1.20 1.37 1/292 4308


              when that line was deleted between the old and the new diff
                returns the position of the change
# [RSpecRunTime] RSpec elapsed time: 4 minutes 23.93 seconds. Current RSS: ~1589M. load average: 1.27 1.22 1.38 1/292 4493


      when the file was changed in the old diff
        when the file is created in the new diff
          when the position pointed at an added line in the old diff
            when the file's content was unchanged between the old and the new diff
              returns the new position
# [RSpecRunTime] RSpec elapsed time: 4 minutes 25.03 seconds. Current RSS: ~1591M. load average: 1.27 1.22 1.38 1/292 4580


            when the file's content was changed between the old and the new diff
              when that line was unchanged between the old and the new diff
                returns the new position
# [RSpecRunTime] RSpec elapsed time: 4 minutes 26.28 seconds. Current RSS: ~1590M. load average: 1.27 1.22 1.38 1/292 4703


              when that line was moved between the old and the new diff
                returns the new position
# [RSpecRunTime] RSpec elapsed time: 4 minutes 27.5 seconds. Current RSS: ~1591M. load average: 1.27 1.22 1.38 1/292 4826


              when that line was changed or deleted between the old and the new diff
                returns the position of the change
# [RSpecRunTime] RSpec elapsed time: 4 minutes 28.8 seconds. Current RSS: ~1590M. load average: 1.25 1.21 1.37 1/292 4939


          when the position pointed at a deleted line in the old diff
            returns the position of the change
# [RSpecRunTime] RSpec elapsed time: 4 minutes 29.93 seconds. Current RSS: ~1589M. load average: 1.25 1.21 1.37 1/292 5016


          when the position pointed at an unchanged line in the old diff
            when the file's content was unchanged between the old and the new diff
              returns the new position
# [RSpecRunTime] RSpec elapsed time: 4 minutes 30.99 seconds. Current RSS: ~1589M. load average: 1.25 1.21 1.37 1/292 5109


            when the file's content was changed between the old and the new diff
              when that line was unchanged between the old and the new diff
                returns the new position
# [RSpecRunTime] RSpec elapsed time: 4 minutes 32.26 seconds. Current RSS: ~1588M. load average: 1.25 1.21 1.37 2/292 5238


              when that line was moved between the old and the new diff
                returns the new position
# [RSpecRunTime] RSpec elapsed time: 4 minutes 33.84 seconds. Current RSS: ~1588M. load average: 1.23 1.21 1.37 1/292 5421


              when that line was changed or deleted between the old and the new diff
                returns the position of the change
# [RSpecRunTime] RSpec elapsed time: 4 minutes 35.37 seconds. Current RSS: ~1589M. load average: 1.23 1.21 1.37 1/292 5604


        when the file is changed in the new diff
          when the position pointed at an added line in the old diff
            when the file's content was unchanged between the old and the new diff
              returns the new position
# [RSpecRunTime] RSpec elapsed time: 4 minutes 36.61 seconds. Current RSS: ~1589M. load average: 1.23 1.21 1.37 1/292 5709


            when the file's content was changed between the old and the new diff
              when that line was unchanged between the old and the new diff
                returns the new position
# [RSpecRunTime] RSpec elapsed time: 4 minutes 38.15 seconds. Current RSS: ~1590M. load average: 1.23 1.21 1.37 1/292 5895


              when that line was moved between the old and the new diff
                returns the new position
# [RSpecRunTime] RSpec elapsed time: 4 minutes 39.42 seconds. Current RSS: ~1591M. load average: 1.29 1.22 1.37 1/292 6027


              when that line was changed or deleted between the old and the new diff
                returns the position of the change
# [RSpecRunTime] RSpec elapsed time: 4 minutes 40.61 seconds. Current RSS: ~1592M. load average: 1.29 1.22 1.37 1/292 6140


          when the position pointed at a deleted line in the old diff
            when the file's content was unchanged between the old and the new diff
              returns the new position
# [RSpecRunTime] RSpec elapsed time: 4 minutes 41.88 seconds. Current RSS: ~1592M. load average: 1.29 1.22 1.37 1/292 6245


    typical use scenarios
      simple push of new commit
        returns the new positions
# [RSpecRunTime] RSpec elapsed time: 4 minutes 43.19 seconds. Current RSS: ~1592M. load average: 1.29 1.22 1.37 1/292 6383


      force push to overwrite last commit
        returns the new positions
# [RSpecRunTime] RSpec elapsed time: 4 minutes 44.45 seconds. Current RSS: ~1595M. load average: 1.27 1.22 1.37 1/292 6503


      force push to delete last commit
        returns the new positions
# [RSpecRunTime] RSpec elapsed time: 4 minutes 45.8 seconds. Current RSS: ~1598M. load average: 1.27 1.22 1.37 1/292 6641


      rebase on top of target branch
        returns the new positions
# [RSpecRunTime] RSpec elapsed time: 4 minutes 47.32 seconds. Current RSS: ~1599M. load average: 1.27 1.22 1.37 1/292 6821


      merge of target branch
        returns the new positions
# [RSpecRunTime] RSpec elapsed time: 4 minutes 49.34 seconds. Current RSS: ~1599M. load average: 1.25 1.21 1.37 1/293 7005


      changing target branch
        returns the new positions
# [RSpecRunTime] RSpec elapsed time: 4 minutes 50.7 seconds. Current RSS: ~1592M. load average: 1.25 1.21 1.37 1/293 7149



# [RSpecRunTime] Finishing example group spec/lib/gitlab/diff/position_tracer/line_strategy_spec.rb. It took 1 minute 7.01 seconds. Expected to take 1 minute 24.44 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/sidekiq_middleware/server_metrics_spec.rb. Expected to take 1 minute 11.2 seconds.

Gitlab::SidekiqMiddleware::ServerMetrics
  behaves like metrics middleware with worker attribution
    when workers are not attributed
      behaves like a metrics middleware
        with mocked prometheus
          .initialize_process_metrics
            sets concurrency metrics
            initializes sidekiq_jobs_completion_seconds for the workers in the current Sidekiq process
            when emit_sidekiq_histogram FF is disabled
              does not initialize sidekiq_jobs_completion_seconds
# [RSpecRunTime] RSpec elapsed time: 4 minutes 52.58 seconds. Current RSS: ~1547M. load average: 1.25 1.21 1.37 1/292 7150


            initializing execution and queueing SLIs
              initializes the execution and queueing SLIs with labels
            when the sidekiq_job_completion_metric_initialize feature flag is disabled
              sets the concurrency metric
              does not initialize sidekiq_jobs_completion_seconds
              sidekiq execution SLIs
                behaves like not initializing sidekiq SLIs
                  does not initialize sidekiq SLIs
              sidekiq queueing SLIs
                behaves like not initializing sidekiq SLIs
                  does not initialize sidekiq SLIs
          #call
            yields block
            calls BackgroundTransaction
            sets queue specific metrics
            sets sidekiq_jobs_completion_seconds values that are compatible with those from .initialize_process_metrics
            sets the thread name if it was nil
            when job_duration is not available
              does not set the queue_duration_seconds histogram
            when error is raised
              sets sidekiq_jobs_failed_total and reraises
              records sidekiq SLI error but does not record sidekiq SLI apdex
            when job is retried
              sets sidekiq_jobs_retried_total metric
            when job is interrupted
              sets sidekiq_jobs_interrupted_total metric
        with prometheus integrated
          #call
            yields block
            when error is raised
              sets sidekiq_jobs_failed_total and reraises
    when a worker is wrapped into ActiveJob
      behaves like a metrics middleware
        with mocked prometheus
          .initialize_process_metrics
            sets concurrency metrics
            initializes sidekiq_jobs_completion_seconds for the workers in the current Sidekiq process
            when emit_sidekiq_histogram FF is disabled
              does not initialize sidekiq_jobs_completion_seconds
            initializing execution and queueing SLIs
              initializes the execution and queueing SLIs with labels
            when the sidekiq_job_completion_metric_initialize feature flag is disabled
              sets the concurrency metric
              does not initialize sidekiq_jobs_completion_seconds
              sidekiq execution SLIs
                behaves like not initializing sidekiq SLIs
                  does not initialize sidekiq SLIs
              sidekiq queueing SLIs
                behaves like not initializing sidekiq SLIs
                  does not initialize sidekiq SLIs
          #call
            yields block
            calls BackgroundTransaction
            sets queue specific metrics
            sets sidekiq_jobs_completion_seconds values that are compatible with those from .initialize_process_metrics
            sets the thread name if it was nil
            when job_duration is not available
              does not set the queue_duration_seconds histogram
            when error is raised
              sets sidekiq_jobs_failed_total and reraises
              records sidekiq SLI error but does not record sidekiq SLI apdex
            when job is retried
              sets sidekiq_jobs_retried_total metric
            when job is interrupted
              sets sidekiq_jobs_interrupted_total metric
        with prometheus integrated
          #call
            yields block
            when error is raised
              sets sidekiq_jobs_failed_total and reraises
    when workers are attributed
      high urgency
        behaves like a metrics middleware
          with mocked prometheus
            .initialize_process_metrics
              sets concurrency metrics
              initializes sidekiq_jobs_completion_seconds for the workers in the current Sidekiq process
              when emit_sidekiq_histogram FF is disabled
                does not initialize sidekiq_jobs_completion_seconds
              initializing execution and queueing SLIs
                initializes the execution and queueing SLIs with labels
              when the sidekiq_job_completion_metric_initialize feature flag is disabled
                sets the concurrency metric
                does not initialize sidekiq_jobs_completion_seconds
                sidekiq execution SLIs
                  behaves like not initializing sidekiq SLIs
                    does not initialize sidekiq SLIs
                sidekiq queueing SLIs
                  behaves like not initializing sidekiq SLIs
                    does not initialize sidekiq SLIs
            #call
              yields block
              calls BackgroundTransaction
              sets queue specific metrics
              sets sidekiq_jobs_completion_seconds values that are compatible with those from .initialize_process_metrics
              sets the thread name if it was nil
              when job_duration is not available
                does not set the queue_duration_seconds histogram
              when error is raised
                sets sidekiq_jobs_failed_total and reraises
                records sidekiq SLI error but does not record sidekiq SLI apdex
              when job is retried
                sets sidekiq_jobs_retried_total metric
              when job is interrupted
                sets sidekiq_jobs_interrupted_total metric
          with prometheus integrated
            #call
              yields block
              when error is raised
                sets sidekiq_jobs_failed_total and reraises
      no urgency
        behaves like a metrics middleware
          with mocked prometheus
            .initialize_process_metrics
              sets concurrency metrics
              initializes sidekiq_jobs_completion_seconds for the workers in the current Sidekiq process
              when emit_sidekiq_histogram FF is disabled
                does not initialize sidekiq_jobs_completion_seconds
              initializing execution and queueing SLIs
                initializes the execution and queueing SLIs with labels
              when the sidekiq_job_completion_metric_initialize feature flag is disabled
                sets the concurrency metric
                does not initialize sidekiq_jobs_completion_seconds
                sidekiq execution SLIs
                  behaves like not initializing sidekiq SLIs
                    does not initialize sidekiq SLIs
                sidekiq queueing SLIs
                  behaves like not initializing sidekiq SLIs
                    does not initialize sidekiq SLIs
            #call
              yields block
              calls BackgroundTransaction
              sets queue specific metrics
              sets sidekiq_jobs_completion_seconds values that are compatible with those from .initialize_process_metrics
              sets the thread name if it was nil
              when job_duration is not available
                does not set the queue_duration_seconds histogram
              when error is raised
                sets sidekiq_jobs_failed_total and reraises
                records sidekiq SLI error but does not record sidekiq SLI apdex
              when job is retried
                sets sidekiq_jobs_retried_total metric
              when job is interrupted
                sets sidekiq_jobs_interrupted_total metric
          with prometheus integrated
            #call
              yields block
              when error is raised
                sets sidekiq_jobs_failed_total and reraises
      external dependencies
        behaves like a metrics middleware
          with mocked prometheus
            .initialize_process_metrics
              sets concurrency metrics
              initializes sidekiq_jobs_completion_seconds for the workers in the current Sidekiq process
              when emit_sidekiq_histogram FF is disabled
                does not initialize sidekiq_jobs_completion_seconds
              initializing execution and queueing SLIs
                initializes the execution and queueing SLIs with labels
              when the sidekiq_job_completion_metric_initialize feature flag is disabled
                sets the concurrency metric
                does not initialize sidekiq_jobs_completion_seconds
                sidekiq execution SLIs
                  behaves like not initializing sidekiq SLIs
                    does not initialize sidekiq SLIs
                sidekiq queueing SLIs
                  behaves like not initializing sidekiq SLIs
                    does not initialize sidekiq SLIs
            #call
              yields block
              calls BackgroundTransaction
              sets queue specific metrics
              sets sidekiq_jobs_completion_seconds values that are compatible with those from .initialize_process_metrics
              sets the thread name if it was nil
              when job_duration is not available
                does not set the queue_duration_seconds histogram
              when error is raised
                sets sidekiq_jobs_failed_total and reraises
                records sidekiq SLI error but does not record sidekiq SLI apdex
              when job is retried
                sets sidekiq_jobs_retried_total metric
              when job is interrupted
                sets sidekiq_jobs_interrupted_total metric
          with prometheus integrated
            #call
              yields block
              when error is raised
                sets sidekiq_jobs_failed_total and reraises
      cpu boundary
        behaves like a metrics middleware
          with mocked prometheus
            .initialize_process_metrics
              sets concurrency metrics
              initializes sidekiq_jobs_completion_seconds for the workers in the current Sidekiq process
              when emit_sidekiq_histogram FF is disabled
                does not initialize sidekiq_jobs_completion_seconds
              initializing execution and queueing SLIs
                initializes the execution and queueing SLIs with labels
              when the sidekiq_job_completion_metric_initialize feature flag is disabled
                sets the concurrency metric
                does not initialize sidekiq_jobs_completion_seconds
                sidekiq execution SLIs
                  behaves like not initializing sidekiq SLIs
                    does not initialize sidekiq SLIs
                sidekiq queueing SLIs
                  behaves like not initializing sidekiq SLIs
                    does not initialize sidekiq SLIs
            #call
              yields block
              calls BackgroundTransaction
              sets queue specific metrics
              sets sidekiq_jobs_completion_seconds values that are compatible with those from .initialize_process_metrics
              sets the thread name if it was nil
              when job_duration is not available
                does not set the queue_duration_seconds histogram
              when error is raised
                sets sidekiq_jobs_failed_total and reraises
                records sidekiq SLI error but does not record sidekiq SLI apdex
              when job is retried
                sets sidekiq_jobs_retried_total metric
              when job is interrupted
                sets sidekiq_jobs_interrupted_total metric
          with prometheus integrated
            #call
              yields block
              when error is raised
                sets sidekiq_jobs_failed_total and reraises
      memory boundary
        behaves like a metrics middleware
          with mocked prometheus
            .initialize_process_metrics
              sets concurrency metrics
              initializes sidekiq_jobs_completion_seconds for the workers in the current Sidekiq process
              when emit_sidekiq_histogram FF is disabled
                does not initialize sidekiq_jobs_completion_seconds
              initializing execution and queueing SLIs
                initializes the execution and queueing SLIs with labels
              when the sidekiq_job_completion_metric_initialize feature flag is disabled
                sets the concurrency metric
                does not initialize sidekiq_jobs_completion_seconds
                sidekiq execution SLIs
                  behaves like not initializing sidekiq SLIs
                    does not initialize sidekiq SLIs
                sidekiq queueing SLIs
                  behaves like not initializing sidekiq SLIs
                    does not initialize sidekiq SLIs
            #call
              yields block
              calls BackgroundTransaction
              sets queue specific metrics
              sets sidekiq_jobs_completion_seconds values that are compatible with those from .initialize_process_metrics
              sets the thread name if it was nil
              when job_duration is not available
                does not set the queue_duration_seconds histogram
              when error is raised
                sets sidekiq_jobs_failed_total and reraises
                records sidekiq SLI error but does not record sidekiq SLI apdex
              when job is retried
                sets sidekiq_jobs_retried_total metric
              when job is interrupted
                sets sidekiq_jobs_interrupted_total metric
          with prometheus integrated
            #call
              yields block
              when error is raised
                sets sidekiq_jobs_failed_total and reraises
      feature category
        behaves like a metrics middleware
          with mocked prometheus
            .initialize_process_metrics
              sets concurrency metrics
              initializes sidekiq_jobs_completion_seconds for the workers in the current Sidekiq process
              when emit_sidekiq_histogram FF is disabled
                does not initialize sidekiq_jobs_completion_seconds
              initializing execution and queueing SLIs
                initializes the execution and queueing SLIs with labels
              when the sidekiq_job_completion_metric_initialize feature flag is disabled
                sets the concurrency metric
                does not initialize sidekiq_jobs_completion_seconds
                sidekiq execution SLIs
                  behaves like not initializing sidekiq SLIs
                    does not initialize sidekiq SLIs
                sidekiq queueing SLIs
                  behaves like not initializing sidekiq SLIs
                    does not initialize sidekiq SLIs
            #call
              yields block
              calls BackgroundTransaction
              sets queue specific metrics
              sets sidekiq_jobs_completion_seconds values that are compatible with those from .initialize_process_metrics
              sets the thread name if it was nil
              when job_duration is not available
                does not set the queue_duration_seconds histogram
              when error is raised
                sets sidekiq_jobs_failed_total and reraises
                records sidekiq SLI error but does not record sidekiq SLI apdex
              when job is retried
                sets sidekiq_jobs_retried_total metric
              when job is interrupted
                sets sidekiq_jobs_interrupted_total metric
          with prometheus integrated
            #call
              yields block
              when error is raised
                sets sidekiq_jobs_failed_total and reraises
      combined
        behaves like a metrics middleware
          with mocked prometheus
            .initialize_process_metrics
              sets concurrency metrics
              initializes sidekiq_jobs_completion_seconds for the workers in the current Sidekiq process
              when emit_sidekiq_histogram FF is disabled
                does not initialize sidekiq_jobs_completion_seconds
              initializing execution and queueing SLIs
                initializes the execution and queueing SLIs with labels
              when the sidekiq_job_completion_metric_initialize feature flag is disabled
                sets the concurrency metric
                does not initialize sidekiq_jobs_completion_seconds
                sidekiq execution SLIs
                  behaves like not initializing sidekiq SLIs
                    does not initialize sidekiq SLIs
                sidekiq queueing SLIs
                  behaves like not initializing sidekiq SLIs
                    does not initialize sidekiq SLIs
            #call
              yields block
              calls BackgroundTransaction
              sets queue specific metrics
              sets sidekiq_jobs_completion_seconds values that are compatible with those from .initialize_process_metrics
              sets the thread name if it was nil
              when job_duration is not available
                does not set the queue_duration_seconds histogram
              when error is raised
                sets sidekiq_jobs_failed_total and reraises
                records sidekiq SLI error but does not record sidekiq SLI apdex
              when job is retried
                sets sidekiq_jobs_retried_total metric
              when job is interrupted
                sets sidekiq_jobs_interrupted_total metric
          with prometheus integrated
            #call
              yields block
              when error is raised
                sets sidekiq_jobs_failed_total and reraises
  DB load balancing
    #call
      when worker declares data consistency
        increments load balancing counter with defined data consistency
      when worker does not declare data consistency
        increments load balancing counter with default data consistency
  feature attribution
    when a worker has a feature category
      uses that category for metrics
    when a worker does not have a feature category
      uses the category from the context for metrics
  when emit_sidekiq_histogram_metrics FF is disabled
    does not emit histogram metrics
    emits sidekiq_jobs_completion_seconds sum and count metric
    emits resource usage sum metrics

# [RSpecRunTime] Finishing example group spec/lib/gitlab/sidekiq_middleware/server_metrics_spec.rb. It took 18.59 seconds. Expected to take 1 minute 11.2 seconds.
# [RSpecRunTime] Starting example group spec/services/projects/fork_service_spec.rb. Expected to take 1 minute 0.86 second.

Projects::ForkService
  #execute
    when forker is a guest
      does not create a fork
      does not create a fork network
# [RSpecRunTime] RSpec elapsed time: 5 minutes 10.8 seconds. Current RSS: ~1529M. load average: 1.18 1.20 1.36 1/288 7158


    when forker is a developer
      creates a fork of the project
      after forking the original project still has its avatar
      creates a fork network with the new project and the root project set
      imports the repository of the forked project
      behaves like forks count cache refresh
        flushes the forks count cache of the source project
# [RSpecRunTime] RSpec elapsed time: 5 minutes 18.97 seconds. Current RSS: ~1529M. load average: 1.31 1.22 1.37 1/291 7218


      when creating fork of the fork
        creates a new project
        when the forked project has higher visibility than the root project
          successfully creates a fork of the fork with correct visibility
# [RSpecRunTime] RSpec elapsed time: 5 minutes 22.39 seconds. Current RSS: ~1528M. load average: 1.31 1.22 1.37 1/291 7227


        behaves like forks count cache refresh
          flushes the forks count cache of the source project
# [RSpecRunTime] RSpec elapsed time: 5 minutes 25.22 seconds. Current RSS: ~1521M. load average: 1.28 1.22 1.36 1/291 7232


      when project already exists
        fails due to validation, not transaction failure
      when repository in legacy storage already exists
        does not allow creation
        when repository disk validation is explicitly skipped
          allows fork project creation
# [RSpecRunTime] RSpec elapsed time: 5 minutes 27.18 seconds. Current RSS: ~1516M. load average: 1.28 1.22 1.36 1/291 7238


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


          when the namespace has a lower visibility level than the project
            creates the project with the lower visibility level
# [RSpecRunTime] RSpec elapsed time: 5 minutes 33.69 seconds. Current RSS: ~1529M. load average: 1.26 1.22 1.36 1/289 7256


        when user is not a group owner
          does not create a fork
      with optional attributes
        sets optional attributes to specified values
        when an unknown visibility is requested
          sets visibility level to private
# [RSpecRunTime] RSpec elapsed time: 5 minutes 36.06 seconds. Current RSS: ~1530M. load average: 1.24 1.21 1.36 1/289 7261


        when requested visibility level is greater than allowed
          sets visibility level to project visibility
# [RSpecRunTime] RSpec elapsed time: 5 minutes 37.2 seconds. Current RSS: ~1531M. load average: 1.24 1.21 1.36 1/289 7264


        when target namespace has lower visibility than a project
          sets visibility level to target namespace visibility level
# [RSpecRunTime] RSpec elapsed time: 5 minutes 38.52 seconds. Current RSS: ~1530M. load average: 1.24 1.21 1.36 1/289 7267


        when project has custom visibility settings
          copies project features visibility settings to the fork
# [RSpecRunTime] RSpec elapsed time: 5 minutes 39.63 seconds. Current RSS: ~1529M. load average: 1.38 1.24 1.37 1/289 7270


      when a project is already forked
        creates a new pool repository after the project is moved to a new shard
# [RSpecRunTime] RSpec elapsed time: 5 minutes 41.93 seconds. Current RSS: ~1530M. load average: 1.38 1.24 1.37 1/289 7278


      when forking with object pools
        when no pool exists
          creates a new object pool
          when project is private
            does not create an object pool
# [RSpecRunTime] RSpec elapsed time: 5 minutes 44.43 seconds. Current RSS: ~1542M. load average: 1.43 1.26 1.37 1/289 7295


        when a pool already exists
          joins the object pool
      when linking fork to an existing project
        if project is already forked
          does not create fork relation
        if project is not forked
          creates fork relation
          flushes the forks count cache of the source project
          when user cannot fork
            returns an error
# [RSpecRunTime] RSpec elapsed time: 5 minutes 47.13 seconds. Current RSS: ~1542M. load average: 1.43 1.26 1.37 1/289 7298


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

# [RSpecRunTime] Finishing example group spec/services/projects/fork_service_spec.rb. It took 40.27 seconds. Expected to take 1 minute 0.86 second.
# [RSpecRunTime] Starting example group spec/finders/packages/group_packages_finder_spec.rb. Expected to take 53.46 seconds.

Packages::GroupPackagesFinder
  #execute
    group has packages
      is expected to contain exactly #<Packages::Package id: 2, project_id: 89, created_at: "2024-02-20 23:25:23.601004717 +0000", updated...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil> and #<Packages::Package id: 4, project_id: 89, created_at: "2024-02-20 23:25:23.945407241 +0000", updated...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>
      subgroup has packages
        is expected to contain exactly #<Packages::Package id: 2, project_id: 89, created_at: "2024-02-20 23:25:23.601004717 +0000", updated...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>, #<Packages::Package id: 4, project_id: 89, created_at: "2024-02-20 23:25:23.945407241 +0000", updated...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>, and #<Packages::Package id: 7, project_id: 94, created_at: "2024-02-20 23:25:25.230365568 +0000", updated...ackage_type: "npm", creator_id: 72, status: "default", last_downloaded_at: nil, status_message: nil>
        excluding subgroups
          is expected to contain exactly #<Packages::Package id: 2, project_id: 89, created_at: "2024-02-20 23:25:23.601004717 +0000", updated...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil> and #<Packages::Package id: 4, project_id: 89, created_at: "2024-02-20 23:25:23.945407241 +0000", updated...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>
# [RSpecRunTime] RSpec elapsed time: 5 minutes 52.76 seconds. Current RSS: ~1547M. load average: 1.48 1.27 1.38 1/289 7304


        permissions
          role: :anonymous, project_visibility: :public, repository_visibility: :enabled, packages_returned: :all
            is expected to contain exactly #<Packages::Package id: 2, project_id: 89, created_at: "2024-02-20 23:25:23.601004717 +0000", updated...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>, #<Packages::Package id: 4, project_id: 89, created_at: "2024-02-20 23:25:23.945407241 +0000", updated...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>, and #<Packages::Package id: 7, project_id: 94, created_at: "2024-02-20 23:25:25.230365568 +0000", updated...ackage_type: "npm", creator_id: 72, status: "default", last_downloaded_at: nil, status_message: nil>
          role: :guest, project_visibility: :public, repository_visibility: :enabled, packages_returned: :all
            is expected to contain exactly #<Packages::Package id: 2, project_id: 89, created_at: "2024-02-20 23:25:23.601004717 +0000", updated...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>, #<Packages::Package id: 4, project_id: 89, created_at: "2024-02-20 23:25:23.945407241 +0000", updated...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>, and #<Packages::Package id: 7, project_id: 94, created_at: "2024-02-20 23:25:25.230365568 +0000", updated...ackage_type: "npm", creator_id: 72, status: "default", last_downloaded_at: nil, status_message: nil>
          role: :reporter, project_visibility: :public, repository_visibility: :enabled, packages_returned: :all
            is expected to contain exactly #<Packages::Package id: 2, project_id: 89, created_at: "2024-02-20 23:25:23.601004717 +0000", updated...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>, #<Packages::Package id: 4, project_id: 89, created_at: "2024-02-20 23:25:23.945407241 +0000", updated...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>, and #<Packages::Package id: 7, project_id: 94, created_at: "2024-02-20 23:25:25.230365568 +0000", updated...ackage_type: "npm", creator_id: 72, status: "default", last_downloaded_at: nil, status_message: nil>
          role: :developer, project_visibility: :public, repository_visibility: :enabled, packages_returned: :all
            is expected to contain exactly #<Packages::Package id: 2, project_id: 89, created_at: "2024-02-20 23:25:23.601004717 +0000", updated...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>, #<Packages::Package id: 4, project_id: 89, created_at: "2024-02-20 23:25:23.945407241 +0000", updated...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>, and #<Packages::Package id: 7, project_id: 94, created_at: "2024-02-20 23:25:25.230365568 +0000", updated...ackage_type: "npm", creator_id: 72, status: "default", last_downloaded_at: nil, status_message: nil>
          role: :maintainer, project_visibility: :public, repository_visibility: :enabled, packages_returned: :all
            is expected to contain exactly #<Packages::Package id: 2, project_id: 89, created_at: "2024-02-20 23:25:23.601004717 +0000", updated...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>, #<Packages::Package id: 4, project_id: 89, created_at: "2024-02-20 23:25:23.945407241 +0000", updated...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>, and #<Packages::Package id: 7, project_id: 94, created_at: "2024-02-20 23:25:25.230365568 +0000", updated...ackage_type: "npm", creator_id: 72, status: "default", last_downloaded_at: nil, status_message: nil>
          role: :anonymous, project_visibility: :public, repository_visibility: :private, packages_returned: :none
            is expected to contain exactly
          role: :guest, project_visibility: :public, repository_visibility: :private, packages_returned: :all
            is expected to contain exactly #<Packages::Package id: 2, project_id: 89, created_at: "2024-02-20 23:25:23.601004717 +0000", updated...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>, #<Packages::Package id: 4, project_id: 89, created_at: "2024-02-20 23:25:23.945407241 +0000", updated...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>, and #<Packages::Package id: 7, project_id: 94, created_at: "2024-02-20 23:25:25.230365568 +0000", updated...ackage_type: "npm", creator_id: 72, status: "default", last_downloaded_at: nil, status_message: nil>
          role: :reporter, project_visibility: :public, repository_visibility: :private, packages_returned: :all
            is expected to contain exactly #<Packages::Package id: 2, project_id: 89, created_at: "2024-02-20 23:25:23.601004717 +0000", updated...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>, #<Packages::Package id: 4, project_id: 89, created_at: "2024-02-20 23:25:23.945407241 +0000", updated...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>, and #<Packages::Package id: 7, project_id: 94, created_at: "2024-02-20 23:25:25.230365568 +0000", updated...ackage_type: "npm", creator_id: 72, status: "default", last_downloaded_at: nil, status_message: nil>
          role: :developer, project_visibility: :public, repository_visibility: :private, packages_returned: :all
            is expected to contain exactly #<Packages::Package id: 2, project_id: 89, created_at: "2024-02-20 23:25:23.601004717 +0000", updated...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>, #<Packages::Package id: 4, project_id: 89, created_at: "2024-02-20 23:25:23.945407241 +0000", updated...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>, and #<Packages::Package id: 7, project_id: 94, created_at: "2024-02-20 23:25:25.230365568 +0000", updated...ackage_type: "npm", creator_id: 72, status: "default", last_downloaded_at: nil, status_message: nil>
          role: :maintainer, project_visibility: :public, repository_visibility: :private, packages_returned: :all
            is expected to contain exactly #<Packages::Package id: 2, project_id: 89, created_at: "2024-02-20 23:25:23.601004717 +0000", updated...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>, #<Packages::Package id: 4, project_id: 89, created_at: "2024-02-20 23:25:23.945407241 +0000", updated...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>, and #<Packages::Package id: 7, project_id: 94, created_at: "2024-02-20 23:25:25.230365568 +0000", updated...ackage_type: "npm", creator_id: 72, status: "default", last_downloaded_at: nil, status_message: nil>
          role: :anonymous, project_visibility: :private, repository_visibility: :enabled, packages_returned: :none
            is expected to contain exactly
          role: :guest, project_visibility: :private, repository_visibility: :enabled, packages_returned: :none
            is expected to contain exactly
          role: :reporter, project_visibility: :private, repository_visibility: :enabled, packages_returned: :all
            is expected to contain exactly #<Packages::Package id: 2, project_id: 89, created_at: "2024-02-20 23:25:23.601004717 +0000", updated...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>, #<Packages::Package id: 4, project_id: 89, created_at: "2024-02-20 23:25:23.945407241 +0000", updated...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>, and #<Packages::Package id: 7, project_id: 94, created_at: "2024-02-20 23:25:25.230365568 +0000", updated...ackage_type: "npm", creator_id: 72, status: "default", last_downloaded_at: nil, status_message: nil>
          role: :developer, project_visibility: :private, repository_visibility: :enabled, packages_returned: :all
            is expected to contain exactly #<Packages::Package id: 2, project_id: 89, created_at: "2024-02-20 23:25:23.601004717 +0000", updated...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>, #<Packages::Package id: 4, project_id: 89, created_at: "2024-02-20 23:25:23.945407241 +0000", updated...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>, and #<Packages::Package id: 7, project_id: 94, created_at: "2024-02-20 23:25:25.230365568 +0000", updated...ackage_type: "npm", creator_id: 72, status: "default", last_downloaded_at: nil, status_message: nil>
          role: :maintainer, project_visibility: :private, repository_visibility: :enabled, packages_returned: :all
            is expected to contain exactly #<Packages::Package id: 2, project_id: 89, created_at: "2024-02-20 23:25:23.601004717 +0000", updated...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>, #<Packages::Package id: 4, project_id: 89, created_at: "2024-02-20 23:25:23.945407241 +0000", updated...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>, and #<Packages::Package id: 7, project_id: 94, created_at: "2024-02-20 23:25:25.230365568 +0000", updated...ackage_type: "npm", creator_id: 72, status: "default", last_downloaded_at: nil, status_message: nil>
          role: :anonymous, project_visibility: :private, repository_visibility: :private, packages_returned: :none
            is expected to contain exactly
          role: :guest, project_visibility: :private, repository_visibility: :private, packages_returned: :none
            is expected to contain exactly
          role: :reporter, project_visibility: :private, repository_visibility: :private, packages_returned: :all
            is expected to contain exactly #<Packages::Package id: 2, project_id: 89, created_at: "2024-02-20 23:25:23.601004717 +0000", updated...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>, #<Packages::Package id: 4, project_id: 89, created_at: "2024-02-20 23:25:23.945407241 +0000", updated...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>, and #<Packages::Package id: 7, project_id: 94, created_at: "2024-02-20 23:25:25.230365568 +0000", updated...ackage_type: "npm", creator_id: 72, status: "default", last_downloaded_at: nil, status_message: nil>
          role: :developer, project_visibility: :private, repository_visibility: :private, packages_returned: :all
            is expected to contain exactly #<Packages::Package id: 2, project_id: 89, created_at: "2024-02-20 23:25:23.601004717 +0000", updated...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>, #<Packages::Package id: 4, project_id: 89, created_at: "2024-02-20 23:25:23.945407241 +0000", updated...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>, and #<Packages::Package id: 7, project_id: 94, created_at: "2024-02-20 23:25:25.230365568 +0000", updated...ackage_type: "npm", creator_id: 72, status: "default", last_downloaded_at: nil, status_message: nil>
          role: :maintainer, project_visibility: :private, repository_visibility: :private, packages_returned: :all
            is expected to contain exactly #<Packages::Package id: 2, project_id: 89, created_at: "2024-02-20 23:25:23.601004717 +0000", updated...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>, #<Packages::Package id: 4, project_id: 89, created_at: "2024-02-20 23:25:23.945407241 +0000", updated...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>, and #<Packages::Package id: 7, project_id: 94, created_at: "2024-02-20 23:25:25.230365568 +0000", updated...ackage_type: "npm", creator_id: 72, status: "default", last_downloaded_at: nil, status_message: nil>
        deploy tokens
          group deploy token
            is expected to contain exactly #<Packages::Package id: 2, project_id: 89, created_at: "2024-02-20 23:25:23.601004717 +0000", updated...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>, #<Packages::Package id: 4, project_id: 89, created_at: "2024-02-20 23:25:23.945407241 +0000", updated...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>, and #<Packages::Package id: 7, project_id: 94, created_at: "2024-02-20 23:25:25.230365568 +0000", updated...ackage_type: "npm", creator_id: 72, status: "default", last_downloaded_at: nil, status_message: nil>
            behaves like disabling package registry for project
              is expected to contain exactly #<Packages::Package id: 7, project_id: 94, created_at: "2024-02-20 23:25:25.230365568 +0000", updated...ackage_type: "npm", creator_id: 72, status: "default", last_downloaded_at: nil, status_message: nil>
          project deploy token
            is expected to contain exactly #<Packages::Package id: 7, project_id: 94, created_at: "2024-02-20 23:25:25.230365568 +0000", updated...ackage_type: "npm", creator_id: 72, status: "default", last_downloaded_at: nil, status_message: nil>
            behaves like disabling package registry for project
              is expected to contain exactly
        avoid N+1 query
          avoids N+1 database queries
# [RSpecRunTime] RSpec elapsed time: 6 minutes 11.4 seconds. Current RSS: ~1514M. load average: 1.34 1.25 1.37 1/290 7326


      when there are processing packages
        is expected to contain exactly #<Packages::Package id: 2, project_id: 89, created_at: "2024-02-20 23:25:23.601004717 +0000", updated...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil> and #<Packages::Package id: 4, project_id: 89, created_at: "2024-02-20 23:25:23.945407241 +0000", updated...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>
      preload_pipelines
        preloads pipelines by default
        set to false
          does not preload pipelines
      with package_name
        as complete name
          is expected to eq [#<Packages::Package id: 26, project_id: 89, created_at: "2024-02-20 23:25:45.814137800 +0000", updat...age_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>]
        for fuzzy filter aven
          is expected to eq [#<Packages::Package id: 26, project_id: 89, created_at: "2024-02-20 23:25:45.814137800 +0000", updat...age_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>]
        for fuzzy filter mav
          is expected to eq [#<Packages::Package id: 26, project_id: 89, created_at: "2024-02-20 23:25:45.814137800 +0000", updat...age_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>]
        for fuzzy filter ave
          is expected to eq [#<Packages::Package id: 26, project_id: 89, created_at: "2024-02-20 23:25:45.814137800 +0000", updat...age_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>]
      with exact package_name
        as complete name
          is expected to contain exactly #<Packages::Package id: 28, project_id: 89, created_at: "2024-02-20 23:25:47.502220226 +0000", update...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>
      behaves like concerning versionless param
        is expected not to include #<Packages::Package id: 32, project_id: 89, created_at: "2024-02-20 23:25:48.466816046 +0000", update...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>
        with valid include_versionless param
          is expected to include #<Packages::Package id: 32, project_id: 89, created_at: "2024-02-20 23:25:48.466816046 +0000", update...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>
        with empty include_versionless param
          is expected not to include #<Packages::Package id: 32, project_id: 89, created_at: "2024-02-20 23:25:48.466816046 +0000", update...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>
      behaves like concerning package statuses
        displayable packages
          is expected not to include #<Packages::Package id: 34, project_id: 89, created_at: "2024-02-20 23:25:49.737261114 +0000", update...ckage_type: "maven", creator_id: 67, status: "hidden", last_downloaded_at: nil, status_message: nil>
          is expected to include #<Packages::Package id: 36, project_id: 89, created_at: "2024-02-20 23:25:50.086621118 +0000", update...ackage_type: "maven", creator_id: 67, status: "error", last_downloaded_at: nil, status_message: nil>
# [RSpecRunTime] RSpec elapsed time: 6 minutes 17.59 seconds. Current RSS: ~1525M. load average: 1.31 1.25 1.36 1/290 7327


        with status param
          is expected to contain exactly #<Packages::Package id: 34, project_id: 89, created_at: "2024-02-20 23:25:49.737261114 +0000", update...ckage_type: "maven", creator_id: 67, status: "hidden", last_downloaded_at: nil, status_message: nil>
        with invalid status param
          is expected to raise Packages::FinderHelper::InvalidStatusError
      behaves like disabling package registry for project
        is expected to contain exactly
    group has package of all types
      behaves like with package type
        is expected to contain exactly #<Packages::Package id: 38, project_id: 89, created_at: "2024-02-20 23:25:51.913607389 +0000", update...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>
# [RSpecRunTime] RSpec elapsed time: 6 minutes 19.94 seconds. Current RSS: ~1525M. load average: 1.29 1.24 1.36 1/290 7328


      behaves like with package type
        is expected to contain exactly #<Packages::Package id: 39, project_id: 89, created_at: "2024-02-20 23:25:51.963108194 +0000", update...ackage_type: "npm", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>
      behaves like with package type
        is expected to contain exactly #<Packages::Package id: 41, project_id: 89, created_at: "2024-02-20 23:25:52.285981101 +0000", update...kage_type: "conan", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>
      behaves like with package type
        is expected to contain exactly #<Packages::Package id: 42, project_id: 89, created_at: "2024-02-20 23:25:52.385494200 +0000", update...kage_type: "nuget", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>
      behaves like with package type
        is expected to contain exactly #<Packages::Package id: 43, project_id: 89, created_at: "2024-02-20 23:25:52.444229755 +0000", update...ckage_type: "pypi", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>
      behaves like with package type
        is expected to contain exactly #<Packages::Package id: 44, project_id: 89, created_at: "2024-02-20 23:25:52.473947932 +0000", update...e_type: "composer", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>
      behaves like with package type
        is expected to contain exactly #<Packages::Package id: 45, project_id: 89, created_at: "2024-02-20 23:25:52.480995761 +0000", update...ge_type: "generic", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>
      behaves like with package type
        is expected to contain exactly #<Packages::Package id: 46, project_id: 89, created_at: "2024-02-20 23:25:52.487607880 +0000", update...age_type: "golang", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>
      behaves like with package type
        is expected to contain exactly #<Packages::Package id: 47, project_id: 89, created_at: "2024-02-20 23:25:52.503789238 +0000", update...age_type: "debian", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>
      behaves like with package type
        is expected to contain exactly #<Packages::Rubygems::Package id: 48, project_id: 89, created_at: "2024-02-20 23:25:52.658882583 +000...e_type: "rubygems", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>
      behaves like with package type
        is expected to contain exactly #<Packages::Package id: 49, project_id: 89, created_at: "2024-02-20 23:25:52.693030069 +0000", update...ckage_type: "helm", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>
      behaves like with package type
        is expected to contain exactly #<Packages::Package id: 50, project_id: 89, created_at: "2024-02-20 23:25:52.717598386 +0000", update..."terraform_module", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>
      behaves like with package type
        is expected to contain exactly #<Packages::Package id: 51, project_id: 89, created_at: "2024-02-20 23:25:52.737719984 +0000", update...ackage_type: "rpm", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>
      behaves like with package type
        is expected to contain exactly #<Packages::MlModel::Package id: 52, project_id: 89, created_at: "2024-02-20 23:25:52.744367933 +0000...e_type: "ml_model", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>
    group has no packages
      is expected to be empty
    group is nil
      is expected to be empty
    package type is nil
      is expected to contain exactly #<Packages::Package id: 54, project_id: 89, created_at: "2024-02-20 23:25:57.959250734 +0000", update...kage_type: "maven", creator_id: 67, status: "default", last_downloaded_at: nil, status_message: nil>
    with invalid package_type
      is expected to raise Packages::FinderHelper::InvalidPackageTypeError

# [RSpecRunTime] Finishing example group spec/finders/packages/group_packages_finder_spec.rb. It took 35.77 seconds. Expected to take 53.46 seconds.
# [RSpecRunTime] Starting example group spec/models/hooks/web_hook_spec.rb. Expected to take 48.17 seconds.

WebHook
  does not allow STI
  associations
    is expected to have many web_hook_logs
  validations
    is expected to validate that :url cannot be empty/falsy
    is expected to validate that the length of :custom_webhook_template is at most 4096
    only consider these branch filter strategies are valid
    url_variables
      is expected to allow :url_variables to be ‹{}›
      is expected to allow :url_variables to be ‹{"foo" => "bar"}›
      is expected to allow :url_variables to be ‹{"FOO" => "bar"}›
      is expected to allow :url_variables to be ‹{"MY_TOKEN" => "bar"}›
      is expected to allow :url_variables to be ‹{"foo2" => "bar"}›
      is expected to allow :url_variables to be ‹{"x" => "y"}›
      is expected to allow :url_variables to be ‹{"x" => "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}›
      is expected to allow :url_variables to be ‹{"foo" => "bar", "bar" => "baz"}›
      is expected to allow :url_variables to be ‹{"k1" => "value", "k2" => "value", "k3" => "value", "k4" => "value", "k5" => "value", "k6" => "value", "k7" => "value", "k8" => "value", "k9" => "value", "k10" => "value", "k11" => "value", "k12" => "value", "k13" => "value", "k14" => "value", "k15" => "value", "k16" => "value", "k17" => "value", "k18" => "value", "k19" => "value", "k20" => "value"}›
      is expected to allow :url_variables to be ‹{"MY-TOKEN" => "bar"}›
      is expected to allow :url_variables to be ‹{"my_secr3t-token" => "bar"}›
      is expected to allow :url_variables to be ‹{"x-y-z" => "bar"}›
      is expected to allow :url_variables to be ‹{"x_y_z" => "bar"}›
      is expected to allow :url_variables to be ‹{"f.o.o" => "bar"}›
      is expected not to allow :url_variables to be ‹[]›
      is expected not to allow :url_variables to be ‹{"foo" => 1}›
      is expected not to allow :url_variables to be ‹{"bar" => :baz}›
      is expected not to allow :url_variables to be ‹{"bar" => nil}›
      is expected not to allow :url_variables to be ‹{"foo" => ""}›
      is expected not to allow :url_variables to be ‹{"foo" => "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}›
      is expected not to allow :url_variables to be ‹{"has spaces" => "foo"}›
      is expected not to allow :url_variables to be ‹{"" => "foo"}›
      is expected not to allow :url_variables to be ‹{"1foo" => "foo"}›
      is expected not to allow :url_variables to be ‹{"k1" => "value", "k2" => "value", "k3" => "value", "k4" => "value", "k5" => "value", "k6" => "value", "k7" => "value", "k8" => "value", "k9" => "value", "k10" => "value", "k11" => "value", "k12" => "value", "k13" => "value", "k14" => "value", "k15" => "value", "k16" => "value", "k17" => "value", "k18" => "value", "k19" => "value", "k20" => "value", "k21" => "value"}›
      is expected not to allow :url_variables to be ‹{"MY--TOKEN" => "foo"}›
      is expected not to allow :url_variables to be ‹{"MY__SECRET" => "foo"}›
      is expected not to allow :url_variables to be ‹{"x-_y" => "foo"}›
      is expected not to allow :url_variables to be ‹{"x..y" => "foo"}›
# [RSpecRunTime] RSpec elapsed time: 6 minutes 28.57 seconds. Current RSS: ~1558M. load average: 1.27 1.24 1.36 2/290 7329


    url
      is expected to allow :url to be ‹"http://example.com"›
      is expected to allow :url to be ‹"https://example.com"›
      is expected to allow :url to be ‹" https://example.com "›
      is expected to allow :url to be ‹"http://test.com/api"›
      is expected to allow :url to be ‹"http://test.com/api?key=abc"›
      is expected to allow :url to be ‹"http://test.com/api?key=abc&type=def"›
      is expected not to allow :url to be ‹"example.com"›
      is expected not to allow :url to be ‹"ftp://example.com"›
      is expected not to allow :url to be ‹"herp-and-derp"›
      strips :url before saving it
      when url is local
        is expected not to allow :url to be ‹"http://localhost:9000"›
        is valid if application settings allow local requests from web hooks
# [RSpecRunTime] RSpec elapsed time: 6 minutes 30.71 seconds. Current RSS: ~1589M. load average: 1.24 1.23 1.36 1/290 7330


      when there are URL variables
        is expected to allow :url to be ‹"http://example.com"›
        is expected to allow :url to be ‹"http://example.com/{one}/{two}"›
        is expected to allow :url to be ‹"http://example.com/{one}"›
        is expected to allow :url to be ‹"http://example.com/{two}"›
        is expected to allow :url to be ‹"http://user:s3cret@example.com/{two}"›
        is expected to allow :url to be ‹"http://{one}:{two}@example.com"›
        is expected to allow :url to be ‹"http://{one}"›
        is expected to allow :url to be ‹"{url}"›
        is expected not to allow :url to be ‹"http://example.com/{one}/{two}/{three}"›
        is expected not to allow :url to be ‹"http://example.com/{foo}"›
        is expected not to allow :url to be ‹"http:{user}:{pwd}//example.com/{foo}"›
        mentions all missing variable names
# [RSpecRunTime] RSpec elapsed time: 6 minutes 32.85 seconds. Current RSS: ~1600M. load average: 1.24 1.23 1.36 1/290 7331


    token
      is expected to allow :token to be ‹"foobar"›
      is expected not to allow :token to be ‹"foo\nbar"› or ‹"foo\r\nbar"›
    push_events_branch_filter
      with "all branches" strategy
        is expected to allow :push_events_branch_filter to be ‹"good_branch_name"›, ‹"another/good-branch_name"›, ‹"good branch name"›, ‹"good~branchname"›, ‹"good_branchname("›, ‹"good_branchname["›, or ‹""›
      with "wildcard" strategy
        is expected to allow :push_events_branch_filter to be ‹"good_branch_name"›, ‹"another/good-branch_name"›, ‹"good_branch_name("›, or ‹""›
        is expected not to allow :push_events_branch_filter to be ‹"bad branch name"›, ‹"bad~branchname"›, or ‹"bad_branch_name["›
        gets rid of whitespace
        stores whitespace only as empty
      with "regex" strategy
        is expected to allow :push_events_branch_filter to be ‹"good_branch_name"›, ‹"another/good-branch_name"›, ‹"good branch name"›, ‹"good~branch~name"›, or ‹""›
        is expected not to allow :push_events_branch_filter to be ‹"bad_branch_name("› or ‹"bad_branch_name["›
    before_validation :reset_token
      resets token if url changed
      does not reset token if new url is set together with the same token
      does not reset token if new url is set together with a new token
# [RSpecRunTime] RSpec elapsed time: 6 minutes 35.74 seconds. Current RSS: ~1600M. load average: 1.14 1.21 1.35 1/290 7332


    before_validation :reset_url_variables
      resets url variables if url changed
      resets url variables if url is changed but url variables stayed the same
      resets url variables if url is changed and url variables are appended
      resets url variables if url is changed and url variables are removed
      resets url variables if url variables are overwritten
      does not reset url variables if both url and url variables are changed
      without url variables
        does not reset url variables
# [RSpecRunTime] RSpec elapsed time: 6 minutes 37.02 seconds. Current RSS: ~1605M. load average: 1.14 1.21 1.35 1/290 7333


  encrypted attributes
    is expected to contain exactly :token, :url, and :url_variables
  execute
    #execute
    passes force: false to the web hook service by default
    passes force: true to the web hook service if required
    #async_execute
    does not async execute non-executable hooks
  #destroy
    does not cascade to web_hook_logs
  #next_backoff
    when there was no last backoff
      is 10 minutes
    when we have backed off once
      is twice the initial value
    when we have backed off 3 times
      grows exponentially
    when the previous backoff was large
      does not exceed the max backoff value
  #rate_limited?
    is false when hook has not been rate limited
    is true when hook has been rate limited
  #rate_limit
    returns the hook rate limit
  #to_json
    does not error
    does not contain binary attributes
  #interpolated_url
    is not vulnerable to malicious input
    when the hook URL does not contain variables
      is expected to have attributes {:interpolated_url => "http://example.com"}
    when the hook URL contains variables
      is expected to have attributes {:interpolated_url => "http://example.com/abc/resource?token=xyz"}
      when a variable is missing
        raises an error
      when the URL appears to include percent formatting
        succeeds, interpolates correctly
  #update_last_failure
    is a method of this class
  #masked_token
    is expected to be nil
    with a token
      is expected to eq "************"
  #backoff!
    when we have not backed off before
      increments the recent_failures count
    when the recent failure value is the max value of a smallint
      reduces to MAX_FAILURES
    when the recent failure value is MAX_FAILURES
      does not change recent_failures
    when we have exhausted the grace period
      sets disabled_until to the next backoff
      increments the backoff count
      when we have backed off MAX_FAILURES times
        does not let the backoff count exceed the maximum failure count
        does not change disabled_until
        changes disabled_until when it has elapsed
# [RSpecRunTime] RSpec elapsed time: 6 minutes 41.37 seconds. Current RSS: ~1610M. load average: 1.13 1.21 1.35 1/290 7334


  #failed!
    increments the failure count
    does not update the hook if the the failure count exceeds the maximum value
    when the recent failure value is the max value of a smallint
      does not change recent_failures

# [RSpecRunTime] Finishing example group spec/models/hooks/web_hook_spec.rb. It took 16.28 seconds. Expected to take 48.17 seconds.
# [RSpecRunTime] Starting example group spec/services/work_items/update_service_spec.rb. Expected to take 43.63 seconds.

WorkItems::UpdateService
  #execute
    when applying quick actions
      when work item type is not the default Issue
        does not apply the quick action
# [RSpecRunTime] RSpec elapsed time: 6 minutes 43.38 seconds. Current RSS: ~1594M. load average: 1.13 1.21 1.35 1/290 7335


      when work item type is the default Issue
        applies the quick action
    when title is changed
      triggers issuable_title_updated graphql subscription
      behaves like internal event tracking
        logs to Snowplow
# [RSpecRunTime] RSpec elapsed time: 6 minutes 45.28 seconds. Current RSS: ~1588M. load average: 1.12 1.20 1.35 1/290 7336


      behaves like update service that triggers GraphQL work_item_updated subscription
        triggers graphql subscription workItemUpdated
    when title is not changed
      does not trigger issuable_title_updated graphql subscription
      does not emit Snowplow event
# [RSpecRunTime] RSpec elapsed time: 6 minutes 47.04 seconds. Current RSS: ~1581M. load average: 1.12 1.20 1.35 1/290 7337


    when dates are changed
      tracks users updating work item dates
      behaves like update service that triggers GraphQL work_item_updated subscription
        triggers graphql subscription workItemUpdated
# [RSpecRunTime] RSpec elapsed time: 6 minutes 48.13 seconds. Current RSS: ~1577M. load average: 1.12 1.20 1.35 1/290 7338


    when decription is changed
      triggers GraphQL description updated subscription
      behaves like update service that triggers GraphQL work_item_updated subscription
        triggers graphql subscription workItemUpdated
# [RSpecRunTime] RSpec elapsed time: 6 minutes 49.31 seconds. Current RSS: ~1563M. load average: 1.11 1.20 1.34 1/290 7339


    when decription is not changed
      does not trigger GraphQL description updated subscription
    when updating state_event
      when state_event is close
        closes the work item
      when state_event is reopen
        reopens the work item
    behaves like work item widgetable service
      executes callbacks for expected widgets
    when updating widgets
      when widget service is not present
        ignores widget param
      when the widget does not support update callback
        ignores widget param
      for the description widget
        updates the description of the work item
        behaves like update service that triggers GraphQL work_item_updated subscription
          triggers graphql subscription workItemUpdated
# [RSpecRunTime] RSpec elapsed time: 6 minutes 53.55 seconds. Current RSS: ~1539M. load average: 1.11 1.20 1.34 1/290 7340


        with mentions
          when description contains a user mention
            behaves like creates the todo and sends email
              creates a todo and sends email
# [RSpecRunTime] RSpec elapsed time: 6 minutes 55.05 seconds. Current RSS: ~1537M. load average: 1.02 1.18 1.34 1/290 7341


          when title contains a user mention
            behaves like creates the todo and sends email
              creates a todo and sends email
# [RSpecRunTime] RSpec elapsed time: 6 minutes 56.25 seconds. Current RSS: ~1537M. load average: 1.02 1.18 1.34 1/290 7342


        when work item validation fails
          returns validation errors
          does not execute after-update widgets
      for start and due date widget
        when due_date is updated
          behaves like update service that triggers graphql dates updated subscription
            triggers graphql subscription issueableDatesUpdated
        when start_date is updated
          behaves like update service that triggers graphql dates updated subscription
            triggers graphql subscription issueableDatesUpdated
        when no date param is updated
          does not trigger date updated subscription
      for the hierarchy widget
        updates the children of the work item
        behaves like update service that triggers GraphQL work_item_updated subscription
          triggers graphql subscription workItemUpdated
# [RSpecRunTime] RSpec elapsed time: 7 minutes 0.36 second. Current RSS: ~1535M. load average: 1.02 1.18 1.34 1/290 7343


        when child type is invalid
          returns error status
          does not update work item attributes
        when work item validation fails
          returns validation errors
          does not execute after-update widgets
      for milestone widget
        when milestone is updated
          triggers 'issuableMilestoneUpdated'
          behaves like update service that triggers GraphQL work_item_updated subscription
            triggers graphql subscription workItemUpdated
# [RSpecRunTime] RSpec elapsed time: 7 minutes 3.56 seconds. Current RSS: ~1532M. load average: 1.02 1.18 1.34 1/290 7344


        when milestone remains unchanged
          does not trigger 'issuableMilestoneUpdated'
      for current user todos widget
        when action is mark_as_done
          marks current user todo as done
          behaves like update service that triggers GraphQL work_item_updated subscription
            triggers graphql subscription workItemUpdated
# [RSpecRunTime] RSpec elapsed time: 7 minutes 5.13 seconds. Current RSS: ~1532M. load average: 1.02 1.17 1.33 1/290 7345


        when action is add
          adds a ToDo for the work item
    label updates
      when labels are changed
        tracks users updating work item labels
        behaves like update service that triggers GraphQL work_item_updated subscription
          triggers graphql subscription workItemUpdated
# [RSpecRunTime] RSpec elapsed time: 7 minutes 6.88 seconds. Current RSS: ~1533M. load average: 1.02 1.17 1.33 1/290 7346


        behaves like broadcasting issuable labels updates
          when label is added
            triggers the GraphQL subscription
          when label is removed
            triggers the GraphQL subscription
          when label is unchanged
            does not trigger the GraphQL subscription
      when labels are not changed
        when labels param is not provided
          behaves like work item update that does not track label updates
            does not track users updating work item labels
        when labels param is provided but labels remain unchanged
          behaves like work item update that does not track label updates
            does not track users updating work item labels
        when labels param is provided invalid values
          behaves like work item update that does not track label updates
            does not track users updating work item labels

# [RSpecRunTime] Finishing example group spec/services/work_items/update_service_spec.rb. It took 28.56 seconds. Expected to take 43.63 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/pagination/offset_pagination_spec.rb. Expected to take 39.63 seconds.

Gitlab::Pagination::OffsetPagination
  #paginate
    when resource can be paginated
      first page
        does not return the total headers when excluding them
        when resources count is less than MAX_COUNT_LIMIT
          behaves like paginated response
            returns appropriate amount of resources
            executes only one SELECT COUNT query
# [RSpecRunTime] RSpec elapsed time: 7 minutes 14.04 seconds. Current RSS: ~1528M. load average: 1.02 1.17 1.33 1/290 7347


          behaves like response with pagination headers
            adds appropriate headers
# [RSpecRunTime] RSpec elapsed time: 7 minutes 15.33 seconds. Current RSS: ~1531M. load average: 1.02 1.17 1.33 1/290 7348


        when resources count is more than MAX_COUNT_LIMIT
          does not return the X-Total and X-Total-Pages headers
          behaves like paginated response
            returns appropriate amount of resources
            executes only one SELECT COUNT query
# [RSpecRunTime] RSpec elapsed time: 7 minutes 19.12 seconds. Current RSS: ~1517M. load average: 1.01 1.17 1.33 1/290 7349


        when without_count is true
          does not return the X-Total and X-Total-Pages headers
          behaves like paginated response
            returns appropriate amount of resources
            executes only one SELECT COUNT query
# [RSpecRunTime] RSpec elapsed time: 7 minutes 22.95 seconds. Current RSS: ~1518M. load average: 1.01 1.17 1.33 1/290 7350


        when resource already paginated
          when per_page param is specified
            returns appropriate amount of resources based on per_page param
# [RSpecRunTime] RSpec elapsed time: 7 minutes 24.21 seconds. Current RSS: ~1518M. load average: 1.01 1.16 1.33 1/290 7351


          when page and per page params are strings
            returns appropriate amount of resources
# [RSpecRunTime] RSpec elapsed time: 7 minutes 25.92 seconds. Current RSS: ~1511M. load average: 1.01 1.16 1.33 1/290 7352


          when per_page param is blank
            returns appropriate amount of resources
# [RSpecRunTime] RSpec elapsed time: 7 minutes 28.06 seconds. Current RSS: ~1511M. load average: 1.01 1.16 1.33 1/290 7353


          when page param is blank
            returns appropriate amount of resources based on resource per(N)
# [RSpecRunTime] RSpec elapsed time: 7 minutes 29.38 seconds. Current RSS: ~1509M. load average: 1.01 1.16 1.32 1/290 7354


        when resource does not respond to limit_value
          when page param is blank
            returns appropriate amount of resources
# [RSpecRunTime] RSpec elapsed time: 7 minutes 30.82 seconds. Current RSS: ~1510M. load average: 1.01 1.16 1.32 1/290 7355


          when per_page param is blank
            returns appropriate amount of resources with default per page value
# [RSpecRunTime] RSpec elapsed time: 7 minutes 32.15 seconds. Current RSS: ~1510M. load average: 1.01 1.16 1.32 1/290 7356


        when resource is a paginatable array
          only returns the requested resources
          does not return total headers when excluding them
          behaves like response with pagination headers
            adds appropriate headers
# [RSpecRunTime] RSpec elapsed time: 7 minutes 35.99 seconds. Current RSS: ~1514M. load average: 1.01 1.16 1.32 1/290 7357


      second page
        returns appropriate amount of resources
        adds appropriate headers
# [RSpecRunTime] RSpec elapsed time: 7 minutes 38.57 seconds. Current RSS: ~1515M. load average: 1.01 1.16 1.32 1/290 7358


      if order
        is not present it adds default order(:id) if no order is present
        is present it does not add anything
# [RSpecRunTime] RSpec elapsed time: 7 minutes 41.18 seconds. Current RSS: ~1515M. load average: 1.01 1.15 1.32 1/290 7359


    when resource empty
      first page
        returns appropriate amount of resources
        adds appropriate headers

# [RSpecRunTime] Finishing example group spec/lib/gitlab/pagination/offset_pagination_spec.rb. It took 31.08 seconds. Expected to take 39.63 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/closing_issue_extractor_spec.rb. Expected to take 36.93 seconds.

Gitlab::ClosingIssueExtractor
  #closed_by_message
    with a single reference
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      is expected to eq [#<Issue id:5 namespace148/project-164#1>]
      with an external issue tracker reference
        extracts the referenced issue
        extracts the referenced issue even if GitLab issues are disabled for the project
# [RSpecRunTime] RSpec elapsed time: 7 minutes 53.17 seconds. Current RSS: ~1538M. load average: 1.01 1.15 1.32 1/290 7360


    with a cross-project reference
      is expected to eq [#<Issue id:6 namespace149/project-165#1>]
    with a cross-project URL
      is expected to eq [#<Issue id:6 namespace149/project-165#1>]
    with a cross-project fork reference
      is expected to be empty
    when target project has autoclose issues disabled
      omits the issue reference
    when target project has issues disabled
      omits the issue reference
    with an invalid URL
      is expected to eq []
    with an invalid keyword such as suffix insted of fix
      is expected to eq []
    with multiple references
      fetches issues in single line message
      fetches comma-separated issues references in single line message
      fetches comma-separated issues numbers in single line message
      allows oxford commas (comma before and) when referencing multiple issues
      allows spaces before commas when referencing multiple issues
      allows non-comma-separated issue numbers in single line message
      allows mixed comma-separated and non-comma-separated issue numbers in single line message
      fetches issues in multi-line message
      fetches issues in hybrid message
      fetches cross-project references
      fetches cross-project URL references
      ignores invalid cross-project URL references
# [RSpecRunTime] RSpec elapsed time: 7 minutes 57.7 seconds. Current RSS: ~1537M. load average: 1.01 1.14 1.31 1/290 7363


    with autoclose referenced issues disabled
      excludes same project references
      includes issues from other projects with autoclose enabled

# [RSpecRunTime] Finishing example group spec/lib/gitlab/closing_issue_extractor_spec.rb. It took 16.74 seconds. Expected to take 36.93 seconds.
# [RSpecRunTime] Starting example group spec/models/design_management/version_spec.rb. Expected to take 34.66 seconds.

DesignManagement::Version
  does not allow STI
  relations
    is expected to have many actions
    is expected to have many designs through actions
    constrains the designs relation correctly
    allows adding multiple versions to a single design
# [RSpecRunTime] RSpec elapsed time: 8 minutes 1.24 seconds. Current RSS: ~1531M. load average: 1.01 1.14 1.31 1/290 7364


  validations
    is expected to be valid
    is expected to validate that :author cannot be empty/falsy
    is expected to validate that :sha cannot be empty/falsy
    is expected to validate that :designs cannot be empty/falsy
    is expected to validate that :issue cannot be empty/falsy
    is expected to validate that :sha is case-insensitively unique within the scope of :issue_id
# [RSpecRunTime] RSpec elapsed time: 8 minutes 4.11 seconds. Current RSS: ~1530M. load average: 1.00 1.14 1.31 1/290 7365


  scopes
    .for_designs
      only returns versions related to the specified designs
# [RSpecRunTime] RSpec elapsed time: 8 minutes 6.49 seconds. Current RSS: ~1518M. load average: 1.00 1.14 1.31 1/290 7366


    .earlier_or_equal_to
      only returns versions created earlier or later than the given version
      can be passed either a DesignManagement::Version or an ID
    .by_sha
      can find versions by sha
  .create_for_designs
    does not leave invalid versions around if creation fails
    does not leave orphaned design-versions around if creation fails
    creates a version and links it to multiple designs
    creates designs if they are new to git
    correctly associates the version with the issue
    correctly associates the version with the author
    modifies designs if git updated them
    deletes designs when the git action was delete
    re-creates designs if they are deleted
    changes the version of the designs
    the error raised when there are no actions
      raises CouldNotCreateVersion
      has an appropriate cause
      provides extra data sentry can consume
# [RSpecRunTime] RSpec elapsed time: 8 minutes 8.24 seconds. Current RSS: ~1537M. load average: 1.00 1.14 1.31 1/290 7367


    the error raised when the designs come from different issues
      raises CouldNotCreateVersion
      has an appropriate cause
      provides extra data sentry can consume
  #designs_by_event
    there is a single design
      behaves like a correctly categorised design
        returns a hash with a single key and the single design in that bucket
      behaves like a correctly categorised design
        returns a hash with a single key and the single design in that bucket
      behaves like a correctly categorised design
        returns a hash with a single key and the single design in that bucket
    there are a bunch of different designs in a variety of states
      puts them in the right buckets
      does not suffer from N+1 queries
# [RSpecRunTime] RSpec elapsed time: 8 minutes 15.31 seconds. Current RSS: ~1523M. load average: 1.08 1.15 1.31 1/290 7368


  #author
    returns the author
    returns nil if author_id is nil and version is not persisted
    retrieves author from the Commit if author_id is nil and version has been persisted
# [RSpecRunTime] RSpec elapsed time: 8 minutes 17.3 seconds. Current RSS: ~1523M. load average: 1.08 1.15 1.31 1/292 7388


  #diff_refs
    there is a commit in the repo by the SHA
      is expected to have attributes {:diff_refs => #<Gitlab::Diff::DiffRefs:0x00007a0364ce4438 @base_sha="6f6d7e7ed97bb5f0054f2b1df789b39ca...a="6f6d7e7ed97bb5f0054f2b1df789b39ca89b6ff9", @head_sha="570e7b2abdd848b95f2f578043fc23bd6f6fd24d">}
      memoizes calls to #diff_refs
    there is no commit in the repo by the SHA
      is expected to have attributes {:diff_refs => (be nil)}
  #reset
    removes memoized values

# [RSpecRunTime] Finishing example group spec/models/design_management/version_spec.rb. It took 19.78 seconds. Expected to take 34.66 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/diff/file_collection/merge_request_diff_batch_spec.rb. Expected to take 32.38 seconds.

Gitlab::Diff::FileCollection::MergeRequestDiffBatch
  initialize
    memoizes pagination_data
# [RSpecRunTime] RSpec elapsed time: 8 minutes 19.09 seconds. Current RSS: ~1522M. load average: 1.08 1.15 1.31 1/296 7429


  #diff_files
    returns paginated diff files
    returns a valid instance of a DiffCollection
    first page
      returns correct diff files
# [RSpecRunTime] RSpec elapsed time: 8 minutes 23.55 seconds. Current RSS: ~1548M. load average: 1.08 1.15 1.31 1/296 7550


    another page
      returns correct diff files
    nil batch_page
      returns correct diff files
    nil batch_size
      returns correct diff files
# [RSpecRunTime] RSpec elapsed time: 8 minutes 26.53 seconds. Current RSS: ~1563M. load average: 1.07 1.15 1.31 1/296 7671


    invalid page
      returns correct diff files
# [RSpecRunTime] RSpec elapsed time: 8 minutes 27.57 seconds. Current RSS: ~1565M. load average: 1.07 1.15 1.31 1/296 7711


    last page
      returns correct diff files
# [RSpecRunTime] RSpec elapsed time: 8 minutes 28.66 seconds. Current RSS: ~1566M. load average: 1.07 1.15 1.31 1/296 7752


  behaves like unfoldable diff
    calls Gitlab::Diff::File#unfold_diff_lines with correct position
  behaves like diff statistics
    when include_stats is true
      Repository#diff_stats is called
      Gitlab::Diff::File is initialized with diff stats
# [RSpecRunTime] RSpec elapsed time: 8 minutes 31.71 seconds. Current RSS: ~1567M. load average: 1.07 1.14 1.31 1/296 7872


    when should not request diff stats
      Repository#diff_stats is not called
# [RSpecRunTime] RSpec elapsed time: 8 minutes 32.8 seconds. Current RSS: ~1566M. load average: 1.07 1.14 1.31 1/297 7912


  behaves like cacheable diff collection
    #write_cache
      calls Gitlab::Diff::HighlightCache#write_if_empty
      calls Gitlab::Diff::StatsCache#write_if_empty with diff stats
# [RSpecRunTime] RSpec elapsed time: 8 minutes 34.8 seconds. Current RSS: ~1567M. load average: 1.06 1.14 1.30 1/297 7992


    #clear_cache
      calls Gitlab::Diff::HighlightCache#clear
      calls Gitlab::Diff::StatsCache#clear
# [RSpecRunTime] RSpec elapsed time: 8 minutes 36.78 seconds. Current RSS: ~1568M. load average: 1.06 1.14 1.30 1/297 8071


    #diff_files
      calls Gitlab::Diff::HighlightCache#decorate
      when there are stats cached
        does not make a diff stats rpc call
# [RSpecRunTime] RSpec elapsed time: 8 minutes 38.87 seconds. Current RSS: ~1570M. load average: 1.14 1.16 1.31 1/297 8151


      when there are no stats cached
        makes a diff stats rpc call
# [RSpecRunTime] RSpec elapsed time: 8 minutes 39.94 seconds. Current RSS: ~1569M. load average: 1.14 1.16 1.31 1/297 8191


  behaves like unsortable diff files
    #raw_diff_files
      does not call Gitlab::Diff::FileCollectionSorter even when sorted is true
# [RSpecRunTime] RSpec elapsed time: 8 minutes 41.06 seconds. Current RSS: ~1569M. load average: 1.14 1.16 1.31 1/297 8232



# [RSpecRunTime] Finishing example group spec/lib/gitlab/diff/file_collection/merge_request_diff_batch_spec.rb. It took 23.21 seconds. Expected to take 32.38 seconds.
# [RSpecRunTime] Starting example group spec/policies/project_snippet_policy_spec.rb. Expected to take 30.64 seconds.

ProjectSnippetPolicy
  when project is public
    with public snippet
      no user
        is expected not to be allowed :admin_snippet
      regular user
        when user is not a member
          and is not the snippet author
            is expected not to be allowed :admin_snippet
          and is the snippet author
            behaves like regular user non-member author permissions
              is expected not to be allowed :admin_snippet
        when user is a member
          behaves like regular user member permissions
            not snippet author
              member (guest)
                is expected not to be allowed :admin_snippet
              member (reporter)
                is expected not to be allowed :admin_snippet
              member (developer)
                is expected not to be allowed :admin_snippet
              member (maintainer)
                is expected to be allowed :admin_snippet
            snippet author
              member (guest)
                is expected not to be allowed :admin_snippet
              member (reporter)
                is expected to be allowed :admin_snippet
              member (developer)
                is expected to be allowed :admin_snippet
              member (maintainer)
                is expected to be allowed :admin_snippet
      external user
        is expected not to be allowed :admin_snippet
        when user is a member
          is expected not to be allowed :admin_snippet
    with internal snippet
      no user
        is expected not to be allowed :admin_snippet
      regular user
        when user is not a member
          and is not the snippet author
            is expected not to be allowed :admin_snippet
          and is the snippet author
            behaves like regular user non-member author permissions
              is expected not to be allowed :admin_snippet
        when user is a member
          behaves like regular user member permissions
            not snippet author
              member (guest)
                is expected not to be allowed :admin_snippet
              member (reporter)
                is expected not to be allowed :admin_snippet
              member (developer)
                is expected not to be allowed :admin_snippet
              member (maintainer)
                is expected to be allowed :admin_snippet
            snippet author
              member (guest)
                is expected not to be allowed :admin_snippet
              member (reporter)
                is expected to be allowed :admin_snippet
              member (developer)
                is expected to be allowed :admin_snippet
              member (maintainer)
                is expected to be allowed :admin_snippet
      external user
        is expected not to be allowed :admin_snippet
        when user is a member
          is expected not to be allowed :admin_snippet
    with private snippet
      no user
        is expected not to be allowed :admin_snippet
      regular user
        when user is not a member
          and is not the snippet author
            is expected not to be allowed :admin_snippet
          and is the snippet author
            behaves like regular user non-member author permissions
              is expected not to be allowed :admin_snippet
        when user is a member
          behaves like regular user member permissions
            not snippet author
              member (guest)
                is expected not to be allowed :admin_snippet
              member (reporter)
                is expected not to be allowed :admin_snippet
              member (developer)
                is expected not to be allowed :admin_snippet
              member (maintainer)
                is expected to be allowed :admin_snippet
            snippet author
              member (guest)
                is expected not to be allowed :admin_snippet
              member (reporter)
                is expected to be allowed :admin_snippet
              member (developer)
                is expected to be allowed :admin_snippet
              member (maintainer)
                is expected to be allowed :admin_snippet
      inherited user
        behaves like regular user member permissions
          not snippet author
            member (guest)
              is expected not to be allowed :admin_snippet
            member (reporter)
              is expected not to be allowed :admin_snippet
            member (developer)
              is expected not to be allowed :admin_snippet
            member (maintainer)
              is expected to be allowed :admin_snippet
          snippet author
            member (guest)
              is expected not to be allowed :admin_snippet
            member (reporter)
              is expected to be allowed :admin_snippet
            member (developer)
              is expected to be allowed :admin_snippet
            member (maintainer)
              is expected to be allowed :admin_snippet
      external user
        is expected not to be allowed :admin_snippet
        when user is a member
          is expected not to be allowed :admin_snippet
      admin user
        when admin mode is enabled
          is expected to be allowed :admin_snippet
        when admin mode is disabled
          is expected not to be allowed :admin_snippet
  when project is private
    inherited user
      behaves like regular user member permissions
        not snippet author
          member (guest)
            is expected not to be allowed :admin_snippet
          member (reporter)
            is expected not to be allowed :admin_snippet
          member (developer)
            is expected not to be allowed :admin_snippet
          member (maintainer)
            is expected to be allowed :admin_snippet
        snippet author
          member (guest)
            is expected not to be allowed :admin_snippet
          member (reporter)
            is expected to be allowed :admin_snippet
          member (developer)
            is expected to be allowed :admin_snippet
          member (maintainer)
            is expected to be allowed :admin_snippet
  when the author of the snippet is banned
    no user
      is expected not to be allowed :admin_snippet
    regular user
      is expected not to be allowed :admin_snippet
    external user
      is expected not to be allowed :admin_snippet
    admin user
      is expected to be allowed :admin_snippet

# [RSpecRunTime] Finishing example group spec/policies/project_snippet_policy_spec.rb. It took 14.46 seconds. Expected to take 30.64 seconds.
# [RSpecRunTime] Starting example group spec/helpers/emails_helper_spec.rb. Expected to take 29.17 seconds.

EmailsHelper
  closure_reason_text
    when given a MergeRequest
      when user can read merge request
        and format is text
          returns plain text
# [RSpecRunTime] RSpec elapsed time: 8 minutes 56.88 seconds. Current RSS: ~1556M. load average: 1.10 1.15 1.30 1/297 8277


        and format is HTML
          returns HTML
# [RSpecRunTime] RSpec elapsed time: 8 minutes 58.18 seconds. Current RSS: ~1559M. load average: 1.10 1.15 1.30 1/297 8317


        and format is unknown
          returns plain text
# [RSpecRunTime] RSpec elapsed time: 8 minutes 59.39 seconds. Current RSS: ~1560M. load average: 1.10 1.14 1.30 1/297 8357


      when user cannot read merge request
        does not have link to merge request
    when given a String
      when user can read commits
        returns plain text
      when user cannot read commits
        returns plain text
    when not given anything
      returns empty string
  notification_reason_text
    reason_code: "own_activity", reason_text: " of your activity "
      is expected to start with "You're receiving this email because"
      is expected to include " of your activity "
      is expected to end with "on localhost."
    reason_code: "assigned", reason_text: " you have been assigned an item "
      is expected to start with "You're receiving this email because"
      is expected to include " you have been assigned an item "
      is expected to end with "on localhost."
    reason_code: "mentioned", reason_text: " you have been mentioned "
      is expected to start with "You're receiving this email because"
      is expected to include " you have been mentioned "
      is expected to end with "on localhost."
    reason_code: "", reason_text: " of your account "
      is expected to start with "You're receiving this email because"
      is expected to include " of your account "
      is expected to end with "on localhost."
    reason_code: nil, reason_text: " of your account "
      is expected to start with "You're receiving this email because"
      is expected to include " of your account "
      is expected to end with "on localhost."
  sanitize_name
    when name contains a valid URL string
      returns name with `.` replaced with `_` to prevent mail clients from auto-linking URLs
      returns name as it is when it does not contain a URL
  #say_hi
    returns the greeting message for the given user
  #say_hello
    returns the greeting message for the given user
  #two_factor_authentication_disabled_text
    returns the message that 2FA is disabled
  #re_enable_two_factor_authentication_text
    format is html
      returns HTML
    format is not specified
      returns text
  #admin_changed_password_text
    format is html
      returns HTML
    format is not specified
      returns text
  #contact_your_administrator_text
    returns the message to contact the administrator
  password_reset_token_valid_time
    when time limit is less than 2 hours
      displays the time in hours using a singular unit
    when time limit is 2 or more hours
      displays the time in hours using a plural unit
    when time limit contains fractions of an hour
      rounds down to the nearest hour
    when time limit is 24 or more hours
      displays the time in days using a singular unit
    when time limit is 2 or more days
      displays the time in days using a plural unit
    when time limit contains fractions of a day
      rounds down to the nearest day
  #header_logo
    there is a brand item with a logo
      returns the brand header logo
      that is a SVG file
        returns the default header logo
    there is a brand item without a logo
      returns the default header logo
    there is no brand item
      returns the default header logo
  #create_list_id_string
    full_path: "01234", list_id_path: "01234"
      ellipcizes different variants
    full_path: "5/0123", list_id_path: "012.."
      ellipcizes different variants
    full_path: "45/012", list_id_path: "012.."
      ellipcizes different variants
    full_path: "012", list_id_path: "012"
      ellipcizes different variants
    full_path: "23/01", list_id_path: "01.23"
      ellipcizes different variants
    full_path: "2/01", list_id_path: "01.2"
      ellipcizes different variants
    full_path: "234/01", list_id_path: "01.."
      ellipcizes different variants
    full_path: "4/2/0", list_id_path: "0.2.4"
      ellipcizes different variants
    full_path: "45/2/0", list_id_path: "0.2.."
      ellipcizes different variants
    full_path: "5/23/0", list_id_path: "0.."
      ellipcizes different variants
    full_path: "0-2/5", list_id_path: "5.0-2"
      ellipcizes different variants
    full_path: "0_2/5", list_id_path: "5.0-2"
      ellipcizes different variants
    full_path: "0.2/5", list_id_path: "5.0-2"
      ellipcizes different variants
  Create realistic List-Id identifier
    full_path: "gitlab-org/gitlab-ce", list_id_path: "gitlab-ce.gitlab-org"
      produces the right List-Id
    full_path: "project-name/subproject_name/my.project", list_id_path: "my-project.subproject-name.project-name"
      produces the right List-Id
  header and footer messages
    when email_header_and_footer_enabled is enabled
      returns header and footer messages
      when header and footer messages are empty
        returns nil
      when header and footer messages are nil
        returns nil
    when email_header_and_footer_enabled is disabled
      returns header and footer messages
  #change_reviewer_notification_text
    to new reviewers only
      with no html tag
        returns the expected output
      with <strong> tag
        returns the expected output
    from previous reviewers to new reviewers
      with no html tag
        returns the expected output
      with <strong> tag
        returns the expected output
    from previous reviewers to no reviewers
      with no html tag
        returns the expected output
      with <strong> tag
        returns the expected output
    with a <script> tag in user's name
      escapes the html tag
    with url in user's name
      sanitizes user's name

# [RSpecRunTime] Finishing example group spec/helpers/emails_helper_spec.rb. It took 12.65 seconds. Expected to take 29.17 seconds.
# [RSpecRunTime] Starting example group spec/graphql/mutations/merge_requests/set_locked_spec.rb. Expected to take 27.57 seconds.

Mutations::MergeRequests::SetLocked
  is expected to require graphql authorizations :update_merge_request
  #resolve
    behaves like permission level for merge request mutation is correctly verified
      when the user is not a project member
        behaves like when the user does not have access to the resource
          raises an error
          even if assigned to the merge request
            does not modify merge request
# [RSpecRunTime] RSpec elapsed time: 9 minutes 10.71 seconds. Current RSS: ~1588M. load average: 1.08 1.14 1.30 1/297 8476


          even if reviewer of the merge request
            raises an error
# [RSpecRunTime] RSpec elapsed time: 9 minutes 12.02 seconds. Current RSS: ~1585M. load average: 1.08 1.14 1.30 1/297 8516


          even if author of the merge request
            raises an error
# [RSpecRunTime] RSpec elapsed time: 9 minutes 13.23 seconds. Current RSS: ~1588M. load average: 1.08 1.14 1.30 1/297 8556


      when the user is a project member
        with guest role
          behaves like when the user does not have access to the resource
            raises an error
            even if assigned to the merge request
              does not modify merge request
# [RSpecRunTime] RSpec elapsed time: 9 minutes 15.78 seconds. Current RSS: ~1583M. load average: 1.39 1.20 1.32 1/297 8635


            even if reviewer of the merge request
              raises an error
# [RSpecRunTime] RSpec elapsed time: 9 minutes 17.12 seconds. Current RSS: ~1580M. load average: 1.39 1.20 1.32 1/297 8675


            even if author of the merge request
              raises an error
# [RSpecRunTime] RSpec elapsed time: 9 minutes 18.44 seconds. Current RSS: ~1574M. load average: 1.39 1.20 1.32 1/297 8715


        with reporter role
          behaves like when the user does not have access to the resource
            raises an error
            even if assigned to the merge request
              does not modify merge request
# [RSpecRunTime] RSpec elapsed time: 9 minutes 21.38 seconds. Current RSS: ~1561M. load average: 1.36 1.20 1.31 1/298 8794


            even if reviewer of the merge request
              raises an error
# [RSpecRunTime] RSpec elapsed time: 9 minutes 22.74 seconds. Current RSS: ~1557M. load average: 1.36 1.20 1.31 4/298 8834


            even if author of the merge request
              raises an error
# [RSpecRunTime] RSpec elapsed time: 9 minutes 25.57 seconds. Current RSS: ~1551M. load average: 1.33 1.20 1.31 1/297 8874


    when the user can update the merge request
      returns the merge request as discussion locked
      returns errors merge request could not be updated
      when passing locked as false
        unlocks the discussion
# [RSpecRunTime] RSpec elapsed time: 9 minutes 30.21 seconds. Current RSS: ~1552M. load average: 1.31 1.19 1.31 1/297 8992



# [RSpecRunTime] Finishing example group spec/graphql/mutations/merge_requests/set_locked_spec.rb. It took 22.03 seconds. Expected to take 27.57 seconds.
# [RSpecRunTime] Starting example group spec/helpers/diff_helper_spec.rb. Expected to take 26.66 seconds.

DiffHelper
  diff_view
    uses the view param over the cookie
    returns the default value when the view param is invalid
    returns a valid value when cookie is set
    returns the default value when cookie is invalid
    returns the default value when cookie is nil
  diff_options
    returns no collapse false
    returns no collapse true if expanded
    when action name is diff_for_path
      returns expanded true
      returns paths if param old path
      returns paths if param new path
      does not set max_patch_bytes_for_file_extension
      when file_identifier include .ipynb
        when large_ipynb_diffs is disabled
          does not set max_patch_bytes_for_file_extension
        when large_ipynb_diffs is enabled
          sets max_patch_bytes_for_file_extension
  #diff_line_content
    when the line is empty
      returns a non breaking space
      returns an HTML-safe string
    when the line is not empty
      when the line starts with +, -, or a space
        strips the first character
        when the line is HTML-safe
          returns an HTML-safe string
        when the line is not HTML-safe
          returns a non-HTML-safe string
      when the line does not start with a +, -, or a space
        returns the string
        when the line is HTML-safe
          returns an HTML-safe string
        when the line is not HTML-safe
          returns a non-HTML-safe string
  #diff_link_number
    line_type: "new", match: "new", line_number: 1, expected_return_value: " "
      returns the expected value
    line_type: "new", match: "old", line_number: 2, expected_return_value: 2
      returns the expected value
    line_type: "old", match: "new", line_number: 3, expected_return_value: 3
      returns the expected value
    line_type: "old", match: "old", line_number: 4, expected_return_value: " "
      returns the expected value
    line_type: "new-nonewline", match: "new", line_number: 5, expected_return_value: 5
      returns the expected value
    line_type: "new-nonewline", match: "old", line_number: 6, expected_return_value: 6
      returns the expected value
    line_type: "old-nonewline", match: "new", line_number: 7, expected_return_value: 7
      returns the expected value
    line_type: "old-nonewline", match: "old", line_number: 8, expected_return_value: 8
      returns the expected value
    line_type: "match", match: "new", line_number: 9, expected_return_value: 9
      returns the expected value
    line_type: "match", match: "old", line_number: 10, expected_return_value: 10
      returns the expected value
  #parallel_diff_btn
    renders button
  #mark_inline_diffs
    returns strings with marked inline diffs
    when given HTML
      sanitizes it
      sanitizes the entire line, not just the changes
  #parallel_diff_discussions
    does not put comments on nonewline lines
    puts comments on added lines
    puts comments on unchanged lines
  #diff_match_line
    generates foldable top match line for inline view with empty text by default
    allows to define text and bottom option
    generates match line for parallel view
    allows to generate only left match line for parallel view
    allows to generate only right match line for parallel view
  #diff_nomappinginraw_line
    generates only single line num
    generates only both line nums
    line_type: "old-nomappinginraw", added_class: ".old"
      appends the correct class
    line_type: "new-nomappinginraw", added_class: ".new"
      appends the correct class
    line_type: "unchanged-nomappinginraw", added_class: ""
      appends the correct class
  #render_overflow_warning?
    when no limits are hit
      returns false and does not log any overflow events
    overflow_method: :overflow_max_bytes?, event_name: :diffs_overflow_max_bytes_limits
      returns false and only logs the correct collection overflow event
    overflow_method: :overflow_max_files?, event_name: :diffs_overflow_max_files_limits
      returns false and only logs the correct collection overflow event
    overflow_method: :overflow_max_lines?, event_name: :diffs_overflow_max_lines_limits
      returns false and only logs the correct collection overflow event
    overflow_method: :collapsed_safe_bytes?, event_name: :diffs_overflow_collapsed_bytes_limits
      returns false and only logs the correct collection overflow event
    overflow_method: :collapsed_safe_files?, event_name: :diffs_overflow_collapsed_files_limits
      returns false and only logs the correct collection overflow event
    overflow_method: :collapsed_safe_lines?, event_name: :diffs_overflow_collapsed_lines_limits
      returns false and only logs the correct collection overflow event
    when the file collection has an overflow
      returns true and only logs all the correct collection overflow event
    when two individual files are too big
      returns false and only logs single file overflow events
  #diff_file_html_data
    returns data for project files
  #collapsed_diff_url
    returns a valid URL
  #params_with_whitespace
    filters with safe_params
  #render_fork_suggestion
    user signed in
      renders the partial
    guest
      is expected to be nil
  #conflicts
    returns list of conflicts indexed by path
    when merge request can be merged
      returns nil
    when source branch does not exist
      returns nil
    when target branch does not exist
      returns nil
    when conflicts cannot be resolved in UI
      returns nil
      when allow_tree_conflicts is true
        returns list of conflicts
    when Gitlab::Git::Conflict::Resolver::ConflictSideMissing exception is raised
      returns an empty hash
  #show_only_context_commits?
    when only_context_commits param is set to true
      is expected to be truthy
      when merge request has commits
        is expected to be truthy
    when only_context_commits param is set to false
      is expected to be truthy
      when merge request has commits
        is expected to be falsey
  #submodule_diff_compare_link
    when the diff includes submodule changes
      generates a link to compare a diff for a submodule
    when the diff does not include submodule changes
      returns an empty string

# [RSpecRunTime] Finishing example group spec/helpers/diff_helper_spec.rb. It took 9.49 seconds. Expected to take 26.66 seconds.
# [RSpecRunTime] Starting example group spec/models/application_record_spec.rb. Expected to take 25.43 seconds.

ApplicationRecord
  does not allow STI
  #id_in
    returns records of the ids
  .safe_ensure_unique
    returns false when ActiveRecord::RecordNotUnique is raised
    retries based on retry count specified
# [RSpecRunTime] RSpec elapsed time: 9 minutes 41.56 seconds. Current RSS: ~1594M. load average: 1.34 1.20 1.31 1/297 9096


  safe find or create methods
    .safe_find_or_create_by
      creates the suggestion avoiding race conditions
      passes a block to find_or_create_by
      does not create a record when is not valid
# [RSpecRunTime] RSpec elapsed time: 9 minutes 42.79 seconds. Current RSS: ~1592M. load average: 1.34 1.20 1.31 1/297 9149


    .safe_find_or_create_by!
      creates a record using safe_find_or_create_by
      raises a validation error if the record was not persisted
      passes a block to find_or_create_by
      raises a record not found error in case of attributes mismatch
  .underscore
    returns the underscored value of the class as a string
  .where_exists
    produces a WHERE EXISTS query
  .where_not_exists
    produces a WHERE NOT EXISTS query
  .transaction
    opens a new transaction
    does not increment a counter when a transaction is not nested
    increments a counter when a nested transaction is created
    increments a counter when a transaction is created in ActiveRecord
# [RSpecRunTime] RSpec elapsed time: 9 minutes 56.7 seconds. Current RSS: ~1503M. load average: 1.26 1.19 1.31 1/291 9150


  .with_fast_read_statement_timeout
    when the query runs faster than configured timeout
      executes the query without error
    when the query runs longer than configured timeout
      cancels the query and raises an exception
    with database load balancing
      yields control
      when the query runs faster than configured timeout
        executes the query without error
      when the query runs longer than configured timeout
        cancels the query and raiss an exception
  .default_select_columns
    without an ignored column
      behaves like selects identically to the default
        generates the same sql as the default
    with an ignored column
      behaves like selects identically to the default
        generates the same sql as the default

# [RSpecRunTime] Finishing example group spec/models/application_record_spec.rb. It took 17.78 seconds. Expected to take 25.43 seconds.
# [RSpecRunTime] Starting example group spec/lib/banzai/reference_parser/user_parser_spec.rb. Expected to take 24.06 seconds.

Banzai::ReferenceParser::UserParser
  #referenced_by
    when the link has a data-group attribute
      using an existing group ID
        returns an empty Array when the group has no users
        when group has members
          returns the relevant users of the group with enough access
          returns an empty Array when the group has mentions disabled
# [RSpecRunTime] RSpec elapsed time: 10 minutes 2.12 seconds. Current RSS: ~1518M. load average: 1.24 1.19 1.30 1/291 9151


      using a non-existing group ID
        returns an empty Array
    when the link has a data-user attribute
      returns an Array of users
      when RequestStore is active
        does not return users from the first call in the second
# [RSpecRunTime] RSpec elapsed time: 10 minutes 4.11 seconds. Current RSS: ~1526M. load average: 1.22 1.19 1.30 1/291 9152


    when the link has a data-project attribute
      using an existing project ID
        returns the members of a project
      using a non-existing project ID
        returns an empty Array
  #nodes_visible_to_user
    when the link has a data-group attribute
      using an existing group ID
        returns the nodes if the user can read the group
        returns an empty Array if the user can not read the group
# [RSpecRunTime] RSpec elapsed time: 10 minutes 7.05 seconds. Current RSS: ~1519M. load average: 1.22 1.19 1.30 1/291 9153


      when the link does not have a data-group attribute
        with a data-project attribute
          returns the nodes if the attribute value equals the current project ID
          returns the nodes if the user can read the project
          returns an empty Array if the user can not read the project
# [RSpecRunTime] RSpec elapsed time: 10 minutes 11.18 seconds. Current RSS: ~1514M. load average: 1.20 1.18 1.30 1/291 9154


        without a data-project attribute
          returns the nodes
  #nodes_user_can_reference
    when the link has a data-author attribute
      returns the nodes when the user is a member of the project
      returns an empty Array when the project could not be found
      returns an empty Array when the user could not be found
      returns an empty Array when the user is not a team member
      returns the nodes if the project attribute value equals the current project ID
# [RSpecRunTime] RSpec elapsed time: 10 minutes 16.2 seconds. Current RSS: ~1522M. load average: 1.19 1.18 1.30 1/291 9155


    when the link does not have a data-author attribute
      returns the nodes

# [RSpecRunTime] Finishing example group spec/lib/banzai/reference_parser/user_parser_spec.rb. It took 19.29 seconds. Expected to take 24.06 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/github_import/importer/pull_request_importer_spec.rb. Expected to take 23.16 seconds.

Gitlab::GithubImport::Importer::PullRequestImporter
  #execute
    imports the pull request
    caches the created MR ID even if importer later fails
# [RSpecRunTime] RSpec elapsed time: 10 minutes 18.36 seconds. Current RSS: ~1540M. load average: 1.19 1.18 1.30 1/295 9176


  #create_merge_request
    when the author could be found
      imports the pull request with the pull request author as the merge request author
      returns the created merge request
      when the source and target branch are identical
        uses a generated source branch name for the merge request
# [RSpecRunTime] RSpec elapsed time: 10 minutes 20.82 seconds. Current RSS: ~1600M. load average: 1.17 1.18 1.30 1/297 9207


      when the import fails due to a foreign key error
        does not raise any errors
      when the merge request already exists
        returns the existing merge request
    when the author could not be found
      imports the pull request with the project creator as the merge request author
    when merge request is invalid
      fails validation
  #set_merge_request_assignees
    when pull request has an assignee
      sets merge request assignees
# [RSpecRunTime] RSpec elapsed time: 10 minutes 25.52 seconds. Current RSS: ~1627M. load average: 1.16 1.17 1.29 1/297 9298


    when pull request does not have any assignees
      does not set merge request assignees
  #insert_git_data
    does not create the source branch if merge request is merged
    creates a merge request diff and sets it as the latest
    creates the merge request diff commits
    when merge request is open
      creates the source branch
      is able to retry on pre-receive errors
      ignores Git command errors when creating a branch
      ignores Git PreReceive errors when creating a branch
# [RSpecRunTime] RSpec elapsed time: 10 minutes 33.08 seconds. Current RSS: ~1688M. load average: 1.15 1.17 1.29 1/297 9562


    when the merge request exists
      creates the merge request diffs if they do not yet exist
# [RSpecRunTime] RSpec elapsed time: 10 minutes 35.25 seconds. Current RSS: ~1689M. load average: 1.13 1.17 1.29 1/297 9594



# [RSpecRunTime] Finishing example group spec/lib/gitlab/github_import/importer/pull_request_importer_spec.rb. It took 18.67 seconds. Expected to take 23.16 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/templates/npm_spec.rb. Expected to take 22.42 seconds.

npm.gitlab-ci.yml
  the created pipeline
    on default branch
      when package.json has been changed
        behaves like publish job created
          creates a pipeline with a single job: publish
# [RSpecRunTime] RSpec elapsed time: 10 minutes 37.35 seconds. Current RSS: ~1689M. load average: 1.13 1.17 1.29 1/297 9641


      when package.json does not exist or has not been changed
        behaves like no pipeline created
          does not create a pipeline because the only job (publish) is not created
# [RSpecRunTime] RSpec elapsed time: 10 minutes 38.45 seconds. Current RSS: ~1685M. load average: 1.13 1.17 1.29 1/296 9688


    when the branch name is v1.0.0
      behaves like publish job created
        creates a pipeline with a single job: publish
# [RSpecRunTime] RSpec elapsed time: 10 minutes 39.55 seconds. Current RSS: ~1680M. load average: 1.12 1.16 1.29 1/296 9741


    when the tag name is v1.0.0
      behaves like publish job created
        creates a pipeline with a single job: publish
# [RSpecRunTime] RSpec elapsed time: 10 minutes 40.71 seconds. Current RSS: ~1673M. load average: 1.12 1.16 1.29 1/296 9792


    when the branch name is v2.1.0-alpha
      behaves like publish job created
        creates a pipeline with a single job: publish
# [RSpecRunTime] RSpec elapsed time: 10 minutes 41.86 seconds. Current RSS: ~1666M. load average: 1.12 1.16 1.29 1/296 9845


    when the tag name is v2.1.0-alpha
      behaves like publish job created
        creates a pipeline with a single job: publish
# [RSpecRunTime] RSpec elapsed time: 10 minutes 42.93 seconds. Current RSS: ~1665M. load average: 1.12 1.16 1.29 1/296 9896


    when the branch name is patch-1
      behaves like no pipeline created
        does not create a pipeline because the only job (publish) is not created
    when the tag name is patch-1
      behaves like no pipeline created
        does not create a pipeline because the only job (publish) is not created
    when the branch name is my-feature-branch
      behaves like no pipeline created
        does not create a pipeline because the only job (publish) is not created
# [RSpecRunTime] RSpec elapsed time: 10 minutes 45.86 seconds. Current RSS: ~1734M. load average: 1.11 1.16 1.29 1/296 10051


    when the tag name is my-feature-branch
      behaves like no pipeline created
        does not create a pipeline because the only job (publish) is not created
# [RSpecRunTime] RSpec elapsed time: 10 minutes 46.98 seconds. Current RSS: ~1757M. load average: 1.11 1.16 1.29 1/296 10102


    when the branch name is v1
      behaves like no pipeline created
        does not create a pipeline because the only job (publish) is not created
    when the tag name is v1
      behaves like no pipeline created
        does not create a pipeline because the only job (publish) is not created
    when the branch name is v1.0
      behaves like no pipeline created
        does not create a pipeline because the only job (publish) is not created
# [RSpecRunTime] RSpec elapsed time: 10 minutes 50.06 seconds. Current RSS: ~1770M. load average: 1.10 1.16 1.29 1/296 10257


    when the tag name is v1.0
      behaves like no pipeline created
        does not create a pipeline because the only job (publish) is not created
    when the branch name is 2.1.0
      behaves like no pipeline created
        does not create a pipeline because the only job (publish) is not created
    when the tag name is 2.1.0
      behaves like no pipeline created
        does not create a pipeline because the only job (publish) is not created

# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/templates/npm_spec.rb. It took 17.54 seconds. Expected to take 22.42 seconds.
# [RSpecRunTime] Starting example group spec/models/concerns/chronic_duration_attribute_spec.rb. Expected to take 21.56 seconds.

ChronicDurationAttribute
  does not allow STI
  when default value is not set
    behaves like ChronicDurationAttribute reader
      contains dynamically created reader method
      outputs chronic duration formatted value
      when value is set to nil
        outputs nil
    behaves like ChronicDurationAttribute writer
      contains dynamically created writer method
      parses chronic duration input
      passes validation
      when negative input is used
        doesn't raise exception
        doesn't change value
        doesn't pass validation
      when empty input is used
        writes default value
        passes validation
      when nil input is used
        writes default value
        passes validation
        doesn't raise exception
  when default value is set
    behaves like ChronicDurationAttribute reader
      contains dynamically created reader method
      outputs chronic duration formatted value
      when value is set to nil
        outputs nil
# [RSpecRunTime] RSpec elapsed time: 10 minutes 56.25 seconds. Current RSS: ~1801M. load average: 1.10 1.16 1.28 1/296 10410


    behaves like ChronicDurationAttribute writer
      contains dynamically created writer method
      parses chronic duration input
      passes validation
      when negative input is used
        doesn't raise exception
        doesn't change value
        doesn't pass validation
# [RSpecRunTime] RSpec elapsed time: 10 minutes 59.2 seconds. Current RSS: ~1800M. load average: 1.17 1.17 1.29 5/296 10411


      when empty input is used
        writes default value
        passes validation
# [RSpecRunTime] RSpec elapsed time: 11 minutes 0.24 second. Current RSS: ~1800M. load average: 1.17 1.17 1.29 1/296 10412


      when nil input is used
        writes default value
        passes validation
        doesn't raise exception
# [RSpecRunTime] RSpec elapsed time: 11 minutes 1.74 seconds. Current RSS: ~1796M. load average: 1.17 1.17 1.29 1/296 10413



# [RSpecRunTime] Finishing example group spec/models/concerns/chronic_duration_attribute_spec.rb. It took 8.75 seconds. Expected to take 21.56 seconds.
# [RSpecRunTime] Starting example group spec/models/concerns/chronic_duration_attribute_spec.rb. Expected to take 21.56 seconds.

ChronicDurationAttribute - reader
  does not allow STI
  doesn't contain dynamically created writer method
  behaves like ChronicDurationAttribute reader
    contains dynamically created reader method
    outputs chronic duration formatted value
    when value is set to nil
      outputs nil
# [RSpecRunTime] RSpec elapsed time: 11 minutes 4.44 seconds. Current RSS: ~1805M. load average: 1.07 1.15 1.28 1/291 10414



# [RSpecRunTime] Finishing example group spec/models/concerns/chronic_duration_attribute_spec.rb. It took 2.69 seconds. Expected to take 21.56 seconds.
# [RSpecRunTime] Starting example group spec/models/concerns/pg_full_text_searchable_spec.rb. Expected to take 20.92 seconds.

PgFullTextSearchable
  does not allow STI
  .pg_full_text_searchable
    sets pg_full_text_searchable_columns
    raises an error when called twice
  after commit hook
    when specified columns are changed
      calls update_search_data!
    when specified columns are not changed
      does not call update_search_data!
    when model is updated twice within a transaction
      calls update_search_data!
  .pg_full_text_search
    builds a search query using `search_vector` from the search_data table
    searches across all fields
    searches specified columns only
    uses prefix matching
    searches for exact term with quotes
    ignores accents regardless of user locale
    does not support searching by non-Latin characters
    when search term has a URL
      allows searching by full URL, ignoring the scheme
# [RSpecRunTime] RSpec elapsed time: 11 minutes 9.64 seconds. Current RSS: ~1805M. load average: 1.07 1.15 1.28 1/291 10415


    when search term is a path with underscores
      allows searching by the path
    when text has numbers preceded by a dash
      allows searching by numbers only
    when text has XML tags
      removes XML tag syntax
  .pg_full_text_search_in_model
    builds a search query using `search_vector` from the model table
  #update_search_data!
    sets the correct weights
    with accented and non-Latin characters
      transliterates accented characters and removes non-Latin ones
    with long words
      strips words that are 50 characters or longer
    when upsert times out
      re-raises the exception
    with strings that go over tsvector limit
      does not raise an exception
# [RSpecRunTime] RSpec elapsed time: 11 minutes 17.04 seconds. Current RSS: ~1841M. load average: 1.06 1.14 1.28 1/291 10416


    when model class does not implement persist_pg_full_text_search_vector
      raises an error

# [RSpecRunTime] Finishing example group spec/models/concerns/pg_full_text_searchable_spec.rb. It took 12.98 seconds. Expected to take 20.92 seconds.
# [RSpecRunTime] Starting example group spec/services/auto_merge_service_spec.rb. Expected to take 20.09 seconds.

AutoMergeService
  .all_strategies_ordered_by_preference
    returns all strategies in preference order
  #available_strategies
    returns available strategies
    when the head piipeline succeeded
      returns available strategies
# [RSpecRunTime] RSpec elapsed time: 11 minutes 19.35 seconds. Current RSS: ~1841M. load average: 1.06 1.14 1.27 1/297 10487


  #preferred_strategy
    returns preferred strategy
    when the head pipeline succeeded
      returns available strategies
# [RSpecRunTime] RSpec elapsed time: 11 minutes 20.56 seconds. Current RSS: ~1844M. load average: 1.06 1.14 1.27 1/298 10544


  .get_service_class
    returns service instance
    when strategy is not present
      returns nil
  #execute
    delegates to a relevant service instance
    when the head pipeline succeeded
      returns failed
    when strategy is not specified
      chooses the most preferred strategy
  #update
    when auto merge is enabled
      delegates to a relevant service instance
# [RSpecRunTime] RSpec elapsed time: 11 minutes 23.38 seconds. Current RSS: ~1857M. load average: 1.06 1.14 1.27 1/297 10668


    when auto merge is not enabled
      returns failed
# [RSpecRunTime] RSpec elapsed time: 11 minutes 24.44 seconds. Current RSS: ~1845M. load average: 1.05 1.14 1.27 1/297 10708


  #process
    delegates to a relevant service instance
    when auto merge is not enabled
      returns nil
# [RSpecRunTime] RSpec elapsed time: 11 minutes 26.37 seconds. Current RSS: ~1871M. load average: 1.05 1.14 1.27 1/297 10787


  #cancel
    delegates to a relevant service instance
    when auto merge is not enabled
      returns error
# [RSpecRunTime] RSpec elapsed time: 11 minutes 28.35 seconds. Current RSS: ~1879M. load average: 1.05 1.14 1.27 1/298 10866


  #abort
    delegates to a relevant service instance
    when auto merge is not enabled
      returns error
# [RSpecRunTime] RSpec elapsed time: 11 minutes 31.8 seconds. Current RSS: ~1906M. load average: 1.05 1.14 1.27 1/298 10945



# [RSpecRunTime] Finishing example group spec/services/auto_merge_service_spec.rb. It took 14.41 seconds. Expected to take 20.09 seconds.
# [RSpecRunTime] Starting example group spec/services/projects/update_remote_mirror_service_spec.rb. Expected to take 19.44 seconds.

Projects::UpdateRemoteMirrorService
  #execute
    does not fetch the remote repository
    marks the mirror as started when beginning
    marks the mirror as successfully finished
    marks the mirror as failed and raises the error when an unexpected error occurs
    when the URL is blocked
      hard retries and returns error status
      when retries are exceeded
        hard fails and returns error status
# [RSpecRunTime] RSpec elapsed time: 11 minutes 35.01 seconds. Current RSS: ~1942M. load average: 1.04 1.13 1.27 1/297 10987


    when given URLs containing escaped elements
      behaves like URLs containing escaped elements return expected status
        url: "https://user:0a%23@test.example.com/project.git", result_status: :success
          returns expected status
        url: "https://git.example.com:1%2F%2F@source.developers.google.com/project.git", result_status: :success
          returns expected status
        url: "git%3A%2F%2Flocalhost%3A1234%2Fsome-path%3Fsome-query%3Dsome-val%23%40example.com%2F", result_status: :error
          returns expected status
        url: "https%253A%252F%252Fuser%253A0a%252523%2540test.example.com%252Fproject.git", result_status: :error
          returns expected status
    when the update fails because of a `Gitlab::Git::CommandError`
      wraps `Gitlab::Git::CommandError`s in a service error
      marks the mirror as to be retried
      marks the mirror as failed after 3 tries
    when there are divergent refs
      marks the mirror as failed and sets an error message
    sending lfs objects
      pushes LFS objects to a HTTP repository
      when LFS objects fail to push
        when remote_mirror_fail_on_lfs feature flag enabled
          fails update
        when remote_mirror_fail_on_lfs feature flag is disabled
          does not fail update
      with SSH repository
        does nothing to an SSH repository
        does nothing if LFS is disabled
        does nothing if non-password auth is specified
# [RSpecRunTime] RSpec elapsed time: 11 minutes 42.54 seconds. Current RSS: ~2004M. load average: 1.04 1.13 1.27 1/297 11058



# [RSpecRunTime] Finishing example group spec/services/projects/update_remote_mirror_service_spec.rb. It took 10.73 seconds. Expected to take 19.44 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/config/entry/need_spec.rb. Expected to take 18.67 seconds.

Gitlab::Ci::Config::Entry::Need
  with simple config
    when job is specified
      #valid?
        is expected to be valid
      #value
        returns job needs configuration
      behaves like job type
        #type
          is expected to eq :job
    when need is empty
      #valid?
        is expected not to be valid
      #errors
        is returns an error about an empty config
      behaves like job type
        #type
          is expected to eq :job
  with complex config
    with job name and artifacts true
      #valid?
        is expected to be valid
      #value
        returns job needs configuration
      behaves like job type
        #type
          is expected to eq :job
    with job name and artifacts false
      #valid?
        is expected to be valid
      #value
        returns job needs configuration
      behaves like job type
        #type
          is expected to eq :job
    with job name and artifacts nil
      #valid?
        is expected to be valid
      #value
        returns job needs configuration
      behaves like job type
        #type
          is expected to eq :job
    without artifacts key
      #valid?
        is expected to be valid
      #value
        returns job needs configuration
      behaves like job type
        #type
          is expected to eq :job
    with job name and optional true
      is expected to be valid
      behaves like job type
        #type
          is expected to eq :job
      #value
        returns job needs configuration
    with job name and optional false
      is expected to be valid
      behaves like job type
        #type
          is expected to eq :job
      #value
        returns job needs configuration
    with job name and optional nil
      is expected to be valid
      behaves like job type
        #type
          is expected to eq :job
      #value
        returns job needs configuration
    without optional key
      is expected to be valid
      behaves like job type
        #type
          is expected to eq :job
      #value
        returns job needs configuration
    when job name is empty
      #valid?
        is expected not to be valid
      #errors
        is returns an error about an empty config
      behaves like job type
        #type
          is expected to eq :job
    when job name is not a string
      #valid?
        is expected not to be valid
      #errors
        is returns an error about job type
      behaves like job type
        #type
          is expected to eq :job
    when job has unknown keys
      #valid?
        is expected not to be valid
      #errors
        is returns an error about job type
      behaves like job type
        #type
          is expected to eq :job
    when parallel:matrix has a value
      and it is a string value
        #valid?
          is expected to be valid
        #value
          returns job needs configuration
        behaves like job type
          #type
            is expected to eq :job
      and it is an array value
        #valid?
          is expected to be valid
        #value
          returns job needs configuration
        behaves like job type
          #type
            is expected to eq :job
      and it is a both an array and string value
        #valid?
          is expected to be valid
        #value
          returns job needs configuration
        behaves like job type
          #type
            is expected to eq :job
  with cross pipeline artifacts needs
    when pipeline is provided
      when job is provided
        is expected to be valid
        sets artifacts:true by default
        sets the type as cross_dependency
      when artifacts is provided
        is expected to be valid
        returns the correct value
    when config contains not allowed keys
      is expected not to be valid
      returns an error
  when need config is not a string or a hash
    #valid?
      is expected not to be valid
    #errors
      is returns an error about job type

# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/config/entry/need_spec.rb. It took 5.22 seconds. Expected to take 18.67 seconds.
# [RSpecRunTime] Starting example group spec/services/auto_merge/merge_when_pipeline_succeeds_service_spec.rb. Expected to take 18.01 seconds.

AutoMerge::MergeWhenPipelineSucceedsService
  #available_for?
    is expected to be truthy
    memoizes the result
    when the head pipeline succeeded
      is expected to be falsy
# [RSpecRunTime] RSpec elapsed time: 11 minutes 50.14 seconds. Current RSS: ~1987M. load average: 1.11 1.14 1.27 1/298 11157


    when the user does not have permission to merge
      is expected to be falsy
  #execute
    behaves like auto_merge service #execute
      when first time enabling
        sets the params, merge_user, and flag
        schedules a notification
        creates a system note
# [RSpecRunTime] RSpec elapsed time: 11 minutes 53.06 seconds. Current RSS: ~1974M. load average: 1.11 1.14 1.27 1/298 11357


      when already approved
        updates the merge params
  #process
    behaves like auto_merge service #process
      when triggered by pipeline with valid ref and sha
        merges all merge requests with merge when the pipeline succeeds enabled
      when triggered by an old pipeline
        does not merge request
      when triggered by pipeline from a different branch
        does not merge request
      when pipeline is merge request pipeline
        merges the associated merge request
  #cancel
    behaves like auto_merge service #cancel
      resets all the pipeline succeeds params
      posts a system note
  #abort
    behaves like auto_merge service #abort
      posts a system note
  pipeline integration
    when there are multiple stages in the pipeline
      doesn't merge if any of stages failed
      merges when all stages succeeded
# [RSpecRunTime] RSpec elapsed time: 11 minutes 59.49 seconds. Current RSS: ~1965M. load average: 1.02 1.12 1.26 1/298 11647



# [RSpecRunTime] Finishing example group spec/services/auto_merge/merge_when_pipeline_succeeds_service_spec.rb. It took 11.72 seconds. Expected to take 18.01 seconds.
# [RSpecRunTime] Starting example group spec/models/container_expiration_policy_spec.rb. Expected to take 17.35 seconds.

ContainerExpirationPolicy
  does not allow STI
  relationships
    is expected to belong to project required: false
  validations
    is expected to validate that :project cannot be empty/falsy
    #enabled
************************************************************************
Warning from shoulda-matchers:

You are using `validate_inclusion_of` to assert that a boolean column
allows boolean values and disallows non-boolean ones. Be aware that it
is not possible to fully test this, as boolean columns will
automatically convert non-boolean values to boolean ones. Hence, you
should consider removing this test.
************************************************************************
      is expected to validate that :enabled is either ‹true› or ‹false›
    #cadence
      is expected to validate that :cadence cannot be empty/falsy
      is expected to allow :cadence to be ‹"1d"›
      is expected to allow :cadence to be ‹"1month"›
      is expected not to allow :cadence to be ‹"123asdf"›
      is expected not to allow :cadence to be ‹nil›
    #older_than
      is expected to allow :older_than to be ‹"7d"›
      is expected to allow :older_than to be ‹"14d"›
      is expected to allow :older_than to be ‹nil›
      is expected not to allow :older_than to be ‹"123asdf"›
    #keep_n
      is expected to allow :keep_n to be ‹10›
      is expected to allow :keep_n to be ‹nil›
      is expected not to allow :keep_n to be ‹"foo"›
    #disable!
      disables the container expiration policy
    #policy_params
      is expected to eq {"keep_n"=>10, "name_regex"=>".*", "name_regex_keep"=>nil, "older_than"=>"90d"}
    with a set of regexps
      is expected to validate that :name_regex cannot be empty/falsy
      is expected to allow :name_regex to be ‹"master"›
      is expected to allow :name_regex_keep to be ‹"master"›
      is expected to allow :name_regex to be ‹".*"›
      is expected to allow :name_regex_keep to be ‹".*"›
      is expected to allow :name_regex to be ‹"v.+"›
      is expected to allow :name_regex_keep to be ‹"v.+"›
      is expected to allow :name_regex to be ‹"v10.1.*"›
      is expected to allow :name_regex_keep to be ‹"v10.1.*"›
      is expected to allow :name_regex to be ‹"(?:v.+|master|release)"›
      is expected to allow :name_regex_keep to be ‹"(?:v.+|master|release)"›
      is expected not to allow :name_regex to be ‹"["›
      is expected not to allow :name_regex_keep to be ‹"["›
      is expected not to allow :name_regex to be ‹"(?:v.+|master|release"›
      is expected not to allow :name_regex_keep to be ‹"(?:v.+|master|release"›
      with a disabled container expiration policy
        is expected not to validate that :name_regex cannot be empty/falsy
        is expected to allow :name_regex to be ‹"master"›
        is expected to allow :name_regex_keep to be ‹"master"›
        is expected to allow :name_regex to be ‹".*"›
        is expected to allow :name_regex_keep to be ‹".*"›
        is expected to allow :name_regex to be ‹"v.+"›
        is expected to allow :name_regex_keep to be ‹"v.+"›
        is expected to allow :name_regex to be ‹"v10.1.*"›
        is expected to allow :name_regex_keep to be ‹"v10.1.*"›
        is expected to allow :name_regex to be ‹"(?:v.+|master|release)"›
        is expected to allow :name_regex_keep to be ‹"(?:v.+|master|release)"›
        is expected to allow :name_regex to be ‹"["›
        is expected to allow :name_regex_keep to be ‹"["›
        is expected to allow :name_regex to be ‹"(?:v.+|master|release"›
        is expected to allow :name_regex_keep to be ‹"(?:v.+|master|release"›
# [RSpecRunTime] RSpec elapsed time: 12 minutes 4.04 seconds. Current RSS: ~1980M. load average: 1.02 1.12 1.26 1/297 11648


  .preloaded
    preloads the associations
  .runnable_schedules
    returns the runnable schedule
    when there are no runnable schedules
      returns an empty array
  policies with container repositories
    .with_container_repositories
      is expected to contain exactly #<ContainerExpirationPolicy project_id: 404, created_at: "2024-02-20 23:31:38.482837186 +0000", updat...name_regex: ".*", cadence: "1d", older_than: "90d", keep_n: 10, enabled: true, name_regex_keep: nil> and #<ContainerExpirationPolicy project_id: 405, created_at: "2024-02-20 23:31:38.724399401 +0000", updat...name_regex: ".*", cadence: "1d", older_than: "90d", keep_n: 10, enabled: true, name_regex_keep: nil>
    .without_container_repositories
      is expected to contain exactly #<ContainerExpirationPolicy project_id: 406, created_at: "2024-02-20 23:31:38.969035466 +0000", updat...name_regex: ".*", cadence: "1d", older_than: "90d", keep_n: 10, enabled: true, name_regex_keep: nil>

# [RSpecRunTime] Finishing example group spec/models/container_expiration_policy_spec.rb. It took 6.54 seconds. Expected to take 17.35 seconds.
# [RSpecRunTime] Starting example group spec/graphql/mutations/discussions/toggle_resolve_spec.rb. Expected to take 16.73 seconds.

Mutations::Discussions::ToggleResolve
  #resolve
    when discussion is on a merge request
      behaves like a working resolve method
        when the user does not have permission
          raises an error if the resource is not accessible to the user
# [RSpecRunTime] RSpec elapsed time: 12 minutes 7.35 seconds. Current RSS: ~1966M. load average: 1.02 1.12 1.26 1/298 11702


        when the user has permission
          when discussion cannot be found
            raises an error
          when the `resolve` argument is true
            returns a resolved discussion
            returns empty errors
            when the discussion is already resolved
              returns a resolved discussion
              returns empty errors
# [RSpecRunTime] RSpec elapsed time: 12 minutes 8.96 seconds. Current RSS: ~1957M. load average: 1.02 1.12 1.26 1/298 11753


            when the service raises an `ActiveRecord::RecordNotSaved` error
              does not resolve the discussion
              returns errors
          when the `resolve` argument is false
            when the discussion is resolved
              returns an unresolved discussion
              returns empty errors
              when the service raises an `ActiveRecord::RecordNotSaved` error
                does not unresolve the discussion
                returns errors
            when the discussion is already unresolved
              returns an unresolved discussion
              returns empty errors
        when user is the author and discussion is locked
          raises an error
    when discussion is on a design
      behaves like a working resolve method
        when the user does not have permission
          raises an error if the resource is not accessible to the user
        when the user has permission
          when discussion cannot be found
            raises an error
          when the `resolve` argument is true
            returns a resolved discussion
            returns empty errors
            when the discussion is already resolved
              returns a resolved discussion
              returns empty errors
            when the service raises an `ActiveRecord::RecordNotSaved` error
              does not resolve the discussion
              returns errors
          when the `resolve` argument is false
            when the discussion is resolved
              returns an unresolved discussion
              returns empty errors
              when the service raises an `ActiveRecord::RecordNotSaved` error
                does not unresolve the discussion
                returns errors
            when the discussion is already unresolved
              returns an unresolved discussion
              returns empty errors
        when user is the author and discussion is locked
          raises an error

# [RSpecRunTime] Finishing example group spec/graphql/mutations/discussions/toggle_resolve_spec.rb. It took 8.03 seconds. Expected to take 16.73 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/sql/pattern_spec.rb. Expected to take 16.25 seconds.

Gitlab::SQL::Pattern
  .fuzzy_search
    query: "foo", columns: [#<struct Arel::Attributes::Attribute relation=#<Arel::Table:0x00007a0363dc6820 @name="issues", @klass=Issue(id: integer, title: string, author_id: integer, project_id: integer, created_at: datetime, updated_at: datetime, description: text, milestone_id: integer, iid: integer, updated_by_id: integer, weight: integer, confidential: boolean, due_date: date, moved_to_id: integer, lock_version: integer, title_html: text, description_html: text, time_estimate: integer, relative_position: integer, service_desk_reply_to: string, cached_markdown_version: integer, last_edited_at: datetime, last_edited_by_id: integer, discussion_locked: boolean, closed_at: timestamptz, closed_by_id: integer, state_id: integer, duplicated_to_id: integer, promoted_to_epic_id: integer, health_status: integer, external_key: string, sprint_id: integer, blocking_issues_count: integer, upvotes_count: integer, work_item_type_id: integer, namespace_id: integer, start_date: date), @type_caster=#<ActiveRecord::TypeCaster::Map:0x00007a0363dc6758 @klass=Issue(id: integer, title: string, author_id: integer, project_id: integer, created_at: datetime, updated_at: datetime, description: text, milestone_id: integer, iid: integer, updated_by_id: integer, weight: integer, confidential: boolean, due_date: date, moved_to_id: integer, lock_version: integer, title_html: text, description_html: text, time_estimate: integer, relative_position: integer, service_desk_reply_to: string, cached_markdown_version: integer, last_edited_at: datetime, last_edited_by_id: integer, discussion_locked: boolean, closed_at: timestamptz, closed_by_id: integer, state_id: integer, duplicated_to_id: integer, promoted_to_epic_id: integer, health_status: integer, external_key: string, sprint_id: integer, blocking_issues_count: integer, upvotes_count: integer, work_item_type_id: integer, namespace_id: integer, start_date: date)>, @table_alias=nil>, name="title">], exact_matches_first: false, expected: [:issue1]
      finds the expected issues
# [RSpecRunTime] RSpec elapsed time: 12 minutes 16.11 seconds. Current RSS: ~1959M. load average: 1.02 1.12 1.26 1/297 11862


    query: "foo", columns: [:title], exact_matches_first: false, expected: [:issue1]
      finds the expected issues
    query: "foo", columns: ["title"], exact_matches_first: false, expected: [:issue1]
      finds the expected issues
    query: "foo", columns: [:description], exact_matches_first: false, expected: [:issue2]
      finds the expected issues
    query: "foo", columns: [:title, :description], exact_matches_first: false, expected: [:issue1, :issue2]
      finds the expected issues
    query: "bar", columns: [:title, :description], exact_matches_first: false, expected: [:issue1]
      finds the expected issues
    query: "baz", columns: [:title, :description], exact_matches_first: false, expected: [:issue2]
      finds the expected issues
    query: "qux", columns: [:title, :description], exact_matches_first: false, expected: []
      finds the expected issues
    query: "oh", columns: [:title, :description], exact_matches_first: false, expected: [:issue3]
      finds the expected issues
    query: "OH", columns: [:title, :description], exact_matches_first: false, expected: [:issue3]
      finds the expected issues
    query: "ah", columns: [:title, :description], exact_matches_first: false, expected: [:issue3]
      finds the expected issues
    query: "AH", columns: [:title, :description], exact_matches_first: false, expected: [:issue3]
      finds the expected issues
    query: "oh", columns: [:title], exact_matches_first: false, expected: [:issue3]
      finds the expected issues
    query: "ah", columns: [:description], exact_matches_first: false, expected: [:issue3]
      finds the expected issues
    query: "", columns: [:title], exact_matches_first: false, expected: [:issue1, :issue2, :issue3, :issue4, :issue5]
      finds the expected issues
    query: ["a", "b"], columns: [:title], exact_matches_first: false, expected: [:issue1, :issue2, :issue3, :issue4, :issue5]
      finds the expected issues
    query: "beep", columns: [:title], exact_matches_first: true, expected: [:issue5, :issue4]
      finds the expected issues
  .to_pattern
    when a query is shorter than 3 chars
      returns exact matching pattern
      and ignore_minimum_char_limit is true
        returns partial matching pattern
    when a query with a escape character is shorter than 3 chars
      returns sanitized exact matching pattern
      and ignore_minimum_char_limit is true
        returns sanitized partial matching pattern
    when a query is equal to 3 chars
      returns partial matching pattern
    when a query with a escape character is equal to 3 chars
      returns partial matching pattern
    when a query is longer than 3 chars
      returns partial matching pattern
    when a query with a escape character is longer than 3 chars
      returns sanitized partial matching pattern
  .select_fuzzy_terms
    with a word equal to 3 chars
      returns array containing a word
    with a word shorter than 3 chars
      returns empty array
    with two words both equal to 3 chars
      returns array containing two words
    with two words divided by two spaces both equal to 3 chars
      returns array containing two words
    with two words equal to 3 chars and shorter than 3 chars
      returns array containing a word
  .split_query_to_search_terms
    with words separated by spaces
      returns array containing individual words
    with a multi-word surrounded by double quote
      returns array containing a multi-word
    with a multi-word surrounded by double quote and two words
      returns array containing a multi-word and two words
    with a multi-word surrounded by double quote missing a spece before the first double quote
      returns array containing two words with double quote
    with a multi-word surrounded by double quote missing a spece after the second double quote
      returns array containing two words with double quote
    with two multi-word surrounded by double quote and two words
      returns array containing two multi-words and two words
  .fuzzy_arel_match
    with a word equal to 3 chars
      returns a single ILIKE condition
    with a word shorter than 3 chars
      returns a single equality condition
      uses LOWER instead of ILIKE when LOWER is enabled
    with two words both equal to 3 chars
      returns a joining LIKE condition using a AND
    with two words both shorter than 3 chars
      returns a single ILIKE condition
    with two words, one shorter 3 chars
      returns a single ILIKE condition using the longer word
    with a multi-word surrounded by double quote and two words
      returns a joining LIKE condition using a AND
    when passing an Arel column
      returns a condition with the table and column name

# [RSpecRunTime] Finishing example group spec/lib/gitlab/sql/pattern_spec.rb. It took 5.27 seconds. Expected to take 16.25 seconds.
# [RSpecRunTime] Starting example group spec/helpers/auth_helper_spec.rb. Expected to take 15.84 seconds.

AuthHelper
  button_based_providers
    returns all enabled providers from devise
    does not return ldap provider
    returns empty array
  providers_for_base_controller
    returns all enabled providers from devise
    excludes ldap providers
  form_based_providers
    includes LDAP providers
    includes crowd provider
  form_based_auth_provider_has_active_class?
    selects main LDAP server
  any_form_based_providers_enabled?
    detects form-based providers
    ignores ldap providers when ldap web sign in is disabled
  enabled_button_based_providers
    all providers are enabled to sign in
      returns all the enabled providers from settings in expected order
      puts google and github in the beginning
    GitHub OAuth sign in is disabled from application setting
      doesn't return github as provider
  popular_enabled_button_based_providers
    returns the intersection set of popular & enabled providers
  button_based_providers_enabled?
    button based providers enabled
      returns true
    all the button based providers are disabled via application_setting
      returns false
  #link_provider_allowed?
    delegates to identity provider policy
  #unlink_provider_allowed?
    delegates to identity provider policy
  #provider_has_icon?
    returns true for defined providers
    returns false for undefined providers
    when provider is defined by config
      returns true
    when provider is not defined by config
      returns true
  #allow_admin_mode_password_authentication_for_web?
    is expected to equal true
    when password authentication for web is disabled
      is expected to equal false
    when current_user is an ldap user
      is expected to equal false
    when user got password automatically set
      is expected to equal false
  #auth_active?
    for atlassian_oauth2 provider
      returns true when present
      returns false when not present
    for other omniauth providers
      returns true when present
      returns false when not present
  #auth_app_owner_text
    when owner is a user
      behaves like generates text with the correct info
        includes the name of the application owner
    when owner is a group
      behaves like generates text with the correct info
        includes the name of the application owner
    when the user is missing
      returns nil
  #saml_providers
    when SAML is enabled without specifying a strategy class
      returns the saml provider
    when configuration specifies no provider
      returns an empty list
    when configuration specifies a provider with a SAML strategy_class
      returns the provider
    when configuration specifies two providers with a SAML strategy_class
      returns the provider
    when configuration specifies a provider with a non-SAML strategy_class
      returns an empty list
    when configuration specifies four providers but only two with SAML strategy_class
      returns the provider

# [RSpecRunTime] Finishing example group spec/helpers/auth_helper_spec.rb. It took 3.8 seconds. Expected to take 15.84 seconds.
# [RSpecRunTime] Starting example group spec/serializers/diff_file_entity_spec.rb. Expected to take 15.48 seconds.

DiffFileEntity
  when there is no merge request
    behaves like diff file entity
      exposes correct attributes
      behaves like diff file base entity
        exposes essential attributes
        when diff file does not have a blob and content sha
          exposes some attributes as nil
      when a viewer
        matches the schema
        when it is a whitespace only change
          has whitespace_only true
        when the highlighted lines arent shown
          has whitespace_only nil
        when it is a new file
          has whitespace_only false
        when it is a collapsed file
          has whitespace_only false
      diff files
        when diff_view is parallel
          contains only the parallel diff lines
        when diff_view is parallel
          contains only the inline diff lines
  when there is a merge request
    exposes additional attributes
    points all urls to merge request target project
    exposes load_collapsed_diff_url if the file viewer is collapsed
    behaves like diff file entity
      exposes correct attributes
      behaves like diff file base entity
        exposes essential attributes
        when diff file does not have a blob and content sha
          exposes some attributes as nil
# [RSpecRunTime] RSpec elapsed time: 12 minutes 26.91 seconds. Current RSS: ~1977M. load average: 1.01 1.11 1.25 1/298 12046


      when a viewer
        matches the schema
        when it is a whitespace only change
          has whitespace_only true
        when the highlighted lines arent shown
          has whitespace_only nil
        when it is a new file
          has whitespace_only false
        when it is a collapsed file
          has whitespace_only false
      diff files
        when diff_view is parallel
          contains only the parallel diff lines
        when diff_view is parallel
          contains only the inline diff lines
    when diff_view is unknown
      hides highlighted_diff_lines and parallel_diff_lines
  #parallel_diff_lines
    exposes parallel diff lines correctly
  #highlighted_diff_lines
    calls diff_lines_for_serializer on diff_file
  behaves like diff file with conflict_type
    #conflict_type
      returns nil by default
      when there is matching conflict file
        returns false

# [RSpecRunTime] Finishing example group spec/serializers/diff_file_entity_spec.rb. It took 6.47 seconds. Expected to take 15.48 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/slash_commands/command_spec.rb. Expected to take 14.97 seconds.

Gitlab::SlashCommands::Command
  #execute
    when no command is available
      displays 404 messages
    when an unknown command is triggered
      displays the help message
    the user can not create an issue
      rejects the actions
    when trying to do deployment
      and user can not create deployment
        returns action
# [RSpecRunTime] RSpec elapsed time: 12 minutes 32.9 seconds. Current RSS: ~1984M. load average: 1.01 1.11 1.25 1/297 12194


      and user has deployment permission
        returns action
        when duplicate action exists
          returns error
# [RSpecRunTime] RSpec elapsed time: 12 minutes 35.34 seconds. Current RSS: ~2000M. load average: 1.01 1.11 1.25 1/297 12218


  #match_command
    IssueShow is triggered
      is expected to eq Gitlab::SlashCommands::IssueShow
    IssueCreate is triggered
      is expected to eq Gitlab::SlashCommands::IssueNew
    IssueSearch is triggered
      is expected to eq Gitlab::SlashCommands::IssueSearch
    IssueMove is triggered
      is expected to eq Gitlab::SlashCommands::IssueMove
    IssueComment is triggered
      is expected to eq Gitlab::SlashCommands::IssueComment
    when incident declare is triggered
      IncidentNew is triggered
        is expected to eq Gitlab::SlashCommands::IncidentManagement::IncidentNew
      when feature flag is disabled
        IncidentNew is triggered
          is expected not to eq Gitlab::SlashCommands::IncidentManagement::IncidentNew

# [RSpecRunTime] Finishing example group spec/lib/gitlab/slash_commands/command_spec.rb. It took 10.7 seconds. Expected to take 14.97 seconds.
# [RSpecRunTime] Starting example group spec/rubocop/cop/rspec/misspelled_aggregate_failures_spec.rb. Expected to take 14.54 seconds.

RuboCop::Cop::RSpec::MisspelledAggregateFailures
  with legit tags
    tag: "aggregate"
      behaves like legit tag
        does not flag
    tag: "aggregations"
      behaves like legit tag
        does not flag
    tag: "aggregate_two_underscores"
      behaves like legit tag
        does not flag
  with misspelled tags
    tag: "aggregate_errors"
      behaves like misspelled tag
        flags and auto-corrects misspelled tags in describe
        flags and auto-corrects misspelled tags in context
        flags and auto-corrects misspelled tags in examples
        flags and auto-corrects misspelled tags in any order
    tag: "aggregate_failure"
      behaves like misspelled tag
        flags and auto-corrects misspelled tags in describe
        flags and auto-corrects misspelled tags in context
        flags and auto-corrects misspelled tags in examples
        flags and auto-corrects misspelled tags in any order
    tag: "aggregated_failures"
      behaves like misspelled tag
        flags and auto-corrects misspelled tags in describe
        flags and auto-corrects misspelled tags in context
        flags and auto-corrects misspelled tags in examples
        flags and auto-corrects misspelled tags in any order
    tag: "aggregate_results"
      behaves like misspelled tag
        flags and auto-corrects misspelled tags in describe
        flags and auto-corrects misspelled tags in context
        flags and auto-corrects misspelled tags in examples
        flags and auto-corrects misspelled tags in any order
    tag: "aggregated_errors"
      behaves like misspelled tag
        flags and auto-corrects misspelled tags in describe
        flags and auto-corrects misspelled tags in context
        flags and auto-corrects misspelled tags in examples
        flags and auto-corrects misspelled tags in any order
    tag: "aggregates_failures"
      behaves like misspelled tag
        flags and auto-corrects misspelled tags in describe
        flags and auto-corrects misspelled tags in context
        flags and auto-corrects misspelled tags in examples
        flags and auto-corrects misspelled tags in any order
    tag: "aggregate_failues"
      behaves like misspelled tag
        flags and auto-corrects misspelled tags in describe
        flags and auto-corrects misspelled tags in context
        flags and auto-corrects misspelled tags in examples
        flags and auto-corrects misspelled tags in any order
    tag: "aggregate_bar"
      behaves like misspelled tag
        flags and auto-corrects misspelled tags in describe
        flags and auto-corrects misspelled tags in context
        flags and auto-corrects misspelled tags in examples
        flags and auto-corrects misspelled tags in any order
    tag: "aggregate_foo"
      behaves like misspelled tag
        flags and auto-corrects misspelled tags in describe
        flags and auto-corrects misspelled tags in context
        flags and auto-corrects misspelled tags in examples
        flags and auto-corrects misspelled tags in any order

# [RSpecRunTime] Finishing example group spec/rubocop/cop/rspec/misspelled_aggregate_failures_spec.rb. It took 3.47 seconds. Expected to take 14.54 seconds.
# [RSpecRunTime] Starting example group spec/lib/banzai/filter/references/feature_flag_reference_filter_spec.rb. Expected to take 14.07 seconds.

Banzai::Filter::References::FeatureFlagReferenceFilter
  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
  with internal reference
    links to a valid reference
    links with adjacent text
    ignores invalid feature flag IIDs
    includes a title attribute
    escapes the title attribute
    includes default classes
    includes a data-project attribute
    includes a data-feature-flag attribute
    supports an :only_path context
# [RSpecRunTime] RSpec elapsed time: 12 minutes 45.42 seconds. Current RSS: ~1979M. load average: 1.09 1.12 1.25 1/294 12261


  with cross-project / cross-namespace complete reference
    links to a valid reference
    produces a valid text in a link
    produces a valid text
    ignores invalid feature flag IIDs on the referenced project
  with cross-project / same-namespace complete reference
    links to a valid reference
    produces a valid text in a link
    produces a valid text
    ignores invalid feature flag IIDs on the referenced project
  with cross-project shorthand reference
    links to a valid reference
    produces a valid text in a link
    produces a valid text
    ignores invalid feature flag IDs on the referenced project
  with cross-project URL reference
    links to a valid reference
    links with adjacent text
    ignores invalid feature flag IIDs on the referenced project
  with group context
    links to a valid reference
    ignores internal references

# [RSpecRunTime] Finishing example group spec/lib/banzai/filter/references/feature_flag_reference_filter_spec.rb. It took 4.99 seconds. Expected to take 14.07 seconds.
# [RSpecRunTime] Starting example group spec/services/projects/operations/update_service_spec.rb. Expected to take 13.76 seconds.

Projects::Operations::UpdateService
  #execute
    alerting setting
      with valid params
        when regenerate_token is not set
          with an existing setting
            ignores provided token
          without an existing setting
            behaves like setting creation
              creates a setting
        when regenerate_token is set
          with an existing setting
            regenerates token
          without an existing setting
            behaves like setting creation
              creates a setting
            with insufficient permissions
              behaves like no operation
                does nothing
      with empty params
        behaves like no operation
          does nothing
    error tracking
      with existing error tracking setting
        updates the settings
        disable error tracking
          can set api_url to nil
      without an existing error tracking setting
        creates a setting
      partial_update
        with setting
          service succeeds
          updates attributes
          only updates enabled attribute
          with integrated attribute
            updates integrated attribute
            only updates enabled and integrated attributes
# [RSpecRunTime] RSpec elapsed time: 12 minutes 53.98 seconds. Current RSS: ~1936M. load average: 1.08 1.12 1.25 1/292 12262


        without setting
          creates setting with default values
      with masked param token
        does not update token
      with invalid parameters
        does nothing
    with inappropriate params
      ignores params
    prometheus integration
      prometheus params were passed into service
WARNING: You're overriding a previous stub implementation of `new`. Called from /builds/gitlab-org/gitlab/spec/services/projects/operations/update_service_spec.rb:330:in `block (5 levels) in <top (required)>'.. Called from /builds/gitlab-org/gitlab/spec/services/projects/operations/update_service_spec.rb:330:in `block (5 levels) in <top (required)>'.
        uses Project#find_or_initialize_integration to include instance defined defaults and pass them to Projects::UpdateService
      when prometheus params are not passed into service
        does not pass any prometheus params into Projects::UpdateService

# [RSpecRunTime] Finishing example group spec/services/projects/operations/update_service_spec.rb. It took 6.9 seconds. Expected to take 13.76 seconds.
# [RSpecRunTime] Starting example group spec/models/ci/build_trace_chunks/fog_spec.rb. Expected to take 13.41 seconds.

Ci::BuildTraceChunks::Fog
  does not allow STI
  #available?
    when object storage is enabled
      is expected to be truthy
    when object storage is disabled
      is expected to be falsy
  #data
    when data exists
      returns the data
    when data does not exist
      returns nil
  #set_data
    when data exists
      overwrites data
    when data does not exist
      sets new data
      when S3 server side encryption is enabled
        creates a file with attributes
# [RSpecRunTime] RSpec elapsed time: 12 minutes 59.24 seconds. Current RSS: ~1919M. load average: 1.07 1.11 1.25 1/292 12263


  #append_data
    appends ASCII data
    appends UTF-8 data
    when initial data is UTF-8
      appends ASCII data
# [RSpecRunTime] RSpec elapsed time: 13 minutes 1.31 seconds. Current RSS: ~1897M. load average: 1.07 1.11 1.25 1/292 12264


  #delete_data
    when data exists
      deletes data
    when data does not exist
      does nothing
  #size
    when data exists
      returns data bytesize correctly
    when data does not exist
      returns zero
  #keys
    returns keys
  #delete_keys
    deletes multiple data

# [RSpecRunTime] Finishing example group spec/models/ci/build_trace_chunks/fog_spec.rb. It took 9.1 seconds. Expected to take 13.41 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/tracking_spec.rb. Expected to take 13.01 seconds.

Gitlab::Tracking
  is expected to delegate #flush to the #tracker object
  .options
    when feature flag is disabled
    when destination is Snowplow
      returns useful client options
      behaves like delegates to destination
        delegates to Gitlab::Tracking::Destinations::Snowplow destination
    when destination is SnowplowMicro
      enabled with yml config
        behaves like delegates to SnowplowMicro destination with proper options
          returns useful client options
          behaves like delegates to destination
            delegates to Gitlab::Tracking::Destinations::SnowplowMicro destination
  event tracking
    .event
      when the action is not passed in as a string
        allows symbols
        allows nil
        allows integers
      when destination is Snowplow
        behaves like rescued error raised by destination class
          rescues error
        behaves like delegates to destination
          delegates to Gitlab::Tracking::Destinations::Snowplow destination
      when destination is SnowplowMicro
        behaves like rescued error raised by destination class
          rescues error
        behaves like delegates to destination
          delegates to Gitlab::Tracking::Destinations::SnowplowMicro destination
  .definition
    dispatches the data to .event
  snowplow_micro_enabled?
    returns false when snowplow_micro is not configured
    development?: true, micro_verification_enabled?: true, snowplow_micro_enabled: true, result: true
      is expected to equal true
    development?: true, micro_verification_enabled?: true, snowplow_micro_enabled: false, result: false
      is expected to equal false
    development?: false, micro_verification_enabled?: true, snowplow_micro_enabled: true, result: true
      is expected to equal true
    development?: false, micro_verification_enabled?: true, snowplow_micro_enabled: false, result: false
      is expected to equal false
    development?: false, micro_verification_enabled?: false, snowplow_micro_enabled: true, result: false
      is expected to equal false
    development?: false, micro_verification_enabled?: false, snowplow_micro_enabled: false, result: false
      is expected to equal false
    development?: true, micro_verification_enabled?: false, snowplow_micro_enabled: true, result: true
      is expected to equal true
    development?: true, micro_verification_enabled?: false, snowplow_micro_enabled: false, result: false
      is expected to equal false
  .micro_verification_enabled?
    verify_tracking: nil, result: false
      is expected to equal false
    verify_tracking: "true", result: true
      is expected to equal true
    verify_tracking: "false", result: false
      is expected to equal false
    verify_tracking: "0", result: false
      is expected to equal false
    verify_tracking: "1", result: true
      is expected to equal true
  tracker
    returns a SnowPlowMicro instance in development
    returns a SnowPlow instance when not in development

# [RSpecRunTime] Finishing example group spec/lib/gitlab/tracking_spec.rb. It took 3.88 seconds. Expected to take 13.01 seconds.
# [RSpecRunTime] Starting example group spec/lib/banzai/pipeline/gfm_pipeline_spec.rb. Expected to take 12.57 seconds.

Banzai::Pipeline::GfmPipeline
  integration between parsing regular and external issue references
    when internal issue tracker is enabled
      executes :each_node only once for first reference filter
      allows to use long external reference syntax for Redmine
      parses cross-project references to regular issues
      when shorthand pattern #ISSUE_ID is used
        links an internal issues and keep updated nodes in result[:reference_filter_nodes]
# [RSpecRunTime] RSpec elapsed time: 13 minutes 10.85 seconds. Current RSS: ~1885M. load average: 0.98 1.09 1.24 1/292 12265


      when shorthand pattern #ISSUE_ID is used
        links an internal issue  if it exists
        does not link any issue if it does not exist on GitLab
    when internal issue tracker is disabled
      allows to use shorthand external reference syntax for Redmine
      allows to use long external reference syntax for Redmine
      parses cross-project references to regular issues
  markdown link or image urls having spaces
    rewrites links with spaces in url
    rewrites images with spaces in url
    sanitizes the fixed link
# [RSpecRunTime] RSpec elapsed time: 13 minutes 13.65 seconds. Current RSS: ~1886M. load average: 0.98 1.09 1.24 1/292 12266


  emoji in references
    renders a label reference with emoji inside
    renders a milestone reference with emoji inside
  when label reference is similar to a commit SHA
    renders a label reference
  asset proxy
    replaces a lazy loaded img src
    autolinks images to the proxy
    properly adds tooltips to link for IDN images
# [RSpecRunTime] RSpec elapsed time: 13 minutes 16.55 seconds. Current RSS: ~1898M. load average: 0.99 1.09 1.24 1/294 12277



# [RSpecRunTime] Finishing example group spec/lib/banzai/pipeline/gfm_pipeline_spec.rb. It took 7.91 seconds. Expected to take 12.57 seconds.
# [RSpecRunTime] Starting example group spec/tasks/gitlab/artifacts/migrate_rake_spec.rb. Expected to take 12.21 seconds.

gitlab:artifacts namespace rake task
  gitlab:artifacts:migrate
    when local storage is used
      and remote storage is defined
        migrates file to remote storage
# [RSpecRunTime] RSpec elapsed time: 13 minutes 18.52 seconds. Current RSS: ~1880M. load average: 0.99 1.09 1.24 1/294 12278


      and remote storage is not defined
        fails to migrate to remote storage
# [RSpecRunTime] RSpec elapsed time: 13 minutes 19.71 seconds. Current RSS: ~1872M. load average: 0.99 1.09 1.24 1/294 12279


    when remote storage is used
      file stays on remote storage
# [RSpecRunTime] RSpec elapsed time: 13 minutes 21.01 seconds. Current RSS: ~1872M. load average: 0.99 1.09 1.24 1/294 12280


  gitlab:artifacts:migrate_to_local
    when remote storage is used
      and job has remote file store defined
        migrates file to local storage
# [RSpecRunTime] RSpec elapsed time: 13 minutes 22.26 seconds. Current RSS: ~1859M. load average: 0.99 1.09 1.24 1/294 12281


    when local storage is used
      file stays on local storage
# [RSpecRunTime] RSpec elapsed time: 13 minutes 23.52 seconds. Current RSS: ~1853M. load average: 0.99 1.09 1.24 1/294 12282



# [RSpecRunTime] Finishing example group spec/tasks/gitlab/artifacts/migrate_rake_spec.rb. It took 9.2 seconds. Expected to take 12.21 seconds.
# [RSpecRunTime] RSpec elapsed time: 13 minutes 25.9 seconds. Current RSS: ~1834M. load average: 1.07 1.10 1.24 1/292 12283


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

Gitlab::Observability
  .provisioning_url
    is expected to eq "https://observe.gitlab.com/v3/tenant/471"
  .oauth_url
    is expected to eq "https://observe.gitlab.com/v1/auth/start"
  .observability_url
    is expected to eq "https://observe.gitlab.com"
    when on staging.gitlab.com
      is expected to eq "https://observe.staging.gitlab.com"
    when overriden via ENV
      is expected to eq "https://example.net"
  .should_enable_observability_auth_scopes?
    with feature flag state {:observability_tracing=>true, :observability_metrics=>true, :observability_logs=>true}
      when resource is group
        is expected to equal true
      when resource is project
        is expected to equal true
      when resource is not a group or project
        is expected to equal false
    with feature flag state {:observability_tracing=>true, :observability_metrics=>true, :observability_logs=>false}
      when resource is group
        is expected to equal true
      when resource is project
        is expected to equal true
      when resource is not a group or project
        is expected to equal false
    with feature flag state {:observability_tracing=>true, :observability_metrics=>false, :observability_logs=>true}
      when resource is group
        is expected to equal true
      when resource is project
        is expected to equal true
      when resource is not a group or project
        is expected to equal false
    with feature flag state {:observability_tracing=>true, :observability_metrics=>false, :observability_logs=>false}
      when resource is group
        is expected to equal true
      when resource is project
        is expected to equal true
      when resource is not a group or project
        is expected to equal false
    with feature flag state {:observability_tracing=>false, :observability_metrics=>true, :observability_logs=>true}
      when resource is group
        is expected to equal true
      when resource is project
        is expected to equal true
      when resource is not a group or project
        is expected to equal false
    with feature flag state {:observability_tracing=>false, :observability_metrics=>true, :observability_logs=>false}
      when resource is group
        is expected to equal true
      when resource is project
        is expected to equal true
      when resource is not a group or project
        is expected to equal false
    with feature flag state {:observability_tracing=>false, :observability_metrics=>false, :observability_logs=>true}
      when resource is group
        is expected to equal true
      when resource is project
        is expected to equal true
      when resource is not a group or project
        is expected to equal false
    with feature flag state {:observability_tracing=>false, :observability_metrics=>false, :observability_logs=>false}
      when resource is group
        is expected to equal false
      when resource is project
        is expected to equal false
      when resource is not a group or project
        is expected to equal false

# [RSpecRunTime] Finishing example group spec/lib/gitlab/observability_spec.rb. It took 3.32 seconds. Expected to take 11.98 seconds.
# [RSpecRunTime] Starting example group spec/models/ci_platform_metric_spec.rb. Expected to take 11.63 seconds.

CiPlatformMetric
  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
      when some items are invalid
        does not insert any of them and raises an error
        inserts them anyway when bypassing validations
  validations
    is expected to validate that :recorded_at cannot be empty/falsy
    is expected to validate that :count cannot be empty/falsy
    is expected to validate that :count looks like an integer greater than 0
    is expected to allow :platform_target to be ‹""›
    is expected not to allow :platform_target to be ‹nil›
    is expected to validate that the length of :platform_target is at most 255
  .insert_auto_devops_platform_targets!
    when there is already existing metrics data
      does not erase any existing data
    when there are multiple platform target variables
      inserts platform target counts for that day
# [RSpecRunTime] RSpec elapsed time: 13 minutes 33.1 seconds. Current RSS: ~1850M. load average: 1.06 1.10 1.24 1/292 12284


    when there are invalid ci variable values for platform_target
      ignores those values
# [RSpecRunTime] RSpec elapsed time: 13 minutes 34.53 seconds. Current RSS: ~1841M. load average: 1.06 1.10 1.24 1/292 12285


    when there are no platform target variables
      does not generate any new platform metrics

# [RSpecRunTime] Finishing example group spec/models/ci_platform_metric_spec.rb. It took 5.94 seconds. Expected to take 11.63 seconds.
# [RSpecRunTime] Starting example group spec/models/protected_branch/merge_access_level_spec.rb. Expected to take 11.43 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
    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
  ::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 3.94 seconds. Expected to take 11.43 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/status/build/retryable_spec.rb. Expected to take 11.15 seconds.

Gitlab::Ci::Status::Build::Retryable
  #text
    does not override status text
  #icon
    does not override status icon
  #label
    does not override status label
  #group
    does not override status group
  #status_tooltip
    does not override status status_tooltip
  #badge_tooltip
    does return status
  action details
    #has_action?
      when user is allowed to update build
        is expected to have action
      when user is not allowed to update build
        is expected not to have action
    #action_path
      is expected to include "48/retry"
    #action_icon
      is expected to eq "retry"
    #action_title
      is expected to eq "Retry"
    #action_button_title
      is expected to eq "Retry this job"
  .matches?
    when build is retryable
      is a correct match
    when build is not retryable
      does not match

# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/status/build/retryable_spec.rb. It took 6.56 seconds. Expected to take 11.15 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/build/context/global_spec.rb. Expected to take 10.86 seconds.

Gitlab::Ci::Build::Context::Global
  #variables
    is expected to be an instance of Gitlab::Ci::Variables::Collection
    behaves like variables collection
      is expected to include {"CI_COMMIT_REF_NAME" => "master"}
      is expected to include {"CI_PIPELINE_IID" => "1"}
      is expected to include {"CI_PROJECT_PATH" => "namespace493/project-516"}
      is expected not to have key "CI_JOB_NAME"
      with passed yaml variables
        is expected to include {"SUPPORTED" => "parsed"}
# [RSpecRunTime] RSpec elapsed time: 13 minutes 49.5 seconds. Current RSS: ~1842M. load average: 1.44 1.18 1.26 1/292 12286


  #variables_hash
    is expected to be an instance of ActiveSupport::HashWithIndifferentAccess
    behaves like variables collection
      is expected to include {"CI_COMMIT_REF_NAME" => "master"}
      is expected to include {"CI_PIPELINE_IID" => "1"}
      is expected to include {"CI_PROJECT_PATH" => "namespace499/project-522"}
      is expected not to have key "CI_JOB_NAME"
      with passed yaml variables
        is expected to include {"SUPPORTED" => "parsed"}
# [RSpecRunTime] RSpec elapsed time: 13 minutes 53.36 seconds. Current RSS: ~1826M. load average: 1.44 1.18 1.26 1/292 12287



# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/build/context/global_spec.rb. It took 7.8 seconds. Expected to take 10.86 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab_settings/options_spec.rb. Expected to take 10.61 seconds.

GitlabSettings::Options
  #symbolize_keys!
    behaves like do not mutate
      when in production env
        returns the unchanged internal hash
      when not in production env
        raises an exception to avoid changing the internal keys
  #dup
    returns a deep copy
  #key?
    checks if a string key exists
    checks if a symbol key exists
  #deep_merge!
    merges in place with the existing options
    when the merge hash replaces existing configs
      merges in place with the duplicated options replaced
  .build
    when argument is a hash
      creates a new GitlabSettings::Options instance
  #to_hash
    returns the hash representation of the config
  #[]
    accesses the configuration key as string
    accesses the configuration key as symbol
  #default
    returns the option value
  #stringify_keys!
    behaves like do not mutate
      when in production env
        returns the unchanged internal hash
      when not in production env
        raises an exception to avoid changing the internal keys
  #[]=
    changes the configuration key as string
    changes the configuration key as symbol
    when key does not exist
      creates a new configuration by string key
      creates a new configuration by string key
  #method_missing
    when method is an option
      delegates methods to options keys
      uses methods to change options values
    when method is not an option
      when in production env
        delegates the method to the internal options hash
      when not in production env
        delegates the method to the internal options hash
    when method is not an option and does not exist in hash
      raises GitlabSettings::MissingSetting
  #deep_merge
    returns a new object with the options merged
    when the merge hash replaces existing configs
      returns a new object with the duplicated options replaced
  #merge!
    merges in place with the existing options
    when the merge hash replaces existing configs
      merges in place with the duplicated options replaced
  #is_a?
    returns false for anything different of Hash or GitlabSettings::Options
  #merge
    returns a new object with the options merged
    when the merge hash replaces existing configs
      returns a new object with the duplicated options replaced

# [RSpecRunTime] Finishing example group spec/lib/gitlab_settings/options_spec.rb. It took 2.79 seconds. Expected to take 10.61 seconds.
# [RSpecRunTime] Starting example group spec/services/security/ci_configuration/secret_detection_create_service_spec.rb. Expected to take 10.41 seconds.

Security::CiConfiguration::SecretDetectionCreateService
  #execute
    user does not belong to project
      returns an error status
      does not track a snowplow event
# [RSpecRunTime] RSpec elapsed time: 13 minutes 57.31 seconds. Current RSS: ~1869M. load average: 1.40 1.18 1.26 1/297 12320


    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: 13 minutes 58.8 seconds. Current RSS: ~1881M. load average: 1.40 1.18 1.26 1/297 12360


        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
      when the project is empty
        returns a ServiceResponse error

# [RSpecRunTime] Finishing example group spec/services/security/ci_configuration/secret_detection_create_service_spec.rb. It took 5.11 seconds. Expected to take 10.41 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/sidekiq_middleware/client_metrics_spec.rb. Expected to take 10.12 seconds.

Gitlab::SidekiqMiddleware::ClientMetrics
  behaves like metrics middleware with worker attribution
    when workers are not attributed
      behaves like a metrics middleware
        with mocked prometheus
          #call
            yields block
            increments enqueued jobs metric with correct labels when worker is a string of the class
            increments enqueued jobs metric with correct labels
    when a worker is wrapped into ActiveJob
      behaves like a metrics middleware
        with mocked prometheus
          #call
            yields block
            increments enqueued jobs metric with correct labels when worker is a string of the class
            increments enqueued jobs metric with correct labels
    when workers are attributed
      high urgency
        behaves like a metrics middleware
          with mocked prometheus
            #call
              yields block
              increments enqueued jobs metric with correct labels when worker is a string of the class
              increments enqueued jobs metric with correct labels
      no urgency
        behaves like a metrics middleware
          with mocked prometheus
            #call
              yields block
              increments enqueued jobs metric with correct labels when worker is a string of the class
              increments enqueued jobs metric with correct labels
      external dependencies
        behaves like a metrics middleware
          with mocked prometheus
            #call
              yields block
              increments enqueued jobs metric with correct labels when worker is a string of the class
              increments enqueued jobs metric with correct labels
      cpu boundary
        behaves like a metrics middleware
          with mocked prometheus
            #call
              yields block
              increments enqueued jobs metric with correct labels when worker is a string of the class
              increments enqueued jobs metric with correct labels
      memory boundary
        behaves like a metrics middleware
          with mocked prometheus
            #call
              yields block
              increments enqueued jobs metric with correct labels when worker is a string of the class
              increments enqueued jobs metric with correct labels
      feature category
        behaves like a metrics middleware
          with mocked prometheus
            #call
              yields block
              increments enqueued jobs metric with correct labels when worker is a string of the class
              increments enqueued jobs metric with correct labels
      combined
        behaves like a metrics middleware
          with mocked prometheus
            #call
              yields block
              increments enqueued jobs metric with correct labels when worker is a string of the class
              increments enqueued jobs metric with correct labels
  when mounted
    when scheduling jobs for immediate execution
      increments enqueued jobs metric with scheduling label set to immediate
    when scheduling jobs for future execution
      increments enqueued jobs metric with scheduling label set to delayed
      sets the scheduled_at field
    when the worker class cannot be found
      increments enqueued jobs metric with the worker labels set to NilClass

# [RSpecRunTime] Finishing example group spec/lib/gitlab/sidekiq_middleware/client_metrics_spec.rb. It took 2.76 seconds. Expected to take 10.12 seconds.
# [RSpecRunTime] Starting example group spec/lib/banzai/reference_redactor_spec.rb. Expected to take 9.95 seconds.

Banzai::ReferenceRedactor
  #redact
    when reference not visible to user
      redacts an array of documents
      replaces redacted reference with inner HTML
      when data-original attribute provided
        replaces redacted reference with original content
        does not replace redacted reference with original content if href is given
        uses the original content as the link content if given
    when project is in pending delete
      redacts an issue attached
      redacts an external issue
# [RSpecRunTime] RSpec elapsed time: 14 minutes 6.24 seconds. Current RSS: ~1879M. load average: 1.34 1.17 1.26 1/297 12459


    when reference visible to user
      does not redact an array of documents
  when the user cannot read cross project
    skips links to issues within the same project
    removes info from a cross project reference
# [RSpecRunTime] RSpec elapsed time: 14 minutes 8.53 seconds. Current RSS: ~1879M. load average: 1.34 1.17 1.26 1/297 12460


  #redact_nodes
    redacts an Array of nodes
  #nodes_visible_to_user
    returns a Set containing the visible nodes
    handles invalid references gracefully

# [RSpecRunTime] Finishing example group spec/lib/banzai/reference_redactor_spec.rb. It took 4.98 seconds. Expected to take 9.95 seconds.
# [RSpecRunTime] Starting example group spec/models/integrations/redmine_spec.rb. Expected to take 9.72 seconds.

Integrations::Redmine
  does not allow STI
  Validations
    when integration is active
      is expected to validate that :project_url cannot be empty/falsy
      is expected to validate that :issues_url cannot be empty/falsy
      is expected to validate that :new_issue_url cannot be empty/falsy
      behaves like issue tracker integration URL attribute
        is expected to allow :project_url to be ‹"https://example.com"›
        is expected not to allow :project_url to be ‹"example.com"›
        is expected not to allow :project_url to be ‹"ftp://example.com"›
        is expected not to allow :project_url to be ‹"herp-and-derp"›
# [RSpecRunTime] RSpec elapsed time: 14 minutes 10.35 seconds. Current RSS: ~1890M. load average: 1.31 1.17 1.26 1/297 12461


      behaves like issue tracker integration URL attribute
        is expected to allow :issues_url to be ‹"https://example.com"›
        is expected not to allow :issues_url to be ‹"example.com"›
        is expected not to allow :issues_url to be ‹"ftp://example.com"›
        is expected not to allow :issues_url to be ‹"herp-and-derp"›
      behaves like issue tracker integration URL attribute
        is expected to allow :new_issue_url to be ‹"https://example.com"›
        is expected not to allow :new_issue_url to be ‹"example.com"›
        is expected not to allow :new_issue_url to be ‹"ftp://example.com"›
        is expected not to allow :new_issue_url to be ‹"herp-and-derp"›
    when integration is inactive
      is expected not to validate that :project_url cannot be empty/falsy
      is expected not to validate that :issues_url cannot be empty/falsy
      is expected not to validate that :new_issue_url cannot be empty/falsy
  #reference_pattern
    does allow # on the reference
    behaves like allows project key on reference pattern
      allows underscores in the project name
      allows numbers in the project name
      requires the project name to begin with A-Z
      does not allow issue number to finish with a letter

# [RSpecRunTime] Finishing example group spec/models/integrations/redmine_spec.rb. It took 3.56 seconds. Expected to take 9.72 seconds.
# [RSpecRunTime] Starting example group spec/finders/packages/maven/package_finder_spec.rb. Expected to take 9.5 seconds.

Packages::Maven::PackageFinder
  uses CTE in the query
  #execute
    within the project
      behaves like handling valid and invalid paths
        with a valid path
          is expected to include #<Packages::Package id: 56, project_id: 513, created_at: "2024-02-20 23:33:46.529156000 +0000", updat...age_type: "maven", creator_id: 661, status: "default", last_downloaded_at: nil, status_message: nil>
        with an invalid path
          returns an empty array
        with an uninstallable package
          returns an empty array
    within a group
      behaves like handling valid and invalid paths
        with a valid path
          is expected to include #<Packages::Package id: 56, project_id: 513, created_at: "2024-02-20 23:33:46.529156000 +0000", updat...age_type: "maven", creator_id: 661, status: "default", last_downloaded_at: nil, status_message: nil>
        with an invalid path
          returns an empty array
        with an uninstallable package
          returns an empty array
      when the FF maven_remove_permissions_check_from_finder disabled
        returns an empty array
        when an user assigned the developer role
          behaves like handling valid and invalid paths
            with a valid path
              is expected to include #<Packages::Package id: 56, project_id: 513, created_at: "2024-02-20 23:33:46.529156000 +0000", updat...age_type: "maven", creator_id: 661, status: "default", last_downloaded_at: nil, status_message: nil>
            with an invalid path
              returns an empty array
            with an uninstallable package
              returns an empty array
    across all projects
      returns an empty array
    versionless maven-metadata.xml package
      without order by package file
        is expected to contain exactly #<Packages::Package id: 58, project_id: 515, created_at: "2024-02-20 23:33:49.691154016 +0000", updat...age_type: "maven", creator_id: 664, status: "default", last_downloaded_at: nil, status_message: nil>, #<Packages::Package id: 60, project_id: 516, created_at: "2024-02-20 23:33:50.060888428 +0000", updat...age_type: "maven", creator_id: 666, status: "default", last_downloaded_at: nil, status_message: nil>, and #<Packages::Package id: 62, project_id: 517, created_at: "2024-02-20 23:33:50.407861622 +0000", updat...age_type: "maven", creator_id: 668, status: "default", last_downloaded_at: nil, status_message: nil>
# [RSpecRunTime] RSpec elapsed time: 14 minutes 17.88 seconds. Current RSS: ~1896M. load average: 1.29 1.16 1.26 1/292 12462


      with order by package file
        is expected to eq #<Packages::Package id: 60, project_id: 516, created_at: "2024-02-20 23:33:50.060888428 +0000", updat...age_type: "maven", creator_id: 666, status: "default", last_downloaded_at: nil, status_message: nil>

# [RSpecRunTime] Finishing example group spec/finders/packages/maven/package_finder_spec.rb. It took 5.86 seconds. Expected to take 9.5 seconds.
# [RSpecRunTime] Starting example group spec/services/git/base_hooks_service_spec.rb. Expected to take 9.23 seconds.

Git::BaseHooksService
  push event
    creates push event
    create_push_event is set to false
      does not create push event
  project hooks and integrations
    hooks
      active hooks
        executes the hooks
      inactive hooks
        does not execute the hooks
    with integrations
      with active integrations
        executes the services
        with integrations.skip_ci push option
          executes the services
      with inactive integrations
        does not execute the services
    when execute_project_hooks param is set to false
      does not execute hooks and integrations
  Generating CI variables from push options
    with empty push options
      behaves like creates pipeline with params and expected variables
        calls the create pipeline service
    with push options not specifying variables
      behaves like creates pipeline with params and expected variables
        calls the create pipeline service
    with push options specifying variables
      behaves like creates pipeline with params and expected variables
        calls the create pipeline service
    with push options not specifying variables in correct format
      behaves like creates pipeline with params and expected variables
        calls the create pipeline service
  Pipeline creation
    when the pipeline is persisted
      and there are no errors
        returns success
      and there are errors
        does not log errors and returns success
    when the pipeline wasn't persisted
      and there are no errors
        returns success
      and there are errors
        logs errors and returns success
  notifying KAS
    enqueues the notification worker
    when KAS is disabled
      is expected not to receive perform_async(*(any args)) 0 times

# [RSpecRunTime] Finishing example group spec/services/git/base_hooks_service_spec.rb. It took 4.03 seconds. Expected to take 9.23 seconds.
# [RSpecRunTime] Starting example group spec/helpers/badges_helper_spec.rb. Expected to take 9.08 seconds.

BadgesHelper
  #gl_badge_tag
    creates a badge with given text
    adds style classes
    adds custom classes
    applies custom html attributes
    block content
      renders block content
      changes the function signature
    variants
      defaults to muted
      falls back to default given an unknown variant
      variant: :muted
        sets the variant class
      variant: :neutral
        sets the variant class
      variant: :info
        sets the variant class
      variant: :success
        sets the variant class
      variant: :warning
        sets the variant class
      variant: :danger
        sets the variant class
    sizes
      defaults to md
      falls back to default given an unknown size
      size: :sm
        sets the size class
      size: :md
        sets the size class
      size: :lg
        sets the size class
    icons
      with text
        renders an icon
        adds a spacing class and any custom classes to the icon
      icon only
        adds an img role to element
        adds aria-label to element
        does not add a spacing class to the icon
    given an href
      creates a badge link

# [RSpecRunTime] Finishing example group spec/helpers/badges_helper_spec.rb. It took 2.48 seconds. Expected to take 9.08 seconds.
# [RSpecRunTime] Starting example group spec/models/group_group_link_spec.rb. Expected to take 8.89 seconds.

GroupGroupLink
  does not allow STI
  validation
    is expected to validate that :shared_group cannot be empty/falsy
    is expected to validate that :shared_group_id is case-sensitively unique within the scope of :shared_with_group_id, producing a custom validation error on failure
    is expected to validate that :shared_with_group cannot be empty/falsy
    is expected to validate that :group_access cannot be empty/falsy
    is expected to validate that :group_access is either ‹10›, ‹20›, ‹30›, or ‹40›
  relations
    is expected to belong to shared_group required: false
    is expected to belong to shared_with_group required: false
  scopes
    for scopes fetching records based on access levels
      .non_guests
        returns all records which are greater than Guests access
      .with_owner_or_maintainer_access
        returns all records which have OWNER or MAINTAINER access
      .with_owner_access
        returns all records which have OWNER access
      .with_developer_access
        returns all records which have DEVELOPER access
      .with_developer_maintainer_owner_access
        returns all records which have DEVELOPER, MAINTAINER or OWNER access
    for access via group shares
      .groups_accessible_via
        returns other groups that you can get access to, via the group shares of the specified groups
      .groups_having_access_to
        returns all other groups that are having access to these specified groups, via group share
    .distinct_on_shared_with_group_id_with_group_access
      returns only one group link per group (with max group access)
  #human_access
    delegates to Gitlab::Access
  search by group name
    is expected to eq [#<GroupGroupLink id: 18, created_at: "2024-02-20 23:34:01.622010322 +0000", updated_at: "2024-02-20 ...10322 +0000", shared_group_id: 1085, shared_with_group_id: 1062, expires_at: nil, group_access: 20>]
    is expected to be empty

# [RSpecRunTime] Finishing example group spec/models/group_group_link_spec.rb. It took 3.7 seconds. Expected to take 8.89 seconds.
# [RSpecRunTime] Starting example group spec/services/projects/container_repository/cleanup_tags_service_spec.rb. Expected to take 8.72 seconds.

Projects::ContainerRepository::CleanupTagsService
  #execute
    with valid user
      behaves like handling invalid regular expressions
        when name_regex_delete is invalid
          behaves like handling invalid regex
            calls error tracking service
            behaves like returning error message
              returns error invalid regex
        when name_regex is invalid
          behaves like handling invalid regex
            calls error tracking service
            behaves like returning error message
              returns error invalid regex
        when name_regex_keep is invalid
          behaves like handling invalid regex
            calls error tracking service
            behaves like returning error message
              returns error invalid regex
      behaves like handling all types of container repositories
        with a migrated repository
          supporting the gitlab api
            behaves like calling service
              uses cleanup tags service Projects::ContainerRepository::Gitlab::CleanupTagsService
          not supporting the gitlab api
            behaves like calling service
              uses cleanup tags service Projects::ContainerRepository::ThirdParty::CleanupTagsService
        with a non migrated repository
          behaves like calling service
            uses cleanup tags service Projects::ContainerRepository::ThirdParty::CleanupTagsService
    for container expiration policy
      behaves like handling invalid regular expressions
        when name_regex_delete is invalid
          behaves like handling invalid regex
            calls error tracking service
            behaves like returning error message
              returns error invalid regex
        when name_regex is invalid
          behaves like handling invalid regex
            calls error tracking service
            behaves like returning error message
              returns error invalid regex
        when name_regex_keep is invalid
          behaves like handling invalid regex
            calls error tracking service
            behaves like returning error message
              returns error invalid regex
      behaves like handling all types of container repositories
        with a migrated repository
          supporting the gitlab api
            behaves like calling service
              uses cleanup tags service Projects::ContainerRepository::Gitlab::CleanupTagsService
          not supporting the gitlab api
            behaves like calling service
              uses cleanup tags service Projects::ContainerRepository::ThirdParty::CleanupTagsService
        with a non migrated repository
          behaves like calling service
            uses cleanup tags service Projects::ContainerRepository::ThirdParty::CleanupTagsService
    with not allowed user
      behaves like returning error message
        returns error access denied
    with no user
      behaves like returning error message
        returns error access denied

# [RSpecRunTime] Finishing example group spec/services/projects/container_repository/cleanup_tags_service_spec.rb. It took 2.58 seconds. Expected to take 8.72 seconds.
# [RSpecRunTime] Starting example group spec/models/prometheus_alert_spec.rb. Expected to take 8.5 seconds.

PrometheusAlert
  does not allow STI
  .distinct_projects
    returns a count of all distinct projects which have an alert
# [RSpecRunTime] RSpec elapsed time: 14 minutes 32.69 seconds. Current RSS: ~1907M. load average: 1.22 1.16 1.25 1/297 12651


  operators
    contains the correct equality operator
  associations
    is expected to belong to project required: false
    is expected to belong to environment required: false
    is expected to belong to prometheus_metric required: false
    is expected to have many prometheus_alert_events
    is expected to have many related_issues
    is expected to have many alert_management_alerts
  project validations
    is expected to validate that :environment cannot be empty/falsy
    is expected to validate that :project cannot be empty/falsy
    is expected to validate that :prometheus_metric cannot be empty/falsy
    is expected to validate that :operator cannot be empty/falsy
    is expected to validate that :threshold cannot be empty/falsy
    when environment and metric belongs same project
      is expected to be valid
    when environment belongs to different project
      is expected not to be valid
    when metric belongs to different project
      is expected not to be valid
    when metric is common
      is expected to be valid
  runbook validations
    disallow invalid urls
    allow valid urls
  #full_query
    returns the concatenated query
  #to_param
    returns the params of the prometheus alert

# [RSpecRunTime] Finishing example group spec/models/prometheus_alert_spec.rb. It took 4.14 seconds. Expected to take 8.5 seconds.
# [RSpecRunTime] Starting example group spec/db/docs_spec.rb. Expected to take 8.28 seconds.

Views documentation
  for each object
    has a metadata file
    has a valid metadata file
    has a valid feature category
    has a valid metadata file with allowed fields
    has a valid metadata file without missing fields

# [RSpecRunTime] Finishing example group spec/db/docs_spec.rb. It took 0.61 second. Expected to take 8.28 seconds.
# [RSpecRunTime] Starting example group spec/db/docs_spec.rb. Expected to take 8.28 seconds.

Tables documentation
  for each object
    has a metadata file
    has a valid metadata file
    has a valid feature category
    has a valid metadata file with allowed fields
    has a valid metadata file without missing fields
# [RSpecRunTime] RSpec elapsed time: 14 minutes 37.49 seconds. Current RSS: ~1947M. load average: 1.21 1.15 1.25 1/292 12652



# [RSpecRunTime] Finishing example group spec/db/docs_spec.rb. It took 1.51 seconds. Expected to take 8.28 seconds.
# [RSpecRunTime] Starting example group spec/db/docs_spec.rb. Expected to take 8.28 seconds.

Deleted tables documentation
  for each object
    has a metadata file
    has a valid metadata file
    has a valid feature category
    has a valid metadata file with allowed fields
    has a valid metadata file without missing fields

# [RSpecRunTime] Finishing example group spec/db/docs_spec.rb. It took 0.72 second. Expected to take 8.28 seconds.
# [RSpecRunTime] Starting example group spec/db/docs_spec.rb. Expected to take 8.28 seconds.

Deleted views documentation
  for each object
    has a metadata file
    has a valid metadata file
    has a valid feature category
    has a valid metadata file with allowed fields
    has a valid metadata file without missing fields

# [RSpecRunTime] Finishing example group spec/db/docs_spec.rb. It took 0.62 second. Expected to take 8.28 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/internal_events_spec.rb. Expected to take 8.18 seconds.

Gitlab::InternalEvents
  logs warning on missing property
  rescues error
  updates Redis, RedisHLL and Snowplow
  logs error on unknown event
  logs warning on nil property
  when arguments are invalid
    when user is not an instance of User
      behaves like an event that logs an error
        logs an error
    when project is not an instance of Project
      behaves like an event that logs an error
        logs an error
    when namespace is not an instance of Namespace
      behaves like an event that logs an error
        logs an error
  when namespace is passed
    uses id from namespace
  when category is passed
    is sent to Snowplow
  Product Analytics tracking
    when internal_events_for_product_analytics FF is enabled
      calls Product Analytics Ruby SDK
      when GITLAB_ANALYTICS_ID is nil
        behaves like does not send a Product Analytics event
          does not call the Product Analytics Ruby SDK
      when GITLAB_ANALYTICS_URL is nil
        behaves like does not send a Product Analytics event
          does not call the Product Analytics Ruby SDK
    when internal_events_for_product_analytics FF is disabled
      behaves like does not send a Product Analytics event
        does not call the Product Analytics Ruby SDK
  when only user is passed
    updated all tracking methods
  when unique key is not defined
    logs to Redis and Snowplow but not RedisHLL
  when namespace is not passed
    uses id from projects namespace
  when unique property is missing
    logs error on missing unique property
  when unique key is defined
    is used when logging to RedisHLL
    when property is missing
      logs error
    when there are multiple unique keys
      with the property_name tracking feature flag enabled
        all of them are used when logging to RedisHLL
      with the property_name tracking feature flag disabled
        with multiple property_names defined
          logs an error
        with single property_names defined
          logs to RedisHLL only once
        when event_name is user_visited_dashboard
          logs to RedisHLL only once with user_id
    when send_snowplow_event is false
      logs to Redis and RedisHLL but not Snowplow

# [RSpecRunTime] Finishing example group spec/lib/gitlab/internal_events_spec.rb. It took 2.56 seconds. Expected to take 8.18 seconds.
# [RSpecRunTime] Starting example group spec/components/pajamas/badge_component_spec.rb. Expected to take 8.0 seconds.

Pajamas::BadgeComponent
  HTML options
    get added as HTML attributes
    can be combined with component options in no particular order
    with custom CSS classes
      combines custom classes and component classes
  content slot
    can be used instead of the text param
    takes presendence over the text param
  text param
    is shown inside the badge
  options
    icon
      adds the correct icon and margin
    icon_classes
      as string
        combines custom classes and component classes
      as array
        combines custom classes and component classes
    icon_only
      adds no extra margin to the icon
      adds the text as ARIA label
    href
      makes the a badge a link
    size
      size: :sm
        adds size class
      size: :md
        adds size class
      size: :lg
        adds size class
      with unknown size
        adds the default size class
    variant
      variant: :muted
        adds variant class
      variant: :neutral
        adds variant class
      variant: :info
        adds variant class
      variant: :success
        adds variant class
      variant: :warning
        adds variant class
      variant: :danger
        adds variant class
      with unknown variant
        adds the default variant class

# [RSpecRunTime] Finishing example group spec/components/pajamas/badge_component_spec.rb. It took 2.16 seconds. Expected to take 8.0 seconds.
# [RSpecRunTime] Starting example group spec/lib/bulk_imports/projects/pipelines/issues_pipeline_spec.rb. Expected to take 7.9 seconds.

BulkImports::Projects::Pipelines::IssuesPipeline
  #run
    imports issue into destination project
    zoom meetings
      restores zoom meetings
# [RSpecRunTime] RSpec elapsed time: 14 minutes 45.19 seconds. Current RSS: ~1948M. load average: 1.17 1.15 1.25 1/292 12653


    sentry issue
      restores sentry issue information
    award emoji
      has award emoji on an issue
    issue state
      restores issue state
    labels
      restores issue labels
    milestone
      restores issue milestone
    timelogs
      restores issue timelogs
    notes
      restores issue notes and their award emoji
      when importing an issue with one award emoji and other relations with one item
        saves properly

# [RSpecRunTime] Finishing example group spec/lib/bulk_imports/projects/pipelines/issues_pipeline_spec.rb. It took 5.07 seconds. Expected to take 7.9 seconds.
# [RSpecRunTime] Starting example group spec/lib/sidebars/groups/menus/settings_menu_spec.rb. Expected to take 7.78 seconds.

Sidebars::Groups::Menus::SettingsMenu
  #render?
    when user cannot admin group
      returns false
  #separated?
    returns true
  Menu items
    General menu
      behaves like access rights checks
        is expected not to be nil
        when the user does not have access
          is expected to be nil
    Integrations menu
      behaves like access rights checks
        is expected not to be nil
        when the user does not have access
          is expected to be nil
    Projects menu
      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 menu
      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 menu
      behaves like access rights checks
        is expected not to be nil
        when the user does not have access
          is expected to be nil
    Applications menu
      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 packages feature is disabled
        is expected to be nil
      when packages feature is enabled
        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/groups/menus/settings_menu_spec.rb. It took 2.76 seconds. Expected to take 7.78 seconds.
# [RSpecRunTime] Starting example group spec/models/board_group_recent_visit_spec.rb. Expected to take 7.56 seconds.

BoardGroupRecentVisit
  does not allow STI
  relationships
    is expected to belong to user required: false
    is expected to belong to group required: false
    is expected to belong to board required: false
  validations
    is expected to validate that :user cannot be empty/falsy
    is expected to validate that :group cannot be empty/falsy
    is expected to validate that :board cannot be empty/falsy
  behaves like boards recent visit
    #visited
      creates a visit if one does not exists
      behaves like was visited previously
        updates the timestamp
      when we try to create a visit that is not unique
        behaves like was visited previously
          updates the timestamp
    #latest
      returns the most recent visited
      returns last 3 visited boards
# [RSpecRunTime] RSpec elapsed time: 14 minutes 56.51 seconds. Current RSS: ~1862M. load average: 1.15 1.14 1.25 1/292 12668



# [RSpecRunTime] Finishing example group spec/models/board_group_recent_visit_spec.rb. It took 5.12 seconds. Expected to take 7.56 seconds.
# [RSpecRunTime] Starting example group spec/services/projects/group_links/update_service_spec.rb. Expected to take 7.48 seconds.

Projects::GroupLinks::UpdateService#execute
  when the user does not have proper permissions to update a project group link
    returns 404 not found
  when user has proper permissions to update a project group link
    when the user is a MAINTAINER in the project
      updates existing link
      project authorizations update
        calls AuthorizedProjectUpdate::ProjectRecalculateWorker to update project authorizations
        calls AuthorizedProjectUpdate::UserRefreshFromReplicaWorker with a delay to update project authorizations
        updates project authorizations of users who had access to the project via the group share
# [RSpecRunTime] RSpec elapsed time: 14 minutes 58.96 seconds. Current RSS: ~1860M. load average: 1.13 1.14 1.24 1/292 12669


      with only param not requiring authorization refresh
        does not perform any project authorizations update using `AuthorizedProjectUpdate::ProjectRecalculateWorker`
      updating a link with OWNER access
        updating expires_at
          behaves like returns :forbidden
            is expected to not change result and not change result
        updating group_access
          behaves like returns :forbidden
            is expected to not change result and not change result
        updating both expires_at and group_access
          behaves like returns :forbidden
            is expected to not change result and not change result
    when the user is an OWNER in the project
      updating expires_at
        updates existing link
      updating group_access
        updates existing link
      updating both expires_at and group_access
        updates existing link

# [RSpecRunTime] Finishing example group spec/services/projects/group_links/update_service_spec.rb. It took 4.75 seconds. Expected to take 7.48 seconds.
# [RSpecRunTime] Starting example group spec/services/markup/rendering_service_spec.rb. Expected to take 7.26 seconds.

Markup::RenderingService
  #execute
    when text is missing
      returns an empty string
    when file_name is missing
      returns html (rendered by Banzai)
    when postprocess_context is missing
      returns html (rendered by Banzai)
    when rendered context is present
      returns an empty string
    when file is a markdown file
      returns html (rendered by Banzai)
    when file is asciidoc file
      returns html (rendered by Gitlab::Asciidoc)
    when file is a regular text file
      returns html (rendered by ActionView::TagHelper)
    when file has an unknown type
      returns html (rendered by Gitlab::OtherMarkup)
    with reStructuredText
      returns rendered html
      when input has an invalid syntax
        uses a simple formatter for html
# [RSpecRunTime] RSpec elapsed time: 15 minutes 4.87 seconds. Current RSS: ~1860M. load average: 1.12 1.14 1.24 1/295 12683



# [RSpecRunTime] Finishing example group spec/services/markup/rendering_service_spec.rb. It took 3.61 seconds. Expected to take 7.26 seconds.
# [RSpecRunTime] Starting example group spec/lib/banzai/filter/asset_proxy_filter_spec.rb. Expected to take 7.21 seconds.

Banzai::Filter::AssetProxyFilter
  does not replace if disabled
  during initialization
    #initialize_settings
    supports deprecated whitelist settings
    when allowlist is empty
      defaults to the install domain
  when properly configured
    data_canonical_src: "http://example.com/test.png", src: "https://assets.example.com/08df250eeeef1a8cf2c761475ac74c5065105612/687474703a2f2f6578616d706c652e636f6d2f746573742e706e67"
      correctly modifies the img tag
    data_canonical_src: "///example.com/test.png", src: "https://assets.example.com/3368d2c7b9bed775bdd1e811f36a4b80a0dcd8ab/2f2f2f6578616d706c652e636f6d2f746573742e706e67"
      correctly modifies the img tag
    data_canonical_src: "//example.com/test.png", src: "https://assets.example.com/a2e9aa56319e31bbd05be72e633f2864ff08becb/2f2f6578616d706c652e636f6d2f746573742e706e67"
      correctly modifies the img tag
    data_canonical_src: "oigjsie8787%$**(#(%0", src: "https://assets.example.com/1b893f9a71d66c99437f27e19b9a061a6f5d9391/6f69676a7369653837383725242a2a2823282530"
      correctly modifies the img tag
    data_canonical_src: "https://example.com/x?¬", src: "https://assets.example.com/2f29a8c7f13f3ae14dc18c154dbbd657d703e75f/68747470733a2f2f6578616d706c652e636f6d2f783fc2ac"
      correctly modifies the img tag
    data_canonical_src: "http:example.com", src: "https://assets.example.com/bcefecd18484ec2850887d6730273e5e70f5ed1a/687474703a6578616d706c652e636f6d"
      correctly modifies the img tag
    data_canonical_src: "https:example.com", src: "https://assets.example.com/648e074361143780357db0b5cf73d4438d5484d3/68747470733a6578616d706c652e636f6d"
      correctly modifies the img tag
    data_canonical_src: "https://example.com/##", src: "https://assets.example.com/d7d0c845cc553d9430804c07e9456545ef3e6fe6/68747470733a2f2f6578616d706c652e636f6d2f2323"
      correctly modifies the img tag
    data_canonical_src: nil, src: "test.png"
      correctly modifies the img tag
    data_canonical_src: nil, src: "/test.png"
      correctly modifies the img tag
    data_canonical_src: nil, src: "http://localhost/test.png"
      correctly modifies the img tag
    data_canonical_src: nil, src: "http://gitlab.com/test.png"
      correctly modifies the img tag
    data_canonical_src: nil, src: "http://gitlab.com/test.png?url=http://example.com/test.png"
      correctly modifies the img tag
    data_canonical_src: nil, src: "http://images.mydomain.com/test.png"
      correctly modifies the img tag

# [RSpecRunTime] Finishing example group spec/lib/banzai/filter/asset_proxy_filter_spec.rb. It took 1.59 seconds. Expected to take 7.21 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/database/partitioning/monthly_strategy_spec.rb. Expected to take 7.04 seconds.

Gitlab::Database::Partitioning::MonthlyStrategy
  #current_partitions
    detects both partitions
  #missing_partitions
    with existing partitions
      detects the gap and the missing partition in May 2020
      detects the missing partitions at the end of the range and expects a partition for July 2020
      detects the missing partitions at the end of the range and expects a partition for August 2020
      creates partitions 6 months out from now (Sep 2020 through Feb 2021)
      detects all missing partitions
      when pruning partitions before June 2020
        does not include the missing partition from May 2020 because it would be dropped
        detects the missing partition for 1 month ago (July 2020)
    without existing partitions
      detects the missing catch-all partition at the beginning
      detects the missing partition for today and expects a partition for August 2020
      creates partitions 6 months out from now (Sep 2020 through Feb 2021
      detects all missing partitions
      when pruning partitions before June 2020
        detects exactly the set of partitions from June 2020 to March 2021
    with a regular partition but no catchall (MINVALUE, to) partition
      detects a missing catch-all partition to add before the existing partition
  #extra_partitions
    with existing partitions
      without a time retention policy
        has no extra partitions to prune
      with a time retention policy that excludes no partitions
        has no extra partitions to prune
      with a time retention policy of 3 months
        prunes the unbounded partition ending 2020-05-01
      with a time retention policy of 2 months
        prunes the unbounded partition and the partition for May-June
        when the retain_non_empty_partitions is true
          prunes empty partitions
          does not prune non-empty partitions
  attributes
    is expected to have attributes {:analyze_interval => 1 week, :model => #<ClassDouble(ApplicationRecord) (anonymous)>, :partitioning_key => :partition, :retain_for => 12 months, :retain_non_empty_partitions => true}

# [RSpecRunTime] Finishing example group spec/lib/gitlab/database/partitioning/monthly_strategy_spec.rb. It took 2.32 seconds. Expected to take 7.04 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/gl_repository/identifier_spec.rb. Expected to take 6.92 seconds.

Gitlab::GlRepository::Identifier
  project repository
    https://gitlab.com/gitlab-org/gitlab/-/issues/219192 (PENDING: No reason given)
    behaves like parsing gl_repository identifier
      returns correct information
    behaves like parsing gl_repository identifier
      returns correct information
  wiki
    behaves like parsing gl_repository identifier
      returns correct information
    behaves like parsing gl_repository identifier
      returns correct information
  snippet
    when PersonalSnippet
      behaves like parsing gl_repository identifier
        returns correct information
    when ProjectSnippet
      behaves like parsing gl_repository identifier
        returns correct information
  design
    behaves like parsing gl_repository identifier
      returns correct information
  when the format is incorrect
    identifier: "wiki-noid"
      raises InvalidIdentifier
    identifier: "foo-2"
      raises InvalidIdentifier
    identifier: "project-0"
      raises InvalidIdentifier
    identifier: "2-project"
      raises InvalidIdentifier
    identifier: "snippet-2-wiki"
      raises InvalidIdentifier
    identifier: "project-wibble-wiki"
      raises InvalidIdentifier
    identifier: "wiki-1-project"
      raises InvalidIdentifier
    identifier: "snippet"
      raises InvalidIdentifier
    identifier: "project-1-wiki-bar"
      raises InvalidIdentifier
    identifier: "project-1-project"
      raises InvalidIdentifier

# [RSpecRunTime] Finishing example group spec/lib/gitlab/gl_repository/identifier_spec.rb. It took 1.79 seconds. Expected to take 6.92 seconds.
# [RSpecRunTime] Starting example group spec/db/production/settings_spec.rb. Expected to take 6.79 seconds.

seed production settings
  GITLAB_SHARED_RUNNERS_REGISTRATION_TOKEN is set in the environment
Saved Runner Registration Token
Saved CI JWT signing key
    writes the token to the database
  GITLAB_PROMETHEUS_METRICS_ENABLED is set in the environment
    GITLAB_PROMETHEUS_METRICS_ENABLED is true
Saved Prometheus metrics enabled flag
Saved CI JWT signing key
      prometheus_metrics_enabled is set to true
    GITLAB_PROMETHEUS_METRICS_ENABLED is false
Saved Prometheus metrics enabled flag
Saved CI JWT signing key
      prometheus_metrics_enabled is set to false
    GITLAB_PROMETHEUS_METRICS_ENABLED is default
Saved CI JWT signing key
      prometheus_metrics_enabled is set to true
  CI JWT signing key
Saved CI JWT signing key
    writes valid RSA key to the database

# [RSpecRunTime] Finishing example group spec/db/production/settings_spec.rb. It took 4.1 seconds. Expected to take 6.79 seconds.
# [RSpecRunTime] Starting example group spec/services/milestones/find_or_create_service_spec.rb. Expected to take 6.71 seconds.

Milestones::FindOrCreateService
  #execute
    when finding milestone on project level
      returns existing milestone
    when finding milestone on group level
      returns existing milestone
    when not finding milestone
      when user has permissions
        when params are valid
          creates a new milestone at project level using params
        when params are not valid
          returns nil
      when user does not have permissions
        does not create a new milestone
        returns nil
# [RSpecRunTime] RSpec elapsed time: 15 minutes 18.75 seconds. Current RSS: ~1912M. load average: 1.18 1.15 1.25 1/292 12684



# [RSpecRunTime] Finishing example group spec/services/milestones/find_or_create_service_spec.rb. It took 4.08 seconds. Expected to take 6.71 seconds.
# [RSpecRunTime] Starting example group spec/lib/api/entities/project_import_status_spec.rb. Expected to take 6.6 seconds.

API::Entities::ProjectImportStatus
  #as_json
    when no import state exists
      includes basic fields and no failures
    when import has not finished yet
      includes basic fields and no failures
    when import has finished with failed relations
      includes basic fields with failed relations
# [RSpecRunTime] RSpec elapsed time: 15 minutes 20.67 seconds. Current RSS: ~1893M. load average: 1.16 1.15 1.24 1/292 12685


    when import has failed
      when user has access to read import status
        includes basic fields with import error
      when user does not have access to read import status
        includes basic fields with import error
    when importing from github
      exposes the import stats

# [RSpecRunTime] Finishing example group spec/lib/api/entities/project_import_status_spec.rb. It took 4.02 seconds. Expected to take 6.6 seconds.
# [RSpecRunTime] Starting example group spec/finders/releases/evidence_pipeline_finder_spec.rb. Expected to take 6.42 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.07 seconds. Expected to take 6.42 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/config/entry/port_spec.rb. Expected to take 6.35 seconds.

Gitlab::Ci::Config::Entry::Port
  when configuration is a string
    #valid?
      is valid
    #value
      returns valid hash
    #number
      returns port number
    #protocol
      is nil
    #name
      is nil
  when configuration is a hash
    with the complete hash
      #valid?
        is valid
      #value
        returns valid hash
      #number
        returns port number
      #protocol
        returns port protocol
      #name
        returns port name
    with only the port number
      #valid?
        is valid
      #value
        returns valid hash
      #number
        returns port number
      #protocol
        is nil
      #name
        is nil
    without the number
      #valid?
        is not valid
  when configuration is invalid
    #valid?
      is valid
  when protocol
    is http
      #valid?
        is valid
    is https
      #valid?
        is valid
    is neither http nor https
      #valid?
        is invalid

# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/config/entry/port_spec.rb. It took 1.66 seconds. Expected to take 6.35 seconds.
# [RSpecRunTime] Starting example group spec/tooling/lib/tooling/mappings/partial_to_views_mappings_spec.rb. Expected to take 6.28 seconds.

Tooling::Mappings::PartialToViewsMappings
  #view_includes_modified_partial?
    when the included partial name is relative to the view file
      when the partial is not part of the changed files
        returns false
      when the partial is part of the changed files
        returns true
    when the included partial name is relative to the base views folder
      when the partial is not part of the changed files
        returns false
      when the partial is part of the changed files
        returns true
  #reconstruct_partial_filename
    when the partial does not contain a path
      returns the correct filename
    when the partial contains a path
      returns the correct filename
  #filter_files
    when the file does not exist on disk
      returns an empty array
    when the file exists on disk
      when the file is not in the view base folders
        returns an empty array
      when the filename does not start with an underscore
        returns an empty array
      when the filename does not have the correct extension
        returns an empty array
      when the file is a partial
        returns the file
  #extract_partial_keyword
    returns the correct partial keyword
  #execute
    does not modify the content of the input file
    when no partials were modified
      does not change the output file
    when some partials were modified
      when the partials are not included in any views
        does not change the output file
      when the partials are included in views
        writes the view including the partial to the output
  #find_pattern_in_file
    when the file contains the pattern
      returns the pattern once
    when the file does not contain the pattern
      returns an empty array

# [RSpecRunTime] Finishing example group spec/tooling/lib/tooling/mappings/partial_to_views_mappings_spec.rb. It took 1.52 seconds. Expected to take 6.28 seconds.
# [RSpecRunTime] Starting example group spec/rubocop/cop/rspec/factory_bot/inline_association_spec.rb. Expected to take 6.12 seconds.

RuboCop::Cop::RSpec::FactoryBot::InlineAssociation
  no offenses
    for `association(:user)`
      does not register any offenses
    for `association(:user, :admin)`
      does not register any offenses
    for `association(:user, name: "any")`
      does not register any offenses
    for `after(:build) do |object|`
      does not register any offenses
    for `initialize_with do`
      does not register any offenses
    for `user_id { create(:user).id }`
      does not register any offenses
  offenses
    recognizes `add_attribute`
    recognizes `transient` attributes
    code_snippet: "create(:user)", autocorrected: "association(:user)"
      registers an offense and corrects
    code_snippet: "FactoryBot.create(:user)", autocorrected: "association(:user)"
      registers an offense and corrects
    code_snippet: "::FactoryBot.create(:user)", autocorrected: "association(:user)"
      registers an offense and corrects
    code_snippet: "create(:user, :admin)", autocorrected: "association(:user, :admin)"
      registers an offense and corrects
    code_snippet: "create(:user, name: \"any\")", autocorrected: "association(:user, name: \"any\")"
      registers an offense and corrects
    code_snippet: "build(:user)", autocorrected: "association(:user)"
      registers an offense and corrects
    code_snippet: "FactoryBot.build(:user)", autocorrected: "association(:user)"
      registers an offense and corrects
    code_snippet: "::FactoryBot.build(:user)", autocorrected: "association(:user)"
      registers an offense and corrects
    code_snippet: "build(:user, :admin)", autocorrected: "association(:user, :admin)"
      registers an offense and corrects
    code_snippet: "build(:user, name: \"any\")", autocorrected: "association(:user, name: \"any\")"
      registers an offense and corrects

# [RSpecRunTime] Finishing example group spec/rubocop/cop/rspec/factory_bot/inline_association_spec.rb. It took 1.53 seconds. Expected to take 6.12 seconds.
# [RSpecRunTime] Starting example group spec/sidekiq_cluster/sidekiq_cluster_spec.rb. Expected to take 5.99 seconds.

Gitlab::SidekiqCluster
  .start
    starts Sidekiq with the given queues, environment and options
    starts Sidekiq with the given queues and sensible default options
  .start_sidekiq
    starts a Sidekiq process
    handles duplicate queue names
    runs the sidekiq process in a new process group
  .count_by_queue
    tallies the queue counts
  .concurrency
    queue_count: 2, min: 0, max: 0, fixed_concurrency: 0, expected: 3
      is expected to eq 3
    queue_count: 2, min: 0, max: 9, fixed_concurrency: 0, expected: 3
      is expected to eq 3
    queue_count: 2, min: 1, max: 4, fixed_concurrency: 0, expected: 3
      is expected to eq 3
    queue_count: 2, min: 4, max: 5, fixed_concurrency: 0, expected: 4
      is expected to eq 4
    queue_count: 5, min: 2, max: 3, fixed_concurrency: 0, expected: 3
      is expected to eq 3
    queue_count: 2, min: 1, max: 1, fixed_concurrency: 0, expected: 1
      is expected to eq 1
    queue_count: 0, min: 3, max: 3, fixed_concurrency: 0, expected: 3
      is expected to eq 3
    queue_count: 1, min: 4, max: 3, fixed_concurrency: 0, expected: 3
      is expected to eq 3
    queue_count: 1, min: 0, max: 20, fixed_concurrency: 20, expected: 20
      is expected to eq 20
    queue_count: 1, min: 0, max: 20, fixed_concurrency: 10, expected: 10
      is expected to eq 10
    queue_count: 1, min: 20, max: 20, fixed_concurrency: 10, expected: 10
      is expected to eq 10
    queue_count: 5, min: 0, max: 0, fixed_concurrency: 10, expected: 10
      is expected to eq 10

# [RSpecRunTime] Finishing example group spec/sidekiq_cluster/sidekiq_cluster_spec.rb. It took 1.37 seconds. Expected to take 5.99 seconds.
# [RSpecRunTime] Starting example group spec/models/packages/npm/metadatum_spec.rb. Expected to take 5.97 seconds.

Packages::Npm::Metadatum
  does not allow STI
  relationships
    is expected to belong to package required: false inverse_of => npm_metadatum
  validations
    package
      is expected to validate that :package cannot be empty/falsy
      ensure npm package type
    package_json
      is expected to allow :package_json to be ‹{"name" => "foo", "version" => "v1.0", "dist" => {"tarball"=>"x", "shasum"=>"x"}}›
      is expected to allow :package_json to be ‹{"name" => "foo", "version" => "v1.0", "dist" => {"tarball"=>"x", "shasum"=>"x"}, extra-field: {:foo=>"bar"}}›
      is expected to allow :package_json to be ‹{"name" => "foo", "version" => "v1.0", "dist" => {"tarball"=>"x", "shasum"=>"x", :"extra-field"=>"x"}}›
      is expected not to allow :package_json to be ‹{"version" => "v1.0", "dist" => {"tarball"=>"x", "shasum"=>"x"}}›
      is expected not to allow :package_json to be ‹{"name" => "foo", "dist" => {"tarball"=>"x", "shasum"=>"x"}}›
      is expected not to allow :package_json to be ‹{"name" => "foo", "version" => "v1.0"}›
      is expected not to allow :package_json to be ‹{"name" => "foo", "version" => "v1.0", "dist" => {"shasum"=>"x"}}›
      is expected not to allow :package_json to be ‹{"name" => "foo", "version" => "v1.0", "dist" => {"tarball"=>"x"}}›
      is expected not to allow :package_json to be ‹{}›
      is expected not to allow :package_json to be ‹{test: "testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest"}›, producing a custom validation error on failure
  scopes
    .package_id_in
      returns metadatums with the given package ids

# [RSpecRunTime] Finishing example group spec/models/packages/npm/metadatum_spec.rb. It took 1.76 seconds. Expected to take 5.97 seconds.
# [RSpecRunTime] Starting example group spec/graphql/mutations/alert_management/update_alert_status_spec.rb. Expected to take 5.82 seconds.

Mutations::AlertManagement::UpdateAlertStatus
  is expected to require graphql authorizations :update_alert_management_alert
  #resolve
    raises an error if the resource is not accessible to the user
    user has access to project
      changes the status
      returns the alert with no errors
      behaves like an incident management tracked event
        .track_event
          tracks the event using redis
# [RSpecRunTime] RSpec elapsed time: 15 minutes 35.24 seconds. Current RSS: ~1900M. load average: 1.06 1.12 1.23 1/295 12745


      behaves like Snowplow event tracking with RedisHLL context
        behaves like Snowplow event tracking
          is emitted
      error occurs when updating
        returns the alert with errors
        invalid status given
          returns the alert with errors

# [RSpecRunTime] Finishing example group spec/graphql/mutations/alert_management/update_alert_status_spec.rb. It took 2.34 seconds. Expected to take 5.82 seconds.
# [RSpecRunTime] Starting example group spec/workers/projects/inactive_projects_deletion_cron_worker_spec.rb. Expected to take 5.81 seconds.

Projects::InactiveProjectsDeletionCronWorker
  #perform
    when delete inactive projects feature is disabled
      does not invoke Projects::InactiveProjectsDeletionNotificationWorker
      does not delete the inactive projects
# [RSpecRunTime] RSpec elapsed time: 15 minutes 37.73 seconds. Current RSS: ~1891M. load average: 1.06 1.12 1.23 1/292 12746


    when delete inactive projects feature is enabled
      invokes Projects::InactiveProjectsDeletionNotificationWorker for inactive projects
      does not invoke InactiveProjectsDeletionNotificationWorker for already notified inactive projects
      invokes Projects::DestroyService for projects that are inactive even after being notified
      behaves like worker is running for more than 4 minutes
        stores the last processed inactive project_id in redis cache
      behaves like worker finishes processing in less than 4 minutes
        clears the last processed inactive project_id from redis cache
      behaves like an idempotent worker
        is labeled as idempotent
        performs multiple times sequentially without raising an exception

# [RSpecRunTime] Finishing example group spec/workers/projects/inactive_projects_deletion_cron_worker_spec.rb. It took 2.74 seconds. Expected to take 5.81 seconds.
# [RSpecRunTime] Starting example group spec/services/work_items/callbacks/description_spec.rb. Expected to take 5.67 seconds.

WorkItems::Callbacks::Description
  #after_initialize
    when user has permission to update description
      when user is work item author
        behaves like sets work item description
          correctly sets work item description value
      when user is a project reporter
        behaves like sets work item description
          correctly sets work item description value
      when description is nil
        behaves like sets work item description
          correctly sets work item description value
      when description is empty
        behaves like sets work item description
          correctly sets work item description value
      when description param is not present
        behaves like does not set work item description
          does not change work item description value
      when widget does not exist in new type
        resets the work item's description
    when user does not have permission to update description
      when user is a project guest
        behaves like does not set work item description
          does not change work item description value
      with private project
        when user is work item author
          behaves like does not set work item description
            does not change work item description value

# [RSpecRunTime] Finishing example group spec/services/work_items/callbacks/description_spec.rb. It took 2.71 seconds. Expected to take 5.67 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/pipeline/expression/lexeme/not_matches_spec.rb. Expected to take 5.59 seconds.

Gitlab::Ci::Pipeline::Expression::Lexeme::NotMatches
  .build
    with non-evaluable operands
      creates a new instance of the token
    with evaluable operands
      creates a new instance of the token
  .type
    is an operator
  .precedence
    has a precedence
  #evaluate
    when left and right do not match
      is expected to eq true
    when left and right match
      is expected to eq false
    when left is nil
      is expected to eq true
    when right is nil
      is expected to eq true
    when left and right are nil
      is expected to eq true
    when left is an empty string
      is expected to eq true
    when left and right are empty strings
      is expected to eq false
    when left is a multiline string and matches right
      is expected to eq false
    when left is a multiline string and does not match right
      is expected to eq true
    when a matching pattern uses regex flags
      is expected to eq false
    when a non-matching pattern uses regex flags
      is expected to eq true
    when right value is a regexp string
      when matching
        is expected to eq false
      when not matching
        is expected to eq true

# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/pipeline/expression/lexeme/not_matches_spec.rb. It took 1.33 seconds. Expected to take 5.59 seconds.
# [RSpecRunTime] Starting example group spec/models/concerns/bulk_insertable_associations_spec.rb. Expected to take 5.54 seconds.

BulkInsertableAssociations
-- create_table(:_test_bulk_parents, {:force=>true})
   -> 0.0040s
-- create_table(:_test_bulk_foos, {:force=>true})
   -> 0.0036s
-- create_table(:_test_bulk_bars, {:force=>true})
   -> 0.0035s
-- create_table(:_test_simple_bars, {:force=>true})
   -> 0.0033s
  does not allow STI
  saving bulk insertable associations
    can disable bulk-inserts within a bulk-insert block
    when items already have IDs
      stores nothing and raises an error
    when items have no IDs set
      stores them all and updates items with IDs
    when items are empty
      does nothing
    when relation name does not match class name
      stores them all
    with multiple threads
      isolates bulk insert behavior between threads
    with multiple associations
      isolates writes between associations
    passing bulk insert arguments
      disables validations on target association
    when association is not bulk-insert safe
      saves it normally
    when association is not has_many
      saves it normally
    when an item is not valid
      .save
        invalidates the parent and returns false
      .save!
        invalidates the parent and raises error
-- drop_table(:_test_bulk_foos, {:force=>true})
   -> 0.0430s
-- drop_table(:_test_bulk_bars, {:force=>true})
   -> 0.0015s
-- drop_table(:_test_simple_bars, {:force=>true})
   -> 0.0014s
-- drop_table(:_test_bulk_parents, {:force=>true})
   -> 0.0012s

# [RSpecRunTime] Finishing example group spec/models/concerns/bulk_insertable_associations_spec.rb. It took 1.4 seconds. Expected to take 5.54 seconds.
# [RSpecRunTime] Starting example group spec/models/ci/artifact_blob_spec.rb. Expected to take 5.44 seconds.

Ci::ArtifactBlob
  does not allow STI
  #id
    returns a hash of the path
  #name
    returns the entry name
  #path
    returns the entry path
  #size
    returns the entry size
  #mode
    returns the entry mode
  #external_storage
    returns :build_artifact
  #external_url
    with not allowed extension
      is expected to be nil
    with allowed extension
      is expected to eq "http://namespace570.example.com/-/project1/-/jobs/54/artifacts/other_artifacts_0.1.2/doc_sample.txt"
      when port is configured
        is expected to eq "http://namespace570.example.com:1234/-/project1/-/jobs/54/artifacts/other_artifacts_0.1.2/doc_sample.txt"
  #external_link?
    with not allowed extensions
      returns false
    with allowed extensions
      returns true

# [RSpecRunTime] Finishing example group spec/models/ci/artifact_blob_spec.rb. It took 1.79 seconds. Expected to take 5.44 seconds.
# [RSpecRunTime] Starting example group spec/views/projects/diffs/_viewer.html.haml_spec.rb. Expected to take 5.3 seconds.

projects/diffs/_viewer.html.haml
  when there is a render error
    renders the error
  when the viewer is collapsed
    renders the collapsed view
  when there is no render error
    prepares the viewer
    renders the viewer
# [RSpecRunTime] RSpec elapsed time: 15 minutes 49.11 seconds. Current RSS: ~1904M. load average: 1.11 1.13 1.24 1/297 12805



# [RSpecRunTime] Finishing example group spec/views/projects/diffs/_viewer.html.haml_spec.rb. It took 3.1 seconds. Expected to take 5.3 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/database/load_balancing/rack_middleware_spec.rb. Expected to take 5.27 seconds.

Gitlab::Database::LoadBalancing::RackMiddleware
  #call
    handles a request
  #find_caught_up_replica
    does not stick if no namespace and identifier could be found
    sticks to the primary if a warden user is found
    sticks to the primary if a sticking namespace and identifier is found
    sticks to the primary if multiple sticking namespaces and identifiers were found
  #stick_if_necessary
    sticks to the primary for the user
    when no write was performed
      does not stick to the primary
    when there is no user in the env
      when there is an explicit single sticking object in the env
        sticks to the single sticking object
      when there is multiple explicit sticking objects
        sticks to the sticking objects
      when there no explicit sticking objects
        does not stick to the primary
  #clear
    clears the currently used host and session
  #sticking_namespaces
    using a Warden request
      returns the warden user if present
      returns an empty Array if no user was present
    using a request with a manually set sticking object
      returns the sticking object
    using a regular request
      returns an empty Array

# [RSpecRunTime] Finishing example group spec/lib/gitlab/database/load_balancing/rack_middleware_spec.rb. It took 1.14 seconds. Expected to take 5.27 seconds.
# [RSpecRunTime] Starting example group spec/tasks/gitlab/feature_categories_rake_spec.rb. Expected to take 5.14 seconds.

gitlab:feature_categories:index
  outputs objects by stage group

# [RSpecRunTime] Finishing example group spec/tasks/gitlab/feature_categories_rake_spec.rb. It took 4.2 seconds. Expected to take 5.14 seconds.
# [RSpecRunTime] RSpec elapsed time: 15 minutes 54.6 seconds. Current RSS: ~1890M. load average: 1.10 1.13 1.23 1/297 12806


# [RSpecRunTime] Starting example group spec/policies/clusters/agents/activity_event_policy_spec.rb. Expected to take 5.13 seconds.

Clusters::Agents::ActivityEventPolicy
  rules
    reporter
      is expected to be disallowed :admin_cluster
      is expected to be disallowed :read_cluster
# [RSpecRunTime] RSpec elapsed time: 15 minutes 56.14 seconds. Current RSS: ~1865M. load average: 1.10 1.13 1.23 1/297 12807


    developer
      is expected to be disallowed :admin_cluster
      is expected to be allowed :read_cluster
    maintainer
      is expected to be allowed :admin_cluster
      is expected to be allowed :read_cluster

# [RSpecRunTime] Finishing example group spec/policies/clusters/agents/activity_event_policy_spec.rb. It took 2.57 seconds. Expected to take 5.13 seconds.
# [RSpecRunTime] Starting example group spec/lib/bitbucket_server/connection_spec.rb. Expected to take 5.0 seconds.

BitbucketServer::Connection
  #get
    runs with retry_with_delay
    returns JSON body
    throws an exception if the response is not 200
    throws an exception if the response is not JSON
    throws an exception upon a network error
    when the response is a 429 rate limit reached error
      sleeps, retries and if the error persists it fails
  #post
    runs with retry_with_delay
    returns JSON body
    throws an exception if the response is not 200
    throws an exception upon a network error
    throws an exception if the URI is invalid
  #delete
    branch API
      runs with retry_with_delay
      returns JSON body
      throws an exception if the response is not 200
      throws an exception upon a network error

# [RSpecRunTime] Finishing example group spec/lib/bitbucket_server/connection_spec.rb. It took 1.25 seconds. Expected to take 5.0 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/harbor/client_spec.rb. Expected to take 4.96 seconds.

Gitlab::Harbor::Client
  #initialize
    if integration is nil
      raises ConfigError
    integration is provided
      is initialized successfully
  #get_repositories
    with valid params
      get repositories
    when harbor project does not exist
      raises Gitlab::Harbor::Client::Error
    with invalid response
      raises Gitlab::Harbor::Client::Error
  #get_artifacts
    with valid params
      get artifacts
    when harbor repository does not exist
      raises Gitlab::Harbor::Client::Error
    with invalid response
      raises Gitlab::Harbor::Client::Error
  #get_tags
    with valid params
      get tags
    when harbor artifact does not exist
      raises Gitlab::Harbor::Client::Error
    with invalid response
      raises Gitlab::Harbor::Client::Error
  #check_project_availability
    calls api/v2.0/projects successfully

# [RSpecRunTime] Finishing example group spec/lib/gitlab/harbor/client_spec.rb. It took 1.37 seconds. Expected to take 4.96 seconds.
# [RSpecRunTime] Starting example group spec/graphql/mutations/security/ci_configuration/configure_sast_iac_spec.rb. Expected to take 4.88 seconds.

Mutations::Security::CiConfiguration::ConfigureSastIac
  is expected to require graphql authorizations :push_code
  #resolve
    generates an error if the resource is not accessible to the user
    when user does not have enough permissions
      generates an error
# [RSpecRunTime] RSpec elapsed time: 16 minutes 0.86 second. Current RSS: ~1893M. load average: 1.10 1.13 1.23 1/292 12814


    when user is a maintainer of a different project
      generates an error
    when the user does not have permission to create a new branch
      returns an array of errors
    when the user can create a merge request
      when service successfully generates a path to create a new merge request
        returns a success path
      when service can not generate any path to create a new merge request
        returns an array of errors

# [RSpecRunTime] Finishing example group spec/graphql/mutations/security/ci_configuration/configure_sast_iac_spec.rb. It took 2.55 seconds. Expected to take 4.88 seconds.
# [RSpecRunTime] Starting example group spec/graphql/mutations/users/set_namespace_commit_email_spec.rb. Expected to take 4.75 seconds.

Mutations::Users::SetNamespaceCommitEmail
  is expected to require graphql authorizations :read_namespace_via_membership
  #resolve
    when current_user does not have permission
      raises an error
    when the user has permission
      when the email does not belong to the target user
        returns the validation error
      when namespace is a group
        behaves like success
          creates namespace commit email with correct values
      when namespace is a user
        behaves like success
          creates namespace commit email with correct values
      when namespace is a project
        behaves like success
          creates namespace commit email with correct values

# [RSpecRunTime] Finishing example group spec/graphql/mutations/users/set_namespace_commit_email_spec.rb. It took 2.79 seconds. Expected to take 4.75 seconds.
# [RSpecRunTime] Starting example group spec/models/users_statistics_spec.rb. Expected to take 4.72 seconds.

UsersStatistics
  does not allow STI
  scopes
    .order_created_at_desc
      returns the entries ordered by created at descending
  .latest
    returns the latest entry
  .create_current_stats!
    when successful
      creates an entry with the current statistics values
# [RSpecRunTime] RSpec elapsed time: 16 minutes 6.71 seconds. Current RSS: ~1872M. load average: 1.17 1.14 1.24 1/294 12832


    when unsuccessful
      raises an ActiveRecord::RecordInvalid exception
# [RSpecRunTime] RSpec elapsed time: 16 minutes 7.9 seconds. Current RSS: ~1868M. load average: 1.17 1.14 1.24 1/294 12833


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

# [RSpecRunTime] Finishing example group spec/models/users_statistics_spec.rb. It took 3.02 seconds. Expected to take 4.72 seconds.
# [RSpecRunTime] Starting example group spec/services/security/ci_configuration/sast_parser_service_spec.rb. Expected to take 4.63 seconds.

Security::CiConfiguration::SastParserService
  #configuration
    parses the configuration for SAST
    while populating current values of the entities
      when .gitlab-ci.yml is present
        populates the current values from the file
        SAST_EXCLUDED_ANALYZERS is set
          enables analyzers correctly
# [RSpecRunTime] RSpec elapsed time: 16 minutes 9.82 seconds. Current RSS: ~1864M. load average: 1.23 1.16 1.24 1/297 12908


      when .gitlab-ci.yml is absent
        populates the current values with the default values
      when .gitlab-ci.yml does not include the sast job
        populates the current values with the default values

# [RSpecRunTime] Finishing example group spec/services/security/ci_configuration/sast_parser_service_spec.rb. It took 2.26 seconds. Expected to take 4.63 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/database/reindexing/reindex_concurrently_spec.rb. Expected to take 4.6 seconds.

Gitlab::Database::Reindexing::ReindexConcurrently#perform
  recreates the index using REINDEX with a long statement timeout
  when the index serves an exclusion constraint
    raises an error
  when attempting to reindex an expression index
    raises an error
  when the index is a dangling temporary index from a previous reindexing run
    with the temporary index prefix
      raises an error
    with the temporary index prefix with a counter
      raises an error
  with dangling indexes matching TEMPORARY_INDEX_PATTERN, i.e. /some\_index\_ccnew(\d)*/
    with normal index names
      behaves like dropping the dangling index
        drops the dangling indexes while controlling lock_timeout
    with index name at 63 character limit
      behaves like dropping the dangling index
        drops the dangling indexes while controlling lock_timeout

# [RSpecRunTime] Finishing example group spec/lib/gitlab/database/reindexing/reindex_concurrently_spec.rb. It took 1.25 seconds. Expected to take 4.6 seconds.
# [RSpecRunTime] Starting example group spec/graphql/resolvers/clusters/agent_tokens_resolver_spec.rb. Expected to take 4.5 seconds.

Resolvers::Clusters::AgentTokensResolver
  is expected to eq #<Class:0x00007a03a5023d98>
  is expected to be truthy
  is expected to be empty
  #resolve
    returns active tokens associated with the agent, ordered by last_used_at
    user does not have permission
      is expected to be empty
# [RSpecRunTime] RSpec elapsed time: 16 minutes 14.82 seconds. Current RSS: ~1848M. load average: 1.22 1.15 1.24 1/297 12922



# [RSpecRunTime] Finishing example group spec/graphql/resolvers/clusters/agent_tokens_resolver_spec.rb. It took 3.27 seconds. Expected to take 4.5 seconds.
# [RSpecRunTime] Starting example group spec/models/merge_request_reviewer_spec.rb. Expected to take 4.46 seconds.

MergeRequestReviewer
  does not allow STI
  behaves like having unique enum values
    has unique values in "state"
  associations
    is expected to belong to merge_request class_name => MergeRequest required: false
    is expected to belong to reviewer class_name => User required: false inverse_of => merge_request_reviewers
# [RSpecRunTime] RSpec elapsed time: 16 minutes 17.1 seconds. Current RSS: ~1871M. load average: 1.22 1.15 1.24 1/298 13002



# [RSpecRunTime] Finishing example group spec/models/merge_request_reviewer_spec.rb. It took 2.27 seconds. Expected to take 4.46 seconds.
# [RSpecRunTime] Starting example group spec/lib/banzai/pipeline/incident_management/timeline_event_pipeline_spec.rb. Expected to take 4.34 seconds.

Banzai::Pipeline::IncidentManagement::TimelineEventPipeline
  .to_html
    when markdown contains font style transformations
      is expected to eq "<p><strong>bold</strong> <em>italic</em> <code>code</code></p>"
    when markdown contains banned HTML tags
      filters out banned tags
    when markdown contains links
      is expected to eq "<p><a href=\"https://gitlab.com\" rel=\"nofollow noreferrer noopener\" target=\"_blank\">GitLab</a></p>"
    when markdown contains images
      replaces image with a link to the image
    when markdown contains emojis
      renders emojis wrapped in <gl-emoji> tag
    when markdown contains labels
      replaces existing label to a link
    when markdown contains table
      is expected to eq "table headtable content"
    when markdown contains a reference to an issue
      contains a link to the issue
    when markdown contains a reference to a merge request
      contains a link to the merge request
  .filters
    contains required filters

# [RSpecRunTime] Finishing example group spec/lib/banzai/pipeline/incident_management/timeline_event_pipeline_spec.rb. It took 1.56 seconds. Expected to take 4.34 seconds.
# [RSpecRunTime] Starting example group spec/workers/integrations/group_mention_worker_spec.rb. Expected to take 4.32 seconds.

Integrations::GroupMentionWorker
  #perform
    executes the service
    behaves like an idempotent worker
      is labeled as idempotent
      performs multiple times sequentially without raising an exception
# [RSpecRunTime] RSpec elapsed time: 16 minutes 20.02 seconds. Current RSS: ~1881M. load average: 1.20 1.15 1.24 1/297 13003


    when mentionable_type is not supported
      does not execute the service
      logs an error
    when mentionable cannot be found
      does not execute the service

# [RSpecRunTime] Finishing example group spec/workers/integrations/group_mention_worker_spec.rb. It took 2.01 seconds. Expected to take 4.32 seconds.
# [RSpecRunTime] Starting example group spec/lib/json_web_token/rsa_token_spec.rb. Expected to take 4.25 seconds.

JSONWebToken::RSAToken
  token
    for valid key to be validated
      is expected not to raise Exception
      is expected to include {"key" => "value"}
      is expected to eq {"alg"=>"RS256", "kid"=>"OGXY:4TR7:FAVO:WEM2:XXEW:E4FP:TKL7:7ACK:TZAF:D54P:SUIA:P3B2", "typ"=>"JWT"}
    for invalid key to raise an exception
      is expected to raise JWT::DecodeError
  .decode
    with an invalid token
      that is junk
        raises exception saying 'Not enough or too many segments'
      that has been fiddled with
        raises exception saying 'Invalid segment encoding'
      that was generated using a different key
        raises exception saying 'Signature verification failed
      that is expired
        raises exception saying 'Signature has expired'

# [RSpecRunTime] Finishing example group spec/lib/json_web_token/rsa_token_spec.rb. It took 1.54 seconds. Expected to take 4.25 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/github_import/importer/attachments/issues_importer_spec.rb. Expected to take 4.22 seconds.

Gitlab::GithubImport::Importer::Attachments::IssuesImporter
  #id_for_already_imported_cache
    is expected to eq 1091
  #sequential_import
    selects both issues, and selects only properties it needs
    executes importer only for the issue with an attachment
    when issue has already been processed
      does not select issues that were processed
      does not execute importer for the issue with an attachment
  #object_type
    is expected to eq :issue_attachment
  #collection_method
    is expected to eq :issue_attachments
  #sidekiq_worker_class
    is expected to eq Gitlab::GithubImport::Attachments::ImportIssueWorker

# [RSpecRunTime] Finishing example group spec/lib/gitlab/github_import/importer/attachments/issues_importer_spec.rb. It took 1.19 seconds. Expected to take 4.22 seconds.
# [RSpecRunTime] Starting example group spec/rubocop/cop/graphql/id_type_spec.rb. Expected to take 4.15 seconds.

RuboCop::Cop::Graphql::IDType
  adds an offense when GraphQL::Types::ID is used as a param to #argument
  does not add an offense for calls to #argument without GraphQL::Types::ID
  allowlisted arguments
    does not add an offense for calls to #argument with iid as argument name
    does not add an offense for calls to #argument with full_path as argument name
    does not add an offense for calls to #argument with project_path as argument name
    does not add an offense for calls to #argument with group_path as argument name
    does not add an offense for calls to #argument with target_project_path as argument name
    does not add an offense for calls to #argument with target_group_path as argument name
    does not add an offense for calls to #argument with target_path as argument name
    does not add an offense for calls to #argument with namespace_path as argument name
    does not add an offense for calls to #argument with context_namespace_path as argument name

# [RSpecRunTime] Finishing example group spec/rubocop/cop/graphql/id_type_spec.rb. It took 0.95 second. Expected to take 4.15 seconds.
# [RSpecRunTime] Starting example group spec/models/packages/rpm/repository_file_spec.rb. Expected to take 4.1 seconds.

Packages::Rpm::RepositoryFile
  does not allow STI
  when updating project statistics
    when the package file has an explicit size
      behaves like UpdateProjectStatistics
        is expected to be a new record
    when the package file does not have a size
      behaves like UpdateProjectStatistics
        is expected to be a new record
  validations
    is expected to validate that :project cannot be empty/falsy
  with status scopes
    .with_status
      is expected to contain exactly #<Packages::Rpm::RepositoryFile id: 2, created_at: "2024-02-20 23:35:58.488071511 +0000", updated_at:...d0b3306c4fd0696dcad506f5273...", file_name: "364c77dd49e8f814d56e621d0b3306c4fd0696dcad506f5273...">
  relationships
    is expected to belong to project required: false
  behaves like having unique enum values
    has unique values in "status"
  .has_oversized_filelists?
    when has oversized filelists
      is expected to equal true
    when filelists.xml is not oversized
      is expected to be falsey
    when there is no filelists.xml
      is expected to be falsey

# [RSpecRunTime] Finishing example group spec/models/packages/rpm/repository_file_spec.rb. It took 1.7 seconds. Expected to take 4.1 seconds.
# [RSpecRunTime] Starting example group spec/graphql/mutations/todos/restore_spec.rb. Expected to take 4.04 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: 16 minutes 28.34 seconds. Current RSS: ~1887M. load average: 1.18 1.15 1.24 1/292 13004



# [RSpecRunTime] Finishing example group spec/graphql/mutations/todos/restore_spec.rb. It took 2.31 seconds. Expected to take 4.04 seconds.
# [RSpecRunTime] Starting example group spec/services/packages/debian/create_package_file_service_spec.rb. Expected to take 3.98 seconds.

Packages::Debian::CreatePackageFileService
  #execute
    with temp file
      behaves like a valid deb
        creates a new package file
      with a .changes file
        behaves like a valid changes
          creates a new package file
      with distribution
        behaves like a valid deb
          creates a new package file
      when current_user is missing
        raises an error
    with remote file
      behaves like a valid deb
        creates a new package file
    when package is missing
      raises an error
    when params is empty
      raises an error
    when file is missing
      raises an error

# [RSpecRunTime] Finishing example group spec/services/packages/debian/create_package_file_service_spec.rb. It took 1.16 seconds. Expected to take 3.98 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/external_authorization/client_spec.rb. Expected to take 3.94 seconds.

Gitlab::ExternalAuthorization::Client
  #request_access
    performs requests to the configured endpoint
    adds the correct params for the user to the body of the request
    respects the the timeout
    adds the mutual tls params when they are present
    returns an expected response
    wraps exceptions if the request fails
    passes local request setting to Gitlab::HTTP
    for ldap users
      includes the ldap dn and identities for ldap users
    for non-ldap users with identities
      includes all the identities

# [RSpecRunTime] Finishing example group spec/lib/gitlab/external_authorization/client_spec.rb. It took 1.05 seconds. Expected to take 3.94 seconds.
# [RSpecRunTime] Starting example group spec/support_specs/matchers/exceed_query_limit_helpers_spec.rb. Expected to take 3.88 seconds.

ExceedQueryLimitHelpers
  can count queries
  can select specific queries
  can filter specific models
  can ignore specific queries
  can perform inclusion and exclusion
  does not contain marginalia annotations
  #diff_query_group_message
    prints a group helpfully
  #diff_query_counts
    merges two query counts, showing only diffs
    can show common queries if so desired
  #count_queries
    handles queries with suffixes over multiple lines
    can aggregate queries

# [RSpecRunTime] Finishing example group spec/support_specs/matchers/exceed_query_limit_helpers_spec.rb. It took 1.12 seconds. Expected to take 3.88 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/config/entry/include/rules_spec.rb. Expected to take 3.84 seconds.

Gitlab::Ci::Config::Entry::Include::Rules
  .new
    with an "if"
      behaves like a valid config
        is expected to be valid
        when composed
          is expected to be valid
    with a "changes"
      when composed
        behaves like a valid config
          is expected to be valid
          when composed
            is expected to be valid
    with a list of two rules
      behaves like a valid config
        is expected to be valid
        when composed
          is expected to be valid
    without an array
      behaves like an invalid config
        is expected not to be valid
        has errors
  #value
    is expected to eq []
    when composed
      returns the composed entries value
      when invalid
        returns the invalid config

# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/config/entry/include/rules_spec.rb. It took 0.98 second. Expected to take 3.84 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/config/yaml/tags/reference_spec.rb. Expected to take 3.78 seconds.

Gitlab::Ci::Config::Yaml::Tags::Reference
  .tag
    implements the tag method
  #resolve
    with circular references
      raises CircularReferenceError
    with nested circular references
      raises CircularReferenceError
    with missing references
      raises MissingReferenceError
    with invalid references
      yaml: "a: !reference", error_message: "!reference [] is not valid"
        raises an error
      yaml: "a: !reference str", error_message: "!reference \"str\" is not valid"
        raises an error
      yaml: "a: !reference 1", error_message: "!reference \"1\" is not valid"
        raises an error
      yaml: "a: !reference [1]", error_message: "!reference [1] is not valid"
        raises an error
      yaml: "a: !reference { b: c }", error_message: "!reference {\"b\"=>\"c\"} is not valid"
        raises an error
    when the references are valid but do not match the config
      raises a MissingReferenceError
    with arrays
      is expected to match (a hash including {:f => {:g => [[1, 2], 5, [3, 4]]}})
    with hashes
      when referencing an entire hash
        is expected to match (a hash including {:e => {:f => {:c => "c", :d => "d"}}})
      when referencing only a hash value
        is expected to match (a hash including {:i => {:g => "c", :h => "h"}})
      when referencing a value before its definition
        is expected to match (a hash including {:a => {:b => {:e => 1, :f => "f"}}})

# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/config/yaml/tags/reference_spec.rb. It took 1.09 seconds. Expected to take 3.78 seconds.
# [RSpecRunTime] Starting example group spec/graphql/resolvers/container_repository_tags_resolver_spec.rb. Expected to take 3.75 seconds.

Resolvers::ContainerRepositoryTagsResolver
  #resolve
    when Gitlab API is supported
      returns an ExternallyPaginatedArray
      get the page size based on first and last param
        sends the page size based on first if next page is asked
        sends the page size based on last if prev page is asked
      with parameters
        before: nil, after: nil, sort: "NAME_DESC", name: "", first: 10, last: nil, sort_value: "-name", referrers: nil
          calls ContainerRepository#tags_page with correct parameters
        before: "bb", after: nil, sort: "NAME_ASC", name: "a", first: nil, last: 5, sort_value: "name", referrers: false
          calls ContainerRepository#tags_page with correct parameters
        before: nil, after: "aa", sort: "NAME_DESC", name: "a", first: 10, last: nil, sort_value: "-name", referrers: true
          calls ContainerRepository#tags_page with correct parameters
    when Gitlab API is not supported
      behaves like fetching via tags and filter in place
        by name
          without sort
            is expected to contain exactly "aaa", "bab", "bbb", "ccc", and "123"
          with sorting and filtering
            name_asc
              is expected to eq ["123", "aaa", "bab", "bbb", "ccc"]
            name_desc
              is expected to eq ["ccc", "bbb", "bab", "aaa", "123"]
            filter by name
              is expected to eq ["bbb", "bab"]

# [RSpecRunTime] Finishing example group spec/graphql/resolvers/container_repository_tags_resolver_spec.rb. It took 1.36 seconds. Expected to take 3.75 seconds.
# [RSpecRunTime] Starting example group spec/graphql/resolvers/ci/group_runners_resolver_spec.rb. Expected to take 3.69 seconds.

Resolvers::Ci::GroupRunnersResolver
  #resolve
    when user cannot see runners
      returns Gitlab::Graphql::Errors::ResourceNotAvailable
# [RSpecRunTime] RSpec elapsed time: 16 minutes 36.39 seconds. Current RSS: ~1892M. load average: 1.15 1.14 1.23 1/291 13005


    with user as group owner
      returns all the runners
      with membership direct
        returns only direct runners
    with obj set to nil
      raises an error
    with obj not set to group
      raises an error
    Allowed query arguments
      calls RunnersFinder with expected arguments

# [RSpecRunTime] Finishing example group spec/graphql/resolvers/ci/group_runners_resolver_spec.rb. It took 2.11 seconds. Expected to take 3.69 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/jira_import/issues_importer_spec.rb. Expected to take 3.66 seconds.

Gitlab::JiraImport::IssuesImporter
  #imported_items_cache_key
    is expected to eq "jira-importer/already-imported/594/issues"
    behaves like raise exception if not implemented
      is expected not to raise Exception
  #execute
    when no returned issues
      does not schedule any import jobs
    with results returned
      when single page of results is returned
        schedules 2 import jobs
      when importing some issue raises an exception
        schedules 2 import jobs
      when duplicate results are returned
        schedules 2 import jobs

# [RSpecRunTime] Finishing example group spec/lib/gitlab/jira_import/issues_importer_spec.rb. It took 1.41 seconds. Expected to take 3.66 seconds.
# [RSpecRunTime] Starting example group spec/models/snippet_input_action_collection_spec.rb. Expected to take 3.61 seconds.

SnippetInputActionCollection
  does not allow STI
  is expected to delegate #empty? to the #actions object
  is expected to delegate #any? to the #actions object
  is expected to delegate #[] to the #actions object
  #to_commit_actions
    translates all actions to commit actions
  #valid?
    returns true
    when any of the actions is invalid
      returns false
  when allowed_actions param is passed
    builds SnippetInputAction with that param

# [RSpecRunTime] Finishing example group spec/models/snippet_input_action_collection_spec.rb. It took 0.65 second. Expected to take 3.61 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/database/background_migration/batched_job_transition_log_spec.rb. Expected to take 3.56 seconds.

Gitlab::Database::BackgroundMigration::BatchedJobTransitionLog
  does not allow STI
  is expected to be a kind of Gitlab::Database::SharedModel(abstract)
  associations
    is expected to belong to batched_job required: false
  validations
    is expected to validate that :previous_status cannot be empty/falsy
    is expected to validate that :next_status cannot be empty/falsy
    is expected to validate that :batched_job cannot be empty/falsy
    is expected to validate that the length of :exception_class is at most 100
    is expected to validate that the length of :exception_message is at most 1000
    is expected to define :previous_status as an enum backed by an integer with values ‹[:pending, :running, :failed, :succeeded]›, prefix: true
    is expected to define :next_status as an enum backed by an integer with values ‹[:pending, :running, :failed, :succeeded]›, prefix: true

# [RSpecRunTime] Finishing example group spec/lib/gitlab/database/background_migration/batched_job_transition_log_spec.rb. It took 0.8 second. Expected to take 3.56 seconds.
# [RSpecRunTime] Starting example group spec/models/abuse/user_trust_score_spec.rb. Expected to take 3.5 seconds.

Abuse::UserTrustScore
  does not allow STI
  #arkose_custom_score
    when the user has an arkose custom risk score
      returns the latest score
    when the user does not have an arkose custom risk score
      defaults to zero
  #remove_old_scores
    if max events is exceeded
      removes the oldest events
  #spammer?
    when the user is a spammer
      classifies the user as a spammer
    when the user is not a spammer
      does not classify the user as a spammer
  #spam_score
    when the user is a spammer
      returns the expected score
    when the user is not a spammer
      returns the expected score
  #arkose_global_score
    when the user has an arkose global risk score
      returns the latest score
    when the user does not have an arkose global risk score
      defaults to zero
  #telesign_score
    when the user has a telesign risk score
      returns the latest score
    when the user does not have a telesign risk score
      defaults to zero

# [RSpecRunTime] Finishing example group spec/models/abuse/user_trust_score_spec.rb. It took 1.23 seconds. Expected to take 3.5 seconds.
# [RSpecRunTime] Starting example group spec/lib/sbom/package_url/normalizer_spec.rb. Expected to take 3.46 seconds.

Sbom::PackageUrl::Normalizer
  #normalize_name
    behaves like name normalization
      with bitbucket url
        downcases text
      with github url
        downcases text
      with pypi url
        downcases text and replaces underscores
      with other urls
        does not change the text
    when text is nil
      raises an error
  #normalize_namespace
    behaves like name normalization
      with bitbucket url
        downcases text
      with github url
        downcases text
      with pypi url
        downcases text and replaces underscores
      with other urls
        does not change the text
    when text is nil
      allows nil values

# [RSpecRunTime] Finishing example group spec/lib/sbom/package_url/normalizer_spec.rb. It took 0.78 second. Expected to take 3.46 seconds.
# [RSpecRunTime] Starting example group spec/workers/update_highest_role_worker_spec.rb. Expected to take 3.4 seconds.

UpdateHighestRoleWorker
  #perform
    when user is not found
      does not update or deletes any highest role
    when user is found
      when user is active and not internal
        when user highest role exists
          updates the highest role for the user
        when user highest role does not exist
          creates the highest role for the user
      when user is either inactive or internal
        additional_attributes: {:state=>"blocked"}
          deletes highest role
        additional_attributes: {:user_type=>:alert_bot}
          deletes highest role
        when user highest role does not exist
          does not delete a highest role

# [RSpecRunTime] Finishing example group spec/workers/update_highest_role_worker_spec.rb. It took 1.28 seconds. Expected to take 3.4 seconds.
# [RSpecRunTime] Starting example group spec/graphql/resolvers/projects/services_resolver_spec.rb. Expected to take 3.38 seconds.

Resolvers::Projects::ServicesResolver
  is expected to have nullable GraphQL type ServiceConnection
  #resolve
    when project does not have services
      when user cannot access services
        when anonymous user
          behaves like cannot access project services
            raises error
        when user developer
          behaves like cannot access project services
            raises error
      when user can read project services
        behaves like no project services
          returns empty collection
    when project has services
      when user cannot access services
        when anonymous user
          behaves like cannot access project services
            raises error
        when user developer
          behaves like cannot access project services
            raises error
      when user can read project services
        returns project services

# [RSpecRunTime] Finishing example group spec/graphql/resolvers/projects/services_resolver_spec.rb. It took 1.78 seconds. Expected to take 3.38 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/analytics/usage_trends/workers_argument_builder_spec.rb. Expected to take 3.35 seconds.

Gitlab::Analytics::UsageTrends::WorkersArgumentBuilder
  when no measurement identifiers are given
    returns empty array
  when measurement identifiers are given
    returns worker arguments
    when bogus measurement identifiers are given
      skips bogus measurement identifiers
    when custom min and max queries are present
      uses custom min/max for ids

# [RSpecRunTime] Finishing example group spec/lib/gitlab/analytics/usage_trends/workers_argument_builder_spec.rb. It took 1.32 seconds. Expected to take 3.35 seconds.
# [RSpecRunTime] Starting example group spec/workers/authorized_project_update/user_refresh_from_replica_worker_spec.rb. Expected to take 3.27 seconds.

AuthorizedProjectUpdate::UserRefreshFromReplicaWorker
  is labeled as low urgency
  behaves like an idempotent worker
    is labeled as idempotent
    performs multiple times sequentially without raising an exception
  #perform
    checks if a project_authorization refresh is needed for the user
    when there are project authorization records due for either removal or addition for a specific user
      enqueues a new project authorization update job for the user
    when there are no additions or removals to be made to project authorizations for a specific user
      does not enqueue a new project authorization update job for the user
    with load balancing enabled
      reads from the replica database

# [RSpecRunTime] Finishing example group spec/workers/authorized_project_update/user_refresh_from_replica_worker_spec.rb. It took 1.01 seconds. Expected to take 3.27 seconds.
# [RSpecRunTime] Starting example group spec/services/work_items/callbacks/notifications_spec.rb. Expected to take 3.25 seconds.

WorkItems::Callbacks::Notifications
  #before_update_in_transaction
    when update fails
      when user lack update_subscription permissions
        behaves like failing to update subscription
          when user is subscribed with a subscription record
            does not update the work item's subscription
          when user is subscribed by being a participant
            does not create subscription record or change subscription state
      when notifications params are not present
        behaves like failing to update subscription
          when user is subscribed with a subscription record
            does not update the work item's subscription
          when user is subscribed by being a participant
            does not create subscription record or change subscription state
    when update is successful
      when subscribing
        behaves like updating notifications subscription successfully
          updates existing subscription record
      when unsubscribing
        when user is subscribed with a subscription record
          behaves like updating notifications subscription successfully
            updates existing subscription record
        when user is subscribed by being a participant
          creates a subscription with expected value

# [RSpecRunTime] Finishing example group spec/services/work_items/callbacks/notifications_spec.rb. It took 1.65 seconds. Expected to take 3.25 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/hook_data/project_member_builder_spec.rb. Expected to take 3.19 seconds.

Gitlab::HookData::ProjectMemberBuilder
  #build
    data
      on create
        is expected to eq "user_add_to_team"
        behaves like includes the required attributes
          includes the required attributes
      on update
        is expected to eq "user_update_for_team"
        behaves like includes the required attributes
          includes the required attributes
      on destroy
        is expected to eq "user_remove_from_team"
        behaves like includes the required attributes
          includes the required attributes

# [RSpecRunTime] Finishing example group spec/lib/gitlab/hook_data/project_member_builder_spec.rb. It took 1.19 seconds. Expected to take 3.19 seconds.
# [RSpecRunTime] Starting example group spec/services/personal_access_tokens/rotate_service_spec.rb. Expected to take 3.16 seconds.

PersonalAccessTokens::RotateService
  #execute
    revokes the previous token
    saves the previous token as previous PAT attribute
    behaves like rotates token succesfully
      rotates user's own token
    when user tries to rotate already revoked token
      returns an error
    when revoking previous token fails
      returns an error
    when creating the new token fails
      returns an error
      reverts the changes

# [RSpecRunTime] Finishing example group spec/services/personal_access_tokens/rotate_service_spec.rb. It took 0.9 second. Expected to take 3.16 seconds.
# [RSpecRunTime] Starting example group spec/graphql/resolvers/group_milestones_resolver_spec.rb. Expected to take 3.11 seconds.

Resolvers::GroupMilestonesResolver
  #resolve
    calls MilestonesFinder#execute
    without parameters
      calls MilestonesFinder to retrieve all milestones
    with parameters
      timeframe argument
    by ids
      calls MilestonesFinder with correct parameters
    by sort
      calls MilestonesFinder with correct parameters
      uses offset-pagination when sorting by expired_last_due_date_asc
      uses offset-pagination when sorting by expired_last_due_date_desc
    by timeframe
      when timeframe start and end are present
        when start is after end
          raises error

# [RSpecRunTime] Finishing example group spec/graphql/resolvers/group_milestones_resolver_spec.rb. It took 1.06 seconds. Expected to take 3.11 seconds.
# [RSpecRunTime] Starting example group spec/views/admin/sessions/new.html.haml_spec.rb. Expected to take 3.08 seconds.

admin/sessions/new.html.haml
  internal admin user
    shows enter password form
    warns authentication not possible if password not set
  omniauth authentication enabled
    shows omniauth form
  ldap authentication
    is shown when enabled
    is not shown when LDAP sign in is disabled

# [RSpecRunTime] Finishing example group spec/views/admin/sessions/new.html.haml_spec.rb. It took 0.97 second. Expected to take 3.08 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/database/query_analyzers/prevent_set_operator_mismatch_spec.rb. Expected to take 3.03 seconds.

Gitlab::Database::QueryAnalyzers::PreventSetOperatorMismatch
  when SQL includes a EXCEPT
    is expected to receive types(*(any args)) 1 time
  when SQL does not include a set operator
    sql: "SELECT 1"
      does not parse SQL
    sql: "SELECT union_station"
      does not parse SQL
    sql: "SELECT intersection"
      does not parse SQL
    sql: "SELECT deny_all_requests_except_allowed from application_settings"
      does not parse SQL
  when SQL includes a INTERSECT
    is expected to receive types(*(any args)) 1 time
  when SQL is invalid
    raises error
  when SQL has many select statements
    raises error
  when SQL includes a UNION
    is expected to receive types(*(any args)) 1 time
  when SQL is valid
    does not raise error

# [RSpecRunTime] Finishing example group spec/lib/gitlab/database/query_analyzers/prevent_set_operator_mismatch_spec.rb. It took 0.89 second. Expected to take 3.03 seconds.
# [RSpecRunTime] Starting example group spec/workers/projects/delete_branch_worker_spec.rb. Expected to take 3.01 seconds.

Projects::DeleteBranchWorker
  #perform
    when the branch does not exist
      does nothing
    with a non-existing project
      does nothing
    with a non-existing user
      does nothing
    with existing user and project
      calls service to delete source branch
      when delete service returns an error
        when the status code is 400
          tracks and raises the exception
        when the status code is not 400
          does not track the exception
    behaves like an idempotent worker
      is labeled as idempotent
      performs multiple times sequentially without raising an exception

# [RSpecRunTime] Finishing example group spec/workers/projects/delete_branch_worker_spec.rb. It took 1.3 seconds. Expected to take 3.01 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/string_placeholder_replacer_spec.rb. Expected to take 2.96 seconds.

Gitlab::StringPlaceholderReplacer
  .render_url
    returns the nil if the string is blank
    returns the string if the placeholder regex
    returns the string if no block given
    when all params are valid
      replaces each placeholders with the block result
      does not replace the placeholder if the block result is nil

# [RSpecRunTime] Finishing example group spec/lib/gitlab/string_placeholder_replacer_spec.rb. It took 0.48 second. Expected to take 2.96 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/database/partitioning/int_range_strategy_spec.rb. Expected to take 2.92 seconds.

Gitlab::Database::Partitioning::IntRangeStrategy
  simulates the merge_request_diff_commits partition creation
    redirects to the new partition (FAILED - 1)
  #extra_partitions
    returns an empty array
  attributes
    is expected to have attributes {:model => #<Class:0x00007a0339419860>(Table doesn't exist), :partition_size => 5, :partitioning_key => :partition}
  #current_partitions
    returns partitions order by range bound
  #missing_partitions
    when the current partitions are not completed
      when partitions have data
        returns missing partitions
      when partitions are empty
        returns missing partitions
    with existing partitions
      when partitions have data
        returns missing partitions
      when partitions are empty
        returns missing partitions
    without partitions
      returns missing partitions

# [RSpecRunTime] Finishing example group spec/lib/gitlab/database/partitioning/int_range_strategy_spec.rb. It took 0.9 second. Expected to take 2.92 seconds.
# [RSpecRunTime] Starting example group spec/services/packages/composer/composer_json_service_spec.rb. Expected to take 2.9 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 1.92 seconds. Expected to take 2.9 seconds.
# [RSpecRunTime] Starting example group spec/graphql/types/container_repository_referrer_type_spec.rb. Expected to take 2.86 seconds.

Types::ContainerRepositoryReferrerType
  is expected to eq "ContainerRepositoryReferrer"
  is expected to expose permissions using Types::PermissionTypes::ContainerRepositoryTag
  is expected to have graphql fields :artifact_type, :digest, and :user_permissions
  is expected to require graphql authorizations :read_container_image
  is expected to eq "A referrer for a container repository tag"

# [RSpecRunTime] Finishing example group spec/graphql/types/container_repository_referrer_type_spec.rb. It took 0.5 second. Expected to take 2.86 seconds.
# [RSpecRunTime] Starting example group spec/views/projects/settings/integrations/edit.html.haml_spec.rb. Expected to take 2.81 seconds.

projects/settings/integrations/edit
  is expected not to have text "Recent events"
  integration using WebHooks
    is expected to have text "Recent events"
# [RSpecRunTime] RSpec elapsed time: 17 minutes 0.8 second. Current RSS: ~1915M. load average: 1.16 1.14 1.23 2/297 13063



# [RSpecRunTime] Finishing example group spec/views/projects/settings/integrations/edit.html.haml_spec.rb. It took 1.58 seconds. Expected to take 2.81 seconds.
# [RSpecRunTime] Starting example group spec/models/organizations/organization_detail_spec.rb. Expected to take 2.79 seconds.

Organizations::OrganizationDetail
  does not allow STI
  #description_html
    is expected to equal ignoring sourcepos  Foo <strong>Bar</strong>
  validations
    is expected to validate that :organization cannot be empty/falsy
    is expected to validate that the length of :description is at most 1024
  associations
    is expected to belong to organization required: false inverse_of => organization_detail
  with uploads
    behaves like model with uploads
      .destroy
        with mounted uploader
          deletes remote uploads
        with not mounted uploads
          with local files
            deletes any FileUploader uploads which are not mounted (PENDING: No reason given)
            deletes local files (PENDING: No reason given)
          with remote files
            deletes any FileUploader uploads which are not mounted (PENDING: No reason given)
            deletes remote files (PENDING: No reason given)
  behaves like Avatarable
    #avatar_type
      is true if avatar is image
      is false if avatar is html page
    #avatar_url
      when avatar file is uploaded
        shows correct avatar url

# [RSpecRunTime] Finishing example group spec/models/organizations/organization_detail_spec.rb. It took 1.05 seconds. Expected to take 2.79 seconds.
# [RSpecRunTime] Starting example group spec/validators/ip_address_validator_spec.rb. Expected to take 2.72 seconds.

IpAddressValidator
  ip_address: "invalid IP", validity: false, errors: {:ip_address=>["must be a valid IPv4 or IPv6 address"]}
    is expected to eq false
    is expected to eq {:ip_address=>["must be a valid IPv4 or IPv6 address"]}
  ip_address: "192.168.17.43", validity: true, errors: {}
    is expected to eq true
    is expected to eq {}
  ip_address: "2001:0db8:85a3::8a2e:0370:7334", validity: true, errors: {}
    is expected to eq true
    is expected to eq {}
  ip_address: nil, validity: true, errors: {}
    is expected to eq true
    is expected to eq {}
  ip_address: "", validity: true, errors: {}
    is expected to eq true
    is expected to eq {}

# [RSpecRunTime] Finishing example group spec/validators/ip_address_validator_spec.rb. It took 0.92 second. Expected to take 2.72 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/branch_push_merge_commit_analyzer_spec.rb. Expected to take 2.7 seconds.

Gitlab::BranchPushMergeCommitAnalyzer
  #get_merge_commit
    returns correct merge commit SHA for each commit
    when one parent has two children
      returns correct merge commit SHA for each commit
# [RSpecRunTime] RSpec elapsed time: 17 minutes 4.21 seconds. Current RSS: ~1913M. load average: 1.14 1.14 1.23 1/296 13082


    when relevant_commit_ids is provided
      returns correct merge commit

# [RSpecRunTime] Finishing example group spec/lib/gitlab/branch_push_merge_commit_analyzer_spec.rb. It took 2.06 seconds. Expected to take 2.7 seconds.
# [RSpecRunTime] Starting example group spec/support_specs/helpers/keyset_pagination_helpers_spec.rb. Expected to take 2.66 seconds.

KeysetPaginationHelpers
  #pagination_links
    is expected to eq [{:rel=>"next", :url=>"http://127.0.0.1:3000/api/v4/projects/7/audit_events?cursor=eyJpZCI6IjYyMjAiLCJfa2QiOiJuIn0%3D&id=7&order_by=id&page=1&pagination=keyset&per_page=2"}]
    with a partially malformed LINK header
      is expected to eq [{:rel=>"next", :url=>"http://127.0.0.1:3000/api/v4/projects/7/audit_events?cursor=eyJpZCI6IjYyMjAiLCJfa2QiOiJuIn0%3D&id=7&order_by=id&page=1&pagination=keyset&per_page=2"}]
    with a malformed LINK header
      is expected to eq []
  #pagination_params_from_next_url
    is expected to eq {"cursor"=>"eyJpZCI6IjYyMjAiLCJfa2QiOiJuIn0=", "id"=>"7", "order_by"=>"id", "page"=>"1", "pagination"=>"keyset", "per_page"=>"2"}
    with both prev and next rel links
      is expected to eq {"cursor"=>"eyJpZCI6IjYyMjAiLCJfa2QiOiJuIn0=", "id"=>"7", "order_by"=>"id", "page"=>"1", "pagination"=>"keyset", "per_page"=>"2"}
    with a partially malformed LINK header
      is expected to eq {"cursor"=>"eyJpZCI6IjYyMjAiLCJfa2QiOiJuIn0=", "id"=>"7", "order_by"=>"id", "page"=>"1", "pagination"=>"keyset", "per_page"=>"2"}
    with a malformed LINK header
      is expected to equal nil

# [RSpecRunTime] Finishing example group spec/support_specs/helpers/keyset_pagination_helpers_spec.rb. It took 0.71 second. Expected to take 2.66 seconds.
# [RSpecRunTime] Starting example group spec/services/branch_rules/update_service_spec.rb. Expected to take 2.64 seconds.

BranchRules::UpdateService
  #execute
    when the current_user cannot update the branch rule
      raises an access denied error
    when branch_rule is a Projects::BranchRule
      updates the ProtectedBranch and returns a success execute
      if the update fails
        returns an error
    when branch_rule is a ProtectedBranch
      returns an error
    when unpermitted params are provided
      removes them

# [RSpecRunTime] Finishing example group spec/services/branch_rules/update_service_spec.rb. It took 1.29 seconds. Expected to take 2.64 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/status/scheduled_spec.rb. Expected to take 2.57 seconds.

Gitlab::Ci::Status::Scheduled
  #text
    is expected to eq "Scheduled"
  #label
    is expected to eq "scheduled"
  #icon
    is expected to eq "status_scheduled"
  #favicon
    is expected to eq "favicon_status_scheduled"
  #group
    is expected to eq "scheduled"
  #details_path
    is expected to be nil

# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/status/scheduled_spec.rb. It took 0.57 second. Expected to take 2.57 seconds.
# [RSpecRunTime] Starting example group spec/services/saved_replies/create_service_spec.rb. Expected to take 2.57 seconds.

SavedReplies::CreateService
  #execute
    when create fails
      is expected to eq :error
      does not create new Saved Reply in database
      returns error messages
    when create succeeds
      is expected to eq :success
      creates new Saved Reply in database
      returns new saved reply

# [RSpecRunTime] Finishing example group spec/services/saved_replies/create_service_spec.rb. It took 0.75 second. Expected to take 2.57 seconds.
# [RSpecRunTime] Starting example group spec/tooling/lib/tooling/helpers/file_handler_spec.rb. Expected to take 2.52 seconds.

Tooling::Helpers::FileHandler
  #read_array_from_file
    when the input file does not exist
      creates the file
    when the input file is not empty
      returns the content of the file in an array
  #write_array_to_file
    when the output file does not exist
      creates the file
    when the output file is empty
      writes the correct content to the file
      when the content array is not sorted
        sorts the array before writing it to file
    when the output file is not empty
      appends the correct content to the file
      when the append flag is set to false
        overwrites the previous content

# [RSpecRunTime] Finishing example group spec/tooling/lib/tooling/helpers/file_handler_spec.rb. It took 0.7 second. Expected to take 2.52 seconds.
# [RSpecRunTime] Starting example group spec/graphql/resolvers/ml/model_detail_resolver_spec.rb. Expected to take 2.5 seconds.

Resolvers::Ml::ModelDetailResolver
  #resolve
    when user is allowed and model exists
      is expected to eq #<Ml::Model id: 1, created_at: "2024-02-20 23:36:42.743063224 +0000", updated_at: "2024-02-20 23:36:42.743063224 +0000", project_id: 616, name: "model1", description: nil, user_id: nil>
      when user is nil
        is expected to eq #<Ml::Model id: 1, created_at: "2024-02-20 23:36:42.743063224 +0000", updated_at: "2024-02-20 23:36:42.743063224 +0000", project_id: 616, name: "model1", description: nil, user_id: nil>
    when user does not have permission
      is expected to be nil
    when model does not exist
      is expected to be nil

# [RSpecRunTime] Finishing example group spec/graphql/resolvers/ml/model_detail_resolver_spec.rb. It took 1.03 seconds. Expected to take 2.5 seconds.
# [RSpecRunTime] Starting example group spec/presenters/packages/composer/packages_presenter_spec.rb. Expected to take 2.45 seconds.

Packages::Composer::PackagesPresenter
  #package_versions
    returns the packages json
  #provider
    returns the provider json
  #root
    returns the provider json
    with a client version 2
      returns the provider json

# [RSpecRunTime] Finishing example group spec/presenters/packages/composer/packages_presenter_spec.rb. It took 1.05 seconds. Expected to take 2.45 seconds.
# [RSpecRunTime] Starting example group spec/rubocop/cop/graphql/enum_values_spec.rb. Expected to take 2.43 seconds.

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

# [RSpecRunTime] Finishing example group spec/rubocop/cop/graphql/enum_values_spec.rb. It took 0.5 second. Expected to take 2.43 seconds.
# [RSpecRunTime] Starting example group spec/services/award_emojis/copy_service_spec.rb. Expected to take 2.39 seconds.

AwardEmojis::CopyService
  #initialize
    validates that we cannot copy AwardEmoji to the same Awardable
  #execute
    copies AwardEmojis
    returns success
# [RSpecRunTime] RSpec elapsed time: 17 minutes 13.25 seconds. Current RSS: ~1913M. load average: 1.13 1.14 1.23 1/297 13138



# [RSpecRunTime] Finishing example group spec/services/award_emojis/copy_service_spec.rb. It took 1.8 seconds. Expected to take 2.39 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/code_navigation_path_spec.rb. Expected to take 2.35 seconds.

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

# [RSpecRunTime] Finishing example group spec/lib/gitlab/code_navigation_path_spec.rb. It took 1.1 seconds. Expected to take 2.35 seconds.
# [RSpecRunTime] Starting example group spec/services/projects/batch_open_issues_count_service_spec.rb. Expected to take 2.33 seconds.

Projects::BatchOpenIssuesCountService
  #refresh_cache_and_retrieve_data
    when cache is clean
      refreshes cache keys correctly
# [RSpecRunTime] RSpec elapsed time: 17 minutes 15.65 seconds. Current RSS: ~1910M. load average: 1.12 1.14 1.23 1/297 13163



# [RSpecRunTime] Finishing example group spec/services/projects/batch_open_issues_count_service_spec.rb. It took 1.29 seconds. Expected to take 2.33 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/global_id/deprecations_spec.rb. Expected to take 2.28 seconds.

Gitlab::GlobalId::Deprecations
  .deprecated?
    returns a boolean to signal if model name has a deprecation
  .deprecation_for
    returns the deprecation for the model if it exists
  .deprecation_by
    returns the deprecation by the model if it exists
  .apply_to_graphql_name
    returns the corresponding graphql_name of the GID for the new model
    returns the same value if there is no deprecation

# [RSpecRunTime] Finishing example group spec/lib/gitlab/global_id/deprecations_spec.rb. It took 0.53 second. Expected to take 2.28 seconds.
# [RSpecRunTime] Starting example group spec/lib/bulk_imports/common/pipelines/entity_finisher_spec.rb. Expected to take 2.26 seconds.

BulkImports::Common::Pipelines::EntityFinisher
  updates the entity status to finished
  when entity is in a final finished or failed state
    does nothing
    does nothing
  when all entity trackers failed
    marks entity as failed

# [RSpecRunTime] Finishing example group spec/lib/bulk_imports/common/pipelines/entity_finisher_spec.rb. It took 0.82 second. Expected to take 2.26 seconds.
# [RSpecRunTime] Starting example group spec/services/terraform/states/trigger_destroy_service_spec.rb. Expected to take 2.22 seconds.

Terraform::States::TriggerDestroyService
  #execute
    marks the state as deleted and schedules a cleanup worker
    within a database transaction
      does not raise an EnqueueFromTransactionError
    user does not have permission
      does not modify the state
    state is locked
      does not modify the state

# [RSpecRunTime] Finishing example group spec/services/terraform/states/trigger_destroy_service_spec.rb. It took 1.29 seconds. Expected to take 2.22 seconds.
# [RSpecRunTime] Starting example group spec/models/concerns/safely_change_column_default_spec.rb. Expected to take 2.21 seconds.

SafelyChangeColumnDefault
  does not send the old column value if the default has changed
  does not write the column without a change
  does not allow STI
  prevents writing new default in place of the old default
  forces the column to be written on a change

# [RSpecRunTime] Finishing example group spec/models/concerns/safely_change_column_default_spec.rb. It took 0.7 second. Expected to take 2.21 seconds.
# [RSpecRunTime] Starting example group spec/lib/bulk_imports/projects/pipelines/external_pull_requests_pipeline_spec.rb. Expected to take 2.15 seconds.

BulkImports::Projects::Pipelines::ExternalPullRequestsPipeline
  #run
    imports external pull request
    when status is closed
      imports closed external pull request
    when from fork
      does not create external pull request

# [RSpecRunTime] Finishing example group spec/lib/bulk_imports/projects/pipelines/external_pull_requests_pipeline_spec.rb. It took 0.95 second. Expected to take 2.15 seconds.
# [RSpecRunTime] Starting example group spec/rubocop/cop/rspec/factory_bot/local_static_assignment_spec.rb. Expected to take 2.15 seconds.

RuboCop::Cop::RSpec::FactoryBot::LocalStaticAssignment
  does not flag local assignments in unrelated blocks
  behaves like local static assignment
    flags static local assignment in `factory :project`
    does not flag correct use
  behaves like local static assignment
    flags static local assignment in `trait :closed`
    does not flag correct use
  behaves like local static assignment
    flags static local assignment in `transient`
    does not flag correct use

# [RSpecRunTime] Finishing example group spec/rubocop/cop/rspec/factory_bot/local_static_assignment_spec.rb. It took 0.8 second. Expected to take 2.15 seconds.
# [RSpecRunTime] Starting example group spec/rubocop/cop/gitlab/keys_first_and_values_first_spec.rb. Expected to take 2.1 seconds.

RuboCop::Cop::Gitlab::KeysFirstAndValuesFirst
  behaves like inspect use of keys or values first
    .keys.first
      flags and autocorrects
      does not flag unrelated code
  behaves like inspect use of keys or values first
    .values.first
      flags and autocorrects
      does not flag unrelated code

# [RSpecRunTime] Finishing example group spec/rubocop/cop/gitlab/keys_first_and_values_first_spec.rb. It took 0.5 second. Expected to take 2.1 seconds.
# [RSpecRunTime] Starting example group spec/workers/database/monitor_locked_tables_worker_spec.rb. Expected to take 2.09 seconds.

Database::MonitorLockedTablesWorker
  #perform
    when running with single database
      skips executing the job (PENDING: Skipping because database ci exists)
    when running in decomposed database
      when the feature flag is disabled
        skips executing the job
      when the feature flag is enabled
        calls TablesLocker with dry_run enabled
        reports the tables that need to be locked on both databases main and ci
        with automatically locking the unlocked tables
          when there are no tables to be locked
            does not call the Database::LockTablesWorker
          when there are tables to be locked
            when feature flag lock_tables_in_monitoring is enabled
              locks the tables that need to be locked
            when feature flag lock_tables_in_monitoring is disabled
              does not lock the tables that need to be locked

# [RSpecRunTime] Finishing example group spec/workers/database/monitor_locked_tables_worker_spec.rb. It took 0.62 second. Expected to take 2.09 seconds.
# [RSpecRunTime] Starting example group spec/services/ci/job_token_scope/add_group_or_project_service_spec.rb. Expected to take 2.03 seconds.

Ci::JobTokenScope::AddGroupOrProjectService
  #execute
    when group is a target to add
      calls AddGroupService to add a target
    when project is a target to add
      calls AddProjectService to add a target
    when not found object is a target to add
      returns a response error

# [RSpecRunTime] Finishing example group spec/services/ci/job_token_scope/add_group_or_project_service_spec.rb. It took 1.0 second. Expected to take 2.03 seconds.
# [RSpecRunTime] Starting example group spec/components/pajamas/checkbox_tag_component_spec.rb. Expected to take 2.01 seconds.

Pajamas::CheckboxTagComponent
  with default options
    renders unchecked checkbox with value of `1`
    does not render help text
  with custom options
    renders checked checkbox with value of `yes`
    adds CSS class to label
  with `help_text` slot
    renders unchecked checkbox with value of `1`
    renders help text

# [RSpecRunTime] Finishing example group spec/components/pajamas/checkbox_tag_component_spec.rb. It took 0.58 second. Expected to take 2.01 seconds.
# [RSpecRunTime] Starting example group spec/config/smime_signature_settings_spec.rb. Expected to take 1.97 seconds.

SmimeSignatureSettings
  .parse
    sets correct default values to disabled
    when providing custom values
      sets correct default values to disabled
      enables smime with default key and cert
      enables smime with custom key and cert

# [RSpecRunTime] Finishing example group spec/config/smime_signature_settings_spec.rb. It took 0.43 second. Expected to take 1.97 seconds.
# [RSpecRunTime] Starting example group spec/services/jira_connect_installations/destroy_service_spec.rb. Expected to take 1.94 seconds.

JiraConnectInstallations::DestroyService
  .execute
    creates an instance and calls execute
  #execute
    is expected to be truthy
    deletes the installation
    and the installation has an instance_url set
      is expected to be truthy
      schedules a ForwardEventWorker background job and keeps the installation

# [RSpecRunTime] Finishing example group spec/services/jira_connect_installations/destroy_service_spec.rb. It took 1.03 seconds. Expected to take 1.94 seconds.
# [RSpecRunTime] Starting example group spec/bin/diagnostic_reports_uploader_spec.rb. Expected to take 1.92 seconds.

bin/diagnostic-reports-uploader
  when necessary ENV vars are set
    runs successfully
  when GITLAB_DIAGNOSTIC_REPORTS_PATH is missing
    raises RuntimeError
  when GITLAB_GCP_KEY_PATH is missing
    raises RuntimeError
  when GITLAB_DIAGNOSTIC_REPORTS_BUCKET is missing
    raises RuntimeError
  when GITLAB_DIAGNOSTIC_REPORTS_PROJECT is missing
    raises RuntimeError

# [RSpecRunTime] Finishing example group spec/bin/diagnostic_reports_uploader_spec.rb. It took 0.49 second. Expected to take 1.92 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/usage/metrics/instrumentations/batched_background_migration_failed_jobs_metric_spec.rb. Expected to take 1.89 seconds.

Gitlab::Usage::Metrics::Instrumentations::BatchedBackgroundMigrationFailedJobsMetric
  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/batched_background_migration_failed_jobs_metric_spec.rb. It took 0.38 second. Expected to take 1.89 seconds.
# [RSpecRunTime] Starting example group spec/views/projects/merge_requests/creations/new.html.haml_spec.rb. Expected to take 1.85 seconds.

projects/merge_requests/creations/new.html.haml
  when merge request is created from other project
    behaves like has conflicting merge request guard
      when there is conflicting merge request
        shows conflicting merge request alert
      when there is no conflicting merge request
        does not show conflicting merge request alert
  when merge request is created from the same project
    behaves like has conflicting merge request guard
      when there is conflicting merge request
        shows conflicting merge request alert
      when there is no conflicting merge request
        does not show conflicting merge request alert

# [RSpecRunTime] Finishing example group spec/views/projects/merge_requests/creations/new.html.haml_spec.rb. It took 0.6 second. Expected to take 1.85 seconds.
# [RSpecRunTime] Starting example group spec/services/projects/readme_renderer_service_spec.rb. Expected to take 1.84 seconds.

Projects::ReadmeRendererService#execute
  renders the an ERB readme template
  with a custom template
    renders that template file
    with path traversal in mind
      template_name: "../path/traversal/bad", exception: [Gitlab::PathTraversal::PathTraversalAttackError, "Invalid path"], expected_path: nil
        raises the expected exception on bad paths
      template_name: "/bad/template", exception: [StandardError, "path /bad/template.md.tt is not allowed"], expected_path: nil
        raises the expected exception on bad paths
      template_name: "good/template", exception: nil, expected_path: "good/template.md.tt"
        raises the expected exception on bad paths

# [RSpecRunTime] Finishing example group spec/services/projects/readme_renderer_service_spec.rb. It took 0.78 second. Expected to take 1.84 seconds.
# [RSpecRunTime] Starting example group spec/components/pajamas/breadcrumb_component_spec.rb. Expected to take 1.8 seconds.

Pajamas::BreadcrumbComponent
  uses the correct class on the root element
  adds the required classes to the list element
  renders one GlBreadcrumbItem per item slot
  applies any provided HTML attribute to the root element

# [RSpecRunTime] Finishing example group spec/components/pajamas/breadcrumb_component_spec.rb. It took 0.42 second. Expected to take 1.8 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/config/entry/id_token_spec.rb. Expected to take 1.77 seconds.

Gitlab::Ci::Config::Entry::IdToken
  when given an unknown keyword
    is invalid
  when not given an `aud`
    is invalid
  when given `aud` is a variable
    is valid
  when given `aud` as a string
    is valid
  when given `aud` as an array with variables
    is valid and concatenates the values
  when given `aud` as an array
    is valid and concatenates the values
  when given `aud` includes a variable
    is valid

# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/config/entry/id_token_spec.rb. It took 0.61 second. Expected to take 1.77 seconds.
# [RSpecRunTime] Starting example group spec/services/projects/forks_count_service_spec.rb. Expected to take 1.75 seconds.

Projects::ForksCountService
  behaves like a counter caching service
    #count
      caches the count
    #refresh_cache
      refreshes the cache
    #delete_cache
      removes the cache
    #uncached_count
      does not cache the count
  #count
    returns the number of forks

# [RSpecRunTime] Finishing example group spec/services/projects/forks_count_service_spec.rb. It took 0.57 second. Expected to take 1.75 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/usage/metrics/instrumentations/dormant_user_period_setting_metric_spec.rb. Expected to take 1.72 seconds.

Gitlab::Usage::Metrics::Instrumentations::DormantUserPeriodSettingMetric
  deactivate_dormant_users_period_value: 90, expected_value: 90
    behaves like a correct instrumented metric value
      has correct value
  deactivate_dormant_users_period_value: 365, expected_value: 365
    behaves like a correct instrumented metric value
      has correct value

# [RSpecRunTime] Finishing example group spec/lib/gitlab/usage/metrics/instrumentations/dormant_user_period_setting_metric_spec.rb. It took 1.03 seconds. Expected to take 1.72 seconds.
# [RSpecRunTime] Starting example group spec/finders/vs_code/settings/settings_finder_spec.rb. Expected to take 1.69 seconds.

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

# [RSpecRunTime] Finishing example group spec/finders/vs_code/settings/settings_finder_spec.rb. It took 0.58 second. Expected to take 1.69 seconds.
# [RSpecRunTime] Starting example group spec/services/achievements/update_user_achievement_priorities_service_spec.rb. Expected to take 1.66 seconds.

Achievements::UpdateUserAchievementPrioritiesService
  #execute
    when user does not have permission
      returns an error
    when user has permission
      with empty input
        removes all priorities
      with prioritised achievements
        re-orders the achievements correctly
      when no achievement is prioritized and no prioritizations are made
        works without errors

# [RSpecRunTime] Finishing example group spec/services/achievements/update_user_achievement_priorities_service_spec.rb. It took 1.02 seconds. Expected to take 1.66 seconds.
# [RSpecRunTime] Starting example group spec/workers/google_cloud/create_cloudsql_instance_worker_spec.rb. Expected to take 1.64 seconds.

GoogleCloud::CreateCloudsqlInstanceWorker
  when triggered
    calls CloudSeed::GoogleCloud::SetupCloudsqlInstanceService
    when CloudSeed::GoogleCloud::SetupCloudsqlInstanceService fails
      raises error

# [RSpecRunTime] Finishing example group spec/workers/google_cloud/create_cloudsql_instance_worker_spec.rb. It took 1.03 seconds. Expected to take 1.64 seconds.
# [RSpecRunTime] Starting example group spec/rubocop/cop/gitlab/event_store_subscriber_spec.rb. Expected to take 1.61 seconds.

RuboCop::Cop::Gitlab::EventStoreSubscriber
  when a Sidekiq worker overrides #perform
    does not register an offense
  when an event store subscriber overrides #perform
    registers an offense
  when an event store subscriber does not override #perform
    does not register an offense
  when an event store subscriber does not implement #handle_event
    registers an offense
  when a Sidekiq worker implements #handle_event
    does not register an offense
  a non worker class
    does not register an offense

# [RSpecRunTime] Finishing example group spec/rubocop/cop/gitlab/event_store_subscriber_spec.rb. It took 0.56 second. Expected to take 1.61 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/git/lfs_changes_spec.rb. Expected to take 1.58 seconds.

Gitlab::Git::LfsChanges
  #new_pointers
    filters new objects to find lfs pointers
    limits new_objects using object_limit
    times out if given a small dynamic timeout

# [RSpecRunTime] Finishing example group spec/lib/gitlab/git/lfs_changes_spec.rb. It took 0.8 second. Expected to take 1.58 seconds.
# [RSpecRunTime] Starting example group spec/serializers/ci/dag_stage_entity_spec.rb. Expected to take 1.55 seconds.

Ci::DagStageEntity
  #as_json
    contains valid name
    contains the job groups
    matches schema

# [RSpecRunTime] Finishing example group spec/serializers/ci/dag_stage_entity_spec.rb. It took 0.9 second. Expected to take 1.55 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/view/presenter/factory_spec.rb. Expected to take 1.55 seconds.

Gitlab::View::Presenter::Factory
  #initialize
    without optional parameters
      takes a subject and optional params
    with optional parameters
      takes a subject and optional params
  #fabricate!
    detects the presenter based on the given subject
    uses the presenter_class if given on #initialize

# [RSpecRunTime] Finishing example group spec/lib/gitlab/view/presenter/factory_spec.rb. It took 0.51 second. Expected to take 1.55 seconds.
# [RSpecRunTime] Starting example group spec/presenters/packages/nuget/v2/service_index_presenter_spec.rb. Expected to take 1.5 seconds.

Packages::Nuget::V2::ServiceIndexPresenter
  #xml
    is expected to eq "service"
    includes the workspace and collection nodes
    sets the appropriate XML namespaces on the root node
    when the presenter is initialized with a project
      sets the XML base path correctly for a project scope
    when the presenter is initialized with a group
      sets the XML base path correctly for a group scope

# [RSpecRunTime] Finishing example group spec/presenters/packages/nuget/v2/service_index_presenter_spec.rb. It took 0.52 second. Expected to take 1.5 seconds.
# [RSpecRunTime] Starting example group spec/graphql/resolvers/environments/nested_environments_resolver_spec.rb. Expected to take 1.49 seconds.

Resolvers::Environments::NestedEnvironmentsResolver
  #resolve
    finds the nested environments when status matches
    finds the nested environments when searching by name
    finds the nested environments when name matches exactly

# [RSpecRunTime] Finishing example group spec/graphql/resolvers/environments/nested_environments_resolver_spec.rb. It took 1.02 seconds. Expected to take 1.49 seconds.
# [RSpecRunTime] Starting example group spec/models/concerns/presentable_spec.rb. Expected to take 1.44 seconds.

Presentable
  does not allow STI
  #present
    returns a presenter
    takes optional attributes

# [RSpecRunTime] Finishing example group spec/models/concerns/presentable_spec.rb. It took 0.41 second. Expected to take 1.44 seconds.
# [RSpecRunTime] Starting example group spec/rubocop/cop/rspec/shared_groups_metadata_spec.rb. Expected to take 1.43 seconds.

RuboCop::Cop::RSpec::SharedGroupsMetadata
  does not flag if feature category is missing
  with hash metadata
    flags metadata in shared example
    flags metadata in shared context
  with symbol metadata
    flags metadata in shared example
    flags metadata in shared context

# [RSpecRunTime] Finishing example group spec/rubocop/cop/rspec/shared_groups_metadata_spec.rb. It took 0.5 second. Expected to take 1.43 seconds.
# [RSpecRunTime] Starting example group spec/models/work_items/widgets/notifications_spec.rb. Expected to take 1.38 seconds.

WorkItems::Widgets::Notifications
  does not allow STI
  #subscribed?
    is expected to eq true
  .type
    is expected to eq :notifications
  #type
    is expected to eq :notifications

# [RSpecRunTime] Finishing example group spec/models/work_items/widgets/notifications_spec.rb. It took 0.74 second. Expected to take 1.38 seconds.
# [RSpecRunTime] Starting example group spec/initializers/cookies_serializer_spec.rb. Expected to take 1.36 seconds.

Cookies serializer initializer
  uses JSON serializer by default
  uses the unsafe hybrid serializer when the environment variables is set

# [RSpecRunTime] Finishing example group spec/initializers/cookies_serializer_spec.rb. It took 0.3 second. Expected to take 1.36 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/mask_secret_spec.rb. Expected to take 1.33 seconds.

Gitlab::Ci::MaskSecret
  #mask
    masks exact number of characters
    masks multiple occurrences
    does not mask if not found
    does support null token
    does not change a bytesize of a value

# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/mask_secret_spec.rb. It took 0.49 second. Expected to take 1.33 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/usage_data_counters/source_code_counter_spec.rb. Expected to take 1.3 seconds.

Gitlab::UsageDataCounters::SourceCodeCounter
  behaves like a redis usage counter
    .count(pushes)
      increments the Source Code pushes counter by 1
    .read(pushes)
      returns the total number of pushes events
  behaves like a redis usage counter with totals
    totals
      can report all totals
    unknown events
      cannot increment
      cannot read

# [RSpecRunTime] Finishing example group spec/lib/gitlab/usage_data_counters/source_code_counter_spec.rb. It took 0.55 second. Expected to take 1.3 seconds.
# [RSpecRunTime] Starting example group spec/lib/generators/batched_background_migration/batched_background_migration_generator_spec.rb. Expected to take 1.28 seconds.

BatchedBackgroundMigration::BatchedBackgroundMigrationGenerator
  when generating EE-only batched background migration
    generates expected common files
    generates expected files
  when generating FOSS batched background migration
    generates expected common files
    generates expected files

# [RSpecRunTime] Finishing example group spec/lib/generators/batched_background_migration/batched_background_migration_generator_spec.rb. It took 0.49 second. Expected to take 1.28 seconds.
# [RSpecRunTime] Starting example group spec/graphql/resolvers/concerns/resolves_groups_spec.rb. Expected to take 1.24 seconds.

ResolvesGroups
  avoids N+1 queries on the preloaded fields

# [RSpecRunTime] Finishing example group spec/graphql/resolvers/concerns/resolves_groups_spec.rb. It took 0.9 second. Expected to take 1.24 seconds.
# [RSpecRunTime] Starting example group spec/services/webauthn/authenticate_service_spec.rb. Expected to take 1.21 seconds.

Webauthn::AuthenticateService
  #execute
    returns true if the response is valid and a matching stored credential is present
    when response is valid but no matching stored credential is present
      returns false
    when device response includes invalid json
      returns false

# [RSpecRunTime] Finishing example group spec/services/webauthn/authenticate_service_spec.rb. It took 0.56 second. Expected to take 1.21 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/auth/blocked_user_tracker_spec.rb. Expected to take 1.18 seconds.

Gitlab::Auth::BlockedUserTracker
  #log_blocked_user_activity!
    when user is not blocked
      does not log blocked user activity
    when user is not blocked
      logs blocked user activity

# [RSpecRunTime] Finishing example group spec/lib/gitlab/auth/blocked_user_tracker_spec.rb. It took 0.41 second. Expected to take 1.18 seconds.
# [RSpecRunTime] Starting example group spec/services/pages_domains/delete_service_spec.rb. Expected to take 1.16 seconds.

PagesDomains::DeleteService
  when the user has the required permissions
    when it updates the domain successfully
      deletes the domain and publishes a PagesDomainDeletedEvent
  when the user does not have the required permissions
    does not delete the pages domain and does not publish a PagesDomainDeletedEvent

# [RSpecRunTime] Finishing example group spec/services/pages_domains/delete_service_spec.rb. It took 0.73 second. Expected to take 1.16 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/pagination/keyset/in_operator_optimization/strategies/order_values_loader_strategy_spec.rb. Expected to take 1.12 seconds.

Gitlab::Pagination::Keyset::InOperatorOptimization::Strategies::OrderValuesLoaderStrategy
  #initializer_columns
    returns NULLs for each ORDER BY columns
  when an SQL expression is given
    when the sql_type attribute is missing
      raises error
    when the sql_type_attribute is present
      returns the initializer columns

# [RSpecRunTime] Finishing example group spec/lib/gitlab/pagination/keyset/in_operator_optimization/strategies/order_values_loader_strategy_spec.rb. It took 0.35 second. Expected to take 1.12 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/batch_worker_context_spec.rb. Expected to take 1.1 seconds.

Gitlab::BatchWorkerContext
  #arguments
    returns all the expected arguments in arrays
  #context_for
    returns the correct application context for the arguments

# [RSpecRunTime] Finishing example group spec/lib/gitlab/batch_worker_context_spec.rb. It took 0.32 second. Expected to take 1.1 seconds.
# [RSpecRunTime] Starting example group spec/views/devise/confirmations/almost_there.html.haml_spec.rb. Expected to take 1.08 seconds.

devise/confirmations/almost_there
  register again prompt
    is expected to have visible link "register again with a different email" with href "/users/sign_up"
  confirmations text
    when correct email
      is expected to have text "Please check your email (こんにちは@test) to confirm your account"
    when random text
      is expected to have text "Please check your email to confirm your account"

# [RSpecRunTime] Finishing example group spec/views/devise/confirmations/almost_there.html.haml_spec.rb. It took 0.44 second. Expected to take 1.08 seconds.
# [RSpecRunTime] Starting example group spec/workers/update_external_pull_requests_worker_spec.rb. Expected to take 1.06 seconds.

UpdateExternalPullRequestsWorker
  #perform
    when ref is a branch
      runs CreatePipelineService for each pull request matching the source branch and repository
    when ref is not a branch
      does nothing

# [RSpecRunTime] Finishing example group spec/workers/update_external_pull_requests_worker_spec.rb. It took 0.7 second. Expected to take 1.06 seconds.
# [RSpecRunTime] Starting example group spec/lib/api/entities/ml/mlflow/search_runs_spec.rb. Expected to take 1.03 seconds.

API::Entities::Ml::Mlflow::SearchRuns
  presents params
  presents metrics
  presents the candidates

# [RSpecRunTime] Finishing example group spec/lib/api/entities/ml/mlflow/search_runs_spec.rb. It took 0.46 second. Expected to take 1.03 seconds.
# [RSpecRunTime] Starting example group spec/graphql/types/ci/config/group_type_spec.rb. Expected to take 1.02 seconds.

Types::Ci::Config::GroupType
  is expected to eq "CiConfigGroup"
  exposes the expected fields

# [RSpecRunTime] Finishing example group spec/graphql/types/ci/config/group_type_spec.rb. It took 0.3 second. Expected to take 1.02 seconds.
# [RSpecRunTime] Starting example group spec/graphql/resolvers/metrics/dashboards/annotation_resolver_spec.rb. Expected to take 0.98 second.

Resolvers::Metrics::Dashboards::AnnotationResolver
  #resolve
    user with developer access
      with annotation records
        returns empty all the time

# [RSpecRunTime] Finishing example group spec/graphql/resolvers/metrics/dashboards/annotation_resolver_spec.rb. It took 0.82 second. Expected to take 0.98 second.
# [RSpecRunTime] Starting example group spec/initializers/rails_yaml_safe_load_spec.rb. Expected to take 0.98 second.

Rails YAML safe load
  with default permitted classes
    deserializes data
    with unpermitted classes
      throws an exception

# [RSpecRunTime] Finishing example group spec/initializers/rails_yaml_safe_load_spec.rb. It took 0.55 second. Expected to take 0.98 second.
# [RSpecRunTime] Starting example group spec/lib/generators/gitlab/usage_metric_definition/redis_hll_generator_spec.rb. Expected to take 0.93 second.

Gitlab::UsageMetricDefinition::RedisHllGenerator
  creates metric definition files
  with multiple events
    creates metric definition files
  with ee option
    creates metric definition files

# [RSpecRunTime] Finishing example group spec/lib/generators/gitlab/usage_metric_definition/redis_hll_generator_spec.rb. It took 0.4 second. Expected to take 0.93 second.
# [RSpecRunTime] Starting example group spec/models/discussion_note_spec.rb. Expected to take 0.91 second.

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

# [RSpecRunTime] Finishing example group spec/models/discussion_note_spec.rb. It took 0.41 second. Expected to take 0.91 second.
# [RSpecRunTime] Starting example group spec/routing/notifications_routing_spec.rb. Expected to take 0.89 second.

notifications routing
  routes to #show
  routes to #update
  routes to group #update

# [RSpecRunTime] Finishing example group spec/routing/notifications_routing_spec.rb. It took 0.36 second. Expected to take 0.89 second.
# [RSpecRunTime] Starting example group spec/serializers/admin/reported_content_entity_spec.rb. Expected to take 0.86 second.

Admin::ReportedContentEntity
  #as_json
    exposes correct attributes
    includes correct value for global_id
    correctly exposes `reporter`

# [RSpecRunTime] Finishing example group spec/serializers/admin/reported_content_entity_spec.rb. It took 0.38 second. Expected to take 0.86 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/memory/diagnostic_reports_logger_spec.rb. Expected to take 0.84 second.

Gitlab::Memory::DiagnosticReportsLogger
  #format_message
    formats incoming hash properly

# [RSpecRunTime] Finishing example group spec/lib/gitlab/memory/diagnostic_reports_logger_spec.rb. It took 0.24 second. Expected to take 0.84 second.
# [RSpecRunTime] Starting example group spec/workers/gitlab/github_import/attachments/import_merge_request_worker_spec.rb. Expected to take 0.82 second.

Gitlab::GithubImport::Attachments::ImportMergeRequestWorker
  #import
    imports an merge request attachments

# [RSpecRunTime] Finishing example group spec/workers/gitlab/github_import/attachments/import_merge_request_worker_spec.rb. It took 0.65 second. Expected to take 0.82 second.
# [RSpecRunTime] Starting example group spec/lib/sidebars/organizations/menus/scope_menu_spec.rb. Expected to take 0.8 second.

Sidebars::Organizations::Menus::ScopeMenu
  behaves like serializable as super_sidebar_menu_args
    returns hash with provided attributes
    returns hash with an item_id

# [RSpecRunTime] Finishing example group spec/lib/sidebars/organizations/menus/scope_menu_spec.rb. It took 0.32 second. Expected to take 0.8 second.
# [RSpecRunTime] Starting example group spec/graphql/types/issue_status_count_type_spec.rb. Expected to take 0.76 second.

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

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

RuboCop::Cop::Migration::WithLockRetriesWithChange
  when in migration
    registers an offense when `with_lock_retries` is used inside a `change` method
    registers no offense when `with_lock_retries` is used inside an `up` method
  when outside of migration
    registers no offense

# [RSpecRunTime] Finishing example group spec/rubocop/cop/migration/with_lock_retries_with_change_spec.rb. It took 0.39 second. Expected to take 0.76 second.
# [RSpecRunTime] Starting example group spec/graphql/types/projects/service_type_spec.rb. Expected to take 0.7 second.

Types::Projects::ServiceType
  is expected to have graphql fields :type, :service_type, and :active
  .resolve_type
    resolves the corresponding type for objects

# [RSpecRunTime] Finishing example group spec/graphql/types/projects/service_type_spec.rb. It took 0.36 second. Expected to take 0.7 second.
# [RSpecRunTime] Starting example group spec/serializers/analytics/cycle_analytics/stage_entity_spec.rb. Expected to take 0.68 second.

Analytics::CycleAnalytics::StageEntity
  exposes start and end event descriptions
  exposes start_event and end_event objects

# [RSpecRunTime] Finishing example group spec/serializers/analytics/cycle_analytics/stage_entity_spec.rb. It took 0.34 second. Expected to take 0.68 second.
# [RSpecRunTime] Starting example group spec/graphql/types/tree/tree_entry_type_spec.rb. Expected to take 0.67 second.

Types::Tree::TreeEntryType
  is expected to eq "TreeEntry"
  is expected to have graphql fields :id, :sha, :name, :type, :path, :flat_path, :web_url, and :web_path

# [RSpecRunTime] Finishing example group spec/graphql/types/tree/tree_entry_type_spec.rb. It took 0.3 second. Expected to take 0.67 second.
# [RSpecRunTime] Starting example group spec/graphql/types/work_items/widgets/current_user_todos_input_type_spec.rb. Expected to take 0.66 second.

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

# [RSpecRunTime] Finishing example group spec/graphql/types/work_items/widgets/current_user_todos_input_type_spec.rb. It took 0.31 second. Expected to take 0.66 second.
# [RSpecRunTime] Starting example group spec/graphql/types/issue_type_enum_spec.rb. Expected to take 0.64 second.

Types::IssueTypeEnum
  is expected to eq "IssueType"
  exposes all the existing issue type values except epic

# [RSpecRunTime] Finishing example group spec/graphql/types/issue_type_enum_spec.rb. It took 0.3 second. Expected to take 0.64 second.
# [RSpecRunTime] Starting example group spec/graphql/types/jira_import_type_spec.rb. Expected to take 0.63 second.

Types::JiraImportType
  is expected to eq "JiraImport"
  has the expected fields

# [RSpecRunTime] Finishing example group spec/graphql/types/jira_import_type_spec.rb. It took 0.31 second. Expected to take 0.63 second.
# [RSpecRunTime] Starting example group spec/scripts/generate_failed_package_and_test_mr_message_spec.rb. Expected to take 0.61 second.

GenerateFailedPackageAndTestMrMessage
  #execute
    when package-and-test fails
      successfully creates a discussion
    when package-and-test is did not fail
      does not add a discussion

# [RSpecRunTime] Finishing example group spec/scripts/generate_failed_package_and_test_mr_message_spec.rb. It took 0.3 second. Expected to take 0.61 second.
# [RSpecRunTime] Starting example group spec/graphql/types/ci_configuration/sast/ui_component_size_enum_spec.rb. Expected to take 0.6 second.

Types::CiConfiguration::Sast::UiComponentSizeEnum
  is expected to eq "SastUiComponentSize"
  exposes all sizes of ui components

# [RSpecRunTime] Finishing example group spec/graphql/types/ci_configuration/sast/ui_component_size_enum_spec.rb. It took 0.32 second. Expected to take 0.6 second.
# [RSpecRunTime] Starting example group spec/lib/bulk_imports/groups/extractors/subgroups_extractor_spec.rb. Expected to take 0.58 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.58 second.
# [RSpecRunTime] Starting example group spec/views/layouts/_published_experiments.html.haml_spec.rb. Expected to take 0.57 second.

layouts/_published_experiments
  renders out data for all non-excluded, published experiments

# [RSpecRunTime] Finishing example group spec/views/layouts/_published_experiments.html.haml_spec.rb. It took 0.33 second. Expected to take 0.57 second.
# [RSpecRunTime] Starting example group spec/lib/sidebars/uncategorized_menu_spec.rb. Expected to take 0.5 second.

Sidebars::UncategorizedMenu
  has title and sprite_icon

# [RSpecRunTime] Finishing example group spec/lib/sidebars/uncategorized_menu_spec.rb. It took 0.23 second. Expected to take 0.5 second.
# [RSpecRunTime] Starting example group spec/graphql/types/packages/maven/metadatum_type_spec.rb. Expected to take 0.49 second.

Types::Packages::Maven::MetadatumType
  includes maven metadatum fields

# [RSpecRunTime] Finishing example group spec/graphql/types/packages/maven/metadatum_type_spec.rb. It took 0.24 second. Expected to take 0.49 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/nav/top_nav_menu_item_spec.rb. Expected to take 0.46 second.

Gitlab::Nav::TopNavMenuItem
  .build
    builds a hash from the given args

# [RSpecRunTime] Finishing example group spec/lib/gitlab/nav/top_nav_menu_item_spec.rb. It took 0.29 second. Expected to take 0.46 second.
# [RSpecRunTime] Starting example group spec/graphql/types/ci/pipeline_trigger_type_spec.rb. Expected to take 0.44 second.

Types::Ci::PipelineTriggerType
  is expected to have graphql fields :can_access_project, :description, :has_token_exposed, :last_used, :id, :owner, and :token

# [RSpecRunTime] Finishing example group spec/graphql/types/ci/pipeline_trigger_type_spec.rb. It took 0.24 second. Expected to take 0.44 second.
# [RSpecRunTime] Starting example group spec/initializers/sidekiq_spec.rb. Expected to take 0.43 second.

sidekiq
  load_cron_jobs!
    loads the cron jobs into sidekiq-cron

# [RSpecRunTime] Finishing example group spec/initializers/sidekiq_spec.rb. It took 0.24 second. Expected to take 0.43 second.
# [RSpecRunTime] Starting example group spec/helpers/routing/packages_helper_spec.rb. Expected to take 0.42 second.

Routing::PackagesHelper
  #package_path
    creates package's path

# [RSpecRunTime] Finishing example group spec/helpers/routing/packages_helper_spec.rb. It took 0.27 second. Expected to take 0.42 second.
# [RSpecRunTime] Starting example group spec/lib/banzai/filter/html_entity_filter_spec.rb. Expected to take 0.41 second.

Banzai::Filter::HtmlEntityFilter
  converts common entities to their HTML-escaped equivalents

# [RSpecRunTime] Finishing example group spec/lib/banzai/filter/html_entity_filter_spec.rb. It took 0.24 second. Expected to take 0.41 second.
# [RSpecRunTime] Starting example group spec/rubocop/cop/gitlab/change_timezone_spec.rb. Expected to take 0.4 second.

RuboCop::Cop::Gitlab::ChangeTimezone
  Time.zone=
    registers an offense with no 2nd argument

# [RSpecRunTime] Finishing example group spec/rubocop/cop/gitlab/change_timezone_spec.rb. It took 0.25 second. Expected to take 0.4 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/action_cable/request_store_callbacks_spec.rb. Expected to take 0.39 second.

Gitlab::ActionCable::RequestStoreCallbacks
  .wrapper
    enables RequestStore in the inner block

# [RSpecRunTime] Finishing example group spec/lib/gitlab/action_cable/request_store_callbacks_spec.rb. It took 0.25 second. Expected to take 0.39 second.
# [RSpecRunTime] Starting example group spec/tasks/gitlab/db/decomposition/migrate_rake_spec.rb. Missing expected duration from Knapsack report for spec/tasks/gitlab/db/decomposition/migrate_rake_spec.rb.

gitlab:db:decomposition:migrate
  calls Gitlab::Database::Decomposition::Migrate#process! (PENDING: Skipping because database ci exists)
  when a Gitlab::Database::Decomposition::Migrate::Error is raised
    renders error (PENDING: Skipping because database ci exists)

# [RSpecRunTime] Finishing example group spec/tasks/gitlab/db/decomposition/migrate_rake_spec.rb. It took 2.32 seconds. Missing expected duration from Knapsack report for spec/tasks/gitlab/db/decomposition/migrate_rake_spec.rb.
# [RSpecRunTime] RSpec elapsed time: 17 minutes 58.15 seconds. Current RSS: ~1872M. load average: 1.28 1.17 1.23 1/292 13188


auto_explain log contains 1610 entries for main, writing to /builds/gitlab-org/gitlab/auto_explain/rspec-unit-pg14-4-32.339.main.ndjson.gz
took 16.541555363
auto_explain log contains 1611 entries for ci, writing to /builds/gitlab-org/gitlab/auto_explain/rspec-unit-pg14-4-32.339.ci.ndjson.gz
took 16.064089988
[TEST PROF INFO] EventProf results for sql.active_record

Total time: 03:21.558 of 17:53.994 (18.77%)
Total events: 183386

Top 5 slowest suites (by time):

Packages::GroupPackagesFinder (./spec/finders/packages/group_packages_finder_spec.rb:4) – 00:10.232 (8722 / 62) of 00:35.769 (28.61%)
Projects::ForkService (./spec/services/projects/fork_service_spec.rb:5) – 00:10.012 (8218 / 45) of 00:40.271 (24.86%)
Gitlab::Diff:...::LineStrategy (./spec/lib/gitlab/diff/position_tracer/line_strategy_spec.rb:5) – 00:09.780 (6914 / 46) of 01:07.005 (14.6%)
Gitlab::Pagin...fsetPagination (./spec/lib/gitlab/pagination/offset_pagination_spec.rb:5) – 00:09.273 (7370 / 25) of 00:31.080 (29.84%)
WorkItems::UpdateService (./spec/services/work_items/update_service_spec.rb:5) – 00:07.625 (6450 / 46) of 00:28.555 (26.7%)

Knapsack report was generated. Preview:
{
  "spec/lib/gitlab/middleware/path_traversal_check_spec.rb": 219.81218026600072,
  "spec/lib/gitlab/diff/position_tracer/line_strategy_spec.rb": 67.00561764200029,
  "spec/lib/gitlab/sidekiq_middleware/server_metrics_spec.rb": 18.586482238000826,
  "spec/services/projects/fork_service_spec.rb": 40.27066802599984,
  "spec/finders/packages/group_packages_finder_spec.rb": 35.76870405199952,
  "spec/models/hooks/web_hook_spec.rb": 16.278185926999868,
  "spec/services/work_items/update_service_spec.rb": 28.555385677998856,
  "spec/lib/gitlab/pagination/offset_pagination_spec.rb": 31.079913716999727,
  "spec/lib/gitlab/closing_issue_extractor_spec.rb": 16.73579526999856,
  "spec/models/design_management/version_spec.rb": 19.780386815000384,
  "spec/lib/gitlab/diff/file_collection/merge_request_diff_batch_spec.rb": 23.204512291000356,
  "spec/policies/project_snippet_policy_spec.rb": 14.456632164999974,
  "spec/helpers/emails_helper_spec.rb": 12.644088962999376,
  "spec/graphql/mutations/merge_requests/set_locked_spec.rb": 22.0314767029995,
  "spec/helpers/diff_helper_spec.rb": 9.48969557899909,
  "spec/models/application_record_spec.rb": 17.778156282000054,
  "spec/lib/banzai/reference_parser/user_parser_spec.rb": 19.28546360600012,
  "spec/lib/gitlab/github_import/importer/pull_request_importer_spec.rb": 18.671538300000975,
  "spec/lib/gitlab/ci/templates/npm_spec.rb": 17.540622116001032,
  "spec/models/concerns/chronic_duration_attribute_spec.rb": 11.44098154600033,
  "spec/models/concerns/pg_full_text_searchable_spec.rb": 12.978861468000105,
  "spec/services/auto_merge_service_spec.rb": 14.40851147000103,
  "spec/services/projects/update_remote_mirror_service_spec.rb": 10.729211669999131,
  "spec/lib/gitlab/ci/config/entry/need_spec.rb": 5.219376820999969,
  "spec/services/auto_merge/merge_when_pipeline_succeeds_service_spec.rb": 11.71554814800038,
  "spec/models/container_expiration_policy_spec.rb": 6.539531993001219,
  "spec/graphql/mutations/discussions/toggle_resolve_spec.rb": 8.02546196000003,
  "spec/lib/gitlab/sql/pattern_spec.rb": 5.268184385000495,
  "spec/helpers/auth_helper_spec.rb": 3.800527157000033,
  "spec/serializers/diff_file_entity_spec.rb": 6.465503071000057,
  "spec/lib/gitlab/slash_commands/command_spec.rb": 10.694480463998843,
  "spec/rubocop/cop/rspec/misspelled_aggregate_failures_spec.rb": 3.4726463009992585,
  "spec/lib/banzai/filter/references/feature_flag_reference_filter_spec.rb": 4.990912584000398,
  "spec/services/projects/operations/update_service_spec.rb": 6.904229636000309,
  "spec/models/ci/build_trace_chunks/fog_spec.rb": 9.099366078999083,
  "spec/lib/gitlab/tracking_spec.rb": 3.8823118380005326,
  "spec/lib/banzai/pipeline/gfm_pipeline_spec.rb": 7.913532501999725,
  "spec/tasks/gitlab/artifacts/migrate_rake_spec.rb": 9.202360728999338,
  "spec/lib/gitlab/observability_spec.rb": 3.3230039660011244,
  "spec/models/ci_platform_metric_spec.rb": 5.935933746999581,
  "spec/models/protected_branch/merge_access_level_spec.rb": 3.9354857329999504,
  "spec/lib/gitlab/ci/status/build/retryable_spec.rb": 6.559417069000119,
  "spec/lib/gitlab/ci/build/context/global_spec.rb": 7.797448796000026,
  "spec/lib/gitlab_settings/options_spec.rb": 2.7939419579997775,
  "spec/services/security/ci_configuration/secret_detection_create_service_spec.rb": 5.110544450999441,
  "spec/lib/gitlab/sidekiq_middleware/client_metrics_spec.rb": 2.7561639549985557,
  "spec/lib/banzai/reference_redactor_spec.rb": 4.977219006001178,
  "spec/models/integrations/redmine_spec.rb": 3.561573930999657,
  "spec/finders/packages/maven/package_finder_spec.rb": 5.863608163999743,
  "spec/services/git/base_hooks_service_spec.rb": 4.032620562999,
  "spec/helpers/badges_helper_spec.rb": 2.4788796640004875,
  "spec/models/group_group_link_spec.rb": 3.699362077999467,
  "spec/services/projects/container_repository/cleanup_tags_service_spec.rb": 2.5831373329983762,
  "spec/models/prometheus_alert_spec.rb": 4.138708411999687,
  "spec/db/docs_spec.rb": 3.4676399919990217,
  "spec/lib/gitlab/internal_events_spec.rb": 2.5604551849992276,
  "spec/components/pajamas/badge_component_spec.rb": 2.1546817570015264,
  "spec/lib/bulk_imports/projects/pipelines/issues_pipeline_spec.rb": 5.068613475999882,
  "spec/lib/sidebars/groups/menus/settings_menu_spec.rb": 2.762441695000234,
  "spec/models/board_group_recent_visit_spec.rb": 5.124610229999234,
  "spec/services/projects/group_links/update_service_spec.rb": 4.74890350899841,
  "spec/services/markup/rendering_service_spec.rb": 3.6100994470016303,
  "spec/lib/banzai/filter/asset_proxy_filter_spec.rb": 1.5931267750002007,
  "spec/lib/gitlab/database/partitioning/monthly_strategy_spec.rb": 2.3196221309990506,
  "spec/lib/gitlab/gl_repository/identifier_spec.rb": 1.7864734350005165,
  "spec/db/production/settings_spec.rb": 4.100209215999712,
  "spec/services/milestones/find_or_create_service_spec.rb": 4.07671703899905,
  "spec/lib/api/entities/project_import_status_spec.rb": 4.022752074000891,
  "spec/finders/releases/evidence_pipeline_finder_spec.rb": 3.067744062998827,
  "spec/lib/gitlab/ci/config/entry/port_spec.rb": 1.6613583580001432,
  "spec/tooling/lib/tooling/mappings/partial_to_views_mappings_spec.rb": 1.5234838919986942,
  "spec/rubocop/cop/rspec/factory_bot/inline_association_spec.rb": 1.525202831999195,
  "spec/sidekiq_cluster/sidekiq_cluster_spec.rb": 1.369158948000404,
  "spec/models/packages/npm/metadatum_spec.rb": 1.757600757999171,
  "spec/graphql/mutations/alert_management/update_alert_status_spec.rb": 2.341228007000609,
  "spec/workers/projects/inactive_projects_deletion_cron_worker_spec.rb": 2.7444582660009473,
  "spec/services/work_items/callbacks/description_spec.rb": 2.711583319998681,
  "spec/lib/gitlab/ci/pipeline/expression/lexeme/not_matches_spec.rb": 1.33259924199956,
  "spec/models/concerns/bulk_insertable_associations_spec.rb": 1.4044721749996825,
  "spec/models/ci/artifact_blob_spec.rb": 1.790702695001528,
  "spec/views/projects/diffs/_viewer.html.haml_spec.rb": 3.1009117599987803,
  "spec/lib/gitlab/database/load_balancing/rack_middleware_spec.rb": 1.1428114709997317,
  "spec/tasks/gitlab/feature_categories_rake_spec.rb": 4.200346264999098,
  "spec/policies/clusters/agents/activity_event_policy_spec.rb": 2.571878254000694,
  "spec/lib/bitbucket_server/connection_spec.rb": 1.2452182510005514,
  "spec/lib/gitlab/harbor/client_spec.rb": 1.366435829000693,
  "spec/graphql/mutations/security/ci_configuration/configure_sast_iac_spec.rb": 2.5467930159993557,
  "spec/graphql/mutations/users/set_namespace_commit_email_spec.rb": 2.785630651998872,
  "spec/models/users_statistics_spec.rb": 3.0189308280005207,
  "spec/services/security/ci_configuration/sast_parser_service_spec.rb": 2.256688936999126,
  "spec/lib/gitlab/database/reindexing/reindex_concurrently_spec.rb": 1.2452008010004647,
  "spec/graphql/resolvers/clusters/agent_tokens_resolver_spec.rb": 3.2654738830005954,
  "spec/models/merge_request_reviewer_spec.rb": 2.2729219350003405,
  "spec/lib/banzai/pipeline/incident_management/timeline_event_pipeline_spec.rb": 1.5602067090003402,
  "spec/workers/integrations/group_mention_worker_spec.rb": 2.0106508919998305,
  "spec/lib/json_web_token/rsa_token_spec.rb": 1.5387251909996849,
  "spec/lib/gitlab/github_import/importer/attachments/issues_importer_spec.rb": 1.185416037998948,
  "spec/rubocop/cop/graphql/id_type_spec.rb": 0.9496582619995024,
  "spec/models/packages/rpm/repository_file_spec.rb": 1.7017815040017013,
  "spec/graphql/mutations/todos/restore_spec.rb": 2.304683581998688,
  "spec/services/packages/debian/create_package_file_service_spec.rb": 1.1638110099993355,
  "spec/lib/gitlab/external_authorization/client_spec.rb": 1.0454498220005917,
  "spec/support_specs/matchers/exceed_query_limit_helpers_spec.rb": 1.1177150450002955,
  "spec/lib/gitlab/ci/config/entry/include/rules_spec.rb": 0.975293909001266,
  "spec/lib/gitlab/ci/config/yaml/tags/reference_spec.rb": 1.0860730879994662,
  "spec/graphql/resolvers/container_repository_tags_resolver_spec.rb": 1.3565106400001241,
  "spec/graphql/resolvers/ci/group_runners_resolver_spec.rb": 2.1056702120004047,
  "spec/lib/gitlab/jira_import/issues_importer_spec.rb": 1.4133393739994062,
  "spec/models/snippet_input_action_collection_spec.rb": 0.6490904930014949,
  "spec/lib/gitlab/database/background_migration/batched_job_transition_log_spec.rb": 0.8018468070004019,
  "spec/models/abuse/user_trust_score_spec.rb": 1.2287592130014673,
  "spec/lib/sbom/package_url/normalizer_spec.rb": 0.7790287789994181,
  "spec/workers/update_highest_role_worker_spec.rb": 1.2776928880011837,
  "spec/graphql/resolvers/projects/services_resolver_spec.rb": 1.7817668259995116,
  "spec/lib/gitlab/analytics/usage_trends/workers_argument_builder_spec.rb": 1.3174729740003386,
  "spec/workers/authorized_project_update/user_refresh_from_replica_worker_spec.rb": 1.0119300959995599,
  "spec/services/work_items/callbacks/notifications_spec.rb": 1.651460319000762,
  "spec/lib/gitlab/hook_data/project_member_builder_spec.rb": 1.1903016369997204,
  "spec/services/personal_access_tokens/rotate_service_spec.rb": 0.8966747670001496,
  "spec/graphql/resolvers/group_milestones_resolver_spec.rb": 1.0560893310012034,
  "spec/views/admin/sessions/new.html.haml_spec.rb": 0.9651316999988921,
  "spec/lib/gitlab/database/query_analyzers/prevent_set_operator_mismatch_spec.rb": 0.8855935880001198,
  "spec/workers/projects/delete_branch_worker_spec.rb": 1.3009612759997253,
  "spec/lib/gitlab/string_placeholder_replacer_spec.rb": 0.48338999999941734,
  "spec/lib/gitlab/database/partitioning/int_range_strategy_spec.rb": 0.8999815570005012,
  "spec/services/packages/composer/composer_json_service_spec.rb": 1.918642421000186,
  "spec/graphql/types/container_repository_referrer_type_spec.rb": 0.49485079899932316,
  "spec/views/projects/settings/integrations/edit.html.haml_spec.rb": 1.5822152660002757,
  "spec/models/organizations/organization_detail_spec.rb": 1.0537243910002871,
  "spec/validators/ip_address_validator_spec.rb": 0.9163347449994035,
  "spec/lib/gitlab/branch_push_merge_commit_analyzer_spec.rb": 2.055300577001617,
  "spec/support_specs/helpers/keyset_pagination_helpers_spec.rb": 0.7146951959985017,
  "spec/services/branch_rules/update_service_spec.rb": 1.291107777000434,
  "spec/lib/gitlab/ci/status/scheduled_spec.rb": 0.5720286300002044,
  "spec/services/saved_replies/create_service_spec.rb": 0.750790952000898,
  "spec/tooling/lib/tooling/helpers/file_handler_spec.rb": 0.695954188999167,
  "spec/graphql/resolvers/ml/model_detail_resolver_spec.rb": 1.03271510400009,
  "spec/presenters/packages/composer/packages_presenter_spec.rb": 1.0535451020004984,
  "spec/rubocop/cop/graphql/enum_values_spec.rb": 0.5033603880001465,
  "spec/services/award_emojis/copy_service_spec.rb": 1.8021469539999089,
  "spec/lib/gitlab/code_navigation_path_spec.rb": 1.1000750759994844,
  "spec/services/projects/batch_open_issues_count_service_spec.rb": 1.2859230970007047,
  "spec/lib/gitlab/global_id/deprecations_spec.rb": 0.5289980260004086,
  "spec/lib/bulk_imports/common/pipelines/entity_finisher_spec.rb": 0.8164541829992231,
  "spec/services/terraform/states/trigger_destroy_service_spec.rb": 1.2856202089988074,
  "spec/models/concerns/safely_change_column_default_spec.rb": 0.7033799740001996,
  "spec/lib/bulk_imports/projects/pipelines/external_pull_requests_pipeline_spec.rb": 0.9448153109988198,
  "spec/rubocop/cop/rspec/factory_bot/local_static_assignment_spec.rb": 0.795272395000211,
  "spec/rubocop/cop/gitlab/keys_first_and_values_first_spec.rb": 0.5025486529993941,
  "spec/workers/database/monitor_locked_tables_worker_spec.rb": 0.622480710999298,
  "spec/services/ci/job_token_scope/add_group_or_project_service_spec.rb": 0.9961140759987757,
  "spec/components/pajamas/checkbox_tag_component_spec.rb": 0.5784873049997259,
  "spec/config/smime_signature_settings_spec.rb": 0.425338909999482,
  "spec/services/jira_connect_installations/destroy_service_spec.rb": 1.0297914929997205,
  "spec/bin/diagnostic_reports_uploader_spec.rb": 0.48691161399983685,
  "spec/lib/gitlab/usage/metrics/instrumentations/batched_background_migration_failed_jobs_metric_spec.rb": 0.3842133139987709,
  "spec/views/projects/merge_requests/creations/new.html.haml_spec.rb": 0.6029877439996199,
  "spec/services/projects/readme_renderer_service_spec.rb": 0.779653497000254,
  "spec/components/pajamas/breadcrumb_component_spec.rb": 0.41620238100040297,
  "spec/lib/gitlab/ci/config/entry/id_token_spec.rb": 0.6115885319995868,
  "spec/services/projects/forks_count_service_spec.rb": 0.567174617001001,
  "spec/lib/gitlab/usage/metrics/instrumentations/dormant_user_period_setting_metric_spec.rb": 1.0339739030005148,
  "spec/finders/vs_code/settings/settings_finder_spec.rb": 0.5824450950003666,
  "spec/services/achievements/update_user_achievement_priorities_service_spec.rb": 1.0156284239983506,
  "spec/workers/google_cloud/create_cloudsql_instance_worker_spec.rb": 1.0262681229996815,
  "spec/rubocop/cop/gitlab/event_store_subscriber_spec.rb": 0.5570062579990918,
  "spec/lib/gitlab/git/lfs_changes_spec.rb": 0.7962223849990551,
  "spec/serializers/ci/dag_stage_entity_spec.rb": 0.8949967560001824,
  "spec/lib/gitlab/view/presenter/factory_spec.rb": 0.5120299810005235,
  "spec/presenters/packages/nuget/v2/service_index_presenter_spec.rb": 0.5215576709997549,
  "spec/graphql/resolvers/environments/nested_environments_resolver_spec.rb": 1.0185976440006925,
  "spec/models/concerns/presentable_spec.rb": 0.41214173099979234,
  "spec/rubocop/cop/rspec/shared_groups_metadata_spec.rb": 0.4954618740011938,
  "spec/models/work_items/widgets/notifications_spec.rb": 0.741788250999889,
  "spec/initializers/cookies_serializer_spec.rb": 0.3019576810002036,
  "spec/lib/gitlab/ci/mask_secret_spec.rb": 0.4886837640005979,
  "spec/lib/gitlab/usage_data_counters/source_code_counter_spec.rb": 0.544842379000329,
  "spec/lib/generators/batched_background_migration/batched_background_migration_generator_spec.rb": 0.48677300400049717,
  "spec/graphql/resolvers/concerns/resolves_groups_spec.rb": 0.8958479159991839,
  "spec/services/webauthn/authenticate_service_spec.rb": 0.5557674679985212,
  "spec/lib/gitlab/auth/blocked_user_tracker_spec.rb": 0.4096851609992882,
  "spec/services/pages_domains/delete_service_spec.rb": 0.7346980699985579,
  "spec/lib/gitlab/pagination/keyset/in_operator_optimization/strategies/order_values_loader_strategy_spec.rb": 0.352555436998955,
  "spec/lib/gitlab/batch_worker_context_spec.rb": 0.31869035999989137,
  "spec/views/devise/confirmations/almost_there.html.haml_spec.rb": 0.4386927289997402,
  "spec/workers/update_external_pull_requests_worker_spec.rb": 0.7020873040000879,
  "spec/lib/api/entities/ml/mlflow/search_runs_spec.rb": 0.46459285600030853,
  "spec/graphql/types/ci/config/group_type_spec.rb": 0.29675326199867413,
  "spec/graphql/resolvers/metrics/dashboards/annotation_resolver_spec.rb": 0.8237475019996054,
  "spec/initializers/rails_yaml_safe_load_spec.rb": 0.5448395180010266,
  "spec/lib/generators/gitlab/usage_metric_definition/redis_hll_generator_spec.rb": 0.39898315299979004,
  "spec/models/discussion_note_spec.rb": 0.40648783199867466,
  "spec/routing/notifications_routing_spec.rb": 0.3569313759999204,
  "spec/serializers/admin/reported_content_entity_spec.rb": 0.382690703998378,
  "spec/lib/gitlab/memory/diagnostic_reports_logger_spec.rb": 0.23634909800057358,
  "spec/workers/gitlab/github_import/attachments/import_merge_request_worker_spec.rb": 0.6487357090009027,
  "spec/lib/sidebars/organizations/menus/scope_menu_spec.rb": 0.31518882000091253,
  "spec/graphql/types/issue_status_count_type_spec.rb": 0.31013386100130447,
  "spec/rubocop/cop/migration/with_lock_retries_with_change_spec.rb": 0.3927207830001862,
  "spec/graphql/types/projects/service_type_spec.rb": 0.35511238599974604,
  "spec/serializers/analytics/cycle_analytics/stage_entity_spec.rb": 0.3425423980006599,
  "spec/graphql/types/tree/tree_entry_type_spec.rb": 0.30151342200042563,
  "spec/graphql/types/work_items/widgets/current_user_todos_input_type_spec.rb": 0.305992811001488,
  "spec/graphql/types/issue_type_enum_spec.rb": 0.30360260199995537,
  "spec/graphql/types/jira_import_type_spec.rb": 0.306617461001224,
  "spec/scripts/generate_failed_package_and_test_mr_message_spec.rb": 0.3037623510008416,
  "spec/graphql/types/ci_configuration/sast/ui_component_size_enum_spec.rb": 0.3174630800003797,
  "spec/lib/bulk_imports/groups/extractors/subgroups_extractor_spec.rb": 0.41450998000073014,
  "spec/views/layouts/_published_experiments.html.haml_spec.rb": 0.32518339899979765,
  "spec/lib/sidebars/uncategorized_menu_spec.rb": 0.23242034800023248,
  "spec/graphql/types/packages/maven/metadatum_type_spec.rb": 0.24250661699988996,
  "spec/lib/gitlab/nav/top_nav_menu_item_spec.rb": 0.289233632000105,
  "spec/graphql/types/ci/pipeline_trigger_type_spec.rb": 0.24431234700023197,
  "spec/initializers/sidekiq_spec.rb": 0.23628916699999536,
  "spec/helpers/routing/packages_helper_spec.rb": 0.267184365000503,
  "spec/lib/banzai/filter/html_entity_filter_spec.rb": 0.24290697700052988,
  "spec/rubocop/cop/gitlab/change_timezone_spec.rb": 0.24504453699955775,
  "spec/lib/gitlab/action_cable/request_store_callbacks_spec.rb": 0.2459719969992875
}

Knapsack global time execution for tests: 17m 51s

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

  1) Gitlab::GlRepository::Identifier project repository https://gitlab.com/gitlab-org/gitlab/-/issues/219192
     # No reason given
     Failure/Error:
       it_behaves_like 'parsing gl_repository identifier' do
         let(:record_id) { project.id }
         let(:identifier) { "project-#{record_id}-code" }
         let(:expected_container) { project }
         let(:expected_type) { Gitlab::GlRepository::PROJECT }
       end

       `it_behaves_like` is not available from within an example (e.g. an `it` block) or from constructs that run in the scope of an example (e.g. `before`, `let`, etc). It is only available on an example group (e.g. a `describe` or `context` block).

                 raise WrongScopeError,
                 ^^^^^
     # ./gems/gitlab-rspec/lib/gitlab/rspec/next_found_instance_of.rb:9:in `method_missing'
     # ./spec/lib/gitlab/gl_repository/identifier_spec.rb:19:in `block (3 levels) in <top (required)>'
     # ./spec/spec_helper.rb:437:in `block (3 levels) in <top (required)>'
     # ./spec/support/sidekiq_middleware.rb:9:in `with_sidekiq_server_middleware'
     # ./spec/spec_helper.rb:428:in `block (2 levels) in <top (required)>'
     # ./spec/spec_helper.rb:424:in `block (3 levels) in <top (required)>'
     # ./lib/gitlab/application_context.rb:68:in `with_raw_context'
     # ./spec/spec_helper.rb:424:in `block (2 levels) in <top (required)>'
     # ./spec/spec_helper.rb:275: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)>'

  2) Organizations::OrganizationDetail with uploads behaves like model with uploads .destroy with not mounted uploads with local files deletes any FileUploader uploads which are not mounted
     # No reason given
     # ./spec/support/shared_examples/models/with_uploads_shared_examples.rb:23

  3) Organizations::OrganizationDetail with uploads behaves like model with uploads .destroy with not mounted uploads with local files deletes local files
     # No reason given
     # ./spec/support/shared_examples/models/with_uploads_shared_examples.rb:27

  4) Organizations::OrganizationDetail with uploads behaves like model with uploads .destroy with not mounted uploads with remote files deletes any FileUploader uploads which are not mounted
     # No reason given
     # ./spec/support/shared_examples/models/with_uploads_shared_examples.rb:37

  5) Organizations::OrganizationDetail with uploads behaves like model with uploads .destroy with not mounted uploads with remote files deletes remote files
     # No reason given
     # ./spec/support/shared_examples/models/with_uploads_shared_examples.rb:41

  6) Database::MonitorLockedTablesWorker#perform when running with single database skips executing the job
     # Skipping because database ci exists
     # ./spec/workers/database/monitor_locked_tables_worker_spec.rb:15

  7) gitlab:db:decomposition:migrate calls Gitlab::Database::Decomposition::Migrate#process!
     # Skipping because database ci exists
     # ./spec/tasks/gitlab/db/decomposition/migrate_rake_spec.rb:20

  8) gitlab:db:decomposition:migrate when a Gitlab::Database::Decomposition::Migrate::Error is raised renders error
     # Skipping because database ci exists
     # ./spec/tasks/gitlab/db/decomposition/migrate_rake_spec.rb:35

Failures:

  1) Gitlab::Database::Partitioning::IntRangeStrategy simulates the merge_request_diff_commits partition creation redirects to the new partition
     Failure/Error: model.create!(merge_request_diff_id: 1, relative_order: 1, created_at: Time.zone.now) # Goes in partition 1

     ActiveModel::UnknownAttributeError:
       unknown attribute 'merge_request_diff_id' for #<Class:0x00007a0339a76488>.

                 raise UnknownAttributeError.new(self, k.to_s)
                 ^^^^^
     # ./gems/activerecord-gitlab/lib/active_record/gitlab_patches/rescue_from.rb:40:in `_assign_attributes'
     # ./spec/lib/gitlab/database/partitioning/int_range_strategy_spec.rb:292:in `block (4 levels) in <top (required)>'
     # ./spec/lib/gitlab/database/partitioning/int_range_strategy_spec.rb:291:in `block (3 levels) in <top (required)>'
     # ./spec/spec_helper.rb:437:in `block (3 levels) in <top (required)>'
     # ./spec/support/sidekiq_middleware.rb:9:in `with_sidekiq_server_middleware'
     # ./spec/spec_helper.rb:428:in `block (2 levels) in <top (required)>'
     # ./spec/spec_helper.rb:424:in `block (3 levels) in <top (required)>'
     # ./lib/gitlab/application_context.rb:68:in `with_raw_context'
     # ./spec/spec_helper.rb:424:in `block (2 levels) in <top (required)>'
     # ./spec/spec_helper.rb:275: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 18 minutes 31 seconds (files took 51.85 seconds to load)
5973 examples, 1 failure, 8 pending

Failed examples:

rspec ./spec/lib/gitlab/database/partitioning/int_range_strategy_spec.rb:285 # Gitlab::Database::Partitioning::IntRangeStrategy simulates the merge_request_diff_commits partition creation redirects to the new partition

Randomized with seed 38722

Stopped processing SimpleCov as a previous error not related to SimpleCov has been detected
[TEST PROF INFO] Time spent in factories: 05:35.039 (29.86% 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-6218670763.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-6218670763.json --format RspecJunitFormatter --out rspec/rspec-retry-6218670763.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"
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.473234236 seconds
# [RSpecRunTime] Starting example group spec/lib/gitlab/database/partitioning/int_range_strategy_spec.rb. Expected to take 2.92 seconds.

Gitlab::Database::Partitioning::IntRangeStrategy
  simulates the merge_request_diff_commits partition creation
    redirects to the new partition

# [RSpecRunTime] Finishing example group spec/lib/gitlab/database/partitioning/int_range_strategy_spec.rb. It took 1.34 seconds. Expected to take 2.92 seconds.
auto_explain log contains 1613 entries for main, writing to /builds/gitlab-org/gitlab/auto_explain/rspec-unit-pg14-4-32.13205.main.ndjson.gz
took 16.102612624
auto_explain log contains 1613 entries for ci, writing to /builds/gitlab-org/gitlab/auto_explain/rspec-unit-pg14-4-32.13205.ci.ndjson.gz
took 16.14165386
[TEST PROF INFO] EventProf results for sql.active_record

Total time: 00:00.295 of 00:01.338 (22.06%)
Total events: 153

Top 5 slowest suites (by time):

Gitlab::Datab...tRangeStrategy (./spec/lib/gitlab/database/partitioning/int_range_strategy_spec.rb:5) – 00:00.295 (153 / 1) of 00:01.338 (22.06%)


Finished in 37.92 seconds (files took 46.89 seconds to load)
1 example, 0 failures

Randomized with seed 249

[TEST PROF INFO] Time spent in factories: 00:00.019 (0.05% of total time)
Loading rspec/rspec-6218670763.json...
Merged rspec/rspec-retry-6218670763.json adding 5 results.
Saved rspec/rspec-6218670763.json.
A test was flaky and succeeded after being retried. Checking to see if flaky test is part of this MR...
Flaky test was not part of this MR.
section_end:1708472388:step_script
section_start:1708472388:after_script
Running after_script
Running after script...
$ echo -e "\e[0Ksection_start:`date +%s`:report_results_section[collapsed=true]\r\e[0KReport results"
section_start:1708472388:report_results_section[collapsed=true]
Report results
$ bundle exec gem list gitlab_quality-test_tooling
gitlab_quality-test_tooling (1.15.0)
$ if [ "$CREATE_RAILS_TEST_FAILURE_ISSUES" == "true" ]; then # collapsed multi-line command
Reporting test failures in `rspec/rspec-*.json` as issues in project `gitlab-org/gitlab` via the API at `https://gitlab.com/api/v4`.
=> Reporting 1 tests in rspec/rspec-6218670763.json
=> Reporting 1 tests in rspec/rspec-retry-6218670763.json
Reporting slow tests in `rspec/rspec-*.json` as issues in project `gitlab-org/gitlab` via the API at `https://gitlab.com/api/v4`.
=> Reporting 1 tests in rspec/rspec-6218670763.json
=> Reporting 1 tests in rspec/rspec-retry-6218670763.json
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.
$ echo -e "\e[0Ksection_end:`date +%s`:report_results_section\r\e[0K"
section_end:1708472393:report_results_section

$ 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:1708472394:after_script
section_start:1708472394:archive_cache
Saving cache for successful job
Not uploading cache ruby-gems-debian-bookworm-ruby-3.1-16 due to policy
section_end:1708472395:archive_cache
section_start:1708472395:upload_artifacts_on_success
Uploading artifacts for successful 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) 
WARNING: deprecations/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 
knapsack/: found 4 matching artifact files and directories 
rspec/: found 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 17 matching artifact files and directories 
WARNING: Upload request redirected                  location=https://gitlab.com/api/v4/jobs/6218670763/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=6218670763 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/6218670763/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=6218670763 responseStatus=201 Created token=glcbt-65
section_end:1708472400:upload_artifacts_on_success
section_start:1708472400:cleanup_file_variables
Cleaning up project directory and file based variables
section_end:1708472400:cleanup_file_variables
Job succeeded