rspec unit pg12 6/20
Passed Started
by
@mikolaj_wawrzyniak

Mikołaj Wawrzyniak
1Running with gitlab-runner 14.2.0-rc1 (0ac3a46e)2 on green-2.private.runners-manager.gitlab.com/gitlab.com/gitlab-org GaSD-S1F3 feature flags: FF_USE_FASTZIP:true6Using Docker executor with image registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.2.patched-golang-1.16-git-2.31-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-12-graphicsmagick-1.3.36 ...7Starting service postgres:12 ...8Pulling docker image postgres:12 ...9Using docker image sha256:14566088fc000f09db0a67b267f7de82a1a1a0d45d6a0a023ab580b084be62a8 for postgres:12 with digest postgres@sha256:1cb8f7fc2e6745ef577640de1c9fde04ff9498a7e0d067f1b8e6890ad4ba5073 ...10Starting service redis:5.0-alpine ...11Pulling docker image redis:5.0-alpine ...12Using docker image sha256:add8cf2f542a4bb4070fad4dd7bb73933a804a0ff57dd611f7be76ffeb4a8ae2 for redis:5.0-alpine with digest redis@sha256:5dbc2c85e636c0aea692972a2eac934ba4f04e9bb6578bc47aa35d28482b2f60 ...13Waiting for services to be up and running...14Authenticating with credentials from job payload (GitLab Registry)15Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.2.patched-golang-1.16-git-2.31-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-12-graphicsmagick-1.3.36 ...16Using docker image sha256:f3af4045688c7d321821552b2274c91037e2b5727ac63ee5f72ad30f5962c48e for registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.2.patched-golang-1.16-git-2.31-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-12-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:72fa33b8058851ded8b72376ab249c48f98d1a176ad4bc8d517ca4ab62f0f7a0 ...18Running on runner-gasd-s1f-project-278964-concurrent-0 via runner-gasd-s1f-private-1629278540-15c4ef25...20$ eval "$CI_PRE_CLONE_SCRIPT"21Downloading archived master...22Connecting to storage.googleapis.com (172.217.193.128:443)23saving to '/tmp/gitlab.tar.gz'24gitlab.tar.gz 38% |************ | 134M 0:00:01 ETA25gitlab.tar.gz 100% |********************************| 347M 0:00:00 ETA26'/tmp/gitlab.tar.gz' saved27Extracting tarball into /builds/gitlab-org/gitlab...28Fetching changes with git depth set to 20...29Reinitialized existing Git repository in /builds/gitlab-org/gitlab/.git/30Created fresh repository.31remote: Enumerating objects: 193, done. 32remote: Counting objects: 100% (141/141), done. 33remote: Compressing objects: 100% (55/55), done. 34remote: Total 91 (delta 78), reused 47 (delta 36), pack-reused 0 36 * [new ref] 87ccd58290a6f21a5fb92623e3970840943714e8 -> refs/pipelines/35508967237 * [new branch] master -> origin/master38Checking out 87ccd582 as master...39Skipping Git submodules setup41Checking cache for ruby-gems-v1-4...42Downloading cache.zip from https://storage.googleapis.com/gitlab-com-runners-cache/project/278964/ruby-gems-v1-4 43Successfully extracted cache44Checking cache for gitaly-ruby-gems-v1-4...45Downloading cache.zip from https://storage.googleapis.com/gitlab-com-runners-cache/project/278964/gitaly-ruby-gems-v1-4 46Successfully extracted cache48Downloading artifacts for compile-test-assets (1512821856)...49Downloading artifacts from coordinator... ok id=1512821856 responseStatus=200 OK token=yv2CxeL350Downloading artifacts for retrieve-tests-metadata (1512821865)...51Downloading artifacts from coordinator... ok id=1512821865 responseStatus=200 OK token=UxJ4xnY952Downloading artifacts for setup-test-env (1512821862)...53Downloading artifacts from coordinator... ok id=1512821862 responseStatus=200 OK token=r5iGa7Zz55Using docker image sha256:f3af4045688c7d321821552b2274c91037e2b5727ac63ee5f72ad30f5962c48e for registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.2.patched-golang-1.16-git-2.31-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-12-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:72fa33b8058851ded8b72376ab249c48f98d1a176ad4bc8d517ca4ab62f0f7a0 ...56$ [ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb57$ export GOPATH=$CI_PROJECT_DIR/.go58$ mkdir -p $GOPATH59$ source scripts/utils.sh60$ source scripts/prepare_build.sh61Bundler version 2.1.462production:development63Settings are listed in order of priority. The top value will be used.64path65Set for the current user (/root/.bundle/config): "vendor"66clean67Set for the current user (/root/.bundle/config): "true"68without69Set via BUNDLE_WITHOUT: [:production, :development]70install_flags71Set via BUNDLE_INSTALL_FLAGS: "--jobs=$(nproc) --retry=3 --quiet"72$ bundle install --jobs=$(nproc) --retry=3 --quiet && bundle check73The Gemfile's dependencies are satisfied74==> 'bundle install --jobs=$(nproc) --retry=3 --quiet && bundle check' succeeded in 2 seconds.75$ bundle pristine pg76Installing pg 1.2.3 with native extensions77==> 'bundle pristine pg' succeeded in 10 seconds.78$ setup_db_user_only79CREATE ROLE80GRANT81==> 'setup_db_user_only' succeeded in 1 seconds.82$ bundle exec rake db:drop db:create db:structure:load db:migrate gitlab:db:setup_ee83Dropped database 'gitlabhq_test'84Created database 'gitlabhq_test'85DEPRECATION WARNING: Using `bin/rails db:structure:load` is deprecated and will be removed in Rails 6.2. Configure the format using `config.active_record.schema_format = :sql` to use `structure.sql` and run `bin/rails db:schema:load` instead. (called from load at /builds/gitlab-org/gitlab/vendor/ruby/2.7.0/bin/rake:23)86Dropped database 'gitlabhq_geo_test'87Created database 'gitlabhq_geo_test'88==> 'bundle exec rake db:drop db:create db:structure:load db:migrate gitlab:db:setup_ee' succeeded in 28 seconds.89$ run_timed_command "gem install knapsack --no-document"90$ gem install knapsack --no-document91Successfully installed knapsack-4.0.0921 gem installed93==> 'gem install knapsack --no-document' succeeded in 0 seconds.94$ run_timed_command "scripts/gitaly-test-spawn"95$ scripts/gitaly-test-spawn96Settings are listed in order of priority. The top value will be used.97jobs98Set for your local app (/builds/gitlab-org/gitlab/tmp/tests/gitaly/ruby/.bundle/config): 499retry100Set for your local app (/builds/gitlab-org/gitlab/tmp/tests/gitaly/ruby/.bundle/config): 3101path102Set for your local app (/builds/gitlab-org/gitlab/tmp/tests/gitaly/ruby/.bundle/config): "/builds/gitlab-org/gitlab/vendor/gitaly-ruby"103deployment104Set for your local app (/builds/gitlab-org/gitlab/tmp/tests/gitaly/ruby/.bundle/config): true105without106Set for your local app (/builds/gitlab-org/gitlab/tmp/tests/gitaly/ruby/.bundle/config): [:production, :development]107Set via BUNDLE_WITHOUT: [:production, :development]108app_config109Set via BUNDLE_APP_CONFIG: "/builds/gitlab-org/gitlab/tmp/tests/gitaly/ruby/.bundle"110gemfile111Set via BUNDLE_GEMFILE: "/builds/gitlab-org/gitlab/tmp/tests/gitaly/ruby/Gemfile"112Don't run Bundler as root. Bundler can ask for sudo if it is needed, and113installing your bundle as root will break this application for all non-root114users on this machine.115Using abstract_type 0.0.7116Using concurrent-ruby 1.1.9117Using i18n 1.8.10118Using minitest 5.14.4119Using tzinfo 2.0.4120Using zeitwerk 2.4.2121Using activesupport 6.1.3.2122Using builder 3.2.4123Using erubi 1.10.0124Using mini_portile2 2.5.1125Using racc 1.5.2126Using nokogiri 1.11.5 (x86_64-linux)127Using rails-dom-testing 2.0.3128Using crass 1.0.6129Using loofah 2.10.0130Using rails-html-sanitizer 1.3.0131Using actionview 6.1.3.2132Using rack 2.2.3133Using rack-test 1.1.0134Using actionpack 6.1.3.2135Using ice_nine 0.11.2136Using thread_safe 0.3.6137Using memoizable 0.4.2138Using adamantium 0.2.0139Using public_suffix 4.0.6140Using addressable 2.7.0141Using ast 2.4.1142Using binding_ninja 0.2.3143Using bundler 2.1.4144Using charlock_holmes 0.7.7145Using coderay 1.1.2146Using equalizer 0.0.11147Using concord 0.1.5148Using diff-lcs 1.3149Using dotenv 2.7.6150Using escape_utils 1.2.1151Using factory_bot 5.0.2152Using multipart-post 2.1.1153Using faraday 1.0.1154Using ffi 1.15.3155Using json 2.5.1156Using gemojione 3.3.0157Using mini_mime 1.0.2158Using rugged 1.1.0159Using github-linguist 7.12.1160Using github-markup 1.7.0161Using mime-types-data 3.2020.1104162Using mime-types 3.3.1163Using gitlab-gollum-rugged_adapter 0.4.4.4.gitlab.1164Using rouge 3.26.0165Using nokogumbo 1.5.0166Using sanitize 4.6.6167Using stringex 2.8.5168Using gitlab-gollum-lib 4.2.7.10.gitlab.1169Using google-protobuf 3.17.3 (x86_64-linux)170Using googleapis-common-protos-types 1.1.0171Using grpc 1.38.0 (x86_64-linux)172Using opentracing 0.5.0173Using thrift 0.14.1174Using jaeger-client 1.1.0175Using pg_query 2.1.0176Using redis 4.2.5177Using gitlab-labkit 0.20.0178Using gitlab-markup 1.7.1179Using grpc-tools 1.38.0180Using sawyer 0.8.2181Using octokit 4.20.0182Using reverse_markdown 1.4.0183Using thor 1.1.0184Using licensee 9.14.1185Using method_source 0.9.2186Using msgpack 1.3.3187Using optimist 3.0.1188Using parallel 1.19.2189Using parser 2.7.2.0190Using procto 0.0.3191Using unparser 0.4.7192Using proc_to_ast 0.1.0193Using pry 0.12.2194Using rainbow 3.0.0195Using rbtrace 0.4.14196Using rdoc 6.3.2197Using regexp_parser 1.8.1198Using rexml 3.2.4199Using rspec-support 3.8.0200Using rspec-core 3.8.0201Using rspec-expectations 3.8.3202Using rspec-mocks 3.8.0203Using rspec 3.8.0204Using rspec-parameterized 0.4.2205Using rubocop-ast 0.2.0206Using ruby-progressbar 1.10.1207Using unicode-display_width 1.7.0208Using rubocop 0.86.0209Using sentry-raven 3.0.4210Using timecop 0.9.1211Bundle complete! 21 Gemfile dependencies, 96 gems now installed.212Gems in the groups production and development were not installed.213Bundled gems are installed into `/builds/gitlab-org/gitlab/vendor/gitaly-ruby`214Checking gitaly-ruby Gemfile...215Checking gitaly-ruby bundle...216The Gemfile's dependencies are satisfied217Trying to connect to gitaly: ....... OK218Trying to connect to gitaly2: .............. OK219Trying to connect to praefect: .... OK220==> 'scripts/gitaly-test-spawn' succeeded in 5 seconds.221$ source ./scripts/rspec_helpers.sh222$ rspec_paralellized_job "--tag ~quarantine --tag ~geo --tag ~level:migration"223KNAPSACK_TEST_FILE_PATTERN: spec/{bin,channels,config,db,dependencies,elastic,elastic_integration,experiments,factories,finders,frontend,graphql,haml_lint,helpers,initializers,javascripts,lib,models,policies,presenters,rack_servers,replicators,routing,rubocop,serializers,services,sidekiq,spam,support_specs,tasks,uploaders,validators,views,workers,tooling}{,/**/}*_spec.rb224Knapsack node specs:225spec/lib/gitlab/relative_positioning/mover_spec.rb226spec/models/environment_spec.rb227spec/tasks/gitlab/backup_rake_spec.rb228spec/lib/gitlab/background_migration/fix_user_project_route_names_spec.rb229spec/services/notes/quick_actions_service_spec.rb230spec/lib/gitlab/background_migration/populate_canonical_emails_spec.rb231spec/lib/gitlab/graphql/pagination/keyset/connection_spec.rb232spec/lib/gitlab/background_migration/backfill_project_settings_spec.rb233spec/lib/gitlab/ci/templates/templates_spec.rb234spec/finders/notes_finder_spec.rb235spec/lib/gitlab/background_migration/set_merge_request_diff_files_count_spec.rb236spec/models/alert_management/alert_spec.rb237spec/lib/gitlab/background_migration/migrate_u2f_webauthn_spec.rb238spec/services/boards/lists/move_service_spec.rb239spec/lib/gitlab/user_access_spec.rb240spec/serializers/deployment_entity_spec.rb241spec/models/ci/ref_spec.rb242spec/services/issues/create_service_spec.rb243spec/helpers/emails_helper_spec.rb244spec/services/ci/update_build_queue_service_spec.rb245spec/policies/namespace/root_storage_statistics_policy_spec.rb246spec/helpers/users_helper_spec.rb247spec/lib/gitlab/data_builder/push_spec.rb248spec/helpers/avatars_helper_spec.rb249spec/models/integrations/microsoft_teams_spec.rb250spec/lib/gitlab/hashed_storage/migrator_spec.rb251spec/workers/issue_placement_worker_spec.rb252spec/lib/gitlab/usage_data_counters/hll_redis_counter_spec.rb253spec/models/incident_management/issuable_escalation_status_spec.rb254spec/lib/gitlab/middleware/read_only_spec.rb255spec/lib/gitlab/gfm/uploads_rewriter_spec.rb256spec/lib/banzai/filter/issuable_state_filter_spec.rb257spec/models/concerns/deprecated_assignee_spec.rb258spec/presenters/release_presenter_spec.rb259spec/models/concerns/project_api_compatibility_spec.rb260spec/models/releases/link_spec.rb261spec/services/ci/play_build_service_spec.rb262spec/lib/gitlab/i18n/po_linter_spec.rb263spec/graphql/mutations/issues/set_assignees_spec.rb264spec/lib/gitlab/user_access_snippet_spec.rb265spec/services/incident_management/incidents/create_service_spec.rb266spec/services/wiki_pages/update_service_spec.rb267spec/models/hooks/system_hook_spec.rb268spec/lib/gitlab/exclusive_lease_spec.rb269spec/services/award_emojis/destroy_service_spec.rb270spec/models/notification_setting_spec.rb271spec/models/onboarding_progress_spec.rb272spec/lib/gitlab/ci/build/prerequisite/kubernetes_namespace_spec.rb273spec/lib/gitlab/background_migration/migrate_project_taggings_context_from_tags_to_topics_spec.rb274spec/lib/banzai/filter/autolink_filter_spec.rb275spec/lib/gitlab/ci/pipeline/chain/validate/external_spec.rb276spec/lib/gitlab/object_hierarchy_spec.rb277spec/services/merge_requests/export_csv_service_spec.rb278spec/views/groups/show.html.haml_spec.rb279spec/services/merge_requests/assign_issues_service_spec.rb280spec/services/boards/lists/list_service_spec.rb281spec/models/alert_management/http_integration_spec.rb282spec/models/ci/freeze_period_status_spec.rb283spec/graphql/mutations/issues/set_severity_spec.rb284spec/lib/gitlab/ci/config/external/processor_spec.rb285spec/lib/gitlab/ci/pipeline/expression/lexeme/or_spec.rb286spec/workers/remove_expired_group_links_worker_spec.rb287spec/workers/new_issue_worker_spec.rb288spec/finders/projects/groups_finder_spec.rb289spec/lib/banzai/filter/math_filter_spec.rb290spec/lib/gitlab/graphql/pagination/externally_paginated_array_connection_spec.rb291spec/views/notify/pipeline_fixed_email.html.haml_spec.rb292spec/workers/container_expiration_policy_worker_spec.rb293spec/workers/ci/ref_delete_unlock_artifacts_worker_spec.rb294spec/lib/gitlab/access/branch_protection_spec.rb295spec/lib/gitlab/alert_management/payload/managed_prometheus_spec.rb296spec/graphql/types/query_type_spec.rb297spec/lib/gitlab/ci/pipeline_object_hierarchy_spec.rb298spec/lib/gitlab/instrumentation/redis_interceptor_spec.rb299spec/lib/gitlab/sidekiq_logging/structured_logger_spec.rb300spec/lib/gitlab/error_tracking/processor/sidekiq_processor_spec.rb301spec/lib/banzai/reference_parser/design_parser_spec.rb302spec/graphql/resolvers/issue_status_counts_resolver_spec.rb303spec/services/ci/delete_objects_service_spec.rb304spec/services/repositories/destroy_rollback_service_spec.rb305spec/graphql/resolvers/design_management/design_resolver_spec.rb306spec/lib/gitlab/database/rename_reserved_paths_migration/v1_spec.rb307spec/lib/gitlab/ci/pipeline/chain/limit/deployments_spec.rb308spec/services/metrics/dashboard/pod_dashboard_service_spec.rb309spec/services/authorized_project_update/project_recalculate_per_user_service_spec.rb310spec/services/packages/debian/extract_changes_metadata_service_spec.rb311spec/services/packages/debian/process_changes_service_spec.rb312spec/helpers/notify_helper_spec.rb313spec/lib/file_size_validator_spec.rb314spec/lib/gitlab/analytics/cycle_analytics/stage_events/issue_deployed_to_production_spec.rb315spec/lib/gitlab/checks/tag_check_spec.rb316spec/lib/gitlab/composer/cache_spec.rb317spec/models/incident_management/project_incident_management_setting_spec.rb318spec/models/concerns/has_environment_scope_spec.rb319spec/lib/gitlab/pagination/keyset/simple_order_builder_spec.rb320spec/finders/namespaces/projects_finder_spec.rb321spec/models/concerns/ignorable_columns_spec.rb322spec/models/packages/sem_ver_spec.rb323spec/models/integrations/slack_slash_commands_spec.rb324spec/models/projects/ci_feature_usage_spec.rb325spec/services/feature_flags/update_service_spec.rb326spec/models/ci/runner_project_spec.rb327spec/services/ci/run_scheduled_build_service_spec.rb328spec/lib/gitlab/ci/config/entry/allow_failure_spec.rb329spec/workers/authorized_project_update/user_refresh_over_user_range_worker_spec.rb330spec/lib/constraints/project_url_constrainer_spec.rb331spec/models/packages/debian/group_distribution_key_spec.rb332spec/workers/design_management/copy_design_collection_worker_spec.rb333spec/lib/gitlab/usage/metrics/instrumentations/generic_metric_spec.rb334spec/lib/gitlab/gitaly_client/storage_settings_spec.rb335spec/models/web_ide_terminal_spec.rb336spec/lib/gitlab/ci/build/step_spec.rb337spec/services/projects/container_repository/gitlab/delete_tags_service_spec.rb338spec/lib/gitlab/legacy_github_import/milestone_formatter_spec.rb339spec/services/users/update_service_spec.rb340spec/lib/sidebars/projects/menus/project_information_menu_spec.rb341spec/lib/bulk_imports/groups/transformers/group_attributes_transformer_spec.rb342spec/workers/rebase_worker_spec.rb343spec/models/dependency_proxy/registry_spec.rb344spec/services/alert_management/http_integrations/create_service_spec.rb345spec/graphql/types/untrusted_regexp_spec.rb346spec/lib/gitlab/import_export/uploads_saver_spec.rb347spec/lib/gitlab/alert_management/payload_spec.rb348spec/lib/gitlab/ci/pipeline/expression/lexeme/variable_spec.rb349spec/helpers/import_helper_spec.rb350spec/helpers/x509_helper_spec.rb351spec/services/packages/helm/process_file_service_spec.rb352spec/workers/project_cache_worker_spec.rb353spec/lib/gitlab/github_import/importer/notes_importer_spec.rb354spec/services/ci/create_pipeline_service/environment_spec.rb355spec/graphql/mutations/merge_requests/set_subscription_spec.rb356spec/tasks/gitlab/password_rake_spec.rb357spec/workers/jira_connect/sync_deployments_worker_spec.rb358spec/graphql/resolvers/users/group_count_resolver_spec.rb359spec/graphql/mutations/ci/runner/update_spec.rb360spec/lib/gitlab/phabricator_import/representation/task_spec.rb361spec/workers/create_note_diff_file_worker_spec.rb362spec/lib/gitlab/kubernetes/rollout_instances_spec.rb363spec/serializers/diff_file_metadata_entity_spec.rb364spec/services/incident_management/pager_duty/process_webhook_service_spec.rb365spec/lib/gitlab/http_connection_adapter_spec.rb366spec/models/pages/virtual_domain_spec.rb367spec/presenters/ci/pipeline_artifacts/code_coverage_presenter_spec.rb368spec/services/concerns/merge_requests/assigns_merge_params_spec.rb369spec/lib/gitlab/background_migration/reset_merge_status_spec.rb370spec/views/projects/imports/new.html.haml_spec.rb371spec/lib/gitlab/utils/json_size_estimator_spec.rb372spec/helpers/projects/error_tracking_helper_spec.rb373spec/services/boards/create_service_spec.rb374spec/models/oauth_access_grant_spec.rb375spec/workers/update_container_registry_info_worker_spec.rb376spec/lib/gitlab/checks/push_file_count_check_spec.rb377spec/graphql/resolvers/group_issues_resolver_spec.rb378spec/helpers/time_helper_spec.rb379spec/lib/gitlab/app_text_logger_spec.rb380spec/lib/gitlab/ci/templates/managed_cluster_applications_gitlab_ci_yaml_spec.rb381spec/models/group_import_state_spec.rb382spec/services/clusters/aws/fetch_credentials_service_spec.rb383spec/finders/uploader_finder_spec.rb384spec/models/deployment_cluster_spec.rb385spec/helpers/ci/triggers_helper_spec.rb386spec/lib/gitlab/metrics/subscribers/action_cable_spec.rb387spec/tasks/config_lint_spec.rb388spec/finders/environments/environments_finder_spec.rb389spec/lib/gitlab/graphql/query_analyzers/logger_analyzer_spec.rb390spec/graphql/types/blob_viewers/type_enum_spec.rb391spec/views/layouts/_search.html.haml_spec.rb392spec/services/lfs/push_service_spec.rb393spec/lib/gitlab/sherlock/line_profiler_spec.rb394spec/lib/gitlab/grape_logging/loggers/exception_logger_spec.rb395spec/views/projects/blob/_viewer.html.haml_spec.rb396spec/lib/gitlab/database/similarity_score_spec.rb397spec/graphql/mutations/terraform/state/lock_spec.rb398spec/rubocop/cop/graphql/json_type_spec.rb399spec/models/application_setting/term_spec.rb400spec/lib/gitlab/dependency_linker/podfile_linker_spec.rb401spec/lib/gitlab/bullet_spec.rb402spec/lib/gitlab/language_detection_spec.rb403spec/lib/gitlab/git/pre_receive_error_spec.rb404spec/lib/gitlab/database/connection_timer_spec.rb405spec/lib/constraints/admin_constrainer_spec.rb406spec/services/note_summary_spec.rb407spec/graphql/resolvers/project_resolver_spec.rb408spec/lib/gitlab/exclusive_lease_helpers/sleeping_lock_spec.rb409spec/graphql/resolvers/project_jobs_resolver_spec.rb410spec/lib/quality/seeders/issues_spec.rb411spec/lib/gitlab/ci/pipeline/duration_spec.rb412spec/lib/gitlab/email/hook/smime_signature_interceptor_spec.rb413spec/workers/build_queue_worker_spec.rb414spec/uploaders/favicon_uploader_spec.rb415spec/workers/jira_connect/sync_feature_flags_worker_spec.rb416spec/lib/gitlab/cluster/lifecycle_events_spec.rb417spec/graphql/resolvers/release_resolver_spec.rb418spec/services/packages/debian/create_package_file_service_spec.rb419spec/serializers/merge_request_sidebar_basic_entity_spec.rb420spec/rubocop/cop/migration/complex_indexes_require_name_spec.rb421spec/lib/gitlab/octokit/middleware_spec.rb422spec/lib/gitlab/auth/saml/auth_hash_spec.rb423spec/lib/gitlab/database/pg_class_spec.rb424spec/views/shared/milestones/_top.html.haml_spec.rb425spec/serializers/feature_flag_entity_spec.rb426spec/models/concerns/optionally_search_spec.rb427spec/lib/banzai/filter/truncate_source_filter_spec.rb428spec/serializers/group_link/project_group_link_serializer_spec.rb429spec/support_specs/matchers/be_sorted_spec.rb430spec/lib/banzai/pipeline/emoji_pipeline_spec.rb431spec/models/blob_viewer/changelog_spec.rb432spec/lib/gitlab/checks/force_push_spec.rb433spec/lib/gitlab/graphql/negatable_arguments_spec.rb434spec/views/shared/ssh_keys/_key_details.html.haml_spec.rb435spec/lib/gitlab/config/entry/undefined_spec.rb436spec/workers/analytics/usage_trends/count_job_trigger_worker_spec.rb437spec/lib/gitlab/dependency_linker/parser/gemfile_spec.rb438spec/lib/atlassian/jira_connect/serializers/branch_entity_spec.rb439spec/views/notify/change_in_merge_request_draft_status_email.html.haml_spec.rb440spec/lib/gitlab/sql/glob_spec.rb441spec/services/resource_events/synthetic_milestone_notes_builder_service_spec.rb442spec/lib/gitlab/chat_spec.rb443spec/lib/gitlab/database/grant_spec.rb444spec/models/integrations/irker_spec.rb445spec/helpers/components_helper_spec.rb446spec/lib/gitlab/cross_project_access/class_methods_spec.rb447spec/lib/gitlab/sidekiq_middleware/size_limiter/server_spec.rb448spec/graphql/types/query_complexity_type_spec.rb449spec/initializers/cookies_serializer_spec.rb450spec/views/devise/shared/_signin_box.html.haml_spec.rb451spec/serializers/feature_flags_client_serializer_spec.rb452spec/lib/gitlab/usage/metrics/names_suggestions/relation_parsers/joins_spec.rb453spec/views/admin/application_settings/_repository_storage.html.haml_spec.rb454spec/graphql/types/ci/analytics_type_spec.rb455spec/graphql/resolvers/branch_commit_resolver_spec.rb456spec/graphql/types/user_callout_type_spec.rb457spec/graphql/types/blob_viewer_type_spec.rb458spec/lib/gitlab/diff/inline_diff_markdown_marker_spec.rb459spec/workers/ci_platform_metrics_update_cron_worker_spec.rb460spec/workers/environments/auto_stop_cron_worker_spec.rb461spec/lib/bitbucket/collection_spec.rb462spec/lib/gitlab/error_tracking/processor/context_payload_processor_spec.rb463spec/models/performance_monitoring/prometheus_metric_spec.rb464spec/lib/gitlab/asciidoc/html5_converter_spec.rb465spec/lib/gitlab/github_import/representation/expose_attribute_spec.rb466spec/rubocop/cop/group_public_or_visible_to_user_spec.rb467spec/models/protected_tag_spec.rb468spec/lib/gitlab/logging/cloudflare_helper_spec.rb469spec/lib/api/ci/helpers/runner_helpers_spec.rb470spec/lib/gitlab/ci/build/port_spec.rb471spec/lib/gitlab/database/consistency_spec.rb472spec/serializers/fork_namespace_serializer_spec.rb473Filter specs:474Running specs:475Running all node tests without filter476spec/lib/gitlab/relative_positioning/mover_spec.rb477spec/models/environment_spec.rb478spec/tasks/gitlab/backup_rake_spec.rb479spec/lib/gitlab/background_migration/fix_user_project_route_names_spec.rb480spec/services/notes/quick_actions_service_spec.rb481spec/lib/gitlab/background_migration/populate_canonical_emails_spec.rb482spec/lib/gitlab/graphql/pagination/keyset/connection_spec.rb483spec/lib/gitlab/background_migration/backfill_project_settings_spec.rb484spec/lib/gitlab/ci/templates/templates_spec.rb485spec/finders/notes_finder_spec.rb486spec/lib/gitlab/background_migration/set_merge_request_diff_files_count_spec.rb487spec/models/alert_management/alert_spec.rb488spec/lib/gitlab/background_migration/migrate_u2f_webauthn_spec.rb489spec/services/boards/lists/move_service_spec.rb490spec/lib/gitlab/user_access_spec.rb491spec/serializers/deployment_entity_spec.rb492spec/models/ci/ref_spec.rb493spec/services/issues/create_service_spec.rb494spec/helpers/emails_helper_spec.rb495spec/services/ci/update_build_queue_service_spec.rb496spec/policies/namespace/root_storage_statistics_policy_spec.rb497spec/helpers/users_helper_spec.rb498spec/lib/gitlab/data_builder/push_spec.rb499spec/helpers/avatars_helper_spec.rb500spec/models/integrations/microsoft_teams_spec.rb501spec/lib/gitlab/hashed_storage/migrator_spec.rb502spec/workers/issue_placement_worker_spec.rb503spec/lib/gitlab/usage_data_counters/hll_redis_counter_spec.rb504spec/models/incident_management/issuable_escalation_status_spec.rb505spec/lib/gitlab/middleware/read_only_spec.rb506spec/lib/gitlab/gfm/uploads_rewriter_spec.rb507spec/lib/banzai/filter/issuable_state_filter_spec.rb508spec/models/concerns/deprecated_assignee_spec.rb509spec/presenters/release_presenter_spec.rb510spec/models/concerns/project_api_compatibility_spec.rb511spec/models/releases/link_spec.rb512spec/services/ci/play_build_service_spec.rb513spec/lib/gitlab/i18n/po_linter_spec.rb514spec/graphql/mutations/issues/set_assignees_spec.rb515spec/lib/gitlab/user_access_snippet_spec.rb516spec/services/incident_management/incidents/create_service_spec.rb517spec/services/wiki_pages/update_service_spec.rb518spec/models/hooks/system_hook_spec.rb519spec/lib/gitlab/exclusive_lease_spec.rb520spec/services/award_emojis/destroy_service_spec.rb521spec/models/notification_setting_spec.rb522spec/models/onboarding_progress_spec.rb523spec/lib/gitlab/ci/build/prerequisite/kubernetes_namespace_spec.rb524spec/lib/gitlab/background_migration/migrate_project_taggings_context_from_tags_to_topics_spec.rb525spec/lib/banzai/filter/autolink_filter_spec.rb526spec/lib/gitlab/ci/pipeline/chain/validate/external_spec.rb527spec/lib/gitlab/object_hierarchy_spec.rb528spec/services/merge_requests/export_csv_service_spec.rb529spec/views/groups/show.html.haml_spec.rb530spec/services/merge_requests/assign_issues_service_spec.rb531spec/services/boards/lists/list_service_spec.rb532spec/models/alert_management/http_integration_spec.rb533spec/models/ci/freeze_period_status_spec.rb534spec/graphql/mutations/issues/set_severity_spec.rb535spec/lib/gitlab/ci/config/external/processor_spec.rb536spec/lib/gitlab/ci/pipeline/expression/lexeme/or_spec.rb537spec/workers/remove_expired_group_links_worker_spec.rb538spec/workers/new_issue_worker_spec.rb539spec/finders/projects/groups_finder_spec.rb540spec/lib/banzai/filter/math_filter_spec.rb541spec/lib/gitlab/graphql/pagination/externally_paginated_array_connection_spec.rb542spec/views/notify/pipeline_fixed_email.html.haml_spec.rb543spec/workers/container_expiration_policy_worker_spec.rb544spec/workers/ci/ref_delete_unlock_artifacts_worker_spec.rb545spec/lib/gitlab/access/branch_protection_spec.rb546spec/lib/gitlab/alert_management/payload/managed_prometheus_spec.rb547spec/graphql/types/query_type_spec.rb548spec/lib/gitlab/ci/pipeline_object_hierarchy_spec.rb549spec/lib/gitlab/instrumentation/redis_interceptor_spec.rb550spec/lib/gitlab/sidekiq_logging/structured_logger_spec.rb551spec/lib/gitlab/error_tracking/processor/sidekiq_processor_spec.rb552spec/lib/banzai/reference_parser/design_parser_spec.rb553spec/graphql/resolvers/issue_status_counts_resolver_spec.rb554spec/services/ci/delete_objects_service_spec.rb555spec/services/repositories/destroy_rollback_service_spec.rb556spec/graphql/resolvers/design_management/design_resolver_spec.rb557spec/lib/gitlab/database/rename_reserved_paths_migration/v1_spec.rb558spec/lib/gitlab/ci/pipeline/chain/limit/deployments_spec.rb559spec/services/metrics/dashboard/pod_dashboard_service_spec.rb560spec/services/authorized_project_update/project_recalculate_per_user_service_spec.rb561spec/services/packages/debian/extract_changes_metadata_service_spec.rb562spec/services/packages/debian/process_changes_service_spec.rb563spec/helpers/notify_helper_spec.rb564spec/lib/file_size_validator_spec.rb565spec/lib/gitlab/analytics/cycle_analytics/stage_events/issue_deployed_to_production_spec.rb566spec/lib/gitlab/checks/tag_check_spec.rb567spec/lib/gitlab/composer/cache_spec.rb568spec/models/incident_management/project_incident_management_setting_spec.rb569spec/models/concerns/has_environment_scope_spec.rb570spec/lib/gitlab/pagination/keyset/simple_order_builder_spec.rb571spec/finders/namespaces/projects_finder_spec.rb572spec/models/concerns/ignorable_columns_spec.rb573spec/models/packages/sem_ver_spec.rb574spec/models/integrations/slack_slash_commands_spec.rb575spec/models/projects/ci_feature_usage_spec.rb576spec/services/feature_flags/update_service_spec.rb577spec/models/ci/runner_project_spec.rb578spec/services/ci/run_scheduled_build_service_spec.rb579spec/lib/gitlab/ci/config/entry/allow_failure_spec.rb580spec/workers/authorized_project_update/user_refresh_over_user_range_worker_spec.rb581spec/lib/constraints/project_url_constrainer_spec.rb582spec/models/packages/debian/group_distribution_key_spec.rb583spec/workers/design_management/copy_design_collection_worker_spec.rb584spec/lib/gitlab/usage/metrics/instrumentations/generic_metric_spec.rb585spec/lib/gitlab/gitaly_client/storage_settings_spec.rb586spec/models/web_ide_terminal_spec.rb587spec/lib/gitlab/ci/build/step_spec.rb588spec/services/projects/container_repository/gitlab/delete_tags_service_spec.rb589spec/lib/gitlab/legacy_github_import/milestone_formatter_spec.rb590spec/services/users/update_service_spec.rb591spec/lib/sidebars/projects/menus/project_information_menu_spec.rb592spec/lib/bulk_imports/groups/transformers/group_attributes_transformer_spec.rb593spec/workers/rebase_worker_spec.rb594spec/models/dependency_proxy/registry_spec.rb595spec/services/alert_management/http_integrations/create_service_spec.rb596spec/graphql/types/untrusted_regexp_spec.rb597spec/lib/gitlab/import_export/uploads_saver_spec.rb598spec/lib/gitlab/alert_management/payload_spec.rb599spec/lib/gitlab/ci/pipeline/expression/lexeme/variable_spec.rb600spec/helpers/import_helper_spec.rb601spec/helpers/x509_helper_spec.rb602spec/services/packages/helm/process_file_service_spec.rb603spec/workers/project_cache_worker_spec.rb604spec/lib/gitlab/github_import/importer/notes_importer_spec.rb605spec/services/ci/create_pipeline_service/environment_spec.rb606spec/graphql/mutations/merge_requests/set_subscription_spec.rb607spec/tasks/gitlab/password_rake_spec.rb608spec/workers/jira_connect/sync_deployments_worker_spec.rb609spec/graphql/resolvers/users/group_count_resolver_spec.rb610spec/graphql/mutations/ci/runner/update_spec.rb611spec/lib/gitlab/phabricator_import/representation/task_spec.rb612spec/workers/create_note_diff_file_worker_spec.rb613spec/lib/gitlab/kubernetes/rollout_instances_spec.rb614spec/serializers/diff_file_metadata_entity_spec.rb615spec/services/incident_management/pager_duty/process_webhook_service_spec.rb616spec/lib/gitlab/http_connection_adapter_spec.rb617spec/models/pages/virtual_domain_spec.rb618spec/presenters/ci/pipeline_artifacts/code_coverage_presenter_spec.rb619spec/services/concerns/merge_requests/assigns_merge_params_spec.rb620spec/lib/gitlab/background_migration/reset_merge_status_spec.rb621spec/views/projects/imports/new.html.haml_spec.rb622spec/lib/gitlab/utils/json_size_estimator_spec.rb623spec/helpers/projects/error_tracking_helper_spec.rb624spec/services/boards/create_service_spec.rb625spec/models/oauth_access_grant_spec.rb626spec/workers/update_container_registry_info_worker_spec.rb627spec/lib/gitlab/checks/push_file_count_check_spec.rb628spec/graphql/resolvers/group_issues_resolver_spec.rb629spec/helpers/time_helper_spec.rb630spec/lib/gitlab/app_text_logger_spec.rb631spec/lib/gitlab/ci/templates/managed_cluster_applications_gitlab_ci_yaml_spec.rb632spec/models/group_import_state_spec.rb633spec/services/clusters/aws/fetch_credentials_service_spec.rb634spec/finders/uploader_finder_spec.rb635spec/models/deployment_cluster_spec.rb636spec/helpers/ci/triggers_helper_spec.rb637spec/lib/gitlab/metrics/subscribers/action_cable_spec.rb638spec/tasks/config_lint_spec.rb639spec/finders/environments/environments_finder_spec.rb640spec/lib/gitlab/graphql/query_analyzers/logger_analyzer_spec.rb641spec/graphql/types/blob_viewers/type_enum_spec.rb642spec/views/layouts/_search.html.haml_spec.rb643spec/services/lfs/push_service_spec.rb644spec/lib/gitlab/sherlock/line_profiler_spec.rb645spec/lib/gitlab/grape_logging/loggers/exception_logger_spec.rb646spec/views/projects/blob/_viewer.html.haml_spec.rb647spec/lib/gitlab/database/similarity_score_spec.rb648spec/graphql/mutations/terraform/state/lock_spec.rb649spec/rubocop/cop/graphql/json_type_spec.rb650spec/models/application_setting/term_spec.rb651spec/lib/gitlab/dependency_linker/podfile_linker_spec.rb652spec/lib/gitlab/bullet_spec.rb653spec/lib/gitlab/language_detection_spec.rb654spec/lib/gitlab/git/pre_receive_error_spec.rb655spec/lib/gitlab/database/connection_timer_spec.rb656spec/lib/constraints/admin_constrainer_spec.rb657spec/services/note_summary_spec.rb658spec/graphql/resolvers/project_resolver_spec.rb659spec/lib/gitlab/exclusive_lease_helpers/sleeping_lock_spec.rb660spec/graphql/resolvers/project_jobs_resolver_spec.rb661spec/lib/quality/seeders/issues_spec.rb662spec/lib/gitlab/ci/pipeline/duration_spec.rb663spec/lib/gitlab/email/hook/smime_signature_interceptor_spec.rb664spec/workers/build_queue_worker_spec.rb665spec/uploaders/favicon_uploader_spec.rb666spec/workers/jira_connect/sync_feature_flags_worker_spec.rb667spec/lib/gitlab/cluster/lifecycle_events_spec.rb668spec/graphql/resolvers/release_resolver_spec.rb669spec/services/packages/debian/create_package_file_service_spec.rb670spec/serializers/merge_request_sidebar_basic_entity_spec.rb671spec/rubocop/cop/migration/complex_indexes_require_name_spec.rb672spec/lib/gitlab/octokit/middleware_spec.rb673spec/lib/gitlab/auth/saml/auth_hash_spec.rb674spec/lib/gitlab/database/pg_class_spec.rb675spec/views/shared/milestones/_top.html.haml_spec.rb676spec/serializers/feature_flag_entity_spec.rb677spec/models/concerns/optionally_search_spec.rb678spec/lib/banzai/filter/truncate_source_filter_spec.rb679spec/serializers/group_link/project_group_link_serializer_spec.rb680spec/support_specs/matchers/be_sorted_spec.rb681spec/lib/banzai/pipeline/emoji_pipeline_spec.rb682spec/models/blob_viewer/changelog_spec.rb683spec/lib/gitlab/checks/force_push_spec.rb684spec/lib/gitlab/graphql/negatable_arguments_spec.rb685spec/views/shared/ssh_keys/_key_details.html.haml_spec.rb686spec/lib/gitlab/config/entry/undefined_spec.rb687spec/workers/analytics/usage_trends/count_job_trigger_worker_spec.rb688spec/lib/gitlab/dependency_linker/parser/gemfile_spec.rb689spec/lib/atlassian/jira_connect/serializers/branch_entity_spec.rb690spec/views/notify/change_in_merge_request_draft_status_email.html.haml_spec.rb691spec/lib/gitlab/sql/glob_spec.rb692spec/services/resource_events/synthetic_milestone_notes_builder_service_spec.rb693spec/lib/gitlab/chat_spec.rb694spec/lib/gitlab/database/grant_spec.rb695spec/models/integrations/irker_spec.rb696spec/helpers/components_helper_spec.rb697spec/lib/gitlab/cross_project_access/class_methods_spec.rb698spec/lib/gitlab/sidekiq_middleware/size_limiter/server_spec.rbKnapsack report generator started!699Run options: exclude {:quarantine=>true, :geo=>true, :level=>"migration"}700==> /builds/gitlab-org/gitlab/tmp/tests/gitlab-test_bare set up in 0.051959926 seconds...701Test environment set up in 0.774503486 seconds702Gitlab::RelativePositioning::Mover703 #move_to_end704 all positions are taken705 raises an error when placing a new item706 index: 0707 behaves like able to move existing items to the end708 can move any existing item709 index: 1710 behaves like able to move existing items to the end711 can move any existing item712 index: 2713 behaves like able to move existing items to the end714 can move any existing item715 index: 3716 behaves like able to move existing items to the end717 can move any existing item718 index: 4719 behaves like able to move existing items to the end720 can move any existing item721 there are no siblings722 behaves like able to place a new item at the end723 can place any new item724 there is only one sibling725 pos: 101726 behaves like able to place a new item at the end727 can place any new item728 behaves like able to move existing items to the end729 can move any existing item730 pos: 102731 behaves like able to place a new item at the end732 can place any new item733 behaves like able to move existing items to the end734 can move any existing item735 pos: 103736 behaves like able to place a new item at the end737 can place any new item738 behaves like able to move existing items to the end739 can move any existing item740 pos: 104741 behaves like able to place a new item at the end742 can place any new item743 behaves like able to move existing items to the end744 can move any existing item745 pos: 105746 behaves like able to place a new item at the end747 can place any new item748 behaves like able to move existing items to the end749 can move any existing item750 at least one position is free751 free_space: 101, index: 0752 behaves like able to place a new item at the end753 can place any new item754 behaves like able to move existing items to the end755 can move any existing item756 free_space: 101, index: 1757 behaves like able to place a new item at the end758 can place any new item759 behaves like able to move existing items to the end760 can move any existing item761 free_space: 101, index: 2762 behaves like able to place a new item at the end763 can place any new item764 behaves like able to move existing items to the end765 can move any existing item766 free_space: 101, index: 3767 behaves like able to place a new item at the end768 can place any new item769 behaves like able to move existing items to the end770 can move any existing item771 free_space: 102, index: 0772 behaves like able to place a new item at the end773 can place any new item774 behaves like able to move existing items to the end775 can move any existing item776 free_space: 102, index: 1777 behaves like able to place a new item at the end778 can place any new item779 behaves like able to move existing items to the end780 can move any existing item781 free_space: 102, index: 2782 behaves like able to place a new item at the end783 can place any new item784 behaves like able to move existing items to the end785 can move any existing item786 free_space: 102, index: 3787 behaves like able to place a new item at the end788 can place any new item789 behaves like able to move existing items to the end790 can move any existing item791 free_space: 103, index: 0792 behaves like able to place a new item at the end793 can place any new item794 behaves like able to move existing items to the end795 can move any existing item796 free_space: 103, index: 1797 behaves like able to place a new item at the end798 can place any new item799 behaves like able to move existing items to the end800 can move any existing item801 free_space: 103, index: 2802 behaves like able to place a new item at the end803 can place any new item804 behaves like able to move existing items to the end805 can move any existing item806 free_space: 103, index: 3807 behaves like able to place a new item at the end808 can place any new item809 behaves like able to move existing items to the end810 can move any existing item811 free_space: 104, index: 0812 behaves like able to place a new item at the end813 can place any new item814 behaves like able to move existing items to the end815 can move any existing item816 free_space: 104, index: 1817 behaves like able to place a new item at the end818 can place any new item819 behaves like able to move existing items to the end820 can move any existing item821 free_space: 104, index: 2822 behaves like able to place a new item at the end823 can place any new item824 behaves like able to move existing items to the end825 can move any existing item826 free_space: 104, index: 3827 behaves like able to place a new item at the end828 can place any new item829 behaves like able to move existing items to the end830 can move any existing item831 free_space: 105, index: 0832 behaves like able to place a new item at the end833 can place any new item834 behaves like able to move existing items to the end835 can move any existing item836 free_space: 105, index: 1837 behaves like able to place a new item at the end838 can place any new item839 behaves like able to move existing items to the end840 can move any existing item841 free_space: 105, index: 2842 behaves like able to place a new item at the end843 can place any new item844 behaves like able to move existing items to the end845 can move any existing item846 free_space: 105, index: 3847 behaves like able to place a new item at the end848 can place any new item849 behaves like able to move existing items to the end850 can move any existing item851 #move_to_start852 all positions are taken853 raises an error when placing a new item854 index: 0855 behaves like able to move existing items to the start856 can move any existing item857 index: 1858 behaves like able to move existing items to the start859 can move any existing item860 index: 2861 behaves like able to move existing items to the start862 can move any existing item863 index: 3864 behaves like able to move existing items to the start865 can move any existing item866 index: 4867 behaves like able to move existing items to the start868 can move any existing item869 there are no siblings870 behaves like able to place a new item at the start871 can place any new item872 there is only one sibling873 pos: 101874 behaves like able to place a new item at the start875 can place any new item876 behaves like able to move existing items to the start877 can move any existing item878 pos: 102879 behaves like able to place a new item at the start880 can place any new item881 behaves like able to move existing items to the start882 can move any existing item883 pos: 103884 behaves like able to place a new item at the start885 can place any new item886 behaves like able to move existing items to the start887 can move any existing item888 pos: 104889 behaves like able to place a new item at the start890 can place any new item891 behaves like able to move existing items to the start892 can move any existing item893 pos: 105894 behaves like able to place a new item at the start895 can place any new item896 behaves like able to move existing items to the start897 can move any existing item898 at least one position is free899 free_space: 101, index: 0900 behaves like able to place a new item at the start901 can place any new item902 behaves like able to move existing items to the start903 can move any existing item904 free_space: 101, index: 1905 behaves like able to place a new item at the start906 can place any new item907 behaves like able to move existing items to the start908 can move any existing item909 free_space: 101, index: 2910 behaves like able to place a new item at the start911 can place any new item912 behaves like able to move existing items to the start913 can move any existing item914 free_space: 101, index: 3915 behaves like able to place a new item at the start916 can place any new item917 behaves like able to move existing items to the start918 can move any existing item919 free_space: 102, index: 0920 behaves like able to place a new item at the start921 can place any new item922 behaves like able to move existing items to the start923 can move any existing item924 free_space: 102, index: 1925 behaves like able to place a new item at the start926 can place any new item927 behaves like able to move existing items to the start928 can move any existing item929 free_space: 102, index: 2930 behaves like able to place a new item at the start931 can place any new item932 behaves like able to move existing items to the start933 can move any existing item934 free_space: 102, index: 3935 behaves like able to place a new item at the start936 can place any new item937 behaves like able to move existing items to the start938 can move any existing item939 free_space: 103, index: 0940 behaves like able to place a new item at the start941 can place any new item942 behaves like able to move existing items to the start943 can move any existing item944 free_space: 103, index: 1945 behaves like able to place a new item at the start946 can place any new item947 behaves like able to move existing items to the start948 can move any existing item949 free_space: 103, index: 2950 behaves like able to place a new item at the start951 can place any new item952 behaves like able to move existing items to the start953 can move any existing item954 free_space: 103, index: 3955 behaves like able to place a new item at the start956 can place any new item957 behaves like able to move existing items to the start958 can move any existing item959 free_space: 104, index: 0960 behaves like able to place a new item at the start961 can place any new item962 behaves like able to move existing items to the start963 can move any existing item964 free_space: 104, index: 1965 behaves like able to place a new item at the start966 can place any new item967 behaves like able to move existing items to the start968 can move any existing item969 free_space: 104, index: 2970 behaves like able to place a new item at the start971 can place any new item972 behaves like able to move existing items to the start973 can move any existing item974 free_space: 104, index: 3975 behaves like able to place a new item at the start976 can place any new item977 behaves like able to move existing items to the start978 can move any existing item979 free_space: 105, index: 0980 behaves like able to place a new item at the start981 can place any new item982 behaves like able to move existing items to the start983 can move any existing item984 free_space: 105, index: 1985 behaves like able to place a new item at the start986 can place any new item987 behaves like able to move existing items to the start988 can move any existing item989 free_space: 105, index: 2990 behaves like able to place a new item at the start991 can place any new item992 behaves like able to move existing items to the start993 can move any existing item994 free_space: 105, index: 3995 behaves like able to place a new item at the start996 can place any new item997 behaves like able to move existing items to the start998 can move any existing item999 #move1000 all positions are taken1001 idx_a: 0, idx_b: 11002 raises an error when placing a new item anywhere1003 index: 01004 behaves like able to move an existing item1005 can place any item betwen two others1006 can place any item after another1007 can place any item before another1008 index: 11009 behaves like able to move an existing item1010 can place any item betwen two others1011 can place any item after another1012 can place any item before another1013 index: 21014 behaves like able to move an existing item1015 can place any item betwen two others1016 can place any item after another1017 can place any item before another1018 index: 31019 behaves like able to move an existing item1020 can place any item betwen two others1021 can place any item after another1022 can place any item before another1023 index: 41024 behaves like able to move an existing item1025 can place any item betwen two others1026 can place any item after another1027 can place any item before another1028 idx_a: 0, idx_b: 21029 raises an error when placing a new item anywhere1030 index: 01031 behaves like able to move an existing item1032 can place any item betwen two others1033 can place any item after another1034 can place any item before another1035 index: 11036 behaves like able to move an existing item1037 can place any item betwen two others1038 can place any item after another1039 can place any item before another1040 index: 21041 behaves like able to move an existing item1042 can place any item betwen two others1043 can place any item after another1044 can place any item before another1045 index: 31046 behaves like able to move an existing item1047 can place any item betwen two others1048 can place any item after another1049 can place any item before another1050 index: 41051 behaves like able to move an existing item1052 can place any item betwen two others1053 can place any item after another1054 can place any item before another1055 idx_a: 0, idx_b: 31056 raises an error when placing a new item anywhere1057 index: 01058 behaves like able to move an existing item1059 can place any item betwen two others1060 can place any item after another1061 can place any item before another1062 index: 11063 behaves like able to move an existing item1064 can place any item betwen two others1065 can place any item after another1066 can place any item before another1067 index: 21068 behaves like able to move an existing item1069 can place any item betwen two others1070 can place any item after another1071 can place any item before another1072 index: 31073 behaves like able to move an existing item1074 can place any item betwen two others1075 can place any item after another1076 can place any item before another1077 index: 41078 behaves like able to move an existing item1079 can place any item betwen two others1080 can place any item after another1081 can place any item before another1082 idx_a: 0, idx_b: 41083 raises an error when placing a new item anywhere1084 index: 01085 behaves like able to move an existing item1086 can place any item betwen two others1087 can place any item after another1088 can place any item before another1089 index: 11090 behaves like able to move an existing item1091 can place any item betwen two others1092 can place any item after another1093 can place any item before another1094 index: 21095 behaves like able to move an existing item1096 can place any item betwen two others1097 can place any item after another1098 can place any item before another1099 index: 31100 behaves like able to move an existing item1101 can place any item betwen two others1102 can place any item after another1103 can place any item before another1104 index: 41105 behaves like able to move an existing item1106 can place any item betwen two others1107 can place any item after another1108 can place any item before another1109 idx_a: 1, idx_b: 21110 raises an error when placing a new item anywhere1111 index: 01112 behaves like able to move an existing item1113 can place any item betwen two others1114 can place any item after another1115 can place any item before another1116 index: 11117 behaves like able to move an existing item1118 can place any item betwen two others1119 can place any item after another1120 can place any item before another1121 index: 21122 behaves like able to move an existing item1123 can place any item betwen two others1124 can place any item after another1125 can place any item before another1126 index: 31127 behaves like able to move an existing item1128 can place any item betwen two others1129 can place any item after another1130 can place any item before another1131 index: 41132 behaves like able to move an existing item1133 can place any item betwen two others1134 can place any item after another1135 can place any item before another1136 idx_a: 1, idx_b: 31137 raises an error when placing a new item anywhere1138 index: 01139 behaves like able to move an existing item1140 can place any item betwen two others1141 can place any item after another1142 can place any item before another1143 index: 11144 behaves like able to move an existing item1145 can place any item betwen two others1146 can place any item after another1147 can place any item before another1148 index: 21149 behaves like able to move an existing item1150 can place any item betwen two others1151 can place any item after another1152 can place any item before another1153 index: 31154 behaves like able to move an existing item1155 can place any item betwen two others1156 can place any item after another1157 can place any item before another1158 index: 41159 behaves like able to move an existing item1160 can place any item betwen two others1161 can place any item after another1162 can place any item before another1163 idx_a: 1, idx_b: 41164 raises an error when placing a new item anywhere1165 index: 01166 behaves like able to move an existing item1167 can place any item betwen two others1168 can place any item after another1169 can place any item before another1170 index: 11171 behaves like able to move an existing item1172 can place any item betwen two others1173 can place any item after another1174 can place any item before another1175 index: 21176 behaves like able to move an existing item1177 can place any item betwen two others1178 can place any item after another1179 can place any item before another1180 index: 31181 behaves like able to move an existing item1182 can place any item betwen two others1183 can place any item after another1184 can place any item before another1185 index: 41186 behaves like able to move an existing item1187 can place any item betwen two others1188 can place any item after another1189 can place any item before another1190 idx_a: 2, idx_b: 31191 raises an error when placing a new item anywhere1192 index: 01193 behaves like able to move an existing item1194 can place any item betwen two others1195 can place any item after another1196 can place any item before another1197 index: 11198 behaves like able to move an existing item1199 can place any item betwen two others1200 can place any item after another1201 can place any item before another1202 index: 21203 behaves like able to move an existing item1204 can place any item betwen two others1205 can place any item after another1206 can place any item before another1207 index: 31208 behaves like able to move an existing item1209 can place any item betwen two others1210 can place any item after another1211 can place any item before another1212 index: 41213 behaves like able to move an existing item1214 can place any item betwen two others1215 can place any item after another1216 can place any item before another1217 idx_a: 2, idx_b: 41218 raises an error when placing a new item anywhere1219 index: 01220 behaves like able to move an existing item1221 can place any item betwen two others1222 can place any item after another1223 can place any item before another1224 index: 11225 behaves like able to move an existing item1226 can place any item betwen two others1227 can place any item after another1228 can place any item before another1229 index: 21230 behaves like able to move an existing item1231 can place any item betwen two others1232 can place any item after another1233 can place any item before another1234 index: 31235 behaves like able to move an existing item1236 can place any item betwen two others1237 can place any item after another1238 can place any item before another1239 index: 41240 behaves like able to move an existing item1241 can place any item betwen two others1242 can place any item after another1243 can place any item before another1244 idx_a: 3, idx_b: 41245 raises an error when placing a new item anywhere1246 index: 01247 behaves like able to move an existing item1248 can place any item betwen two others1249 can place any item after another1250 can place any item before another1251 index: 11252 behaves like able to move an existing item1253 can place any item betwen two others1254 can place any item after another1255 can place any item before another1256 index: 21257 behaves like able to move an existing item1258 can place any item betwen two others1259 can place any item after another1260 can place any item before another1261 index: 31262 behaves like able to move an existing item1263 can place any item betwen two others1264 can place any item after another1265 can place any item before another1266 index: 41267 behaves like able to move an existing item1268 can place any item betwen two others1269 can place any item after another1270 can place any item before another1271 there are no siblings1272 raises an ArgumentError when both first and last are nil1273 there are a couple of siblings1274 pos_movable: 101, pos_a: 102, pos_b: 1031275 behaves like able to move a new item1276 can place any new item betwen two others1277 can place any new item after another1278 can place any new item before another1279 behaves like able to move an existing item1280 can place any item betwen two others1281 can place any item after another1282 can place any item before another1283 pos_movable: 101, pos_a: 102, pos_b: 1041284 behaves like able to move a new item1285 can place any new item betwen two others1286 can place any new item after another1287 can place any new item before another1288 behaves like able to move an existing item1289 can place any item betwen two others1290 can place any item after another1291 can place any item before another1292 pos_movable: 101, pos_a: 102, pos_b: 1051293 behaves like able to move a new item1294 can place any new item betwen two others1295 can place any new item after another1296 can place any new item before another1297 behaves like able to move an existing item1298 can place any item betwen two others1299 can place any item after another1300 can place any item before another1301 pos_movable: 101, pos_a: 103, pos_b: 1041302 behaves like able to move a new item1303 can place any new item betwen two others1304 can place any new item after another1305 can place any new item before another1306 behaves like able to move an existing item1307 can place any item betwen two others1308 can place any item after another1309 can place any item before another1310 pos_movable: 101, pos_a: 103, pos_b: 1051311 behaves like able to move a new item1312 can place any new item betwen two others1313 can place any new item after another1314 can place any new item before another1315 behaves like able to move an existing item1316 can place any item betwen two others1317 can place any item after another1318 can place any item before another1319 pos_movable: 101, pos_a: 104, pos_b: 1051320 behaves like able to move a new item1321 can place any new item betwen two others1322 can place any new item after another1323 can place any new item before another1324 behaves like able to move an existing item1325 can place any item betwen two others1326 can place any item after another1327 can place any item before another1328 pos_movable: 102, pos_a: 101, pos_b: 1031329 behaves like able to move a new item1330 can place any new item betwen two others1331 can place any new item after another1332 can place any new item before another1333 behaves like able to move an existing item1334 can place any item betwen two others1335 can place any item after another1336 can place any item before another1337 pos_movable: 102, pos_a: 101, pos_b: 1041338 behaves like able to move a new item1339 can place any new item betwen two others1340 can place any new item after another1341 can place any new item before another1342 behaves like able to move an existing item1343 can place any item betwen two others1344 can place any item after another1345 can place any item before another1346 pos_movable: 102, pos_a: 101, pos_b: 1051347 behaves like able to move a new item1348 can place any new item betwen two others1349 can place any new item after another1350 can place any new item before another1351 behaves like able to move an existing item1352 can place any item betwen two others1353 can place any item after another1354 can place any item before another1355 pos_movable: 102, pos_a: 103, pos_b: 1041356 behaves like able to move a new item1357 can place any new item betwen two others1358 can place any new item after another1359 can place any new item before another1360 behaves like able to move an existing item1361 can place any item betwen two others1362 can place any item after another1363 can place any item before another1364 pos_movable: 102, pos_a: 103, pos_b: 1051365 behaves like able to move a new item1366 can place any new item betwen two others1367 can place any new item after another1368 can place any new item before another1369 behaves like able to move an existing item1370 can place any item betwen two others1371 can place any item after another1372 can place any item before another1373 pos_movable: 102, pos_a: 104, pos_b: 1051374 behaves like able to move a new item1375 can place any new item betwen two others1376 can place any new item after another1377 can place any new item before another1378 behaves like able to move an existing item1379 can place any item betwen two others1380 can place any item after another1381 can place any item before another1382 pos_movable: 103, pos_a: 101, pos_b: 1021383 behaves like able to move a new item1384 can place any new item betwen two others1385 can place any new item after another1386 can place any new item before another1387 behaves like able to move an existing item1388 can place any item betwen two others1389 can place any item after another1390 can place any item before another1391 pos_movable: 103, pos_a: 101, pos_b: 1041392 behaves like able to move a new item1393 can place any new item betwen two others1394 can place any new item after another1395 can place any new item before another1396 behaves like able to move an existing item1397 can place any item betwen two others1398 can place any item after another1399 can place any item before another1400 pos_movable: 103, pos_a: 101, pos_b: 1051401 behaves like able to move a new item1402 can place any new item betwen two others1403 can place any new item after another1404 can place any new item before another1405 behaves like able to move an existing item1406 can place any item betwen two others1407 can place any item after another1408 can place any item before another1409 pos_movable: 103, pos_a: 102, pos_b: 1041410 behaves like able to move a new item1411 can place any new item betwen two others1412 can place any new item after another1413 can place any new item before another1414 behaves like able to move an existing item1415 can place any item betwen two others1416 can place any item after another1417 can place any item before another1418 pos_movable: 103, pos_a: 102, pos_b: 1051419 behaves like able to move a new item1420 can place any new item betwen two others1421 can place any new item after another1422 can place any new item before another1423 behaves like able to move an existing item1424 can place any item betwen two others1425 can place any item after another1426 can place any item before another1427 pos_movable: 103, pos_a: 104, pos_b: 1051428 behaves like able to move a new item1429 can place any new item betwen two others1430 can place any new item after another1431 can place any new item before another1432 behaves like able to move an existing item1433 can place any item betwen two others1434 can place any item after another1435 can place any item before another1436 pos_movable: 104, pos_a: 101, pos_b: 1021437 behaves like able to move a new item1438 can place any new item betwen two others1439 can place any new item after another1440 can place any new item before another1441 behaves like able to move an existing item1442 can place any item betwen two others1443 can place any item after another1444 can place any item before another1445 pos_movable: 104, pos_a: 101, pos_b: 1031446 behaves like able to move a new item1447 can place any new item betwen two others1448 can place any new item after another1449 can place any new item before another1450 behaves like able to move an existing item1451 can place any item betwen two others1452 can place any item after another1453 can place any item before another1454 pos_movable: 104, pos_a: 101, pos_b: 1051455 behaves like able to move a new item1456 can place any new item betwen two others1457 can place any new item after another1458 can place any new item before another1459 behaves like able to move an existing item1460 can place any item betwen two others1461 can place any item after another1462 can place any item before another1463 pos_movable: 104, pos_a: 102, pos_b: 1031464 behaves like able to move a new item1465 can place any new item betwen two others1466 can place any new item after another1467 can place any new item before another1468 behaves like able to move an existing item1469 can place any item betwen two others1470 can place any item after another1471 can place any item before another1472 pos_movable: 104, pos_a: 102, pos_b: 1051473 behaves like able to move a new item1474 can place any new item betwen two others1475 can place any new item after another1476 can place any new item before another1477 behaves like able to move an existing item1478 can place any item betwen two others1479 can place any item after another1480 can place any item before another1481 pos_movable: 104, pos_a: 103, pos_b: 1051482 behaves like able to move a new item1483 can place any new item betwen two others1484 can place any new item after another1485 can place any new item before another1486 behaves like able to move an existing item1487 can place any item betwen two others1488 can place any item after another1489 can place any item before another1490 pos_movable: 105, pos_a: 101, pos_b: 1021491 behaves like able to move a new item1492 can place any new item betwen two others1493 can place any new item after another1494 can place any new item before another1495 behaves like able to move an existing item1496 can place any item betwen two others1497 can place any item after another1498 can place any item before another1499 pos_movable: 105, pos_a: 101, pos_b: 1031500 behaves like able to move a new item1501 can place any new item betwen two others1502 can place any new item after another1503 can place any new item before another1504 behaves like able to move an existing item1505 can place any item betwen two others1506 can place any item after another1507 can place any item before another1508 pos_movable: 105, pos_a: 101, pos_b: 1041509 behaves like able to move a new item1510 can place any new item betwen two others1511 can place any new item after another1512 can place any new item before another1513 behaves like able to move an existing item1514 can place any item betwen two others1515 can place any item after another1516 can place any item before another1517 pos_movable: 105, pos_a: 102, pos_b: 1031518 behaves like able to move a new item1519 can place any new item betwen two others1520 can place any new item after another1521 can place any new item before another1522 behaves like able to move an existing item1523 can place any item betwen two others1524 can place any item after another1525 can place any item before another1526 pos_movable: 105, pos_a: 102, pos_b: 1041527 behaves like able to move a new item1528 can place any new item betwen two others1529 can place any new item after another1530 can place any new item before another1531 behaves like able to move an existing item1532 can place any item betwen two others1533 can place any item after another1534 can place any item before another1535 pos_movable: 105, pos_a: 103, pos_b: 1041536 behaves like able to move a new item1537 can place any new item betwen two others1538 can place any new item after another1539 can place any new item before another1540 behaves like able to move an existing item1541 can place any item betwen two others1542 can place any item after another1543 can place any item before another1544 at least one position is free1545 free_space: 101, index: 3, pos_a: 2, pos_b: 31546 behaves like able to move a new item1547 can place any new item betwen two others1548 can place any new item after another1549 can place any new item before another1550 behaves like able to move an existing item1551 can place any item betwen two others1552 can place any item after another1553 can place any item before another1554 free_space: 101, index: 3, pos_a: 1, pos_b: 31555 behaves like able to move a new item1556 can place any new item betwen two others1557 can place any new item after another1558 can place any new item before another1559 behaves like able to move an existing item1560 can place any item betwen two others1561 can place any item after another1562 can place any item before another1563 free_space: 101, index: 3, pos_a: 1, pos_b: 21564 behaves like able to move a new item1565 can place any new item betwen two others1566 can place any new item after another1567 can place any new item before another1568 behaves like able to move an existing item1569 can place any item betwen two others1570 can place any item after another1571 can place any item before another1572 free_space: 101, index: 3, pos_a: 0, pos_b: 31573 behaves like able to move a new item1574 can place any new item betwen two others1575 can place any new item after another1576 can place any new item before another1577 behaves like able to move an existing item1578 can place any item betwen two others1579 can place any item after another1580 can place any item before another1581 free_space: 101, index: 3, pos_a: 0, pos_b: 21582 behaves like able to move a new item1583 can place any new item betwen two others1584 can place any new item after another1585 can place any new item before another1586 behaves like able to move an existing item1587 can place any item betwen two others1588 can place any item after another1589 can place any item before another1590 free_space: 101, index: 3, pos_a: 0, pos_b: 11591 behaves like able to move a new item1592 can place any new item betwen two others1593 can place any new item after another1594 can place any new item before another1595 behaves like able to move an existing item1596 can place any item betwen two others1597 can place any item after another1598 can place any item before another1599 free_space: 101, index: 2, pos_a: 2, pos_b: 31600 behaves like able to move a new item1601 can place any new item betwen two others1602 can place any new item after another1603 can place any new item before another1604 behaves like able to move an existing item1605 can place any item betwen two others1606 can place any item after another1607 can place any item before another1608 free_space: 101, index: 2, pos_a: 1, pos_b: 31609 behaves like able to move a new item1610 can place any new item betwen two others1611 can place any new item after another1612 can place any new item before another1613 behaves like able to move an existing item1614 can place any item betwen two others1615 can place any item after another1616 can place any item before another1617 free_space: 101, index: 2, pos_a: 1, pos_b: 21618 behaves like able to move a new item1619 can place any new item betwen two others1620 can place any new item after another1621 can place any new item before another1622 behaves like able to move an existing item1623 can place any item betwen two others1624 can place any item after another1625 can place any item before another1626 free_space: 101, index: 2, pos_a: 0, pos_b: 31627 behaves like able to move a new item1628 can place any new item betwen two others1629 can place any new item after another1630 can place any new item before another1631 behaves like able to move an existing item1632 can place any item betwen two others1633 can place any item after another1634 can place any item before another1635 free_space: 101, index: 2, pos_a: 0, pos_b: 21636 behaves like able to move a new item1637 can place any new item betwen two others1638 can place any new item after another1639 can place any new item before another1640 behaves like able to move an existing item1641 can place any item betwen two others1642 can place any item after another1643 can place any item before another1644 free_space: 101, index: 2, pos_a: 0, pos_b: 11645 behaves like able to move a new item1646 can place any new item betwen two others1647 can place any new item after another1648 can place any new item before another1649 behaves like able to move an existing item1650 can place any item betwen two others1651 can place any item after another1652 can place any item before another1653 free_space: 101, index: 1, pos_a: 2, pos_b: 31654 behaves like able to move a new item1655 can place any new item betwen two others1656 can place any new item after another1657 can place any new item before another1658 behaves like able to move an existing item1659 can place any item betwen two others1660 can place any item after another1661 can place any item before another1662 free_space: 101, index: 1, pos_a: 1, pos_b: 31663 behaves like able to move a new item1664 can place any new item betwen two others1665 can place any new item after another1666 can place any new item before another1667 behaves like able to move an existing item1668 can place any item betwen two others1669 can place any item after another1670 can place any item before another1671 free_space: 101, index: 1, pos_a: 1, pos_b: 21672 behaves like able to move a new item1673 can place any new item betwen two others1674 can place any new item after another1675 can place any new item before another1676 behaves like able to move an existing item1677 can place any item betwen two others1678 can place any item after another1679 can place any item before another1680 free_space: 101, index: 1, pos_a: 0, pos_b: 31681 behaves like able to move a new item1682 can place any new item betwen two others1683 can place any new item after another1684 can place any new item before another1685 behaves like able to move an existing item1686 can place any item betwen two others1687 can place any item after another1688 can place any item before another1689 free_space: 101, index: 1, pos_a: 0, pos_b: 21690 behaves like able to move a new item1691 can place any new item betwen two others1692 can place any new item after another1693 can place any new item before another1694 behaves like able to move an existing item1695 can place any item betwen two others1696 can place any item after another1697 can place any item before another1698 free_space: 101, index: 1, pos_a: 0, pos_b: 11699 behaves like able to move a new item1700 can place any new item betwen two others1701 can place any new item after another1702 can place any new item before another1703 behaves like able to move an existing item1704 can place any item betwen two others1705 can place any item after another1706 can place any item before another1707 free_space: 101, index: 0, pos_a: 2, pos_b: 31708 behaves like able to move a new item1709 can place any new item betwen two others1710 can place any new item after another1711 can place any new item before another1712 behaves like able to move an existing item1713 can place any item betwen two others1714 can place any item after another1715 can place any item before another1716 free_space: 101, index: 0, pos_a: 1, pos_b: 31717 behaves like able to move a new item1718 can place any new item betwen two others1719 can place any new item after another1720 can place any new item before another1721 behaves like able to move an existing item1722 can place any item betwen two others1723 can place any item after another1724 can place any item before another1725 free_space: 101, index: 0, pos_a: 1, pos_b: 21726 behaves like able to move a new item1727 can place any new item betwen two others1728 can place any new item after another1729 can place any new item before another1730 behaves like able to move an existing item1731 can place any item betwen two others1732 can place any item after another1733 can place any item before another1734 free_space: 101, index: 0, pos_a: 0, pos_b: 31735 behaves like able to move a new item1736 can place any new item betwen two others1737 can place any new item after another1738 can place any new item before another1739 behaves like able to move an existing item1740 can place any item betwen two others1741 can place any item after another1742 can place any item before another1743 free_space: 101, index: 0, pos_a: 0, pos_b: 21744 behaves like able to move a new item1745 can place any new item betwen two others1746 can place any new item after another1747 can place any new item before another1748 behaves like able to move an existing item1749 can place any item betwen two others1750 can place any item after another1751 can place any item before another1752 free_space: 101, index: 0, pos_a: 0, pos_b: 11753 behaves like able to move a new item1754 can place any new item betwen two others1755 can place any new item after another1756 can place any new item before another1757 behaves like able to move an existing item1758 can place any item betwen two others1759 can place any item after another1760 can place any item before another1761 free_space: 102, index: 3, pos_a: 2, pos_b: 31762 behaves like able to move a new item1763 can place any new item betwen two others1764 can place any new item after another1765 can place any new item before another1766 behaves like able to move an existing item1767 can place any item betwen two others1768 can place any item after another1769 can place any item before another1770 free_space: 102, index: 3, pos_a: 1, pos_b: 31771 behaves like able to move a new item1772 can place any new item betwen two others1773 can place any new item after another1774 can place any new item before another1775 behaves like able to move an existing item1776 can place any item betwen two others1777 can place any item after another1778 can place any item before another1779 free_space: 102, index: 3, pos_a: 1, pos_b: 21780 behaves like able to move a new item1781 can place any new item betwen two others1782 can place any new item after another1783 can place any new item before another1784 behaves like able to move an existing item1785 can place any item betwen two others1786 can place any item after another1787 can place any item before another1788 free_space: 102, index: 3, pos_a: 0, pos_b: 31789 behaves like able to move a new item1790 can place any new item betwen two others1791 can place any new item after another1792 can place any new item before another1793 behaves like able to move an existing item1794 can place any item betwen two others1795 can place any item after another1796 can place any item before another1797 free_space: 102, index: 3, pos_a: 0, pos_b: 21798 behaves like able to move a new item1799 can place any new item betwen two others1800 can place any new item after another1801 can place any new item before another1802 behaves like able to move an existing item1803 can place any item betwen two others1804 can place any item after another1805 can place any item before another1806 free_space: 102, index: 3, pos_a: 0, pos_b: 11807 behaves like able to move a new item1808 can place any new item betwen two others1809 can place any new item after another1810 can place any new item before another1811 behaves like able to move an existing item1812 can place any item betwen two others1813 can place any item after another1814 can place any item before another1815 free_space: 102, index: 2, pos_a: 2, pos_b: 31816 behaves like able to move a new item1817 can place any new item betwen two others1818 can place any new item after another1819 can place any new item before another1820 behaves like able to move an existing item1821 can place any item betwen two others1822 can place any item after another1823 can place any item before another1824 free_space: 102, index: 2, pos_a: 1, pos_b: 31825 behaves like able to move a new item1826 can place any new item betwen two others1827 can place any new item after another1828 can place any new item before another1829 behaves like able to move an existing item1830 can place any item betwen two others1831 can place any item after another1832 can place any item before another1833 free_space: 102, index: 2, pos_a: 1, pos_b: 21834 behaves like able to move a new item1835 can place any new item betwen two others1836 can place any new item after another1837 can place any new item before another1838 behaves like able to move an existing item1839 can place any item betwen two others1840 can place any item after another1841 can place any item before another1842 free_space: 102, index: 2, pos_a: 0, pos_b: 31843 behaves like able to move a new item1844 can place any new item betwen two others1845 can place any new item after another1846 can place any new item before another1847 behaves like able to move an existing item1848 can place any item betwen two others1849 can place any item after another1850 can place any item before another1851 free_space: 102, index: 2, pos_a: 0, pos_b: 21852 behaves like able to move a new item1853 can place any new item betwen two others1854 can place any new item after another1855 can place any new item before another1856 behaves like able to move an existing item1857 can place any item betwen two others1858 can place any item after another1859 can place any item before another1860 free_space: 102, index: 2, pos_a: 0, pos_b: 11861 behaves like able to move a new item1862 can place any new item betwen two others1863 can place any new item after another1864 can place any new item before another1865 behaves like able to move an existing item1866 can place any item betwen two others1867 can place any item after another1868 can place any item before another1869 free_space: 102, index: 1, pos_a: 2, pos_b: 31870 behaves like able to move a new item1871 can place any new item betwen two others1872 can place any new item after another1873 can place any new item before another1874 behaves like able to move an existing item1875 can place any item betwen two others1876 can place any item after another1877 can place any item before another1878 free_space: 102, index: 1, pos_a: 1, pos_b: 31879 behaves like able to move a new item1880 can place any new item betwen two others1881 can place any new item after another1882 can place any new item before another1883 behaves like able to move an existing item1884 can place any item betwen two others1885 can place any item after another1886 can place any item before another1887 free_space: 102, index: 1, pos_a: 1, pos_b: 21888 behaves like able to move a new item1889 can place any new item betwen two others1890 can place any new item after another1891 can place any new item before another1892 behaves like able to move an existing item1893 can place any item betwen two others1894 can place any item after another1895 can place any item before another1896 free_space: 102, index: 1, pos_a: 0, pos_b: 31897 behaves like able to move a new item1898 can place any new item betwen two others1899 can place any new item after another1900 can place any new item before another1901 behaves like able to move an existing item1902 can place any item betwen two others1903 can place any item after another1904 can place any item before another1905 free_space: 102, index: 1, pos_a: 0, pos_b: 21906 behaves like able to move a new item1907 can place any new item betwen two others1908 can place any new item after another1909 can place any new item before another1910 behaves like able to move an existing item1911 can place any item betwen two others1912 can place any item after another1913 can place any item before another1914 free_space: 102, index: 1, pos_a: 0, pos_b: 11915 behaves like able to move a new item1916 can place any new item betwen two others1917 can place any new item after another1918 can place any new item before another1919 behaves like able to move an existing item1920 can place any item betwen two others1921 can place any item after another1922 can place any item before another1923 free_space: 102, index: 0, pos_a: 2, pos_b: 31924 behaves like able to move a new item1925 can place any new item betwen two others1926 can place any new item after another1927 can place any new item before another1928 behaves like able to move an existing item1929 can place any item betwen two others1930 can place any item after another1931 can place any item before another1932 free_space: 102, index: 0, pos_a: 1, pos_b: 31933 behaves like able to move a new item1934 can place any new item betwen two others1935 can place any new item after another1936 can place any new item before another1937 behaves like able to move an existing item1938 can place any item betwen two others1939 can place any item after another1940 can place any item before another1941 free_space: 102, index: 0, pos_a: 1, pos_b: 21942 behaves like able to move a new item1943 can place any new item betwen two others1944 can place any new item after another1945 can place any new item before another1946 behaves like able to move an existing item1947 can place any item betwen two others1948 can place any item after another1949 can place any item before another1950 free_space: 102, index: 0, pos_a: 0, pos_b: 31951 behaves like able to move a new item1952 can place any new item betwen two others1953 can place any new item after another1954 can place any new item before another1955 behaves like able to move an existing item1956 can place any item betwen two others1957 can place any item after another1958 can place any item before another1959 free_space: 102, index: 0, pos_a: 0, pos_b: 21960 behaves like able to move a new item1961 can place any new item betwen two others1962 can place any new item after another1963 can place any new item before another1964 behaves like able to move an existing item1965 can place any item betwen two others1966 can place any item after another1967 can place any item before another1968 free_space: 102, index: 0, pos_a: 0, pos_b: 11969 behaves like able to move a new item1970 can place any new item betwen two others1971 can place any new item after another1972 can place any new item before another1973 behaves like able to move an existing item1974 can place any item betwen two others1975 can place any item after another1976 can place any item before another1977 free_space: 103, index: 3, pos_a: 2, pos_b: 31978 behaves like able to move a new item1979 can place any new item betwen two others1980 can place any new item after another1981 can place any new item before another1982 behaves like able to move an existing item1983 can place any item betwen two others1984 can place any item after another1985 can place any item before another1986 free_space: 103, index: 3, pos_a: 1, pos_b: 31987 behaves like able to move a new item1988 can place any new item betwen two others1989 can place any new item after another1990 can place any new item before another1991 behaves like able to move an existing item1992 can place any item betwen two others1993 can place any item after another1994 can place any item before another1995 free_space: 103, index: 3, pos_a: 1, pos_b: 21996 behaves like able to move a new item1997 can place any new item betwen two others1998 can place any new item after another1999 can place any new item before another2000 behaves like able to move an existing item2001 can place any item betwen two others2002 can place any item after another2003 can place any item before another2004 free_space: 103, index: 3, pos_a: 0, pos_b: 32005 behaves like able to move a new item2006 can place any new item betwen two others2007 can place any new item after another2008 can place any new item before another2009 behaves like able to move an existing item2010 can place any item betwen two others2011 can place any item after another2012 can place any item before another2013 free_space: 103, index: 3, pos_a: 0, pos_b: 22014 behaves like able to move a new item2015 can place any new item betwen two others2016 can place any new item after another2017 can place any new item before another2018 behaves like able to move an existing item2019 can place any item betwen two others2020 can place any item after another2021 can place any item before another2022 free_space: 103, index: 3, pos_a: 0, pos_b: 12023 behaves like able to move a new item2024 can place any new item betwen two others2025 can place any new item after another2026 can place any new item before another2027 behaves like able to move an existing item2028 can place any item betwen two others2029 can place any item after another2030 can place any item before another2031 free_space: 103, index: 2, pos_a: 2, pos_b: 32032 behaves like able to move a new item2033 can place any new item betwen two others2034 can place any new item after another2035 can place any new item before another2036 behaves like able to move an existing item2037 can place any item betwen two others2038 can place any item after another2039 can place any item before another2040 free_space: 103, index: 2, pos_a: 1, pos_b: 32041 behaves like able to move a new item2042 can place any new item betwen two others2043 can place any new item after another2044 can place any new item before another2045 behaves like able to move an existing item2046 can place any item betwen two others2047 can place any item after another2048 can place any item before another2049 free_space: 103, index: 2, pos_a: 1, pos_b: 22050 behaves like able to move a new item2051 can place any new item betwen two others2052 can place any new item after another2053 can place any new item before another2054 behaves like able to move an existing item2055 can place any item betwen two others2056 can place any item after another2057 can place any item before another2058 free_space: 103, index: 2, pos_a: 0, pos_b: 32059 behaves like able to move a new item2060 can place any new item betwen two others2061 can place any new item after another2062 can place any new item before another2063 behaves like able to move an existing item2064 can place any item betwen two others2065 can place any item after another2066 can place any item before another2067 free_space: 103, index: 2, pos_a: 0, pos_b: 22068 behaves like able to move a new item2069 can place any new item betwen two others2070 can place any new item after another2071 can place any new item before another2072 behaves like able to move an existing item2073 can place any item betwen two others2074 can place any item after another2075 can place any item before another2076 free_space: 103, index: 2, pos_a: 0, pos_b: 12077 behaves like able to move a new item2078 can place any new item betwen two others2079 can place any new item after another2080 can place any new item before another2081 behaves like able to move an existing item2082 can place any item betwen two others2083 can place any item after another2084 can place any item before another2085 free_space: 103, index: 1, pos_a: 2, pos_b: 32086 behaves like able to move a new item2087 can place any new item betwen two others2088 can place any new item after another2089 can place any new item before another2090 behaves like able to move an existing item2091 can place any item betwen two others2092 can place any item after another2093 can place any item before another2094 free_space: 103, index: 1, pos_a: 1, pos_b: 32095 behaves like able to move a new item2096 can place any new item betwen two others2097 can place any new item after another2098 can place any new item before another2099 behaves like able to move an existing item2100 can place any item betwen two others2101 can place any item after another2102 can place any item before another2103 free_space: 103, index: 1, pos_a: 1, pos_b: 22104 behaves like able to move a new item2105 can place any new item betwen two others2106 can place any new item after another2107 can place any new item before another2108 behaves like able to move an existing item2109 can place any item betwen two others2110 can place any item after another2111 can place any item before another2112 free_space: 103, index: 1, pos_a: 0, pos_b: 32113 behaves like able to move a new item2114 can place any new item betwen two others2115 can place any new item after another2116 can place any new item before another2117 behaves like able to move an existing item2118 can place any item betwen two others2119 can place any item after another2120 can place any item before another2121 free_space: 103, index: 1, pos_a: 0, pos_b: 22122 behaves like able to move a new item2123 can place any new item betwen two others2124 can place any new item after another2125 can place any new item before another2126 behaves like able to move an existing item2127 can place any item betwen two others2128 can place any item after another2129 can place any item before another2130 free_space: 103, index: 1, pos_a: 0, pos_b: 12131 behaves like able to move a new item2132 can place any new item betwen two others2133 can place any new item after another2134 can place any new item before another2135 behaves like able to move an existing item2136 can place any item betwen two others2137 can place any item after another2138 can place any item before another2139 free_space: 103, index: 0, pos_a: 2, pos_b: 32140 behaves like able to move a new item2141 can place any new item betwen two others2142 can place any new item after another2143 can place any new item before another2144 behaves like able to move an existing item2145 can place any item betwen two others2146 can place any item after another2147 can place any item before another2148 free_space: 103, index: 0, pos_a: 1, pos_b: 32149 behaves like able to move a new item2150 can place any new item betwen two others2151 can place any new item after another2152 can place any new item before another2153 behaves like able to move an existing item2154 can place any item betwen two others2155 can place any item after another2156 can place any item before another2157 free_space: 103, index: 0, pos_a: 1, pos_b: 22158 behaves like able to move a new item2159 can place any new item betwen two others2160 can place any new item after another2161 can place any new item before another2162 behaves like able to move an existing item2163 can place any item betwen two others2164 can place any item after another2165 can place any item before another2166 free_space: 103, index: 0, pos_a: 0, pos_b: 32167 behaves like able to move a new item2168 can place any new item betwen two others2169 can place any new item after another2170 can place any new item before another2171 behaves like able to move an existing item2172 can place any item betwen two others2173 can place any item after another2174 can place any item before another2175 free_space: 103, index: 0, pos_a: 0, pos_b: 22176 behaves like able to move a new item2177 can place any new item betwen two others2178 can place any new item after another2179 can place any new item before another2180 behaves like able to move an existing item2181 can place any item betwen two others2182 can place any item after another2183 can place any item before another2184 free_space: 103, index: 0, pos_a: 0, pos_b: 12185 behaves like able to move a new item2186 can place any new item betwen two others2187 can place any new item after another2188 can place any new item before another2189 behaves like able to move an existing item2190 can place any item betwen two others2191 can place any item after another2192 can place any item before another2193 free_space: 104, index: 3, pos_a: 2, pos_b: 32194 behaves like able to move a new item2195 can place any new item betwen two others2196 can place any new item after another2197 can place any new item before another2198 behaves like able to move an existing item2199 can place any item betwen two others2200 can place any item after another2201 can place any item before another2202 free_space: 104, index: 3, pos_a: 1, pos_b: 32203 behaves like able to move a new item2204 can place any new item betwen two others2205 can place any new item after another2206 can place any new item before another2207 behaves like able to move an existing item2208 can place any item betwen two others2209 can place any item after another2210 can place any item before another2211 free_space: 104, index: 3, pos_a: 1, pos_b: 22212 behaves like able to move a new item2213 can place any new item betwen two others2214 can place any new item after another2215 can place any new item before another2216 behaves like able to move an existing item2217 can place any item betwen two others2218 can place any item after another2219 can place any item before another2220 free_space: 104, index: 3, pos_a: 0, pos_b: 32221 behaves like able to move a new item2222 can place any new item betwen two others2223 can place any new item after another2224 can place any new item before another2225 behaves like able to move an existing item2226 can place any item betwen two others2227 can place any item after another2228 can place any item before another2229 free_space: 104, index: 3, pos_a: 0, pos_b: 22230 behaves like able to move a new item2231 can place any new item betwen two others2232 can place any new item after another2233 can place any new item before another2234 behaves like able to move an existing item2235 can place any item betwen two others2236 can place any item after another2237 can place any item before another2238 free_space: 104, index: 3, pos_a: 0, pos_b: 12239 behaves like able to move a new item2240 can place any new item betwen two others2241 can place any new item after another2242 can place any new item before another2243 behaves like able to move an existing item2244 can place any item betwen two others2245 can place any item after another2246 can place any item before another2247 free_space: 104, index: 2, pos_a: 2, pos_b: 32248 behaves like able to move a new item2249 can place any new item betwen two others2250 can place any new item after another2251 can place any new item before another2252 behaves like able to move an existing item2253 can place any item betwen two others2254 can place any item after another2255 can place any item before another2256 free_space: 104, index: 2, pos_a: 1, pos_b: 32257 behaves like able to move a new item2258 can place any new item betwen two others2259 can place any new item after another2260 can place any new item before another2261 behaves like able to move an existing item2262 can place any item betwen two others2263 can place any item after another2264 can place any item before another2265 free_space: 104, index: 2, pos_a: 1, pos_b: 22266 behaves like able to move a new item2267 can place any new item betwen two others2268 can place any new item after another2269 can place any new item before another2270 behaves like able to move an existing item2271 can place any item betwen two others2272 can place any item after another2273 can place any item before another2274 free_space: 104, index: 2, pos_a: 0, pos_b: 32275 behaves like able to move a new item2276 can place any new item betwen two others2277 can place any new item after another2278 can place any new item before another2279 behaves like able to move an existing item2280 can place any item betwen two others2281 can place any item after another2282 can place any item before another2283 free_space: 104, index: 2, pos_a: 0, pos_b: 22284 behaves like able to move a new item2285 can place any new item betwen two others2286 can place any new item after another2287 can place any new item before another2288 behaves like able to move an existing item2289 can place any item betwen two others2290 can place any item after another2291 can place any item before another2292 free_space: 104, index: 2, pos_a: 0, pos_b: 12293 behaves like able to move a new item2294 can place any new item betwen two others2295 can place any new item after another2296 can place any new item before another2297 behaves like able to move an existing item2298 can place any item betwen two others2299 can place any item after another2300 can place any item before another2301 free_space: 104, index: 1, pos_a: 2, pos_b: 32302 behaves like able to move a new item2303 can place any new item betwen two others2304 can place any new item after another2305 can place any new item before another2306 behaves like able to move an existing item2307 can place any item betwen two others2308 can place any item after another2309 can place any item before another2310 free_space: 104, index: 1, pos_a: 1, pos_b: 32311 behaves like able to move a new item2312 can place any new item betwen two others2313 can place any new item after another2314 can place any new item before another2315 behaves like able to move an existing item2316 can place any item betwen two others2317 can place any item after another2318 can place any item before another2319 free_space: 104, index: 1, pos_a: 1, pos_b: 22320 behaves like able to move a new item2321 can place any new item betwen two others2322 can place any new item after another2323 can place any new item before another2324 behaves like able to move an existing item2325 can place any item betwen two others2326 can place any item after another2327 can place any item before another2328 free_space: 104, index: 1, pos_a: 0, pos_b: 32329 behaves like able to move a new item2330 can place any new item betwen two others2331 can place any new item after another2332 can place any new item before another2333 behaves like able to move an existing item2334 can place any item betwen two others2335 can place any item after another2336 can place any item before another2337 free_space: 104, index: 1, pos_a: 0, pos_b: 22338 behaves like able to move a new item2339 can place any new item betwen two others2340 can place any new item after another2341 can place any new item before another2342 behaves like able to move an existing item2343 can place any item betwen two others2344 can place any item after another2345 can place any item before another2346 free_space: 104, index: 1, pos_a: 0, pos_b: 12347 behaves like able to move a new item2348 can place any new item betwen two others2349 can place any new item after another2350 can place any new item before another2351 behaves like able to move an existing item2352 can place any item betwen two others2353 can place any item after another2354 can place any item before another2355 free_space: 104, index: 0, pos_a: 2, pos_b: 32356 behaves like able to move a new item2357 can place any new item betwen two others2358 can place any new item after another2359 can place any new item before another2360 behaves like able to move an existing item2361 can place any item betwen two others2362 can place any item after another2363 can place any item before another2364 free_space: 104, index: 0, pos_a: 1, pos_b: 32365 behaves like able to move a new item2366 can place any new item betwen two others2367 can place any new item after another2368 can place any new item before another2369 behaves like able to move an existing item2370 can place any item betwen two others2371 can place any item after another2372 can place any item before another2373 free_space: 104, index: 0, pos_a: 1, pos_b: 22374 behaves like able to move a new item2375 can place any new item betwen two others2376 can place any new item after another2377 can place any new item before another2378 behaves like able to move an existing item2379 can place any item betwen two others2380 can place any item after another2381 can place any item before another2382 free_space: 104, index: 0, pos_a: 0, pos_b: 32383 behaves like able to move a new item2384 can place any new item betwen two others2385 can place any new item after another2386 can place any new item before another2387 behaves like able to move an existing item2388 can place any item betwen two others2389 can place any item after another2390 can place any item before another2391 free_space: 104, index: 0, pos_a: 0, pos_b: 22392 behaves like able to move a new item2393 can place any new item betwen two others2394 can place any new item after another2395 can place any new item before another2396 behaves like able to move an existing item2397 can place any item betwen two others2398 can place any item after another2399 can place any item before another2400 free_space: 104, index: 0, pos_a: 0, pos_b: 12401 behaves like able to move a new item2402 can place any new item betwen two others2403 can place any new item after another2404 can place any new item before another2405 behaves like able to move an existing item2406 can place any item betwen two others2407 can place any item after another2408 can place any item before another2409 free_space: 105, index: 3, pos_a: 2, pos_b: 32410 behaves like able to move a new item2411 can place any new item betwen two others2412 can place any new item after another2413 can place any new item before another2414 behaves like able to move an existing item2415 can place any item betwen two others2416 can place any item after another2417 can place any item before another2418 free_space: 105, index: 3, pos_a: 1, pos_b: 32419 behaves like able to move a new item2420 can place any new item betwen two others2421 can place any new item after another2422 can place any new item before another2423 behaves like able to move an existing item2424 can place any item betwen two others2425 can place any item after another2426 can place any item before another2427 free_space: 105, index: 3, pos_a: 1, pos_b: 22428 behaves like able to move a new item2429 can place any new item betwen two others2430 can place any new item after another2431 can place any new item before another2432 behaves like able to move an existing item2433 can place any item betwen two others2434 can place any item after another2435 can place any item before another2436 free_space: 105, index: 3, pos_a: 0, pos_b: 32437 behaves like able to move a new item2438 can place any new item betwen two others2439 can place any new item after another2440 can place any new item before another2441 behaves like able to move an existing item2442 can place any item betwen two others2443 can place any item after another2444 can place any item before another2445 free_space: 105, index: 3, pos_a: 0, pos_b: 22446 behaves like able to move a new item2447 can place any new item betwen two others2448 can place any new item after another2449 can place any new item before another2450 behaves like able to move an existing item2451 can place any item betwen two others2452 can place any item after another2453 can place any item before another2454 free_space: 105, index: 3, pos_a: 0, pos_b: 12455 behaves like able to move a new item2456 can place any new item betwen two others2457 can place any new item after another2458 can place any new item before another2459 behaves like able to move an existing item2460 can place any item betwen two others2461 can place any item after another2462 can place any item before another2463 free_space: 105, index: 2, pos_a: 2, pos_b: 32464 behaves like able to move a new item2465 can place any new item betwen two others2466 can place any new item after another2467 can place any new item before another2468 behaves like able to move an existing item2469 can place any item betwen two others2470 can place any item after another2471 can place any item before another2472 free_space: 105, index: 2, pos_a: 1, pos_b: 32473 behaves like able to move a new item2474 can place any new item betwen two others2475 can place any new item after another2476 can place any new item before another2477 behaves like able to move an existing item2478 can place any item betwen two others2479 can place any item after another2480 can place any item before another2481 free_space: 105, index: 2, pos_a: 1, pos_b: 22482 behaves like able to move a new item2483 can place any new item betwen two others2484 can place any new item after another2485 can place any new item before another2486 behaves like able to move an existing item2487 can place any item betwen two others2488 can place any item after another2489 can place any item before another2490 free_space: 105, index: 2, pos_a: 0, pos_b: 32491 behaves like able to move a new item2492 can place any new item betwen two others2493 can place any new item after another2494 can place any new item before another2495 behaves like able to move an existing item2496 can place any item betwen two others2497 can place any item after another2498 can place any item before another2499 free_space: 105, index: 2, pos_a: 0, pos_b: 22500 behaves like able to move a new item2501 can place any new item betwen two others2502 can place any new item after another2503 can place any new item before another2504 behaves like able to move an existing item2505 can place any item betwen two others2506 can place any item after another2507 can place any item before another2508 free_space: 105, index: 2, pos_a: 0, pos_b: 12509 behaves like able to move a new item2510 can place any new item betwen two others2511 can place any new item after another2512 can place any new item before another2513 behaves like able to move an existing item2514 can place any item betwen two others2515 can place any item after another2516 can place any item before another2517 free_space: 105, index: 1, pos_a: 2, pos_b: 32518 behaves like able to move a new item2519 can place any new item betwen two others2520 can place any new item after another2521 can place any new item before another2522 behaves like able to move an existing item2523 can place any item betwen two others2524 can place any item after another2525 can place any item before another2526 free_space: 105, index: 1, pos_a: 1, pos_b: 32527 behaves like able to move a new item2528 can place any new item betwen two others2529 can place any new item after another2530 can place any new item before another2531 behaves like able to move an existing item2532 can place any item betwen two others2533 can place any item after another2534 can place any item before another2535 free_space: 105, index: 1, pos_a: 1, pos_b: 22536 behaves like able to move a new item2537 can place any new item betwen two others2538 can place any new item after another2539 can place any new item before another2540 behaves like able to move an existing item2541 can place any item betwen two others2542 can place any item after another2543 can place any item before another2544 free_space: 105, index: 1, pos_a: 0, pos_b: 32545 behaves like able to move a new item2546 can place any new item betwen two others2547 can place any new item after another2548 can place any new item before another2549 behaves like able to move an existing item2550 can place any item betwen two others2551 can place any item after another2552 can place any item before another2553 free_space: 105, index: 1, pos_a: 0, pos_b: 22554 behaves like able to move a new item2555 can place any new item betwen two others2556 can place any new item after another2557 can place any new item before another2558 behaves like able to move an existing item2559 can place any item betwen two others2560 can place any item after another2561 can place any item before another2562 free_space: 105, index: 1, pos_a: 0, pos_b: 12563 behaves like able to move a new item2564 can place any new item betwen two others2565 can place any new item after another2566 can place any new item before another2567 behaves like able to move an existing item2568 can place any item betwen two others2569 can place any item after another2570 can place any item before another2571 free_space: 105, index: 0, pos_a: 2, pos_b: 32572 behaves like able to move a new item2573 can place any new item betwen two others2574 can place any new item after another2575 can place any new item before another2576 behaves like able to move an existing item2577 can place any item betwen two others2578 can place any item after another2579 can place any item before another2580 free_space: 105, index: 0, pos_a: 1, pos_b: 32581 behaves like able to move a new item2582 can place any new item betwen two others2583 can place any new item after another2584 can place any new item before another2585 behaves like able to move an existing item2586 can place any item betwen two others2587 can place any item after another2588 can place any item before another2589 free_space: 105, index: 0, pos_a: 1, pos_b: 22590 behaves like able to move a new item2591 can place any new item betwen two others2592 can place any new item after another2593 can place any new item before another2594 behaves like able to move an existing item2595 can place any item betwen two others2596 can place any item after another2597 can place any item before another2598 free_space: 105, index: 0, pos_a: 0, pos_b: 32599 behaves like able to move a new item2600 can place any new item betwen two others2601 can place any new item after another2602 can place any new item before another2603 behaves like able to move an existing item2604 can place any item betwen two others2605 can place any item after another2606 can place any item before another2607 free_space: 105, index: 0, pos_a: 0, pos_b: 22608 behaves like able to move a new item2609 can place any new item betwen two others2610 can place any new item after another2611 can place any new item before another2612 behaves like able to move an existing item2613 can place any item betwen two others2614 can place any item after another2615 can place any item before another2616 free_space: 105, index: 0, pos_a: 0, pos_b: 12617 behaves like able to move a new item2618 can place any new item betwen two others2619 can place any new item after another2620 can place any new item before another2621 behaves like able to move an existing item2622 can place any item betwen two others2623 can place any item after another2624 can place any item before another2625Environment2626 is expected to be a kind of ReactiveCaching2627 is expected to nullify if blank :external_url2628 is expected to belong to project required: true2629 is expected to have many deployments2630 is expected to have many metrics_dashboard_annotations2631 is expected to have many alert_management_alerts2632 is expected to have one upcoming_deployment2633 is expected to have one latest_opened_most_severe_alert2634 is expected to delegate #stop_action to the #last_deployment object2635 is expected to delegate #manual_actions to the #last_deployment object2636 is expected to validate that :name cannot be empty/falsy2637 is expected to validate that :name is case-sensitively unique within the scope of :project_id2638 is expected to validate that the length of :name is at most 2552639 is expected to validate that :slug is case-sensitively unique within the scope of :project_id2640 is expected to validate that the length of :slug is at most 242641 is expected to validate that the length of :external_url is at most 2552642 .before_save2643 ensures environment tier when a new object is created2644 ensures environment tier when an existing object is updated2645 does not overwrite the existing environment tier2646 .order_by_last_deployed_at2647 returns the environments in ascending order of having been last deployed2648 returns the environments in descending order of having been last deployed2649 .stopped_review_apps2650 is expected to contain exactly #<Environment id: 26, project_id: 27, name: "review/1", created_at: "2021-07-18 10:31:54.042472925 +0...te: "stopped", slug: "review-1-8fxbic", auto_stop_at: nil, auto_delete_at: nil, tier: "development">2651 current timestamp2652 is expected to contain exactly #<Environment id: 26, project_id: 27, name: "review/1", created_at: "2021-07-18 10:31:54.042472925 +0...te: "stopped", slug: "review-1-8fxbic", auto_stop_at: nil, auto_delete_at: nil, tier: "development"> and #<Environment id: 27, project_id: 27, name: "review/2", created_at: "2021-08-18 10:31:54.254157677 +0...te: "stopped", slug: "review-2-an02x4", auto_stop_at: nil, auto_delete_at: nil, tier: "development">2653 scheduled deletion2654 .scheduled_for_deletion2655 is expected to contain exactly #<Environment id: 32, project_id: 28, name: "environment26", created_at: "2021-08-18 10:31:54.9319321...ronment26", auto_stop_at: nil, auto_delete_at: "2021-08-18 10:31:54.697797121 +0000", tier: "other">2656 .not_scheduled_for_deletion2657 is expected to contain exactly #<Environment id: 33, project_id: 29, name: "environment27", created_at: "2021-08-18 10:31:55.1252174...l, state: "available", slug: "environment27", auto_stop_at: nil, auto_delete_at: nil, tier: "other">2658 .schedule_to_delete2659 schedules the record for deletion2660 state machine2661 invalidates the cache after a change2662 .for_name_like2663 returns a found name2664 when query is production2665 returns a found name2666 when query is productionA2667 returns empty array2668 when query is empty2669 returns a found name2670 when query is nil2671 raises an error2672 when query is partially matched in the middle of environment name2673 returns empty array2674 when query contains a wildcard character2675 prevents wildcard injection2676 .auto_stoppable2677 when environment is auto-stoppable2678 is expected to eq [#<Environment id: 42, project_id: 38, name: "environment29", created_at: "2021-08-18 10:31:57.319624...onment29", auto_stop_at: "2021-08-17 10:31:57.305158019 +0000", auto_delete_at: nil, tier: "other">]2679 when environment is not auto-stoppable2680 is expected to be empty2681 .auto_deletable2682 when environment is auto-deletable2683 is expected to eq [#<Environment id: 44, project_id: 40, name: "environment31", created_at: "2021-08-18 10:31:57.893426...onment31", auto_stop_at: nil, auto_delete_at: "2021-08-17 10:31:57.878741472 +0000", tier: "other">]2684 when environment is not auto-deletable2685 is expected to be empty2686 .stop_actions2687 returns stop actions for environments2688 when one of the stop actions has already been executed2689 behaves like correct filtering2690 returns stop actions for available environments only2691 when one of the deployments does not have stop action2692 behaves like correct filtering2693 returns stop actions for available environments only2694 .pluck_names2695 plucks names2696 .for_tier2697 returns the production environment when searching for production tier2698 returns nothing when searching for staging tier2699 #guess_tier2700 name: "review/feature", tier: 32701 is expected to eq 32702 name: "review/product", tier: 32703 is expected to eq 32704 name: "DEV", tier: 32705 is expected to eq 32706 name: "development", tier: 32707 is expected to eq 32708 name: "trunk", tier: 32709 is expected to eq 32710 name: "test", tier: 22711 is expected to eq 22712 name: "TEST", tier: 22713 is expected to eq 22714 name: "testing", tier: 22715 is expected to eq 22716 name: "testing-prd", tier: 22717 is expected to eq 22718 name: "acceptance-testing", tier: 22719 is expected to eq 22720 name: "production-test", tier: 22721 is expected to eq 22722 name: "test-production", tier: 22723 is expected to eq 22724 name: "QC", tier: 22725 is expected to eq 22726 name: "gstg", tier: 12727 is expected to eq 12728 name: "staging", tier: 12729 is expected to eq 12730 name: "stage", tier: 12731 is expected to eq 12732 name: "Model", tier: 12733 is expected to eq 12734 name: "MODL", tier: 12735 is expected to eq 12736 name: "Pre-production", tier: 12737 is expected to eq 12738 name: "pre", tier: 12739 is expected to eq 12740 name: "Demo", tier: 12741 is expected to eq 12742 name: "gprd", tier: 02743 is expected to eq 02744 name: "gprd-cny", tier: 02745 is expected to eq 02746 name: "production", tier: 02747 is expected to eq 02748 name: "Production", tier: 02749 is expected to eq 02750 name: "PRODUCTION", tier: 02751 is expected to eq 02752 name: "Production/eu", tier: 02753 is expected to eq 02754 name: "production/eu", tier: 02755 is expected to eq 02756 name: "PRODUCTION/EU", tier: 02757 is expected to eq 02758 name: "productioneu", tier: 02759 is expected to eq 02760 name: "production/www.gitlab.com", tier: 02761 is expected to eq 02762 name: "prod", tier: 02763 is expected to eq 02764 name: "PROD", tier: 02765 is expected to eq 02766 name: "Live", tier: 02767 is expected to eq 02768 name: "canary", tier: 42769 is expected to eq 42770 name: "other", tier: 42771 is expected to eq 42772 name: "EXP", tier: 42773 is expected to eq 42774 #expire_etag_cache2775 changes the cached value2776 .with_deployment2777 when deployment has the specified sha2778 is expected to eq [#<Environment id: 55, project_id: 46, name: "environment34", created_at: "2021-08-18 10:32:02.140973..., state: "available", slug: "environment34", auto_stop_at: nil, auto_delete_at: nil, tier: "other">]2779 when deployment does not have the specified sha2780 is expected to be empty2781 #folder_name2782 when it is inside a folder2783 returns a top-level folder name2784 when the environment if a top-level item itself2785 returns an environment name2786 #name_without_type2787 when it is inside a folder2788 returns name without folder2789 when the environment if a top-level item itself2790 returns full name2791 #includes_commit?2792 without a last deployment2793 returns false2794 with a last deployment2795 in the same branch2796 returns true2797 not in the same branch2798 returns false2799 #environment_type2800 sets a environment type if name has multiple segments2801 nullifies a type if it's a simple name2802 #stop_action_available?2803 when no other actions2804 is expected to be falsey2805 when matching action is defined2806 when environment is available2807 is expected to be truthy2808 when environment is stopped2809 is expected to be falsey2810 #stop_with_action!2811 when no other actions2812 environment is available2813 is expected to be stopped2814 environment is already stopped2815 is expected to be stopped2816 when matching action is defined2817 when user is not allowed to stop environment2818 raises an exception2819 when user is allowed to stop environment2820 when action did not yet finish2821 returns the same action2822 if action did finish2823 returns a new action of the same type2824 recently_updated_on_branch?2825 when last deployment to environment is the most recent one2826 is expected to equal true2827 when last deployment to environment is not the most recent2828 is expected to equal false2829 #reset_auto_stop2830 nullifies the auto_stop_at2831 #actions_for2832 returns a list of actions with matching environment2833 .deployments2834 when there is a deployment record with created status2835 does not return the record2836 when there is a deployment record with running status2837 does not return the record2838 when there is a deployment record with success status2839 returns the record2840 .last_deployment2841 when there is an old deployment record2842 when there is a deployment record with created status2843 returns the previous deployment2844 when there is a deployment record with running status2845 returns the previous deployment2846 when there is a deployment record with failed status2847 returns the previous deployment2848 when there is a deployment record with success status2849 returns the latest successful deployment2850 #last_visible_deployment2851 when there is an old deployment record2852 when there is a deployment record with created status2853 is expected to eq #<Deployment id: 38, iid: 1, project_id: 78, environment_id: 85, ref: "master", tag: false, sha: "b83...: "success", finished_at: "2021-08-18 10:32:13.683514183 +0000", cluster_id: nil, deployable_id: 55>2854 when there is a deployment record with running status2855 is expected to eq #<Deployment id: 41, iid: 2, project_id: 79, environment_id: 86, ref: "master", tag: false, sha: "b83...27851 +0000", on_stop: nil, status: "running", finished_at: nil, cluster_id: nil, deployable_id: 58>2856 when there is a deployment record with success status2857 is expected to eq #<Deployment id: 43, iid: 2, project_id: 80, environment_id: 87, ref: "master", tag: false, sha: "b83...: "success", finished_at: "2021-08-18 10:32:14.637985365 +0000", cluster_id: nil, deployable_id: 60>2858 when there is a deployment record with failed status2859 is expected to eq #<Deployment id: 45, iid: 2, project_id: 81, environment_id: 88, ref: "master", tag: false, sha: "b83...s: "failed", finished_at: "2021-08-18 10:32:15.109414947 +0000", cluster_id: nil, deployable_id: 62>2860 when there is a deployment record with canceled status2861 is expected to eq #<Deployment id: 47, iid: 2, project_id: 82, environment_id: 89, ref: "master", tag: false, sha: "b83... "canceled", finished_at: "2021-08-18 10:32:15.519951553 +0000", cluster_id: nil, deployable_id: 64>2862 #last_visible_pipeline2863 uses the last deployment even if it failed2864 returns nil if there is no deployment2865 does not return an invisible pipeline2866 for the environment2867 returns the last pipeline2868 with multiple deployments2869 returns the last pipeline2870 with multiple pipelines2871 returns the last pipeline2872 #upcoming_deployment2873 when environment has a successful deployment2874 is expected to be nil2875 when environment has a running deployment2876 is expected to eq #<Deployment id: 56, iid: 1, project_id: 85, environment_id: 97, ref: "master", tag: false, sha: "b83...40683 +0000", on_stop: nil, status: "running", finished_at: nil, cluster_id: nil, deployable_id: 75>2877 #has_terminals?2878 when the environment is available2879 with a deployment service2880 when user configured kubernetes from CI/CD > Clusters2881 with deployment2882 is expected to be truthy2883 without deployments2884 is expected to be falsy2885 without a deployment service2886 is expected to be falsy2887 when the environment is unavailable2888 is expected to be falsy2889 #deployment_platform2890 checks deployment platforms associated with a project2891 when there is a deployment platform for environment2892 finds a deployment platform2893 when there is no deployment platform for environment2894 returns nil2895 #deployment_namespace2896 no deployment platform available2897 is expected to be nil2898 deployment platform is available2899 retrieves a namespace from the cluster2900 #terminals2901 reactive cache configuration2902 does not continue to spawn jobs2903 reactive cache is empty2904 is expected to be nil2905 reactive cache has pod data2906 retrieves terminals from the deployment platform2907 #calculate_reactive_cache2908 overrides default reactive_cache_hard_limit to 10 Mb2909 returns cache data from the deployment platform2910 environment does not have terminals available2911 is expected to be nil2912 project is pending deletion2913 is expected to be nil2914 #has_metrics?2915 when the environment is available2916 with a deployment service2917 and a deployment2918 is expected to be truthy2919 and no deployments2920 is expected to be truthy2921 and the prometheus adapter is not configured2922 is expected to be falsy2923 without a monitoring service2924 is expected to be falsy2925 when sample metrics are enabled2926 with no prometheus adapter configured2927WARNING: An expectation of `:configured?` was set on `nil`. To allow expectations on `nil` and suppress this message, set `RSpec::Mocks.configuration.allow_message_expectations_on_nil` to `true`. To disallow expectations on `nil`, set `RSpec::Mocks.configuration.allow_message_expectations_on_nil` to `false`. Called from /builds/gitlab-org/gitlab/spec/models/environment_spec.rb:1069:in `block (6 levels) in <top (required)>'.2928 is expected to be truthy2929 #has_sample_metrics?2930 when sample metrics are enabled2931 with no prometheus adapter configured2932WARNING: An expectation of `:configured?` was set on `nil`. To allow expectations on `nil` and suppress this message, set `RSpec::Mocks.configuration.allow_message_expectations_on_nil` to `true`. To disallow expectations on `nil`, set `RSpec::Mocks.configuration.allow_message_expectations_on_nil` to `false`. Called from /builds/gitlab-org/gitlab/spec/models/environment_spec.rb:1089:in `block (6 levels) in <top (required)>'.2933 is expected to be truthy2934 with the environment stopped2935 is expected to be falsy2936 when sample metrics are not enabled2937 is expected to be falsy2938 when the environment is unavailable2939 is expected to be falsy2940 #has_running_deployments?2941 return false when no deployments exist2942 when deployment is running on the environment2943 return true2944 #metrics2945 when the environment has metrics2946 returns the metrics from the deployment service2947 and the prometheus client is not present2948 is expected to be nil2949 when the environment does not have metrics2950 is expected to be nil2951 #additional_metrics2952 when the environment has additional metrics2953 returns the additional metrics from the deployment service2954 when time window arguments are provided2955 queries with the expected parameters2956 when the environment does not have metrics2957 is expected to be nil2958 #slug2959 is automatically generated2960 is not regenerated if name changes2961 regenerates the slug if nil2962 #ref_path2963 returns a path that uses the slug and does not have spaces2964 doesn't change when the slug is nil initially2965 #external_url_for2966 when the public path is not known2967 returns nil2968 when the public path is known2969 external_url: "http://example.com", public_path: "file.html", full_url: "http://example.com/file.html"2970 returns the full external URL2971 external_url: "http://example.com/", public_path: "file.html", full_url: "http://example.com/file.html"2972 returns the full external URL2973 external_url: "http://example.com", public_path: "/file.html", full_url: "http://example.com/file.html"2974 returns the full external URL2975 external_url: "http://example.com/", public_path: "/file.html", full_url: "http://example.com/file.html"2976 returns the full external URL2977 external_url: "http://example.com/subpath", public_path: "public/file.html", full_url: "http://example.com/subpath/public/file.html"2978 returns the full external URL2979 external_url: "http://example.com/subpath/", public_path: "public/file.html", full_url: "http://example.com/subpath/public/file.html"2980 returns the full external URL2981 external_url: "http://example.com/subpath", public_path: "/public/file.html", full_url: "http://example.com/subpath/public/file.html"2982 returns the full external URL2983 external_url: "http://example.com/subpath/", public_path: "/public/file.html", full_url: "http://example.com/subpath/public/file.html"2984 returns the full external URL2985 #prometheus_adapter2986 calls prometheus adapter service2987 #knative_services_finder2988 environment has no deployments2989 is expected to be nil2990 environment has a deployment2991 with no cluster associated2992 is expected to be nil2993 with a cluster associated2994 calls the service finder2995 #auto_stop_in2996 when environment will be expired2997 returns when it will expire2998 when environment is not expired2999 is expected to be nil3000 #auto_stop_in=3001 value: "2 days", expected_result: 1728003002 sets correct auto_stop_in3003 value: "1 week", expected_result: 6048003004 sets correct auto_stop_in3005 value: "2h20min", expected_result: 84003006 sets correct auto_stop_in3007 value: "abcdef", expected_result: ChronicDuration::DurationParseError3008 sets correct auto_stop_in3009 value: "", expected_result: nil3010 sets correct auto_stop_in3011 value: nil, expected_result: nil3012 sets correct auto_stop_in3013 .for_id_and_slug3014 is expected not to be nil3015 .find_or_create_by_name3016 finds an existing environment if it exists3017 creates an environment if it does not exist3018 #elastic_stack_available?3019 when integration does not exist3020 returns false3021 when integration is enabled3022 returns true3023 #destroy3024 remove the deployment refs from gitaly3025 .count_by_state3026 returns zero state counts when environments are empty3027 when environments are not empty3028 returns the environments count grouped by state3029 returns the environments count grouped by state with zero value3030 #has_opened_alert?3031 when environment has an triggered alert3032 is expected to equal true3033 when environment has an resolved alert3034 is expected to equal false3035 when environment does not have an alert3036 is expected to equal false3037 #cancel_deployment_jobs!3038 cancels an active deployment job3039 when deployable does not exist3040 does not raise an error3041 #rollout_status3042 environment does not have a deployment board available3043 is expected to be nil3044 cached rollout status is present3045 fetches the rollout status from the deployment platform3046 cached rollout status is not present yet3047 falls back to a loading status3048 #ingresses3049 when rollout status is available3050 fetches ingresses from the deployment platform3051 when rollout status is not available3052 does nothing3053 #patch_ingress3054 when rollout status is available3055 fetches ingresses from the deployment platform3056 when rollout status is not available3057 does nothing3058 #clear_all_caches3059 clears all caches on the environment3060gitlab:app namespace rake task3061 backup_restore3062 gitlab version3063 restore with matching gitlab version3064 invokes restoration on match3065 prints timestamps on messages3066 when the restore directory is not empty3067 removes stale data3068 when the backup is restored3069 restores the data3070 backup3071 backup creation and deletion using custom_hooks3072 project uses custom_hooks and successfully creates backup3073 creates custom_hooks.tar and project bundle3074 restores files correctly3075 specific backup tasks3076 prints a progress message to stdout30772021-08-18 10:32:56 +0000 -- Dumping database ... 30782021-08-18 10:32:56 +0000 -- [SKIPPED]30792021-08-18 10:32:56 +0000 -- Dumping repositories ...3080time="2021-08-18T10:32:56Z" level=info msg="started backup" gl_project_path=namespace206/project210 relative_path=@hashed/3d/32/3d3286f7cd19074f04e514b0c6c237e757513fb32820698b790e1dec801d947a.git storage_name=default3081time="2021-08-18T10:32:56Z" level=info msg="started backup" gl_project_path=namespace206/project210.wiki relative_path=@hashed/3d/32/3d3286f7cd19074f04e514b0c6c237e757513fb32820698b790e1dec801d947a.wiki.git storage_name=default3082time="2021-08-18T10:32:56Z" level=warning msg="skipped backup" error="repository skipped" gl_project_path=namespace206/project210.wiki relative_path=@hashed/3d/32/3d3286f7cd19074f04e514b0c6c237e757513fb32820698b790e1dec801d947a.wiki.git storage_name=default3083time="2021-08-18T10:32:56Z" level=info msg="started backup" gl_project_path=namespace206/project210 relative_path=@hashed/3d/32/3d3286f7cd19074f04e514b0c6c237e757513fb32820698b790e1dec801d947a.design.git storage_name=default3084time="2021-08-18T10:32:56Z" level=warning msg="skipped backup" error="repository skipped" gl_project_path=namespace206/project210 relative_path=@hashed/3d/32/3d3286f7cd19074f04e514b0c6c237e757513fb32820698b790e1dec801d947a.design.git storage_name=default3085time="2021-08-18T10:32:56Z" level=info msg="completed backup" gl_project_path=namespace206/project210 relative_path=@hashed/3d/32/3d3286f7cd19074f04e514b0c6c237e757513fb32820698b790e1dec801d947a.git storage_name=default30862021-08-18 10:32:56 +0000 -- done30872021-08-18 10:32:56 +0000 -- Dumping uploads ... 30882021-08-18 10:32:56 +0000 -- done30892021-08-18 10:32:56 +0000 -- Dumping builds ... 30902021-08-18 10:32:56 +0000 -- done30912021-08-18 10:32:56 +0000 -- Dumping artifacts ... 30922021-08-18 10:32:56 +0000 -- done30932021-08-18 10:32:56 +0000 -- Dumping pages ... 30942021-08-18 10:32:57 +0000 -- done30952021-08-18 10:32:57 +0000 -- Dumping lfs objects ... 30962021-08-18 10:32:57 +0000 -- done30972021-08-18 10:32:57 +0000 -- Dumping container registry images ... 30982021-08-18 10:32:57 +0000 -- done3099 logs the progress to log file3100 tar creation3101 sets correct permissions on the tar contents3102 deletes temp directories3103 archive file permissions3104 sets correct permissions on the tar file3105 with custom archive_permissions3106 uses the custom permissions3107 registry disabled3108 does not create registry.tar.gz3109 multiple repository storages3110 no concurrency3111 behaves like includes repositories in all repository storages3112 aggregate_failures3113 with concurrency3114 behaves like includes repositories in all repository storages3115 aggregate_failures3116 concurrency settings3117 has defaults3118 passes through concurrency environment variables3119 CRON env is set3120 does not output to stdout3121 Skipping items3122 does not contain skipped item3123 does not invoke repositories restore3124 skipping tar archive creation3125 created files with backup content and no tar archive3126 those component files can be restored from3127 Human Readable Backup Name3128 name has human readable time3129Notes::QuickActionsService3130 .noteable_update_service_class3131 returns Issues::UpdateService for a note on an issue3132 returns MergeRequests::UpdateService for a note on a merge request3133 returns Commits::TagService for a note on a commit3134 .supported?3135 with a note on an issue3136 returns true3137 with a note on a commit3138 returns false3139 #supported?3140 delegates to the class method3141 #execute3142 behaves like note on noteable that supports quick actions3143 note with only command3144 /close, /label, /assign & /milestone3145 closes noteable, sets labels, assigns, and sets milestone to noteable, and leave no note3146 /relate3147 user cannot relate issues3148 does not create issue relation3149 user is allowed to relate issues3150 creates issue relation3151 /reopen3152 opens the noteable, and leave no note3153 /spend3154 when note is not persisted3155 adds time to noteable, adds timelog with nil note_id and has no content3156 when note is persisted3157 updates the spent time and populates timelog with note_id3158 adds a system note3159 when not specifying a date3160 does not include the date3161 when specifying a date3162 does include the date3163 /estimate3164 adds time estimate to noteable3165 note with command & text3166 /close, /label, /assign & /milestone3167 closes noteable, sets labels, assigns, and sets milestone to noteable3168 /reopen3169 opens the noteable3170 /milestone3171 on an incident3172 leaves the note empty3173 assigns the milestone3174 on a merge request3175 leaves the note empty3176 assigns the milestone3177 /remove_milestone3178 on an issue3179 leaves the note empty3180 removes the milestone3181 on an incident3182 leaves the note empty3183 removes the milestone3184 on a merge request3185 leaves the note empty3186 removes the milestone3187 behaves like note on noteable that supports quick actions3188 note with only command3189 /close, /label, /assign & /milestone3190 closes noteable, sets labels, assigns, and sets milestone to noteable, and leave no note3191 /relate3192 user cannot relate issues3193 does not create issue relation3194 user is allowed to relate issues3195 creates issue relation3196 /reopen3197 opens the noteable, and leave no note3198 /spend3199 when note is not persisted3200 adds time to noteable, adds timelog with nil note_id and has no content3201 when note is persisted3202 updates the spent time and populates timelog with note_id3203 adds a system note3204 when not specifying a date3205 does not include the date3206 when specifying a date3207 does include the date3208 /estimate3209 adds time estimate to noteable3210 note with command & text3211 /close, /label, /assign & /milestone3212 closes noteable, sets labels, assigns, and sets milestone to noteable3213 /reopen3214 opens the noteable3215 /milestone3216 on an incident3217 leaves the note empty3218 assigns the milestone3219 on a merge request3220 leaves the note empty3221 assigns the milestone3222 /remove_milestone3223 on an issue3224 leaves the note empty3225 removes the milestone3226 on an incident3227 leaves the note empty3228 removes the milestone3229 on a merge request3230 leaves the note empty3231 removes the milestone3232 behaves like note on noteable that supports quick actions3233 note with only command3234 /close, /label, /assign & /milestone3235 closes noteable, sets labels, assigns, and sets milestone to noteable, and leave no note3236 /relate3237 user cannot relate issues3238 does not create issue relation3239 user is allowed to relate issues3240 creates issue relation3241 /reopen3242 opens the noteable, and leave no note3243 /spend3244 when note is not persisted3245 adds time to noteable, adds timelog with nil note_id and has no content3246 when note is persisted3247 updates the spent time and populates timelog with note_id3248 adds a system note3249 when not specifying a date3250 does not include the date3251 when specifying a date3252 does include the date3253 /estimate3254 adds time estimate to noteable3255 note with command & text3256 /close, /label, /assign & /milestone3257 closes noteable, sets labels, assigns, and sets milestone to noteable3258 /reopen3259 opens the noteable3260 /milestone3261 on an incident3262 leaves the note empty3263 assigns the milestone3264 on a merge request3265 leaves the note empty3266 assigns the milestone3267 /remove_milestone3268 on an issue3269 leaves the note empty3270 removes the milestone3271 on an incident3272 leaves the note empty3273 removes the milestone3274 on a merge request3275 leaves the note empty3276 removes the milestone3277 CE restriction for issue assignees3278 /assign3279 adds only one assignee from the list3280Gitlab::Graphql::Pagination::Keyset::Connection3281 the relation has been preloaded3282 is loaded3283 does not error when accessing pagination information3284 can generate cursors3285 can read the next page3286 behaves like a connection with collection methods3287 responds to to_a3288 responds to size3289 responds to include?3290 responds to empty?3291 behaves like a redactable connection3292 no redactor set3293 contains the unwanted item3294 does not redact more than once3295 redactor is set3296 does not contain the unwanted item3297 does not redact more than once3298 #cursor_for3299 returns an encoded ID3300 when an order is specified3301 returns the encoded value of the order3302 includes the :id even when not specified in the order3303 when multiple orders are specified3304 returns the encoded value of the order3305 when multiple orders with SQL are specified3306 returns the encoded value of the order3307 #sliced_nodes3308 when before is passed3309 only returns the project before the selected one3310 when the sort order is descending3311 returns the correct nodes3312 when after is passed3313 only returns the project before the selected one3314 when the sort order is descending3315 returns the correct nodes3316 when both before and after are passed3317 returns the expected set3318 when multiple orders with nil values are defined3319 when ascending3320 behaves like nodes are in ascending order3321 when no cursor is passed3322 returns projects in ascending order3323 when before cursor value is not NULL3324 returns all projects before the cursor3325 when after cursor value is not NULL3326 returns all projects after the cursor3327 when before and after cursor3328 returns all projects after the cursor3329 when before cursor value is NULL3330 returns all projects before the cursor3331 when after cursor value is NULL3332 returns all projects after the cursor3333 when descending3334 behaves like nodes are in descending order3335 when no cursor is passed3336 only returns projects in descending order3337 when before cursor value is not NULL3338 returns all projects before the cursor3339 when after cursor value is not NULL3340 returns all projects after the cursor3341 when before and after cursor3342 returns all projects after the cursor3343 when before cursor value is NULL3344 returns all projects before the cursor3345 when after cursor value is NULL3346 returns all projects after the cursor3347 when ordering uses LOWER3348 when ascending3349 behaves like nodes are in ascending order3350 when no cursor is passed3351 returns projects in ascending order3352 when before cursor value is not NULL3353 returns all projects before the cursor3354 when after cursor value is not NULL3355 returns all projects after the cursor3356 when before and after cursor3357 returns all projects after the cursor3358 when descending3359 behaves like nodes are in descending order3360 when no cursor is passed3361 only returns projects in descending order3362 when before cursor value is not NULL3363 returns all projects before the cursor3364 when after cursor value is not NULL3365 returns all projects after the cursor3366 when before and after cursor3367 returns all projects after the cursor3368 when ordering by similarity3369 behaves like nodes are in descending order3370 when no cursor is passed3371 only returns projects in descending order3372 when before cursor value is not NULL3373 returns all projects before the cursor3374 when after cursor value is not NULL3375 returns all projects after the cursor3376 when before and after cursor3377 returns all projects after the cursor3378 when an invalid cursor is provided3379 raises an error3380 #nodes3381 behaves like connection with paged nodes3382 returns the collection limited to max page size3383 is a loaded memoized array3384 when `first` is passed3385 returns only the first elements3386 when `last` is passed3387 returns only the last elements3388 when both are passed3389 raises an error3390 when primary key is not in original order3391 is added to end3392 when there is no primary key3393 raises an error3394 #has_previous_page and #has_next_page3395 when default query3396 has no previous, but a next3397 when before is first item3398 has no previous, but a next3399 using `before`3400 when before is the last item3401 has no previous, but a next3402 when before and last specified3403 has a previous and a next3404 when before and last does request all remaining nodes3405 has a previous and a next3406 using `after`3407 when after is the first item3408 has a previous, and a next3409 when after and first specified3410 has a previous and a next3411 when before and last does request all remaining nodes3412 has a previous but no next3413CI YML Templates3414 that support autodevops3415 when including available templates in a CI YAML configuration3416 template_name: "5-Minute-Production-App.gitlab-ci.yml"3417 is expected to be valid3418 require default stages to be included3419 template_name: "Android.gitlab-ci.yml"3420 is expected to be valid3421 require default stages to be included3422 template_name: "Android-Fastlane.gitlab-ci.yml"3423 is expected to be valid3424 require default stages to be included3425 template_name: "Auto-DevOps.gitlab-ci.yml"3426 is expected to be valid3427 require default stages to be included3428 template_name: "Bash.gitlab-ci.yml"3429 is expected to be valid3430 require default stages to be included3431 template_name: "C++.gitlab-ci.yml"3432 is expected to be valid3433 require default stages to be included3434 template_name: "Chef.gitlab-ci.yml"3435 is expected to be valid3436 require default stages to be included3437 template_name: "Clojure.gitlab-ci.yml"3438 is expected to be valid3439 require default stages to be included3440 template_name: "Code-Quality.gitlab-ci.yml"3441 is expected to be valid3442 require default stages to be included3443 template_name: "Composer.gitlab-ci.yml"3444 is expected to be valid3445 require default stages to be included3446 template_name: "Crystal.gitlab-ci.yml"3447 is expected to be valid3448 require default stages to be included3449 template_name: "Dart.gitlab-ci.yml"3450 is expected to be valid3451 require default stages to be included3452 template_name: "Deploy-ECS.gitlab-ci.yml"3453 is expected to be valid3454 require default stages to be included3455 template_name: "Django.gitlab-ci.yml"3456 is expected to be valid3457 require default stages to be included3458 template_name: "Docker.gitlab-ci.yml"3459 is expected to be valid3460 require default stages to be included3461 template_name: "Elixir.gitlab-ci.yml"3462 is expected to be valid3463 require default stages to be included3464 template_name: "Flutter.gitlab-ci.yml"3465 is expected to be valid3466 require default stages to be included3467 template_name: "Getting-Started.gitlab-ci.yml"3468 is expected to be valid3469 require default stages to be included3470 template_name: "Go.gitlab-ci.yml"3471 is expected to be valid3472 require default stages to be included3473 template_name: "Gradle.gitlab-ci.yml"3474 is expected to be valid3475 require default stages to be included3476 template_name: "Grails.gitlab-ci.yml"3477 is expected to be valid3478 require default stages to be included3479 template_name: "Indeni.Cloudrail.gitlab-ci.yml"3480 is expected to be valid3481 require default stages to be included3482 template_name: "Julia.gitlab-ci.yml"3483 is expected to be valid3484 require default stages to be included3485 template_name: "LaTeX.gitlab-ci.yml"3486 is expected to be valid3487 require default stages to be included3488 template_name: "Laravel.gitlab-ci.yml"3489 is expected to be valid3490 require default stages to be included3491 template_name: "Managed-Cluster-Applications.gitlab-ci.yml"3492 is expected to be valid3493 require default stages to be included3494 template_name: "Maven.gitlab-ci.yml"3495 is expected to be valid3496 require default stages to be included3497 template_name: "Mono.gitlab-ci.yml"3498 is expected to be valid3499 require default stages to be included3500 template_name: "Nodejs.gitlab-ci.yml"3501 is expected to be valid3502 require default stages to be included3503 template_name: "OpenShift.gitlab-ci.yml"3504 is expected to be valid3505 require default stages to be included3506 template_name: "PHP.gitlab-ci.yml"3507 is expected to be valid3508 require default stages to be included3509 template_name: "Packer.gitlab-ci.yml"3510 is expected to be valid3511 require default stages to be included3512 template_name: "Python.gitlab-ci.yml"3513 is expected to be valid3514 require default stages to be included3515 template_name: "Ruby.gitlab-ci.yml"3516 is expected to be valid3517 require default stages to be included3518 template_name: "Rust.gitlab-ci.yml"3519 is expected to be valid3520 require default stages to be included3521 template_name: "Scala.gitlab-ci.yml"3522 is expected to be valid3523 require default stages to be included3524 template_name: "Serverless.gitlab-ci.yml"3525 is expected to be valid3526 require default stages to be included3527 template_name: "Swift.gitlab-ci.yml"3528 is expected to be valid3529 require default stages to be included3530 template_name: "dotNET.gitlab-ci.yml"3531 is expected to be valid3532 require default stages to be included3533 template_name: "dotNET-Core.gitlab-ci.yml"3534 is expected to be valid3535 require default stages to be included3536 template_name: "iOS-Fastlane.gitlab-ci.yml"3537 is expected to be valid3538 require default stages to be included3539 template_name: "npm.gitlab-ci.yml"3540 is expected to be valid3541 require default stages to be included3542 template_name: "Pages/Brunch.gitlab-ci.yml"3543 is expected to be valid3544 require default stages to be included3545 template_name: "Pages/Doxygen.gitlab-ci.yml"3546 is expected to be valid3547 require default stages to be included3548 template_name: "Pages/Gatsby.gitlab-ci.yml"3549 is expected to be valid3550 require default stages to be included3551 template_name: "Pages/HTML.gitlab-ci.yml"3552 is expected to be valid3553 require default stages to be included3554 template_name: "Pages/Harp.gitlab-ci.yml"3555 is expected to be valid3556 require default stages to be included3557 template_name: "Pages/Hexo.gitlab-ci.yml"3558 is expected to be valid3559 require default stages to be included3560 template_name: "Pages/Hugo.gitlab-ci.yml"3561 is expected to be valid3562 require default stages to be included3563 template_name: "Pages/Hyde.gitlab-ci.yml"3564 is expected to be valid3565 require default stages to be included3566 template_name: "Pages/JBake.gitlab-ci.yml"3567 is expected to be valid3568 require default stages to be included3569 template_name: "Pages/Jekyll.gitlab-ci.yml"3570 is expected to be valid3571 require default stages to be included3572 template_name: "Pages/Jigsaw.gitlab-ci.yml"3573 is expected to be valid3574 require default stages to be included3575 template_name: "Pages/Lektor.gitlab-ci.yml"3576 is expected to be valid3577 require default stages to be included3578 template_name: "Pages/Metalsmith.gitlab-ci.yml"3579 is expected to be valid3580 require default stages to be included3581 template_name: "Pages/Middleman.gitlab-ci.yml"3582 is expected to be valid3583 require default stages to be included3584 template_name: "Pages/Nanoc.gitlab-ci.yml"3585 is expected to be valid3586 require default stages to be included3587 template_name: "Pages/Octopress.gitlab-ci.yml"3588 is expected to be valid3589 require default stages to be included3590 template_name: "Pages/Pelican.gitlab-ci.yml"3591 is expected to be valid3592 require default stages to be included3593 template_name: "Pages/SwaggerUI.gitlab-ci.yml"3594 is expected to be valid3595 require default stages to be included3596 template_name: "Verify/Accessibility.gitlab-ci.yml"3597 is expected to be valid3598 require default stages to be included3599 template_name: "Verify/Browser-Performance.gitlab-ci.yml"3600 is expected to be valid3601 require default stages to be included3602 template_name: "Verify/FailFast.gitlab-ci.yml"3603 is expected to be valid3604 require default stages to be included3605 template_name: "Verify/Load-Performance-Testing.gitlab-ci.yml"3606 is expected to be valid3607 require default stages to be included3608 template_name: "Security/Cluster-Image-Scanning.gitlab-ci.yml"3609 is expected to be valid3610 require default stages to be included3611 template_name: "Security/Container-Scanning.gitlab-ci.yml"3612 is expected to be valid3613 require default stages to be included3614 template_name: "Security/Coverage-Fuzzing.gitlab-ci.yml"3615 is expected to be valid3616 require default stages to be included3617 template_name: "Security/DAST-On-Demand-Scan.gitlab-ci.yml"3618 is expected to be valid3619 require default stages to be included3620 template_name: "Security/DAST-Runner-Validation.gitlab-ci.yml"3621 is expected to be valid3622 require default stages to be included3623 template_name: "Security/Dependency-Scanning.gitlab-ci.yml"3624 is expected to be valid3625 require default stages to be included3626 template_name: "Security/License-Scanning.gitlab-ci.yml"3627 is expected to be valid3628 require default stages to be included3629 template_name: "Security/SAST.gitlab-ci.yml"3630 is expected to be valid3631 require default stages to be included3632 template_name: "Security/Secret-Detection.gitlab-ci.yml"3633 is expected to be valid3634 require default stages to be included3635 template_name: "Security/Secure-Binaries.gitlab-ci.yml"3636 is expected to be valid3637 require default stages to be included3638 when including unavailable templates in a CI YAML configuration3639 template_name: "Terraform.gitlab-ci.yml"3640 is expected not to be valid3641 that do not support autodevops3642 when DAST API template3643 with default stages3644 is expected not to be valid3645 with defined stages3646 is expected to be valid3647 require default stages to be included3648 when API Fuzzing template3649 with default stages3650 is expected not to be valid3651 with defined stages3652 is expected to be valid3653 require default stages to be included3654NotesFinder3655 #execute3656 finds notes on merge requests3657 finds notes on snippets3658 excludes notes on commits the author can't download3659 succeeds when no notes found3660 when notes filter is present3661 returns only user notes when using only_comments filter3662 returns only system notes when using only_activity filters3663 gets all notes3664 on restricted projects3665 publicly excludes notes on merge requests3666 publicly excludes notes on issues3667 publicly excludes notes on snippets3668 for target type3669 finds only notes for the selected type3670 for target3671 finds all notes3672 finds notes on merge requests3673 finds notes on snippets3674 finds notes on personal snippets3675 raises an exception for an invalid target_type3676 filters out old notes3677 confidential issue notes3678 returns notes if user can see the issue3679 raises an error if user can not see the issue3680 raises an error for project members with guest role3681 for explicit target3682 returns the expected notes3683 returns the expected notes when last_fetched_at is given3684 fails when nil is provided3685 sorting3686 allows sorting3687 defaults to sort by .fresh3688 .search3689 returns notes with matching content3690 returns notes with matching content regardless of the casing3691 returns commit notes user can access3692 confidential issues3693 returns notes with matching content if user can see the issue3694 does not return notes with matching content if user can not see the issue3695 does not return notes with matching content for project members with guest role3696 does not return notes with matching content for unauthenticated users3697 inlines SQL filters on subqueries for performance3698 project_id check3699 search filter3700 #target3701 for a issue target3702 returns the issue3703 for a merge request target3704 returns the merge_request3705 for a snippet target3706 returns the snippet3707 for a commit target3708 returns the commit3709 target_iid3710 finds issues by iid3711 finds merge requests by iid3712 returns nil if both target_id and target_iid are not given3713 prioritizes target_id over target_iid3714AlertManagement::Alert3715 associations3716 is expected to belong to project required:3717 is expected to belong to issue optional: true3718 is expected to belong to prometheus_alert optional: true3719 is expected to belong to environment optional: true3720 is expected to have many assignees through alert_assignees3721 is expected to have many notes3722 is expected to have many ordered_notes3723 is expected to have many user_mentions3724 validations3725 is expected to validate that :title cannot be empty/falsy3726 is expected to validate that :events cannot be empty/falsy3727 is expected to validate that :severity cannot be empty/falsy3728 is expected to validate that :status cannot be empty/falsy3729 is expected to validate that :started_at cannot be empty/falsy3730 is expected to validate that the length of :title is at most 2003731 is expected to validate that the length of :description is at most 10003732 is expected to validate that the length of :service is at most 1003733 is expected to validate that the length of :monitoring_tool is at most 1003734 fingerprint3735 adding an alert with the same fingerprint3736 same project, various states3737 existing_status_event: :resolve, new_status: :triggered, valid: true3738 is expected to be valid3739 existing_status_event: :resolve, new_status: :acknowledged, valid: true3740 is expected to be valid3741 existing_status_event: :resolve, new_status: :ignored, valid: true3742 is expected to be valid3743 existing_status_event: :resolve, new_status: :resolved, valid: true3744 is expected to be valid3745 existing_status_event: :trigger, new_status: :triggered, valid: false3746 is expected to be invalid3747 existing_status_event: :trigger, new_status: :acknowledged, valid: false3748 is expected to be invalid3749 existing_status_event: :trigger, new_status: :ignored, valid: false3750 is expected to be invalid3751 existing_status_event: :trigger, new_status: :resolved, valid: true3752 is expected to be valid3753 existing_status_event: :acknowledge, new_status: :triggered, valid: false3754 is expected to be invalid3755 existing_status_event: :acknowledge, new_status: :acknowledged, valid: false3756 is expected to be invalid3757 existing_status_event: :acknowledge, new_status: :ignored, valid: false3758 is expected to be invalid3759 existing_status_event: :acknowledge, new_status: :resolved, valid: true3760 is expected to be valid3761 existing_status_event: :ignore, new_status: :triggered, valid: false3762 is expected to be invalid3763 existing_status_event: :ignore, new_status: :acknowledged, valid: false3764 is expected to be invalid3765 existing_status_event: :ignore, new_status: :ignored, valid: false3766 is expected to be invalid3767 existing_status_event: :ignore, new_status: :resolved, valid: true3768 is expected to be valid3769 different project3770 is expected to be valid3771 hosts3772 over 255 total chars3773 is expected not to be valid3774 under 255 chars3775 is expected to be valid3776 nested array3777 is expected not to be valid3778 enums3779 is expected to define :severity as an enum, backed by an integer, with possible values ‹{critical: 0, high: 1, medium: 2, low: 3, info: 4, unknown: 5}›3780 scopes3781 .for_iid3782 is expected to contain exactly #<AlertManagement::Alert id:3 namespace438/project382^alert#1>3783 .for_fingerprint3784 is expected to contain exactly #<AlertManagement::Alert id:3 namespace438/project382^alert#1>3785 .for_environment3786 is expected to contain exactly #<AlertManagement::Alert id:3 namespace438/project382^alert#1>3787 .for_assignee_username3788 when matching assignee_username3789 is expected to contain exactly #<AlertManagement::Alert id:3 namespace438/project382^alert#1>3790 when unknown assignee_username3791 is expected to be empty3792 with empty assignee_username3793 is expected to be empty3794 .order_severity_with_open_prometheus_alert3795 is expected to eq [#<AlertManagement::Alert id:10 namespace441/project385^alert#2>, #<AlertManagement::Alert id:11 namespace441/project385^alert#3>]3796 .counts_by_project_id3797 is expected to eq {395=>2, 396=>2}3798 .open3799 is expected to contain exactly #<AlertManagement::Alert id:4 namespace438/project382^alert#2> and #<AlertManagement::Alert id:3 namespace438/project382^alert#1>3800 .not_resolved3801 is expected to contain exactly #<AlertManagement::Alert id:4 namespace438/project382^alert#2>, #<AlertManagement::Alert id:3 namespace438/project382^alert#1>, and #<AlertManagement::Alert id:6 namespace439/project383^alert#2>3802 behaves like a model including Escalatable3803 validations3804 is expected to validate that :status cannot be empty/falsy3805 when status is triggered3806 when resolved_at is blank3807 is expected to be valid3808 when resolved_at is present3809 is expected to be invalid3810 when status is acknowledged3811 when resolved_at is blank3812 is expected to be valid3813 when resolved_at is present3814 is expected to be invalid3815 when status is resolved3816 when resolved_at is blank3817 is expected to be invalid3818 when resolved_at is present3819 is expected to be valid3820 when status is ignored3821 when resolved_at is blank3822 is expected to be valid3823 when resolved_at is present3824 is expected to be invalid3825 scopes3826 .order_status3827 descending3828 is expected to eq [#<AlertManagement::Alert id:12 namespace442/project386^alert#1>, #<AlertManagement::Alert id:13 name...4 namespace444/project388^alert#1>, #<AlertManagement::Alert id:15 namespace445/project389^alert#1>]3829 ascending3830 is expected to eq [#<AlertManagement::Alert id:15 namespace445/project389^alert#1>, #<AlertManagement::Alert id:14 name...3 namespace443/project387^alert#1>, #<AlertManagement::Alert id:12 namespace442/project386^alert#1>]3831 .status_value3832 status: :triggered, status_value: 03833 returns status value by its name3834 status: :acknowledged, status_value: 13835 returns status value by its name3836 status: :resolved, status_value: 23837 returns status value by its name3838 status: :ignored, status_value: 33839 returns status value by its name3840 status: :unknown, status_value: nil3841 returns status value by its name3842 .status_name3843 raw_status: 0, status: :triggered3844 returns status name by its values3845 raw_status: 1, status: :acknowledged3846 returns status name by its values3847 raw_status: 2, status: :resolved3848 returns status name by its values3849 raw_status: 3, status: :ignored3850 returns status name by its values3851 raw_status: -1, status: nil3852 returns status name by its values3853 #trigger3854 when escalatable is in triggered state3855 does not change the escalatable status3856 when escalatable is not in triggered state3857 changes the escalatable status to triggered3858 resets resolved at3859 #acknowledge3860 changes the escalatable status to acknowledged3861 resets ended at3862 #resolve3863 when escalatable is already resolved3864 does not change the escalatable status3865 when escalatable is not resolved3866 changes escalatable status to "resolved"3867 #ignore3868 changes the escalatable status to ignored3869 resets ended at3870 #status_event_for3871 for_status: :triggered, event: :trigger3872 returns event by status name3873 for_status: "triggered", event: :trigger3874 returns event by status name3875 for_status: :acknowledged, event: :acknowledge3876 returns event by status name3877 for_status: "acknowledged", event: :acknowledge3878 returns event by status name3879 for_status: :resolved, event: :resolve3880 returns event by status name3881 for_status: "resolved", event: :resolve3882 returns event by status name3883 for_status: :ignored, event: :ignore3884 returns event by status name3885 for_status: "ignored", event: :ignore3886 returns event by status name3887 for_status: :unknown, event: nil3888 returns event by status name3889 for_status: nil, event: nil3890 returns event by status name3891 for_status: "", event: nil3892 returns event by status name3893 for_status: 1, event: nil3894 returns event by status name3895 .counts_by_status3896 is expected to eq {:acknowledged=>1, :ignored=>1, :resolved=>1, :triggered=>1}3897 .last_prometheus_alert_by_project_id3898 returns the latest alert for each project3899 .search3900 does not contain search string3901 is expected to be empty3902 title includes query3903 is expected to contain exactly #<AlertManagement::Alert id:3 namespace438/project382^alert#1>3904 description includes query3905 is expected to contain exactly #<AlertManagement::Alert id:3 namespace438/project382^alert#1>3906 service includes query3907 is expected to contain exactly #<AlertManagement::Alert id:3 namespace438/project382^alert#1>3908 monitoring tool includes query3909 is expected to contain exactly #<AlertManagement::Alert id:3 namespace438/project382^alert#1>3910 .reference_pattern3911 is expected to match "gitlab-org/gitlab^alert#123"3912 .link_reference_pattern3913 is expected to match "http://localhost/namespace438/project382/-/alert_management/1/details"3914 is expected not to match "http://localhost/gitlab-org/gitlab/alert_management/123"3915 is expected not to match "http://localhost/gitlab-org/gitlab/issues/123"3916 is expected not to match "gitlab-org/gitlab/-/alert_management/123"3917 .reference_valid?3918 ref: "123456", result: true3919 is expected to eq true3920 ref: "1", result: true3921 is expected to eq true3922 ref: "-1", result: false3923 is expected to eq false3924 ref: nil, result: false3925 is expected to eq false3926 ref: "123456891012345678901234567890", result: false3927 is expected to eq false3928 .open_status?3929 status: :triggered, is_open_status: true3930 returns true when the status is open status3931 status: :acknowledged, is_open_status: true3932 returns true when the status is open status3933 status: :resolved, is_open_status: false3934 returns true when the status is open status3935 status: :ignored, is_open_status: false3936 returns true when the status is open status3937 status: nil, is_open_status: false3938 returns true when the status is open status3939 #open?3940 returns true when the status is open status3941 #to_reference3942 is expected to eq "^alert#1"3943 #register_new_event!3944 increments the events count by 13945 #resolved_at3946 is expected to eq 2021-08-18 10:35:39.594917000 +00003947 #resolved_at=3948 sets ended_at3949Boards::Lists::MoveService3950 #execute3951 when board parent is a project3952 behaves like lists move service3953 keeps position of lists when list type is closed3954 when list type is set to label3955 keeps position of lists when new position is nil3956 keeps position of lists when new position is equal to old position3957 keeps position of lists when new position is negative3958 keeps position of lists when new position is equal to number of labels lists3959 keeps position of lists when new position is greater than number of labels lists3960 increments position of intermediate lists when new position is equal to first position3961 decrements position of intermediate lists when new position is equal to last position3962 decrements position of intermediate lists when new position is greater than old position3963 increments position of intermediate lists when new position is lower than old position3964 when board parent is a group3965 behaves like lists move service3966 keeps position of lists when list type is closed3967 when list type is set to label3968 keeps position of lists when new position is nil3969 keeps position of lists when new position is equal to old position3970 keeps position of lists when new position is negative3971 keeps position of lists when new position is equal to number of labels lists3972 keeps position of lists when new position is greater than number of labels lists3973 increments position of intermediate lists when new position is equal to first position3974 decrements position of intermediate lists when new position is equal to last position3975 decrements position of intermediate lists when new position is greater than old position3976 increments position of intermediate lists when new position is lower than old position3977Gitlab::UserAccess3978 #can_push_to_branch?3979 push to none protected branch3980 returns true if user is a maintainer3981 returns true if user is a developer3982 returns false if user is a reporter3983 push to branch in an internal project3984 will not infinitely loop when a project is internal3985 push to empty project3986 returns true if user is maintainer3987 when admin mode is enabled3988 returns true for admins3989 when admin mode is disabled3990 returns false for admins3991 when the user is a developer3992 default_branch_protection_level: 0, result: true3993 is expected to eq true3994 default_branch_protection_level: 1, result: true3995 is expected to eq true3996 default_branch_protection_level: 3, result: false3997 is expected to eq false3998 default_branch_protection_level: 2, result: false3999 is expected to eq false4000 push to protected branch4001 returns true if user is a maintainer4002 returns false if user is a developer4003 returns false if user is a reporter4004 returns false if branch does not exist4005 when admin mode is enabled4006 returns true for admins4007 when admin mode is disabled4008 returns false for admins4009 push to protected branch if allowed for developers4010 returns true if user is a maintainer4011 returns true if user is a developer4012 returns false if user is a reporter4013 allowing pushes to maintainers of forked projects4014 allows users that have push access to the canonical project to push to the MR branch4015 does not allow the user to push to other branches4016 does not allow the user to push if they do not have push access to the canonical project4017 merge to protected branch if allowed for developers4018 returns true if user is a maintainer4019 returns true if user is a developer4020 returns false if user is a reporter4021 when skip_collaboration_check is true4022 does not call Project#branch_allows_collaboration?4023 #can_create_tag?4024 push to none protected tag4025 returns true if user is a maintainer4026 returns true if user is a developer4027 returns false if user is a reporter4028 push to protected tag4029 returns true if user is a maintainer4030 returns false if user is a developer4031 returns false if user is a reporter4032 push to protected tag if allowed for developers4033 returns true if user is a maintainer4034 returns true if user is a developer4035 returns false if user is a reporter4036 #can_delete_branch?4037 delete unprotected branch4038 returns true if user is a maintainer4039 returns true if user is a developer4040 returns false if user is a reporter4041 delete protected branch4042 returns true if user is a maintainer4043 returns false if user is a developer4044 returns false if user is a reporter4045 #can_push_for_ref?4046 when user cannot push_code to a project repository (eg. as a guest)4047 is false4048 when user can push_code to a project repository (eg. as a developer)4049 is true4050DeploymentEntity4051 exposes internal deployment id4052 exposes nested information about branch4053 exposes status4054 exposes creation date4055 exposes deployed_at4056 when deployable is nil4057 does not expose deployable entry4058 when the pipeline has another manual action4059 returns another manual action4060 when user is a reporter4061 returns another manual action4062 when deployment details serialization was disabled4063 does not serialize manual actions details4064 scheduled_actions4065 when the same pipeline has a scheduled action4066 returns other scheduled actions4067 when the same pipeline does not have a scheduled action4068 does not return other actions4069 when deployment details serialization was disabled4070 does not serialize scheduled actions details4071 playable_build4072 when the deployment has a playable deployable4073 when this build is ready to be played4074 exposes only the play_path4075 when this build has failed4076 exposes the play_path and the retry_path4077 when the deployment does not have a playable deployable4078 is not exposed4079 when deployment details serialization was disabled4080 does not serialize deployment details4081 only exposes deployable name and path4082Ci::Ref4083 is expected to belong to project required:4084 state machine transitions4085 unlock artifacts transition4086 pipline is locked4087 initial_state: :unknown, action: :succeed!, count: 14088 when transitioning states4089 calls unlock artifacts service4090 initial_state: :unknown, action: :do_fail!, count: 04091 when transitioning states4092 calls unlock artifacts service4093 initial_state: :success, action: :succeed!, count: 14094 when transitioning states4095 calls unlock artifacts service4096 initial_state: :success, action: :do_fail!, count: 04097 when transitioning states4098 calls unlock artifacts service4099 initial_state: :failed, action: :succeed!, count: 14100 when transitioning states4101 calls unlock artifacts service4102 initial_state: :failed, action: :do_fail!, count: 04103 when transitioning states4104 calls unlock artifacts service4105 initial_state: :fixed, action: :succeed!, count: 14106 when transitioning states4107 calls unlock artifacts service4108 initial_state: :fixed, action: :do_fail!, count: 04109 when transitioning states4110 calls unlock artifacts service4111 initial_state: :broken, action: :succeed!, count: 14112 when transitioning states4113 calls unlock artifacts service4114 initial_state: :broken, action: :do_fail!, count: 04115 when transitioning states4116 calls unlock artifacts service4117 initial_state: :still_failing, action: :succeed, count: 14118 when transitioning states4119 calls unlock artifacts service4120 initial_state: :still_failing, action: :do_fail, count: 04121 when transitioning states4122 calls unlock artifacts service4123 pipeline is unlocked4124 does not call unlock artifacts service4125 .ensure_for4126 when pipeline is a branch pipeline4127 behaves like ensures ci_ref4128 when ci_ref already exists4129 returns an existing ci_ref4130 when ci_ref does not exist yet4131 creates a new ci_ref4132 when pipeline is a tag pipeline4133 behaves like ensures ci_ref4134 when ci_ref already exists4135 returns an existing ci_ref4136 when ci_ref does not exist yet4137 creates a new ci_ref4138 when pipeline is a detached merge request pipeline4139 behaves like ensures ci_ref4140 when ci_ref already exists4141 returns an existing ci_ref4142 when ci_ref does not exist yet4143 creates a new ci_ref4144 #last_finished_pipeline_id4145 when there are no finished pipelines4146 returns nil4147 when there are finished pipelines4148 returns the pipeline id4149 when the pipeline a dangling pipeline4150 returns nil4151 #update_status_by!4152 when pipeline status is success or failed4153 pipeline_status: :success, current_ref_status: :unknown, expected_ref_status: :success4154 transitions the status via state machine4155 pipeline_status: :success, current_ref_status: :success, expected_ref_status: :success4156 transitions the status via state machine4157 pipeline_status: :success, current_ref_status: :failed, expected_ref_status: :fixed4158 transitions the status via state machine4159 pipeline_status: :success, current_ref_status: :fixed, expected_ref_status: :success4160 transitions the status via state machine4161 pipeline_status: :success, current_ref_status: :broken, expected_ref_status: :fixed4162 transitions the status via state machine4163 pipeline_status: :success, current_ref_status: :still_failing, expected_ref_status: :fixed4164 transitions the status via state machine4165 pipeline_status: :failed, current_ref_status: :unknown, expected_ref_status: :failed4166 transitions the status via state machine4167 pipeline_status: :failed, current_ref_status: :success, expected_ref_status: :broken4168 transitions the status via state machine4169 pipeline_status: :failed, current_ref_status: :failed, expected_ref_status: :still_failing4170 transitions the status via state machine4171 pipeline_status: :failed, current_ref_status: :fixed, expected_ref_status: :broken4172 transitions the status via state machine4173 pipeline_status: :failed, current_ref_status: :broken, expected_ref_status: :still_failing4174 transitions the status via state machine4175 pipeline_status: :failed, current_ref_status: :still_failing, expected_ref_status: :still_failing4176 transitions the status via state machine4177 when pipeline status is success4178 updates the status4179 when pipeline status is canceled4180 is expected to eq :unknown4181 when pipeline status is skipped4182 behaves like no-op4183 does nothing and returns nil4184 when pipeline status is not complete4185 behaves like no-op4186 does nothing and returns nil4187 when pipeline is not the latest pipeline4188 behaves like no-op4189 does nothing and returns nil4190 when pipeline does not belong to the ci_ref4191 behaves like no-op4192 does nothing and returns nil4193Issues::CreateService4194 #execute4195 when params are valid4196 creates the issue with the given params4197 refreshes the number of open issues4198 moves the issue to the end, in an asynchronous worker4199 executes issue hooks when issue is not confidential4200 executes confidential issue hooks when issue is confidential4201 schedules a namespace onboarding create action worker4202 when skip_system_notes is true4203 does not call Issuable::CommonSystemNotesService4204 behaves like not an incident issue4205 has not incident as issue type4206 has not an incident label4207 issue is incident type4208 does create an incident label4209 behaves like incident issue4210 has incident as issue type4211 behaves like has incident label4212 has exactly one incident label4213 when invalid4214 does not apply an incident label prematurely4215 when current user cannot set issue metadata in the project4216 filters out params that cannot be set without the :set_issue_metadata permission4217 can create confidential issues4218 when label belongs to project group4219 assigns group labels4220 when label belongs to different project4221 does not assign label4222 when labels is nil4223 does not assign label4224 when labels is nil and label_ids is present4225 assigns group labels4226 when milestone belongs to different project4227 does not assign milestone4228 when assignee is set4229 invalidates open issues counter for assignees when issue is assigned4230 when duplicate label titles are given4231 assigns the label once4232 when sentry identifier is given4233 does not assign the sentry error4234 user is reporter or above4235 assigns the sentry error4236 after_save callback to store_mentions4237 when mentionable attributes change4238 saves mentions4239 when save fails4240 does not call store_mentions4241 issue create service4242 assignees4243 removes assignee when user id is invalid4244 removes assignee when user id is 04245 saves assignee when user id is valid4246 when issuable feature is private4247 removes not authorized assignee when project is Internal4248 removes not authorized assignee when project is Public4249 behaves like issuable record that supports quick actions4250 with labels in command only4251 attaches labels to issuable4252 with labels in params and command4253 attaches all labels to issuable4254 with assignee and milestone in command only4255 assigns and sets milestone to issuable4256 Quick actions4257 with assignee and milestone in params and command4258 assigns and sets milestone to issuable from command4259 resolving discussions4260 for a single discussion4261 resolves the discussion4262 added a system note to the discussion4263 assigns the title and description for the issue4264 can set nil explicitly to the title and description4265 for a merge request4266 resolves the discussion4267 added a system note to the discussion4268 assigns the title and description for the issue4269 can set nil explicitly to the title and description4270 checking spam4271 executes SpamActionService4272EmailsHelper4273 closure_reason_text4274 when given a MergeRequest4275 when user can read merge request4276 and format is text4277 returns plain text4278 and format is HTML4279 returns HTML4280 and format is unknown4281 returns plain text4282 when user cannot read merge request4283 does not have link to merge request4284 when given a String4285 when user can read commits4286 returns plain text4287 when user cannot read commits4288 returns plain text4289 when not given anything4290 returns empty string4291 notification_reason_text4292 reason_code: "own_activity", reason_text: " of your activity "4293 is expected to start with "You're receiving this email because"4294 is expected to include " of your activity "4295 is expected to end with "on localhost."4296 reason_code: "assigned", reason_text: " you have been assigned an item "4297 is expected to start with "You're receiving this email because"4298 is expected to include " you have been assigned an item "4299 is expected to end with "on localhost."4300 reason_code: "mentioned", reason_text: " you have been mentioned "4301 is expected to start with "You're receiving this email because"4302 is expected to include " you have been mentioned "4303 is expected to end with "on localhost."4304 reason_code: "", reason_text: " of your account "4305 is expected to start with "You're receiving this email because"4306 is expected to include " of your account "4307 is expected to end with "on localhost."4308 reason_code: nil, reason_text: " of your account "4309 is expected to start with "You're receiving this email because"4310 is expected to include " of your account "4311 is expected to end with "on localhost."4312 sanitize_name4313 when name contains a valid URL string4314 returns name with `.` replaced with `_` to prevent mail clients from auto-linking URLs4315 returns name as it is when it does not contain a URL4316 #say_hi4317 returns the greeting message for the given user4318 #say_hello4319 returns the greeting message for the given user4320 #two_factor_authentication_disabled_text4321 returns the message that 2FA is disabled4322 #re_enable_two_factor_authentication_text4323 format is html4324 returns HTML4325 format is not specified4326 returns text4327 #admin_changed_password_text4328 format is html4329 returns HTML4330 format is not specified4331 returns text4332 #contact_your_administrator_text4333 returns the message to contact the administrator4334 password_reset_token_valid_time4335 when time limit is less than 2 hours4336 displays the time in hours using a singular unit4337 when time limit is 2 or more hours4338 displays the time in hours using a plural unit4339 when time limit contains fractions of an hour4340 rounds down to the nearest hour4341 when time limit is 24 or more hours4342 displays the time in days using a singular unit4343 when time limit is 2 or more days4344 displays the time in days using a plural unit4345 when time limit contains fractions of a day4346 rounds down to the nearest day4347 #header_logo4348 there is a brand item with a logo4349 returns the brand header logo4350 there is a brand item without a logo4351 returns the default header logo4352 there is no brand item4353 returns the default header logo4354 #create_list_id_string4355 full_path: "01234", list_id_path: "01234"4356 ellipcizes different variants4357 full_path: "5/0123", list_id_path: "012.."4358 ellipcizes different variants4359 full_path: "45/012", list_id_path: "012.."4360 ellipcizes different variants4361 full_path: "012", list_id_path: "012"4362 ellipcizes different variants4363 full_path: "23/01", list_id_path: "01.23"4364 ellipcizes different variants4365 full_path: "2/01", list_id_path: "01.2"4366 ellipcizes different variants4367 full_path: "234/01", list_id_path: "01.."4368 ellipcizes different variants4369 full_path: "4/2/0", list_id_path: "0.2.4"4370 ellipcizes different variants4371 full_path: "45/2/0", list_id_path: "0.2.."4372 ellipcizes different variants4373 full_path: "5/23/0", list_id_path: "0.."4374 ellipcizes different variants4375 full_path: "0-2/5", list_id_path: "5.0-2"4376 ellipcizes different variants4377 full_path: "0_2/5", list_id_path: "5.0-2"4378 ellipcizes different variants4379 full_path: "0.2/5", list_id_path: "5.0-2"4380 ellipcizes different variants4381 Create realistic List-Id identifier4382 full_path: "gitlab-org/gitlab-ce", list_id_path: "gitlab-ce.gitlab-org"4383 produces the right List-Id4384 full_path: "project-name/subproject_name/my.project", list_id_path: "my-project.subproject-name.project-name"4385 produces the right List-Id4386 header and footer messages4387 when email_header_and_footer_enabled is enabled4388 returns header and footer messages4389 when header and footer messages are empty4390 returns nil4391 when header and footer messages are nil4392 returns nil4393 when email_header_and_footer_enabled is disabled4394 returns header and footer messages4395 #change_reviewer_notification_text4396 to new reviewers only4397 with no html tag4398 returns the expected output4399 with <strong> tag4400 returns the expected output4401 from previous reviewers to new reviewers4402 with no html tag4403 returns the expected output4404 with <strong> tag4405 returns the expected output4406 from previous reviewers to no reviewers4407 with no html tag4408 returns the expected output4409 with <strong> tag4410 returns the expected output4411 with a <script> tag in user's name4412 escapes the html tag4413 with url in user's name4414 sanitizes user's name4415Ci::UpdateBuildQueueService4416 pending builds queue push / pop4417 #push4418 when pending build can be created4419 creates a new pending build in transaction4420 increments queue push metric4421 when invalid transition is detected4422 raises an error4423 when duplicate entry exists4424 does nothing and returns build id4425 #pop4426 when pending build exists4427 removes pending build in a transaction4428 increments queue pop metric4429 when pending build does not exist4430 does nothing if there is no pending build to remove4431 when invalid transition is detected4432 raises an error4433 shared runner builds tracking4434 #track4435 when a shared runner build can be tracked4436 creates a new shared runner build tracking entry4437 increments new shared runner build metric4438 when invalid transition is detected4439 raises an error4440 when duplicate entry exists4441 does nothing and returns build id4442 #untrack4443 when shared runner build tracking entry exists4444 removes shared runner build4445 increments shared runner build done metric4446 when tracking entry does not exist4447 does nothing if there is no tracking entry to remove4448 when invalid transition is detected4449 raises an error4450 #tick4451 when updating specific runners4452 behaves like matching build4453 when there is a online runner that can pick build4454 avoids running redundant queries4455 behaves like refreshes runner4456 ticks runner queue value4457 behaves like mismatching tags4458 when there is no runner that can pick build due to tag mismatch4459 behaves like does not refresh runner4460 ticks runner queue value4461 behaves like recent runner queue4462 when there is runner with expired cache4463 behaves like does not refresh runner4464 ticks runner queue value4465 when the runner is assigned to another project4466 behaves like does not refresh runner4467 ticks runner queue value4468 when updating shared runners4469 behaves like matching build4470 when there is a online runner that can pick build4471 avoids running redundant queries4472 behaves like refreshes runner4473 ticks runner queue value4474 behaves like mismatching tags4475 when there is no runner that can pick build due to tag mismatch4476 behaves like does not refresh runner4477 ticks runner queue value4478 behaves like recent runner queue4479 when there is runner with expired cache4480 behaves like does not refresh runner4481 ticks runner queue value4482 when there is no runner that can pick build due to being disabled on project4483 behaves like does not refresh runner4484 ticks runner queue value4485 when updating group runners4486 behaves like matching build4487 when there is a online runner that can pick build4488 avoids running redundant queries4489 behaves like refreshes runner4490 ticks runner queue value4491 behaves like mismatching tags4492 when there is no runner that can pick build due to tag mismatch4493 behaves like does not refresh runner4494 ticks runner queue value4495 behaves like recent runner queue4496 when there is runner with expired cache4497 behaves like does not refresh runner4498 ticks runner queue value4499 when there is no runner that can pick build due to being disabled on project4500 behaves like does not refresh runner4501 ticks runner queue value4502 avoids N+1 queries4503 when ci_preload_runner_tags is enabled4504 does execute the same amount of queries regardless of number of runners4505 when ci_preload_runner_tags are disabled4506 does execute more queries for more runners4507Namespace::RootStorageStatisticsPolicy4508 #rules4509 when the namespace is a personal namespace4510 when the users is anonymous4511 is expected to be falsey4512 when the user is not the owner4513 is expected to be falsey4514 when the user is the owner4515 is expected to be truthy4516 when the namespace is a group4517 when the users is anonymous4518 is expected to be falsey4519 user_type: :non_member, outcome: false4520 is expected to eq false4521 when the user is external4522 is expected to eq false4523 user_type: :guest, outcome: false4524 is expected to eq false4525 when the user is external4526 is expected to eq false4527 user_type: :reporter, outcome: false4528 is expected to eq false4529 when the user is external4530 is expected to eq false4531 user_type: :developer, outcome: false4532 is expected to eq false4533 when the user is external4534 is expected to eq false4535 user_type: :maintainer, outcome: false4536 is expected to eq false4537 when the user is external4538 is expected to eq false4539 user_type: :owner, outcome: true4540 is expected to eq true4541 when the user is external4542 is expected to eq true4543 when the users is anonymous4544 is expected to be falsey4545 user_type: :non_member, outcome: false4546 is expected to eq false4547 when the user is external4548 is expected to eq false4549 user_type: :guest, outcome: false4550 is expected to eq false4551 when the user is external4552 is expected to eq false4553 user_type: :reporter, outcome: false4554 is expected to eq false4555 when the user is external4556 is expected to eq false4557 user_type: :developer, outcome: false4558 is expected to eq false4559 when the user is external4560 is expected to eq false4561 user_type: :maintainer, outcome: false4562 is expected to eq false4563 when the user is external4564 is expected to eq false4565 user_type: :owner, outcome: true4566 is expected to eq true4567 when the user is external4568 is expected to eq true4569 when the users is anonymous4570 is expected to be falsey4571 user_type: :non_member, outcome: false4572 is expected to eq false4573 when the user is external4574 is expected to eq false4575 user_type: :guest, outcome: false4576 is expected to eq false4577 when the user is external4578 is expected to eq false4579 user_type: :reporter, outcome: false4580 is expected to eq false4581 when the user is external4582 is expected to eq false4583 user_type: :developer, outcome: false4584 is expected to eq false4585 when the user is external4586 is expected to eq false4587 user_type: :maintainer, outcome: false4588 is expected to eq false4589 when the user is external4590 is expected to eq false4591 user_type: :owner, outcome: true4592 is expected to eq true4593 when the user is external4594 is expected to eq true4595UsersHelper4596 #user_link4597 links to the user's profile4598 has the user's email as title4599 #profile_tabs4600 with public profile4601 includes all the expected tabs4602 with private profile4603 is empty4604 #user_internal_regex_data4605 user_default_external: false, user_default_internal_regex: nil, result: {:user_internal_regex_pattern=>nil, :user_internal_regex_options=>nil}4606 is expected to eq {:user_internal_regex_options=>nil, :user_internal_regex_pattern=>nil}4607 user_default_external: false, user_default_internal_regex: "", result: {:user_internal_regex_pattern=>nil, :user_internal_regex_options=>nil}4608 is expected to eq {:user_internal_regex_options=>nil, :user_internal_regex_pattern=>nil}4609 user_default_external: false, user_default_internal_regex: "mockRegexPattern", result: {:user_internal_regex_pattern=>nil, :user_internal_regex_options=>nil}4610 is expected to eq {:user_internal_regex_options=>nil, :user_internal_regex_pattern=>nil}4611 user_default_external: true, user_default_internal_regex: nil, result: {:user_internal_regex_pattern=>nil, :user_internal_regex_options=>nil}4612 is expected to eq {:user_internal_regex_options=>nil, :user_internal_regex_pattern=>nil}4613 user_default_external: true, user_default_internal_regex: "", result: {:user_internal_regex_pattern=>nil, :user_internal_regex_options=>nil}4614 is expected to eq {:user_internal_regex_options=>nil, :user_internal_regex_pattern=>nil}4615 user_default_external: true, user_default_internal_regex: "mockRegexPattern", result: {:user_internal_regex_pattern=>"mockRegexPattern", :user_internal_regex_options=>"i"}4616 is expected to eq {:user_internal_regex_options=>"i", :user_internal_regex_pattern=>"mockRegexPattern"}4617 #current_user_menu_items4618 includes all default items4619 includes the profile tab if the user can read themself4620 includes the settings tab if the user can update themself4621 when terms are enforced4622 hides the profile and the settings tab4623 #user_badges_in_admin_section4624 with a blocked user4625 returns the blocked badge4626 with a pending approval user4627 returns the pending approval badge4628 with a banned user4629 returns the banned badge4630 with an admin user4631 returns the admin badge4632 with an external user4633 returns the external badge4634 with the current user4635 returns the "It's You" badge4636 with an external blocked admin4637 returns the blocked, admin and external badges4638 get badges for normal user4639 returns no badges4640 #can_force_email_confirmation?4641 for a user that is already confirmed4642 is expected to eq false4643 for a user that is not confirmed4644 is expected to eq true4645 #work_information4646 when neither organization nor job_title are present4647 is expected to be nil4648 when user parameter is nil4649 is expected to be nil4650 without schema markup4651 when both job_title and organization are present4652 returns job title concatenated with organization4653 when only organization is present4654 returns organization4655 when only job_title is present4656 returns job title4657 with schema markup4658 when both job_title and organization are present4659 returns job title concatenated with organization4660 when only organization is present4661 returns organization4662 when only job_title is present4663 returns job title4664 #user_display_name4665 for a confirmed user4666 is expected to eq "John Doe1068"4667 for an unconfirmed user4668 is expected to eq "Unconfirmed user"4669 when current user is an admin4670 is expected to eq "John Doe1070"4671 when the current user is self4672 is expected to eq "John Doe1072"4673 for a blocked user4674 is expected to eq "Blocked user"4675 #admin_users_data_attributes4676 users matches the serialized json4677 paths matches the schema4678 #confirm_user_data4679 sets `path` key correctly4680 sets `modal_attributes` key to valid json4681 when `user.unconfirmed_email` is set4682 sets `modal_attributes.messageHtml` correctly4683 when `user.unconfirmed_email` is not set4684 sets `modal_attributes.messageHtml` correctly4685 #admin_user_actions_data_attributes4686 user matches the serialized json4687 paths matches the schema4688Gitlab::DataBuilder::Push4689 .build4690 with changed files4691 returns commit hook data4692 without changed files4693 returns commit hook data without include deltas4694 .build_sample4695 is expected to be a kind of Hash4696 is expected to eq "1b12f15a11fc6e62177bef08f47bc7b5ce50b141"4697 is expected to eq "b83d6e391c22777fca1ed3012fce84f633d7fed0"4698 is expected to eq "refs/heads/master"4699 is expected to eq 34700 is expected to eq 34701 is expected to eq ["bar/branch-test.txt"]4702 is expected to eq []4703 is expected to eq []4704 contains project data4705 contains deprecated repository data4706 .sample_data4707 is expected to be a kind of Hash4708 is expected to eq "95790bf891e76fee5e1747ab589903a6a1f80f22"4709 is expected to eq "da1560886d4f094c3e6c9ef40349f7d38b5d27d7"4710 is expected to eq "refs/heads/master"4711 is expected to eq 154712 is expected to eq 14713 is expected to eq 14714 contains project data4715 .build4716 is expected to be a kind of Hash4717 is expected to eq "0000000000000000000000000000000000000000"4718 is expected to eq "5937ac0a7beb003549fc5fd26fc247adbce4a52e"4719 is expected to eq "8a2a6eb295bb170b34c24c76c49ed0e9b2eaf34b"4720 is expected to eq "refs/tags/v1.1.0"4721 is expected to eq nil4722 is expected to eq "John Doe1122"4723 is expected to eq "user351"4724 is expected to eq "public-email@example.com"4725 is expected to eq "https://www.gravatar.com/avatar/84a0abf57e4891626fa1a2490480de33?s=80&d=identicon"4726 is expected to eq 7124727 is expected to be a kind of Hash4728 is expected to be empty4729 is expected to be zero4730 contains project data4731 contains deprecated repository data4732 does not raise an error when given nil commits4733 .build_bulk4734 is expected to eq {:action=>:created, :ref_count=>2, :ref_type=>:branch}4735AvatarsHelper4736 #project_icon & #group_icon4737 when providing a project4738 behaves like resource with a default avatar4739 returns a default avatar div4740 behaves like resource with a custom avatar4741 returns a custom avatar image4742 when Gitaly is unavailable4743 handles Gitaly exception gracefully4744 behaves like resource with a default avatar4745 returns a default avatar div4746 when Gitaly request is taking too long4747 handles Gitaly exception gracefully4748 behaves like resource with a default avatar4749 returns a default avatar div4750 when providing a group4751 behaves like resource with a default avatar4752 returns a default avatar div4753 behaves like resource with a custom avatar4754 returns a custom avatar image4755 #avatar_icon_for4756 prefers the user to retrieve the avatar_url4757 falls back to email lookup if no user given4758 #avatar_icon_for_email4759 caches the request4760 behaves like returns avatar for email4761 using an email4762 when there is a matching user4763 returns a relative URL for the avatar4764 when no user exists for the email4765 calls gravatar_icon4766 without an email passed4767 calls gravatar_icon4768 #avatar_icon_for_user4769 with a user object passed4770 returns a relative URL for the avatar4771 without a user object passed4772 calls gravatar_icon4773 #gravatar_icon4774 with Gravatar disabled4775 returns a generic avatar4776 with Gravatar enabled4777 returns a generic avatar when email is blank4778 returns a valid Gravatar URL4779 uses HTTPs when configured4780 returns custom gravatar path when gravatar_url is set4781 accepts a custom size argument4782 defaults size to 40@2x when given an invalid size4783 accepts a scaling factor4784 ignores case and surrounding whitespace4785 #user_avatar4786 links to the user's profile4787 has the user's name as title4788 contains the user's avatar image4789 #user_avatar_without_link4790 displays user avatar4791 with css_class parameter4792 uses provided css_class4793 with size parameter4794 uses provided size4795 with url parameter4796 uses provided url4797 with lazy parameter4798 adds `lazy` class to class list, sets `data-src` with avatar URL and `src` with placeholder image4799 with has_tooltip parameter4800 with has_tooltip set to true4801 adds has-tooltip4802 with has_tooltip set to false4803 does not add has-tooltip or data container4804 with user_name parameter4805 uses user_name and user_email parameter if user is not present4806 with user parameter4807 prefers user parameter4808 with only_path parameter set to false4809 with user parameter4810 will return avatar with a full path4811 with user_name and user_email4812 will return avatar with a full path4813 with unregistered email address4814 will return default alt text for avatar4815 #avatar_without_link4816 with users4817 displays user avatar4818 with groups4819 displays group avatar4820Integrations::MicrosoftTeams4821 Validations4822 when integration is active4823 is expected to validate that :webhook cannot be empty/falsy4824 behaves like issue tracker integration URL attribute4825 is expected to allow :webhook to be ‹"https://example.com"›4826 is expected not to allow :webhook to be ‹"example.com"›4827 is expected not to allow :webhook to be ‹"ftp://example.com"›4828 is expected not to allow :webhook to be ‹"herp-and-derp"›4829 when integration is inactive4830 is expected not to validate that :webhook cannot be empty/falsy4831 .supported_events4832 does not support deployment_events4833 #execute4834 with push events4835 calls Microsoft Teams API for push events4836 specifies the webhook when it is configured4837 with issue events4838 calls Microsoft Teams API4839 with merge events4840 calls Microsoft Teams API4841 with wiki page events4842 calls Microsoft Teams API4843 Note events4844 when commit comment event executed4845 calls Microsoft Teams API for commit comment events4846 when merge request comment event executed4847 calls Microsoft Teams API for merge request comment events4848 when issue comment event executed4849 calls Microsoft Teams API for issue comment events4850 when snippet comment event executed4851 calls Microsoft Teams API for snippet comment events4852 Pipeline events4853 with failed pipeline4854 behaves like call Microsoft Teams API4855 calls Microsoft Teams API for pipeline events4856 with succeeded pipeline4857 with default to notify_only_broken_pipelines4858 does not call Microsoft Teams API for pipeline events4859 with setting notify_only_broken_pipelines to false4860 behaves like call Microsoft Teams API4861 calls Microsoft Teams API for pipeline events4862 with default branch4863 only notify for the default branch4864 behaves like call Microsoft Teams API4865 calls Microsoft Teams API for pipeline events4866 notify for only protected branches4867 behaves like does not call Microsoft Teams API4868 does not call Microsoft Teams API for pipeline events4869 notify for only default and protected branches4870 behaves like call Microsoft Teams API4871 calls Microsoft Teams API for pipeline events4872 notify for all branches4873 behaves like call Microsoft Teams API4874 calls Microsoft Teams API for pipeline events4875 with protected branch4876 only notify for the default branch4877 behaves like does not call Microsoft Teams API4878 does not call Microsoft Teams API for pipeline events4879 notify for only protected branches4880 behaves like call Microsoft Teams API4881 calls Microsoft Teams API for pipeline events4882 notify for only default and protected branches4883 behaves like call Microsoft Teams API4884 calls Microsoft Teams API for pipeline events4885 notify for all branches4886 behaves like call Microsoft Teams API4887 calls Microsoft Teams API for pipeline events4888 with neither protected nor default branch4889 only notify for the default branch4890 behaves like does not call Microsoft Teams API4891 does not call Microsoft Teams API for pipeline events4892 notify for only protected branches4893 behaves like does not call Microsoft Teams API4894 does not call Microsoft Teams API for pipeline events4895 notify for only default and protected branches4896 behaves like does not call Microsoft Teams API4897 does not call Microsoft Teams API for pipeline events4898 notify for all branches4899 behaves like call Microsoft Teams API4900 calls Microsoft Teams API for pipeline events4901Gitlab::HashedStorage::Migrator4902 #bulk_schedule_migration4903 schedules job to HashedStorage::MigratorWorker4904 #bulk_schedule_rollback4905 schedules job to HashedStorage::RollbackerWorker4906 #bulk_migrate4907 enqueue jobs to HashedStorage::ProjectMigrateWorker4908 rescues and log exceptions4909 delegates each project in specified range to #migrate4910 has all projects migrated and set as writable4911 #bulk_rollback4912 enqueue jobs to HashedStorage::ProjectRollbackWorker4913 rescues and log exceptions4914 delegates each project in specified range to #rollback4915 has all projects rolledback and set as writable4916 #migrate4917 enqueues project migration job4918 rescues and log exceptions4919 migrates project storage4920 has migrated project set as writable4921 when project is already on hashed storage4922 doesnt enqueue any migration job4923 returns false4924 #rollback4925 enqueues project rollback job4926 rescues and log exceptions4927 rolls-back project storage4928 has rolled-back project set as writable4929 when project is already on legacy storage4930 doesnt enqueue any rollback job4931 returns false4932 migration_pending?4933 returns true when there are MigratorWorker jobs scheduled4934 returns true when there are ProjectMigrateWorker jobs scheduled4935 returns false when queues are empty4936 rollback_pending?4937 returns true when there are RollbackerWorker jobs scheduled4938 returns true when there are jobs scheduled4939 returns false when queues are empty4940 abort_rollback!4941 removes any rollback related scheduled job4942IssuePlacementWorker4943 has the `until_executed` deduplicate strategy4944 #perform4945 passing an issue ID4946 behaves like running the issue placement worker4947 places all issues created at most 5 minutes before this one at the end, most recent last4948 schedules rebalancing if needed4949 anticipates the failure to place the issues, and schedules rebalancing4950 there are more than QUERY_LIMIT unplaced issues4951 limits the sweep to QUERY_LIMIT records, and reschedules placement4952 is eventually correct4953 we are passed bad IDs4954 does move any issues to the end4955 the project_id refers to an empty project4956 does move any issues to the end4957 when block_issue_repositioning is enabled4958 does not run repositioning tasks4959 passing a project ID4960 behaves like running the issue placement worker4961 places all issues created at most 5 minutes before this one at the end, most recent last4962 schedules rebalancing if needed4963 anticipates the failure to place the issues, and schedules rebalancing4964 there are more than QUERY_LIMIT unplaced issues4965 limits the sweep to QUERY_LIMIT records, and reschedules placement4966 is eventually correct4967 we are passed bad IDs4968 does move any issues to the end4969 the project_id refers to an empty project4970 does move any issues to the end4971Gitlab::UsageDataCounters::HLLRedisCounter4972 .categories4973 gets all unique category names4974 known_events4975 .events_for_category4976 gets the event names for given category4977 .track_event4978 with redis_hll_tracking4979 tracks the event when feature enabled4980 does not track the event with feature flag disabled4981 with event feature flag set4982 tracks the event when feature enabled4983 does not track the event with feature flag disabled4984 with no event feature flag set4985 tracks the event4986 when usage_ping is disabled4987 does not track the event4988 when usage_ping is enabled4989 tracks event when using symbol4990 tracks events with multiple values4991 raise error if metrics don't have same aggregation4992 raise error if metrics of unknown event4993 reports an error if Feature.enabled raise an error4994 for weekly events4995 sets the keys in Redis to expire automatically after the given expiry time4996 sets the keys in Redis to expire automatically after 6 weeks by default4997 for daily events4998 sets the keys in Redis to expire after the given expiry time4999 sets the keys in Redis to expire after 29 days by default5000 .track_event_in_context5001 with valid contex5002 increments context event counter5003 tracks events with multiple values5004 with empty context5005 does not increment a counter5006 when sending invalid context5007 does not increment a counter5008 .unique_events5009 returns 0 if there are no keys for the given events5010 raise error if metrics are not in the same slot5011 raise error if metrics are not in the same category5012 raise error if metrics don't have same aggregation5013 when data for the last complete week5014 is expected to eq 15015 when data for the last 4 complete weeks5016 is expected to eq 25017 when data for the week 4 weeks ago5018 is expected to eq 15019 when using symbol as parameter5020 is expected to eq 15021 when using daily aggregation5022 is expected to eq 25023 is expected to eq 35024 is expected to eq 15025 when no slot is set5026 is expected to eq 15027 when data crosses into new year5028 does not raise error5029 .weekly_redis_keys5030 returns 1 key for last for week5031 returns 4 key for last for weeks5032 start_date: "2020-12-21", end_date: "2020-12-21", keys: []5033 returns the correct keys5034 start_date: "2020-12-21", end_date: "2020-12-20", keys: []5035 returns the correct keys5036 start_date: "2020-12-21", end_date: "2020-11-21", keys: []5037 returns the correct keys5038 start_date: "2021-01-01", end_date: "2020-12-28", keys: []5039 returns the correct keys5040 start_date: "2020-12-21", end_date: "2020-12-28", keys: ["g_{compliance}_dashboard-2020-52"]5041 returns the correct keys5042 start_date: "2020-12-21", end_date: "2021-01-01", keys: ["g_{compliance}_dashboard-2020-52"]5043 returns the correct keys5044 start_date: "2020-12-27", end_date: "2021-01-01", keys: ["g_{compliance}_dashboard-2020-52"]5045 returns the correct keys5046 start_date: "2020-12-26", end_date: "2021-01-04", keys: ["g_{compliance}_dashboard-2020-52", "g_{compliance}_dashboard-2020-53"]5047 returns the correct keys5048 start_date: "2020-12-26", end_date: "2021-01-11", keys: ["g_{compliance}_dashboard-2020-52", "g_{compliance}_dashboard-2020-53", "g_{compliance}_dashboard-2021-01"]5049 returns the correct keys5050 start_date: "2020-12-26", end_date: "2021-01-17", keys: ["g_{compliance}_dashboard-2020-52", "g_{compliance}_dashboard-2020-53", "g_{compliance}_dashboard-2021-01"]5051 returns the correct keys5052 start_date: "2020-12-26", end_date: "2021-01-18", keys: ["g_{compliance}_dashboard-2020-52", "g_{compliance}_dashboard-2020-53", "g_{compliance}_dashboard-2021-01", "g_{compliance}_dashboard-2021-02"]5053 returns the correct keys5054 context level tracking5055 with correct arguments5056 event_names: ["event_name_1"], context: "default", value: 25057 is expected to eq 25058 event_names: ["event_name_1"], context: "", value: 05059 is expected to eq 05060 event_names: ["event_name_2"], context: "", value: 05061 is expected to eq 05062 with invalid context5063 raise error5064 unique_events_data5065 returns the number of unique events for all known events5066 .calculate_events_union5067 calculates union of given events5068 validates and raise exception if events has mismatched slot or aggregation5069 returns 0 if there are no keys for given events5070 .weekly_time_range5071 return hash with weekly time range boundaries5072 .monthly_time_range5073 return hash with monthly time range boundaries5074IncidentManagement::IssuableEscalationStatus5075 is expected to be valid5076 associations5077 is expected to belong to issue required:5078 validatons5079 is expected to validate that :issue cannot be empty/falsy5080 is expected to validate that :issue is case-sensitively unique5081 behaves like a model including Escalatable5082 validations5083 is expected to validate that :status cannot be empty/falsy5084 when status is triggered5085 when resolved_at is blank5086 is expected to be valid5087 when resolved_at is present5088 is expected to be invalid5089 when status is acknowledged5090 when resolved_at is blank5091 is expected to be valid5092 when resolved_at is present5093 is expected to be invalid5094 when status is resolved5095 when resolved_at is blank5096 is expected to be invalid5097 when resolved_at is present5098 is expected to be valid5099 when status is ignored5100 when resolved_at is blank5101 is expected to be valid5102 when resolved_at is present5103 is expected to be invalid5104 scopes5105 .order_status5106 descending5107 is expected to eq [#<IncidentManagement::IssuableEscalationStatus id: 2, created_at: "2021-08-18 10:39:10.851100000 +00...00 +0000", issue_id: 851, policy_id: nil, escalations_started_at: nil, resolved_at: nil, status: 3>]5108 ascending5109 is expected to eq [#<IncidentManagement::IssuableEscalationStatus id: 5, created_at: "2021-08-18 10:39:11.546453000 +00...00 +0000", issue_id: 848, policy_id: nil, escalations_started_at: nil, resolved_at: nil, status: 0>]5110 .status_value5111 status: :triggered, status_value: 05112 returns status value by its name5113 status: :acknowledged, status_value: 15114 returns status value by its name5115 status: :resolved, status_value: 25116 returns status value by its name5117 status: :ignored, status_value: 35118 returns status value by its name5119 status: :unknown, status_value: nil5120 returns status value by its name5121 .status_name5122 raw_status: 0, status: :triggered5123 returns status name by its values5124 raw_status: 1, status: :acknowledged5125 returns status name by its values5126 raw_status: 2, status: :resolved5127 returns status name by its values5128 raw_status: 3, status: :ignored5129 returns status name by its values5130 raw_status: -1, status: nil5131 returns status name by its values5132 #trigger5133 when escalatable is in triggered state5134 does not change the escalatable status5135 when escalatable is not in triggered state5136 changes the escalatable status to triggered5137 resets resolved at5138 #acknowledge5139 changes the escalatable status to acknowledged5140 resets ended at5141 #resolve5142 when escalatable is already resolved5143 does not change the escalatable status5144 when escalatable is not resolved5145 changes escalatable status to "resolved"5146 #ignore5147 changes the escalatable status to ignored5148 resets ended at5149 #status_event_for5150 for_status: :triggered, event: :trigger5151 returns event by status name5152 for_status: "triggered", event: :trigger5153 returns event by status name5154 for_status: :acknowledged, event: :acknowledge5155 returns event by status name5156 for_status: "acknowledged", event: :acknowledge5157 returns event by status name5158 for_status: :resolved, event: :resolve5159 returns event by status name5160 for_status: "resolved", event: :resolve5161 returns event by status name5162 for_status: :ignored, event: :ignore5163 returns event by status name5164 for_status: "ignored", event: :ignore5165 returns event by status name5166 for_status: :unknown, event: nil5167 returns event by status name5168 for_status: nil, event: nil5169 returns event by status name5170 for_status: "", event: nil5171 returns event by status name5172 for_status: 1, event: nil5173 returns event by status name5174Gitlab::Middleware::ReadOnly5175 when database is read-only5176 behaves like write access for a read-only GitLab instance5177 normal requests to a read-only GitLab instance5178 expects PATCH requests to be disallowed5179 expects PUT requests to be disallowed5180 expects POST requests to be disallowed5181 expects a internal POST request to be allowed after a disallowed request5182 expects DELETE requests to be disallowed5183 expects POST of new file that looks like an LFS batch url to be disallowed5184 returns last_vistited_url for disallowed request5185 allowlisted requests5186 expects a POST internal request to be allowed5187 expects a POST internal request with trailing slash to be allowed5188 expects a graphql request to be allowed5189 expects a graphql request with trailing slash to be allowed5190 relative URL is configured5191 expects a graphql request to be allowed5192 expects a graphql request with trailing slash to be allowed5193 sidekiq admin requests5194 mounted_at: ""5195 allows requests5196 allows requests with trailing slash5197 mounted_at: "/"5198 allows requests5199 allows requests with trailing slash5200 mounted_at: "/gitlab"5201 allows requests5202 allows requests with trailing slash5203 mounted_at: "/gitlab/"5204 allows requests5205 allows requests with trailing slash5206 mounted_at: "/gitlab/gitlab"5207 allows requests5208 allows requests with trailing slash5209 mounted_at: "/gitlab/gitlab/"5210 allows requests5211 allows requests with trailing slash5212 description: "LFS request to batch", path: "/root/rouge.git/info/lfs/objects/batch"5213 expects a POST description: "LFS request to batch", path: "/root/rouge.git/info/lfs/objects/batch" URL to be allowed5214 expects a POST description: "LFS request to batch", path: "/root/rouge.git/info/lfs/objects/batch" URL with trailing slash to be allowed5215 description: "request to git-upload-pack", path: "/root/rouge.git/git-upload-pack"5216 expects a POST description: "request to git-upload-pack", path: "/root/rouge.git/git-upload-pack" URL to be allowed5217 expects a POST description: "request to git-upload-pack", path: "/root/rouge.git/git-upload-pack" URL with trailing slash to be allowed5218 description: "user sign out", path: "/users/sign_out"5219 expects a POST description: "user sign out", path: "/users/sign_out" URL to be allowed5220 expects a POST description: "user sign out", path: "/users/sign_out" URL with trailing slash to be allowed5221 description: "admin session", path: "/admin/session"5222 expects a POST description: "admin session", path: "/admin/session" URL to be allowed5223 expects a POST description: "admin session", path: "/admin/session" URL with trailing slash to be allowed5224 description: "admin session destroy", path: "/admin/session/destroy"5225 expects a POST description: "admin session destroy", path: "/admin/session/destroy" URL to be allowed5226 expects a POST description: "admin session destroy", path: "/admin/session/destroy" URL with trailing slash to be allowed5227 description: "LFS request to locks verify", path: "/root/rouge.git/info/lfs/locks/verify"5228 expects a POST description: "LFS request to locks verify", path: "/root/rouge.git/info/lfs/locks/verify" URL not to be allowed5229 expects a POST description: "LFS request to locks verify", path: "/root/rouge.git/info/lfs/locks/verify" URL with trailing slash not to be allowed5230 description: "LFS request to locks create", path: "/root/rouge.git/info/lfs/locks"5231 expects a POST description: "LFS request to locks create", path: "/root/rouge.git/info/lfs/locks" URL not to be allowed5232 expects a POST description: "LFS request to locks create", path: "/root/rouge.git/info/lfs/locks" URL with trailing slash not to be allowed5233 description: "LFS request to locks unlock", path: "/root/rouge.git/info/lfs/locks/1/unlock"5234 expects a POST description: "LFS request to locks unlock", path: "/root/rouge.git/info/lfs/locks/1/unlock" URL not to be allowed5235 expects a POST description: "LFS request to locks unlock", path: "/root/rouge.git/info/lfs/locks/1/unlock" URL with trailing slash not to be allowed5236 JSON requests to a read-only GitLab instance5237 expects PATCH requests to be disallowed5238 expects PUT requests to be disallowed5239 expects POST requests to be disallowed5240 expects DELETE requests to be disallowed5241Gitlab::Gfm::UploadsRewriter5242 text contains links to uploads5243 does not rewrite plain links as embedded5244 file are stored locally5245 #rewrite5246 rewrites content5247 copies files5248 does not remove old files5249 generates a new secret for each file5250 skips nil files do5251 files are stored remotely5252 #rewrite5253 rewrites content5254 copies files5255 does not remove old files5256 generates a new secret for each file5257 skips nil files do5258 #needs_rewrite?5259 is expected to eq true5260 #files5261 is expected to be a kind of Array5262Banzai::Filter::IssuableStateFilter5263 ignores non-GFM links5264 ignores non-issuable links5265 ignores issuable links with empty content5266 ignores issuable links with custom anchor5267 ignores issuable links to specific comments5268 ignores merge request links to diffs tab5269 handles cross project references5270 handles references from group scopes5271 skips cross project references if the user cannot read cross project5272 does not append state when filter is not enabled5273 when project is in pending delete5274 does not append issue state5275 for issue references5276 ignores open issue references5277 appends state to closed issue references5278 appends state to moved issue references5279 for merge request references5280 ignores open merge request references5281 ignores locked merge request references5282 appends state to closed merge request references5283 appends state to merged merge request references5284DeprecatedAssignee5285 #assignee_id=5286 creates the merge_request_assignees relation5287 nullifies the assignee_id column5288 when relation already exists5289 overwrites existing assignees5290 #assignee=5291 creates the merge_request_assignees relation5292 nullifies the assignee_id column5293 when relation already exists5294 overwrites existing assignees5295 #assignee_id5296 returns the first assignee ID5297 #assignees5298 when assignee_id exists and there is no relation5299 creates the relation5300 nullifies the assignee_id5301 when DB is read-only5302 returns a users relation5303 returns an empty relation if no assignee_id is set5304 #assignee_ids5305 when assignee_id exists and there is no relation5306 creates the relation5307 nullifies the assignee_id5308 when DB is read-only5309 returns a list of user IDs5310 returns an empty relation if no assignee_id is set5311ReleasePresenter5312 #commit_path5313 returns commit path5314 when commit is not found5315 is expected to be nil5316 when user is guest5317 is expected to be nil5318 #tag_path5319 returns tag path5320 when user is guest5321 is expected to be nil5322 #self_url5323 returns its own url5324 when user is guest5325 is expected to be nil5326 #opened_merge_requests_url5327 returns merge requests url with state=open5328 #merged_merge_requests_url5329 returns merge requests url with state=merged5330 #closed_merge_requests_url5331 returns merge requests url with state=closed5332 #opened_issues_url5333 returns issues url with state=open5334 #closed_issues_url5335 returns issues url with state=closed5336 #edit_url5337 returns release edit url5338 when a user is not allowed to update a release5339 is expected to be nil5340 #assets_count5341 returns the number of assets associated to the release5342 when a user is not allowed to download release sources5343 returns the number of all non-source assets associated to the release5344 #name5345 returns the release name5346 when a user is not allowed to access any repository information5347 returns a replacement name to avoid potentially leaking tag information5348ProjectAPICompatibility5349 converts build_git_strategy=fetch to build_allow_git_fetch=true5350 converts build_git_strategy=clone to build_allow_git_fetch=false5351 #auto_devops_enabled5352 initial: :missing, final: nil5353 sets the correct value5354 initial: :missing, final: false5355 sets the correct value5356 initial: :missing, final: true5357 sets the correct value5358 initial: nil, final: nil5359 sets the correct value5360 initial: nil, final: false5361 sets the correct value5362 initial: nil, final: true5363 sets the correct value5364 initial: false, final: nil5365 sets the correct value5366 initial: false, final: false5367 sets the correct value5368 initial: false, final: true5369 sets the correct value5370 initial: true, final: nil5371 sets the correct value5372 initial: true, final: false5373 sets the correct value5374 initial: true, final: true5375 sets the correct value5376 #auto_devops_deploy_strategy5377 initial: :missing, final: "continuous"5378 sets the correct value5379 initial: :missing, final: "manual"5380 sets the correct value5381 initial: :missing, final: "timed_incremental"5382 sets the correct value5383 initial: "continuous", final: "continuous"5384 sets the correct value5385 initial: "continuous", final: "manual"5386 sets the correct value5387 initial: "continuous", final: "timed_incremental"5388 sets the correct value5389 initial: "manual", final: "continuous"5390 sets the correct value5391 initial: "manual", final: "manual"5392 sets the correct value5393 initial: "manual", final: "timed_incremental"5394 sets the correct value5395 initial: "timed_incremental", final: "continuous"5396 sets the correct value5397 initial: "timed_incremental", final: "manual"5398 sets the correct value5399 initial: "timed_incremental", final: "timed_incremental"5400 sets the correct value5401Releases::Link5402 associations5403 is expected to belong to release required:5404 validation5405 is expected to validate that :url cannot be empty/falsy5406 is expected to validate that :name cannot be empty/falsy5407 is expected to validate that the length of :filepath is at most 1285408 when url is invalid5409 will be invalid5410 when duplicate name is added to a release5411 raises an error5412 when duplicate url is added to a release5413 raises an error5414 when duplicate filepath is added to a release5415 raises an error5416 .sorted5417 returns a list of links by created_at order5418 #internal?5419 is expected to be truthy5420 when link does not include project web url5421 is expected to be falsy5422 #external?5423 is expected to be truthy5424 supported protocols5425 protocol: "http"5426 will be valid5427 protocol: "https"5428 will be valid5429 protocol: "ftp"5430 will be valid5431 unsupported protocol5432 for torrent5433 will be invalid5434 FILEPATH_REGEX with table5435 reason: "cannot contain `//`", filepath: "/https//www.example.com", result: #<RSpec::Matchers::BuiltIn::BePredicate:0x00007fbb1f062d40 @method_name=:be_invalid, @args=[], @block=nil>5436 is expected to be invalid5437 reason: "cannot start with `//`", filepath: "//www.example.com", result: #<RSpec::Matchers::BuiltIn::BePredicate:0x00007fbb1f062a20 @method_name=:be_invalid, @args=[], @block=nil>5438 is expected to be invalid5439 reason: "cannot contain a `?`", filepath: "/example.com/?stuff=true", result: #<RSpec::Matchers::BuiltIn::BePredicate:0x00007fbb1f062700 @method_name=:be_invalid, @args=[], @block=nil>5440 is expected to be invalid5441 reason: "cannot contain a `:`", filepath: "/example:5000", result: #<RSpec::Matchers::BuiltIn::BePredicate:0x00007fbb1f0623e0 @method_name=:be_invalid, @args=[], @block=nil>5442 is expected to be invalid5443 reason: "cannot end in a `-`", filepath: "/binaries/awesome-app.dmg-", result: #<RSpec::Matchers::BuiltIn::BePredicate:0x00007fbb1f0620c0 @method_name=:be_invalid, @args=[], @block=nil>5444 is expected to be invalid5445 reason: "cannot end in a `.`", filepath: "/binaries/awesome-app.dmg.", result: #<RSpec::Matchers::BuiltIn::BePredicate:0x00007fbb1f061da0 @method_name=:be_invalid, @args=[], @block=nil>5446 is expected to be invalid5447 reason: "cannot end in a `_`", filepath: "/binaries/awesome-app.dmg_", result: #<RSpec::Matchers::BuiltIn::BePredicate:0x00007fbb1f061a80 @method_name=:be_invalid, @args=[], @block=nil>5448 is expected to be invalid5449 reason: "cannot start with a `.`", filepath: ".binaries/awesome-app.dmg", result: #<RSpec::Matchers::BuiltIn::BePredicate:0x00007fbb1f061760 @method_name=:be_invalid, @args=[], @block=nil>5450 is expected to be invalid5451 reason: "cannot start with a `-`", filepath: "-binaries/awesome-app.dmg", result: #<RSpec::Matchers::BuiltIn::BePredicate:0x00007fbb1f061440 @method_name=:be_invalid, @args=[], @block=nil>5452 is expected to be invalid5453 reason: "cannot start with a `_`", filepath: "_binaries/awesome-app.dmg", result: #<RSpec::Matchers::BuiltIn::BePredicate:0x00007fbb1f061120 @method_name=:be_invalid, @args=[], @block=nil>5454 is expected to be invalid5455 reason: "cannot start with a number", filepath: "3binaries/awesome-app.dmg", result: #<RSpec::Matchers::BuiltIn::BePredicate:0x00007fbb1f060e00 @method_name=:be_invalid, @args=[], @block=nil>5456 is expected to be invalid5457 reason: "cannot start with a letter", filepath: "binaries/awesome-app.dmg", result: #<RSpec::Matchers::BuiltIn::BePredicate:0x00007fbb1f060ae0 @method_name=:be_invalid, @args=[], @block=nil>5458 is expected to be invalid5459 reason: "cannot contain accents", filepath: "/binarïes/âwésome-app.dmg", result: #<RSpec::Matchers::BuiltIn::BePredicate:0x00007fbb1f0607c0 @method_name=:be_invalid, @args=[], @block=nil>5460 is expected to be invalid5461 reason: "can end in a character", filepath: "/binaries/awesome-app.dmg", result: #<RSpec::Rails::Matchers::BeValid:0x00007fbb1f060608 @args=[]>5462 is expected to be valid5463 reason: "can end in a number", filepath: "/binaries/awesome-app-1", result: #<RSpec::Rails::Matchers::BeValid:0x00007fbb1f0604a0 @args=[]>5464 is expected to be valid5465 reason: "can contain one or more dots, dashes or underscores", filepath: "/sub_tr__ee.ex..ample-2--1/v99.com", result: #<RSpec::Rails::Matchers::BeValid:0x00007fbb1f060338 @args=[]>5466 is expected to be valid5467 reason: "can contain multiple non-sequential slashes", filepath: "/example.com/path/to/file.exe", result: #<RSpec::Rails::Matchers::BeValid:0x00007fbb1f0601d0 @args=[]>5468 is expected to be valid5469 reason: "can be nil", filepath: nil, result: #<RSpec::Rails::Matchers::BeValid:0x00007fbb1f060068 @args=[]>5470 is expected to be valid5471Ci::PlayBuildService#execute5472 when project does not have repository yet5473 allows user to play build if protected branch rules are met5474 does not allow user with developer role to play build5475 when project has repository5476 allows user with developer role to play a build5477 prevents a blocked developer from playing a build5478 when build is a playable manual action5479 enqueues the build5480 reassignes build user correctly5481 when a subsequent job is skipped5482 marks the subsequent job as processable5483 when variables are supplied5484 assigns the variables to the build5485 when user defined variables are restricted5486 when user is maintainer5487 assigns the variables to the build5488 when user is developer5489 raises an error5490 when build is not a playable manual action5491 duplicates the build5492 assigns users correctly5493 when build is not action5494 raises an error5495 when user does not have ability to trigger action5496 raises an error5497Gitlab::I18n::PoLinter5498 #errors5499 only calls validation once5500 #validate_po5501 for a fuzzy message5502 has an error5503 for a translations with newlines5504 has an error for a normal string5505 has an error when a translation is defined over multiple lines5506 raises an error when a plural translation is defined over multiple lines5507 raises an error when the plural id is defined over multiple lines5508 with an invalid po5509 returns the error5510 does not validate entries5511 with missing metadata5512 returns the an error5513 with a valid po5514 parses the file5515 validates the entries5516 has no errors5517 with missing plurals5518 has errors5519 with multiple plurals5520 has errors5521 with unescaped chars5522 contains an error5523 when an entry contains html5524 presents an error for each component containing angle brackets5525 #parse_po5526 with a valid po5527 fills in the entries5528 does not have errors5529 with an invalid po5530 contains an error5531 sets the entries to an empty array5532 #validate_entries5533 keeps track of errors for entries5534 #validate_entry5535 validates the flags, variable usage, newlines, and unescaped chars5536 #validate_number_of_plurals5537 validates when there are an incorrect number of translations5538 #validate_variables5539 validates both singular and plural in a pluralized string when the entry has a singular5540 only validates plural when there is no separate singular5541 validates the message variables5542 validates variable usage in message ids5543 #validate_variables_in_message5544 detects when a variables are used incorrectly5545 does not allow combining 1 `%d` unnamed variable with named variables5546 #validate_translation5547 succeeds with valid variables5548 adds an error message when translating fails5549 adds an error message when translating fails when translating with context5550 adds an error when trying to translate with incorrect variables when using unnamed variables5551 adds an error when trying to translate with named variables when unnamed variables are expected5552 tests translation for all given forms5553 #numbers_covering_all_plurals5554 can correctly find all required numbers to translate to Polish5555 #fill_in_variables5556 builds an array for %d translations5557 builds an array for %s translations5558 builds a hash for named variables5559Mutations::Issues::SetAssignees5560 when the user does not have permissions5561 #resolve5562 behaves like permission level for issue mutation is correctly verified5563 when the user is not a project member5564 behaves like when the user does not have access to the resource5565 raises an error5566 even if assigned to the issue5567 does not modify issue5568 even if author of the issue5569 raises an error5570 when the user is a project member5571 with guest role5572 behaves like when the user does not have access to the resource5573 raises an error5574 even if assigned to the issue5575 does not modify issue5576 even if author of the issue5577 raises an error5578 behaves like an assignable resource5579 #resolve5580 raises an error if the resource is not accessible to the user5581 does not change assignees if the resource is not accessible to the assignees5582 returns an operational error if the resource is not accessible to the assignees5583 when the user can update the resource5584 replaces the assignee5585 returns errors when resource could not be updated5586 when passing an empty assignee list5587 removes all assignees5588 when passing "append" as true5589 is a NO-OP in FOSS5590 when passing "remove" as true5591 removes named assignee5592 does not remove unnamed assignee5593Gitlab::UserAccessSnippet5594 #can_do_action?5595 when can access_git5596 calls Ability#allowed? and returns its result5597 when can not access_git5598 disallows access5599 when user is nil5600 disallows access5601 when user is migration bot5602 allows access5603 #can_push_to_branch?5604 anonymous5605 when can access_git5606 respects accessibility5607 when can not access_git5608 disallows access5609 non_member5610 when can access_git5611 respects accessibility5612 when can not access_git5613 disallows access5614 guest5615 when can access_git5616 respects accessibility5617 when can not access_git5618 disallows access5619 reporter5620 when can access_git5621 respects accessibility5622 when can not access_git5623 disallows access5624 maintainer5625 when can access_git5626 respects accessibility5627 when can not access_git5628 disallows access5629 admin5630 when can access_git5631 respects accessibility5632 when can not access_git5633 disallows access5634 author5635 when can access_git5636 respects accessibility5637 when can not access_git5638 disallows access5639 when user is migration bot5640 allows access5641 when snippet is nil5642 disallows access5643 when user is migration bot5644 disallows access5645 #can_create_tag?5646 returns false5647 when user is migration bot5648 returns false5649 #can_delete_branch?5650 returns false5651 when user is migration bot5652 returns false5653 #can_merge_to_branch?5654 returns false5655 when user is migration bot5656 returns false5657IncidentManagement::Incidents::CreateService5658 #execute5659 when incident has title and description5660 responds with success5661 creates an incident issue5662 created issue has correct attributes5663 behaves like incident issue5664 has incident as issue type5665 has exactly one incident label5666 with default severity5667 sets the correct severity level to "unknown"5668 with severity5669 severity: "critical", incident_severity: "critical"5670 sets the correct severity level5671 severity: "high", incident_severity: "high"5672 sets the correct severity level5673 severity: "medium", incident_severity: "medium"5674 sets the correct severity level5675 severity: "low", incident_severity: "low"5676 sets the correct severity level5677 severity: "unknown", incident_severity: "unknown"5678 sets the correct severity level5679 when incident label does not exists5680 creates incident label5681 when incident label already exists5682 does not create new labels5683 when incident has no title5684 does not create an issue5685 responds with errors5686 result payload contains an Issue object5687WikiPages::UpdateService5688 behaves like WikiPages::UpdateService#execute5689DEPRECATION WARNING: `.reorder(nil)` with `.first` / `.first!` no longer takes non-deterministic result in Rails 6.2. To continue taking non-deterministic result, use `.take` / `.take!` instead. (called from wiki_event at /builds/gitlab-org/gitlab/app/services/event_create_service.rb:124)5690 updates the wiki page5691 executes webhooks5692DEPRECATION WARNING: `.reorder(nil)` with `.first` / `.first!` no longer takes non-deterministic result in Rails 6.2. To continue taking non-deterministic result, use `.take` / `.take!` instead. (called from wiki_event at /builds/gitlab-org/gitlab/app/services/event_create_service.rb:124)5693 counts edit events5694 the page is at the top level5695DEPRECATION WARNING: `.reorder(nil)` with `.first` / `.first!` no longer takes non-deterministic result in Rails 6.2. To continue taking non-deterministic result, use `.take` / `.take!` instead. (called from wiki_event at /builds/gitlab-org/gitlab/app/services/event_create_service.rb:124)5696 adds a new wiki page activity event5697 the page is in a subsection5698DEPRECATION WARNING: `.reorder(nil)` with `.first` / `.first!` no longer takes non-deterministic result in Rails 6.2. To continue taking non-deterministic result, use `.take` / `.take!` instead. (called from wiki_event at /builds/gitlab-org/gitlab/app/services/event_create_service.rb:124)5699 adds a new wiki page activity event5700 when the options are bad5701 does not count an edit event5702 does not record the activity5703 reports the error5704 #execute5705 when wiki create fails due to git error5706 catches the thrown error and returns a ServiceResponse error5707SystemHook5708 default attributes5709 sets defined default parameters5710 validations5711 url5712 is expected not to allow :url to be ‹"http://localhost:9000"›5713 is valid if application settings allow local requests from system hooks5714 execute5715 project_create hook5716 project_destroy hook5717 user_create hook5718 user_destroy hook5719 project member create hook5720 project member destroy hook5721 project member update hook5722 group create hook5723 group destroy hook5724 group member create hook5725 group member destroy hook5726 group member update hook5727 .repository_update_hooks5728 returns hooks for repository update events only5729 execute WebHookService5730 #execute5731 #async_execute5732 #rate_limit5733 returns nil5734 #application_context5735 includes the type5736Gitlab::ExclusiveLease5737 #try_obtain5738 cannot obtain twice before the lease has expired5739 can obtain after the lease has expired5740 .redis_shared_state_key5741 provides a namespaced key5742 .ensure_prefixed_key5743 does not double prefix a key5744 raises errors when there is no key5745 #renew5746 returns true when we have the existing lease5747 returns false when we dont have a lease5748 #exists?5749 returns true for an existing lease5750 returns false for a lease that does not exist5751 .get_uuid5752 gets the uuid if lease with the key associated exists5753 returns false if the lease does not exist5754 cancellation5755 .cancel5756 does not raise errors when given a nil key5757 when called with the unprefixed key5758 behaves like cancelling a lease5759 releases the held lease5760 when called with the prefixed key5761 behaves like cancelling a lease5762 releases the held lease5763 #cancel5764 is safe to call even if the lease was never obtained5765 behaves like cancelling a lease5766 releases the held lease5767 #ttl5768 returns the TTL of the Redis key5769 returns nil when the lease does not exist5770 .reset_all!5771 removes all existing lease keys from redis5772 .throttle5773 prevents repeated execution of the block5774 is distinct by block5775 is distinct by key5776 allows a group to be passed5777 defaults to a 60min timeout5778 allows count to be specified5779 allows period to be specified5780 allows period and count to be specified5781AwardEmojis::DestroyService5782 #execute5783 when user is not authorized5784 behaves like a service that does not authorize the user5785 does not remove the emoji5786 returns an error state5787 returns a nil award5788 returns the error5789 when the user is authorized5790 when user has not awarded an emoji to the awardable5791 behaves like a service that does not authorize the user5792 does not remove the emoji5793 returns an error state5794 returns a nil award5795 returns the error5796 when user has awarded an emoji to the awardable5797 removes the emoji5798 returns a success status5799 returns no errors5800 returns the destroyed award5801NotificationSetting5802 behaves like having unique enum values5803 has unique values in "level"5804 Associations5805 is expected to belong to user required:5806 is expected to belong to source required:5807 Validation5808 is expected to validate that :user cannot be empty/falsy5809 is expected to validate that :level cannot be empty/falsy5810 user_id5811 is expected to validate that :user_id is case-sensitively unique within the scope of :source_type and :source_id, producing a custom validation error on failure5812 events5813 parses boolean before saving5814 notification_email5815 allows to change email to verified one5816 does not allow to change email to not verified one5817 allows to change email to empty one5818 #for_projects5819 excludes projects pending delete5820 #event_enabled?5821 for an event with a matching column name5822 returns the value of the column5823 when the column has a nil value5824 returns false5825 for an event without a matching column name5826 returns false5827 for failed_pipeline5828 column: nil, expected: true5829 is expected to eq true5830 column: true, expected: true5831 is expected to eq true5832 column: false, expected: false5833 is expected to eq false5834 for fixed_pipeline5835 column: nil, expected: true5836 is expected to eq true5837 column: true, expected: true5838 is expected to eq true5839 column: false, expected: false5840 is expected to eq false5841 .email_events5842 returns email events5843 includes EXCLUDED_WATCHER_EVENTS5844 #email_events5845 calls email_events5846 #order_by_id_asc5847 is expected to eq [#<NotificationSetting id: 1629, user_id: 1437, source_id: 928, source_type: "Project", level: "globa... nil, moved_project: true, change_reviewer_merge_request: nil, merge_when_pipeline_succeeds: false>]5848OnboardingProgress5849 associations5850 is expected to belong to namespace required: true5851 validations5852 namespace_is_root_namespace5853 when associated namespace is root5854 is expected to be valid5855 when associated namespace is not root5856 is invalid5857 scopes5858 .incomplete_actions5859 when given one action5860 is expected to eq [#<OnboardingProgress id: 1, namespace_id: 1510, created_at: "2021-08-18 10:40:47.482143304 +0000", u...to_closed_at: nil, repository_imported_at: nil, repository_mirrored_at: nil, issue_created_at: nil>]5861 when given an array of actions5862 is expected to eq [#<OnboardingProgress id: 3, namespace_id: 1512, created_at: "2021-08-18 10:40:47.608693732 +0000", u...to_closed_at: nil, repository_imported_at: nil, repository_mirrored_at: nil, issue_created_at: nil>]5863 .completed_actions5864 when given one action5865 is expected to eq [#<OnboardingProgress id: 5, namespace_id: 1514, created_at: "2021-08-18 10:40:47.734092250 +0000", u...to_closed_at: nil, repository_imported_at: nil, repository_mirrored_at: nil, issue_created_at: nil>]5866 when given an array of actions5867 is expected to eq [#<OnboardingProgress id: 8, namespace_id: 1517, created_at: "2021-08-18 10:40:47.902532134 +0000", u...to_closed_at: nil, repository_imported_at: nil, repository_mirrored_at: nil, issue_created_at: nil>]5868 .completed_actions_with_latest_in_range5869 when given one action5870 is expected to eq [#<OnboardingProgress id: 10, namespace_id: 1519, created_at: "2021-08-18 10:40:48.021606762 +0000", ...to_closed_at: nil, repository_imported_at: nil, repository_mirrored_at: nil, issue_created_at: nil>]5871 when given an array of actions5872 is expected to eq [#<OnboardingProgress id: 16, namespace_id: 1525, created_at: "2021-08-18 10:40:48.371069188 +0000", ...to_closed_at: nil, repository_imported_at: nil, repository_mirrored_at: nil, issue_created_at: nil>]5873 .onboard5874 adds a record for the namespace5875 when not given a namespace5876 does not add a record for the namespace5877 when not given a root namespace5878 does not add a record for the namespace5879 .onboarding?5880 when onboarded5881 is expected to eq true5882 when not onboarding5883 is expected to eq false5884 .register5885 when the namespace was onboarded5886 registers the action for the namespace5887 when the action does not exist5888 does not register the action for the namespace5889 when the namespace was not onboarded5890 does not register the action for the namespace5891 .completed?5892 when the namespace has not yet been onboarded5893 is expected to eq false5894 when the namespace has been onboarded but not registered the action yet5895 is expected to eq false5896 when the action has been registered5897 is expected to eq true5898 .not_completed?5899 when the namespace has not yet been onboarded5900 is expected to equal false5901 when the namespace has been onboarded but not registered the action yet5902 is expected to equal true5903 when the action has been registered5904 is expected to equal false5905 .column_name5906 is expected to eq :subscription_created_at5907 #number_of_completed_actions5908 0 completed actions5909 is expected to eq 05910 1 completed action5911 is expected to eq 15912 2 completed actions5913 is expected to eq 25914Gitlab::Ci::Build::Prerequisite::KubernetesNamespace5915 #unmet?5916 build has no deployment5917 is expected to be falsey5918 build has a deployment5919 and a cluster to deploy to5920 is expected to be truthy5921 and the cluster is not managed5922 is expected to be falsey5923 and a namespace is already created for this project5924 is expected to be falsey5925 and the service_account_token is blank5926 is expected to be truthy5927 and no cluster to deploy to5928 is expected to be falsey5929 #complete!5930 completion is required5931 kubernetes namespace does not exist5932 creates a namespace using a new record5933 the build has a namespace configured via CI template5934 the requested namespace matches the default5935 creates a namespace5936 the requested namespace differs from the default5937 does not create a namespace5938 kubernetes namespace exists (but has no service_account_token)5939 creates a namespace using the tokenless record5940 completion is not required5941 does not create a namespace5942Banzai::Filter::AutolinkFilter5943 does nothing when :autolink is false5944 does nothing with non-link text5945 Various schemes5946 autolinks http5947 autolinks https5948 autolinks ftp5949 autolinks short URLs5950 autolinks multiple URLs5951 accepts link_attr options5952 autolinks smb5953 autolinks multiple occurrences of smb5954 autolinks irc5955 autolinks rdar5956 does not autolink javascript5957 does not autolink bad URLs5958 does not autolink bad URLs after we remove trailing punctuation5959 does not include trailing punctuation5960 includes trailing punctuation when part of a balanced pair5961 removes trailing quotes5962 removes one closing punctuation mark when the punctuation in the link is unbalanced5963 does not double-encode HTML entities5964 does not include trailing HTML entities5965 escapes RTLO and other characters5966 encodes international domains5967 ignores valid links contained inside 'a' element5968 ignores valid links contained inside 'code' element5969 ignores valid links contained inside 'kbd' element5970 ignores valid links contained inside 'pre' element5971 ignores valid links contained inside 'script' element5972 ignores valid links contained inside 'style' element5973 when the link is inside a tag5974 renders text after the link correctly for http5975 renders text after the link correctly for rdar5976Gitlab::Ci::Pipeline::Chain::Validate::External5977 #perform!5978 respects the defined payload schema5979 with configuration values in ApplicationSetting5980 uses those values rather than env vars or defaults5981 with EXTERNAL_VALIDATION_SERVICE_TIMEOUT defined5982 with valid value5983 uses defined timeout5984 with invalid value5985 uses default timeout5986 when EXTERNAL_VALIDATION_SERVICE_TOKEN is set5987 passes token in X-Gitlab-Token header5988 when validation returns 200 OK5989 behaves like successful external authorization5990 does not drop the pipeline5991 does not break the chain5992 logs the authorization5993 when validation returns 404 Not Found5994 behaves like successful external authorization5995 does not drop the pipeline5996 does not break the chain5997 logs the authorization5998 when validation returns 500 Internal Server Error5999 behaves like successful external authorization6000 does not drop the pipeline6001 does not break the chain6002 logs the authorization6003 when validation raises exceptions6004 logs exceptions6005 behaves like successful external authorization6006 does not drop the pipeline6007 does not break the chain6008 logs the authorization6009 when validation returns 406 Not Acceptable6010 drops the pipeline6011 breaks the chain6012 logs the authorization6013 when save_incompleted is false6014 adds errors to the pipeline without dropping it6015 breaks the chain6016 logs the authorization6017Gitlab::ObjectHierarchy6018 #base_and_ancestors6019 includes the base rows6020 includes all of the ancestors6021 can find ancestors upto a certain level6022 uses ancestors_base #initialize argument6023 does not allow the use of #update_all6024 hierarchy_order option6025 :asc6026 orders by child to parent6027 :desc6028 orders by parent to child6029 #base_and_descendants6030 includes the base rows6031 includes all the descendants6032 uses descendants_base #initialize argument6033 does not allow the use of #update_all6034 when with_depth is true6035 includes depth in the results6036 #descendants6037 includes only the descendants6038 #max_descendants_depth6039 when base relation is empty6040 is expected to be nil6041 when base has no children6042 is expected to eq 16043 when base has grandchildren6044 is expected to eq 36045 #ancestors6046 includes only the ancestors6047 can find ancestors upto a certain level6048 #all_objects6049 includes the base rows6050 includes the ancestors6051 includes the descendants6052 uses ancestors_base #initialize argument for ancestors6053 uses descendants_base #initialize argument for descendants6054 does not allow the use of #update_all6055MergeRequests::ExportCsvService6056 csv_data6057 contains the correct information6058 assignees6059 when assigned6060 contains the names of assignees6061 contains the usernames of assignees6062 when not assigned6063 returns empty strings6064 approvers6065 when approved6066 contains the names of approvers separated by a comma6067 contains the usernames of approvers separated by a comma6068 when not approved6069 returns empty strings6070 merged user6071 MR is merged6072 is merged6073 has a merged user6074 MR is not merged6075 returns empty strings6076 milestone6077 milestone is assigned6078 contains the milestone ID6079 no milestone is assigned6080 returns an empty string6081groups/edit.html.haml6082 "Share with group lock" setting6083 for a root group6084 behaves like "Share with group lock" setting6085 has the correct label, help text, and checkbox options6086 for a subgroup6087 when the root_group has "Share with group lock" disabled6088 when the subgroup has "Share with group lock" disabled6089 as the root_owner6090 behaves like "Share with group lock" setting6091 has the correct label, help text, and checkbox options6092 as the sub_owner6093 behaves like "Share with group lock" setting6094 has the correct label, help text, and checkbox options6095 when the subgroup has "Share with group lock" enabled6096 as the root_owner6097 behaves like "Share with group lock" setting6098 has the correct label, help text, and checkbox options6099 as the sub_owner6100 behaves like "Share with group lock" setting6101 has the correct label, help text, and checkbox options6102 when the root_group has "Share with group lock" enabled6103 when the subgroup has "Share with group lock" disabled (parent overridden)6104 as the root_owner6105 behaves like "Share with group lock" setting6106 has the correct label, help text, and checkbox options6107 as the sub_owner6108 behaves like "Share with group lock" setting6109 has the correct label, help text, and checkbox options6110 when the subgroup has "Share with group lock" enabled (same as parent)6111 as the root_owner6112 behaves like "Share with group lock" setting6113 has the correct label, help text, and checkbox options6114 as the sub_owner6115 behaves like "Share with group lock" setting6116 has the correct label, help text, and checkbox options6117MergeRequests::AssignIssuesService6118 finds unassigned issues fixed in merge request6119 ignores issues the user cannot update assignee on6120 ignores issues already assigned to any user6121 ignores all issues unless current_user is merge_request.author6122 accepts precomputed data for closes_issues6123 assigns these to the merge request owner6124 ignores external issues6125Boards::Lists::ListService6126 #execute6127 when board parent is a project6128 behaves like lists list service6129 when the board has a backlog list6130 does not create a backlog list6131 returns board's lists6132 when hide_backlog_list is true6133 hides backlog list6134 when hide_closed_list is true6135 hides closed list6136 when the board does not have a backlog list6137 creates a backlog list6138 does not create a backlog list when create_default_lists is false6139 returns board's lists6140 when wanting a specific list6141 returns list specified by id6142 returns empty result when list is not found6143 when board parent is a group6144 behaves like lists list service6145 when the board has a backlog list6146 does not create a backlog list6147 returns board's lists6148 when hide_backlog_list is true6149 hides backlog list6150 when hide_closed_list is true6151 hides closed list6152 when the board does not have a backlog list6153 creates a backlog list6154 does not create a backlog list when create_default_lists is false6155 returns board's lists6156 when wanting a specific list6157 returns list specified by id6158 returns empty result when list is not found6159AlertManagement::HttpIntegration6160 associations6161 is expected to belong to project required:6162 validations6163 is expected to validate that :project cannot be empty/falsy6164 is expected to validate that :name cannot be empty/falsy6165 is expected to validate that the length of :name is at most 2556166 when active6167 is expected to validate that :endpoint_identifier is case-sensitively unique within the scope of :project_id and :active6168 when inactive6169 is expected not to validate that :endpoint_identifier is case-sensitively unique within the scope of :project_id and :active6170 payload_attribute_mapping6171 with valid JSON schema6172 is expected to be valid6173 with invalid JSON schema6174 when property is not an object6175 behaves like is invalid record6176 is expected to eq ["must be a valid json schema"]6177 when property missing required attributes6178 behaves like is invalid record6179 is expected to eq ["must be a valid json schema"]6180 when property has extra attributes6181 behaves like is invalid record6182 is expected to eq ["must be a valid json schema"]6183 before validation6184 #ensure_payload_example_not_nil6185 when the payload_example is nil6186 sets the payload_example to empty JSON6187 when the payload_example is not nil6188 sets the payload_example to specified value6189 #token6190 when unsaved6191 when unassigned6192 behaves like valid token6193 is expected to match /\A\h{32}\z/6194 when assigned6195 is expected not to eq "random_token"6196 behaves like valid token6197 is expected to match /\A\h{32}\z/6198 when persisted6199 behaves like valid token6200 is expected to match /\A\h{32}\z/6201 when resetting6202 is expected not to eq "056ef5e1b97d7f80d0c77a29ad666bbd"6203 behaves like valid token6204 is expected to match /\A\h{32}\z/6205 when reassigning6206 is expected to eq "5d59be975840722f22344182cb8379e3"6207 behaves like valid token6208 is expected to match /\A\h{32}\z/6209 #endpoint_identifier6210 when defined on initialize6211 is expected to match /\A\h{16}\z/6212 when included in initialization args6213 is expected to eq "legacy"6214 when reassigning6215 does not allow reassignment6216 #url6217 is expected to eq "http://localhost/namespace1108/project1022/alerts/notify/datadog/a9946585.json"6218 when name is not defined6219 is expected to eq "http://localhost/namespace1086/project1000/alerts/notify/http-endpoint/a939e4c339894750.json"6220 for a legacy integration6221 is expected to eq "http://localhost/namespace1109/project1023/alerts/notify.json"6222Ci::FreezePeriodStatus6223 single freeze period6224 behaves like outside freeze period6225 is not frozen6226 behaves like within freeze period6227 is frozen6228 behaves like within freeze period6229 is frozen6230 behaves like outside freeze period6231 is not frozen6232 multiple freeze periods6233 behaves like outside freeze period6234 is not frozen6235 behaves like within freeze period6236 is frozen6237 behaves like within freeze period6238 is frozen6239 behaves like within freeze period6240 is frozen6241 behaves like within freeze period6242 is frozen6243 behaves like within freeze period6244 is frozen6245 behaves like outside freeze period6246 is not frozen6247Mutations::Issues::SetSeverity6248 is expected to require graphql authorizations :update_issue6249 #resolve6250 behaves like permission level for issue mutation is correctly verified6251 when the user is not a project member6252 behaves like when the user does not have access to the resource6253 raises an error6254 even if assigned to the issue6255 does not modify issue6256 even if author of the issue6257 raises an error6258 when the user is a project member6259 with guest role6260 behaves like when the user does not have access to the resource6261 raises an error6262 even if assigned to the issue6263 does not modify issue6264 even if author of the issue6265 raises an error6266 when the user can update the issue6267 when issue type is incident6268 when severity has a correct value6269 updates severity6270 returns no errors6271 when severity has an unsuported value6272 sets severity to default6273 returns no errorsr6274 when issue type is not incident6275 does not updates the issue6276Gitlab::Ci::Config::External::Processor6277 #perform6278 when no external files defined6279 returns the same values6280 when an invalid local file is defined6281 raises an error6282 when an invalid remote file is defined6283 raises an error6284 with a valid remote external file is defined6285 appends the file to the values6286 removes the 'include' keyword6287 with a valid local external file is defined6288 appends the file to the values6289 removes the 'include' keyword6290 with multiple external files are defined6291 appends the files to the values6292 removes the 'include' keyword6293 when external files are defined but not valid6294 raises an error6295 when both external files and values defined the same key6296 takes precedence6297 when a nested includes are defined6298 when project is public6299 properly expands all includes6300 when user is reporter of another project6301 properly expands all includes6302 when user is not allowed6303 raises an error6304 when too many includes is included6305 raises an error6306 when config includes an external configuration file via SSL web request6307 with an acceptable certificate6308 is expected to include {:image => "ruby:2.6"}6309 with a self-signed certificate6310 returns a reportable configuration error6311 when a valid project file is defined6312 appends the file to the values6313 when valid project files are defined in a single include6314 appends the file to the values6315 when local file path has wildcard6316 fetches the matched files6317Gitlab::Ci::Pipeline::Expression::Lexeme::Or6318 .build6319 creates a new instance of the token6320 with non-evaluable operands6321 raises an operator error6322 .type6323 is an operator6324 .precedence6325 has a precedence6326 #evaluate6327 when left and right are truthy6328 left_value: true, right_value: 16329 is expected to be truthy6330 is expected to eq true6331 left_value: true, right_value: "a"6332 is expected to be truthy6333 is expected to eq true6334 left_value: 1, right_value: true6335 is expected to be truthy6336 is expected to eq 16337 left_value: 1, right_value: "a"6338 is expected to be truthy6339 is expected to eq 16340 left_value: "a", right_value: true6341 is expected to be truthy6342 is expected to eq "a"6343 left_value: "a", right_value: 16344 is expected to be truthy6345 is expected to eq "a"6346 when left or right is truthy6347 left_value: true, right_value: false6348 is expected to be truthy6349 left_value: true, right_value: "a"6350 is expected to be truthy6351 left_value: false, right_value: true6352 is expected to be truthy6353 left_value: false, right_value: "a"6354 is expected to be truthy6355 left_value: "a", right_value: true6356 is expected to be truthy6357 left_value: "a", right_value: false6358 is expected to be truthy6359 when left and right are falsey6360 left_value: false, right_value: nil6361 is expected to be falsey6362 is expected to eq nil6363 left_value: nil, right_value: false6364 is expected to be falsey6365 is expected to eq false6366RemoveExpiredGroupLinksWorker6367 #perform6368 ProjectGroupLinks6369 removes expired group links6370 leaves group links that expire in the future6371 leaves group links that do not expire at all6372 removes project authorization6373 GroupGroupLinks6374 expired GroupGroupLink exists6375 calls Groups::GroupLinks::DestroyService6376 removes project authorization6377 expired GroupGroupLink does not exist6378 does not call Groups::GroupLinks::DestroyService6379NewIssueWorker6380 #perform6381 when an issue not found6382 does not call Services6383 logs an error6384 when a user not found6385 does not call Services6386 logs an error6387 with a user6388 when the new issue author is blocked6389 behaves like a new issue where the current_user cannot trigger notifications6390 does not create a notification for the mentioned user6391 when the new issue author is a ghost6392 behaves like a new issue where the current_user cannot trigger notifications6393 does not create a notification for the mentioned user6394 when everything is ok6395 creates a new event record6396 creates a notification for the mentioned user6397 calls Issues::AfterCreateService6398Projects::GroupsFinder6399 #execute6400 Public project6401 behaves like finding related groups6402 returns ancestor groups for this project6403 when the project does not belong to any group6404 is expected to eq []6405 when shared groups option is on6406 returns ancestor and all shared groups6407 when shared_min_access_level is developer6408 returns ancestor and shared groups with at least developer access6409 when shared_visible_only is on6410 returns ancestor and public shared groups6411 when user has access to the private shared group6412 returns ancestor and shared groups user has access to6413 when skip group option is on6414 excludes provided groups6415 when user is not authorized6416 returns ancestor groups for this project6417 when visible shared groups are requested6418 returns ancestor groups and public shared groups for this project6419 Private project6420 behaves like finding related groups6421 returns ancestor groups for this project6422 when the project does not belong to any group6423 is expected to eq []6424 when shared groups option is on6425 returns ancestor and all shared groups6426 when shared_min_access_level is developer6427 returns ancestor and shared groups with at least developer access6428 when shared_visible_only is on6429 returns ancestor and public shared groups6430 when user has access to the private shared group6431 returns ancestor and shared groups user has access to6432 when skip group option is on6433 excludes provided groups6434 when user is not authorized6435 is expected to eq []6436 Missing project6437 is expected to eq []6438Banzai::Filter::MathFilter6439 leaves regular inline code unchanged6440 removes surrounding dollar signs and adds class code, math and js-render-math6441 only removes surrounding dollar signs6442 only removes surrounding single dollar sign6443 adds data-math-style inline attribute to inline math6444 adds class code and math to inline math6445 adds js-render-math class to inline math6446 ignores cases with missing dolar sign at the end6447 ignores cases with missing dolar sign at the beginning6448 ignores dollar signs if it is not adjacent6449 ignores dollar signs if they are inside another element6450 adds data-math-style display attribute to display math6451 adds js-render-math class to display math6452 ignores code blocks that are not math6453 requires the pre to contain both code and math6454 dollar signs around to display math6455Gitlab::Graphql::Pagination::ExternallyPaginatedArrayConnection6456 behaves like a connection with collection methods6457 responds to to_a6458 responds to size6459 responds to include?6460 responds to empty?6461 behaves like a redactable connection6462 no redactor set6463 contains the unwanted item6464 does not redact more than once6465 redactor is set6466 does not contain the unwanted item6467 does not redact more than once6468 #nodes6469 behaves like connection with paged nodes6470 returns the collection limited to max page size6471 is a loaded memoized array6472 when `first` is passed6473 returns only the first elements6474 when `last` is passed6475 returns only the last elements6476 when after or before is specified, they are ignored6477 behaves like connection with paged nodes6478 returns the collection limited to max page size6479 is a loaded memoized array6480 when `first` is passed6481 returns only the first elements6482 when `last` is passed6483 returns only the last elements6484 behaves like connection with paged nodes6485 returns the collection limited to max page size6486 is a loaded memoized array6487 when `first` is passed6488 returns only the first elements6489 when `last` is passed6490 returns only the last elements6491 #start_cursor6492 returns the prev cursor6493 when there is none6494 returns nil6495 #end_cursor6496 returns the next cursor6497 when there is none6498 returns nil6499 #has_next_page6500 returns true when there is a end cursor6501 there is no end cursor6502 returns false6503 #has_previous_page6504 returns true when there is a start cursor6505 there is no start cursor6506 returns false6507notify/pipeline_fixed_email.html.haml6508 behaves like pipeline status changes email6509 when the pipeline contains a failed job6510 behaves like renders the pipeline status changes email correctly6511 pipeline with user6512 renders the email correctly6513 behaves like correct pipeline information for pipelines for merge requests6514 when pipeline for merge request6515 renders a source ref of the pipeline6516 pipeline without user6517 renders the email correctly6518 when the latest failed job is a bridge job6519 behaves like renders the pipeline status changes email correctly6520 pipeline with user6521 renders the email correctly6522 behaves like correct pipeline information for pipelines for merge requests6523 when pipeline for merge request6524 renders a source ref of the pipeline6525 pipeline without user6526 renders the email correctly6527ContainerExpirationPolicyWorker6528 #perform6529 with throttling enabled6530 calls the limited capacity worker6531 behaves like handling a taken exclusive lease6532 with exclusive lease taken6533 does not do anything6534 with throttling disabled6535 with no container expiration policies6536 behaves like not executing any policy6537 does not run any policy6538 with container expiration policies6539 a valid policy6540 runs the policy6541 a disabled policy6542 behaves like not executing any policy6543 does not run any policy6544 a policy that is not due for a run6545 behaves like not executing any policy6546 does not run any policy6547 a policy linked to no container repository6548 behaves like not executing any policy6549 does not run any policy6550 an invalid policy6551 disables the policy and tracks an error6552 process stale ongoing cleanups6553 set them as unfinished6554 policies without container repositories6555 disables them6556 counts logging6557 logs all the counts6558 with load balancing enabled6559 reads the counts from the replica6560Ci::RefDeleteUnlockArtifactsWorker6561 #perform6562 is labeled as idempotent6563 performs multiple times sequentially without raising an exception6564 unlocks the artifacts from older pipelines6565 when project exists6566 when user exists6567 when ci ref exists for project6568 calls the service6569 when ci ref does not exist for the given project6570 does not call the service6571 when same ref path exists for a different project6572 calls the service with the correct ref_id6573 when user does not exist6574 does not call service6575 when project does not exist6576 does not call service6577Gitlab::Access::BranchProtection6578 #any?6579 level: 0, result: false6580 is expected to eq false6581 level: 1, result: true6582 is expected to eq true6583 level: 3, result: true6584 is expected to eq true6585 level: 2, result: true6586 is expected to eq true6587 #developer_can_push?6588 level: 0, result: false6589 is expected to eq false6590 level: 1, result: true6591 is expected to eq true6592 level: 3, result: false6593 is expected to eq false6594 level: 2, result: false6595 is expected to eq false6596 #developer_can_merge?6597 level: 0, result: false6598 is expected to eq false6599 level: 1, result: false6600 is expected to eq false6601 level: 3, result: true6602 is expected to eq true6603 level: 2, result: false6604 is expected to eq false6605 #fully_protected?6606 level: 0, result: false6607 is expected to eq false6608 level: 1, result: false6609 is expected to eq false6610 level: 3, result: false6611 is expected to eq false6612 level: 2, result: true6613 is expected to eq true6614Gitlab::AlertManagement::Payload::ManagedPrometheus6615 behaves like subclass has expected api6616 defines all public methods in the base class6617 #metric_id6618 is expected to be nil6619 with gitlab_alert_id6620 is expected to eq 126621 #gitlab_prometheus_alert_id6622 is expected to be nil6623 with gitlab_alert_id6624 is expected to eq 126625 #gitlab_alert6626 without alert info in payload6627 is expected to be nil6628 with metric id in payload6629 without matching alert6630 is expected to be nil6631 with matching alert6632 is expected to eq #<PrometheusAlert id: 1, created_at: "2021-08-18 10:42:06.309481005 +0000", updated_at: "2021-08-18 1...0, operator: "gt", environment_id: 201, project_id: 1040, prometheus_metric_id: 1, runbook_url: nil>6633 when unclear which alert applies6634 is expected to be nil6635 with alert id6636 without matching alert6637 is expected to be nil6638 with matching alerts6639 is expected to eq #<PrometheusAlert id: 3, created_at: "2021-08-18 10:42:06.497430196 +0000", updated_at: "2021-08-18 1...0, operator: "gt", environment_id: 203, project_id: 1040, prometheus_metric_id: 2, runbook_url: nil>6640 #full_query6641 is expected to be nil6642 with gitlab alert6643 is expected to eq "avg(metric) > 1.0"6644 with sufficient fallback info6645 is expected to eq "vector(1)"6646 #environment6647 with gitlab alert6648 is expected to eq #<Environment id: 205, project_id: 1040, name: "environment186", created_at: "2021-08-18 10:42:06.788..., state: "available", slug: "environment186", auto_stop_at: nil, auto_delete_at: nil, tier: "other">6649 with sufficient fallback info6650 is expected to eq #<Environment id: 206, project_id: 1040, name: "production", created_at: "2021-08-18 10:42:06.9020904... state: "available", slug: "production", auto_stop_at: nil, auto_delete_at: nil, tier: "production">6651 #metrics_dashboard_url6652 without alert6653 is expected to be nil6654 with gitlab alert6655 is expected to eq "http://localhost/namespace1169/project1083/prometheus/alerts/5/metrics_dashboard?embedded=true&end=2018-03-12T09%3A36%3A00Z&environment_id=207&start=2018-03-12T08%3A36%3A00Z"6656Types::QueryType6657 is called Query6658 has the expected fields6659 namespace field6660 finds namespaces by full path6661 project field6662 finds projects by full path6663 metadata field6664 returns metadata6665 issue field6666 finds an issue by it's gid6667 merge_request field6668 finds a merge_request by it's gid6669 usage_trends_measurements field6670 returns usage trends measurements6671 runner field6672 is expected to have graphql type Types::Ci::RunnerType6673 runners field6674 is expected to have graphql type #<Class:0x00007fbb3d06fa40>6675 runner_platforms field6676 returns runner platforms6677 runner_setup field6678 returns runner setup instructions6679 container_repository field6680 is expected to have graphql type Types::ContainerRepositoryDetailsType6681 package field6682 is expected to have graphql type Types::Packages::PackageDetailsType6683 timelogs field6684 returns timelogs6685Gitlab::Ci::PipelineObjectHierarchy6686 #base_and_ancestors6687 includes the base and its ancestors6688 can find ancestors upto a certain level6689 hierarchy_order option6690 :asc6691 orders by child to ancestor6692 :desc6693 orders by ancestor to child6694 #base_and_descendants6695 includes the base and its descendants6696 when project_condition: :different6697 includes the base and other project pipelines6698 when project_condition: nil6699 includes the base and its descendants with other project pipeline6700 when with_depth is true6701 includes depth in the results6702 #all_objects6703 when passing ancestors_base6704 when project_condition: :same6705 includes its ancestors and descendants6706 when project_condition: :different6707 includes the base and other project pipelines6708 when passing ancestors_base and descendants_base6709 when project_condition: :same6710 returns all family tree6711 when project_condition: :different6712 includes the base and other project pipelines6713Gitlab::Instrumentation::RedisInterceptor6714 read and write6715 setup: [], command: [:set, "foo", "bar"], expect_write: 9, expect_read: 26716 counts bytes read and written6717 setup: [[:set, "foobar", 1000]], command: [:incr, "foobar"], expect_write: 10, expect_read: 46718 counts bytes read and written6719 setup: [], command: [:hgetall, "foobar"], expect_write: 13, expect_read: 06720 counts bytes read and written6721 setup: [[:hset, "myhash", "field", "hello world"]], command: [:hgetall, "myhash"], expect_write: 13, expect_read: 166722 counts bytes read and written6723 setup: [[:set, "foo", "barbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbar"]], command: [:get, "foo"], expect_write: 6, expect_read: 3006724 counts bytes read and written6725 setup: [[:zadd, "myset", 0, "foo"], [:zadd, "myset", 1, "bar"]], command: [:zrange, "myset", 0, -1, "withscores"], expect_write: 24, expect_read: 86726 counts bytes read and written6727 counting6728 counts successful requests6729 counts exceptions6730 latency6731 commands in the apdex6732 command: [:get, "foobar"]6733 measures requests we want in the apdex6734 command: ["GET", "foobar"]6735 measures requests we want in the apdex6736 commands not in the apdex6737 command: ["brpop", "foobar", "0.01"]6738 skips requests we do not want in the apdex6739 command: ["blpop", "foobar", "0.01"]6740 skips requests we do not want in the apdex6741 command: ["brpoplpush", "foobar", "bazqux", "0.01"]6742 skips requests we do not want in the apdex6743 command: ["bzpopmin", "foobar", "0.01"]6744 skips requests we do not want in the apdex6745 command: ["bzpopmax", "foobar", "0.01"]6746 skips requests we do not want in the apdex6747 command: ["xread", "block", "1", "streams", "mystream", "0-0"]6748 skips requests we do not want in the apdex6749 command: ["xreadgroup", "group", "mygroup", "myconsumer", "block", "1", "streams", "foobar", "0-0"]6750 skips requests we do not want in the apdex6751 when a command takes longer than DURATION_ERROR_THRESHOLD6752 when report_on_long_redis_durations is disabled6753 does nothing6754 when report_on_long_redis_durations is enabled6755 tracks an exception and continues6756Gitlab::SidekiqLogging::StructuredLogger6757 #call6758 with SIDEKIQ_LOG_ARGUMENTS enabled6759 logs start and end of job6760 logs real job wrapped by active job worker6761 logs an exception in job6762 logs the root cause of an Sidekiq::JobRetry::Skip exception in the job6763 logs the root cause of an Sidekiq::JobRetry::Handled exception in the job6764 keeps Sidekiq::JobRetry::Handled exception if the cause does not exist6765 does not modify the job6766 does not modify the wrapped job6767 with SIDEKIQ_LOG_ARGUMENTS disabled6768 logs start and end of job without args6769 logs without created_at and enqueued_at fields6770 with latency6771 logs with scheduling latency6772 with Gitaly, Rugged, and Redis calls6773 logs with Gitaly and Rugged timing data6774 when the job performs database queries6775 when load balancing is disabled6776 logs the database time6777 prevents database time from leaking to the next job6778 when load balancing is enabled6779 logs the database time6780 prevents database time from leaking to the next job6781 when the job uses load balancing capabilities6782 logs the database chosen6783 when there is extra metadata set for the done log6784 logs it in the done log6785 when instrumentation data is not loaded6786 does not raise exception6787 when the job payload is compressed6788 logs it in the done log6789 #add_time_keys!6790 update payload correctly6791Gitlab::ErrorTracking::Processor::SidekiqProcessor6792 .filter_arguments6793 returns a lazy enumerator6794 arguments filtering6795 klass: "UnknownWorker", expected: [1, "[FILTERED]", "[FILTERED]", "[FILTERED]"]6796 is expected to eq [1, "[FILTERED]", "[FILTERED]", "[FILTERED]"]6797 klass: "NoPermittedArguments", expected: [1, "[FILTERED]", "[FILTERED]", "[FILTERED]"]6798 is expected to eq [1, "[FILTERED]", "[FILTERED]", "[FILTERED]"]6799 klass: "OnePermittedArgument", expected: [1, "string", "[FILTERED]", "[FILTERED]"]6800 is expected to eq [1, "string", "[FILTERED]", "[FILTERED]"]6801 klass: "AllPermittedArguments", expected: [1, "string", [1, 2], {:a=>1}]6802 is expected to eq [1, "string", [1, 2], {:a=>1}]6803 .permitted_arguments_for_worker6804 returns the loggable_arguments for a worker class as a set6805 returns an empty set when the worker class does not exist6806 returns an empty set when the worker class does not respond to loggable_arguments6807 returns an empty set when loggable_arguments cannot be converted to a set6808 memoizes the results6809 .loggable_arguments6810 filters and limits the arguments, then converts to strings6811 .call6812 when there is Sidekiq data6813 when processing via the default error handler6814 for an unknown worker6815 only allows numeric arguments for an unknown worker6816 for a permitted worker6817 allows all argument types for a permitted worker6818 when processing via Gitlab::ErrorTracking6819 for an unknown worker6820 only allows numeric arguments for an unknown worker6821 for a permitted worker6822 allows all argument types for a permitted worker6823 when a jobstr field is present6824 removes the jobstr6825 when no jobstr value is present6826 does nothing6827 when there is no Sidekiq data6828 does nothing6829Banzai::ReferenceParser::DesignParser6830 #nodes_visible_to_user6831 behaves like referenced feature visibility6832 when feature is disabled6833 does not create reference6834 when feature is enabled only for team members6835 does not create reference for non member6836 creates reference for member6837 when feature is enabled6838 creates reference6839 specific states6840 redacts links we should not have access to6841 design management is not available6842 redacts all nodes6843 #process6844 returns the correct designs6845Resolvers::IssueStatusCountsResolver6846 #resolve6847 is expected to be a kind of Gitlab::IssuablesCountForState6848 is expected to eq #<Project id:1048 group122/project1091>>6849 filters by search6850 filters by issue type6851 behaves like returns expected results6852 returns expected results6853 project used as parent6854 behaves like returns expected results6855 returns expected results6856 group used as parent6857 behaves like returns expected results6858 returns expected results6859 when both assignee_username and assignee_usernames are provided6860 raises a mutually exclusive filter error6861Ci::DeleteObjectsService6862 #execute6863 deletes records6864 deletes files6865 when trying to execute without records6866 does not change the number of objects6867 when trying to remove the same file multiple times6868 executes successfully6869 with artifacts both ready and not ready for deletion6870 skips records with pick_up_at in the future6871 limits the number of records removed6872 removes records in order6873 updates pick_up_at timestamp6874 does not delete objects for which file deletion has failed6875 with an open database transaction6876 raises an exception and does not remove records6877 #remaining_batches_count6878 when there is less than one batch size6879 is expected to eq 16880 when there is more than one batch size6881 is expected to eq 26882Repositories::DestroyRollbackService6883 moves the repository from the +deleted folder6884 logs the successful action6885 flushes the repository cache6886 returns success and does not perform any action if repository path does not exist6887 when move operation cannot be performed6888 returns error6889 logs the error6890Resolvers::DesignManagement::DesignResolver6891 is expected to have nullable GraphQL type Design6892 #resolve6893 when the user cannot see designs6894 returns nothing6895 when no argument has been passed6896 raises an error6897 when both arguments have been passed6898 raises an error6899 by ID6900 returns the specified design6901 the ID belongs to a design on another issue6902 returns nothing6903 the ID does not belong to a design at all6904 complains meaningfully6905 by filename6906 returns the specified design6907 the filename belongs to a design on another issue6908 returns nothing6909Gitlab::Database::RenameReservedPathsMigration::V16910 #rename_child_paths6911 behaves like renames child namespaces6912 renames namespaces6913 #rename_wildcard_paths6914 renames projects6915 behaves like renames child namespaces6916 renames namespaces6917 #rename_root_paths6918 renames namespaces6919 #revert_renames6920 renames namespaces6921 renames projects6922Gitlab::Ci::Pipeline::Chain::Limit::Deployments6923 when pipeline deployments limit is exceeded6924 logs the error6925 when saving incompleted pipelines6926 drops the pipeline6927 breaks the chain6928 sets a valid failure reason6929 calls increment_pipeline_failure_reason_counter6930 when not saving incomplete pipelines6931 does not persist the pipeline6932 breaks the chain6933 adds an informative error to the pipeline6934 increments the error metric6935 when pipeline deployments limit is not exceeded6936 does not break the chain6937 does not invalidate the pipeline6938 does not log any error6939Metrics::Dashboard::PodDashboardService6940 #raw_dashboard6941 behaves like #raw_dashboard raises error if dashboard loading fails6942 when yaml is too large6943 raises error6944 when yaml loader returns error6945 raises error6946 when yaml is not a hash6947 returns nil6948 .valid_params?6949 is expected to be truthy6950 missing dashboard_path6951 is expected to be falsey6952 non-matching dashboard_path6953 is expected to be falsey6954 #get_dashboard6955 behaves like valid dashboard service response6956 behaves like valid dashboard service response for schema6957 returns a json representation of the dashboard6958 behaves like caches the unprocessed dashboard for subsequent calls6959 is expected to receive load_raw!(*(any args)) 1 time6960 behaves like refreshes cache when dashboard_version is changed6961 is expected to receive read(#<Pathname:/builds/gitlab-org/gitlab/config/prometheus/pod_metrics.yml>) 2 times6962 behaves like updates gitlab_metrics_dashboard_processing_time_ms metric6963 prometheus6964 behaves like dashboard_version contains SHA256 hash of dashboard file content6965 is expected to eq "3a91b32f91b2dd3d90275333c0ea3630b3f3f37c4296ede5b5eef59bf523d66b"6966 .all_dashboard_paths6967 returns the dashboard attributes6968AuthorizedProjectUpdate::ProjectRecalculatePerUserService#execute6969 returns success6970 when there are no changes to be made6971 does not change authorizations6972 when there are changes to be made6973 when addition is required6974 adds a new authorization record for the specific user6975 does not add a new authorization record for the other user6976 adds a new authorization record with the correct access level for the specific user6977 when removal is required6978 removes the authorization record for the specific user6979 does not remove the authorization record for the other user6980 when an update in access level is required6981 updates the authorization of the specific user to the correct access level6982 does not update the authorization of the other user to the correct access level6983Packages::Debian::ExtractChangesMetadataService6984 #execute6985 with valid package file6986 extract metadata6987 with invalid package file6988 raise ArgumentError6989 with invalid metadata6990 without Files field6991 raise ArgumentError6992 without Checksums-Sha1 field6993 raise ArgumentError6994 without Checksums-Sha256 field6995 raise ArgumentError6996 with file in Checksums-Sha1 but not in Files6997 raise ArgumentError6998 with different size in Checksums-Sha16999 raise ArgumentError7000 with file in Checksums-Sha256 but not in Files7001 raise ArgumentError7002 with different size in Checksums-Sha2567003 raise ArgumentError7004 with file in Files but not in Checksums-Sha17005 raise ArgumentError7006 with file in Files but not in Checksums-Sha2567007 raise ArgumentError7008 with invalid MD57009 raise ArgumentError7010 with invalid SHA17011 raise ArgumentError7012 with invalid SHA2567013 raise ArgumentError7014 with missing package file7015 raise ArgumentError7016Packages::Debian::ProcessChangesService7017 #execute7018 with valid package file7019 updates package and package file7020 with invalid package file7021 raise ExtractionError7022 when creating package fails7023 remove the package file7024NotifyHelper7025 merge_request_reference_link7026 returns link to merge request with the text reference7027 issue_reference_link7028 returns link to issue with the text reference7029 #invited_to_description7030 truncates long descriptions7031 source: #<Project id: namespace1/project1>>, description: /Projects are/7032 is expected to match /Projects are/7033 source: #<Group id: @group1>, description: /Groups assemble/7034 is expected to match /Groups assemble/7035 source: #<Project id: namespace2/project2>>, description: "_description_"7036 is expected to match "_description_"7037 source: #<Group id: @group2>, description: "_description_"7038 is expected to match "_description_"7039FileSizeValidator7040 options uses an integer7041 attachment exceeds maximum limit7042 attachment under maximum limit7043 options uses a symbol7044 attachment exceeds maximum limit7045 attachment under maximum limit7046Gitlab::Analytics::CycleAnalytics::StageEvents::IssueDeployedToProduction7047 behaves like value stream analytics event7048 is expected to be a kind of String7049 is expected to be a kind of Symbol7050 is expected to include ApplicationRecord(abstract)7051 is expected to respond to #timestamp_projection7052 is expected to respond to #markdown_description7053 is expected to be a kind of Array7054 #apply_query_customization7055 expects an ActiveRecord::Relation object as argument and returns a modified version of it7056 #hash_code7057 returns a hash that uniquely identifies an event7058 does not differ when the same object is built with the same params7059Gitlab::Checks::TagCheck7060 #validate!7061 raises an error when user does not have access7062 with protected tag7063 as maintainer7064 deletion7065 is prevented7066 update7067 is prevented7068 creation7069 prevents creation below access level7070 when user has access7071 allows tag creation7072Gitlab::Composer::Cache7073 #execute7074 creating packages7075 with a pre-existing package7076 updates the sha and creates the cache page7077 behaves like Composer create cache page7078 creates the cached page7079 behaves like Composer marks cache page for deletion7080 marks the page for deletion7081 first package7082 updates the sha and creates the cache page7083 behaves like Composer create cache page7084 creates the cached page7085 updating packages7086 behaves like Composer create cache page7087 creates the cached page7088 behaves like Composer marks cache page for deletion7089 marks the page for deletion7090 deleting packages7091 when it is not the last package7092 behaves like Composer create cache page7093 creates the cached page7094 behaves like Composer marks cache page for deletion7095 marks the page for deletion7096 when it is the last package7097 does not create a new page7098 behaves like Composer marks cache page for deletion7099 marks the page for deletion7100IncidentManagement::ProjectIncidentManagementSetting7101 Associations7102 is expected to belong to project required:7103 Validations7104 validate issue_template_exists7105 with create_issue enabled7106 with valid issue_template_key7107 is expected to be valid7108 with empty issue_template_key7109 is expected to be valid7110 with nil issue_template_key7111 is expected to be valid7112 with invalid issue_template_key7113 is expected to be invalid7114 returns error7115 with create_issue disabled7116 with unknown issue_template_key7117 is expected to be valid7118 #issue_template_content7119 with valid issue_template_key7120 returns issue content7121 with unknown issue_template_key7122 behaves like no content7123 returns no content7124 without issue_template_key7125 behaves like no content7126 returns no content7127 #pagerduty_token7128 when token already set7129 reads the token7130 when not set7131 when PagerDuty webhook is active7132 generates a token before validation7133 when PagerDuty webhook is not active7134 does not generate a token before validation7135HasEnvironmentScope7136 is expected to allow :environment_scope to be ‹"*"›7137 is expected to allow :environment_scope to be ‹"review/*"›7138 is expected not to allow :environment_scope to be ‹""›7139 is expected not to allow :environment_scope to be ‹"!!()()"›7140 is expected to validate that :key is case-sensitively unique within the scope of :project_id and :environment_scope, producing a custom validation error on failure7141 .on_environment7142 returns scoped objects7143 returns only the most relevant object if relevant_only is true7144 returns scopes ordered by lowest precedence first7145 #environment_scope=7146 when the new environment_scope is nil7147 strips leading and trailing whitespaces7148 when the new environment_scope has leadind and trailing whitespaces7149 strips leading and trailing whitespaces7150Gitlab::Pagination::Keyset::SimpleOrderBuilder7151 when no order present7152 orders by primary key7153 sets the column definition distinct and not nullable7154 when primary key order present7155 orders by primary key without altering the direction7156 when ordered by other column7157 adds extra primary key order as tie-breaker7158 sets the column definition for created_at non-distinct and nullable7159 when ordered by two columns where the last one is the tie breaker7160 preserves the order7161 when non-nullable column is given7162 sets the column definition for namespace_id non-distinct and non-nullable7163 return :unable_to_order symbol when order cannot be built7164 when raw SQL order is given7165 is expected to eq false7166 when NULLS LAST order is given7167 is expected to eq false7168 when more than 2 columns are given for the order7169 is expected to eq false7170Namespaces::ProjectsFinder7171 #execute7172 without a namespace7173 returns an empty array7174 with a namespace7175 returns the project for the namespace7176 when include_subgroups is provided7177 returns all projects for the namespace7178 when ids are provided7179 returns all projects for the ids7180 when ids are provided7181 returns all projects for the ids7182 when sort is similarity7183 returns projects by similarity7184 when search parameter is missing7185 returns all projects7186 when sort parameter is missing7187 returns matching projects7188IgnorableColumns7189 adds columns to ignored_columns7190 adds columns to ignored_columns (array version)7191 requires remove_after attribute to be set7192 requires remove_after attribute to be set7193 requires remove_with attribute to be set7194 .ignored_columns_details7195 defaults to empty Hash7196 with single column7197 behaves like storing removal information7198 storing removal information7199 with array column7200 behaves like storing removal information7201 storing removal information7202 when called on a subclass without setting the ignored columns7203 does not raise Deadlock error7204 IgnorableColumns::ColumnIgnore7205 #safe_to_remove?7206 after remove_after date has passed7207 returns true (safe to remove)7208 before remove_after date has passed7209 returns false (not safe to remove)7210Packages::SemVer7211 #parse7212 behaves like #parse with a valid semver7213 with 1.0.07214 returns v1.0.0 with prefix7215 returns 1.0.0 without prefix7216 behaves like #parse with a valid semver7217 with 1.0.0-pre7218 returns v1.0.0-pre with prefix7219 returns 1.0.0-pre without prefix7220 behaves like #parse with a valid semver7221 with 1.0.0+build7222 returns v1.0.0+build with prefix7223 returns 1.0.0+build without prefix7224 behaves like #parse with a valid semver7225 with 1.0.0-pre+build7226 returns v1.0.0-pre+build with prefix7227 returns 1.0.0-pre+build without prefix7228 behaves like #parse with an invalid semver7229 with 01.0.07230 returns nil with prefix7231 returns nil without prefix7232 behaves like #parse with an invalid semver7233 with 0.01.07234 returns nil with prefix7235 returns nil without prefix7236 behaves like #parse with an invalid semver7237 with 0.0.017238 returns nil with prefix7239 returns nil without prefix7240 behaves like #parse with an invalid semver7241 with 1.0.0asdf7242 returns nil with prefix7243 returns nil without prefix7244Integrations::SlackSlashCommands7245 behaves like Integrations::BaseSlashCommands7246 Associations7247 is expected to respond to #token7248 is expected to have many chat_names7249 #valid_token?7250 when the token is empty7251 is false7252 when there is a token7253 accepts equal tokens7254 #trigger7255 no token is passed7256 returns nil7257 with a token passed7258 no user can be found7259 when no url can be generated7260 responds with the authorize url7261 when an auth url can be generated7262 generates the url7263 when the user is authenticated7264 triggers the command7265 when user is blocked7266 behaves like blocks command execution7267 is expected to match "you do not have access to the GitLab project"7268 when user is deactivated7269 behaves like blocks command execution7270 is expected to match "your account has been deactivated by your administrator"7271 #trigger7272 when an auth url is generated7273 uses slack compatible links7274 #chat_responder7275 returns the responder to use for Slack7276Projects::CiFeatureUsage7277 associations7278 is expected to belong to project required:7279 behaves like having unique enum values7280 has unique values in "feature"7281 validations7282 is expected to validate that :project cannot be empty/falsy7283 is expected to validate that :feature cannot be empty/falsy7284 .insert_usage7285 when data is not a duplicate7286 creates a new record7287 when data is a duplicate7288 does not create a new record7289FeatureFlags::UpdateService7290 #execute7291 returns success status7292 syncs the feature flag to Jira7293 creates audit event with correct message7294 with invalid params7295 returns error status7296 returns error messages7297 does not create audit event7298 does not sync the feature flag to Jira7299 when user is reporter7300 returns error status7301 when nothing is changed7302 returns success status7303 does not create audit event7304 description is being changed7305 creates audit event with changed description7306 when flag active state is changed7307 creates audit event about changing active state7308 executes hooks7309Ci::RunnerProject7310 behaves like includes Limitable concern7311 validations7312 is expected to be a kind of Limitable7313 without plan limits configured7314 can create new models7315 with plan limits configured7316 can create new models7317 with an existing model7318 cannot create new models exceeding the plan limits7319Ci::RunScheduledBuildService7320 when user can update build7321 when build is scheduled7322 when scheduled_at is expired7323 can run the build7324 when build requires resource7325 transits to waiting for resource status7326 when scheduled_at is not expired7327 can not run the build7328 when build is not scheduled7329 can not run the build7330 when user can not update build7331 when build is scheduled7332 can not run the build7333Gitlab::Ci::Config::Entry::AllowFailure7334 validations7335 when entry config value is valid7336 with boolean values7337 behaves like valid entry7338 #value7339 returns key value7340 #valid?7341 is valid7342 behaves like valid entry7343 #value7344 returns key value7345 #valid?7346 is valid7347 with hash values7348 behaves like valid entry7349 #value7350 returns key value7351 #valid?7352 is valid7353 behaves like valid entry7354 #value7355 returns key value7356 #valid?7357 is valid7358 when entry value is not valid7359 when it has a wrong type7360 behaves like invalid entry7361 #valid?7362 is expected not to be valid7363 is expected to include "allow failure config should be a hash or a boolean value"7364 with string exit codes7365 behaves like invalid entry7366 #valid?7367 is expected not to be valid7368 is expected to include "allow failure exit codes should be an array of integers or an integer"7369 with array of strings as exit codes7370 behaves like invalid entry7371 #valid?7372 is expected not to be valid7373 is expected to include "allow failure exit codes should be an array of integers or an integer"7374 when it has an extra keys7375 behaves like invalid entry7376 #valid?7377 is expected not to be valid7378 is expected to include "allow failure config contains unknown keys: extra"7379AuthorizedProjectUpdate::UserRefreshOverUserRangeWorker7380 behaves like worker with data consistency7381 .get_data_consistency_feature_flag_enabled?7382 returns true7383 .get_data_consistency7384 returns correct data consistency7385 #perform7386 checks if project authorization update is required7387 checks if a project_authorization refresh is needed for each of the users7388 when there are project authorization records due for either removal or addition for a specific user7389 enqueues a new project authorization update job for the user7390 when there are no additions or removals to be made to project authorizations for a specific user7391 does not enqueue a new project authorization update job for the user7392Constraints::ProjectUrlConstrainer7393 #matches?7394 valid request7395 is expected to be truthy7396 invalid request7397 non-existing project7398 is expected to be falsey7399 existence_check is false7400 is expected to be truthy7401 project id ending with .git7402 is expected to be falsey7403 when the request matches a redirect route7404 and is a GET request7405 is expected to be truthy7406 and is NOT a GET request7407 is expected to be falsey7408Packages::Debian::GroupDistributionKey7409 behaves like Debian Distribution Key7410 relationships7411 is expected to belong to distribution class_name => Packages::Debian::GroupDistribution required: inverse_of => key7412 validations7413 #distribution7414 is expected to validate that :distribution cannot be empty/falsy7415 #private_key7416 is expected to validate that :private_key cannot be empty/falsy7417 is expected to allow :private_key to be ‹"-----BEGIN PGP PRIVATE KEY BLOCK-----\n..."›7418 is expected not to allow :private_key to be ‹"A"›, producing a custom validation error on failure7419 #passphrase7420 is expected to validate that :passphrase cannot be empty/falsy7421 is expected to allow :passphrase to be ‹"P@$$w0rd"›7422 is expected to allow :passphrase to be ‹"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"›7423 is expected not to allow :passphrase to be ‹"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"›7424 #public_key7425 is expected to validate that :public_key cannot be empty/falsy7426 is expected to allow :public_key to be ‹"-----BEGIN PGP PUBLIC KEY BLOCK-----\n..."›7427 is expected not to allow :public_key to be ‹"A"›, producing a custom validation error on failure7428 #fingerprint7429 is expected to validate that :passphrase cannot be empty/falsy7430 is expected to allow :passphrase to be ‹"abc"›7431 is expected to allow :passphrase to be ‹"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"›7432 is expected not to allow :passphrase to be ‹"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"›7433DesignManagement::CopyDesignCollectionWorker7434 #perform7435 calls DesignManagement::CopyDesignCollection::CopyService7436 logs if there was an error calling the service7437 behaves like an idempotent worker7438 is labeled as idempotent7439 performs multiple times sequentially without raising an exception7440 is expected to receive perform(*(any args)) 2 times7441Gitlab::Usage::Metrics::Instrumentations::GenericMetric7442 with default fallback7443 #value7444 gives the correct value7445 when raising an exception7446 return the default fallback7447 with custom fallback -27448 behaves like custom fallback7449 #value7450 gives the correct value7451 when raising an exception7452 return the custom fallback7453 with custom fallback nil7454 behaves like custom fallback7455 #value7456 gives the correct value7457 when raising an exception7458 return the custom fallback7459 with custom fallback false7460 behaves like custom fallback7461 #value7462 gives the correct value7463 when raising an exception7464 return the custom fallback7465 with custom fallback true7466 behaves like custom fallback7467 #value7468 gives the correct value7469 when raising an exception7470 return the custom fallback7471 with custom fallback []7472 behaves like custom fallback7473 #value7474 gives the correct value7475 when raising an exception7476 return the custom fallback7477 with custom fallback { major: -1 }7478 behaves like custom fallback7479 #value7480 gives the correct value7481 when raising an exception7482 return the custom fallback7483Gitlab::GitalyClient::StorageSettings7484 #initialize7485 when the storage contains no path7486 raises an error7487 when the argument isn't a hash7488 raises an error7489 when the storage is valid7490 raises no error7491 .gitaly_address7492 when the storage settings have no gitaly address but one is requested7493 raises an error7494 when the storage settings have a gitaly address and one is requested7495 returns the setting value7496 when the storage settings have a gitaly address keyed symbolically7497 raises no error7498 when the storage settings have a gitaly address keyed with a string7499 raises no error7500 .disk_access_denied?7501 when Rugged is enabled7502 returns false7503 when Rugged is disabled7504 returns true7505WebIdeTerminal7506 returns the show_path of the build7507 returns the retry_path of the build7508 returns the cancel_path of the build7509 returns the terminal_path of the build7510 returns the proxy_websocket_path of the build7511 services7512 when image does not have an alias7513 returns services aliases7514 when both image and services have aliases7515 returns all aliases7516 when image and services does not have any alias7517 returns an empty array7518 when no image nor services7519 returns an empty array7520Gitlab::Ci::Build::Step7521 #from_commands7522 when script option is specified7523 behaves like has correct script7524 fabricates an object7525 when before and script option is specified7526 behaves like has correct script7527 fabricates an object7528 when timeout option is specified in seconds7529 has job level timeout7530 behaves like has correct script7531 fabricates an object7532 #from_release7533 with release7534 returns the release-cli command line7535 when release is empty7536 does not fabricate an object7537 #from_after_script7538 when after_script is empty7539 does not fabricate an object7540 when after_script is not empty7541 fabricates an object7542Projects::ContainerRepository::Gitlab::DeleteTagsService7543 #execute7544 with tags to delete7545 succeeds when tag delete returns 4047546 succeeds when a tag delete returns 5007547 behaves like deleting tags7548 deletes the tags by name7549 with failures7550 when the delete request fails7551 is expected to eq {:message=>"could not delete tags", :status=>:error}7552 with throttling enabled7553 behaves like deleting tags7554 deletes the tags by name7555 with timeout7556 set to a valid value7557 is expected to eq {:deleted=>["A"], :exception_class_name=>"Projects::ContainerRepository::Gitlab::DeleteTagsService::TimeoutError", :message=>"error while deleting tags", :status=>:error}7558 tracks the exception7559 set to 07560 behaves like deleting tags7561 deletes the tags by name7562 set to nil7563 behaves like deleting tags7564 deletes the tags by name7565 with a network error7566 is expected to eq {:deleted=>[], :exception_class_name=>"Faraday::TimeoutError", :message=>"error while deleting tags", :status=>:error}7567 tracks the exception7568 with empty tags7569 does not remove anything7570Gitlab::LegacyGithubImport::MilestoneFormatter7571 when importing a GitHub project7572 behaves like Gitlab::LegacyGithubImport::MilestoneFormatter#attributes7573 when milestone is open7574 returns formatted attributes7575 when milestone is closed7576 returns formatted attributes7577 when milestone has a due date7578 returns formatted attributes7579 when importing a Gitea project7580 behaves like Gitlab::LegacyGithubImport::MilestoneFormatter#attributes7581 when milestone is open7582 returns formatted attributes7583 when milestone is closed7584 returns formatted attributes7585 when milestone has a due date7586 returns formatted attributes7587Users::UpdateService7588 #execute7589 updates time preferences7590 returns an error result when record cannot be updated7591 includes namespace error messages7592 updates the status if status params were given7593 does not delete the status if no status param was passed7594 includes status error messages7595 updates user detail with provided attributes7596 updating canonical email7597 if email was changed7598 calls canonicalize_email7599 if email was NOT changed7600 skips update canonicalize email service call7601 #execute!7602 updates the name7603 raises an error when record cannot be updated7604 fires system hooks when a new user is saved7605Sidebars::Projects::Menus::ProjectInformationMenu7606 #container_html_options7607 is expected to match #<RSpec::Mocks::ArgumentMatchers::HashIncludingMatcher:0x00007fbb1e0736c8 @expected={:class=>"shortcuts-project-information has-sub-items"}>7608 Menu Items7609 Labels7610 is expected not to be nil7611 when merge requests are disabled7612 is expected not to be nil7613 when issues are disabled7614 is expected not to be nil7615 when merge requests and issues are disabled7616 is expected to be nil7617 Members7618 is expected not to be nil7619 when the user does not have access7620 is expected to be nil7621BulkImports::Groups::Transformers::GroupAttributesTransformer7622 #transform7623 transforms name to destination name7624 removes full path7625 transforms path to parameterized name7626 transforms visibility level7627 transforms project creation level7628 transforms subgroup creation level7629 parent group transformation7630 sets parent id7631 when destination namespace is empty7632 does not set parent id7633RebaseWorker#perform7634 when rebasing an MR from a fork where upstream has protected branches7635 sets the correct project for running hooks7636DependencyProxy::Registry7637 image name without namespace7638 #auth_url7639 returns a correct auth url7640 #manifest_url7641 returns a correct manifest url7642 #blob_url7643 returns a correct blob url7644 image name with namespace7645 #auth_url7646 returns a correct auth url7647 #manifest_url7648 returns a correct manifest url7649 #blob_url7650 returns a correct blob url7651 #authenticate_header7652 returns the OAuth realm and service header7653AlertManagement::HttpIntegrations::CreateService7654 #execute7655 when the current_user is anonymous7656 behaves like error response7657 has an informative message7658 when current_user does not have permission to create integrations7659 behaves like error response7660 has an informative message7661 when an integration already exists7662 behaves like error response7663 has an informative message7664 when an error occurs during update7665 behaves like error response7666 has an informative message7667 with valid params7668 successfully creates an integration7669Types::UntrustedRegexp7670 is expected to eq "UntrustedRegexp"7671 is expected to eq "A regexp containing patterns sourced from user input"7672 .coerce_input7673 input: ".*", expected_result: ".*"7674 with input .*7675 is expected to eq ".*"7676 input: "(.*)", expected_result: "(.*)"7677 with input (.*)7678 is expected to eq "(.*)"7679 input: "[test*]+", expected_result: "[test*]+"7680 with input [test*]+7681 is expected to eq "[test*]+"7682 input: "*v1", expected_result: :raise_error7683 with input *v17684 raises a coercion error7685 input: "[test*", expected_result: :raise_error7686 with input [test*7687 raises a coercion error7688 input: "test*+", expected_result: :raise_error7689 with input test*+7690 raises a coercion error7691 .coerce_result7692 input: "1", expected_result: "1"7693 with input 17694 is expected to eq "1"7695 input: 1, expected_result: "1"7696 with input 17697 is expected to eq "1"7698 input: true, expected_result: "true"7699 with input true7700 is expected to eq "true"7701Gitlab::ImportExport::UploadsSaver7702 bundle a project Git repo7703 legacy storage7704 saves the uploads successfully7705 copies the uploads to the export path7706 hashed storage7707 saves the uploads successfully7708 copies the uploads to the export path7709Gitlab::AlertManagement::Payload7710 #parse7711 without a monitoring_tool specified by caller7712 without a monitoring tool in the payload7713 is expected to be a kind of Gitlab::AlertManagement::Payload::Generic7714 with the payload specifying Prometheus7715 is expected to be a kind of Gitlab::AlertManagement::Payload::Prometheus7716 with gitlab-managed attributes7717 is expected to be a kind of Gitlab::AlertManagement::Payload::ManagedPrometheus7718 with the payload specifying an unknown tool7719 is expected to be a kind of Gitlab::AlertManagement::Payload::Generic7720 with monitoring_tool specified by caller7721 as Prometheus7722 with an externally managed prometheus payload7723 is expected to be a kind of Gitlab::AlertManagement::Payload::Prometheus7724 with a self-managed prometheus payload7725 is expected to be a kind of Gitlab::AlertManagement::Payload::ManagedPrometheus7726 as an unknown tool7727 is expected to be a kind of Gitlab::AlertManagement::Payload::Generic7728 with integration specified by caller7729 passes an integration to a specific payload7730Gitlab::Ci::Pipeline::Expression::Lexeme::Variable7731 .build7732 creates a new instance of the token7733 .type7734 is a value lexeme7735 #evaluate7736 returns variable value if it is defined7737 allows to use a string as a variable key too7738 returns nil if it is not defined7739 returns an empty string if it is empty7740ImportHelper7741 #sanitize_project_name7742 removes leading tildes7743 removes whitespace7744 removes disallowed characters7745 #import_project_target7746 when current user can create namespaces7747 returns project namespace7748 when current user can not create namespaces7749 takes the current user's namespace7750 #provider_project_link_url7751 appends repo full path to provider host url7752X509Helper7753 #x509_subject7754 with uppercase DN7755 returns the attributes on any case search7756 with lowercase DN7757 returns the attributes on any case search7758 with comma within DN7759 returns the attributes on any case search7760 with mal formed DN7761 returns nil on any case search7762 #x509_signature?7763 detects a x509 signed commit7764Packages::Helm::ProcessFileService7765 #execute7766 without a file7767 returns error7768 with existing package7769 reuses existing package7770 with a valid file7771 processes file7772 without Chart.yaml7773 is expected to raise Packages::Helm::ExtractFileMetadataService::ExtractionError with "Chart.yaml not found within a directory"7774 with Chart.yaml at root7775 is expected to raise Packages::Helm::ExtractFileMetadataService::ExtractionError with "Chart.yaml not found within a directory"7776 with an invalid YAML7777 is expected to raise Packages::Helm::ExtractFileMetadataService::ExtractionError with "Error while parsing Chart.yaml: (<unknown>): did not find expected node content while parsing a flow node at line 2 column 1"7778ProjectCacheWorker7779 #perform7780 with a non-existing project7781 does nothing7782 with an existing project without a repository7783 updates statistics but does not refresh the method cashes7784 with an existing project7785 refreshes the method caches7786 with statistics disabled7787 does not update the project statistics7788 with statistics7789 updates the project statistics7790 with plain readme7791 refreshes the method caches7792 #update_statistics7793 when a lease could not be obtained7794 does not update the project statistics7795 when a lease could be obtained7796 updates the project statistics twice7797 behaves like an idempotent worker7798 is labeled as idempotent7799 performs multiple times sequentially without raising an exception7800 calls Projects::UpdateStatisticsService service twice7801Gitlab::GithubImport::Importer::NotesImporter7802 #parallel?7803 returns true when running in parallel mode7804 returns false when running in sequential mode7805 #execute7806 when running in parallel mode7807 imports notes in parallel7808 when running in sequential mode7809 imports notes in sequence7810 #sequential_import7811 imports each note in sequence7812 #parallel_import7813 imports each note in parallel7814 #id_for_already_imported_cache7815 returns the ID of the given note7816 #collection_options7817 returns an empty Hash7818Ci::CreatePipelineService7819 #execute7820 with deployment tier7821 creates the environment with the expected tier7822 when tier is testing7823 creates the environment with the expected tier7824Mutations::MergeRequests::SetSubscription7825 is expected to require graphql authorizations :update_subscription7826 when user does not have access to the project7827 behaves like a subscribeable not accessible graphql resource7828 raises an error if the resource is not accessible to the user7829 when user is developer member of the project7830 behaves like a subscribeable graphql resource7831 subscribes to the resource7832 when passing subscribe as false7833 unsubscribes from the discussion7834 when the project is public7835 behaves like a subscribeable graphql resource7836 subscribes to the resource7837 when passing subscribe as false7838 unsubscribes from the discussion7839gitlab:password rake tasks7840 :reset7841 when all inputs are correct7842 updates the password properly7843 when username is not provided7844 asks for username7845 when username is empty7846Username can not be empty.7847 aborts with an error7848 when username is passed as argument7849 does not ask for username7850 when passwords do not match7851Unable to change password of the user with username foobar.7852Password confirmation doesn't match Password7853 aborts with an error7854 when user cannot be found7855Unable to find user with username nonexistentuser.7856 aborts with an error7857JiraConnect::SyncDeploymentsWorker7858 behaves like worker with data consistency7859 .get_data_consistency_feature_flag_enabled?7860 returns true7861 .get_data_consistency7862 returns correct data consistency7863 #perform7864 when the object exists7865 calls the Jira sync service7866 when the object does not exist7867 does not call the sync service7868Resolvers::Users::GroupCountResolver7869 #resolve7870 resolves group count for users7871 permissions7872 when current_user is an admin7873 is expected to eq [2, 1]7874 when current_user does not have access to the requested resource7875 is expected to equal nil7876 when current_user does not exist7877 is expected to equal nil7878Mutations::Ci::Runner::Update7879 is expected to require graphql authorizations :update_runner7880 #resolve7881 when the user cannot admin the runner7882 raises an error7883 with invalid params7884 raises an error7885 when required arguments are missing7886 raises an error7887 when user can update runner7888 with valid arguments7889 updates runner with correct values7890 with out-of-range maximum_timeout and missing tag_list7891 returns a descriptive error7892Gitlab::PhabricatorImport::Representation::Task7893 #issue_attributes7894 contains the expected values7895 #author_phid7896 returns the correct field7897 #owner_phid7898 returns the correct field7899CreateNoteDiffFileWorker7900 #perform7901 creates diff file7902Gitlab::Kubernetes::RolloutInstances7903 #pod_instances7904 returns an instance for a deployment with one pod7905 returns a pending pod for a missing replica7906 returns instances when there are two stable deployments7907 returns instances for two deployments with different tracks7908 sorts stable tracks after canary tracks7909DiffFileMetadataEntity7910 as json7911 exposes the expected fields7912 behaves like diff file with conflict_type7913 #conflict_type7914 returns nil by default7915 when there is matching conflict file7916 returns false7917IncidentManagement::PagerDuty::ProcessWebhookService7918 #execute7919 when PagerDuty webhook setting is active7920 when token is valid7921 when webhook payload has acceptable size7922 responds with Accepted7923 processes issues7924 when webhook payload is too big7925 responds with Bad Request7926 behaves like does not process incidents7927 does not process incidents7928 when webhook payload is blank7929 responds with Accepted7930 behaves like does not process incidents7931 does not process incidents7932 when token is invalid7933 responds with Unauthorized7934 behaves like does not process incidents7935 does not process incidents7936 when both tokens are nil7937 responds with Unauthorized7938 behaves like does not process incidents7939 does not process incidents7940 when PagerDuty webhook setting is not active7941 responds with Forbidden7942 behaves like does not process incidents7943 does not process incidents7944Gitlab::HTTPConnectionAdapter7945 #connection7946 when local requests are allowed7947 sets up the connection7948 when local requests are not allowed7949 sets up the connection7950 when it is a request to local network7951 raises error7952 when local request allowed7953 sets up the connection7954 when it is a request to local address7955 raises error7956 when local request allowed7957 sets up the connection7958 when port different from URL scheme is used7959 sets up the addr_port accordingly7960 when DNS rebinding protection is disabled7961 sets up the connection7962 when http(s) environment variable is set7963 sets up the connection7964Pages::VirtualDomain7965 #certificate and #key pair7966 returns nil if there is no domain provided7967 when Pages domain is provided7968 returns certificate and key from the provided domain7969 #lookup_paths7970 when there is pages domain provided7971 returns collection of projects pages lookup paths sorted by prefix in reverse7972 when there is trim_prefix provided7973 returns collection of projects pages lookup paths sorted by prefix in reverse7974Ci::PipelineArtifacts::CodeCoveragePresenter7975 #for_files7976 when code coverage has data7977 when filenames is empty7978 returns hash without coverage7979 when filenames do not match code coverage data7980 returns hash without coverage7981 when filenames matches code coverage data7982 when asking for one filename7983 returns coverage for the given filename7984 when asking for multiple filenames7985 returns coverage for a the given filenames7986MergeRequests::AssignsMergeParams7987 raises an error when used from an instance that does not respond to #current_user7988 #assign_allowed_merge_params7989 only assigns known parameters to the merge request7990 returns a hash without the known merge params7991 the force_remove_source_branch param7992 assigns the param if the user is allowed to do that7993 only removes the param if the user is not allowed to do that7994projects/imports/new.html.haml7995 when import fails7996 escapes HTML in import errors7997Gitlab::Utils::JsonSizeEstimator7998 is expected to match json bytesize of7999 is expected to match json bytesize of [[[]]]8000 is expected to match json bytesize of 1, "str", 3.14, and ["str", {:a=>-1}]8001 is expected to match json bytesize of {}8002 is expected to match json bytesize of {:a=>{}}8003 is expected to match json bytesize of {:a=>{:b=>{:c=>[1, 2, 3], :e=>2021-08-18 10:29:47.639911690 +0000, :f=>nil}}}8004 is expected to match json bytesize of {100=>500}8005 is expected to match json bytesize of {"狸"=>"狸"}8006 is expected to match json bytesize of nil8007 calls #to_s on unknown object8008Projects::ErrorTrackingHelper8009 #error_tracking_data8010 without error_tracking_setting8011 returns frontend configuration8012 with error_tracking_setting8013 when enabled8014 show error tracking enabled8015 when disabled8016 show error tracking not enabled8017 when user is not maintainer8018 shows error tracking enablement as disabled8019 #error_details_data8020 returns the correct issue id8021 returns the correct project path8022 returns the correct stack trace path8023 creates an issue and redirects to issue show page8024Boards::CreateService8025 #execute8026 when board parent is a project8027 behaves like boards create service8028 when parent does not have a board8029 creates a new board8030 creates the default lists8031 when parent has a board8032 does not create a new board8033 when board parent is a group8034 behaves like boards create service8035 when parent does not have a board8036 creates a new board8037 creates the default lists8038 when parent has a board8039 does not create a new board8040OauthAccessGrant8041 #delete8042 cascades to oauth_openid_requests8043UpdateContainerRegistryInfoWorker8044 #perform8045 calls UpdateContainerRegistryInfoService8046Gitlab::Checks::PushFileCountCheck8047 #validate!8048 initial creation8049 allows creation8050 old: "single-file", new: "edit-file", valid: true, message: nil8051 verifies8052 old: "single-file", new: "multiple-files", valid: false, message: "The repository can contain at most 2 file(s)."8053 verifies8054 old: "single-file", new: "no-files", valid: false, message: "The repository must contain at least 1 file."8055 verifies8056 old: "edit-file", new: "rename-and-edit-file", valid: true, message: nil8057 verifies8058Resolvers::GroupIssuesResolver8059 #resolve8060 finds all group issues8061 finds all group and subgroup issues8062TimeHelper8063 #time_interval_in_words8064 returns minutes and seconds8065 #duration_in_numbers8066 duration: 0, formatted_string: "00:00"8067 is expected to eq "00:00"8068 duration: 1 second, formatted_string: "00:01"8069 is expected to eq "00:01"8070 duration: 42 seconds, formatted_string: "00:42"8071 is expected to eq "00:42"8072 duration: 2 minutes and 1 second, formatted_string: "02:01"8073 is expected to eq "02:01"8074 duration: 3 hours, 2 minutes, and 1 second, formatted_string: "03:02:01"8075 is expected to eq "03:02:01"8076 duration: 30 hours, formatted_string: "30:00:00"8077 is expected to eq "30:00:00"8078 #time_in_milliseconds8079 returns the time in milliseconds8080Gitlab::AppTextLogger8081 logs a hash as string8082 logs a string unchanged8083 logs time in UTC with ISO8601.3 standard8084Managed-Cluster-Applications.gitlab-ci.yml8085 the created pipeline8086 for a default branch8087 creates a apply job8088 outside of default branch8089 has no jobs8090GroupImportState8091 validations8092 is expected to belong to user required: true8093 is expected to validate that :group cannot be empty/falsy8094 is expected to validate that :status cannot be empty/falsy8095 can be created without a jid8096 cannot be started without a jid8097 cannot be finished without a jid8098 can fail without a jid8099 #in_progress?8100 when the import is 'created'8101 returns true8102 when the import is 'started'8103 returns true8104 when the import is 'finished'8105 returns false8106 when the import is 'failed'8107 returns false8108 when import failed8109 when error message is present8110 truncates error message8111 when error message is missing8112 has no error message8113Clusters::Aws::FetchCredentialsService8114 #execute8115 provision role is configured8116 provider is specified8117 is expected to eq #<Double (anonymous)>8118 provider is not specifed8119 is expected to eq #<Double (anonymous)>8120 region is not specifed8121 is expected to eq #<Double (anonymous)>8122 provision role is not configured8123 raises an error8124 with an instance profile attached to an IAM role8125 provider is specified8126 returns credentials8127 provider is not specifed8128 returns credentials8129UploaderFinder8130 #execute8131 when successful8132 gets the file-like uploader8133 when path traversal in file name8134 returns nil8135 when unexpected failure8136 returns nil when unexpected error is raised8137DeploymentCluster8138 is expected to belong to deployment required: true8139 is expected to belong to cluster required: true8140 is expected to have attributes {:cluster_id => 44, :deployment_id => 110, :kubernetes_namespace => "an-example-namespace"}8141Ci::TriggersHelper8142 .builds_trigger_url8143 with no ref8144 is expected to eq "http://localhost/api/v4/projects/1/trigger/pipeline"8145 with ref8146 is expected to eq "http://localhost/api/v4/projects/1/ref/master/trigger/pipeline"8147 .service_trigger_url8148 is expected to eq "http://localhost/api/v4/projects/1/services/param/trigger"8149Gitlab::Metrics::Subscribers::ActionCable8150 #transmit8151 tracks the transmit event8152 tracks size of payload as JSON8153 #broadcast8154 tracks the broadcast event8155 #transmit_subscription_confirmation8156 tracks the subscription confirmation event8157 #transmit_subscription_rejection8158 tracks the subscription rejection event8159ConfigLint8160 errors out if any bash scripts have errors8161 passes if all scripts are fine8162config_lint rake task8163 runs lint on shell scripts8164Environments::EnvironmentsFinder8165 #execute8166 with states parameter8167 returns environments with the requested state8168 returns environments with any of the requested states8169 raises exception when requested state is invalid8170 works with symbols8171 returns environments with the requested state8172 returns environments with any of the requested states8173 with search and states8174 searches environments by name and state8175 with id8176 searches environments by name and state8177Gitlab::Graphql::QueryAnalyzers::LoggerAnalyzer8178 variables8179 is expected to eq "{:body=>\"[FILTERED]\"}"8180 #final_value8181 inserts duration in seconds to memo and sets request store8182Types::BlobViewers::TypeEnum8183 is expected to eq "BlobViewersType"8184 exposes all tree entry types8185layouts/_search8186 when doing project level search8187 behaves like search context scope is set8188 when rendering8189 sets the placeholder8190 when on issues8191 sets scope to issues8192 when on merge requests8193 sets scope to merge_requests8194 when doing group level search8195 behaves like search context scope is set8196 when rendering8197 sets the placeholder8198 when on issues8199 sets scope to issues8200 when on merge requests8201 sets scope to merge_requests8202Lfs::PushService8203 does nothing if there are no LFS objects8204 #execute8205 uploads the object when upload is requested8206 does not upload the object when upload is not requested8207 verifies the upload if requested8208 skips verification if requested but upload fails8209 returns a failure when submitting a batch fails8210 returns a failure when submitting an upload fails8211 non-project-repository LFS objects8212 only tries to upload the project-repository LFS object8213Gitlab::Sherlock::LineProfiler8214 #profile8215 runs the profiler when using MRI8216 raises NotImplementedError when profiling an unsupported platform8217 #profile_mri8218 returns an Array containing the return value and profiling samples8219 #aggregate_rblineprof8220 returns an Array of FileSample objects8221 the first FileSample object8222 uses the correct file path8223 contains a list of line samples8224 contains the total file execution time8225 contains the total amount of file events8226Gitlab::GrapeLogging::Loggers::ExceptionLogger8227 .parameters8228 when no exception is available8229 returns an empty hash8230 with a response8231 with a String response8232 logs the response body8233 with an Array response8234 casts all elements to strings8235 with a Rack BodyProxy response8236 logs the response body8237 unauthorized error8238 does not log an api_error field8239 HTTP success8240 does not log an api_error field8241 when an exception is available8242 returns the correct fields8243 with backtrace8244 includes the backtrace8245projects/blob/_viewer.html.haml8246 when the viewer is loaded asynchronously8247 when there is no render error8248 adds a URL to the blob viewer element8249 renders the loading indicator8250 when there is a render error8251 renders the error8252 when the viewer is loaded synchronously8253 when there is no render error8254 prepares the viewer8255 renders the viewer8256 when there is a render error8257 renders the error8258Gitlab::Database::SimilarityScore8259 when passing empty values8260 when search is nil8261 orders by a constant 0 value8262 when rules are empty8263 orders by a constant 0 value8264 when similarity scoring based on the path8265 when searching for `git`8266 is expected to eq ["git", "gitlab", "gitaly"]8267 when searching for `gitlab`8268 is expected to eq ["gitlab", "gitlab-styles", "gitlab-danger"]8269 when searching for something unrelated8270 results have 0 similarity score8271 score multiplier8272 ranks `path` matches higher8273 annotation8274 annotates the generated SQL expression8275Mutations::Terraform::State::Lock8276 is expected to eq "TerraformStateLock"8277 is expected to require graphql authorizations :admin_terraform_state8278 #resolve8279 user does not have permission8280 raises an error8281 user has permission8282 locks the state8283 state is already locked8284 does not modify the existing lock8285 with invalid params8286 raises an error8287RuboCop::Cop::Graphql::JSONType8288 does not add an offense for uses outside of field or argument8289 fields8290 adds an offense when GraphQL::Types::JSON is used8291 adds an offense when GraphQL::Types::JSON is used with other keywords8292 does not add an offense for other types8293 arguments8294 adds an offense when GraphQL::Types::JSON is used8295 adds an offense when GraphQL::Types::JSON is used with other keywords8296 does not add an offense for other types8297ApplicationSetting::Term8298 is expected to validate that :terms cannot be empty/falsy8299 .latest8300 finds the latest terms8301 #accepted_by_user?8302 is true when the user accepted the terms8303 is true when user is a bot8304 is false when the user declined the terms8305 does not cause a query when the user accepted the current terms8306 returns false if the currently accepted terms are different8307Gitlab::DependencyLinker::PodfileLinker8308 .support?8309 supports Podfile8310 does not support other files8311 #link8312 links sources8313 links packages8314 links external packages8315 links Git repos8316Gitlab::Bullet8317 #enabled?8318 is enabled8319 is not enabled8320 is correctly aliased for #extra_logging_enabled?8321 #configure_bullet?8322 with ENABLE_BULLET true8323 is configurable8324 with ENABLE_BULLET falsey8325 is not configurable8326 is configurable in development8327Gitlab::LanguageDetection8328 #languages8329 returns the language names8330 #insertions8331 only includes new languages8332 #updates8333 updates the share of languages8334 does not include languages to be removed8335 when silent writes occur8336 doesn't include them in the result8337 #deletions8338 lists undetected languages8339Gitlab::Git::PreReceiveError8340 uses the fallback message8341 uses the fallback message8342 error messages prefixed with GitLab:8343 accepts only errors lines with the prefix8344 makes its message HTML-friendly8345 prefers the original message over the fallback8346 error messages prefixed with GL-HOOK-ERR:8347 accepts only errors lines with the prefix8348 makes its message HTML-friendly8349 prefers the original message over the fallback8350Gitlab::Database::ConnectionTimer8351 .starting_now8352 when the configured interval is positive8353 randomizes the interval of the created timer8354 when the configured interval is not positive8355 sets the interval of the created timer to nil8356 .expired?8357 when the interval is positive8358 when the interval has elapsed8359 returns true8360 when the interval has not elapsed8361 returns false8362 when the interval is not positive8363 when the interval has elapsed8364 returns false8365 when the interval has not elapsed8366 returns false8367 when the interval is nil8368 returns false8369 .reset!8370 updates the timer clock value8371Constraints::AdminConstrainer8372 #matches8373 application setting :admin_mode is enabled8374 when user is a regular user8375 forbids access8376 when user is an admin8377 admin mode is disabled8378 forbids access8379 admin mode is enabled8380 allows access8381 application setting :admin_mode is disabled8382 when user is a regular user8383 forbids access8384 when user is an admin8385 allows access8386NoteSummary8387 #metadata?8388 returns true when metadata present8389 returns false when metadata not present8390 #note8391 returns note hash8392 when noteable is a commit8393 returns note hash specific to commit8394 #metadata8395 returns metadata hash8396 description action and noteable has saved_description_version8397 sets the description_version metadata8398Resolvers::ProjectResolver8399 does not increase complexity depending on number of load limits8400 #resolve8401 batch-resolves projects by full path8402 resolves an unknown full_path to nil8403Gitlab::ExclusiveLeaseHelpers::SleepingLock8404 #retried?8405 we have not made any attempts8406 is expected not to be retried8407 we just made a single (initial) attempt8408 is not considered a retry8409 made multiple attempts8410 is considered a retry8411 #obtain8412 when the lease is not held8413 obtains the lease on the first attempt, without sleeping8414 when the lease is held elsewhere8415 retries to obtain a lease and raises an error8416 when the delay is computed from the attempt number8417 uses the computation to determine the sleep length8418 when lease is granted after retry8419 knows that it retried8420 cancel8421 cancels the lease8422Resolvers::ProjectJobsResolver8423 #resolve8424 with authorized user8425 with statuses argument8426 is expected to contain exactly #<Ci::Build id: 224, status: "success", finished_at: "2021-08-18 08:53:29.000000000 +0000", trace: ni...up_id: nil, waiting_for_resource_at: nil, processed: false, scheduling_type: "stage", tag_list: nil> and #<Ci::Build id: 225, status: "success", finished_at: "2021-08-18 08:53:29.000000000 +0000", trace: ni...up_id: nil, waiting_for_resource_at: nil, processed: false, scheduling_type: "stage", tag_list: nil>8427 without statuses argument8428 is expected to contain exactly #<Ci::Build id: 224, status: "success", finished_at: "2021-08-18 08:53:29.000000000 +0000", trace: ni...up_id: nil, waiting_for_resource_at: nil, processed: false, scheduling_type: "stage", tag_list: nil>, #<Ci::Build id: 225, status: "success", finished_at: "2021-08-18 08:53:29.000000000 +0000", trace: ni...up_id: nil, waiting_for_resource_at: nil, processed: false, scheduling_type: "stage", tag_list: nil>, and #<Ci::Build id: 226, status: "failed", finished_at: "2021-08-18 08:53:29.000000000 +0000", trace: nil...up_id: nil, waiting_for_resource_at: nil, processed: false, scheduling_type: "stage", tag_list: nil>8429 with unauthorized user8430 is expected to be nil8431Quality::Seeders::Issues8432 #seed8433. seeds issues8434Gitlab::Ci::Pipeline::Duration8435 test sample A8436 behaves like calculating duration8437 is expected to eq 48438 test sample B8439 behaves like calculating duration8440 is expected to eq 48441 test sample C8442 behaves like calculating duration8443 is expected to eq 88444 test sample D8445 behaves like calculating duration8446 is expected to eq 48447 test sample E8448 behaves like calculating duration8449 is expected to eq 78450 test sample F8451 behaves like calculating duration8452 is expected to eq 68453 test sample G8454 behaves like calculating duration8455 is expected to eq 48456Gitlab::Email::Hook::SmimeSignatureInterceptor8457 signs the email appropriately with SMIME8458BuildQueueWorker8459 #perform8460 when build exists8461 ticks runner queue value8462 when build does not exist8463 does not raise exception8464 behaves like worker with data consistency8465 .get_data_consistency_feature_flag_enabled?8466 returns true8467 .get_data_consistency8468 returns correct data consistency8469FaviconUploader8470 accept whitelist file content type8471 mime_type: "image/png"8472 behaves like accepted carrierwave upload8473 will accept upload8474 will cache uploaded file8475 mime_type: "image/vnd.microsoft.icon"8476 behaves like accepted carrierwave upload8477 will accept upload8478 will cache uploaded file8479 upload non-whitelisted file content type8480 behaves like denied carrierwave upload8481 will deny upload8482 upload misnamed non-whitelisted file content type8483 behaves like denied carrierwave upload8484 will deny upload8485JiraConnect::SyncFeatureFlagsWorker8486 behaves like worker with data consistency8487 .get_data_consistency_feature_flag_enabled?8488 returns true8489 .get_data_consistency8490 returns correct data consistency8491 #perform8492 when object exists8493 calls the Jira sync service8494 when object does not exist8495 does not call the sync service8496Gitlab::Cluster::LifecycleEvents8497 hooks execution8498 method: :do_worker_start, hook_names: [:worker_start_hooks]8499 executes all hooks8500 method: :do_before_fork, hook_names: [:before_fork_hooks]8501 executes all hooks8502 method: :do_before_graceful_shutdown, hook_names: [:master_blackout_period, :master_graceful_shutdown]8503 executes all hooks8504 method: :do_before_master_restart, hook_names: [:master_restart_hooks]8505 executes all hooks8506 #call8507 when many hooks raise exception8508 USE_FATAL_LIFECYCLE_EVENTS is set to default8509 only first hook is executed and is fatal8510 when USE_FATAL_LIFECYCLE_EVENTS is disabled8511ERROR: The hook my_hooks failed with exception (RuntimeError) "Exception A".8512ERROR: The hook my_hooks failed with exception (RuntimeError) "Exception B".8513 many hooks are executed and all exceptions are logged8514Resolvers::ReleaseResolver8515 #resolve8516 when the user does not have access to the project8517 returns nil8518 when the user has full access to the project's releases8519 returns the release associated with the specified tag8520 when no tag_name argument was passed8521 raises an error8522Packages::Debian::CreatePackageFileService8523 #execute8524 with temp file8525 behaves like a valid deb8526 creates a new package file8527 with remote file8528 behaves like a valid deb8529 creates a new package file8530 package is missing8531 raises an error8532 params is empty8533 raises an error8534 file is missing8535 raises an error8536MergeRequestSidebarBasicEntity8537 #current_user8538 contains attributes related to the current user8539RuboCop::Cop::Migration::ComplexIndexesRequireName8540 when in migration8541 when creating complex indexes as part of create_table8542 when indexes are configured with an options hash, but no name8543 registers an offense8544 when indexes are configured with an options hash and name8545 registers no offense8546 when indexes are added to an existing table8547 when indexes are configured with an options hash, but no name8548 registers an offense8549 when indexes are configured with an options hash and a name8550 registers no offenses8551 when outside migration8552 registers no offenses8553Gitlab::Octokit::Middleware8554 #call8555 when the URL is a public URL8556 behaves like Public URL8557 does not raise an error8558 when the URL is a localhost adresss8559 when localhost requests are not allowed8560 behaves like Local URL8561 raises an error8562 when localhost requests are allowed8563 behaves like Public URL8564 does not raise an error8565 when the URL is a local network address8566 when local network requests are not allowed8567 behaves like Local URL8568 raises an error8569 when local network requests are allowed8570 behaves like Public URL8571 does not raise an error8572Gitlab::Auth::Saml::AuthHash8573 #groups8574 returns array of groups8575 raw info hash attributes empty8576 returns an empty array8577 #authn_context8578 with response_object8579 can extract authn_context8580 with SAML 2.0 response_object8581 can extract authn_context8582 with ADFS SAML response_object8583 can extract authn_context8584 without response_object8585 returns an empty string8586Gitlab::Database::PgClass8587 #cardinality_estimate8588 when no information is available8589unknown OID 28: failed to recognize type of 'relfrozenxid'. It will be treated as String.8590unknown OID 1034: failed to recognize type of 'relacl'. It will be treated as String.8591unknown OID 194: failed to recognize type of 'relpartbound'. It will be treated as String.8592 returns nil for the estimate8593 with reltuples available8594 returns the reltuples for the estimate8595 .for_table8596 returns PgClass for this table8597 matches the relname8598shared/milestones/_top.html.haml8599 does not render a deprecation message for a non-legacy and non-dashboard milestone8600FeatureFlagEntity8601 has feature flag attributes8602OptionallySearch8603 .search8604 raises NotImplementedError8605 .optionally_search8606 when a query is given8607 delegates to the search method8608 when an option is provided8609 delegates to the search method8610 when no query is given8611 returns the current relation8612 when an empty query is given8613 returns the current relation8614Banzai::Filter::TruncateSourceFilter8615 when markdown belongs to a blob8616 does nothing when limit is unspecified8617 truncates normally when limit specified8618 when markdown belongs to a field (non-blob)8619 does nothing when limit is greater8620 truncates to the default when limit is unspecified8621 prepends the user message8622 does nothing to a short-enough text8623 truncates UTF-8 text by bytes, on a character boundary8624GroupLink::ProjectGroupLinkSerializer8625 matches json schema8626be_sorted8627 matches empty collections, regardless of arguments8628 matches in both directions8629 can match on a projection8630Banzai::Pipeline::EmojiPipeline8631 replaces emoji8632 filters out HTML tags8633BlobViewer::Changelog8634 #render_error8635 when there are no tags8636 returns :no_tags8637 when there are tags8638 returns nil8639Gitlab::Checks::ForcePush8640 .force_push?8641 returns false if the repo is empty8642 checks if old rev is an anchestor8643Gitlab::Graphql::NegatableArguments8644 #negated8645 defines :not argument8646 defines any arguments passed as block8647 defines all arguments passed as block even if called multiple times8648 allows to specify custom argument name8649shared/ssh_keys/_key_delete.html.haml8650 when the text parameter is used8651DEPRECATION WARNING: Rendering actions with '.' in the name is deprecated: shared/ssh_keys/_key_delete.html.haml (called from block (3 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/views/shared/ssh_keys/_key_details.html.haml_spec.rb:7)8652DEPRECATION WARNING: Rendering actions with '.' in the name is deprecated: shared/ssh_keys/_key_delete.html.haml (called from block (3 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/views/shared/ssh_keys/_key_details.html.haml_spec.rb:7)8653 has text8654 when the text parameter is not used8655DEPRECATION WARNING: Rendering actions with '.' in the name is deprecated: shared/ssh_keys/_key_delete.html.haml (called from block (3 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/views/shared/ssh_keys/_key_details.html.haml_spec.rb:15)8656DEPRECATION WARNING: Rendering actions with '.' in the name is deprecated: shared/ssh_keys/_key_delete.html.haml (called from block (3 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/views/shared/ssh_keys/_key_details.html.haml_spec.rb:15)8657 does not have text8658Gitlab::Config::Entry::Undefined8659 #leaf?8660 is leaf node8661 #valid?8662 is always valid8663 #errors8664 is does not contain errors8665 #value8666 returns nil8667 #relevant?8668 is not relevant8669 #specified?8670 is not defined8671Analytics::UsageTrends::CountJobTriggerWorker8672 behaves like an idempotent worker8673 is labeled as idempotent8674 performs multiple times sequentially without raising an exception8675 triggers a job for each measurement identifiers8676 triggers CounterJobWorker jobs8677Gitlab::DependencyLinker::Parser::Gemfile8678 #parse8679 returns parsed packages8680 packages respond to name and external_ref accordingly8681Atlassian::JiraConnect::Serializers::BranchEntity8682 sets the hash of the branch name as the id8683notify/change_in_merge_request_draft_status_email.html.haml8684 renders the email correctly8685Gitlab::SQL::Glob8686 .to_like8687 matches * as %8688 matches % literally8689 matches _ literally8690ResourceEvents::SyntheticMilestoneNotesBuilderService8691 #execute8692 builds milestone notes for resource milestone events8693Gitlab::Chat8694 .available?8695 returns true when the chatops feature is available8696 returns false when the chatops feature is not available8697Gitlab::Database::Grant8698 .create_and_execute_trigger8699 returns true when the user can create and execute a trigger8700 returns false when the user can not create and/or execute a trigger8701Integrations::Irker8702 Validations8703 when integration is active8704 is expected to validate that :recipients cannot be empty/falsy8705 when integration is inactive8706 is expected not to validate that :recipients cannot be empty/falsy8707 Execute8708 sends valid JSON messages to an Irker listener8709ComponentsHelper8710 #gitlab_workhorse_version8711 without a Gitlab-Workhorse header8712 shows the version from Gitlab::Workhorse.version8713 with a Gitlab-Workhorse header8714 shows the actual GitLab Workhorse version currently in use8715Gitlab::CrossProjectAccess::ClassMethods8716 #requires_cross_project_access8717 creates a correct check when a hash is passed8718 creates a correct check when an array is passed8719 creates a correct check when an array and a hash is passed8720Gitlab::SidekiqMiddleware::SizeLimiter::Server8721 yields block8722 calls the Compressor8723Types::QueryComplexityType8724 is expected to have graphql fields :limit and :score8725 works when executed8726Cookies serializer initializer8727 uses JSON serializer by default8728 uses the unsafe hybrid serializer when the environment variables is set8729devise/shared/_signin_box8730 Crowd form8731 is shown when Crowd is enabled8732 is not shown when Crowd is disabled8733FeatureFlagsClientSerializer8734 #represent_token8735 includes feature flags client token8736Gitlab::Usage::Metrics::NamesSuggestions::RelationParsers::Joins8737 #accept8738 with join added via string8739 collects join parts8740 with join added via arel node8741 collects join parts8742admin/application_settings/_repository_storage.html.haml8743 additional storage config8744 lists them all8745 fewer storage configs8746 lists only configured storages8747Types::Ci::AnalyticsType8748 exposes the expected fields8749Resolvers::BranchCommitResolver8750 #resolve8751 resolves commit8752 sets project container8753 is N+1 safe8754 when branch does not exist8755 returns nil8756Types::UserCalloutType8757 is expected to eq "UserCallout"8758 has expected fields8759Types::BlobViewerType8760 has the correct fields8761Gitlab::Diff::InlineDiffMarkdownMarker8762 #mark8763 does not escape html etities and marks the range8764CiPlatformMetricsUpdateCronWorker8765 #perform8766 inserts new platform metrics8767Environments::AutoStopCronWorker8768 executes Environments::AutoStopService8769Bitbucket::Collection8770 iterates paginator8771Gitlab::ErrorTracking::Processor::ContextPayloadProcessor8772 .call8773 merges the context payload into event payload8774PerformanceMonitoring::PrometheusMetric8775 .from_json8776 creates a PrometheusMetric object8777 validations8778 json_content is not a hash8779 is expected to raise ActiveModel::ValidationError8780 when unit is missing8781 is expected to raise ActiveModel::ValidationError8782 when query and query_range is missing8783 is expected to raise ActiveModel::ValidationError8784 when query_range is missing but query is available8785 is expected to be valid8786Gitlab::Asciidoc::Html5Converter8787 convert AsciiDoc to HTML58788 appends user-content- prefix on ref (anchor)8789Gitlab::GithubImport::Representation::ExposeAttribute8790 defines a getter method that returns an attribute value8791RuboCop::Cop::GroupPublicOrVisibleToUser8792 flags the use of Group.public_or_visible_to_user with a constant receiver8793 does not flag the use of public_or_visible_to_user with a constant that is not Group8794 does not flag the use of Group.public_or_visible_to_user with a send receiver8795ProtectedTag8796 Associations8797 is expected to belong to project required:8798 Validation8799 is expected to validate that :project cannot be empty/falsy8800 is expected to validate that :name cannot be empty/falsy8801Gitlab::Logging::CloudflareHelper8802 #store_cloudflare_headers!8803 with normal headers8804 adds Cf-Ray-Id and Cf-Request-Id8805 with header values with long strings8806 filters invalid header values8807 with header values with non-alphanumeric characters8808 filters invalid header values8809API::Ci::Helpers::Runner8810 #get_runner_details_from_request8811 when no runner info is present8812 returns the runner IP8813 when runner info is present8814 extracts the runner details8815Gitlab::Ci::Build::Port8816 when port is defined as an integer8817 populates the object8818 when port is defined as hash8819 populates the object8820Gitlab::Database::Consistency8821 .with_read_consistency8822 sticks to primary database8823ForkNamespaceSerializer8824 represents ForkNamespaceEntity entities8825Knapsack report was generated. Preview:8826{8827 "spec/lib/gitlab/relative_positioning/mover_spec.rb": 117.79098949699983,8828 "spec/models/environment_spec.rb": 54.05998500199985,8829 "spec/tasks/gitlab/backup_rake_spec.rb": 75.12611480399937,8830 "spec/services/notes/quick_actions_service_spec.rb": 35.14193879499999,8831 "spec/lib/gitlab/graphql/pagination/keyset/connection_spec.rb": 33.20643281199955,8832 "spec/lib/gitlab/ci/templates/templates_spec.rb": 10.107177885000056,8833 "spec/finders/notes_finder_spec.rb": 23.62432635300047,8834 "spec/models/alert_management/alert_spec.rb": 8.969489129000067,8835 "spec/services/boards/lists/move_service_spec.rb": 23.801664828999492,8836 "spec/lib/gitlab/user_access_spec.rb": 20.618424733999746,8837 "spec/serializers/deployment_entity_spec.rb": 25.284064002999912,8838 "spec/models/ci/ref_spec.rb": 17.90535509700021,8839 "spec/services/issues/create_service_spec.rb": 21.11318925700016,8840 "spec/helpers/emails_helper_spec.rb": 7.530177812000147,8841 "spec/services/ci/update_build_queue_service_spec.rb": 13.842590229999587,8842 "spec/policies/namespace/root_storage_statistics_policy_spec.rb": 11.46706045999963,8843 "spec/helpers/users_helper_spec.rb": 6.80854994099991,8844 "spec/lib/gitlab/data_builder/push_spec.rb": 11.72217569500026,8845 "spec/helpers/avatars_helper_spec.rb": 5.2229323849996945,8846 "spec/models/integrations/microsoft_teams_spec.rb": 10.874014977000115,8847 "spec/lib/gitlab/hashed_storage/migrator_spec.rb": 10.484712065999702,8848 "spec/workers/issue_placement_worker_spec.rb": 12.911422070999834,8849 "spec/lib/gitlab/usage_data_counters/hll_redis_counter_spec.rb": 2.466187111000181,8850 "spec/models/incident_management/issuable_escalation_status_spec.rb": 3.147987745000137,8851 "spec/lib/gitlab/middleware/read_only_spec.rb": 1.5248830630007433,8852 "spec/lib/gitlab/gfm/uploads_rewriter_spec.rb": 6.927450549000241,8853 "spec/lib/banzai/filter/issuable_state_filter_spec.rb": 7.763942939000117,8854 "spec/models/concerns/deprecated_assignee_spec.rb": 9.09412108000015,8855 "spec/presenters/release_presenter_spec.rb": 8.179794368999865,8856 "spec/models/concerns/project_api_compatibility_spec.rb": 7.159782777000146,8857 "spec/models/releases/link_spec.rb": 4.348419638999985,8858 "spec/services/ci/play_build_service_spec.rb": 8.21184776500013,8859 "spec/lib/gitlab/i18n/po_linter_spec.rb": 2.943589184999837,8860 "spec/graphql/mutations/issues/set_assignees_spec.rb": 6.087831370999993,8861 "spec/lib/gitlab/user_access_snippet_spec.rb": 2.8540280739998707,8862 "spec/services/incident_management/incidents/create_service_spec.rb": 4.0136250309997195,8863 "spec/services/wiki_pages/update_service_spec.rb": 7.040707237999413,8864 "spec/models/hooks/system_hook_spec.rb": 4.912388384999758,8865 "spec/lib/gitlab/exclusive_lease_spec.rb": 3.1161839389997112,8866 "spec/services/award_emojis/destroy_service_spec.rb": 5.140172132999396,8867 "spec/models/notification_setting_spec.rb": 4.615382022999256,8868 "spec/models/onboarding_progress_spec.rb": 3.2173719190004704,8869 "spec/lib/gitlab/ci/build/prerequisite/kubernetes_namespace_spec.rb": 6.961217656000372,8870 "spec/lib/banzai/filter/autolink_filter_spec.rb": 1.5002490650003892,8871 "spec/lib/gitlab/ci/pipeline/chain/validate/external_spec.rb": 3.4474463260003176,8872 "spec/lib/gitlab/object_hierarchy_spec.rb": 1.4689489980000872,8873 "spec/services/merge_requests/export_csv_service_spec.rb": 4.157372747999943,8874 "spec/views/groups/show.html.haml_spec.rb": 5.063400950000869,8875 "spec/services/merge_requests/assign_issues_service_spec.rb": 6.902967262999482,8876 "spec/services/boards/lists/list_service_spec.rb": 3.816985761000069,8877 "spec/models/alert_management/http_integration_spec.rb": 3.175200133000544,8878 "spec/models/ci/freeze_period_status_spec.rb": 3.2575041340005555,8879 "spec/graphql/mutations/issues/set_severity_spec.rb": 2.8570073340006275,8880 "spec/lib/gitlab/ci/config/external/processor_spec.rb": 3.7047371310000017,8881 "spec/lib/gitlab/ci/pipeline/expression/lexeme/or_spec.rb": 1.3298941009998089,8882 "spec/workers/remove_expired_group_links_worker_spec.rb": 6.58920695300003,8883 "spec/workers/new_issue_worker_spec.rb": 2.9582603740000195,8884 "spec/finders/projects/groups_finder_spec.rb": 3.6760550640001384,8885 "spec/lib/banzai/filter/math_filter_spec.rb": 1.1267912009998327,8886 "spec/lib/gitlab/graphql/pagination/externally_paginated_array_connection_spec.rb": 1.2472410990003482,8887 "spec/views/notify/pipeline_fixed_email.html.haml_spec.rb": 5.044759962000171,8888 "spec/workers/container_expiration_policy_worker_spec.rb": 3.2362029269997947,8889 "spec/workers/ci/ref_delete_unlock_artifacts_worker_spec.rb": 2.743499764000262,8890 "spec/lib/gitlab/access/branch_protection_spec.rb": 1.007632642000317,8891 "spec/lib/gitlab/alert_management/payload/managed_prometheus_spec.rb": 1.8348978919993897,8892 "spec/graphql/types/query_type_spec.rb": 0.9860258150001755,8893 "spec/lib/gitlab/ci/pipeline_object_hierarchy_spec.rb": 3.277764061999733,8894 "spec/lib/gitlab/instrumentation/redis_interceptor_spec.rb": 2.4378353640004207,8895 "spec/lib/gitlab/sidekiq_logging/structured_logger_spec.rb": 1.4321491610007797,8896 "spec/lib/gitlab/error_tracking/processor/sidekiq_processor_spec.rb": 0.9746697360005783,8897 "spec/lib/banzai/reference_parser/design_parser_spec.rb": 2.484317469000416,8898 "spec/graphql/resolvers/issue_status_counts_resolver_spec.rb": 1.6731560580001315,8899 "spec/services/ci/delete_objects_service_spec.rb": 2.3893937289994938,8900 "spec/services/repositories/destroy_rollback_service_spec.rb": 3.1107939789999364,8901 "spec/graphql/resolvers/design_management/design_resolver_spec.rb": 2.1662144600004467,8902 "spec/lib/gitlab/database/rename_reserved_paths_migration/v1_spec.rb": 3.3825894330002484,8903 "spec/lib/gitlab/ci/pipeline/chain/limit/deployments_spec.rb": 1.8838178269998025,8904 "spec/services/metrics/dashboard/pod_dashboard_service_spec.rb": 2.3285574049996285,8905 "spec/services/authorized_project_update/project_recalculate_per_user_service_spec.rb": 2.0962562870008696,8906 "spec/services/packages/debian/extract_changes_metadata_service_spec.rb": 1.3500351190004949,8907 "spec/services/packages/debian/process_changes_service_spec.rb": 1.6097009049999542,8908 "spec/helpers/notify_helper_spec.rb": 1.6299004720003722,8909 "spec/lib/file_size_validator_spec.rb": 1.971676008999566,8910 "spec/lib/gitlab/analytics/cycle_analytics/stage_events/issue_deployed_to_production_spec.rb": 0.7928366229998574,8911 "spec/lib/gitlab/checks/tag_check_spec.rb": 2.7859929010000997,8912 "spec/lib/gitlab/composer/cache_spec.rb": 2.5544604530005017,8913 "spec/models/incident_management/project_incident_management_setting_spec.rb": 1.2574317190001238,8914 "spec/models/concerns/has_environment_scope_spec.rb": 1.7585633300004702,8915 "spec/lib/gitlab/pagination/keyset/simple_order_builder_spec.rb": 0.780225385000449,8916 "spec/finders/namespaces/projects_finder_spec.rb": 1.808496994000052,8917 "spec/models/concerns/ignorable_columns_spec.rb": 0.8184891499995501,8918 "spec/models/packages/sem_ver_spec.rb": 1.2575625389999914,8919 "spec/models/integrations/slack_slash_commands_spec.rb": 2.217783045000033,8920 "spec/models/projects/ci_feature_usage_spec.rb": 1.0707044459995814,8921 "spec/services/feature_flags/update_service_spec.rb": 2.0779992289999427,8922 "spec/models/ci/runner_project_spec.rb": 2.357311192000452,8923 "spec/services/ci/run_scheduled_build_service_spec.rb": 2.6633587429996624,8924 "spec/lib/gitlab/ci/config/entry/allow_failure_spec.rb": 1.0768561059994681,8925 "spec/workers/authorized_project_update/user_refresh_over_user_range_worker_spec.rb": 0.9234668799999781,8926 "spec/lib/constraints/project_url_constrainer_spec.rb": 2.371883370999967,8927 "spec/models/packages/debian/group_distribution_key_spec.rb": 1.0607590170002368,8928 "spec/workers/design_management/copy_design_collection_worker_spec.rb": 1.5152979630001937,8929 "spec/lib/gitlab/usage/metrics/instrumentations/generic_metric_spec.rb": 1.0441082789993743,8930 "spec/lib/gitlab/gitaly_client/storage_settings_spec.rb": 0.7877158239998607,8931 "spec/models/web_ide_terminal_spec.rb": 3.514182289999553,8932 "spec/lib/gitlab/ci/build/step_spec.rb": 3.2163188690001334,8933 "spec/services/projects/container_repository/gitlab/delete_tags_service_spec.rb": 1.289476585000557,8934 "spec/lib/gitlab/legacy_github_import/milestone_formatter_spec.rb": 1.9878733280002052,8935 "spec/services/users/update_service_spec.rb": 1.7884726470001624,8936 "spec/lib/sidebars/projects/menus/project_information_menu_spec.rb": 1.0600029469997025,8937 "spec/lib/bulk_imports/groups/transformers/group_attributes_transformer_spec.rb": 1.0242359510002643,8938 "spec/workers/rebase_worker_spec.rb": 1.7094564549997813,8939 "spec/models/dependency_proxy/registry_spec.rb": 0.6996712329992079,8940 "spec/services/alert_management/http_integrations/create_service_spec.rb": 1.09351128399976,8941 "spec/graphql/types/untrusted_regexp_spec.rb": 0.8195916610002314,8942 "spec/lib/gitlab/import_export/uploads_saver_spec.rb": 1.9458204120001028,8943 "spec/lib/gitlab/alert_management/payload_spec.rb": 0.8075372220000645,8944 "spec/lib/gitlab/ci/pipeline/expression/lexeme/variable_spec.rb": 0.7025397219995284,8945 "spec/helpers/import_helper_spec.rb": 0.8584232269995482,8946 "spec/helpers/x509_helper_spec.rb": 2.2179650250000122,8947 "spec/services/packages/helm/process_file_service_spec.rb": 2.3679347010001948,8948 "spec/workers/project_cache_worker_spec.rb": 1.6178556929999104,8949 "spec/lib/gitlab/github_import/importer/notes_importer_spec.rb": 0.7669735360004779,8950 "spec/services/ci/create_pipeline_service/environment_spec.rb": 1.8101483250002275,8951 "spec/graphql/mutations/merge_requests/set_subscription_spec.rb": 2.331682424000064,8952 "spec/tasks/gitlab/password_rake_spec.rb": 0.9219514510004956,8953 "spec/workers/jira_connect/sync_deployments_worker_spec.rb": 0.985313524999583,8954 "spec/graphql/resolvers/users/group_count_resolver_spec.rb": 1.405565373999707,8955 "spec/graphql/mutations/ci/runner/update_spec.rb": 1.1528448879998905,8956 "spec/lib/gitlab/phabricator_import/representation/task_spec.rb": 0.600751171000411,8957 "spec/workers/create_note_diff_file_worker_spec.rb": 1.2039456740003516,8958 "spec/lib/gitlab/kubernetes/rollout_instances_spec.rb": 0.6155859099999361,8959 "spec/serializers/diff_file_metadata_entity_spec.rb": 3.1775256230002924,8960 "spec/services/incident_management/pager_duty/process_webhook_service_spec.rb": 1.1663740069998312,8961 "spec/lib/gitlab/http_connection_adapter_spec.rb": 0.7741468750000422,8962 "spec/models/pages/virtual_domain_spec.rb": 0.6946173819997057,8963 "spec/presenters/ci/pipeline_artifacts/code_coverage_presenter_spec.rb": 1.6159795530002157,8964 "spec/services/concerns/merge_requests/assigns_merge_params_spec.rb": 1.014867891999529,8965 "spec/views/projects/imports/new.html.haml_spec.rb": 1.440976440000668,8966 "spec/lib/gitlab/utils/json_size_estimator_spec.rb": 0.9349983299998712,8967 "spec/helpers/projects/error_tracking_helper_spec.rb": 1.285992596000142,8968 "spec/services/boards/create_service_spec.rb": 1.631585522000023,8969 "spec/models/oauth_access_grant_spec.rb": 0.9039443530000426,8970 "spec/workers/update_container_registry_info_worker_spec.rb": 0.751946816999407,8971 "spec/lib/gitlab/checks/push_file_count_check_spec.rb": 1.495810315000199,8972 "spec/graphql/resolvers/group_issues_resolver_spec.rb": 2.097793876999276,8973 "spec/helpers/time_helper_spec.rb": 0.7647867159994348,8974 "spec/lib/gitlab/app_text_logger_spec.rb": 0.642384017999575,8975 "spec/lib/gitlab/ci/templates/managed_cluster_applications_gitlab_ci_yaml_spec.rb": 1.684554737000326,8976 "spec/models/group_import_state_spec.rb": 1.3180641219996687,8977 "spec/services/clusters/aws/fetch_credentials_service_spec.rb": 1.5091709840007752,8978 "spec/finders/uploader_finder_spec.rb": 1.402526523999768,8979 "spec/models/deployment_cluster_spec.rb": 1.8425238620002347,8980 "spec/helpers/ci/triggers_helper_spec.rb": 0.5577633960001549,8981 "spec/lib/gitlab/metrics/subscribers/action_cable_spec.rb": 0.6583499059997848,8982 "spec/tasks/config_lint_spec.rb": 1.2261534520002897,8983 "spec/finders/environments/environments_finder_spec.rb": 1.416549054000825,8984 "spec/lib/gitlab/graphql/query_analyzers/logger_analyzer_spec.rb": 0.6067315320005946,8985 "spec/graphql/types/blob_viewers/type_enum_spec.rb": 0.681925193999632,8986 "spec/views/layouts/_search.html.haml_spec.rb": 1.8907838879995325,8987 "spec/services/lfs/push_service_spec.rb": 1.0818572259995562,8988 "spec/lib/gitlab/sherlock/line_profiler_spec.rb": 0.8941264129998672,8989 "spec/lib/gitlab/grape_logging/loggers/exception_logger_spec.rb": 0.7936672229998294,8990 "spec/views/projects/blob/_viewer.html.haml_spec.rb": 1.1039892990002045,8991 "spec/lib/gitlab/database/similarity_score_spec.rb": 0.7835044369994648,8992 "spec/graphql/mutations/terraform/state/lock_spec.rb": 1.357329428000412,8993 "spec/rubocop/cop/graphql/json_type_spec.rb": 0.8331615339993732,8994 "spec/models/application_setting/term_spec.rb": 1.1195475840004292,8995 "spec/lib/gitlab/dependency_linker/podfile_linker_spec.rb": 0.9640376240004116,8996 "spec/lib/gitlab/bullet_spec.rb": 0.7230501710000681,8997 "spec/lib/gitlab/language_detection_spec.rb": 0.9551473660003467,8998 "spec/lib/gitlab/git/pre_receive_error_spec.rb": 0.7685265480004091,8999 "spec/lib/gitlab/database/connection_timer_spec.rb": 0.9427951260004193,9000 "spec/lib/constraints/admin_constrainer_spec.rb": 0.9500496450000355,9001 "spec/services/note_summary_spec.rb": 0.887296879999667,9002 "spec/graphql/resolvers/project_resolver_spec.rb": 1.1572853810002925,9003 "spec/lib/gitlab/exclusive_lease_helpers/sleeping_lock_spec.rb": 0.9401210169999104,9004 "spec/graphql/resolvers/project_jobs_resolver_spec.rb": 1.510532587999478,9005 "spec/lib/quality/seeders/issues_spec.rb": 0.9714329850003196,9006 "spec/lib/gitlab/ci/pipeline/duration_spec.rb": 0.6873651229998359,9007 "spec/lib/gitlab/email/hook/smime_signature_interceptor_spec.rb": 2.688646749000327,9008 "spec/workers/build_queue_worker_spec.rb": 1.0379724390004412,9009 "spec/uploaders/favicon_uploader_spec.rb": 0.9356302070000311,9010 "spec/workers/jira_connect/sync_feature_flags_worker_spec.rb": 1.0572835279999708,9011 "spec/lib/gitlab/cluster/lifecycle_events_spec.rb": 0.7649867180007277,9012 "spec/graphql/resolvers/release_resolver_spec.rb": 1.4218777539999792,9013 "spec/services/packages/debian/create_package_file_service_spec.rb": 1.169627940999817,9014 "spec/serializers/merge_request_sidebar_basic_entity_spec.rb": 1.2606465850003588,9015 "spec/rubocop/cop/migration/complex_indexes_require_name_spec.rb": 0.6726515850004944,9016 "spec/lib/gitlab/octokit/middleware_spec.rb": 0.9854514930002551,9017 "spec/lib/gitlab/auth/saml/auth_hash_spec.rb": 0.7713584479997735,9018 "spec/lib/gitlab/database/pg_class_spec.rb": 0.7303566509999655,9019 "spec/views/shared/milestones/_top.html.haml_spec.rb": 1.0437158089998775,9020 "spec/serializers/feature_flag_entity_spec.rb": 1.039593089999471,9021 "spec/models/concerns/optionally_search_spec.rb": 0.6782549950003158,9022 "spec/lib/banzai/filter/truncate_source_filter_spec.rb": 0.6967465719999382,9023 "spec/serializers/group_link/project_group_link_serializer_spec.rb": 1.0167209619994537,9024 "spec/support_specs/matchers/be_sorted_spec.rb": 0.5802080600005866,9025 "spec/lib/banzai/pipeline/emoji_pipeline_spec.rb": 0.5679374219998863,9026 "spec/models/blob_viewer/changelog_spec.rb": 1.2226190969995514,9027 "spec/lib/gitlab/checks/force_push_spec.rb": 0.9082773689997339,9028 "spec/lib/gitlab/graphql/negatable_arguments_spec.rb": 0.679978864000077,9029 "spec/views/shared/ssh_keys/_key_details.html.haml_spec.rb": 0.6240518180002255,9030 "spec/lib/gitlab/config/entry/undefined_spec.rb": 0.7908302060004644,9031 "spec/workers/analytics/usage_trends/count_job_trigger_worker_spec.rb": 0.9760064239999338,9032 "spec/lib/gitlab/dependency_linker/parser/gemfile_spec.rb": 0.6391114469997774,9033 "spec/lib/atlassian/jira_connect/serializers/branch_entity_spec.rb": 0.8199325539999336,9034 "spec/views/notify/change_in_merge_request_draft_status_email.html.haml_spec.rb": 1.3395672400001786,9035 "spec/lib/gitlab/sql/glob_spec.rb": 0.6338640469994061,9036 "spec/services/resource_events/synthetic_milestone_notes_builder_service_spec.rb": 0.9593092349996368,9037 "spec/lib/gitlab/chat_spec.rb": 0.62394834800034,9038 "spec/lib/gitlab/database/grant_spec.rb": 0.5316430539996873,9039 "spec/models/integrations/irker_spec.rb": 1.1263332540002011,9040 "spec/helpers/components_helper_spec.rb": 0.6254731180006274,9041 "spec/lib/gitlab/cross_project_access/class_methods_spec.rb": 0.6154318879998755,9042 "spec/lib/gitlab/sidekiq_middleware/size_limiter/server_spec.rb": 0.7085520520004138,9043 "spec/graphql/types/query_complexity_type_spec.rb": 0.7154622919997564,9044 "spec/initializers/cookies_serializer_spec.rb": 0.7433440090007934,9045 "spec/views/devise/shared/_signin_box.html.haml_spec.rb": 0.7830989270005375,9046 "spec/serializers/feature_flags_client_serializer_spec.rb": 0.9897294829997918,9047 "spec/lib/gitlab/usage/metrics/names_suggestions/relation_parsers/joins_spec.rb": 0.6348815270002888,9048 "spec/views/admin/application_settings/_repository_storage.html.haml_spec.rb": 0.8040866860001188,9049 "spec/graphql/types/ci/analytics_type_spec.rb": 0.5486658429999807,9050 "spec/graphql/resolvers/branch_commit_resolver_spec.rb": 0.9849880530000519,9051 "spec/graphql/types/user_callout_type_spec.rb": 0.7074034229999597,9052 "spec/graphql/types/blob_viewer_type_spec.rb": 0.6032116799997311,9053 "spec/lib/gitlab/diff/inline_diff_markdown_marker_spec.rb": 0.5234749940000256,9054 "spec/workers/ci_platform_metrics_update_cron_worker_spec.rb": 0.8206442840000818,9055 "spec/workers/environments/auto_stop_cron_worker_spec.rb": 0.6212241690000155,9056 "spec/lib/bitbucket/collection_spec.rb": 0.6535918859999583,9057 "spec/lib/gitlab/error_tracking/processor/context_payload_processor_spec.rb": 0.5245357949997924,9058 "spec/models/performance_monitoring/prometheus_metric_spec.rb": 0.5879378499994345,9059 "spec/lib/gitlab/asciidoc/html5_converter_spec.rb": 0.5090907160001734,9060 "spec/lib/gitlab/github_import/representation/expose_attribute_spec.rb": 0.6637175050000224,9061 "spec/rubocop/cop/group_public_or_visible_to_user_spec.rb": 0.7106806820002021,9062 "spec/models/protected_tag_spec.rb": 0.810338784999658,9063 "spec/lib/gitlab/logging/cloudflare_helper_spec.rb": 0.6542892759998722,9064 "spec/lib/api/ci/helpers/runner_helpers_spec.rb": 0.7886479359995064,9065 "spec/lib/gitlab/ci/build/port_spec.rb": 0.5799850109997351,9066 "spec/lib/gitlab/database/consistency_spec.rb": 0.619595537999885,9067 "spec/serializers/fork_namespace_serializer_spec.rb": 0.68970325299960689068}9069Knapsack global time execution for tests: 15m 52s9070Finished in 15 minutes 55 seconds (files took 53.63 seconds to load)90714226 examples, 0 failures9072Wed 18 Aug 2021 10:45:55 AM UTC9074Not uploading cache ruby-gems-v1-4 due to policy9075Not uploading cache gitaly-ruby-gems-v1-4 due to policy9077Uploading artifacts...9078coverage/: found 5 matching files and directories 9079WARNING: crystalball/: no matching files 9080deprecations/: found 13 matching files and directories 9081knapsack/: found 3 matching files and directories 9082rspec_flaky/: found 4 matching files and directories 9083rspec_profiling/: found 1 matching files and directories 9084WARNING: tmp/capybara/: no matching files 9085tmp/memory_test/: found 2 matching files and directories 9086log/*.log: found 17 matching files and directories 9087Uploading artifacts as "archive" to coordinator... ok id=1512821919 responseStatus=201 Created token=bvuKuy1f9088Uploading artifacts...9089junit_rspec.xml: found 1 matching files and directories 9090Uploading artifacts as "junit" to coordinator... ok id=1512821919 responseStatus=201 Created token=bvuKuy1f9092Job succeeded