rspec unit pg12 2/22
Passed Started
by
@splattael
Peter Leitzen
1Running with gitlab-runner 15.1.0~beta.20.g62206bb2 (62206bb2)2 on blue-2.shared-gitlab-org.runners-manager.gitlab.com/default NL4gfoBe3 feature flags: FF_USE_FASTZIP:true6Using Docker executor with image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.17-node-16.14-postgresql-12:rubygems-3.2-git-2.36-lfs-2.9-chrome-101-yarn-1.22-graphicsmagick-1.3.36 ...7Starting service postgres:12 ...8Pulling docker image postgres:12 ...9Using docker image sha256:ac3b8cd6a8b42e839456256bc514d6230b5a2538c738b3d522e1384a2a172b96 for postgres:12 with digest postgres@sha256:e6ffad42c91a4d5a29257a27ac4e160c3ae7196696b37bf2e80410024ed95951 ...10Starting service redis:6.0-alpine ...11Pulling docker image redis:6.0-alpine ...12Using docker image sha256:09401fed2a421bf0019f96dcec70c85f82ec7b76beb1ae589547b0dc302d6b76 for redis:6.0-alpine with digest redis@sha256:217a9db40a914cc3f6206a143a4d750da0607500cc013a147a4979e08e40beff ...13Waiting for services to be up and running (timeout 30 seconds)...14Authenticating with credentials from job payload (GitLab Registry)15Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.17-node-16.14-postgresql-12:rubygems-3.2-git-2.36-lfs-2.9-chrome-101-yarn-1.22-graphicsmagick-1.3.36 ...16Using docker image sha256:1c23a0bd0711f9f7944305c4b25ce8e4301c16167671a7873aad77579270806d for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.17-node-16.14-postgresql-12:rubygems-3.2-git-2.36-lfs-2.9-chrome-101-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.17-node-16.14-postgresql-12@sha256:d0052322332df372b949caf19e910c0ce6859c1e7ed29ff609ebec91b1dead87 ...18Running on runner-nl4gfobe-project-278964-concurrent-0 via runner-nl4gfobe-shared-gitlab-org-1656525659-ec5b0a6e...20$ eval "$CI_PRE_CLONE_SCRIPT"21Fetching changes with git depth set to 20...22Initialized empty Git repository in /builds/gitlab-org/gitlab/.git/23Created fresh repository.24remote: Enumerating objects: 108133, done. 25remote: Counting objects: 100% (108133/108133), done. 26remote: Compressing objects: 100% (78029/78029), done. 27remote: Total 108133 (delta 41971), reused 69318 (delta 25782), pack-reused 0 28Receiving objects: 100% (108133/108133), 107.22 MiB | 33.18 MiB/s, done.29Resolving deltas: 100% (41971/41971), done.31 * [new ref] refs/pipelines/576349587 -> refs/pipelines/57634958732Checking out ab4209a5 as refs/merge-requests/91088/merge...33Skipping Git submodules setup34$ git remote set-url origin "${CI_REPOSITORY_URL}"36Checking cache for ruby-gems-debian-bullseye-ruby-2.7-10...37cache.zip is up to date 38Successfully extracted cache39Checking cache for gitaly-ruby-gems-debian-bullseye-ruby-2.7-10...40cache.zip is up to date 41Successfully extracted cache43Downloading artifacts for compile-test-assets (2658553241)...44Downloading artifacts from coordinator... ok id=2658553241 responseStatus=200 OK token=5TmCaU1G45Downloading artifacts for detect-tests (2658553263)...46Downloading artifacts from coordinator... ok id=2658553263 responseStatus=200 OK token=5TmCaU1G47Downloading artifacts for retrieve-tests-metadata (2658553268)...48Downloading artifacts from coordinator... ok id=2658553268 responseStatus=200 OK token=5TmCaU1G49Downloading artifacts for setup-test-env (2658553255)...50Downloading artifacts from coordinator... ok id=2658553255 responseStatus=200 OK token=5TmCaU1G52Using docker image sha256:1c23a0bd0711f9f7944305c4b25ce8e4301c16167671a7873aad77579270806d for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.17-node-16.14-postgresql-12:rubygems-3.2-git-2.36-lfs-2.9-chrome-101-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.17-node-16.14-postgresql-12@sha256:d0052322332df372b949caf19e910c0ce6859c1e7ed29ff609ebec91b1dead87 ...53$ echo $FOSS_ONLY54$ [ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb55$ export GOPATH=$CI_PROJECT_DIR/.go56$ mkdir -p $GOPATH57$ source scripts/utils.sh58$ source scripts/prepare_build.sh593.2.3360Bundler version 2.2.3361Successfully installed bundler-2.3.15621 gem installed63production:development64Settings are listed in order of priority. The top value will be used.65clean66Set for your local app (/builds/gitlab-org/gitlab/.bundle/config): true67frozen68Set via BUNDLE_FROZEN: true69install_flags70Set via BUNDLE_INSTALL_FLAGS: "--jobs=$(nproc) --retry=3 --quiet"71path72Set for your local app (/builds/gitlab-org/gitlab/.bundle/config): "/builds/gitlab-org/gitlab/vendor"73without74Set via BUNDLE_WITHOUT: [:production, :development]75$ bundle install --jobs=$(nproc) --retry=3 --quiet && bundle check76Don't run Bundler as root. Bundler can ask for sudo if it is needed, and77installing your bundle as root will break this application for all non-root78users on this machine.79The Gemfile's dependencies are satisfied80==> 'bundle install --jobs=$(nproc) --retry=3 --quiet && bundle check' succeeded in 2 seconds.81$ bundle pristine pg82Installing pg 1.3.5 with native extensions83==> 'bundle pristine pg' succeeded in 11 seconds.84Using decomposed database config (config/database.yml.decomposed-postgresql)85$ setup_db_user_only86CREATE ROLE87GRANT88==> 'setup_db_user_only' succeeded in 0 seconds.89$ bundle exec rake db:drop db:create db:schema:load db:migrate90Dropped database 'gitlabhq_test'91Dropped database 'gitlabhq_test_ci'92Dropped database 'gitlabhq_geo_test'93Created database 'gitlabhq_test'94Created database 'gitlabhq_test_ci'95Created database 'gitlabhq_geo_test'96==> 'bundle exec rake db:drop db:create db:schema:load db:migrate' succeeded in 41 seconds.97$ setup_db_praefect98SELECT pg_catalog.set_config('search_path', '', false);99CREATE DATABASE praefect_test ENCODING 'UTF8';100==> 'setup_db_praefect' succeeded in 0 seconds.101$ run_timed_command "gem install knapsack --no-document"102$ gem install knapsack --no-document103Successfully installed knapsack-4.0.01041 gem installed105==> 'gem install knapsack --no-document' succeeded in 0 seconds.106$ run_timed_command "scripts/gitaly-test-spawn"107$ scripts/gitaly-test-spawn108find: ‘/builds/gitlab-org/gitlab/tmp/tests/gitaly/cmd’: No such file or directory109Don't run Bundler as root. Bundler can ask for sudo if it is needed, and110installing your bundle as root will break this application for all non-root111users on this machine.112Using abstract_type 0.0.7113Using concurrent-ruby 1.1.10114Using i18n 1.10.0115Using minitest 5.15.0116Using tzinfo 2.0.4117Using zeitwerk 2.5.4118Using activesupport 6.1.4.7119Using builder 3.2.4120Using erubi 1.10.0121Using mini_portile2 2.8.0122Using racc 1.6.0123Using nokogiri 1.13.6 (x86_64-linux)124Using rails-dom-testing 2.0.3125Using crass 1.0.6126Using loofah 2.16.0127Using rails-html-sanitizer 1.4.2128Using actionview 6.1.4.7129Using rack 2.2.3130Using rack-test 1.1.0131Using actionpack 6.1.4.7132Using ice_nine 0.11.2133Using thread_safe 0.3.6134Using memoizable 0.4.2135Using adamantium 0.2.0136Using public_suffix 4.0.6137Using addressable 2.7.0138Using ast 2.4.2139Using binding_ninja 0.2.3140Using bundler 2.3.15141Using charlock_holmes 0.7.7142Using coderay 1.1.2143Using equalizer 0.0.11144Using concord 0.1.5145Using diff-lcs 1.3146Using dotenv 2.7.6147Using escape_utils 1.2.1148Using factory_bot 5.0.2149Using multipart-post 2.1.1150Using faraday 1.0.1151Using ffi 1.15.3152Using json 2.5.1153Using gemojione 3.3.0154Using mini_mime 1.0.2155Using rugged 1.2.0156Using github-linguist 7.12.1157Using github-markup 1.7.0158Using mime-types-data 3.2020.1104159Using mime-types 3.3.1160Using gitlab-gollum-rugged_adapter 0.4.4.4.gitlab.1161Using rouge 3.27.0162Using sanitize 6.0.0163Using stringex 2.8.5164Using gitlab-gollum-lib 4.2.7.10.gitlab.2165Using google-protobuf 3.19.1 (x86_64-linux)166Using googleapis-common-protos-types 1.3.0167Using grpc 1.42.0 (x86_64-linux)168Using opentracing 0.5.0169Using thrift 0.15.0170Using jaeger-client 1.1.0171Using pg_query 2.1.1172Using redis 4.4.0173Using gitlab-labkit 0.21.2174Using rubyzip 2.3.2175Using thor 1.1.0176Using tomlrb 2.0.1177Using with_env 1.1.0178Using rexml 3.2.5179Using xml-simple 1.1.9180Using gitlab-license_finder 6.14.2.1181Using gitlab-markup 1.7.1182Using grpc-tools 1.42.0183Using sawyer 0.8.2184Using octokit 4.20.0185Using reverse_markdown 1.4.0186Using licensee 9.14.1187Using method_source 0.9.2188Using msgpack 1.3.3189Using optimist 3.0.1190Using parallel 1.19.2191Using parser 3.0.3.2192Using procto 0.0.3193Using unparser 0.4.7194Using proc_to_ast 0.1.0195Using pry 0.12.2196Using rainbow 3.0.0197Using rbtrace 0.4.14198Using rdoc 6.3.2199Using regexp_parser 1.8.1200Using rspec-support 3.8.0201Using rspec-core 3.8.0202Using rspec-expectations 3.8.3203Using rspec-mocks 3.8.0204Using rspec 3.8.0205Using rspec-parameterized 0.4.2206Using rubocop-ast 0.2.0207Using ruby-progressbar 1.10.1208Using unicode-display_width 1.7.0209Using rubocop 0.86.0210Using sentry-raven 3.0.4211Using timecop 0.9.1212Bundle complete! 22 Gemfile dependencies, 100 gems now installed.213Gems in the groups 'production' and 'development' were not installed.214Bundled gems are installed into `/builds/gitlab-org/gitlab/vendor/gitaly-ruby`215Checking gitaly-ruby Gemfile...216Checking gitaly-ruby bundle...217The Gemfile's dependencies are satisfied218Trying to connect to gitaly: ............................................ OK219Trying to connect to gitaly2: ........................................................ OK220Starting Praefect with in-memory election strategyTrying to connect to praefect: ........ OK221==> 'scripts/gitaly-test-spawn' succeeded in 13 seconds.222$ source ./scripts/rspec_helpers.sh223$ rspec_paralellized_job "--tag ~quarantine --tag ~level:migration"224SKIP_FLAKY_TESTS_AUTOMATICALLY: true225RETRY_FAILED_TESTS_IN_NEW_PROCESS: true226KNAPSACK_GENERATE_REPORT: true227FLAKY_RSPEC_GENERATE_REPORT: true228KNAPSACK_TEST_FILE_PATTERN: spec/{bin,channels,config,db,dependencies,elastic,elastic_integration,experiments,events,factories,finders,frontend,graphql,haml_lint,helpers,initializers,lib,metrics_server,models,policies,presenters,rack_servers,replicators,routing,rubocop,scripts,serializers,services,sidekiq,sidekiq_cluster,spam,support_specs,tasks,uploaders,validators,views,workers,tooling,components}{,/**/}*_spec.rb229KNAPSACK_LOG_LEVEL: debug230KNAPSACK_REPORT_PATH: knapsack/rspec_unit_pg12_2_22_report.json231FLAKY_RSPEC_SUITE_REPORT_PATH: rspec/flaky/report-suite.json232FLAKY_RSPEC_REPORT_PATH: rspec/flaky/all_rspec_unit_pg12_2_22_report.json233NEW_FLAKY_RSPEC_REPORT_PATH: rspec/flaky/new_rspec_unit_pg12_2_22_report.json234SKIPPED_FLAKY_TESTS_REPORT_PATH: rspec/flaky/skipped_flaky_tests_rspec_unit_pg12_2_22_report.txt235RETRIED_TESTS_REPORT_PATH: rspec/flaky/retried_tests_rspec_unit_pg12_2_22_report.txt236CRYSTALBALL: 237Knapsack node specs:238spec/services/notification_service_spec.rb239spec/services/ci/create_downstream_pipeline_service_spec.rb240spec/models/integrations/jira_spec.rb241spec/serializers/pipeline_serializer_spec.rb242spec/lib/gitlab/background_migration/migrate_u2f_webauthn_spec.rb243spec/services/ci/job_artifacts/destroy_all_expired_service_spec.rb244spec/lib/gitlab/diff/position_tracer/line_strategy_spec.rb245spec/lib/gitlab/ci/parsers/security/common_spec.rb246spec/lib/gitlab/background_migration/update_timelogs_project_id_spec.rb247spec/services/releases/create_service_spec.rb248spec/finders/ci/pipelines_finder_spec.rb249spec/finders/personal_access_tokens_finder_spec.rb250spec/lib/banzai/reference_parser/snippet_parser_spec.rb251spec/uploaders/packages/package_file_uploader_spec.rb252spec/services/deployments/update_environment_service_spec.rb253spec/lib/gitlab/utils_spec.rb254spec/graphql/mutations/merge_requests/update_spec.rb255spec/policies/namespace/root_storage_statistics_policy_spec.rb256spec/workers/database/batched_background_migration_worker_spec.rb257spec/services/environments/stop_service_spec.rb258spec/services/alert_management/create_alert_issue_service_spec.rb259spec/models/integrations/every_integration_spec.rb260spec/services/projects/autocomplete_service_spec.rb261spec/lib/gitlab/database/partitioning_migration_helpers/table_management_helpers_spec.rb262spec/lib/gitlab/ci/ansi2json/style_spec.rb263spec/graphql/resolvers/todos_resolver_spec.rb264spec/lib/gitlab/import_export/project/import_task_spec.rb265spec/serializers/issue_entity_spec.rb266spec/models/internal_id_spec.rb267spec/lib/gitlab/gpg/invalid_gpg_signature_updater_spec.rb268spec/models/concerns/deprecated_assignee_spec.rb269spec/models/dev_ops_report/metric_spec.rb270spec/finders/metrics/dashboards/annotations_finder_spec.rb271spec/models/incident_management/issuable_escalation_status_spec.rb272spec/lib/api/helpers/caching_spec.rb273spec/lib/gitlab/quick_actions/extractor_spec.rb274spec/models/namespace/package_setting_spec.rb275spec/services/deployments/link_merge_requests_service_spec.rb276spec/lib/gitlab/background_migration/batched_migration_job_spec.rb277spec/lib/banzai/filter/references/feature_flag_reference_filter_spec.rb278spec/models/onboarding_progress_spec.rb279spec/lib/gitlab/redis/shared_state_spec.rb280spec/lib/gitlab/metrics_spec.rb281spec/models/concerns/prometheus_adapter_spec.rb282spec/rubocop/code_reuse_helpers_spec.rb283spec/services/metrics/dashboard/dynamic_embed_service_spec.rb284spec/lib/bulk_imports/common/pipelines/uploads_pipeline_spec.rb285spec/models/ci/build_report_result_spec.rb286spec/lib/gitlab/ci/trace/chunked_io_spec.rb287spec/workers/new_merge_request_worker_spec.rb288spec/lib/gitlab/ci/config/external/file/artifact_spec.rb289spec/services/discussions/resolve_service_spec.rb290spec/services/quick_actions/target_service_spec.rb291spec/graphql/resolvers/design_management/versions_resolver_spec.rb292spec/support_specs/helpers/graphql_helpers_spec.rb293spec/services/snippets/bulk_destroy_service_spec.rb294spec/models/issue/metrics_spec.rb295spec/models/merge_request_assignee_spec.rb296spec/services/spam/spam_verdict_service_spec.rb297spec/models/clusters/integrations/elastic_stack_spec.rb298spec/models/ci/build_metadata_spec.rb299spec/lib/api/helpers/packages/dependency_proxy_helpers_spec.rb300spec/lib/gitlab/database/migration_helpers/v2_spec.rb301spec/lib/error_tracking/sentry_client/projects_spec.rb302spec/services/environments/auto_stop_service_spec.rb303spec/views/projects/artifacts/_artifact.html.haml_spec.rb304spec/lib/gitlab/ci/pipeline/chain/populate_spec.rb305spec/serializers/issue_sidebar_basic_entity_spec.rb306spec/workers/ci/archive_traces_cron_worker_spec.rb307spec/finders/crm/organizations_finder_spec.rb308spec/lib/gitlab/database/query_analyzers/restrict_allowed_schemas_spec.rb309spec/finders/resource_state_event_finder_spec.rb310spec/presenters/packages/detail/package_presenter_spec.rb311spec/tasks/gitlab/git_rake_spec.rb312spec/lib/gitlab/diff/suggestion_spec.rb313spec/helpers/notifications_helper_spec.rb314spec/graphql/resolvers/project_milestones_resolver_spec.rb315spec/lib/gitlab/suggestions/commit_message_spec.rb316spec/serializers/discussion_diff_file_entity_spec.rb317spec/services/merge_requests/remove_approval_service_spec.rb318spec/lib/gitlab/repository_cache_spec.rb319spec/models/pool_repository_spec.rb320spec/serializers/discussion_entity_spec.rb321spec/lib/gitlab/ci/reports/reports_comparer_spec.rb322spec/models/integrations/chat_message/alert_message_spec.rb323spec/lib/banzai/reference_parser/feature_flag_parser_spec.rb324spec/config/mail_room_spec.rb325spec/lib/gitlab/graphql/deprecation_spec.rb326spec/lib/gitlab/ci/badge/coverage/template_spec.rb327spec/lib/banzai/object_renderer_spec.rb328spec/helpers/ci/builds_helper_spec.rb329spec/services/projects/create_from_template_service_spec.rb330spec/models/merge_request_reviewer_spec.rb331spec/finders/boards/visits_finder_spec.rb332spec/lib/gitlab/ci/jwt_spec.rb333spec/graphql/resolvers/alert_management/http_integrations_resolver_spec.rb334spec/tooling/rspec_flaky/flaky_example_spec.rb335spec/models/label_link_spec.rb336spec/lib/gitlab/background_migration/base_job_spec.rb337spec/lib/gitlab/ci/pipeline/logger_spec.rb338spec/lib/bulk_imports/ndjson_pipeline_spec.rb339spec/lib/gitlab/analytics/cycle_analytics/base_query_builder_spec.rb340spec/services/packages/debian/process_changes_service_spec.rb341spec/models/integrations/zentao_spec.rb342spec/lib/gitlab/usage/metrics/instrumentations/count_imported_projects_total_metric_spec.rb343spec/lib/gitlab/background_migration/backfill_note_discussion_id_spec.rb344spec/lib/gitlab/checks/diff_check_spec.rb345spec/finders/bulk_imports/entities_finder_spec.rb346spec/services/incident_management/pager_duty/create_incident_issue_service_spec.rb347spec/workers/projects/process_sync_events_worker_spec.rb348spec/lib/banzai/filter/markdown_filter_spec.rb349spec/lib/gitlab/error_tracking/processor/grpc_error_processor_spec.rb350spec/lib/gitlab/database/partitioning/sliding_list_strategy_spec.rb351spec/validators/color_validator_spec.rb352spec/services/ci/ensure_stage_service_spec.rb353spec/graphql/mutations/custom_emoji/destroy_spec.rb354spec/services/repositories/destroy_service_spec.rb355spec/lib/gitlab/import_export/uploads_restorer_spec.rb356spec/services/merge_requests/add_spent_time_service_spec.rb357spec/services/packages/maven/create_package_service_spec.rb358spec/models/packages/npm/metadatum_spec.rb359spec/lib/gitlab/graphql/loaders/issuable_loader_spec.rb360spec/services/concerns/exclusive_lease_guard_spec.rb361spec/views/projects/commit/show.html.haml_spec.rb362spec/services/clusters/aws/finalize_creation_service_spec.rb363spec/services/projects/record_target_platforms_service_spec.rb364spec/services/boards/issues/create_service_spec.rb365spec/lib/gitlab/import_export/json/legacy_reader/file_spec.rb366spec/workers/personal_access_tokens/expiring_worker_spec.rb367spec/rubocop/cop/rspec/expect_gitlab_tracking_spec.rb368spec/services/packages/create_temporary_package_service_spec.rb369spec/views/profiles/preferences/show.html.haml_spec.rb370spec/lib/gitlab/auth/atlassian/identity_linker_spec.rb371spec/lib/gitlab/database/count/exact_count_strategy_spec.rb372spec/services/grafana/proxy_service_spec.rb373spec/workers/jira_connect/sync_deployments_worker_spec.rb374spec/services/ci/job_token_scope/remove_project_service_spec.rb375spec/helpers/listbox_helper_spec.rb376spec/lib/gitlab/ci/config/entry/rules/rule/changes_spec.rb377spec/services/ci/runners/reset_registration_token_service_spec.rb378spec/lib/gitlab/github_import/importer/label_links_importer_spec.rb379spec/lib/gitlab/git/base_error_spec.rb380spec/services/projects/group_links/update_service_spec.rb381spec/lib/gitlab/database/type/json_pg_safe_spec.rb382spec/services/ci/create_pipeline_service/artifacts_spec.rb383spec/workers/error_tracking_issue_link_worker_spec.rb384spec/lib/gitlab/ci/status/build/manual_spec.rb385spec/tooling/lib/tooling/helm3_client_spec.rb386spec/graphql/types/metrics/dashboard_type_spec.rb387spec/models/x509_issuer_spec.rb388spec/graphql/resolvers/work_item_resolver_spec.rb389spec/models/user_mentions/snippet_user_mention_spec.rb390spec/models/group_deploy_token_spec.rb391spec/lib/gitlab/ci/mask_secret_spec.rb392spec/components/pajamas/checkbox_component_spec.rb393spec/workers/gitlab_service_ping_worker_spec.rb394spec/finders/merge_request/metrics_finder_spec.rb395spec/lib/service_ping/service_ping_settings_spec.rb396spec/models/concerns/from_union_spec.rb397spec/models/integrations/irker_spec.rb398spec/rubocop/cop/api/base_spec.rb399spec/models/packages/go/module_spec.rb400spec/graphql/types/terraform/state_type_spec.rb401spec/presenters/packages/pypi/simple_package_versions_presenter_spec.rb402spec/lib/gitlab/app_json_logger_spec.rb403spec/workers/concerns/cluster_agent_queue_spec.rb404spec/models/legacy_diff_note_spec.rb405spec/services/ci/create_pipeline_service/custom_config_content_spec.rb406spec/models/integrations/campfire_spec.rb407spec/lib/atlassian/jira_connect_spec.rb408spec/lib/gitlab/ci/config/entry/workflow_spec.rb409spec/rubocop/cop/migration/background_migrations_spec.rb410spec/lib/gitlab/hook_data/group_builder_spec.rb411spec/lib/generators/gitlab/snowplow_event_definition_generator_spec.rb412spec/lib/gitlab/gitaly_client/storage_settings_spec.rb413spec/graphql/types/ci/template_type_spec.rb414spec/services/ci/pipeline_bridge_status_service_spec.rb415spec/graphql/resolvers/snippets/blobs_resolver_spec.rb416spec/services/ci/append_build_trace_service_spec.rb417spec/services/projects/forks_count_service_spec.rb418spec/lib/gitlab/setup_helper/praefect_spec.rb419spec/lib/gitlab/null_request_store_spec.rb420spec/lib/gitlab/kubernetes/service_account_token_spec.rb421spec/lib/gitlab/service_desk_email_spec.rb422spec/workers/ci/build_finished_worker_spec.rb423spec/lib/gitlab/ci/runner_releases_spec.rb424spec/lib/gitlab/phabricator_import/representation/task_spec.rb425spec/lib/gitlab/exclusive_lease_helpers/sleeping_lock_spec.rb426spec/rubocop/cop/code_reuse/serializer_spec.rb427spec/lib/gitlab/string_regex_marker_spec.rb428spec/lib/bulk_imports/users_mapper_spec.rb429spec/finders/repositories/branch_names_finder_spec.rb430spec/serializers/test_case_entity_spec.rb431spec/lib/system_check/orphans/namespace_check_spec.rb432spec/services/ci/runners/unassign_runner_service_spec.rb433spec/rubocop/cop/gitlab/module_with_instance_variables_spec.rb434spec/serializers/ci/lint/job_entity_spec.rb435spec/validators/cron_freeze_period_timezone_validator_spec.rb436spec/lib/gitlab/graphql/loaders/batch_project_statistics_loader_spec.rb437spec/models/description_version_spec.rb438spec/graphql/mutations/work_items/update_task_spec.rb439spec/lib/bitbucket/representation/comment_spec.rb440spec/services/user_project_access_changed_service_spec.rb441spec/lib/gitlab/config/entry/validators/nested_array_helpers_spec.rb442spec/lib/gitlab/graphql/known_operations_spec.rb443spec/lib/sidebars/groups/menus/ci_cd_menu_spec.rb444spec/services/packages/debian/find_or_create_incoming_service_spec.rb445spec/models/bulk_imports/configuration_spec.rb446spec/finders/admin/plans_finder_spec.rb447spec/presenters/award_emoji_presenter_spec.rb448spec/models/repository_language_spec.rb449spec/lib/gitlab/sidekiq_signals_spec.rb450spec/graphql/types/range_input_type_spec.rb451spec/models/alerting/project_alerting_setting_spec.rb452spec/lib/prometheus/pid_provider_spec.rb453spec/services/work_items/build_service_spec.rb454spec/workers/propagate_integration_worker_spec.rb455spec/lib/gitlab/sql/glob_spec.rb456spec/serializers/feature_flag_summary_serializer_spec.rb457spec/helpers/tracking_helper_spec.rb458spec/lib/gitlab/github_import/bulk_importing_spec.rb459spec/lib/gitlab/ci/status/manual_spec.rb460spec/lib/gitlab/database/migration_helpers/announce_database_spec.rb461spec/services/ci/copy_cross_database_associations_service_spec.rb462spec/tooling/lib/tooling/test_map_generator_spec.rb463spec/lib/gitlab/database/postgresql_adapter/empty_query_ping_spec.rb464spec/rubocop/cop/database/establish_connection_spec.rb465spec/presenters/blobs/notebook_presenter_spec.rb466spec/graphql/types/jira_import_type_spec.rb467spec/lib/gitlab/middleware/request_context_spec.rb468spec/lib/gitlab/grape_logging/loggers/queue_duration_logger_spec.rb469spec/rubocop/cop/project_path_helper_spec.rb470spec/helpers/namespace_storage_limit_alert_helper_spec.rb471spec/helpers/cookies_helper_spec.rb472spec/lib/api/entities/bulk_imports/entity_failure_spec.rb473spec/models/group/crm_settings_spec.rb474spec/rubocop/cop/qa/selector_usage_spec.rb475spec/graphql/types/release_source_type_spec.rb476spec/graphql/types/ci/test_suite_type_spec.rb477spec/graphql/types/ci/runner_platform_type_spec.rb478spec/graphql/types/tree/blob_type_spec.rb479spec/views/layouts/_published_experiments.html.haml_spec.rb480spec/graphql/types/commit_encoding_enum_spec.rb481spec/workers/database/partition_management_worker_spec.rb482spec/lib/gitlab/ci/status/extended_spec.rb483spec/lib/api/validations/validators/untrusted_regexp_spec.rb484spec/graphql/resolvers/metadata_resolver_spec.rb485spec/lib/gitlab/asciidoc/html5_converter_spec.rb486spec/models/concerns/from_set_operator_spec.rb487spec/lib/bitbucket/representation/user_spec.rb488spec/lib/gitlab/serializer/ci/variables_spec.rb489spec/lib/gitlab/api_authentication/token_type_builder_spec.rb490spec/lib/gitlab/gitaly_client/util_spec.rb491spec/initializers/omniauth_spec.rb492spec/lib/gitlab/slash_commands/application_help_spec.rb493spec/services/ide/schemas_config_service_spec.rb494Filter specs:495Running specs:496Running all node tests without filter497spec/services/notification_service_spec.rb498spec/services/ci/create_downstream_pipeline_service_spec.rb499spec/models/integrations/jira_spec.rb500spec/serializers/pipeline_serializer_spec.rb501spec/lib/gitlab/background_migration/migrate_u2f_webauthn_spec.rb502spec/services/ci/job_artifacts/destroy_all_expired_service_spec.rb503spec/lib/gitlab/diff/position_tracer/line_strategy_spec.rb504spec/lib/gitlab/ci/parsers/security/common_spec.rb505spec/lib/gitlab/background_migration/update_timelogs_project_id_spec.rb506spec/services/releases/create_service_spec.rb507spec/finders/ci/pipelines_finder_spec.rb508spec/finders/personal_access_tokens_finder_spec.rb509spec/lib/banzai/reference_parser/snippet_parser_spec.rb510spec/uploaders/packages/package_file_uploader_spec.rb511spec/services/deployments/update_environment_service_spec.rb512spec/lib/gitlab/utils_spec.rb513spec/graphql/mutations/merge_requests/update_spec.rb514spec/policies/namespace/root_storage_statistics_policy_spec.rb515spec/workers/database/batched_background_migration_worker_spec.rb516spec/services/environments/stop_service_spec.rb517spec/services/alert_management/create_alert_issue_service_spec.rb518spec/models/integrations/every_integration_spec.rb519spec/services/projects/autocomplete_service_spec.rb520spec/lib/gitlab/database/partitioning_migration_helpers/table_management_helpers_spec.rb521spec/lib/gitlab/ci/ansi2json/style_spec.rb522spec/graphql/resolvers/todos_resolver_spec.rb523spec/lib/gitlab/import_export/project/import_task_spec.rb524spec/serializers/issue_entity_spec.rb525spec/models/internal_id_spec.rb526spec/lib/gitlab/gpg/invalid_gpg_signature_updater_spec.rb527spec/models/concerns/deprecated_assignee_spec.rb528spec/models/dev_ops_report/metric_spec.rb529spec/finders/metrics/dashboards/annotations_finder_spec.rb530spec/models/incident_management/issuable_escalation_status_spec.rb531spec/lib/api/helpers/caching_spec.rb532spec/lib/gitlab/quick_actions/extractor_spec.rb533spec/models/namespace/package_setting_spec.rb534spec/services/deployments/link_merge_requests_service_spec.rb535spec/lib/gitlab/background_migration/batched_migration_job_spec.rb536spec/lib/banzai/filter/references/feature_flag_reference_filter_spec.rb537spec/models/onboarding_progress_spec.rb538spec/lib/gitlab/redis/shared_state_spec.rb539spec/lib/gitlab/metrics_spec.rb540spec/models/concerns/prometheus_adapter_spec.rb541spec/rubocop/code_reuse_helpers_spec.rb542spec/services/metrics/dashboard/dynamic_embed_service_spec.rb543spec/lib/bulk_imports/common/pipelines/uploads_pipeline_spec.rb544spec/models/ci/build_report_result_spec.rb545spec/lib/gitlab/ci/trace/chunked_io_spec.rb546spec/workers/new_merge_request_worker_spec.rb547spec/lib/gitlab/ci/config/external/file/artifact_spec.rb548spec/services/discussions/resolve_service_spec.rb549spec/services/quick_actions/target_service_spec.rb550spec/graphql/resolvers/design_management/versions_resolver_spec.rb551spec/support_specs/helpers/graphql_helpers_spec.rb552spec/services/snippets/bulk_destroy_service_spec.rb553spec/models/issue/metrics_spec.rb554spec/models/merge_request_assignee_spec.rb555spec/services/spam/spam_verdict_service_spec.rb556spec/models/clusters/integrations/elastic_stack_spec.rb557spec/models/ci/build_metadata_spec.rb558spec/lib/api/helpers/packages/dependency_proxy_helpers_spec.rb559spec/lib/gitlab/database/migration_helpers/v2_spec.rb560spec/lib/error_tracking/sentry_client/projects_spec.rb561spec/services/environments/auto_stop_service_spec.rb562spec/views/projects/artifacts/_artifact.html.haml_spec.rb563spec/lib/gitlab/ci/pipeline/chain/populate_spec.rb564spec/serializers/issue_sidebar_basic_entity_spec.rb565spec/workers/ci/archive_traces_cron_worker_spec.rb566spec/finders/crm/organizations_finder_spec.rb567spec/lib/gitlab/database/query_analyzers/restrict_allowed_schemas_spec.rb568spec/finders/resource_state_event_finder_spec.rb569spec/presenters/packages/detail/package_presenter_spec.rb570spec/tasks/gitlab/git_rake_spec.rb571spec/lib/gitlab/diff/suggestion_spec.rb572spec/helpers/notifications_helper_spec.rb573spec/graphql/resolvers/project_milestones_resolver_spec.rb574spec/lib/gitlab/suggestions/commit_message_spec.rb575spec/serializers/discussion_diff_file_entity_spec.rb576spec/services/merge_requests/remove_approval_service_spec.rb577spec/lib/gitlab/repository_cache_spec.rb578spec/models/pool_repository_spec.rb579spec/serializers/discussion_entity_spec.rb580spec/lib/gitlab/ci/reports/reports_comparer_spec.rb581spec/models/integrations/chat_message/alert_message_spec.rb582spec/lib/banzai/reference_parser/feature_flag_parser_spec.rb583spec/config/mail_room_spec.rb584spec/lib/gitlab/graphql/deprecation_spec.rb585spec/lib/gitlab/ci/badge/coverage/template_spec.rb586spec/lib/banzai/object_renderer_spec.rb587spec/helpers/ci/builds_helper_spec.rb588spec/services/projects/create_from_template_service_spec.rb589spec/models/merge_request_reviewer_spec.rb590spec/finders/boards/visits_finder_spec.rb591spec/lib/gitlab/ci/jwt_spec.rb592spec/graphql/resolvers/alert_management/http_integrations_resolver_spec.rb593spec/tooling/rspec_flaky/flaky_example_spec.rb594spec/models/label_link_spec.rb595spec/lib/gitlab/background_migration/base_job_spec.rb596spec/lib/gitlab/ci/pipeline/logger_spec.rb597spec/lib/bulk_imports/ndjson_pipeline_spec.rb598spec/lib/gitlab/analytics/cycle_analytics/base_query_builder_spec.rb599spec/services/packages/debian/process_changes_service_spec.rb600spec/models/integrations/zentao_spec.rb601spec/lib/gitlab/usage/metrics/instrumentations/count_imported_projects_total_metric_spec.rb602spec/lib/gitlab/background_migration/backfill_note_discussion_id_spec.rb603spec/lib/gitlab/checks/diff_check_spec.rb604spec/finders/bulk_imports/entities_finder_spec.rb605spec/services/incident_management/pager_duty/create_incident_issue_service_spec.rb606spec/workers/projects/process_sync_events_worker_spec.rb607spec/lib/banzai/filter/markdown_filter_spec.rb608spec/lib/gitlab/error_tracking/processor/grpc_error_processor_spec.rb609spec/lib/gitlab/database/partitioning/sliding_list_strategy_spec.rb610spec/validators/color_validator_spec.rb611spec/services/ci/ensure_stage_service_spec.rb612spec/graphql/mutations/custom_emoji/destroy_spec.rb613spec/services/repositories/destroy_service_spec.rb614spec/lib/gitlab/import_export/uploads_restorer_spec.rb615spec/services/merge_requests/add_spent_time_service_spec.rb616spec/services/packages/maven/create_package_service_spec.rb617spec/models/packages/npm/metadatum_spec.rb618spec/lib/gitlab/graphql/loaders/issuable_loader_spec.rb619spec/services/concerns/exclusive_lease_guard_spec.rb620spec/views/projects/commit/show.html.haml_spec.rb621spec/services/clusters/aws/finalize_creation_service_spec.rb622spec/services/projects/record_target_platforms_service_spec.rb623spec/services/boards/issues/create_service_spec.rb624spec/lib/gitlab/import_export/json/legacy_reader/file_spec.rb625spec/workers/personal_access_tokens/expiring_worker_spec.rb626spec/rubocop/cop/rspec/expect_gitlab_tracking_spec.rb627spec/services/packages/create_temporary_package_service_spec.rb628spec/views/profiles/preferences/show.html.haml_spec.rb629spec/lib/gitlab/auth/atlassian/identity_linker_spec.rb630spec/lib/gitlab/database/count/exact_count_strategy_spec.rb631spec/services/grafana/proxy_service_spec.rb632spec/workers/jira_connect/sync_deployments_worker_spec.rb633spec/services/ci/job_token_scope/remove_project_service_spec.rb634spec/helpers/listbox_helper_spec.rb635spec/lib/gitlab/ci/config/entry/rules/rule/changes_spec.rb636spec/services/ci/runners/reset_registration_token_service_spec.rb637spec/lib/gitlab/github_import/importer/label_links_importer_spec.rb638spec/lib/gitlab/git/base_error_spec.rb639spec/services/projects/group_links/update_service_spec.rb640spec/lib/gitlab/database/type/json_pg_safe_spec.rb641spec/services/ci/create_pipeline_service/artifacts_spec.rb642spec/workers/error_tracking_issue_link_worker_spec.rb643spec/lib/gitlab/ci/status/build/manual_spec.rb644spec/tooling/lib/tooling/helm3_client_spec.rb645spec/graphql/types/metrics/dashboard_type_spec.rb646spec/models/x509_issuer_spec.rb647spec/graphql/resolvers/work_item_resolver_spec.rb648spec/models/user_mentions/snippet_user_mention_spec.rb649spec/models/group_deploy_token_spec.rb650spec/lib/gitlab/ci/mask_secret_spec.rb651spec/components/pajamas/checkbox_component_spec.rb652spec/workers/gitlab_service_ping_worker_spec.rb653spec/finders/merge_request/metrics_finder_spec.rb654spec/lib/service_ping/service_ping_settings_spec.rb655spec/models/concerns/from_union_spec.rb656spec/models/integrations/irker_spec.rb657spec/rubocop/cop/api/base_spec.rb658spec/models/packages/go/module_spec.rb659spec/graphql/types/terraform/state_type_spec.rb660spec/presenters/packages/pypi/simple_package_versions_presenter_spec.rb661spec/lib/gitlab/app_json_logger_spec.rb662spec/workers/concerns/cluster_agent_queue_spec.rb663spec/models/legacy_diff_note_spec.rb664spec/services/ci/create_pipeline_service/custom_config_content_spec.rb665spec/models/integrations/campfire_spec.rb666spec/lib/atlassian/jira_connect_spec.rb667spec/lib/gitlab/ci/config/entry/workflow_spec.rb668spec/rubocop/cop/migration/background_migrations_spec.rb669spec/lib/gitlab/hook_data/group_builder_spec.rb670spec/lib/generators/gitlab/snowplow_event_definition_generator_spec.rb671spec/lib/gitlab/gitaly_client/storage_settings_spec.rb672spec/graphql/types/ci/template_type_spec.rb673spec/services/ci/pipeline_bridge_status_service_spec.rb674spec/graphql/resolvers/snippets/blobs_resolver_spec.rb675spec/services/ci/append_build_trace_service_spec.rb676spec/services/projects/forks_count_service_spec.rb677spec/lib/gitlab/setup_helper/praefect_spec.rb678spec/lib/gitlab/null_request_store_spec.rb679spec/lib/gitlab/kubernetes/service_account_token_spec.rb680spec/lib/gitlab/service_desk_email_spec.rb681spec/workers/ci/build_finished_worker_spec.rb682spec/lib/gitlab/ci/runner_releases_spec.rb683spec/lib/gitlab/phabricator_import/representation/task_spec.rb684spec/lib/gitlab/exclusive_lease_helpers/sleeping_lock_spec.rb685spec/rubocop/cop/code_reuse/serializer_spec.rb686spec/lib/gitlab/string_regex_marker_spec.rb687spec/lib/bulk_imports/users_mapper_spec.rb688spec/finders/repositories/branch_names_finder_spec.rb689spec/serializers/test_case_entity_spec.rb690spec/lib/system_check/orphans/namespace_check_spec.rb691spec/services/ci/runners/unassign_runner_service_spec.rb692spec/rubocop/cop/gitlab/module_with_instance_variables_spec.rb693spec/serializers/ci/lint/job_entity_spec.rb694spec/validators/cron_freeze_period_timezone_validator_spec.rb695spec/lib/gitlab/graphql/loaders/batch_project_statistics_loader_spec.rb696spec/models/description_version_spec.rb697spec/graphql/mutations/work_items/update_task_spec.rb698spec/lib/bitbucket/representation/comment_spec.rb699spec/services/user_project_access_changed_service_spec.rb700spec/lib/gitlab/config/entry/validators/nested_array_helpers_spec.rb701spec/lib/gitlab/graphql/known_operations_spec.rb702spec/lib/sidebars/groups/menus/ci_cd_menu_spec.rb703spec/services/packages/debian/find_or_create_incoming_service_spec.rb704spec/models/bulk_imports/configuration_spec.rb705spec/finders/admin/plans_finder_spec.rb706spec/presenters/award_emoji_presenter_spec.rb707spec/models/repository_language_spec.rb708spec/lib/gitlab/sidekiq_signals_spec.rb709spec/graphql/types/range_input_type_spec.rb710spec/models/alerting/project_alerting_setting_spec.rb711spec/lib/prometheus/pid_provider_spec.rb712spec/services/work_items/build_service_spec.rb713spec/workers/propagate_integration_worker_spec.rb714spec/lib/gitlab/sql/glob_spec.rb715spec/serializers/feature_flag_summary_serializer_spec.rb716spec/helpers/tracking_helper_spec.rb717spec/lib/gitlab/github_import/bulk_importing_spec.rbKnapsack report generator started!718DEPRECATION WARNING: /builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/activerecord-6.1.4.7/lib/active_record/connection_adapters/postgresql_adapter.rb:78: warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call719/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/pg-1.3.5/lib/pg.rb:68: warning: The called method `connect' is defined here720 (called from new_client at /builds/gitlab-org/gitlab/config/initializers/00_connection_logger.rb:21)721Run options: exclude {:quarantine=>true, :level=>"migration"}722==> /builds/gitlab-org/gitlab/tmp/tests/gitlab-test_bare set up in 0.037017087 seconds...723Test environment set up in 0.54858262 seconds724NotificationService725 #async726 returns an Async object with the correct parent727 when receiving a public method728 schedules a MailScheduler::NotificationServiceWorker729 when receiving a private method730 raises NoMethodError731 when receiving a non-existent method732 raises NoMethodError733 Keys734 #new_key735 sends email to key owner736 never emails the ghost user737 does not send email to key owner738 GpgKeys739 #new_gpg_key740 sends email to key owner741 never emails the ghost user742 does not send email to key owner743 AccessToken744 #access_token_created745 sends email to the token owner746 when user is not allowed to receive notifications747 does not send email to the token owner748 #access_token_about_to_expire749 sends email to the token owner750 #access_token_expired751 sends email to the token owner752 when user is not allowed to receive notifications753 does not send email to the token owner754 SSH Keys755 #ssh_key_expired756 sends email to the token owner757 when user is not allowed to receive notifications758 does not send email to the token owner759 #ssh_key_expiring_soon760 sends email to the token owner761 when user is not allowed to receive notifications762 does not send email to the token owner763 #unknown_sign_in764 sends email to the user765 #disabled_two_factor766 sends email to the user767 #new_email_address_added768 sends email to the user769 Notes770 issue note771 issue_email_participants772 behaves like no participants are notified773 does not send the email774 behaves like notification with exact metric events775 adds metric event776 do exist and note not confidential777 sends the email778 behaves like notification with exact metric events779 adds metric event780 do exist and note is confidential781 behaves like no participants are notified782 does not send the email783 behaves like notification with exact metric events784 adds metric event785 #new_note786 filters out "mentioned in" notes787 with users788 sends emails to recipients789 emails the note author if they've opted into notifications about their activity790 behaves like project emails are disabled791 sends no emails with project emails disabled792 sends emails to someone793 participating794 by note795 is expected not to have enqueued job796 in project that belongs to a group797 which is a top-level group798 behaves like new note notifications799 sends notifications800 behaves like project emails are disabled801 sends no emails with project emails disabled802 sends emails to someone803 which is a subgroup804 overrides child objects with global level805 behaves like new note notifications806 sends notifications807 confidential issue note808 filters out users that can not read the issue809 on project that belongs to subgroup810 when user is group guest member811 does not email guest user812 issue note mention813 #new_note814 notifies the team members815 notifies parent group members with mention level816 filters out "mentioned in" notes817 behaves like project emails are disabled818 sends no emails with project emails disabled819 sends emails to someone820 project snippet note821 #new_note822 notifies the team members823 personal snippet note824 #new_note825 notifies the participants826 commit note827 #new_note, #perform_enqueued_jobs828 is expected to eq 0829 is expected to eq 0830 is expected to eq 0831 behaves like project emails are disabled832 sends no emails with project emails disabled833 sends emails to someone834 merge request diff note835 #new_note836 records sent notifications837 behaves like project emails are disabled838 sends no emails with project emails disabled839 sends emails to someone840 design diff note841 design management is enabled842 sends new note notifications843 design management is disabled844 does not notify anyone845 #send_new_release_notifications846 when release author is blocked847 does not send any notification848 when release author is a ghost849 does not send any notification850 when recipients for a new release exist851 notifies the expected users852 Participating project notification settings have priority over group and global settings if available853 custom on group854 does not send an email to user1 when a new issue is created and new_issue is set to nil855 does not send an email to user1 when a new issue is created and new_issue is set to true856 watch on group857 does not send an email858 custom on global, global on group859 does not send an email860 watch on global, global on group861 does not send an email862 Issues863 #new_issue864 notifies the expected users865 is expected to eq 0866 properly prioritizes notification reason867 adds "assigned" reason for assignees if any868 emails any mentioned users with the mention level869 emails the author if they've opted into notifications about their activity870 doesn't email the author if they haven't opted into notifications about their activity871 emails subscribers of the issue's labels872 adds "subscribed" reason to subscriber emails873 behaves like project emails are disabled874 sends no emails with project emails disabled875 sends emails to someone876 confidential issues877 emails subscribers of the issue's labels that can read the issue878 when the author is not allowed to trigger notifications879 because they are blocked880 does not send any notification881 because they are a ghost882 does not send any notification883 #new_mentions_in_issue884 sends no emails when no new mentions are present885 emails new mentions with a watch level higher than mention886 does not email new mentions with a watch level equal to or less than mention887 emails new mentions despite being unsubscribed888 sends the proper notification reason header889 behaves like project emails are disabled890 sends no emails with project emails disabled891 sends emails to someone892 where current_user is blocked893 does not send any notification894 where current_user is a ghost895 does not send any notification896 #reassigned_issue897 emails new assignee898 adds "assigned" reason for new assignee899 emails previous assignee even if they have the "on mention" notif level900 emails new assignee even if they have the "on mention" notif level901 does not email new assignee if they are the current user902 behaves like participating notifications903 behaves like participating by note notification904 emails the participant905 for subgroups906 emails the participant907 behaves like participating by author notification908 emails the participant909 behaves like participating by assignee notification910 emails the participant911 behaves like project emails are disabled912 sends no emails with project emails disabled913 sends emails to someone914 #relabeled_issue915 emails the current user if they've opted into notifications about their activity916 doesn't email the current user if they haven't opted into notifications about their activity917 doesn't send email to anyone but subscribers of the given labels918 doesn't send multiple email when a user is subscribed to multiple given labels919 behaves like project emails are disabled920 sends no emails with project emails disabled921 sends emails to someone922 confidential issues923 emails subscribers of the issue's labels that can read the issue924 #removed_milestone_issue926 behaves like altered milestone notification on issue927 sends the email to the correct people928 behaves like project emails are disabled929 sends no emails with project emails disabled930 sends emails to someone931 confidential issues932 emails subscribers of the issue's milestone that can read the issue933 #changed_milestone_issue935 behaves like altered milestone notification on issue936 sends the email to the correct people937 behaves like project emails are disabled938 sends no emails with project emails disabled939 sends emails to someone940 confidential issues941 emails subscribers of the issue's milestone that can read the issue942 #close_issue943 sends email to issue assignee and issue author944 adds "subscribed" reason to subscriber emails945 behaves like participating notifications946 behaves like participating by note notification947 emails the participant948 for subgroups949 emails the participant950 behaves like participating by author notification951 emails the participant952 behaves like participating by assignee notification953 emails the participant954 behaves like project emails are disabled955 sends no emails with project emails disabled956 sends emails to someone957 #reopen_issue958 sends email to issue notification recipients959 behaves like participating notifications960 behaves like participating by note notification961 emails the participant962 for subgroups963 emails the participant964 behaves like participating by author notification965 emails the participant966 behaves like participating by assignee notification967 emails the participant968 behaves like project emails are disabled969 sends no emails with project emails disabled970 sends emails to someone971 #issue_moved972 sends email to issue notification recipients973 behaves like participating notifications974 behaves like participating by note notification975 emails the participant976 for subgroups977 emails the participant978 behaves like participating by author notification979 emails the participant980 behaves like participating by assignee notification981 emails the participant982 behaves like project emails are disabled983 sends no emails with project emails disabled984 sends emails to someone985 #issue_cloned986 sends email to issue notification recipients987 behaves like participating notifications988 behaves like participating by note notification989 emails the participant990 for subgroups991 emails the participant992 behaves like participating by author notification993 emails the participant994 behaves like participating by assignee notification995 emails the participant996 behaves like project emails are disabled997 sends no emails with project emails disabled998 sends emails to someone999 #issue_due1000 sends email to issue notification recipients, excluding watchers1001 sends the email from the author1002 behaves like participating notifications1003 behaves like participating by note notification1004 emails the participant1005 for subgroups1006 emails the participant1007 behaves like participating by author notification1008 emails the participant1009 behaves like participating by assignee notification1010 emails the participant1011 behaves like project emails are disabled1012 sends no emails with project emails disabled1013 sends emails to someone1014 Merge Requests1015 #new_merge_request1016 is expected to eq 01017 adds "assigned" reason for assignee, if any1018 emails any mentioned users with the mention level1019 emails the author if they've opted into notifications about their activity1020 doesn't email the author if they haven't opted into notifications about their activity1021 emails subscribers of the merge request's labels1022 behaves like project emails are disabled1023 sends no emails with project emails disabled1024 sends emails to someone1025 Approvals1026 #approve_mr1027 will notify the author, subscribers, and assigned users1028 #unapprove_mr1029 will notify the author, subscribers, and assigned users1030 participating1031 behaves like participating by assignee notification1032 emails the participant1033 behaves like participating by note notification1034 emails the participant1035 for subgroups1036 emails the participant1037 by author1038 is expected to eq 01039 when the author is not allowed to trigger notifications1040 because they are blocked1041 behaves like is not able to send notifications1042 does not send any notification1043 because they are a ghost1044 behaves like is not able to send notifications1045 does not send any notification1046 #new_mentions_in_merge_request1047 sends no emails when no new mentions are present1048 emails new mentions with a watch level higher than mention1049 does not email new mentions with a watch level equal to or less than mention1050 emails new mentions despite being unsubscribed1051 sends the proper notification reason header1052 behaves like project emails are disabled1053 sends no emails with project emails disabled1054 sends emails to someone1055 where current_user is blocked1056 does not send any notification1057 where current_user is a ghost1058 does not send any notification1059 #reassigned_merge_request1060 is expected to eq 01061 adds "assigned" reason for new assignee1062 behaves like participating notifications1063 behaves like participating by note notification1064 emails the participant1065 for subgroups1066 emails the participant1067 behaves like participating by author notification1068 emails the participant1069 behaves like participating by assignee notification1070 emails the participant1071 behaves like project emails are disabled1072 sends no emails with project emails disabled1073 sends emails to someone1074 #changed_reviewer_of_merge_request1075 sends emails to relevant users only1076 adds "review requested" reason for new reviewer1077 participating notifications with reviewers1078 behaves like participating notifications1079 behaves like participating by note notification1080 emails the participant1081 for subgroups1082 emails the participant1083 behaves like participating by author notification1084 emails the participant1085 behaves like participating by assignee notification1086 emails the participant1087 behaves like participating by reviewer notification1088 emails the participant1089 behaves like project emails are disabled1090 sends no emails with project emails disabled1091 sends emails to someone1092 #change_in_merge_request_draft_status1093 sends emails to relevant users only1094 behaves like participating notifications1095 behaves like participating by note notification1096 emails the participant1097 for subgroups1098 emails the participant1099 behaves like participating by author notification1100 emails the participant1101 behaves like participating by assignee notification1102 emails the participant1103 behaves like project emails are disabled1104 sends no emails with project emails disabled1105 sends emails to someone1106 #push_to_merge_request1107 is expected to eq 01108 triggers push_to_merge_request_email with corresponding email1109 number_of_new_commits: 0, number_of_new_commits_displayed: 01110 triggers the corresponding mailer method with list of stripped commits1111 number_of_new_commits: 18, number_of_new_commits_displayed: 181112 triggers the corresponding mailer method with list of stripped commits1113 number_of_new_commits: 19, number_of_new_commits_displayed: 191114 triggers the corresponding mailer method with list of stripped commits1115 number_of_new_commits: 20, number_of_new_commits_displayed: 201116 triggers the corresponding mailer method with list of stripped commits1117 number_of_new_commits: 21, number_of_new_commits_displayed: 201118 triggers the corresponding mailer method with list of stripped commits1119 number_of_new_commits: 22, number_of_new_commits_displayed: 201120 triggers the corresponding mailer method with list of stripped commits1121 there is only one existing commit1122 triggers corresponding mailer method with only one existing commit1123 behaves like participating notifications1124 behaves like participating by note notification1125 emails the participant1126 for subgroups1127 emails the participant1128 behaves like participating by author notification1129 emails the participant1130 behaves like participating by assignee notification1131 emails the participant1132 behaves like project emails are disabled1133 sends no emails with project emails disabled1134 sends emails to someone1135 #relabel_merge_request1136 doesn't send email to anyone but subscribers of the given labels1137 behaves like project emails are disabled1138 sends no emails with project emails disabled1139 sends emails to someone1140 #removed_milestone_merge_request1141 behaves like altered milestone notification on merge request1142 sends the email to the correct people1143 behaves like project emails are disabled1144 sends no emails with project emails disabled1145 sends emails to someone1146 #changed_milestone_merge_request1147 behaves like altered milestone notification on merge request1148 sends the email to the correct people1149 behaves like project emails are disabled1150 sends no emails with project emails disabled1151 sends emails to someone1152 #merge_request_unmergeable1153 sends email to merge request author1154 behaves like project emails are disabled1155 sends no emails with project emails disabled1156 sends emails to someone1157 when merge_when_pipeline_succeeds is true1158 sends email to merge request author and merge_user1159 #closed_merge_request1160 is expected to eq 01161 behaves like participating notifications1162 behaves like participating by note notification1163 emails the participant1164 for subgroups1165 emails the participant1166 behaves like participating by author notification1167 emails the participant1168 behaves like participating by assignee notification1169 emails the participant1170 behaves like project emails are disabled1171 sends no emails with project emails disabled1172 sends emails to someone1173 #merged_merge_request1174 is expected to eq 01175 notifies the merger when the pipeline succeeds is true1176 does not notify the merger when the pipeline succeeds is false1177 notifies the merger when the pipeline succeeds is false but they've opted into notifications about their activity1178 behaves like participating notifications1179 behaves like participating by note notification1180 emails the participant1181 for subgroups1182 emails the participant1183 behaves like participating by author notification1184 emails the participant1185 behaves like participating by assignee notification1186 emails the participant1187 behaves like project emails are disabled1188 sends no emails with project emails disabled1189 sends emails to someone1190 #reopen_merge_request1191 is expected to eq 01192 behaves like participating notifications1193 behaves like participating by note notification1194 emails the participant1195 for subgroups1196 emails the participant1197 behaves like participating by author notification1198 emails the participant1199 behaves like participating by assignee notification1200 emails the participant1201 behaves like project emails are disabled1202 sends no emails with project emails disabled1203 sends emails to someone1204 #resolve_all_discussions1205 is expected to eq 01206 behaves like participating notifications1207 behaves like participating by note notification1208 emails the participant1209 for subgroups1210 emails the participant1211 behaves like participating by author notification1212 emails the participant1213 behaves like participating by assignee notification1214 emails the participant1215 behaves like project emails are disabled1216 sends no emails with project emails disabled1217 sends emails to someone1218 #merge_when_pipeline_succeeds1219 send notification that merge will happen when pipeline succeeds1220 does not send notification if the custom event is disabled1221 sends notification to participants even if the custom event is disabled1222 behaves like participating notifications1223 behaves like participating by note notification1224 emails the participant1225 for subgroups1226 emails the participant1227 behaves like participating by author notification1228 emails the participant1229 behaves like participating by assignee notification1230 emails the participant1231 behaves like project emails are disabled1232 sends no emails with project emails disabled1233 sends emails to someone1234 #review_requested_of_merge_request1235 sends email to reviewer1236 adds "review requested" reason for new reviewer1237 behaves like project emails are disabled1238 sends no emails with project emails disabled1239 sends emails to someone1240 #attention_requested_of_merge_request1241 sends email to reviewer1242 adds "attention requested" reason1243 behaves like project emails are disabled1244 sends no emails with project emails disabled1245 sends emails to someone1246 Projects1247 #project_was_moved1248 when notifications are disabled1249 does not send a notification1250 with users at both project and group level1251 notifies the expected users1252 behaves like project emails are disabled1253 sends no emails with project emails disabled1254 sends emails to someone1255 users not having access to the new location1256 does not send email1257 user with notifications disabled1258 #project_exported1259 is expected to be empty1260 #project_not_exported1261 is expected to be empty1262 user with notifications enabled1263 #project_exported1264 is expected to eq 11265 behaves like project emails are disabled1266 sends no emails with project emails disabled1267 sends emails to someone1268 #project_not_exported1269 is expected to eq 11270 behaves like project emails are disabled1271 sends no emails with project emails disabled1272 sends emails to someone1273 #invite_member_reminder1274 calls the Notify.invite_member_reminder method with the right params1275 sends exactly one email1276 #new_instance_access_request1277 sends notification only to a maximum of ten most recently active instance admins1278 #user_admin_rejection1279 sends the user a rejection email1280 #user_deactivated1281 sends the user an email1282 GroupMember1283 #new_access_request1284 recipients1285 sends notification only to group owners1286 behaves like group emails are disabled1287 sends no emails with group emails disabled1288 sends emails to someone1289 behaves like sends notification only to a maximum of ten, most recently active group owners1290 limit notification emails1291 sends notification only to a maximum of ten, most recently active group owners1292 #decline_group_invite1293 is expected to change `ActionMailer::Base.deliveries.size` by 11294 #new_group_member1295 sends a notification1296 when notifications are disabled1297 does not send a notification1298 behaves like group emails are disabled1299 sends no emails with group emails disabled1300 sends emails to someone1301 #updated_group_member_expiration1302 emails the user that their group membership expiry has changed1303 ProjectMember1304 #new_access_request1305 for a project in a user namespace1306 recipients1307 sends notification only to project maintainers1308 behaves like project emails are disabled1309 sends no emails with project emails disabled1310 sends emails to someone1311 behaves like sends notification only to a maximum of ten, most recently active project maintainers1312 limit notification emails1313 sends notification only to a maximum of ten, most recently active project maintainers1314 for a project in a group1315 when the project has no maintainers1316 when the group has at least one owner1317 recipients1318 sends notifications to the group owners1319 behaves like sends notification only to a maximum of ten, most recently active group owners1320 limit notification emails1321 sends notification only to a maximum of ten, most recently active group owners1322 when the group does not have any owners1323 recipients1324 does not send any notifications1325 when the project has maintainers1326 recipients1327 sends notifications only to project maintainers1328 behaves like sends notification only to a maximum of ten, most recently active project maintainers1329 limit notification emails1330 sends notification only to a maximum of ten, most recently active project maintainers1331 #decline_project_invite1332 is expected to change `ActionMailer::Base.deliveries.size` by 11333 #new_project_member1334 is expected to eq 11335 behaves like project emails are disabled1336 sends no emails with project emails disabled1337 sends emails to someone1338 when notifications are disabled1339 is expected to be empty1340 guest user in private project1341 filters out guests when new note is created1342 filters out guests when new merge request is created1343 filters out guests when merge request is closed1344 filters out guests when merge request is reopened1345 filters out guests when merge request is merged1346 Pipelines1347 #pipeline_finished1348 with a successful pipeline1349 when the creator has default settings1350 notifies nobody1351 when the creator has watch set1352 notifies nobody1353 when the creator has custom notifications, but without any set1354 notifies nobody1355 when the creator has custom notifications disabled1356 notifies nobody1357 when the creator has custom notifications enabled1358 emails only the creator1359 behaves like project emails are disabled1360 sends no emails with project emails disabled1361 sends emails to someone1362 when the creator has group notification email set1363 sends to group notification email1364 with a failed pipeline1365 when the creator has no custom notification set1366 emails only the creator1367 behaves like project emails are disabled1368 sends no emails with project emails disabled1369 sends emails to someone1370 when the creator has group notification email set1371 sends to group notification email1372 when the creator has watch set1373 emails only the creator1374 when the creator has custom notifications, but without any set1375 emails only the creator1376 when the creator has custom notifications disabled1377 notifies nobody1378 when the creator has custom notifications set1379 emails only the creator1380 when the creator has no read_build access1381 does not send emails1382 with a fixed pipeline1383 when the creator has no custom notification set1384 emails only the creator1385 behaves like project emails are disabled1386 sends no emails with project emails disabled1387 sends emails to someone1388 when the creator has group notification email set1389 sends to group notification email1390 when the creator has watch set1391 emails only the creator1392 when the creator has custom notifications, but without any set1393 emails only the creator1394 when the creator has custom notifications disabled1395 notifies nobody1396 when the creator has custom notifications set1397 emails only the creator1398 Pages domains1399 #pages_domain_enabled1400 emails current watching maintainers and owners1401 emails nobody if the project is missing1402 behaves like project emails are disabled1403 sends no emails with project emails disabled1404 sends emails to someone1405 #pages_domain_disabled1406 emails current watching maintainers and owners1407 emails nobody if the project is missing1408 behaves like project emails are disabled1409 sends no emails with project emails disabled1410 sends emails to someone1411 #pages_domain_verification_succeeded1412 emails current watching maintainers and owners1413 emails nobody if the project is missing1414 behaves like project emails are disabled1415 sends no emails with project emails disabled1416 sends emails to someone1417 #pages_domain_verification_failed1418 emails current watching maintainers and owners1419 emails nobody if the project is missing1420 behaves like project emails are disabled1421 sends no emails with project emails disabled1422 sends emails to someone1423 #pages_domain_auto_ssl_failed1424 emails current watching maintainers and owners1425 emails nobody if the project is missing1426 behaves like project emails are disabled1427 sends no emails with project emails disabled1428 sends emails to someone1429 Auto DevOps notifications1430 #autodevops_disabled1431 emails project owner and user that triggered the pipeline1432 behaves like project emails are disabled1433 sends no emails with project emails disabled1434 sends emails to someone1435 Repository cleanup1436 #repository_cleanup_success1437 emails the specified user only1438 behaves like project emails are disabled1439 sends no emails with project emails disabled1440 sends emails to someone1441 #repository_cleanup_failure1442 emails the specified user only1443 behaves like project emails are disabled1444 sends no emails with project emails disabled1445 sends emails to someone1446 Remote mirror notifications1447 #remote_mirror_update_failed1448 emails current watching maintainers and owners1449 behaves like project emails are disabled1450 sends no emails with project emails disabled1451 sends emails to someone1452 with external authorization service1453 sends email when the service is not enabled1454 when the service is enabled1455 does not send an email1456 with admin user1457 when admin mode is enabled1458 still delivers email to admins1459 when admin mode is disabled1460 does not send an email1461 #prometheus_alerts_fired1462 sends the email to owners and masters1463 behaves like project emails are disabled1464 sends no emails with project emails disabled1465 sends emails to someone1466 #new_review1467 sends emails1468 behaves like project emails are disabled1469 sends no emails with project emails disabled1470 sends emails to someone1471 #inactive_project_deletion_warning1472 sends email to project owners and maintainers1473Ci::CreateDownstreamPipelineService#execute1474 when downstream project has not been found1475 does not create a pipeline1476 changes pipeline bridge job status to failed1477 when user can not access downstream project1478 does not create a new pipeline1479 changes status of the bridge build1480 when user does not have access to create pipeline1481 does not create a new pipeline1482 changes status of the bridge build1483 when user can create pipeline in a downstream project1484 creates only one new pipeline1485 creates a new pipeline in a downstream project1486 updates bridge status when downstream pipeline gets processed1487 behaves like logs downstream pipeline creation1488 logs details1489 when bridge job has already any downstream pipelines1490 logs an error and exits1491 when target ref is not specified1492 is using default branch name1493 when downstream pipeline has yaml configuration error1494 creates only one new pipeline1495 creates a new pipeline in a downstream project1496 updates the bridge status when downstream pipeline gets processed1497 when downstream project is the same as the upstream project1498 detects a circular dependency1499 does not create a new pipeline1500 changes status of the bridge build1501 when "include" is provided1502 updates the bridge job to success1503 behaves like creates a child pipeline1504 creates only one new pipeline1505 creates a child pipeline in the same project1506 updates bridge status when downstream pipeline gets processed1507 propagates parent pipeline settings to the child pipeline1508 behaves like logs downstream pipeline creation1509 logs details1510 when bridge uses "depend" strategy1511 does not update the bridge job status1512 when latest sha for the ref changed in the meantime1513 behaves like creates a child pipeline1514 creates only one new pipeline1515 creates a child pipeline in the same project1516 updates bridge status when downstream pipeline gets processed1517 propagates parent pipeline settings to the child pipeline1518 when the parent is a merge request pipeline1519 propagates the merge request to the child pipeline1520 behaves like creates a child pipeline1521 creates only one new pipeline1522 creates a child pipeline in the same project1523 updates bridge status when downstream pipeline gets processed1524 propagates parent pipeline settings to the child pipeline1525 when upstream pipeline has a parent pipeline1526 creates the pipeline1527 behaves like logs downstream pipeline creation1528 logs details1529 when upstream pipeline has a parent pipeline, which has a parent pipeline1530 does not create a second descendant pipeline1531 when upstream pipeline has two level upstream pipelines from different projects1532 create the pipeline1533 when downstream project does not allow user-defined variables for child pipelines1534 creates a new pipeline allowing variables to be passed downstream1535 passes variables downstream from the bridge1536 when multi-project pipeline runs from child pipelines bridge job1537 creates a new pipeline1538 cyclical dependency detection1539 when pipeline ancestry contains 2 cycles of dependencies1540 behaves like detects cyclical pipelines1541 does not create a new pipeline1542 changes status of the bridge build1543 when source in the ancestry differ1544 behaves like passes cyclical pipeline precondition1545 creates a new pipeline1546 expect bridge build not to be failed1547 when ref in the ancestry differ1548 behaves like passes cyclical pipeline precondition1549 creates a new pipeline1550 expect bridge build not to be failed1551 when only 1 cycle is detected1552 behaves like passes cyclical pipeline precondition1553 creates a new pipeline1554 expect bridge build not to be failed1555 when downstream pipeline creation errors out1556 creates only one new pipeline1557 creates a new pipeline in the downstream project1558 drops the bridge1559 when bridge job status update raises state machine errors1560 tracks the exception1561 when bridge job has YAML variables defined1562 passes bridge variables to downstream pipeline1563 when pipeline variables are defined1564 does not pass pipeline variables directly downstream1565 when using YAML variables interpolation1566 makes it possible to pass pipeline variable downstream1567 when downstream project does not allow user-defined variables for multi-project pipelines1568 does not create a new pipeline1569 ignores variables passed downstream from the bridge1570 sets errors1571 when configured with bridge job rules1572 that include the bridge job1573 creates the downstream pipeline1574 when user does not have access to push protected branch of downstream project1575 changes status of the bridge build1576 when there is no such branch in downstream project1577 does not create a pipeline and drops the bridge1578 when downstream pipeline has a branch rule and does not satisfy1579 does not create a pipeline and drops the bridge1580 when downstream pipeline has invalid YAML1581 creates the pipeline but drops the bridge1582 when downstream pipeline has workflow rule1583 when passing the required variable1584 creates the pipeline1585 when not passing the required variable1586 does not create the pipeline1587Integrations::Jira1588 behaves like Integrations::ResetSecretFields1589 #exposing_secrets_fields1590 returns an array of strings1591 #reset_secret_fields?1592 returns false if no exposing field has changed1593 returns true if any exposing field has changed1594 validation callback1595 when an exposing field has changed1596 clears all secret fields1597 when a secret field has been updated1598 does not clear this secret field1599 when a secret field has been updated with the same value1600 does not clear this secret field1601 when no exposing field has changed1602 does not clear any secret fields1603 validations1604 when integration is active1605 is expected to be valid1606 is expected to validate that :url cannot be empty/falsy1607 is expected to validate that :username cannot be empty/falsy1608 is expected to validate that :password cannot be empty/falsy1609 behaves like issue tracker integration URL attribute1610 is expected to allow :url to be ‹"https://example.com"›1611 is expected not to allow :url to be ‹"example.com"›1612 is expected not to allow :url to be ‹"ftp://example.com"›1613 is expected not to allow :url to be ‹"herp-and-derp"›1614 behaves like issue tracker integration URL attribute1615 is expected to allow :api_url to be ‹"https://example.com"›1616 is expected not to allow :api_url to be ‹"example.com"›1617 is expected not to allow :api_url to be ‹"ftp://example.com"›1618 is expected not to allow :api_url to be ‹"herp-and-derp"›1619 when integration is inactive1620 is expected to be valid1621 is expected not to validate that :url cannot be empty/falsy1622 is expected not to validate that :username cannot be empty/falsy1623 is expected not to validate that :password cannot be empty/falsy1624 jira_issue_transition_id1625 accepts a blank value1626 accepts any string containing numbers1627 does not accept a string without numbers1628 #options1629 sets the URL properly1630 leaves out trailing slashes in context1631 provides additional cookies to allow basic auth with oracle webgate1632 URL without a path1633 leaves out trailing slashes in context1634 URL with query string parameters1635 removes query string parameters1636 username with trailing whitespaces1637 leaves out trailing whitespaces in username1638 using api URL1639 leaves out trailing slashes in context1640 #fields1641 returns custom fields1642 #sections1643 when project_level? is true1644 includes SECTION_TYPE_JIRA_ISSUES1645 section SECTION_TYPE_JIRA_ISSUES has `plan` attribute1646 when project_level? is false1647 does not include SECTION_TYPE_JIRA_ISSUES1648 .reference_pattern1649 key: "#123", result: ""1650 is expected to eq ""1651 key: "1#23#12", result: ""1652 is expected to eq ""1653 key: "JIRA-1234A", result: "JIRA-1234"1654 is expected to eq "JIRA-1234"1655 key: "JIRA-1234-some_tag", result: "JIRA-1234"1656 is expected to eq "JIRA-1234"1657 key: "JIRA-1234_some_tag", result: "JIRA-1234"1658 is expected to eq "JIRA-1234"1659 key: "EXT_EXT-1234", result: "EXT_EXT-1234"1660 is expected to eq "EXT_EXT-1234"1661 key: "EXT3_EXT-1234", result: "EXT3_EXT-1234"1662 is expected to eq "EXT3_EXT-1234"1663 key: "3EXT_EXT-1234", result: ""1664 is expected to eq ""1665 .valid_jira_cloud_url?1666 url: "https://abc.atlassian.net", result: true1667 is expected to eq true1668 url: "abc.atlassian.net", result: false1669 is expected to eq false1670 url: "https://somethingelse.com", result: false1671 is expected to eq false1672 url: nil, result: false1673 is expected to eq false1674 #create1675 does not store data into properties1676 stores data in data_fields correctly1677 when loading serverInfo1678 with a Cloud instance1679 is detected1680 with a Server instance1681 is detected1682 from an Unknown instance1683 and URL ends in .atlassian.net1684 deployment_type is set to cloud1685 and URL is something else1686 deployment_type is set to server1687 and no ServerInfo response is received1688 and URL ends in .atlassian.net1689 deployment_type is set to cloud1690 and URL is something else1691 deployment_type is set to server1692 overriding properties1693 when data are stored in properties1694 behaves like handles jira fields1695 reading data1696 reads data correctly1697 #update1698 basic update1699 stores updated data in jira_tracker_data table1700 when updating the url, api_url, username, or password1701 calls serverInfo for url1702 calls serverInfo for api_url1703 calls serverInfo for username1704 calls serverInfo for password1705 when updating the integration1706 updates deployment type1707 when removing the integration1708 updates deployment type1709 when not updating the url, api_url, username, or password1710 does not update deployment type1711 when data are stored in separated fields1712 behaves like handles jira fields1713 reading data1714 reads data correctly1715 #update1716 basic update1717 stores updated data in jira_tracker_data table1718 when updating the url, api_url, username, or password1719 calls serverInfo for url1720 calls serverInfo for api_url1721 calls serverInfo for username1722 calls serverInfo for password1723 when updating the integration1724 updates deployment type1725 when removing the integration1726 updates deployment type1727 when not updating the url, api_url, username, or password1728 does not update deployment type1729 when data are stored in both properties and separated fields1730 behaves like handles jira fields1731 reading data1732 reads data correctly1733 #update1734 basic update1735 stores updated data in jira_tracker_data table1736 when updating the url, api_url, username, or password1737 calls serverInfo for url1738 calls serverInfo for api_url1739 calls serverInfo for username1740 calls serverInfo for password1741 when updating the integration1742 updates deployment type1743 when removing the integration1744 updates deployment type1745 when not updating the url, api_url, username, or password1746 does not update deployment type1747 #client1748 when the FF :jira_raise_timeouts is enabled1749 uses custom timeouts1750 when the FF :jira_raise_timeouts is disabled1751 uses the default GitLab::HTTP timeouts1752 #find_issue1753 calls the Jira API to get the issue1754 with options1755 calls the Jira API with the options to get the issue1756 #close_issue1757 when resource is a merge request1758 behaves like close_issue1759 calls Jira API1760 tracks usage1761 does not fail if remote_link.all on issue returns nil1762 creates Remote Link reference in Jira for comment1763 does not send comment or remote links to issues already closed1764 does not send comment or remote links to issues with unknown resolution1765 references the GitLab commit1766 references the GitLab commit1767 logs exception when transition id is not valid1768 calls the api with jira_issue_transition_id1769 when "comment_on_event_enabled" is set to false1770 creates Remote Link reference but does not create comment1771 when Remote Link already exists1772 does not create comment1773 when custom transition IDs are blank1774 does not transition the issue1775 when using automatic issue transitions1776 uses the next transition with a status category of done1777 when no done transition is available1778 does not attempt to transition1779 when no valid transitions are returned1780 does not attempt to transition1781 when using multiple transition ids1782 calls the api with transition ids separated by comma1783 calls the api with transition ids separated by semicolon1784 when a transition fails1785 stops the sequence1786 when resource is a commit1787 behaves like close_issue1788 calls Jira API1789 tracks usage1790 does not fail if remote_link.all on issue returns nil1791 creates Remote Link reference in Jira for comment1792 does not send comment or remote links to issues already closed1793 does not send comment or remote links to issues with unknown resolution1794 references the GitLab commit1795 references the GitLab commit1796 logs exception when transition id is not valid1797 calls the api with jira_issue_transition_id1798 when "comment_on_event_enabled" is set to false1799 creates Remote Link reference but does not create comment1800 when Remote Link already exists1801 does not create comment1802 when custom transition IDs are blank1803 does not transition the issue1804 when using automatic issue transitions1805 uses the next transition with a status category of done1806 when no done transition is available1807 does not attempt to transition1808 when no valid transitions are returned1809 does not attempt to transition1810 when using multiple transition ids1811 calls the api with transition ids separated by comma1812 calls the api with transition ids separated by semicolon1813 when a transition fails1814 stops the sequence1815 #create_cross_reference_note1816 for commits1817 behaves like handles cross-references1818 tracks usage1819 when enabled1820 creates a comment and remote link1821 when comment already exists1822 does not create a comment or remote link1823 when remote link already exists1824 updates the remote link but does not create a comment1825 when disabled1826 does not create a comment or remote link1827 for issues1828 behaves like handles cross-references1829 tracks usage1830 when enabled1831 creates a comment and remote link1832 when comment already exists1833 does not create a comment or remote link1834 when remote link already exists1835 updates the remote link but does not create a comment1836 when disabled1837 does not create a comment or remote link1838 for merge requests1839 behaves like handles cross-references1840 tracks usage1841 when enabled1842 creates a comment and remote link1843 when comment already exists1844 does not create a comment or remote link1845 when remote link already exists1846 updates the remote link but does not create a comment1847 when disabled1848 does not create a comment or remote link1849 for notes1850 behaves like handles cross-references1851 tracks usage1852 when enabled1853 creates a comment and remote link1854 when comment already exists1855 does not create a comment or remote link1856 when remote link already exists1857 updates the remote link but does not create a comment1858 when disabled1859 does not create a comment or remote link1860 for snippets1861 behaves like handles cross-references1862 tracks usage1863 when enabled1864 creates a comment and remote link1865 when comment already exists1866 does not create a comment or remote link1867 when remote link already exists1868 updates the remote link but does not create a comment1869 when disabled1870 does not create a comment or remote link1871 #test1872 when the test succeeds1873 gets Jira project with URL when API URL not set1874 gets Jira project with API URL if set1875 when the test fails1876 returns result with the error1877 project and issue urls1878 removes trailing slashes from url1879 when gitlab.yml was initialized1880 is prepopulated with the settings1881 favicon urls1882 includes the standard favicon1883 includes returns the custom favicon1884 generating external URLs1885 #web_url1886 handles paths, slashes, and query string1887 preserves existing query string1888 returns an empty string if URL is not set1889 includes Atlassian referrer for gitlab.com1890 includes Atlassian referrer for self-managed1891 #project_url1892 returns the correct URL1893 returns an empty string if URL is not set1894 #issues_url1895 returns the correct URL1896 returns an empty string if URL is not set1897 #new_issue_url1898 returns the correct URL1899 returns an empty string if URL is not set1900 #issue_transition_enabled?1901 returns true if automatic transitions are enabled1902 returns true if custom transitions are set1903 returns false if automatic and custom transitions are disabled1904 valid_connection? and configured?1905 when the test fails1906 is falsey1907 implies that configured? is also falsey1908 when the test succeeds1909 is truthy1910 when the integration is active1911 implies that configured? is also truthy1912 when the integration is inactive1913 implies that configured? is falsey1914PipelineSerializer1915 #represent1916 when used without pagination1917 created a not paginated serializer1918 when a single object is being serialized1919 serializers the pipeline object1920 when multiple objects are being serialized1921 serializers the array of pipelines1922 when used with pagination1923 created a paginated serializer1924 when resource is not paginatable1925 when a single pipeline object is being serialized1926 raises error1927 when resource is paginatable relation1928 when a single pipeline object is present in relation1929 serializes pipeline relation1930 when a multiple pipeline objects are being serialized1931 serializes appropriate number of objects1932 appends relevant headers1933 when there are pipelines for merge requests1934 includes merge requests information1935 preloads related merge requests1936 number of queries when preloaded1937 with the same ref1938 verifies number of queries1939 with different refs1940 verifies number of queries1941 with triggered pipelines1942 verifies number of queries1943 with build environments1944 executes one query to fetch all related environments1945 with scheduled and manual builds1946 sends at most one metadata query for each type of build1947 #represent_status1948 when represents only status1949 serializes only status1950Ci::JobArtifacts::DestroyAllExpiredService1951 .execute1952 when artifact is expired1953 with preloaded relationships1954 with ci_destroy_unlocked_job_artifacts feature flag disabled1955 performs a consistent number of queries1956 with ci_destroy_unlocked_job_artifacts feature flag enabled1957 performs a consistent number of queries1958 when artifact is not locked1959 deletes job artifact record1960 when the artifact does not have a file attached to it1961 does not create deleted objects1962 when the artifact has a file attached to it1963 creates a deleted object1964 resets project statistics1965 does not remove the files1966 when the project in which the arfifact belongs to is undergoing stats refresh1967 does not destroy job artifact1968 when artifact is locked1969 does not destroy job artifact1970 when artifact is not expired1971 does not destroy expired job artifacts1972 when artifact is permanent1973 does not destroy expired job artifacts1974 when failed to destroy artifact1975 when the import fails1976 raises an exception and stop destroying1977 when the delete fails1978 raises an exception rolls back the insert1979 when exclusive lease has already been taken by the other instance1980 raises an error and does not start destroying1981 with a second artifact and batch size of 11982 when timeout happens1983 destroys one artifact1984 reports the number of destroyed artifacts1985 when loop reached loop limit1986 destroys one artifact1987 reports the number of destroyed artifacts1988 when the number of artifacts is greater than than batch size1989 destroys all expired artifacts1990 reports the number of destroyed artifacts1991 when there are no artifacts1992 does not raise error1993 reports the number of destroyed artifacts1994 when some artifacts are locked1995 destroys only unlocked artifacts1996 when all artifacts are locked1997 destroys no artifacts1998Gitlab::Diff::PositionTracer::LineStrategy1999 #trace2000 diff scenarios2001 when the file was created in the old diff2002 when the file is created in the new diff2003 when the position pointed at an added line in the old diff2004 when the file's content was unchanged between the old and the new diff2005 returns the new position2006 when the position is multiline2007 returns the new position along with line_range2008 when the file's content was changed between the old and the new diff2009 when that line was unchanged between the old and the new diff2010 returns the new position2011 when that line was moved between the old and the new diff2012 returns the new position2013 when that line was changed between the old and the new diff2014 returns the position of the change2015 when that line was deleted between the old and the new diff2016 returns the position of the change2017 when the file is changed in the new diff2018 when the position pointed at an added line in the old diff2019 when the file's content was unchanged between the old and the new diff2020 returns the new position2021 when the file's content was changed between the old and the new diff2022 when that line was unchanged between the old and the new diff2023 returns the new position2024 when that line was moved between the old and the new diff2025 returns the new position2026 when that line was changed between the old and the new diff2027 returns the position of the change2028 when that line was deleted between the old and the new diff2029 returns the position of the change2030 when the file is renamed in the new diff2031 when the position pointed at an added line in the old diff2032 when the file's content was unchanged between the old and the new diff2033 returns the position of the change2034 when the position is multiline2035 returns the new position2036 when the file's content was changed between the old and the new diff2037 when that line was unchanged between the old and the new diff2038 returns the new position2039 when that line was moved between the old and the new diff2040 returns the new position2041 when that line was changed between the old and the new diff2042 returns the position of the change2043 when the file is deleted in the new diff2044 when the position pointed at an added line in the old diff2045 when the file's content was unchanged between the old and the new diff2046 returns the position of the change2047 when the file's content was changed between the old and the new diff2048 when that line was unchanged between the old and the new diff2049 returns the position of the change2050 when that line was moved between the old and the new diff2051 returns the position of the change2052 when that line was changed between the old and the new diff2053 returns the position of the change2054 when that line was deleted between the old and the new diff2055 returns the position of the change2056 when the file is unchanged in the new diff2057 when the position pointed at an added line in the old diff2058 when the file's content was unchanged between the old and the new diff2059 returns the position of the change2060 when the file's content was changed between the old and the new diff2061 when that line was unchanged between the old and the new diff2062 returns the position of the change2063 when that line was moved between the old and the new diff2064 returns the position of the change2065 when that line was changed between the old and the new diff2066 returns the position of the change2067 when that line was deleted between the old and the new diff2068 returns the position of the change2069 when the file was changed in the old diff2070 when the file is created in the new diff2071 when the position pointed at an added line in the old diff2072 when the file's content was unchanged between the old and the new diff2073 returns the new position2074 when the file's content was changed between the old and the new diff2075 when that line was unchanged between the old and the new diff2076 returns the new position2077 when that line was moved between the old and the new diff2078 returns the new position2079 when that line was changed or deleted between the old and the new diff2080 returns the position of the change2081 when the position pointed at a deleted line in the old diff2082 returns the position of the change2083 when the position pointed at an unchanged line in the old diff2084 when the file's content was unchanged between the old and the new diff2085 returns the new position2086 when the file's content was changed between the old and the new diff2087 when that line was unchanged between the old and the new diff2088 returns the new position2089 when that line was moved between the old and the new diff2090 returns the new position2091 when that line was changed or deleted between the old and the new diff2092 returns the position of the change2093 when the file is changed in the new diff2094 when the position pointed at an added line in the old diff2095 when the file's content was unchanged between the old and the new diff2096 returns the new position2097 when the file's content was changed between the old and the new diff2098 when that line was unchanged between the old and the new diff2099 returns the new position2100 when that line was moved between the old and the new diff2101 returns the new position2102 when that line was changed or deleted between the old and the new diff2103 returns the position of the change2104 when the position pointed at a deleted line in the old diff2105 when the file's content was unchanged between the old and the new diff2106 returns the new position2107 typical use scenarios2108 simple push of new commit2109 returns the new positions2110 force push to overwrite last commit2111 returns the new positions2112 force push to delete last commit2113 returns the new positions2114 rebase on top of target branch2115 returns the new positions2116 merge of target branch2117 returns the new positions2118 changing target branch2119 returns the new positions2120Gitlab::Ci::Parsers::Security::Common2121 #parse!2122 vulnerability_finding_signatures_enabled: true2123 schema validation2124 when the validate flag is set to `false`2125 instantiates the validator with correct params2126 when the report data is not valid according to the schema2127 adds warnings to the report2128 keeps the execution flow as normal2129 when the report data is valid according to the schema2130 does not add errors to the report2131 does not add warnings to the report2132 keeps the execution flow as normal2133 when the validate flag is set to `true`2134 instantiates the validator with correct params2135 when the report data is not valid according to the schema2136 adds errors to the report2137 does not try to create report entities2138 when the report data is valid according to the schema2139 does not add errors to the report2140 does not add warnings to the report2141 keeps the execution flow as normal2142 report parsing2143 parsing finding.name2144 when message is provided2145 sets message from the report as a finding name2146 when message is not provided2147 and name is provided2148 sets name from the report as a name2149 and name is not provided2150 when CVE identifier exists2151 combines identifier with location to create name2152 when CWE identifier exists2153 combines identifier with location to create name2154 when neither CVE nor CWE identifier exist2155 combines identifier with location to create name2156 parsing finding.details2157 when details are provided2158 sets details from the report2159 when details are not provided2160 sets empty hash2161 top-level scanner2162 is the primary scanner2163 returns nil report has no scanner2164 parsing scanners2165 when vendor is not missing in scanner2166 returns scanner with parsed vendor value2167 parsing scan2168 returns scan object for each finding2169 returns nil when scan is not a hash2170 parsing schema version2171 parses the version2172 returns nil when there is no version2173 parsing analyzer2174 associates analyzer with report2175 returns nil when analyzer data is not available2176 parsing flags2177 returns flags object for each finding2178 parsing links2179 returns links object for each finding2180 parsing evidence2181 returns evidence object for each finding2182 setting the uuid2183 sets the UUIDv5 for findings2184 parsing tracking2185 with valid tracking information2186 creates signatures for each algorithm2187 with invalid tracking information2188 ignores invalid algorithm types2189 with valid tracking information2190 creates signatures for each signature algorithm2191 sets the uuid according to the higest priority signature2192 vulnerability_finding_signatures_enabled: false2193 schema validation2194 when the validate flag is set to `false`2195 instantiates the validator with correct params2196 when the report data is not valid according to the schema2197 adds warnings to the report2198 keeps the execution flow as normal2199 when the report data is valid according to the schema2200 does not add errors to the report2201 does not add warnings to the report2202 keeps the execution flow as normal2203 when the validate flag is set to `true`2204 instantiates the validator with correct params2205 when the report data is not valid according to the schema2206 adds errors to the report2207 does not try to create report entities2208 when the report data is valid according to the schema2209 does not add errors to the report2210 does not add warnings to the report2211 keeps the execution flow as normal2212 report parsing2213 parsing finding.name2214 when message is provided2215 sets message from the report as a finding name2216 when message is not provided2217 and name is provided2218 sets name from the report as a name2219 and name is not provided2220 when CVE identifier exists2221 combines identifier with location to create name2222 when CWE identifier exists2223 combines identifier with location to create name2224 when neither CVE nor CWE identifier exist2225 combines identifier with location to create name2226 parsing finding.details2227 when details are provided2228 sets details from the report2229 when details are not provided2230 sets empty hash2231 top-level scanner2232 is the primary scanner2233 returns nil report has no scanner2234 parsing scanners2235 when vendor is not missing in scanner2236 returns scanner with parsed vendor value2237 parsing scan2238 returns scan object for each finding2239 returns nil when scan is not a hash2240 parsing schema version2241 parses the version2242 returns nil when there is no version2243 parsing analyzer2244 associates analyzer with report2245 returns nil when analyzer data is not available2246 parsing flags2247 returns flags object for each finding2248 parsing links2249 returns links object for each finding2250 parsing evidence2251 returns evidence object for each finding2252 setting the uuid2253 sets the UUIDv5 for findings2254 parsing tracking2255 with valid tracking information2256 creates signatures for each algorithm2257 with invalid tracking information2258 ignores invalid algorithm types2259 with valid tracking information2260 creates signatures for each signature algorithm2261 sets the uuid according to the higest priority signature2262Releases::CreateService2263 #execute2264 behaves like a successful release creation2265 creates a new release2266 when the tag does not exist2267 raises an error2268 when ref is provided2269 creates a tag if the tag does not exist2270 behaves like a successful release creation2271 creates a new release2272 and tag_message is provided2273 creates a tag if the tag does not exist2274 behaves like a successful release creation2275 creates a new release2276 there already exists a release on a tag2277 raises an error and does not update the release2278 when a passed-in milestone does not exist for this project2279 raises an error saying the milestone is inexistent2280 #find_or_build_release2281 does not save the built release2282 when existing milestone is passed in2283 creates a release and ties this milestone to it2284 when another release was previously created with that same milestone linked2285 also creates another release tied to that same milestone2286 when multiple existing milestone titles are passed in2287 creates a release and ties it to these milestones2288 when multiple milestone titles are passed in but one of them does not exist2289 raises an error2290 does not create any release2291 no milestone association behavior2292 when no milestones parameter is passed2293 creates a release without a milestone tied to it2294 does not create any new MilestoneRelease object2295 when an empty array is passed as the milestones parameter2296 creates a release without a milestone tied to it2297 when nil is passed as the milestones parameter2298 creates a release without a milestone tied to it2299 Evidence collection2300 historical release2301 does not execute CreateEvidenceWorker2302 does not create an Evidence object2303 is a historical release2304 is not an upcoming release2305 immediate release2306 sets `released_at` to the current dttm2307 queues CreateEvidenceWorker2308 creates Evidence2309 is not a historical release2310 is not an upcoming release2311 creates evidence without pipeline if it does not exist2312 uses the last pipeline for evidence2313 pipeline is still being used for evidence if new pipeline is being created for tag2314 uses the last pipeline for evidence when tag is already created2315 when old evidence_pipeline is passed to service2316 uses the old pipeline for evidence2317 upcoming release2318 does not execute CreateEvidenceWorker2319 does not create an Evidence object2320 is not a historical release2321 is an upcoming release2322Ci::PipelinesFinder2323 #execute2324 when params is empty2325 returns all pipelines2326 when scope is running2327 returns matched pipelines2328 when scope is pending2329 returns matched pipelines2330 when scope is finished2331 returns matched pipelines2332 when scope is branches or tags2333 when scope is branches2334 returns matched pipelines2335 when scope is tags2336 returns matched pipelines2337 when project has child pipelines2338 filters out child pipelines and shows only the parents by default2339 when status is created2340 returns matched pipelines2341 when status is waiting_for_resource2342 returns matched pipelines2343 when status is preparing2344 returns matched pipelines2345 when status is pending2346 returns matched pipelines2347 when status is running2348 returns matched pipelines2349 when status is success2350 returns matched pipelines2351 when status is failed2352 returns matched pipelines2353 when status is canceled2354 returns matched pipelines2355 when status is skipped2356 returns matched pipelines2357 when status is manual2358 returns matched pipelines2359 when status is scheduled2360 returns matched pipelines2361 when ref is specified2362 when ref exists2363 returns matched pipelines2364 when ref does not exist2365 returns empty2366 when username is specified2367 when username exists2368 returns matched pipelines2369 when username does not exist2370 returns empty2371 when yaml_errors is specified2372 when yaml_errors is true2373 returns matched pipelines2374 when yaml_errors is false2375 returns matched pipelines2376 when yaml_errors is invalid2377 returns all pipelines2378 when updated_at filters are specified2379 returns deployments with matched updated_at2380 when iids filter is specified2381 returns matches pipelines2382 does not fitler out child pipelines2383 when sha is specified2384 when sha exists2385 returns matched pipelines2386 when sha does not exist2387 returns empty2388 when the project has limited access to pipelines2389 when the user has access2390 is expected to return pipelines2391 the user is not allowed to read pipelines2392 returns empty2393 when source is specified2394 returns only the matched pipeline2395 ordering2396 order_by: "id", sort: "asc", ordered_pipelines: [:pipeline_1, :pipeline_2, :pipeline_3]2397 returns the pipelines ordered2398 order_by: "id", sort: "desc", ordered_pipelines: [:pipeline_3, :pipeline_2, :pipeline_1]2399 returns the pipelines ordered2400 order_by: "ref", sort: "asc", ordered_pipelines: [:pipeline_2, :pipeline_1, :pipeline_3]2401 returns the pipelines ordered2402 order_by: "ref", sort: "desc", ordered_pipelines: [:pipeline_3, :pipeline_1, :pipeline_2]2403 returns the pipelines ordered2404 order_by: "status", sort: "asc", ordered_pipelines: [:pipeline_2, :pipeline_1, :pipeline_3]2405 returns the pipelines ordered2406 order_by: "status", sort: "desc", ordered_pipelines: [:pipeline_3, :pipeline_1, :pipeline_2]2407 returns the pipelines ordered2408 order_by: "updated_at", sort: "asc", ordered_pipelines: [:pipeline_2, :pipeline_3, :pipeline_1]2409 returns the pipelines ordered2410 order_by: "updated_at", sort: "desc", ordered_pipelines: [:pipeline_1, :pipeline_3, :pipeline_2]2411 returns the pipelines ordered2412 order_by: "user_id", sort: "asc", ordered_pipelines: [:pipeline_1, :pipeline_2, :pipeline_3]2413 returns the pipelines ordered2414 order_by: "user_id", sort: "desc", ordered_pipelines: [:pipeline_3, :pipeline_2, :pipeline_1]2415 returns the pipelines ordered2416 order_by: "invalid", sort: "asc", ordered_pipelines: [:pipeline_1, :pipeline_2, :pipeline_3]2417 returns the pipelines ordered2418 order_by: "id", sort: "err", ordered_pipelines: [:pipeline_3, :pipeline_2, :pipeline_1]2419 returns the pipelines ordered2420PersonalAccessTokensFinder2421 #execute2422 when current_user is defined2423 current_user is allowed to read PATs2424 is expected to contain exactly #<PersonalAccessToken id: 3, user_id: 1417, name: "PAT 3", revoked: false, expires_at: "2022-07-04", ...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, #<PersonalAccessToken id: 6, user_id: 1417, name: "PAT 6", revoked: false, expires_at: "2022-07-04", ...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, #<PersonalAccessToken id: 5, user_id: 1417, name: "PAT 5", revoked: true, expires_at: "2022-07-04", c...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, #<PersonalAccessToken id: 4, user_id: 1417, name: "PAT 4", revoked: false, expires_at: "2022-06-28", ...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, #<PersonalAccessToken id: 8, user_id: 1417, name: "PAT 8", revoked: true, expires_at: "2022-07-04", c...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, and #<PersonalAccessToken id: 7, user_id: 1417, name: "PAT 7", revoked: false, expires_at: "2022-06-28", ...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>2425 current_user is not allowed to read PATs2426 is expected to be empty2427 when user param is not set2428 is expected to contain exactly #<PersonalAccessToken id: 17, user_id: 1425, name: "PAT 17", revoked: false, expires_at: "2022-07-04"...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, #<PersonalAccessToken id: 20, user_id: 1425, name: "PAT 20", revoked: false, expires_at: "2022-07-04"...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, #<PersonalAccessToken id: 19, user_id: 1425, name: "PAT 19", revoked: true, expires_at: "2022-07-04",...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, #<PersonalAccessToken id: 18, user_id: 1425, name: "PAT 18", revoked: false, expires_at: "2022-06-28"...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, #<PersonalAccessToken id: 22, user_id: 1425, name: "PAT 22", revoked: true, expires_at: "2022-07-04",...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, #<PersonalAccessToken id: 21, user_id: 1425, name: "PAT 21", revoked: false, expires_at: "2022-06-28"...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, and #<PersonalAccessToken id: 23, user_id: 1426, name: "PAT 23", revoked: false, expires_at: "2022-07-04"...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>2429 when current_user is not an administrator2430 is expected to be empty2431 without user2432 is expected to contain exactly #<PersonalAccessToken id: 31, user_id: 1433, name: "PAT 31", revoked: false, expires_at: "2022-07-04"...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, #<PersonalAccessToken id: 34, user_id: 1433, name: "PAT 34", revoked: false, expires_at: "2022-07-04"...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, #<PersonalAccessToken id: 33, user_id: 1433, name: "PAT 33", revoked: true, expires_at: "2022-07-04",...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, #<PersonalAccessToken id: 32, user_id: 1433, name: "PAT 32", revoked: false, expires_at: "2022-06-28"...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, #<PersonalAccessToken id: 36, user_id: 1433, name: "PAT 36", revoked: true, expires_at: "2022-07-04",...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, #<PersonalAccessToken id: 35, user_id: 1433, name: "PAT 35", revoked: false, expires_at: "2022-06-28"...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, and #<PersonalAccessToken id: 37, user_id: 1434, name: "PAT 37", revoked: false, expires_at: "2022-07-04"...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>2433 with users2434 is expected to contain exactly #<PersonalAccessToken id: 38, user_id: 1436, name: "PAT 38", revoked: false, expires_at: "2022-07-04"...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, #<PersonalAccessToken id: 41, user_id: 1436, name: "PAT 41", revoked: false, expires_at: "2022-07-04"...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, #<PersonalAccessToken id: 40, user_id: 1436, name: "PAT 40", revoked: true, expires_at: "2022-07-04",...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, #<PersonalAccessToken id: 39, user_id: 1436, name: "PAT 39", revoked: false, expires_at: "2022-06-28"...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, #<PersonalAccessToken id: 43, user_id: 1436, name: "PAT 43", revoked: true, expires_at: "2022-07-04",...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, and #<PersonalAccessToken id: 42, user_id: 1436, name: "PAT 42", revoked: false, expires_at: "2022-06-28"...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>2435 with sort order2436 sorts records as per the specified sort order2437 without impersonation2438 is expected to contain exactly #<PersonalAccessToken id: 58, user_id: 1443, name: "PAT 58", revoked: false, expires_at: "2022-07-04"...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, #<PersonalAccessToken id: 60, user_id: 1443, name: "PAT 60", revoked: true, expires_at: "2022-07-04",...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, #<PersonalAccessToken id: 59, user_id: 1443, name: "PAT 59", revoked: false, expires_at: "2022-06-28"...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, and #<PersonalAccessToken id: 64, user_id: 1444, name: "PAT 64", revoked: false, expires_at: "2022-07-04"...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>2439 with active state2440 is expected to contain exactly #<PersonalAccessToken id: 65, user_id: 1446, name: "PAT 65", revoked: false, expires_at: "2022-07-04"...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false> and #<PersonalAccessToken id: 71, user_id: 1447, name: "PAT 71", revoked: false, expires_at: "2022-07-04"...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>2441 with inactive state2442 is expected to contain exactly #<PersonalAccessToken id: 74, user_id: 1449, name: "PAT 74", revoked: true, expires_at: "2022-07-04",...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false> and #<PersonalAccessToken id: 73, user_id: 1449, name: "PAT 73", revoked: false, expires_at: "2022-06-28"...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>2443 with impersonation2444 is expected to contain exactly #<PersonalAccessToken id: 82, user_id: 1452, name: "PAT 82", revoked: false, expires_at: "2022-07-04"...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, #<PersonalAccessToken id: 84, user_id: 1452, name: "PAT 84", revoked: true, expires_at: "2022-07-04",...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, and #<PersonalAccessToken id: 83, user_id: 1452, name: "PAT 83", revoked: false, expires_at: "2022-06-28"...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>2445 with active state2446 is expected to contain exactly #<PersonalAccessToken id: 89, user_id: 1455, name: "PAT 89", revoked: false, expires_at: "2022-07-04"...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>2447 with inactive state2448 is expected to contain exactly #<PersonalAccessToken id: 98, user_id: 1458, name: "PAT 98", revoked: true, expires_at: "2022-07-04",...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false> and #<PersonalAccessToken id: 97, user_id: 1458, name: "PAT 97", revoked: false, expires_at: "2022-06-28"...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>2449 with active state2450 is expected to contain exactly #<PersonalAccessToken id: 100, user_id: 1461, name: "PAT 100", revoked: false, expires_at: "2022-07-0...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, #<PersonalAccessToken id: 103, user_id: 1461, name: "PAT 103", revoked: false, expires_at: "2022-07-0...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, and #<PersonalAccessToken id: 106, user_id: 1462, name: "PAT 106", revoked: false, expires_at: "2022-07-0...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>2451 with inactive state2452 is expected to contain exactly #<PersonalAccessToken id: 108, user_id: 1464, name: "PAT 108", revoked: false, expires_at: "2022-06-2...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, #<PersonalAccessToken id: 109, user_id: 1464, name: "PAT 109", revoked: true, expires_at: "2022-07-04...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, #<PersonalAccessToken id: 111, user_id: 1464, name: "PAT 111", revoked: false, expires_at: "2022-06-2...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, and #<PersonalAccessToken id: 112, user_id: 1464, name: "PAT 112", revoked: true, expires_at: "2022-07-04...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>2453 with id2454 is expected to eq #<PersonalAccessToken id: 114, user_id: 1467, name: "PAT 114", revoked: false, expires_at: "2022-07-0...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>2455 with impersonation2456 is expected to be nil2457 with token2458 is expected to eq #<PersonalAccessToken id: 128, user_id: 1473, name: "PAT 128", revoked: false, expires_at: "2022-07-0...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>2459 with impersonation2460 is expected to be nil2461 with user2462 is expected to contain exactly #<PersonalAccessToken id: 142, user_id: 1479, name: "PAT 142", revoked: false, expires_at: "2022-07-0...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, #<PersonalAccessToken id: 145, user_id: 1479, name: "PAT 145", revoked: false, expires_at: "2022-07-0...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, #<PersonalAccessToken id: 144, user_id: 1479, name: "PAT 144", revoked: true, expires_at: "2022-07-04...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, #<PersonalAccessToken id: 143, user_id: 1479, name: "PAT 143", revoked: false, expires_at: "2022-06-2...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, #<PersonalAccessToken id: 147, user_id: 1479, name: "PAT 147", revoked: true, expires_at: "2022-07-04...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, and #<PersonalAccessToken id: 146, user_id: 1479, name: "PAT 146", revoked: false, expires_at: "2022-06-2...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>2463 filtering human tokens2464 is expected not to include #<PersonalAccessToken id: 161, user_id: 1484, name: "PAT 161", revoked: false, expires_at: "2022-07-0...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>2465 without impersonation2466 is expected to contain exactly #<PersonalAccessToken id: 168, user_id: 1487, name: "PAT 168", revoked: false, expires_at: "2022-07-0...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, #<PersonalAccessToken id: 170, user_id: 1487, name: "PAT 170", revoked: true, expires_at: "2022-07-04...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, and #<PersonalAccessToken id: 169, user_id: 1487, name: "PAT 169", revoked: false, expires_at: "2022-06-2...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>2467 with active state2468 is expected to contain exactly #<PersonalAccessToken id: 181, user_id: 1491, name: "PAT 181", revoked: false, expires_at: "2022-07-0...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>2469 with inactive state2470 is expected to contain exactly #<PersonalAccessToken id: 196, user_id: 1495, name: "PAT 196", revoked: true, expires_at: "2022-07-04...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false> and #<PersonalAccessToken id: 195, user_id: 1495, name: "PAT 195", revoked: false, expires_at: "2022-06-2...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>2471 with impersonation2472 is expected to contain exactly #<PersonalAccessToken id: 210, user_id: 1499, name: "PAT 210", revoked: false, expires_at: "2022-07-0...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, #<PersonalAccessToken id: 212, user_id: 1499, name: "PAT 212", revoked: true, expires_at: "2022-07-04...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, and #<PersonalAccessToken id: 211, user_id: 1499, name: "PAT 211", revoked: false, expires_at: "2022-06-2...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>2473 with active state2474 is expected to contain exactly #<PersonalAccessToken id: 223, user_id: 1503, name: "PAT 223", revoked: false, expires_at: "2022-07-0...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>2475 with inactive state2476 is expected to contain exactly #<PersonalAccessToken id: 238, user_id: 1507, name: "PAT 238", revoked: true, expires_at: "2022-07-04...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false> and #<PersonalAccessToken id: 237, user_id: 1507, name: "PAT 237", revoked: false, expires_at: "2022-06-2...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>2477 with active state2478 is expected to contain exactly #<PersonalAccessToken id: 246, user_id: 1511, name: "PAT 246", revoked: false, expires_at: "2022-07-0...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false> and #<PersonalAccessToken id: 249, user_id: 1511, name: "PAT 249", revoked: false, expires_at: "2022-07-0...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>2479 with inactive state2480 is expected to contain exactly #<PersonalAccessToken id: 260, user_id: 1515, name: "PAT 260", revoked: false, expires_at: "2022-06-2...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, #<PersonalAccessToken id: 261, user_id: 1515, name: "PAT 261", revoked: true, expires_at: "2022-07-04...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, #<PersonalAccessToken id: 263, user_id: 1515, name: "PAT 263", revoked: false, expires_at: "2022-06-2...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, and #<PersonalAccessToken id: 264, user_id: 1515, name: "PAT 264", revoked: true, expires_at: "2022-07-04...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>2481 with id2482 is expected to eq #<PersonalAccessToken id: 272, user_id: 1519, name: "PAT 272", revoked: false, expires_at: "2022-07-0...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>2483 with impersonation2484 is expected to be nil2485 with token2486 is expected to eq #<PersonalAccessToken id: 298, user_id: 1527, name: "PAT 298", revoked: false, expires_at: "2022-07-0...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>2487 with impersonation2488 is expected to be nil2489Banzai::ReferenceParser::SnippetParser2490 #nodes_visible_to_user2491 when a project is public and the snippets feature is enabled for everyone2492 avoids N+1 cached queries2493 creates a reference for guest for a public snippet2494 creates a reference for a regular user for a public snippet2495 creates a reference for a regular user for an internal snippet2496 does not create a reference for an external user for an internal snippet2497 creates a reference for a project member for a private snippet2498 does not create a reference for a regular user for a private snippet2499 when a project is public and the snippets feature is enabled for project team members2500 creates a reference for a project member for a public snippet2501 does not create a reference for guest for a public snippet2502 does not create a reference for a regular user for a public snippet2503 creates a reference for a project member for an internal snippet2504 does not create a reference for a regular user for an internal snippet2505 creates a reference for a project member for a private snippet2506 does not create a reference for a regular user for a private snippet2507 when a project is internal and the snippets feature is enabled for everyone2508 does not create a reference for guest for a public snippet2509 does not create a reference for an external user for a public snippet2510 creates a reference for a regular user for a public snippet2511 creates a reference for a regular user for an internal snippet2512 does not create a reference for an external user for an internal snippet2513 creates a reference for a project member for a private snippet2514 does not create a reference for a regular user for a private snippet2515 when a project is internal and the snippets feature is enabled for project team members2516 creates a reference for a project member for a public snippet2517 does not create a reference for guest for a public snippet2518 does not create reference for a regular user for a public snippet2519 creates a reference for a project member for an internal snippet2520 does not create a reference for a regular user for an internal snippet2521 creates a reference for a project member for a private snippet2522 does not create reference for a regular user for a private snippet2523 when a project is private and the snippets feature is enabled for project team members2524 creates a reference for a project member for a public snippet2525 does not create a reference for guest for a public snippet2526 does not create a reference for a regular user for a public snippet2527 creates a reference for a project member for an internal snippet2528 does not create a reference for a regular user for an internal snippet2529 creates a reference for a project member for a private snippet2530 does not create a reference for a regular user for a private snippet2531 #referenced_by2532 when the link has a data-snippet attribute2533 using an existing snippet ID2534 returns an Array of snippets2535 using a non-existing snippet ID2536 returns an empty Array2537Packages::PackageFileUploader2538 package_file2539 behaves like builds correct paths2540 #store_dir2541 behaves like matches the method pattern2542 is expected to match /^\h{2}\/\h{2}\/\h{64}\/packages\/\d+\/files\/\d+$/2543 #cache_dir2544 behaves like matches the method pattern2545 is expected to match /\/packages\/tmp\/cache/2546 #work_dir2547 behaves like matches the method pattern2548 is expected to match /\/packages\/tmp\/work/2549 #upload_path2550 behaves like matches the method pattern2551 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)2552 #relative_path2553 is relative (PENDING: Path not set, skipping.)2554 .absolute_path2555 behaves like matches the method pattern2556 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)2557 .base_dir2558 behaves like matches the method pattern2559 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)2560 path traversal exploits2561 throws an exception2562 object store is remote2563 behaves like builds correct paths2564 #store_dir2565 behaves like matches the method pattern2566 is expected to match /^\h{2}\/\h{2}\/\h{64}\/packages\/\d+\/files\/\d+$/2567 #cache_dir2568 behaves like matches the method pattern2569 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)2570 #work_dir2571 behaves like matches the method pattern2572 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)2573 #upload_path2574 behaves like matches the method pattern2575 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)2576 #relative_path2577 is relative (PENDING: Path not set, skipping.)2578 .absolute_path2579 behaves like matches the method pattern2580 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)2581 .base_dir2582 behaves like matches the method pattern2583 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)2584 path traversal exploits2585 throws an exception2586 remote file2587 with object storage enabled2588 can store file remotely2589 debian_package_file2590 behaves like builds correct paths2591 #store_dir2592 behaves like matches the method pattern2593 is expected to match /^\h{2}\/\h{2}\/\h{64}\/packages\/debian\/files\/\d+$/2594 #cache_dir2595 behaves like matches the method pattern2596 is expected to match /\/packages\/tmp\/cache/2597 #work_dir2598 behaves like matches the method pattern2599 is expected to match /\/packages\/tmp\/work/2600 #upload_path2601 behaves like matches the method pattern2602 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)2603 #relative_path2604 is relative (PENDING: Path not set, skipping.)2605 .absolute_path2606 behaves like matches the method pattern2607 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)2608 .base_dir2609 behaves like matches the method pattern2610 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)2611 path traversal exploits2612 throws an exception2613 object store is remote2614 behaves like builds correct paths2615 #store_dir2616 behaves like matches the method pattern2617 is expected to match /^\h{2}\/\h{2}\/\h{64}\/packages\/debian\/files\/\d+$/2618 #cache_dir2619 behaves like matches the method pattern2620 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)2621 #work_dir2622 behaves like matches the method pattern2623 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)2624 #upload_path2625 behaves like matches the method pattern2626 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)2627 #relative_path2628 is relative (PENDING: Path not set, skipping.)2629 .absolute_path2630 behaves like matches the method pattern2631 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)2632 .base_dir2633 behaves like matches the method pattern2634 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)2635 path traversal exploits2636 throws an exception2637 remote file2638 with object storage enabled2639 can store file remotely2640Deployments::UpdateEnvironmentService2641 #execute2642 invalidates the environment etag cache2643 creates ref2644 updates merge request metrics2645 returns the deployment2646 returns the deployment when could not save the environment2647 returns the deployment when environment is stopped2648 when start action is defined2649 and environment is stopped2650 makes environment available2651 when external URL is specified and the tier is unset2652 when external URL is valid2653 succeeds to update the tier automatically2654 when external URL is invalid2655 fails to update the tier due to validation error2656 tracks an exception2657 when variables are used2658 does not create a new environment2659 updates external url2660 when auto_stop_in are used2661 renews auto stop at2662 when deployment tier is specified2663 when tier has already been set2664 overwrites the guessed tier by the specified deployment tier2665 when tier has not been set2666 sets the specified deployment tier2667 when deployment was created by an external CD system2668 guesses the deployment tier2669 when deployment tier is not specified2670 guesses the deployment tier2671 #expanded_environment_url2672 when yaml environment uses $CI_COMMIT_REF_NAME2673 is expected to eq "http://review/master"2674 when yaml environment uses $CI_ENVIRONMENT_SLUG2675 is expected to eq "http://review/prod-slug"2676 when yaml environment uses yaml_variables containing symbol keys2677 is expected to eq "http://review/host"2678 when job variables are generated during runtime2679 expands the environment URL from the dynamic variable2680 when environment url uses a nested variable2681 is expected to eq "http://appname-master.example.com"2682 when the FF ci_expand_environment_name_and_url is disabled2683 is expected to eq "http://${STACK_NAME}.example.com"2684 when yaml environment does not have url2685 returns the external_url from persisted environment2686 merge request metrics2687 while updating the 'first_deployed_to_production_at' time2688 for merge requests merged before the current deploy2689 sets the time if the deploy's environment is 'production'2690 does not raise errors if the merge request does not have a metrics record2691 when job deploys to staging2692 doesn't set the time if the deploy's environment is not 'production'2693 for merge requests merged before the previous deploy2694 if the 'first_deployed_to_production_at' time is already set2695 does not overwrite the older 'first_deployed_to_production_at' time2696 if the 'first_deployed_to_production_at' time is not already set2697 does not overwrite the older 'first_deployed_to_production_at' time2698Gitlab::Utils2699 .check_path_traversal!2700 detects path traversal in string without any separators2701 detects path traversal at the start of the string2702 detects path traversal at the start of the string, even to just the subdirectory2703 detects path traversal in the middle of the string2704 detects path traversal at the end of the string when slash-terminates2705 detects path traversal at the end of the string2706 does nothing for a safe string2707 logs potential path traversal attempts2708 logs does nothing for a safe string2709 does nothing for a non-string2710 .check_allowed_absolute_path_and_path_traversal!2711 detects path traversal in string without any separators2712 detects path traversal at the start of the string2713 detects path traversal at the start of the string, even to just the subdirectory2714 detects path traversal in the middle of the string2715 detects path traversal at the end of the string when slash-terminates2716 detects path traversal at the end of the string2717 does not return errors for a safe string2718 raises error for a non-string2719 raises an exception if an absolute path is not allowed2720 does nothing for an allowed absolute path2721 .allowlisted?2722 returns true if path is allowed2723 returns false if path is not allowed2724 .check_allowed_absolute_path!2725 raises an exception if an absolute path is not allowed2726 does nothing for an allowed absolute path2727 .decode_path2728 returns path unencoded for singled-encoded paths2729 returns path when it is unencoded2730 raises an exception when the path is multiple-encoded2731 raises an exception when the path is multiple-encoded2732 .slugify2733 slugifies TEST to test2734 slugifies project_with_underscores to project-with-underscores2735 slugifies namespace/project to namespace-project2736 slugifies aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa to aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa2737 slugifies test_trailing_ to test-trailing2738 .ms_to_round_sec2739 original: 1999.8999, expected: 1.99992740 returns rounded seconds2741 original: 12384, expected: 12.3842742 returns rounded seconds2743 original: 333, expected: 0.3332744 returns rounded seconds2745 original: 1333.33333333, expected: 1.3333332746 returns rounded seconds2747 .to_exclusive_sentence2748 calls #to_sentence on the array2749 joins arrays with two elements correctly2750 joins arrays with more than two elements correctly2751 localizes the connector words2752 .nlbr2753 replaces new lines with <br>2754 .remove_line_breaks2755 original: "foo\nbar\nbaz", expected: "foobarbaz"2756 replace line breaks with an empty string2757 original: "foo\r\nbar\r\nbaz", expected: "foobarbaz"2758 replace line breaks with an empty string2759 original: "foobar", expected: "foobar"2760 replace line breaks with an empty string2761 .to_boolean2762 accepts booleans2763 converts a valid value to a boolean2764 converts an invalid value to nil2765 accepts a default value, and does not return it when a valid value is given2766 accepts a default value, and returns it when an invalid value is given2767 .boolean_to_yes_no2768 converts booleans to Yes or No2769 .which2770 finds the full path to an executable binary in order of appearance2771 .ensure_array_from_string2772 returns the same array if given one2773 turns comma-separated strings into arrays2774 .bytes_to_megabytes2775 converts bytes to megabytes2776 .append_path2777 host: "http://test/", path: "/foo/bar", result: "http://test/foo/bar"2778 makes sure there is only one slash as path separator2779 host: "http://test/", path: "//foo/bar", result: "http://test/foo/bar"2780 makes sure there is only one slash as path separator2781 host: "http://test//", path: "/foo/bar", result: "http://test/foo/bar"2782 makes sure there is only one slash as path separator2783 host: "http://test", path: "foo/bar", result: "http://test/foo/bar"2784 makes sure there is only one slash as path separator2785 host: "http://test//", path: "", result: "http://test/"2786 makes sure there is only one slash as path separator2787 host: "http://test//", path: nil, result: "http://test/"2788 makes sure there is only one slash as path separator2789 host: "", path: "/foo/bar", result: "/foo/bar"2790 makes sure there is only one slash as path separator2791 host: nil, path: "/foo/bar", result: "/foo/bar"2792 makes sure there is only one slash as path separator2793 .ensure_utf8_size2794 string is has less bytes than expected2795 backfills string with null characters2796 string size is exactly the one that is expected2797 returns original value2798 when string contains a few multi-byte UTF characters2799 backfills string with null characters2800 when string has multiple multi-byte UTF chars exceeding 32 bytes2801 truncates string to 32 characters and backfills it if needed2802 .deep_indifferent_access2803 allows to access hash keys with symbols2804 allows to access array keys with symbols2805 .deep_symbolized_access2806 allows to access hash keys with symbols2807 allows to access array keys with symbols2808 .try_megabytes_to_bytes2809 when the size can be converted to megabytes2810 returns the size in megabytes2811 when the size can not be converted to megabytes2812 returns the input size2813 .string_to_ip_object2814 returns nil when string is nil2815 returns nil when string is invalid IP2816 returns IP object when string is valid IP2817 .safe_downcase!2818 str: "test", result: "test"2819 downcases the string2820 str: "Test", result: "test"2821 downcases the string2822 str: "test", result: "test"2823 downcases the string2824 str: "Test", result: "test"2825 downcases the string2826 .parse_url2827 returns Addressable::URI object2828 returns nil when URI cannot be parsed2829 returns nil with invalid parameter2830 .add_url_parameters2831 url: nil, params: nil, expected_url: ""2832 is expected to eq ""2833 url: nil, params: {:b=>3, :a=>2}, expected_url: "?a=2&b=3"2834 is expected to eq "?a=2&b=3"2835 url: "https://gitlab.com", params: nil, expected_url: "https://gitlab.com"2836 is expected to eq "https://gitlab.com"2837 url: "https://gitlab.com", params: {:b=>3, :a=>2}, expected_url: "https://gitlab.com?a=2&b=3"2838 is expected to eq "https://gitlab.com?a=2&b=3"2839 url: "https://gitlab.com?a=1#foo", params: {:b=>3, :a=>2}, expected_url: "https://gitlab.com?a=2&b=3#foo"2840 is expected to eq "https://gitlab.com?a=2&b=3#foo"2841 url: "https://gitlab.com?a=1#foo", params: [[:b, 3], [:a, 2]], expected_url: "https://gitlab.com?a=2&b=3#foo"2842 is expected to eq "https://gitlab.com?a=2&b=3#foo"2843 .removes_sensitive_data_from_url2844 returns string object2845 returns nil when URI cannot be parsed2846 returns nil with invalid parameter2847 returns string with filtered access_token param2848 returns string with filtered access_token param but other params preserved2849 multiple_key_invert2850 invert keys with array values2851 .stable_sort_by2852 when items have the same priority2853 does not change order in cases of ties2854 when items have different priorities2855 sorts items like the regular sort_by2856 .valid_brackets?2857 input: "no brackets", allow_nested: true, valid: true2858 is expected to eq true2859 input: "no brackets", allow_nested: false, valid: true2860 is expected to eq true2861 input: "user[avatar]", allow_nested: true, valid: true2862 is expected to eq true2863 input: "user[avatar]", allow_nested: false, valid: true2864 is expected to eq true2865 input: "user[avatar][friends]", allow_nested: true, valid: true2866 is expected to eq true2867 input: "user[avatar][friends]", allow_nested: false, valid: true2868 is expected to eq true2869 input: "user[avatar[image[url]]]", allow_nested: true, valid: true2870 is expected to eq true2871 input: "user[avatar[image[url]]]", allow_nested: false, valid: false2872 is expected to eq false2873 input: "user[avatar[]friends]", allow_nested: true, valid: true2874 is expected to eq true2875 input: "user[avatar[]friends]", allow_nested: false, valid: false2876 is expected to eq false2877 input: "user[avatar]]", allow_nested: true, valid: false2878 is expected to eq false2879 input: "user[avatar]]", allow_nested: false, valid: false2880 is expected to eq false2881 input: "user][avatar]]", allow_nested: true, valid: false2882 is expected to eq false2883 input: "user][avatar]]", allow_nested: false, valid: false2884 is expected to eq false2885 input: "user[avatar", allow_nested: true, valid: false2886 is expected to eq false2887 input: "user[avatar", allow_nested: false, valid: false2888 is expected to eq false2889Mutations::MergeRequests::Update2890 is expected to require graphql authorizations :update_merge_request2891 #resolve2892 behaves like permission level for merge request mutation is correctly verified2893 when the user is not a project member2894 behaves like when the user does not have access to the resource2895 raises an error2896 even if assigned to the merge request2897 does not modify merge request2898 even if reviewer of the merge request2899 raises an error2900 even if author of the merge request2901 raises an error2902 when the user is a project member2903 with guest role2904 behaves like when the user does not have access to the resource2905 raises an error2906 even if assigned to the merge request2907 does not modify merge request2908 even if reviewer of the merge request2909 raises an error2910 even if author of the merge request2911 raises an error2912 with reporter role2913 behaves like when the user does not have access to the resource2914 raises an error2915 even if assigned to the merge request2916 does not modify merge request2917 even if reviewer of the merge request2918 raises an error2919 even if author of the merge request2920 raises an error2921 when the user can update the merge request2922 applies all attributes2923 the merge request is invalid2924 returns error information, and changes were not applied2925 our change is invalid2926 returns error information, and changes were not applied2927 when passing subset of attributes2928 only changes the mentioned attributes2929 when closing the MR2930 closes the MR2931 when re-opening the MR2932 closes the MR2933Namespace::RootStorageStatisticsPolicy2934 #rules2935 when the namespace is a personal namespace2936 when the users is anonymous2937 is expected to be falsey2938 when the user is not the owner2939 is expected to be falsey2940 when the user is the owner2941 is expected to be truthy2942 when the namespace is a group2943 when the users is anonymous2944 is expected to be falsey2945 user_type: :non_member, outcome: false2946 is expected to eq false2947 when the user is external2948 is expected to eq false2949 user_type: :guest, outcome: false2950 is expected to eq false2951 when the user is external2952 is expected to eq false2953 user_type: :reporter, outcome: false2954 is expected to eq false2955 when the user is external2956 is expected to eq false2957 user_type: :developer, outcome: false2958 is expected to eq false2959 when the user is external2960 is expected to eq false2961 user_type: :maintainer, outcome: false2962 is expected to eq false2963 when the user is external2964 is expected to eq false2965 user_type: :owner, outcome: true2966 is expected to eq true2967 when the user is external2968 is expected to eq true2969 when the users is anonymous2970 is expected to be falsey2971 user_type: :non_member, outcome: false2972 is expected to eq false2973 when the user is external2974 is expected to eq false2975 user_type: :guest, outcome: false2976 is expected to eq false2977 when the user is external2978 is expected to eq false2979 user_type: :reporter, outcome: false2980 is expected to eq false2981 when the user is external2982 is expected to eq false2983 user_type: :developer, outcome: false2984 is expected to eq false2985 when the user is external2986 is expected to eq false2987 user_type: :maintainer, outcome: false2988 is expected to eq false2989 when the user is external2990 is expected to eq false2991 user_type: :owner, outcome: true2992 is expected to eq true2993 when the user is external2994 is expected to eq true2995 when the users is anonymous2996 is expected to be falsey2997 user_type: :non_member, outcome: false2998 is expected to eq false2999 when the user is external3000 is expected to eq false3001 user_type: :guest, outcome: false3002 is expected to eq false3003 when the user is external3004 is expected to eq false3005 user_type: :reporter, outcome: false3006 is expected to eq false3007 when the user is external3008 is expected to eq false3009 user_type: :developer, outcome: false3010 is expected to eq false3011 when the user is external3012 is expected to eq false3013 user_type: :maintainer, outcome: false3014 is expected to eq false3015 when the user is external3016 is expected to eq false3017 user_type: :owner, outcome: true3018 is expected to eq true3019 when the user is external3020 is expected to eq true3021Database::BatchedBackgroundMigrationWorker3022 behaves like it runs batched background migration jobs3023 defining the job attributes3024 defines the data_consistency as always3025 defines the feature_category as database3026 defines the idempotency as true3027 .tracking_database3028 does not raise an error3029 overrides the method to return the tracking database3030 .lease_key3031 does not raise an error3032 returns the lease key3033 .enabled?3034 returns true when execute_batched_migrations_on_schedule feature flag is enabled3035 returns false when execute_batched_migrations_on_schedule feature flag is disabled3036 #perform3037 when the base model does not exist3038 does nothing (PENDING: because the base model for main exists)3039 logs a message indicating execution is skipped (PENDING: because the base model for main exists)3040 when the base model does exist3041 when the feature flag is disabled3042 does nothing3043 when the feature flag is enabled3044 when database config is shared3045 does nothing3046 when no active migrations exist3047 does nothing3048 when active migrations exist3049 always cleans up the exclusive lease3050 receives the correct connection3051 when the reloaded migration is no longer active3052 does not run the migration3053 when the interval has not elapsed3054 does not run the migration3055 when the reloaded migration is still active and the interval has elapsed3056 runs the migration3057 when the calculated timeout is less than the minimum allowed3058 sets the lease timeout to the minimum value3059 executing an entire migration3060 marks the migration record as finished3061 creates job records for each processed batch3062 marks all job records as succeeded3063 updates matching records in the range3064 does not update non-matching records in the range3065Environments::StopService3066 #execute3067 with a deployment3068 plays the stop action3069 without stop action3070 stops the environment3071 force option3072 does not play the stop action when forced3073 when an environment has already been stopped3074 does not play the stop action3075 without a deployment3076 stops the environment3077 when the actor is a reporter3078 does not stop the environment3079 #execute_for_branch3080 when environment with review app exists3081 when user has permission to stop environment3082 when environment is associated with removed branch3083 stops environment3084 when environment is associated with different branch3085 does not stop environment3086 when specified branch does not exist3087 does not stop environment3088 when no branch not specified3089 does not stop environment3090 when environment is not stopped3091 does not stop environment3092 when user does not have permission to stop environment3093 when user has no access to manage deployments3094 does not stop environment3095 when branch for stop action is protected3096 does not stop environment3097 when there is no environment associated with review app3098 when user has permission to stop environments3099 does not stop environment3100 when environment does not exist3101 does not raise error3102 #execute_for_merge_request_pipeline3103 has active environment at first3104 when user is a developer3105 stops the active environment3106 when pipeline is a branch pipeline for merge request3107 does not stop the active environment3108 with environment related jobs3109 does not stop environments that was not started by the merge request3110 when user is a reporter3111 does not stop the active environment3112 when pipeline is not associated with environments3113 does not raise exception3114 when pipeline is not a pipeline for merge request3115 does not stop the active environment3116AlertManagement::CreateAlertIssueService3117 #execute3118 when a user is allowed to create an issue3119 checks permissions3120 with alert severity3121 alert_severity: "critical", incident_severity: "critical"3122 sets the correct severity level3123 alert_severity: "high", incident_severity: "high"3124 sets the correct severity level3125 alert_severity: "medium", incident_severity: "medium"3126 sets the correct severity level3127 alert_severity: "low", incident_severity: "low"3128 sets the correct severity level3129 alert_severity: "info", incident_severity: "unknown"3130 sets the correct severity level3131 alert_severity: "unknown", incident_severity: "unknown"3132 sets the correct severity level3133 when the alert is prometheus alert3134 behaves like creating an alert issue3135 creates an issue3136 returns a created issue3137 has a successful status3138 sets alert.issue_id in the same ActiveRecord query execution3139 creates a system note3140 behaves like setting an issue attributes3141 sets issue author to the current user3142 sets the issue title3143 sets the issue description3144 when the alert is generic3145 behaves like creating an alert issue3146 creates an issue3147 returns a created issue3148 has a successful status3149 sets alert.issue_id in the same ActiveRecord query execution3150 creates a system note3151 behaves like setting an issue attributes3152 sets issue author to the current user3153 sets the issue title3154 sets the issue description3155 when alert title matches the default title exactly3156 updates issue title with the IID3157 when the alert title contains the default title3158 does not change issue title3159 when issue cannot be created3160 has an unsuccessful status3161 when alert cannot be updated3162 responds with error3163 when alert already has an attached issue3164 does not create yet another issue3165 responds with error3166 when a user is not allowed to create an issue3167 checks permissions3168 responds with error3169Every integration3170 asana3171 secret fields3172 uses type: 'password' for all secret fields3173 defines non-empty titles and help texts for all secret fields3174 assembla3175 secret fields3176 uses type: 'password' for all secret fields3177 defines non-empty titles and help texts for all secret fields3178 bamboo3179 secret fields3180 uses type: 'password' for all secret fields3181 defines non-empty titles and help texts for all secret fields3182 bugzilla3183 secret fields3184 uses type: 'password' for all secret fields3185 defines non-empty titles and help texts for all secret fields3186 buildkite3187 secret fields3188 uses type: 'password' for all secret fields3189 defines non-empty titles and help texts for all secret fields3190 campfire3191 secret fields3192 uses type: 'password' for all secret fields3193 defines non-empty titles and help texts for all secret fields3194 confluence3195 secret fields3196 uses type: 'password' for all secret fields3197 defines non-empty titles and help texts for all secret fields3198 custom_issue_tracker3199 secret fields3200 uses type: 'password' for all secret fields3201 defines non-empty titles and help texts for all secret fields3202 datadog3203 secret fields3204 uses type: 'password' for all secret fields3205 defines non-empty titles and help texts for all secret fields3206 discord3207 secret fields3208 uses type: 'password' for all secret fields3209 defines non-empty titles and help texts for all secret fields3210 drone_ci3211 secret fields3212 uses type: 'password' for all secret fields3213 defines non-empty titles and help texts for all secret fields3214 emails_on_push3215 secret fields3216 uses type: 'password' for all secret fields3217 defines non-empty titles and help texts for all secret fields3218 ewm3219 secret fields3220 uses type: 'password' for all secret fields3221 defines non-empty titles and help texts for all secret fields3222 external_wiki3223 secret fields3224 uses type: 'password' for all secret fields3225 defines non-empty titles and help texts for all secret fields3226 flowdock3227 secret fields3228 uses type: 'password' for all secret fields3229 defines non-empty titles and help texts for all secret fields3230 github3231 secret fields3232 uses type: 'password' for all secret fields3233 defines non-empty titles and help texts for all secret fields3234 gitlab_slack_application3235 secret fields3236 uses type: 'password' for all secret fields3237 defines non-empty titles and help texts for all secret fields3238 hangouts_chat3239 secret fields3240 uses type: 'password' for all secret fields3241 defines non-empty titles and help texts for all secret fields3242 harbor3243 secret fields3244 uses type: 'password' for all secret fields3245 defines non-empty titles and help texts for all secret fields3246 irker3247 secret fields3248 uses type: 'password' for all secret fields3249 defines non-empty titles and help texts for all secret fields3250 jenkins3251 secret fields3252 uses type: 'password' for all secret fields3253 defines non-empty titles and help texts for all secret fields3254 jira3255 secret fields3256 uses type: 'password' for all secret fields3257 defines non-empty titles and help texts for all secret fields3258 mattermost3259 secret fields3260 uses type: 'password' for all secret fields3261 defines non-empty titles and help texts for all secret fields3262 mattermost_slash_commands3263 secret fields3264 uses type: 'password' for all secret fields3265 defines non-empty titles and help texts for all secret fields3266 microsoft_teams3267 secret fields3268 uses type: 'password' for all secret fields3269 defines non-empty titles and help texts for all secret fields3270 mock_ci3271 secret fields3272 uses type: 'password' for all secret fields3273 defines non-empty titles and help texts for all secret fields3274 mock_monitoring3275 secret fields3276 uses type: 'password' for all secret fields3277 defines non-empty titles and help texts for all secret fields3278 packagist3279 secret fields3280 uses type: 'password' for all secret fields3281 defines non-empty titles and help texts for all secret fields3282 pipelines_email3283 secret fields3284 uses type: 'password' for all secret fields3285 defines non-empty titles and help texts for all secret fields3286 pivotaltracker3287 secret fields3288 uses type: 'password' for all secret fields3289 defines non-empty titles and help texts for all secret fields3290 prometheus3291 secret fields3292 uses type: 'password' for all secret fields3293 defines non-empty titles and help texts for all secret fields3294 pushover3295 secret fields3296 uses type: 'password' for all secret fields3297 defines non-empty titles and help texts for all secret fields3298 redmine3299 secret fields3300 uses type: 'password' for all secret fields3301 defines non-empty titles and help texts for all secret fields3302 shimo3303 secret fields3304 uses type: 'password' for all secret fields3305 defines non-empty titles and help texts for all secret fields3306 slack3307 secret fields3308 uses type: 'password' for all secret fields3309 defines non-empty titles and help texts for all secret fields3310 slack_slash_commands3311 secret fields3312 uses type: 'password' for all secret fields3313 defines non-empty titles and help texts for all secret fields3314 teamcity3315 secret fields3316 uses type: 'password' for all secret fields3317 defines non-empty titles and help texts for all secret fields3318 unify_circuit3319 secret fields3320 uses type: 'password' for all secret fields3321 defines non-empty titles and help texts for all secret fields3322 webex_teams3323 secret fields3324 uses type: 'password' for all secret fields3325 defines non-empty titles and help texts for all secret fields3326 youtrack3327 secret fields3328 uses type: 'password' for all secret fields3329 defines non-empty titles and help texts for all secret fields3330 zentao3331 secret fields3332 uses type: 'password' for all secret fields3333 defines non-empty titles and help texts for all secret fields3334Projects::AutocompleteService3335 #issues3336 confidential issues3337 does not list project confidential issues for guests3338 does not list project confidential issues for non project members3339 does not list project confidential issues for project members with guest role3340 lists project confidential issues for author3341 lists project confidential issues for assignee3342 lists project confidential issues for project members3343 when admin mode is enabled3344 lists all project issues for admin3345 when admin mode is disabled3346 does not list project confidential issues for admin3347 #milestones3348 includes project and group milestones and sorts them correctly3349 does not include closed milestones3350 does not include milestones from other projects in the group3351 with nested groups3352 includes project milestones and all acestors milestones3353 #contacts3354 returns contact data correctly3355 #labels_as_hash3356 returns labels from project and ancestor groups3357 some labels are already assigned3358 marks already assigned as set3359Gitlab::Database::PartitioningMigrationHelpers::TableManagementHelpers3360 #partition_table_by_date3361 when the table is not allowed3362 raises an error3363 when run inside a transaction block3364 raises an error3365 when the the max_date is less than the min_date3366 raises an error3367 when the max_date is equal to the min_date3368 raises an error3369 when the given table does not have a primary key3370 raises an error3371 when an invalid partition column is given3372 raises an error3373 constructing the partitioned table3374 creates a table partitioned by the proper column3375 requires the migration helper to be run in DDL mode3376 changes the primary key datatype to bigint3377 removes the default from the primary key column3378 creates the partitioned table with the same non-key columns3379 creates a partition spanning over each month in the range given3380 with a non-integer primary key datatype3381 does not change the primary key datatype3382 when min_date is not given3383 with records present already3384 creates a partition spanning over each month from the first record3385 without data3386 creates the catchall partition plus two actual partition3387 when max_date is not given3388 creates partitions including the next month from today3389 without min_date, max_date3390 creates partitions for the current and next month3391 keeping data in sync with the partitioned table3392 creates a trigger function on the original table3393 syncs inserts to the partitioned tables3394 syncs updates to the partitioned tables3395 syncs deletes to the partitioned tables3396 #drop_partitioned_table_for3397 drops the trigger syncing to the partitioned table3398 drops the partitioned copy and all partitions3399 when the table is not allowed3400 raises an error3401 #enqueue_partitioning_data_migration3402 when the table is not allowed3403 raises an error3404 when run inside a transaction block3405 raises an error3406 when records exist in the source table3407 enqueues jobs to copy each batch of data3408 #cleanup_partitioning_data_migration3409 when the table is not allowed3410 raises an error3411 when tracking records exist in the background_migration_jobs table3412 deletes those pertaining to the given table3413 #create_hash_partitions3414 creates partitions for the full hash space (8 partitions)3415 creates partitions for the full hash space (16 partitions)3416 #finalize_backfilling_partitioned_table3417 when the table is not allowed3418 raises an error3419 when the partitioned table does not exist3420 raises an error3421 finishing pending background migration jobs3422 finishes remaining jobs for the correct table3423 requires the migration helper to execute in DML mode3424 when there is missed data3425 idempotently cleans up after failed background migrations3426 raises an error if no job tracking records are marked as succeeded3427 vacuums the table after loading is complete3428 #replace_with_partitioned_table3429 replaces the original table with the partitioned table3430 moves the trigger from the original table to the new table3431 #rollback_replace_with_partitioned_table3432 replaces the partitioned table with the non-partitioned table3433 moves the trigger from the partitioned table to the non-partitioned table3434 #drop_nonpartitioned_archive_table3435 drops the archive table3436 drops the trigger on the source table3437 drops the sync function3438 #create_trigger_to_sync_tables3439 creates the sync function3440 installs the trigger3441Gitlab::Ci::Ansi2json::Style3442 #set?3443 when fg color is set3444 is expected to be truthy3445 when bg color is set3446 is expected to be truthy3447 when mask is set3448 is expected to be truthy3449 nothing is set3450 is expected to be falsey3451 #reset!3452 set the style params to default3453 update formats to mimic terminals3454 when fg color present3455 when mask is set to bold3456 changes the fg color to a lighter version3457 when mask set to another format3458 does not change the fg color3459 when mask is not set3460 does not change the fg color3461 #update3462 initial_state: [], ansi_commands: ["0"], result: "", description: "does not set any style"3463 change the style3464 initial_state: [], ansi_commands: ["1"], result: "term-bold", description: "enables format bold"3465 change the style3466 initial_state: [], ansi_commands: ["3"], result: "term-italic", description: "enables format italic"3467 change the style3468 initial_state: [], ansi_commands: ["4"], result: "term-underline", description: "enables format underline"3469 change the style3470 initial_state: [], ansi_commands: ["8"], result: "term-conceal", description: "enables format conceal"3471 change the style3472 initial_state: [], ansi_commands: ["9"], result: "term-cross", description: "enables format cross"3473 change the style3474 initial_state: ["1"], ansi_commands: ["21"], result: "", description: "disables format bold"3475 change the style3476 initial_state: ["1", "3"], ansi_commands: ["21"], result: "term-italic", description: "disables format bold and leaves italic"3477 change the style3478 initial_state: ["1"], ansi_commands: ["22"], result: "", description: "disables format bold using command 22"3479 change the style3480 initial_state: ["1", "3"], ansi_commands: ["22"], result: "term-italic", description: "disables format bold and leaves italic using command 22"3481 change the style3482 initial_state: ["3"], ansi_commands: ["23"], result: "", description: "disables format italic"3483 change the style3484 initial_state: ["1", "3"], ansi_commands: ["23"], result: "term-bold", description: "disables format italic and leaves bold"3485 change the style3486 initial_state: ["4"], ansi_commands: ["24"], result: "", description: "disables format underline"3487 change the style3488 initial_state: ["1", "4"], ansi_commands: ["24"], result: "term-bold", description: "disables format underline and leaves bold"3489 change the style3490 initial_state: ["8"], ansi_commands: ["28"], result: "", description: "disables format conceal"3491 change the style3492 initial_state: ["1", "8"], ansi_commands: ["28"], result: "term-bold", description: "disables format conceal and leaves bold"3493 change the style3494 initial_state: ["9"], ansi_commands: ["29"], result: "", description: "disables format cross"3495 change the style3496 initial_state: ["1", "9"], ansi_commands: ["29"], result: "term-bold", description: "disables format cross and leaves bold"3497 change the style3498 initial_state: [], ansi_commands: ["30"], result: "term-fg-black", description: "sets fg color black"3499 change the style3500 initial_state: [], ansi_commands: ["31"], result: "term-fg-red", description: "sets fg color red"3501 change the style3502 initial_state: [], ansi_commands: ["32"], result: "term-fg-green", description: "sets fg color green"3503 change the style3504 initial_state: [], ansi_commands: ["33"], result: "term-fg-yellow", description: "sets fg color yellow"3505 change the style3506 initial_state: [], ansi_commands: ["34"], result: "term-fg-blue", description: "sets fg color blue"3507 change the style3508 initial_state: [], ansi_commands: ["35"], result: "term-fg-magenta", description: "sets fg color magenta"3509 change the style3510 initial_state: [], ansi_commands: ["36"], result: "term-fg-cyan", description: "sets fg color cyan"3511 change the style3512 initial_state: [], ansi_commands: ["37"], result: "term-fg-white", description: "sets fg color white"3513 change the style3514 initial_state: [], ansi_commands: ["38", "5", "1"], result: "xterm-fg-1", description: "sets xterm fg color 1"3515 change the style3516 initial_state: [], ansi_commands: ["38", "5", "2"], result: "xterm-fg-2", description: "sets xterm fg color 2"3517 change the style3518 initial_state: [], ansi_commands: ["38", "1"], result: "term-bold", description: "ignores 38 command if not followed by 5 and sets format bold"3519 change the style3520 initial_state: [], ansi_commands: ["40"], result: "term-bg-black", description: "sets bg color black"3521 change the style3522 initial_state: [], ansi_commands: ["41"], result: "term-bg-red", description: "sets bg color red"3523 change the style3524 initial_state: [], ansi_commands: ["42"], result: "term-bg-green", description: "sets bg color green"3525 change the style3526 initial_state: [], ansi_commands: ["43"], result: "term-bg-yellow", description: "sets bg color yellow"3527 change the style3528 initial_state: [], ansi_commands: ["44"], result: "term-bg-blue", description: "sets bg color blue"3529 change the style3530 initial_state: [], ansi_commands: ["45"], result: "term-bg-magenta", description: "sets bg color magenta"3531 change the style3532 initial_state: [], ansi_commands: ["46"], result: "term-bg-cyan", description: "sets bg color cyan"3533 change the style3534 initial_state: [], ansi_commands: ["47"], result: "term-bg-white", description: "sets bg color white"3535 change the style3536 initial_state: [], ansi_commands: ["48", "5", "1"], result: "xterm-bg-1", description: "sets xterm bg color 1"3537 change the style3538 initial_state: [], ansi_commands: ["48", "5", "2"], result: "xterm-bg-2", description: "sets xterm bg color 2"3539 change the style3540 initial_state: [], ansi_commands: ["48", "1"], result: "term-bold", description: "ignores 48 command if not followed by 5 and sets format bold"3541 change the style3542 initial_state: [], ansi_commands: ["90"], result: "term-fg-l-black", description: "sets fg color light black"3543 change the style3544 initial_state: [], ansi_commands: ["91"], result: "term-fg-l-red", description: "sets fg color light red"3545 change the style3546 initial_state: [], ansi_commands: ["92"], result: "term-fg-l-green", description: "sets fg color light green"3547 change the style3548 initial_state: [], ansi_commands: ["93"], result: "term-fg-l-yellow", description: "sets fg color light yellow"3549 change the style3550 initial_state: [], ansi_commands: ["94"], result: "term-fg-l-blue", description: "sets fg color light blue"3551 change the style3552 initial_state: [], ansi_commands: ["95"], result: "term-fg-l-magenta", description: "sets fg color light magenta"3553 change the style3554 initial_state: [], ansi_commands: ["96"], result: "term-fg-l-cyan", description: "sets fg color light cyan"3555 change the style3556 initial_state: [], ansi_commands: ["97"], result: "term-fg-l-white", description: "sets fg color light white"3557 change the style3558 initial_state: [], ansi_commands: ["100"], result: "term-bg-l-black", description: "sets bg color light black"3559 change the style3560 initial_state: [], ansi_commands: ["101"], result: "term-bg-l-red", description: "sets bg color light red"3561 change the style3562 initial_state: [], ansi_commands: ["102"], result: "term-bg-l-green", description: "sets bg color light green"3563 change the style3564 initial_state: [], ansi_commands: ["103"], result: "term-bg-l-yellow", description: "sets bg color light yellow"3565 change the style3566 initial_state: [], ansi_commands: ["104"], result: "term-bg-l-blue", description: "sets bg color light blue"3567 change the style3568 initial_state: [], ansi_commands: ["105"], result: "term-bg-l-magenta", description: "sets bg color light magenta"3569 change the style3570 initial_state: [], ansi_commands: ["106"], result: "term-bg-l-cyan", description: "sets bg color light cyan"3571 change the style3572 initial_state: [], ansi_commands: ["107"], result: "term-bg-l-white", description: "sets bg color light white"3573 change the style3574 initial_state: ["1"], ansi_commands: [], result: "", description: "resets style from format bold"3575 change the style3576 initial_state: ["1"], ansi_commands: ["0"], result: "", description: "resets style from format bold"3577 change the style3578 initial_state: ["1", "3"], ansi_commands: ["0"], result: "", description: "resets style from format bold and italic"3579 change the style3580 initial_state: ["1", "3", "term-fg-l-red", "term-bg-yellow"], ansi_commands: ["0"], result: "", description: "resets all formats and colors"3581 change the style3582 initial_state: ["31", "42"], ansi_commands: ["39"], result: "term-bg-green", description: "set foreground from red to default leaving background unchanged"3583 change the style3584 initial_state: ["31", "42"], ansi_commands: ["49"], result: "term-fg-red", description: "set background from green to default leaving foreground unchanged"3585 change the style3586 initial_state: [], ansi_commands: ["1", "30", "42", "3"], result: "term-fg-l-black term-bg-green term-bold term-italic", description: "adds fg color, bg color and formats from no style"3587 change the style3588 initial_state: ["3", "31"], ansi_commands: ["23", "1", "43"], result: "term-fg-l-red term-bg-yellow term-bold", description: "replaces format italic with bold and adds a yellow background"3589 change the style3590Resolvers::TodosResolver3591 is expected to have nullable GraphQL type TodoConnection3592 #resolve3593 calls TodosFinder3594 when using no filter3595 returns pending todos3596 when using filters3597 returns the todos for multiple states3598 returns the todos for multiple filters3599 returns the todos for single filter3600 returns the todos for multiple groups3601 returns the todos for multiple authors3602 returns the todos for multiple actions3603 returns the todos for multiple projects3604 when no target is provided3605 returns no todos3606 when target user is not the current user3607 returns no todos3608 when request is for a todo target3609 returns only the todos for the target3610Gitlab::ImportExport::Project::ImportTask3611 when project import is valid3612/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil3613 performs project import successfully3614 behaves like rake task with disabled object_storage3615/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil3616 disables direct & background upload only for service call3617 when project import is invalid3618/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil3619 performs project import successfully3620IssueEntity3621 has Issuable attributes3622 has time estimation attributes3623 web_url3624 when issue is of type task3625 has a work item path3626 type3627 has an issue type3628 when issue got moved3629 when user cannot read target project3630 does not return moved_to_id3631 when user can read target project3632 returns moved moved_to_id3633 when issue got duplicated3634 when user cannot read new issue3635 does not return duplicated_to_id3636 when user can read target project3637 returns duplicated duplicated_to_id3638 when issuable in active or archived project3639 when project is active3640 returns archived false3641 returns nil for archived project doc3642 when project is archived3643 returns archived true3644 returns archived project doc3645InternalId3646 behaves like having unique enum values3647 has unique values in "usage"3648 validations3649 is expected to validate that :usage cannot be empty/falsy3650 .flush_records!3651 deletes all records for the given project3652 retains records for other projects3653 does not allow an empty filter3654 .generate_next3655 generates a strictly monotone, gapless sequence3656 in the absence of a record3657 creates a record if not yet present3658 stores record attributes3659 with existing issues3660 calculates last_value values automatically3661 there are no instances to pass in3662 accepts classes instead3663 when executed outside of transaction3664 increments counter with in_transaction: "false"3665 when executed within transaction3666 increments counter with in_transaction: "true"3667 .reset3668 in the absence of a record3669 does not revert back the value3670 when valid iid is used to reset3671 and iid is a latest one3672 does rewind and next generated value is the same3673 and iid is not a latest one3674 does not rewind3675 when executed outside of transaction3676 increments counter with in_transaction: "false"3677 when executed within transaction3678 increments counter with in_transaction: "true"3679 .track_greatest3680 stores record attributes3681 in the absence of a record3682 creates a record if not yet present3683 with existing issues3684 still returns the last value to that of the given value3685 when value is less than the current last_value3686 returns the current last_value3687 there are no instances to pass in3688 accepts classes instead3689 when executed outside of transaction3690 increments counter with in_transaction: "false"3691 when executed within transaction3692 increments counter with in_transaction: "true"3693Gitlab::Gpg::InvalidGpgSignatureUpdater3694 #run3695 gpg signature did have an associated gpg key which was removed later3696 assigns the gpg key to the signature when the missing gpg key is added3697 does not assign the gpg key when an unrelated gpg key is added3698 gpg signature did not have an associated gpg key3699 updates the signature to being valid when the missing gpg key is added3700 keeps the signature at being invalid when an unrelated gpg key is added3701 gpg signature did have an associated unverified gpg key3702 updates the signature to being valid when the user updates the email address3703 keeps the signature at being invalid when the changed email address is still unrelated3704 gpg signature did not have an associated gpg subkey3705 updates the signature to being valid when the missing gpg key is added3706DeprecatedAssignee3707 #assignee_id=3708 creates the merge_request_assignees relation3709 nullifies the assignee_id column3710 when relation already exists3711 overwrites existing assignees3712 #assignee=3713 creates the merge_request_assignees relation3714 nullifies the assignee_id column3715 when relation already exists3716 overwrites existing assignees3717 #assignee_id3718 returns the first assignee ID3719 #assignees3720 when assignee_id exists and there is no relation3721 creates the relation3722 nullifies the assignee_id3723 when DB is read-only3724 returns a users relation3725 returns an empty relation if no assignee_id is set3726 #assignee_ids3727 when assignee_id exists and there is no relation3728 creates the relation3729 nullifies the assignee_id3730 when DB is read-only3731 returns a list of user IDs3732 returns an empty relation if no assignee_id is set3733DevOpsReport::Metric3734 validations3735 is expected to validate that :leader_issues cannot be empty/falsy3736 is expected to validate that :leader_issues looks like a number greater than or equal to 03737 is expected to validate that :instance_issues cannot be empty/falsy3738 is expected to validate that :instance_issues looks like a number greater than or equal to 03739 is expected to validate that :percentage_issues cannot be empty/falsy3740 is expected to validate that :percentage_issues looks like a number greater than or equal to 03741 is expected to validate that :leader_notes cannot be empty/falsy3742 is expected to validate that :leader_notes looks like a number greater than or equal to 03743 is expected to validate that :instance_notes cannot be empty/falsy3744 is expected to validate that :instance_notes looks like a number greater than or equal to 03745 is expected to validate that :percentage_notes cannot be empty/falsy3746 is expected to validate that :percentage_notes looks like a number greater than or equal to 03747 is expected to validate that :leader_milestones cannot be empty/falsy3748 is expected to validate that :leader_milestones looks like a number greater than or equal to 03749 is expected to validate that :instance_milestones cannot be empty/falsy3750 is expected to validate that :instance_milestones looks like a number greater than or equal to 03751 is expected to validate that :percentage_milestones cannot be empty/falsy3752 is expected to validate that :percentage_milestones looks like a number greater than or equal to 03753 is expected to validate that :leader_boards cannot be empty/falsy3754 is expected to validate that :leader_boards looks like a number greater than or equal to 03755 is expected to validate that :instance_boards cannot be empty/falsy3756 is expected to validate that :instance_boards looks like a number greater than or equal to 03757 is expected to validate that :percentage_boards cannot be empty/falsy3758 is expected to validate that :percentage_boards looks like a number greater than or equal to 03759 is expected to validate that :leader_merge_requests cannot be empty/falsy3760 is expected to validate that :leader_merge_requests looks like a number greater than or equal to 03761 is expected to validate that :instance_merge_requests cannot be empty/falsy3762 is expected to validate that :instance_merge_requests looks like a number greater than or equal to 03763 is expected to validate that :percentage_merge_requests cannot be empty/falsy3764 is expected to validate that :percentage_merge_requests looks like a number greater than or equal to 03765 is expected to validate that :leader_ci_pipelines cannot be empty/falsy3766 is expected to validate that :leader_ci_pipelines looks like a number greater than or equal to 03767 is expected to validate that :instance_ci_pipelines cannot be empty/falsy3768 is expected to validate that :instance_ci_pipelines looks like a number greater than or equal to 03769 is expected to validate that :percentage_ci_pipelines cannot be empty/falsy3770 is expected to validate that :percentage_ci_pipelines looks like a number greater than or equal to 03771 is expected to validate that :leader_environments cannot be empty/falsy3772 is expected to validate that :leader_environments looks like a number greater than or equal to 03773 is expected to validate that :instance_environments cannot be empty/falsy3774 is expected to validate that :instance_environments looks like a number greater than or equal to 03775 is expected to validate that :percentage_environments cannot be empty/falsy3776 is expected to validate that :percentage_environments looks like a number greater than or equal to 03777 is expected to validate that :leader_deployments cannot be empty/falsy3778 is expected to validate that :leader_deployments looks like a number greater than or equal to 03779 is expected to validate that :instance_deployments cannot be empty/falsy3780 is expected to validate that :instance_deployments looks like a number greater than or equal to 03781 is expected to validate that :percentage_deployments cannot be empty/falsy3782 is expected to validate that :percentage_deployments looks like a number greater than or equal to 03783 is expected to validate that :leader_projects_prometheus_active cannot be empty/falsy3784 is expected to validate that :leader_projects_prometheus_active looks like a number greater than or equal to 03785 is expected to validate that :instance_projects_prometheus_active cannot be empty/falsy3786 is expected to validate that :instance_projects_prometheus_active looks like a number greater than or equal to 03787 is expected to validate that :percentage_projects_prometheus_active cannot be empty/falsy3788 is expected to validate that :percentage_projects_prometheus_active looks like a number greater than or equal to 03789 is expected to validate that :leader_service_desk_issues cannot be empty/falsy3790 is expected to validate that :leader_service_desk_issues looks like a number greater than or equal to 03791 is expected to validate that :instance_service_desk_issues cannot be empty/falsy3792 is expected to validate that :instance_service_desk_issues looks like a number greater than or equal to 03793 is expected to validate that :percentage_service_desk_issues cannot be empty/falsy3794 is expected to validate that :percentage_service_desk_issues looks like a number greater than or equal to 03795 #percentage_score3796 returns stored percentage score3797Metrics::Dashboards::AnnotationsFinder3798 #execute3799 there are no annotations records3800 returns empty array3801 with annotation records3802 loads annotations3803 when the from filter is present3804 loads only younger annotations3805 when the to filter is present3806 loads only older annotations3807 when from and to filters are present3808 and to is bigger than from3809 loads only annotations assigned to this interval3810 and from is bigger than to3811 ignores to parameter and returns annotations starting at from filter3812 when from or to filters are empty strings3813 ignores this parameters3814 dashboard environment is missing3815 returns empty relation3816IncidentManagement::IssuableEscalationStatus3817 is expected to be valid3818 associations3819 is expected to belong to issue required: false3820 is expected to have one project through issue inverse_of => incident_management_issuable_escalation_statuses3821 validatons3822 is expected to validate that :issue cannot be empty/falsy3823 is expected to validate that :issue is case-sensitively unique3824 behaves like a model including Escalatable3825 validations3826 is expected to validate that :status cannot be empty/falsy3827 when status is triggered3828 when resolved_at is blank3829 is expected to be valid3830 when resolved_at is present3831 is expected to be invalid3832 when status is acknowledged3833 when resolved_at is blank3834 is expected to be valid3835 when resolved_at is present3836 is expected to be invalid3837 when status is resolved3838 when resolved_at is blank3839 is expected to be invalid3840 when resolved_at is present3841 is expected to be valid3842 when status is ignored3843 when resolved_at is blank3844 is expected to be valid3845 when resolved_at is present3846 is expected to be invalid3847 scopes3848 .order_status3849 descending3850 is expected to eq [#<IncidentManagement::IssuableEscalationStatus id: 28, created_at: "2022-06-29 20:32:19.540371000 +0...00 +0000", issue_id: 227, policy_id: nil, escalations_started_at: nil, resolved_at: nil, status: 3>]3851 ascending3852 is expected to eq [#<IncidentManagement::IssuableEscalationStatus id: 31, created_at: "2022-06-29 20:32:20.807834000 +0...00 +0000", issue_id: 224, policy_id: nil, escalations_started_at: nil, resolved_at: nil, status: 0>]3853 .open3854 is expected to contain exactly #<IncidentManagement::IssuableEscalationStatus id: 29, created_at: "2022-06-29 20:32:19.988281000 +00...000 +0000", issue_id: 225, policy_id: nil, escalations_started_at: nil, resolved_at: nil, status: 1> and #<IncidentManagement::IssuableEscalationStatus id: 28, created_at: "2022-06-29 20:32:19.540371000 +00...000 +0000", issue_id: 224, policy_id: nil, escalations_started_at: nil, resolved_at: nil, status: 0>3855 .status_value3856 status: :triggered, status_value: 03857 returns status value by its name3858 status: :acknowledged, status_value: 13859 returns status value by its name3860 status: :resolved, status_value: 23861 returns status value by its name3862 status: :ignored, status_value: 33863 returns status value by its name3864 status: :unknown, status_value: nil3865 returns status value by its name3866 .status_name3867 raw_status: 0, status: :triggered3868 returns status name by its values3869 raw_status: 1, status: :acknowledged3870 returns status name by its values3871 raw_status: 2, status: :resolved3872 returns status name by its values3873 raw_status: 3, status: :ignored3874 returns status name by its values3875 raw_status: -1, status: nil3876 returns status name by its values3877 .open_status?3878 status: :triggered, is_open_status: true3879 returns true when the status is open status3880 status: :acknowledged, is_open_status: true3881 returns true when the status is open status3882 status: :resolved, is_open_status: false3883 returns true when the status is open status3884 status: :ignored, is_open_status: false3885 returns true when the status is open status3886 status: nil, is_open_status: false3887 returns true when the status is open status3888 #trigger3889 when escalatable is in triggered state3890 does not change the escalatable status3891 when escalatable is not in triggered state3892 changes the escalatable status to triggered3893 resets resolved at3894 #acknowledge3895 changes the escalatable status to acknowledged3896 resets ended at3897 #resolve3898 when escalatable is already resolved3899 does not change the escalatable status3900 when escalatable is not resolved3901 changes escalatable status to "resolved"3902 #ignore3903 changes the escalatable status to ignored3904 resets ended at3905 #status_event_for3906 for_status: :triggered, event: :trigger3907 returns event by status name3908 for_status: "triggered", event: :trigger3909 returns event by status name3910 for_status: :acknowledged, event: :acknowledge3911 returns event by status name3912 for_status: "acknowledged", event: :acknowledge3913 returns event by status name3914 for_status: :resolved, event: :resolve3915 returns event by status name3916 for_status: "resolved", event: :resolve3917 returns event by status name3918 for_status: :ignored, event: :ignore3919 returns event by status name3920 for_status: "ignored", event: :ignore3921 returns event by status name3922 for_status: :unknown, event: nil3923 returns event by status name3924 for_status: nil, event: nil3925 returns event by status name3926 for_status: "", event: nil3927 returns event by status name3928 for_status: 1, event: nil3929 returns event by status name3930 #open?3931 returns true when the status is open status3932API::Helpers::Caching3933 #present_cached3934 single object3935 behaves like object cache helper3936 is expected to be a kind of Gitlab::Json::PrecompiledJson3937 uses the presenter3938 is valid JSON3939 fetches from the cache3940 when a cache context is supplied3941 uses the context to augment the cache key3942 when expires_in is supplied3943 sets the expiry when accessing the cache3944 collection of objects3945 behaves like collection cache helper3946 is expected to be a kind of Gitlab::Json::PrecompiledJson3947 uses the presenter3948 is valid JSON3949 fetches from the cache3950 when a cache context is supplied3951 uses the context to augment the cache key3952 expires_in is supplied3953 sets the expiry when accessing the cache3954 #cache_action3955 is expected to be a kind of Gitlab::Json::PrecompiledJson3956 represents the correct data3957 only calls the expensive action once3958 handles nested cache calls3959 Cache versioning3960 returns cache based on version parameter3961 Cache for pagination headers3962 X-Per-Page3963 stores and recovers pagination headers from cache3964 prefers headers from request than from cache3965 X-Page3966 stores and recovers pagination headers from cache3967 prefers headers from request than from cache3968 X-Next-Page3969 stores and recovers pagination headers from cache3970 prefers headers from request than from cache3971 X-Prev-Page3972 stores and recovers pagination headers from cache3973 prefers headers from request than from cache3974 Link3975 stores and recovers pagination headers from cache3976 prefers headers from request than from cache3977 X-Total3978 stores and recovers pagination headers from cache3979 prefers headers from request than from cache3980 X-Total-Pages3981 stores and recovers pagination headers from cache3982 prefers headers from request than from cache3983 #cache_action_if3984 conditional is truthy3985 is expected to be a kind of Gitlab::Json::PrecompiledJson3986 caches the block3987 conditional is falsey3988 is expected to eq {:foo=>"bar"}3989 doesn't cache the block3990 #cache_action_unless3991 conditional is truthy3992 is expected to eq {:foo=>"bar"}3993 doesn't cache the block3994 conditional is falsey3995 is expected to be a kind of Gitlab::Json::PrecompiledJson3996 caches the block3997Gitlab::QuickActions::Extractor3998 #extract_commands3999 extracts command with multiple arguments and various prefixes4000 extracts command case insensitive4001 does not extract noop commands4002 extracts and performs substitution commands4003 extracts and performs substitution commands4004 extracts and performs multiple substitution commands4005 does not extract substitution command in inline code4006 extracts and performs substitution commands case insensitive4007 extracts and performs substitution commands with comments4008 extracts multiple commands4009 does not alter original content if no command is found4010 does not get confused if command comes before an inline code4011 does not get confused if command comes before a blockcode4012 does not extract commands inside a blockcode4013 does not extract commands inside a blockquote4014 does not extract commands inside a HTML tag4015 does not extract commands in multiline inline code on seperated rows4016 does not extract commands in multiline inline code starting from text4017 does not extract commands in inline code4018 limits to passed commands when they are passed4019 fails fast for strings with many newlines4020 command with no argument4021 at the start of content4022 behaves like command with no argument4023 extracts command4024 in the middle of content4025 behaves like command with no argument4026 extracts command4027 in the middle of a line4028 does not extract command4029 at the end of content4030 behaves like command with no argument4031 extracts command4032 command with a single argument4033 at the start of content4034 allows slash in command arguments4035 behaves like command with a single argument4036 extracts command4037 in the middle of content4038 behaves like command with a single argument4039 extracts command4040 in the middle of a line4041 does not extract command4042 at the end of content4043 behaves like command with a single argument4044 extracts command4045 when argument is not separated with a space4046 does not extract command4047 command with multiple arguments4048 at the start of content4049 behaves like command with multiple arguments4050 extracts command4051 in the middle of content4052 behaves like command with multiple arguments4053 extracts command4054 in the middle of a line4055 does not extract command4056 at the end of content4057 behaves like command with multiple arguments4058 extracts command4059 when argument is not separated with a space4060 does not extract command4061 #redact_commands4062 text: "hello\n/labels ~label1 ~label2\nworld", expected: "hello\n`/labels ~label1 ~label2`\nworld"4063 encloses quick actions with code span markdown4064 text: "hello\n/open\n/labels ~label1\nworld", expected: "hello\n`/open`\n`/labels ~label1`\nworld"4065 encloses quick actions with code span markdown4066 text: "hello\n/reopen\nworld", expected: "hello\n`/reopen`\nworld"4067 encloses quick actions with code span markdown4068 text: "/reopen\nworld", expected: "`/reopen`\nworld"4069 encloses quick actions with code span markdown4070 text: "hello\n/open", expected: "hello\n`/open`"4071 encloses quick actions with code span markdown4072Namespace::PackageSetting4073 relationships4074 is expected to belong to namespace required: false4075 validations4076 is expected to validate that :namespace cannot be empty/falsy4077 #maven_duplicates_allowed4078 is expected to allow :maven_duplicates_allowed to be ‹true›4079 is expected to allow :maven_duplicates_allowed to be ‹false›4080 is expected not to allow :maven_duplicates_allowed to be ‹nil›4081 is expected to allow :generic_duplicates_allowed to be ‹true›4082 is expected to allow :generic_duplicates_allowed to be ‹false›4083 is expected not to allow :generic_duplicates_allowed to be ‹nil›4084 regex values4085 is expected to allow :maven_duplicate_exception_regex to be ‹"SNAPSHOT"›4086 is expected to allow :maven_duplicate_exception_regex to be ‹".*"›4087 is expected to allow :maven_duplicate_exception_regex to be ‹"v.+"›4088 is expected to allow :maven_duplicate_exception_regex to be ‹"v10.1.*"›4089 is expected to allow :maven_duplicate_exception_regex to be ‹"(?:v.+|SNAPSHOT|TEMP)"›4090 is expected not to allow :maven_duplicate_exception_regex to be ‹"["›4091 is expected not to allow :maven_duplicate_exception_regex to be ‹"(?:v.+|SNAPSHOT|TEMP"›4092 is expected to allow :generic_duplicate_exception_regex to be ‹"SNAPSHOT"›4093 is expected to allow :generic_duplicate_exception_regex to be ‹".*"›4094 is expected to allow :generic_duplicate_exception_regex to be ‹"v.+"›4095 is expected to allow :generic_duplicate_exception_regex to be ‹"v10.1.*"›4096 is expected to allow :generic_duplicate_exception_regex to be ‹"(?:v.+|SNAPSHOT|TEMP)"›4097 is expected not to allow :generic_duplicate_exception_regex to be ‹"["›4098 is expected not to allow :generic_duplicate_exception_regex to be ‹"(?:v.+|SNAPSHOT|TEMP"›4099 #duplicates_allowed?4100 package types with package_settings4101 duplicates_allowed: true, duplicate_exception_regex: "", result: true4102 for maven_package4103 is expected to equal true4104 duplicates_allowed: false, duplicate_exception_regex: "", result: false4105 for maven_package4106 is expected to equal false4107 duplicates_allowed: false, duplicate_exception_regex: ".*", result: true4108 for maven_package4109 is expected to equal true4110 duplicates_allowed: false, duplicate_exception_regex: "fo.*", result: true4111 for maven_package4112 is expected to equal true4113 duplicates_allowed: false, duplicate_exception_regex: "be.*", result: true4114 for maven_package4115 is expected to equal true4116 duplicates_allowed: true, duplicate_exception_regex: "", result: true4117 for generic_package4118 is expected to equal true4119 duplicates_allowed: false, duplicate_exception_regex: "", result: false4120 for generic_package4121 is expected to equal false4122 duplicates_allowed: false, duplicate_exception_regex: ".*", result: true4123 for generic_package4124 is expected to equal true4125 duplicates_allowed: false, duplicate_exception_regex: "fo.*", result: true4126 for generic_package4127 is expected to equal true4128 duplicates_allowed: false, duplicate_exception_regex: "be.*", result: true4129 for generic_package4130 is expected to equal true4131 package types without package_settings4132 raises an error4133 raises an error4134 raises an error4135 raises an error4136 raises an error4137 raises an error4138 raises an error4139Deployments::LinkMergeRequestsService4140 #execute4141 when the deployment is for a review environment4142 does nothing4143 when the deployment is for one of the production environments4144 links merge requests4145 when the deployment failed4146 does nothing4147 when there is a previous deployment4148 links all merge requests merged since the previous deployment4149 when there are no previous deployments4150 links all merged merge requests4151 #link_merge_requests_for_range4152 links merge requests4153 links picked merge requests4154 doesn't link the same merge_request twice4155 #link_all_merged_merge_requests4156 links all merged merge requests targeting the deployed branch4157Banzai::Filter::References::FeatureFlagReferenceFilter4158 requires project context4159 ignores valid references contained inside 'pre' element4160 ignores valid references contained inside 'code' element4161 ignores valid references contained inside 'a' element4162 ignores valid references contained inside 'style' element4163 with internal reference4164 links to a valid reference4165 links with adjacent text4166 ignores invalid feature flag IIDs4167 includes a title attribute4168 escapes the title attribute4169 includes default classes4170 includes a data-project attribute4171 includes a data-feature-flag attribute4172 supports an :only_path context4173 with cross-project / cross-namespace complete reference4174 links to a valid reference4175 produces a valid text in a link4176 produces a valid text4177 ignores invalid feature flag IIDs on the referenced project4178 with cross-project / same-namespace complete reference4179 links to a valid reference4180 produces a valid text in a link4181 produces a valid text4182 ignores invalid feature flag IIDs on the referenced project4183 with cross-project shorthand reference4184 links to a valid reference4185 produces a valid text in a link4186 produces a valid text4187 ignores invalid feature flag IDs on the referenced project4188 with cross-project URL reference4189 links to a valid reference4190 links with adjacent text4191 ignores invalid feature flag IIDs on the referenced project4192 with group context4193 links to a valid reference4194 ignores internal references4195OnboardingProgress4196 associations4197 is expected to belong to namespace required: true4198 validations4199 namespace_is_root_namespace4200 when associated namespace is root4201 is expected to be valid4202 when associated namespace is not root4203 is invalid4204 scopes4205 .incomplete_actions4206 when given one action4207 is expected to eq [#<OnboardingProgress id: 1, namespace_id: 3037, created_at: "2022-06-29 20:32:51.551115956 +0000", u...e_cluster_image_scanning_run_at: nil, secure_api_fuzzing_run_at: nil, license_scanning_run_at: nil>]4208 when given an array of actions4209 is expected to eq [#<OnboardingProgress id: 3, namespace_id: 3039, created_at: "2022-06-29 20:32:51.979064823 +0000", u...e_cluster_image_scanning_run_at: nil, secure_api_fuzzing_run_at: nil, license_scanning_run_at: nil>]4210 .completed_actions4211 when given one action4212 is expected to eq [#<OnboardingProgress id: 5, namespace_id: 3041, created_at: "2022-06-29 20:32:52.243536543 +0000", u...e_cluster_image_scanning_run_at: nil, secure_api_fuzzing_run_at: nil, license_scanning_run_at: nil>]4213 when given an array of actions4214 is expected to eq [#<OnboardingProgress id: 8, namespace_id: 3044, created_at: "2022-06-29 20:32:52.621679754 +0000", u...e_cluster_image_scanning_run_at: nil, secure_api_fuzzing_run_at: nil, license_scanning_run_at: nil>]4215 .completed_actions_with_latest_in_range4216 when given one action4217 is expected to eq [#<OnboardingProgress id: 10, namespace_id: 3046, created_at: "2022-06-29 20:32:52.952435228 +0000", ...e_cluster_image_scanning_run_at: nil, secure_api_fuzzing_run_at: nil, license_scanning_run_at: nil>]4218 when given an array of actions4219 is expected to eq [#<OnboardingProgress id: 16, namespace_id: 3052, created_at: "2022-06-29 20:32:53.953843611 +0000", ...e_cluster_image_scanning_run_at: nil, secure_api_fuzzing_run_at: nil, license_scanning_run_at: nil>]4220 .onboard4221 adds a record for the namespace4222 when not given a namespace4223 does not add a record for the namespace4224 when not given a root namespace4225 does not add a record for the namespace4226 .onboarding?4227 when onboarded4228 is expected to eq true4229 when not onboarding4230 is expected to eq false4231 .register4232 for a single action4233 when the namespace was onboarded4234 registers the action for the namespace4235 does not override timestamp4236 when the action does not exist4237 does not register the action for the namespace4238 when the namespace was not onboarded4239 does not register the action for the namespace4240 for multiple actions4241 when the namespace was onboarded4242 registers the actions for the namespace4243 does not override timestamp4244 when one of the actions does not exist4245 does not register any action for the namespace4246 when the namespace was not onboarded4247 does not register the action for the namespace4248 .completed?4249 when the namespace has not yet been onboarded4250 is expected to eq false4251 when the namespace has been onboarded but not registered the action yet4252 is expected to eq false4253 when the action has been registered4254 is expected to eq true4255 .not_completed?4256 when the namespace has not yet been onboarded4257 is expected to equal false4258 when the namespace has been onboarded but not registered the action yet4259 is expected to equal true4260 when the action has been registered4261 is expected to equal false4262 .column_name4263 is expected to eq :subscription_created_at4264 #number_of_completed_actions4265 0 completed actions4266 is expected to eq 04267 1 completed action4268 is expected to eq 14269 2 completed actions4270 is expected to eq 24271Gitlab::Redis::SharedState4272 .config_file_name4273 when there is no config file anywhere4274 is expected to be nil4275 but resque.yml exists4276 is expected to eq "/tmp/redis_shared_examples20220629-466-1997efo/config/resque.yml"4277 returns a path that exists4278 and there is a global env override4279 is expected to eq "global override"4280 and there is an instance specific config file4281 is expected to eq "/tmp/redis_shared_examples20220629-466-1ub8gxy/config/redis.shared_state.yml"4282 returns a path that exists4283 and there is a specific env override4284 is expected to eq "instance specific override"4285 .store4286 with old format4287 behaves like redis store4288 instantiates Redis::Store4289 with the namespace4290 uses specified namespace4291 with new format4292 behaves like redis store4293 instantiates Redis::Store4294 with the namespace4295 uses specified namespace4296 .params4297 withstands mutation4298 when url contains unix socket reference4299 with old format4300 returns path key instead4301 with new format4302 returns path key instead4303 when url is host based4304 with old format4305 returns hash with host, port, db, and password4306 with new format4307 rails_env: "development", host: "development-host"4308 returns hash with host, port, db, and password4309 rails_env: "test", host: "test-host"4310 returns hash with host, port, db, and password4311 rails_env: "production", host: "production-host"4312 returns hash with host, port, db, and password4313 .url4314 withstands mutation4315 when yml file with env variable4316 reads redis url from env variable4317 .version4318 returns a version4319 ._raw_config4320 is frozen4321 returns false when the file does not exist4322 returns false when the filename can't be determined4323 .with4324 when running on single-threaded runtime4325 instantiates a connection pool with size 54326 when running on multi-threaded runtime4327 instantiates a connection pool with a size based on the concurrency of the worker4328 when there is no config at all4329 can run an empty block4330 #db4331 with old format4332 returns the correct db4333 with new format4334 returns the correct db4335 #sentinels4336 when sentinels are defined4337 rails_env: "development", hosts: ["development-replica1", "development-replica2"]4338 returns an array of hashes with host and port keys4339 rails_env: "test", hosts: ["test-replica1", "test-replica2"]4340 returns an array of hashes with host and port keys4341 rails_env: "production", hosts: ["production-replica1", "production-replica2"]4342 returns an array of hashes with host and port keys4343 when sentinels are not defined4344 returns nil4345 #sentinels?4346 when sentinels are defined4347 returns true4348 when sentinels are not defined4349 returns false4350 #raw_config_hash4351 returns old-style single url config in a hash4352 #fetch_config4353 returns false when no config file is present4354 returns false when config file is present but has invalid YAML4355 has a value for the legacy default URL4356 #raw_config_hash4357 has a legacy default URL4358Gitlab::Metrics4359 .settings4360 returns a Hash4361 .enabled?4362 returns a boolean4363 .prometheus_metrics_enabled_unmemoized4364 prometheus metrics enabled in config4365 when metrics folder is present4366 metrics are enabled4367 when metrics folder is missing4368 metrics are disabled4369 .prometheus_metrics_enabled?4370 returns a boolean4371 .measure4372 without a transaction4373 returns the return value of the block4374 with a transaction4375 adds a metric to the current transaction4376 returns the return value of the block4377 #series_prefix4378 returns a String4379 .record_status_for_duration?4380 status: 100, should_record: false4381 is expected to equal false4382 status: 200, should_record: true4383 is expected to equal true4384 status: 401, should_record: true4385 is expected to equal true4386 status: nil, should_record: false4387 is expected to equal false4388 status: 500, should_record: false4389 is expected to equal false4390 status: 503, should_record: false4391 is expected to equal false4392 status: "100", should_record: false4393 is expected to equal false4394 status: "201", should_record: true4395 is expected to equal true4396 status: "nothing", should_record: false4397 is expected to equal false4398 .add_event4399 without a transaction4400 does nothing4401 with a transaction4402 adds an event4403 prometheus metrics disabled4404 behaves like prometheus metrics API4405 #counter4406 #increment4407 successfully calls #increment without arguments4408 successfully calls #increment with 1 argument4409 successfully calls #increment with 2 arguments4410 #summary4411 #observe4412 successfully calls #observe with 2 arguments4413 #gauge4414 #set4415 successfully calls #set with 2 arguments4416 #histogram4417 #observe4418 successfully calls #observe with 2 arguments4419 #null_metric4420 is expected to be a kind of Gitlab::Metrics::NullMetric4421 #counter4422 is expected to be a kind of Gitlab::Metrics::NullMetric4423 #summary4424 is expected to be a kind of Gitlab::Metrics::NullMetric4425 #gauge4426 is expected to be a kind of Gitlab::Metrics::NullMetric4427 #histogram4428 is expected to be a kind of Gitlab::Metrics::NullMetric4429 prometheus metrics enabled4430 behaves like prometheus metrics API4431 #counter4432 #increment4433 successfully calls #increment without arguments4434 successfully calls #increment with 1 argument4435 successfully calls #increment with 2 arguments4436 #summary4437 #observe4438 successfully calls #observe with 2 arguments4439 #gauge4440 #set4441 successfully calls #set with 2 arguments4442 #histogram4443 #observe4444 successfully calls #observe with 2 arguments4445 #null_metric4446 is expected to be nil4447 #counter4448 is expected not to be a kind of Gitlab::Metrics::NullMetric4449 #summary4450 is expected not to be a kind of Gitlab::Metrics::NullMetric4451 #gauge4452 is expected not to be a kind of Gitlab::Metrics::NullMetric4453 #histogram4454 is expected not to be a kind of Gitlab::Metrics::NullMetric4455PrometheusAdapter4456 #query4457 validate_query4458 with valid data4459 returns query data4460 environment4461 with valid data4462 returns reactive data4463 matched_metrics4464 with valid data4465 returns reactive data4466 deployment4467 with valid data4468 returns reactive data4469 additional_metrics4470 with valid data4471 returns reactive data4472 #calculate_reactive_cache4473 when integration is inactive4474 is expected to be nil4475 when Prometheus responds with valid data4476 is expected to eq "{\"success\":true,\"data\":{\"memory_values\":[{\"metric\":{},\"values\":[[1488758662.506,\"0.000029...lue\":[1488772511.004,\"0.000041021495238095323\"]}]},\"last_update\":\"2022-06-29T20:33:06.000Z\"}"4477 when Prometheus responds with 4044478 is expected to eq {:result=>"404 - \"QUERY FAILED!\"", :success=>false}4479 when Prometheus responds with 5004480 is expected to eq {:result=>"500 - \"QUERY FAILED!\"", :success=>false}4481 when client raises Gitlab::PrometheusClient::ConnectionError4482 is expected to include {:success => false, :result => #<RSpec::Mocks::ArgumentMatchers::KindOf:0x00007f8ef05b6d88 @klass=String>}4483 #build_query_args4484 when active record models are included4485 serializes by id4486 when args are safe for serialization4487 does nothing4488RuboCop::CodeReuseHelpers4489 delegates ee? to GitlabEdition4490 delegates jh? to GitlabEdition4491 #send_to_constant?4492 returns true when sending to a constant4493 returns false when sending to something other than a constant4494 #send_receiver_name_ends_with?4495 returns true when the receiver ends with a suffix4496 returns false when the receiver is the same as a suffix4497 #file_path_for_node4498 returns the file path of a node4499 #name_of_constant4500 returns the name of a constant4501 #in_finder?4502 returns true for a node in the finders directory4503 returns false for a node outside the finders directory4504 #in_model?4505 returns true for a node in the models directory4506 returns false for a node outside the models directory4507 #in_service_class?4508 returns true for a node in the services directory4509 returns false for a node outside the services directory4510 #in_presenter?4511 returns true for a node in the presenters directory4512 returns false for a node outside the presenters directory4513 #in_serializer?4514 returns true for a node in the serializers directory4515 returns false for a node outside the serializers directory4516 #in_worker?4517 returns true for a node in the workers directory4518 returns false for a node outside the workers directory4519 #in_graphql_types?4520 returns true for a node in app/graphql/types4521 returns true for a node in ee/app/graphql/ee/types4522 returns true for a node in ee/app/graphql/types4523 returns true for a node in app/graphql/resolvers4524 returns true for a node in app/foo4525 #in_api?4526 returns true for a node in the API directory4527 returns false for a node outside the API directory4528 #in_spec?4529 returns true for a node in the spec directory4530 returns true for a node in the ee/spec directory4531 returns false for a node outside the spec directory4532 #in_app_directory?4533 returns true for a directory in the CE app/ directory4534 returns true for a directory in the EE app/ directory4535 returns false for a directory in the lib/ directory4536 #in_lib_directory?4537 returns true for a directory in the CE lib/ directory4538 returns true for a directory in the EE lib/ directory4539 returns false for a directory in the app/ directory4540 #name_of_receiver4541 returns the name of a send receiver4542 #each_class_method4543 yields every class method to the supplied block4544 #each_send_node4545 yields every send node to the supplied block4546 #disallow_send_to4547 disallows sending a message to a constant4548Metrics::Dashboard::DynamicEmbedService4549 .valid_params?4550 is expected to be truthy4551 missing embedded4552 is expected to be falsey4553 not embedded4554 is expected to be falsey4555 undefined dashboard4556 is expected to be truthy4557 missing dashboard4558 is expected to be truthy4559 missing group4560 is expected to be falsey4561 missing title4562 is expected to be falsey4563 undefined y-axis label4564 is expected to be falsey4565 #get_dashboard4566 when the dashboard does not exist4567 behaves like misconfigured dashboard service response4568 returns an appropriate message and status code4569 when the dashboard is exists4570 caches the unprocessed dashboard for subsequent calls4571 behaves like valid embedded dashboard service response4572 behaves like valid dashboard service response for schema4573 returns a json representation of the dashboard4574 behaves like raises error for users with insufficient permissions4575 when the user does not have sufficient access4576 behaves like misconfigured dashboard service response4577 returns an appropriate message and status code4578 when the user is anonymous4579 behaves like misconfigured dashboard service response4580 returns an appropriate message and status code4581 when the specified group is not present on the dashboard4582 behaves like misconfigured dashboard service response4583 returns an appropriate message and status code4584 when the specified title is not present on the dashboard4585 behaves like misconfigured dashboard service response4586 returns an appropriate message and status code4587 when the specified y-axis label is not present on the dashboard4588 behaves like misconfigured dashboard service response4589 returns an appropriate message and status code4590 when the dashboard is nil4591 behaves like uses system dashboard4592 uses the overview dashboard4593 when the dashboard is not present4594 behaves like uses system dashboard4595 uses the overview dashboard4596BulkImports::Common::Pipelines::UploadsPipeline4597 when importing to group4598 #run4599 imports uploads into destination portable and removes tmpdir4600 when importing avatar4601 imports avatar4602 when something goes wrong4603 raises exception4604 #extract4605 downloads & extracts upload paths4606 #load4607 creates a file upload4608 when dynamic path is nil4609 returns4610 when path is a directory4611 returns4612 when path is a symlink4613 does not upload the file4614 #after_run4615 removes tmp dir4616 when dir does not exist4617 does not attempt to remove tmpdir4618 when importing to project4619 #run4620 imports uploads into destination portable and removes tmpdir4621 when importing avatar4622 imports avatar4623 when something goes wrong4624 raises exception4625 #extract4626 downloads & extracts upload paths4627 #load4628 creates a file upload4629 when dynamic path is nil4630 returns4631 when path is a directory4632 returns4633 when path is a symlink4634 does not upload the file4635 #after_run4636 removes tmp dir4637 when dir does not exist4638 does not attempt to remove tmpdir4639Ci::BuildReportResult4640 behaves like cleanup by a loose foreign key4641 cleans up (delete or nullify) the model4642 associations4643 is expected to belong to build required: false4644 is expected to belong to project required: false4645 validations4646 is expected to validate that :project cannot be empty/falsy4647 is expected to validate that :build cannot be empty/falsy4648 when attributes are valid4649 returns no errors4650 when data is invalid4651 returns errors4652 #tests_name4653 returns the suite name4654 #tests_duration4655 returns the suite duration4656 #tests_success4657 returns the success count4658 #tests_failed4659 returns the failed count4660 #tests_errored4661 returns the errored count4662 #tests_skipped4663 returns the skipped count4664Gitlab::Ci::Trace::ChunkedIO4665 #initialize4666 when a chunk exists4667 is expected to eq 34668 when two chunks exist4669 is expected to eq 64670 when no chunks exists4671 is expected to eq 04672 #seek4673 when moves pos to end of the file4674 is expected to eq 1924414675 when moves pos to middle of the file4676 is expected to eq 962204677 when moves pos around4678 matches the result4679 #eof?4680 when current pos is at end of the file4681 is expected to be truthy4682 when current pos is not at end of the file4683 is expected to be falsey4684 #each_line4685 when buffer size is smaller than file size4686 yields lines4687 when buffer size is larger than file size4688 calls get_chunk only once4689 when buffer consist of many empty lines4690 yields lines4691 #read4692 when read the whole size4693 when buffer size is smaller than file size4694 is expected to eq "\e[0KRunning with gitlab-runner 10.6.0 (a3543a27)\n\e[0;m\e[0K on docker-auto-scale-com 30d62d59\n\...token\e[0;m=rusBKvxM\nsection_end:1522927520:upload_artifacts\n\e[0K\e[32;1mJob succeeded\n\e[0;m\n"4695 when buffer size is larger than file size4696 is expected to eq "\e[0KRunning with gitlab-runner 10.6.0 (a3543a27)\n\e[0;m\e[0K on docker-auto-scale-com 30d62d59\n\...token\e[0;m=rusBKvxM\nsection_end:1522927520:upload_artifacts\n\e[0K\e[32;1mJob succeeded\n\e[0;m\n"4697 when chunk is missing data4698 raises an error4699 when read only first 100 bytes4700 when buffer size is smaller than file size4701 reads a trace4702 when buffer size is larger than file size4703 reads a trace4704 when tries to read oversize4705 when buffer size is smaller than file size4706 reads a trace4707 when buffer size is larger than file size4708 reads a trace4709 when tries to read 0 bytes4710 when buffer size is smaller than file size4711 reads a trace4712 when buffer size is larger than file size4713 reads a trace4714 #readline4715 when buffer size is smaller than file size4716 behaves like all line matching4717 is expected to eq "\e[0;m\n"4718 when buffer size is larger than file size4719 behaves like all line matching4720 is expected to eq "\e[0;m\n"4721 when pos is at middle of the file4722 reads from pos4723 when chunk is missing data4724 raises an error4725 when utf-8 is being used4726 has known length4727 behaves like all line matching4728 is expected to eq "\xF0\x9F\x98\xBA"4729 #write4730 when data does not exist4731 when buffer size is smaller than file size4732 behaves like writes a trace4733 is expected to eq "\e[0KRunning with gitlab-runner 10.6.0 (a3543a27)\n\e[0;m\e[0K on docker-auto-scale-com 30d62d59\n\...token\e[0;m=rusBKvxM\nsection_end:1522927520:upload_artifacts\n\e[0K\e[32;1mJob succeeded\n\e[0;m\n"4734 when buffer size is larger than file size4735 behaves like writes a trace4736 is expected to eq "\e[0KRunning with gitlab-runner 10.6.0 (a3543a27)\n\e[0;m\e[0K on docker-auto-scale-com 30d62d59\n\...token\e[0;m=rusBKvxM\nsection_end:1522927520:upload_artifacts\n\e[0K\e[32;1mJob succeeded\n\e[0;m\n"4737 when data already exists4738 when buffer size is smaller than file size4739 behaves like appends a trace4740 is expected to eq "exist data\e[0KRunning with gitlab-runner 10.6.0 (a3543a27)\n\e[0;m\e[0K on docker-auto-scale-com 3...token\e[0;m=rusBKvxM\nsection_end:1522927520:upload_artifacts\n\e[0K\e[32;1mJob succeeded\n\e[0;m\n"4741 when buffer size is larger than file size4742 behaves like appends a trace4743 is expected to eq "exist data\e[0KRunning with gitlab-runner 10.6.0 (a3543a27)\n\e[0;m\e[0K on docker-auto-scale-com 3...token\e[0;m=rusBKvxM\nsection_end:1522927520:upload_artifacts\n\e[0K\e[32;1mJob succeeded\n\e[0;m\n"4744 #truncate4745 when data does not exist4746 when buffer size is smaller than file size4747 behaves like truncates a trace4748 is expected to eq "\e[0KRunnin"4749 when buffer size is larger than file size4750 behaves like truncates a trace4751 is expected to eq "\e[0KRunnin"4752 #destroy!4753 deletes4754 when the job does not have archived trace4755 leaves a message in sidekiq log4756NewMergeRequestWorker4757 #perform4758 when a merge request not found4759 does not call Services4760 logs an error4761 when a user not found4762 does not call Services4763 logs an error4764 with a user4765 when the merge request author is blocked4766 behaves like a new merge request where the author cannot trigger notifications4767 does not create a notification for the mentioned user4768 when the merge request author is a ghost4769 behaves like a new merge request where the author cannot trigger notifications4770 does not create a notification for the mentioned user4771 when everything is ok4772 creates a new event record4773 creates a notification for the mentioned user4774Gitlab::Ci::Config::External::File::Artifact4775 #matching?4776 when params contain artifact location4777 returns true4778 when params does not contain artifact location4779 returns false4780 #valid?4781 when used in non child pipeline context4782 behaves like is invalid4783 sets the expected error4784 when used in child pipeline context4785 when job is not provided4786 behaves like is invalid4787 sets the expected error4788 when job is provided4789 when job does not exist in the parent pipeline4790 behaves like is invalid4791 sets the expected error4792 when job exists in the parent pipeline4793 when job does not have artifacts4794 behaves like is invalid4795 sets the expected error4796 when job has archive artifacts4797 behaves like is invalid4798 sets the expected error4799 when job has artifacts exceeding the max allowed size4800 behaves like is invalid4801 sets the expected error4802 when job has artifacts metadata4803 behaves like is invalid4804 sets the expected error4805 when file is found in metadata4806 when file is empty4807 behaves like is invalid4808 sets the expected error4809 when file is not empty4810 is valid4811 propagates parent_pipeline to nested includes4812 when job is provided as a variable4813 when job does not exist in the parent pipeline4814 behaves like is invalid4815 sets the expected error4816 #metadata4817 is expected to eq {:context_project=>nil, :context_sha=>nil, :extra=>{:job_name=>nil}, :location=>"generated.yml", :type=>:artifact}4818 when job name includes a masked variable4819 is expected to eq {:context_project=>nil, :context_sha=>nil, :extra=>{:job_name=>"xxxxxxxxxxxxxxxxxxxxxxx"}, :location=>"generated.yml", :type=>:artifact}4820Discussions::ResolveService4821 #execute4822 doesn't resolve discussions the user can't resolve4823 resolves the discussion4824 tracks thread resolve usage data4825 executes the notification service4826 schedules an auto-merge4827 adds a system note to the discussion4828 can resolve multiple discussions at once4829 raises an argument error if discussions do not belong to the same noteable4830 with a project that requires all discussion to be resolved4831 does not schedule an auto-merge4832 schedules an auto-merge4833 when discussion is not for a merge request4834 does not execute the notification service4835 does not track thread resolve usage data4836 does not schedule an auto-merge4837 when resolving a discussion4838 in a design4839 when user resolving discussion has open todos4840 marks user todos for given discussion as done4841 in a merge request4842 does not mark user todo as done4843QuickActions::TargetService4844 #execute4845 for issue4846 behaves like find target4847 returns the target4848 behaves like build target4849 builds a new target4850 behaves like build target4851 builds a new target4852 for merge request4853 behaves like find target4854 returns the target4855 behaves like build target4856 builds a new target4857 behaves like build target4858 builds a new target4859 for commit4860 behaves like find target4861 returns the target4862 behaves like no target4863 returns nil4864 with nil target_id4865 behaves like find target4866 returns the target4867 for unknown type4868 behaves like no target4869 returns nil4870Resolvers::DesignManagement::VersionsResolver4871 #resolve4872 a design collection4873 behaves like a source of versions4874 when the user is not authorized4875 is expected to be empty4876 without constraints4877 returns the ordered versions4878 loading associations4879 prevents N+1 queries when loading author4880 when constrained4881 by earlier_or_equal_to_id4882 behaves like a query for all_versions up to the first_version4883 is expected to eq #<ActiveRecord::Relation [#<DesignManagement::Version id: 4, sha: "69f7bf2ac802eef87b9c3253b1527c8996b9c0c7", issue_id: 240, created_at: "2022-06-29 20:34:09.558400000 +0000", author_id: 2265>]>4884 by earlier_or_equal_to_sha4885 behaves like a query for all_versions up to the first_version4886 is expected to eq #<ActiveRecord::Relation [#<DesignManagement::Version id: 4, sha: "69f7bf2ac802eef87b9c3253b1527c8996b9c0c7", issue_id: 240, created_at: "2022-06-29 20:34:09.558400000 +0000", author_id: 2265>]>4887 by earlier_or_equal_to_sha AND earlier_or_equal_to_id4888 and they match4889 behaves like a query for all_versions up to the first_version4890 is expected to eq #<ActiveRecord::Relation [#<DesignManagement::Version id: 4, sha: "69f7bf2ac802eef87b9c3253b1527c8996b9c0c7", issue_id: 240, created_at: "2022-06-29 20:34:09.558400000 +0000", author_id: 2265>]>4891 and they do not match4892 generates a suitable error4893 a design4894 behaves like a source of versions4895 when the user is not authorized4896 is expected to be empty4897 without constraints4898 returns the ordered versions4899 loading associations4900 prevents N+1 queries when loading author4901 when constrained4902 by earlier_or_equal_to_id4903 behaves like a query for all_versions up to the first_version4904 is expected to eq #<ActiveRecord::AssociationRelation [#<DesignManagement::Version id: 4, sha: "69f7bf2ac802eef87b9c325...27c8996b9c0c7", issue_id: 240, created_at: "2022-06-29 20:34:09.558400000 +0000", author_id: 2265>]>4905 by earlier_or_equal_to_sha4906 behaves like a query for all_versions up to the first_version4907 is expected to eq #<ActiveRecord::AssociationRelation [#<DesignManagement::Version id: 4, sha: "69f7bf2ac802eef87b9c325...27c8996b9c0c7", issue_id: 240, created_at: "2022-06-29 20:34:09.558400000 +0000", author_id: 2265>]>4908 by earlier_or_equal_to_sha AND earlier_or_equal_to_id4909 and they match4910 behaves like a query for all_versions up to the first_version4911 is expected to eq #<ActiveRecord::AssociationRelation [#<DesignManagement::Version id: 4, sha: "69f7bf2ac802eef87b9c325...27c8996b9c0c7", issue_id: 240, created_at: "2022-06-29 20:34:09.558400000 +0000", author_id: 2265>]>4912 and they do not match4913 generates a suitable error4914GraphqlHelpers4915 a_graphql_entity_for4916 when no arguments are passed4917 raises an error4918 when the model is nil, with no properties4919 raises an error4920 when the model is nil, any fields are passed4921 raises an error4922 with no model4923 behaves like hash-inclusion with camel-casing4924 with just a model4925 only considers the ID4926 with a model and some method names4927 also considers the method names4928 with a model and some other properties4929 behaves like the superset4930 with a model, method names, and some other properties4931 behaves like the superset4932 graphql_dig_at4933 transforms symbol keys to graphql field names4934 supports integer indexing4935 gracefully degrades to nil4936 supports implicitly flat-mapping traversals4937 does not omit nils at the leaves4938 var4939 allocates a fresh name for each var4940 can be used to construct correct signatures4941 can be used to pass arguments to fields4942 can associate values with variables4943 does not mutate the variable when providing a value4944 can associate many values with variables4945 .query_nodes4946 can produce a basic connection selection4947 allows greater depth4948 accepts fields4949 accepts arguments4950 accepts arguments and fields4951 accepts explicit type name4952 can optionally provide pagination info4953 .query_graphql_path4954 can build nested paths4955 can insert arguments at any point4956 .attributes_to_graphql4957 can serialize hashes to literal arguments4958 .all_graphql_fields_for4959 returns a FieldSelection4960 returns nil if the depth is too shallow4961 can select just the scalar fields4962 selects only as far as 3 levels by default4963 selects only as far as requested4964 omits fields that have required arguments4965 .graphql_mutation4966 when fields argument is passed4967 behaves like correct mutation definition4968 returns correct mutation definition4969 when block is passed4970 behaves like correct mutation definition4971 returns correct mutation definition4972 when both fields and a block are passed4973 raises an ArgumentError4974Snippets::BulkDestroyService4975 #execute4976 deletes the snippets in bulk4977 when snippets is empty4978 returns a ServiceResponse success response4979 when user does not have access to remove the snippet4980 behaves like error is raised4981 returns error4982 no record is deleted4983 when hard_delete option is passed4984 returns a ServiceResponse success response4985 deletes all the snippets that belong to the user4986 when an error is raised deleting the repository4987 behaves like error is raised4988 returns error4989 no record is deleted4990 when an error is raised deleting the records4991 behaves like error is raised4992 returns error4993 no record is deleted4994 when snippet does not have a repository attached4995 returns success4996Issue::Metrics4997 .for_issues4998 returns metrics associated with given issues4999 .with_first_mention_not_earlier_than5000 returns metrics without mentioning in commit or with mentioning after given timestamp5001 when recording the default set of issue metrics on issue save5002 milestones5003 records the first time an issue is associated with a milestone5004 does not record the second time an issue is associated with a milestone5005 list labels5006 records the first time an issue is associated with a list label5007 does not record the second time an issue is associated with a list label5008MergeRequestAssignee5009 associations5010 is expected to belong to merge_request class_name => MergeRequest required: false5011 is expected to belong to assignee class_name => User required: false5012 validations5013 is expected to validate that :assignee is case-sensitively unique within the scope of :merge_request_id5014 scopes5015 in_projects5016 returns issue assignees for given project5017 behaves like having unique enum values5018 has unique values in "state"5019 #attention_requested_by5020 attention requested5021 is expected to eq #<User id:2312 @user1208>5022 attention requested5023 is expected to eq nil5024Spam::SpamVerdictService5025 #execute5026 if all services return nil5027 renders ALLOW verdict5028 if only one service returns a verdict5029 and it is supported5030 renders that verdict5031 and it is unexpected5032 allows5033 if more than one service returns a verdict5034 and they are supported5035 renders the more restrictive verdict5036 and one is supported5037 renders the more restrictive verdict5038 and none are supported5039 renders the more restrictive verdict5040 and attribs - monitorMode is true5041 renders the more restrictive verdict5042 if allow_possible_spam flag is true5043 and a service returns a verdict that should be overridden5044 overrides and renders the override verdict5045 and a service returns a verdict that does not need to be overridden5046 does not override and renders the original verdict5047 records metrics5048 verdict: "allow", error: false, label: "ALLOW"5049 records duration with labels5050 verdict: "allow", error: true, label: "ERROR"5051 records duration with labels5052 verdict: "conditional_allow", error: false, label: "CONDITIONAL_ALLOW"5053 records duration with labels5054 verdict: "block", error: false, label: "BLOCK"5055 records duration with labels5056 verdict: "disallow", error: false, label: "DISALLOW"5057 records duration with labels5058 verdict: "noop", error: false, label: "NOOP"5059 records duration with labels5060 #akismet_verdict5061 if Akismet is enabled5062 if Akismet considers it spam5063 if reCAPTCHA is enabled5064 returns conditionally allow verdict5065 if reCAPTCHA is not enabled5066 renders disallow verdict5067 if Akismet does not consider it spam5068 renders allow verdict5069 if Akismet is not enabled5070 renders allow verdict5071 #spamcheck_verdict5072 if a Spam Check endpoint enabled and set to a URL5073 if the endpoint is accessible5074 if the result is a NOOP verdict5075 returns the verdict5076 if attribs - monitorMode is true5077 returns the verdict5078 the result is a valid verdict5079 returns the verdict5080 when recaptcha is enabled5081 verdict_value: "allow", expected: "allow"5082 returns expected spam constant5083 verdict_value: "conditional_allow", expected: "conditional_allow"5084 returns expected spam constant5085 verdict_value: "disallow", expected: "disallow"5086 returns expected spam constant5087 verdict_value: "block", expected: "block"5088 returns expected spam constant5089 when recaptcha is disabled5090 returns expected spam constant5091 returns expected spam constant5092 returns expected spam constant5093 returns expected spam constant5094 the verdict is an unexpected value5095 returns the string5096 the verdict is an empty string5097 returns nil5098 the verdict is nil5099 returns nil5100 there is an error5101 returns nil5102 the requested is aborted5103 returns nil5104 the confused API endpoint returns both an error and a verdict5105 renders the verdict5106 if the endpoint times out5107 returns nil5108 if a Spam Check endpoint is not set5109 returns nil5110 if Spam Check endpoint is not enabled5111 returns nil5112Clusters::Integrations::ElasticStack5113 associations5114 is expected to belong to cluster class_name => Clusters::Cluster required: false5115 validations5116 is expected to validate that :cluster cannot be empty/falsy5117 is expected not to allow :enabled to be ‹nil›5118 behaves like cluster-based #elasticsearch_client5119 #elasticsearch_client5120 cluster is nil5121 returns nil5122 cluster doesn't have kubeclient5123 returns nil5124 cluster has kubeclient5125 creates proxy elasticsearch_client5126 copies proxy_url, options and headers from kube client to elasticsearch_client5127 when cluster is not reachable5128 returns nil5129 when timeout is provided5130 sets timeout in elasticsearch_client5131Ci::BuildMetadata5132 behaves like having unique enum values5133 has unique values in "timeout_source"5134 #update_timeout_state5135 when project timeout is set5136 when runner is assigned to the job5137 when runner timeout is not set5138 behaves like sets timeout5139 sets project_timeout_source5140 sets project timeout5141 when runner timeout is lower than project timeout5142 behaves like sets timeout5143 sets project_timeout_source5144 sets project timeout5145 when runner timeout is higher than project timeout5146 behaves like sets timeout5147 sets project_timeout_source5148 sets project timeout5149 when job timeout is set5150 when job timeout is higher than project timeout5151 behaves like sets timeout5152 sets project_timeout_source5153 sets project timeout5154 when job timeout is lower than project timeout5155 behaves like sets timeout5156 sets project_timeout_source5157 sets project timeout5158 when both runner and job timeouts are set5159 when job timeout is higher than runner timeout5160 behaves like sets timeout5161 sets project_timeout_source5162 sets project timeout5163 when job timeout is lower than runner timeout5164 behaves like sets timeout5165 sets project_timeout_source5166 sets project timeout5167 validations5168 when attributes are valid5169 returns no errors5170 when data is invalid5171 returns errors5172 set_cancel_gracefully5173 sets cancel_gracefully5174 returns false5175 loose foreign key on ci_builds_metadata.project_id5176 behaves like cleanup by a loose foreign key5177 cleans up (delete or nullify) the model5178API::Helpers::Packages::DependencyProxyHelpers5179 #redirect_registry_request5180 with npm packages5181 application_setting: true, forward_to_registry: true, example_name: "executing redirect"5182 behaves like executing redirect5183 redirects to package registry5184 application_setting: true, forward_to_registry: false, example_name: "executing fallback"5185 behaves like executing fallback5186 redirects to package registry5187 application_setting: false, forward_to_registry: true, example_name: "executing fallback"5188 behaves like executing fallback5189 redirects to package registry5190 application_setting: false, forward_to_registry: false, example_name: "executing fallback"5191 behaves like executing fallback5192 redirects to package registry5193 with pypi packages5194 application_setting: true, forward_to_registry: true, example_name: "executing redirect"5195 behaves like executing redirect5196 redirects to package registry5197 application_setting: true, forward_to_registry: false, example_name: "executing fallback"5198 behaves like executing fallback5199 redirects to package registry5200 application_setting: false, forward_to_registry: true, example_name: "executing fallback"5201 behaves like executing fallback5202 redirects to package registry5203 application_setting: false, forward_to_registry: false, example_name: "executing fallback"5204 behaves like executing fallback5205 redirects to package registry5206 with non-forwardable package type5207 maven5208 raises an error5209 conan5210 raises an error5211 nuget5212 raises an error5213 composer5214 raises an error5215 generic5216 raises an error5217 golang5218 raises an error5219 debian5220 raises an error5221 rubygems5222 raises an error5223 helm5224 raises an error5225 terraform_module5226 raises an error5227 #registry_url5228 package_type: :npm, expected_result: "https://registry.npmjs.org/test"5229 is expected to eq "https://registry.npmjs.org/test"5230 package_type: :pypi, expected_result: "https://pypi.org/simple/test/"5231 is expected to eq "https://pypi.org/simple/test/"5232 with non-forwardable package type maven5233 raises an error5234 with non-forwardable package type conan5235 raises an error5236 with non-forwardable package type nuget5237 raises an error5238 with non-forwardable package type composer5239 raises an error5240 with non-forwardable package type generic5241 raises an error5242 with non-forwardable package type golang5243 raises an error5244 with non-forwardable package type debian5245 raises an error5246 with non-forwardable package type rubygems5247 raises an error5248 with non-forwardable package type helm5249 raises an error5250 with non-forwardable package type terraform_module5251 raises an error5252Gitlab::Database::MigrationHelpers::V25253 #rename_column_concurrently5254 behaves like Setting up to rename a column5255 creates the renamed column, syncing existing data5256 installs triggers to sync new data5257 requires the helper to run in ddl mode5258 when called inside a transaction block5259 raises an error5260 when the existing column has a default value5261 raises an error5262 when passing a batch column5263 when the batch column does not exist5264 raises an error5265 when the batch column does exist5266 passes it when creating the column5267 when the column to rename does not exist5268 raises an error5269 #undo_cleanup_concurrent_column_rename5270 behaves like Setting up to rename a column5271 creates the renamed column, syncing existing data5272 installs triggers to sync new data5273 requires the helper to run in ddl mode5274 when called inside a transaction block5275 raises an error5276 when the existing column has a default value5277 raises an error5278 when passing a batch column5279 when the batch column does not exist5280 raises an error5281 when the batch column does exist5282 passes it when creating the column5283 when the renamed column does not exist5284 raises an error5285 #undo_rename_column_concurrently5286 behaves like Cleaning up from renaming a column5287 when the helper is called repeatedly5288 does not make repeated attempts to cleanup5289 when the renamed column exists5290 removes the sync triggers and renamed columns5291 #cleanup_concurrent_column_rename5292 behaves like Cleaning up from renaming a column5293 when the helper is called repeatedly5294 does not make repeated attempts to cleanup5295 when the renamed column exists5296 removes the sync triggers and renamed columns5297 #create_table5298 using a limit: attribute on .text5299 creates the table as expected5300 #with_lock_retries5301-- transaction_open?()5302 -> 0.0005s5303 sets the migration class name in the logs5304-- transaction_open?()5305 -> 0.0003s5306 does not raise on exhaustion by default5307-- transaction_open?()5308 -> 0.0002s5309 defaults to disallowing subtransactions5310 raise_on_exhaustion: true5311-- transaction_open?()5312 -> 0.0002s5313 sets raise_on_exhaustion as requested5314 raise_on_exhaustion: false5315-- transaction_open?()5316 -> 0.0002s5317 sets raise_on_exhaustion as requested5318 when in transaction5319 when lock retries are enabled5320 does not use Gitlab::Database::WithLockRetries and executes the provided block directly5321 when lock retries are not enabled5322 raises an error5323ErrorTracking::SentryClient::Projects5324 #projects5325 behaves like calls sentry api5326 calls sentry api5327 behaves like has correct return type5328 returns objects of type Gitlab::ErrorTracking::Project5329 behaves like has correct length5330 is expected to eq 25331 essential keys missing in API response5332 raises exception5333 optional keys missing in sentry response5334 behaves like calls sentry api5335 calls sentry api5336 behaves like has correct return type5337 returns objects of type Gitlab::ErrorTracking::Project5338 behaves like has correct length5339 is expected to eq 15340 error object created from sentry response5341 sentry_project_object: :id, sentry_response: :id5342 is expected to eq "2"5343 sentry_project_object: :name, sentry_response: :name5344 is expected to eq "sentry-example"5345 sentry_project_object: :status, sentry_response: :status5346 is expected to eq "active"5347 sentry_project_object: :slug, sentry_response: :slug5348 is expected to eq "sentry-example"5349 sentry_project_object: :organization_name, sentry_response: [:organization, :name]5350 is expected to eq "Sentry"5351 sentry_project_object: :organization_id, sentry_response: [:organization, :id]5352 is expected to eq "1"5353 sentry_project_object: :organization_slug, sentry_response: [:organization, :slug]5354 is expected to eq "sentry"5355 redirects5356 behaves like no Sentry redirects5357 does not follow redirects5358 when exception is raised5359 behaves like maps Sentry exceptions5360 HTTParty::Error5361 is expected to raise ErrorTracking::SentryClient::Error with "Error when connecting to Sentry"5362 Net::OpenTimeout5363 is expected to raise ErrorTracking::SentryClient::Error with "Connection to Sentry timed out"5364 SocketError5365 is expected to raise ErrorTracking::SentryClient::Error with "Received SocketError when trying to connect to Sentry"5366 OpenSSL::SSL::SSLError5367 is expected to raise ErrorTracking::SentryClient::Error with "Sentry returned invalid SSL data"5368 Errno::ECONNREFUSED5369 is expected to raise ErrorTracking::SentryClient::Error with "Connection refused"5370 StandardError5371 is expected to raise ErrorTracking::SentryClient::Error with "Sentry request failed due to StandardError"5372Environments::AutoStopService5373 #execute5374 stops environments and play stop jobs5375 schedules stop processes in bulk5376 when the other sidekiq worker has already been running5377 does not execute stop_in_batch5378 when loop reached timeout5379 returns false and does not continue the process5380 when loop reached loop limit5381 stops only one available environment5382projects/artifacts/_artifact.html.haml5383 delete button5384 with admin5385 when admin mode is enabled5386 has a delete button5387 when admin mode is disabled5388 has no delete button5389 with owner5390 has a delete button5391 with master5392 has a delete button5393 with developer5394 has no delete button5395 with reporter5396 has no delete button5397Gitlab::Ci::Pipeline::Chain::Populate5398 when pipeline doesn not have seeds block5399 does not persist the pipeline5400 does not break the chain5401 populates pipeline with stages5402 correctly assigns user5403 has pipeline iid5404 when pipeline is empty5405 breaks the chain5406 appends an error about missing stages5407 wastes pipeline iid5408 increments the error metric5409 pipeline protect5410 when ref is protected5411 does not protect the pipeline5412 when ref is not protected5413 does not protect the pipeline5414 when pipeline has validation errors5415 breaks the chain5416 appends validation error5417 wastes pipeline iid5418 when there is a seed blocks present5419 when seeds block builds some resources5420 populates pipeline with resources described in the seeds block5421 has pipeline iid5422 when seeds block tries to persist some resources5423 raises error5424 when pipeline gets persisted during the process5425 raises error5426 when variables policy is specified5427 when using only/except build policies5428 behaves like a correct pipeline5429 populates pipeline according to used policies5430 when variables expression is specified5431 when pipeline iid is the subject5432 behaves like a correct pipeline5433 populates pipeline according to used policies5434IssueSidebarBasicEntity5435 contains keys related to issuables5436 contains attributes related to the issue5437 current_user5438 contains attributes related to the current user5439 can_update_escalation_status5440 for a standard issue5441 is not present5442 for an incident issue5443 is present and true5444 without permissions5445 is present and false5446 show_crm_contacts5447 is_reporter: false, contacts_exist_for_group: false, expected: false5448 sets proper boolean value for show_crm_contacts5449 is_reporter: false, contacts_exist_for_group: true, expected: false5450 sets proper boolean value for show_crm_contacts5451 is_reporter: true, contacts_exist_for_group: false, expected: false5452 sets proper boolean value for show_crm_contacts5453 is_reporter: true, contacts_exist_for_group: true, expected: true5454 sets proper boolean value for show_crm_contacts5455 in subgroup5456 with crm enabled5457 is true5458 with crm disabled5459 is false5460Ci::ArchiveTracesCronWorker5461 when a job succeeded5462 executes service5463 behaves like archives trace5464 is expected to be exist5465 when the job finished recently5466 behaves like does not archive trace5467 is expected to be nil5468 when a trace had already been archived5469 continues to archive live traces5470 when an unexpected exception happened during archiving5471 puts a log5472 when a job was cancelled5473 behaves like archives trace5474 is expected to be exist5475 when a job is running5476 behaves like does not archive trace5477 is expected to be nil5478Crm::OrganizationsFinder5479 #execute5480 when customer relations feature is enabled for the group5481 when user does not have permissions to see organizations in the group5482 returns an empty array5483 when user is member of the root group5484 when feature flag is enabled5485 returns all group organizations5486 when user is member of the sub group5487 returns an empty array5488 when customer relations feature is disabled for the group5489 returns an empty array5490 with search informations5491 when search term is empty5492 returns all group organizations alphabetically ordered5493 when search term is not empty5494 searches for name5495 searches for description5496 searches for name and description5497 when searching for organizations state5498 returns only inactive organizations5499 returns only active organizations5500 when searching for organizations ids5501 returns the expected organizations5502Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas5503 properly analyzes queries5504 for SELECT on projects for allowed_gitlab_schema=no_schema5505 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DMLNotAllowedError5506 for SELECT on projects for allowed_gitlab_schema=gitlab_main5507 is expected not to raise Exception5508 for SELECT on projects for allowed_gitlab_schema=gitlab_ci5509 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DMLAccessDeniedError5510 for INSERT for allowed_gitlab_schema=no_schema5511 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DMLNotAllowedError5512 for INSERT for allowed_gitlab_schema=gitlab_main5513 is expected not to raise Exception5514 for INSERT for allowed_gitlab_schema=gitlab_ci5515 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DMLAccessDeniedError5516 for CREATE INDEX for allowed_gitlab_schema=no_schema5517 is expected not to raise Exception5518 for CREATE INDEX for allowed_gitlab_schema=gitlab_main5519 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DDLNotAllowedError5520 for CREATE INDEX for allowed_gitlab_schema=gitlab_ci5521 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DDLNotAllowedError5522 for CREATE SCHEMA for allowed_gitlab_schema=no_schema5523 is expected not to raise Exception5524 for CREATE SCHEMA for allowed_gitlab_schema=gitlab_main5525 is expected not to raise Exception5526 for CREATE SCHEMA for allowed_gitlab_schema=gitlab_ci5527 is expected not to raise Exception5528 for CREATE FUNCTION for allowed_gitlab_schema=no_schema5529 is expected not to raise Exception5530 for CREATE FUNCTION for allowed_gitlab_schema=gitlab_main5531 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DDLNotAllowedError5532 for CREATE FUNCTION for allowed_gitlab_schema=gitlab_ci5533 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DDLNotAllowedError5534 for CREATE TRIGGER for allowed_gitlab_schema=no_schema5535 is expected not to raise Exception5536 for CREATE TRIGGER for allowed_gitlab_schema=gitlab_main5537 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DDLNotAllowedError5538 for CREATE TRIGGER for allowed_gitlab_schema=gitlab_ci5539 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DDLNotAllowedError5540 .require_ddl_mode!5541 when not configured does not raise exception5542 when no schemas are configured does not raise exception (DDL mode)5543 with schemas configured does raise exception (DML mode)5544 .require_dml_mode!5545 when not configured does not raise exception5546 when no schemas are configured does raise exception (DDL mode)5547 with schemas configured does raise exception (DML mode)5548ResourceStateEventFinder5549 #execute5550 returns events accessible by user5551 when issues are private5552 does not return any events5553 when issue is not accesible to the user5554 does not return any events5555 #can_read_eventable?5556 when eventable is an Issue5557 when issue is readable5558 is expected to be truthy5559 when issue is not readable5560 is expected to be falsey5561 when eventable is a MergeRequest5562 when merge request is readable5563 is expected to be truthy5564 when merge request is not readable5565 is expected to be falsey5566Packages::Detail::PackagePresenter5567 #detail_view5568 with build_info5569 returns details with pipeline5570 with multiple build_infos5571 returns details with two pipelines5572 with package_file_build_infos5573 returns details with package_file pipeline5574 without build info5575 returns details without pipeline5576 with conan metadata5577 returns conan_metadatum5578 with composer metadata5579 returns composer_metadatum5580 with nuget_metadatum5581 returns nuget_metadatum5582 with dependency_links5583 returns the correct dependency link5584 with package files pending destruction5585 is expected not to include 655586gitlab:git rake tasks5587 fsck5588 outputs the integrity check for a repo5589 checksum_projects5590 outputs the checksum for a repo5591 outputs blank checksum for no repo5592 outputs zeroes for empty repo5593 outputs errors5594Gitlab::Diff::Suggestion5595 #to_hash5596 when changing content surpasses the top limit5597 behaves like correct suggestion raw content5598 returns correct raw data5599 returns diff lines with correct line numbers5600 when changing content surpasses the amount of lines in the blob (bottom)5601 behaves like correct suggestion raw content5602 returns correct raw data5603 returns diff lines with correct line numbers5604 when lines are within blob lines boundary5605 behaves like correct suggestion raw content5606 returns correct raw data5607 returns diff lines with correct line numbers5608NotificationsHelper5609 notification_icon5610 is expected to match "data-testid=\"notifications-off-icon\""5611 is expected to match "data-testid=\"notifications-off-icon\""5612 is expected to match "data-testid=\"notifications-icon\""5613 is expected to match "data-testid=\"at-icon\""5614 is expected to match "data-testid=\"earth-icon"5615 is expected to match "data-testid=\"eye-icon\""5616 is expected to equal ""5617 notification_title5618 is expected to match "Watch"5619 is expected to match "On mention"5620 is expected to match "Global"5621 #notification_icon_level5622 is expected to eq "owner_disabled"5623 is expected to eq "watch"5624 is expected to eq "participating"5625Resolvers::ProjectMilestonesResolver5626 #resolve5627 calls MilestonesFinder to retrieve all milestones5628 when including ancestor milestones5629 calls MilestonesFinder with correct parameters5630 by ids5631 calls MilestonesFinder with correct parameters5632 by state5633 calls MilestonesFinder with correct parameters5634 by sort5635 calls MilestonesFinder with correct parameters5636 uses offset-pagination when sorting by EXPIRED_LAST_DUE_DATE_ASC5637 uses offset-pagination when sorting by EXPIRED_LAST_DUE_DATE_DESC5638 by timeframe5639 when start_date and end_date are present5640 calls MilestonesFinder with correct parameters5641 when start date is after end_date5642 generates an error5643 when only start_date is present5644 generates an error5645 when only end_date is present5646 generates an error5647 when passing a timeframe5648 calls MilestonesFinder with correct parameters5649 when title is present5650 calls MilestonesFinder with correct parameters5651 when search_title is present5652 calls MilestonesFinder with correct parameters5653 when containing date is present5654 calls MilestonesFinder with correct parameters5655Gitlab::Suggestions::CommitMessage5656 #message5657 suggestion_set: suggestion_set_same_project5658 when a custom commit message is not specified5659 and is nil5660 uses the default commit message5661 and is an empty string5662 uses the default commit message5663 when a custom commit message is specified for forked project5664 uses the default commit message5665 when a custom commit message is specified5666 shows the custom commit message5667 is specified and includes all placeholders5668 generates a custom commit message5669 when a custom commit message is specified for forked project5670 uses the target project commit message5671 suggestion_set: suggestion_set_forked_project5672 when a custom commit message is not specified5673 and is nil5674 uses the default commit message5675 and is an empty string5676 uses the default commit message5677 when a custom commit message is specified for forked project5678 uses the default commit message5679 when a custom commit message is specified5680 shows the custom commit message5681 is specified and includes all placeholders5682 generates a custom commit message5683 when a custom commit message is specified for forked project5684 uses the target project commit message5685DiscussionDiffFileEntity5686 when there is no merge request5687 behaves like diff file discussion entity5688 behaves like diff file base entity5689 exposes essential attributes5690 when diff file does not have a blob and content sha5691 exposes some attributes as nil5692 when there is a merge request5693 exposes additional attributes5694 exposes no diff lines5695 behaves like diff file discussion entity5696 behaves like diff file base entity5697 exposes essential attributes5698 when diff file does not have a blob and content sha5699 exposes some attributes as nil5700MergeRequests::RemoveApprovalService5701 #execute5702 with a user who has approved5703 removes the approval5704 creates an unapproval note, triggers a web hook, and sends a notification5705 tracks merge request unapprove action5706 with a user who has not approved5707 does not create an unapproval note and triggers web hook5708 does not track merge request unapprove action5709Gitlab::RepositoryCache5710 #cache_key5711 project repository5712 behaves like cache_key examples5713 includes the namespace5714 with a given namespace5715 includes the full namespace5716 personal snippet repository5717 behaves like cache_key examples5718 includes the namespace5719 with a given namespace5720 includes the full namespace5721 project snippet repository5722 behaves like cache_key examples5723 includes the namespace5724 with a given namespace5725 includes the full namespace5726 #expire5727 expires the given key from the cache5728 #fetch5729 fetches the given key from the cache5730 accepts a block5731 #write5732 writes the given key and value to the cache5733 passes additional options to the backend5734 #fetch_without_caching_false5735 requires a block5736 when the key does not exist in the cache5737 when the result of the block is truthy5738 returns the result of the block5739 caches the value5740 when the result of the block is falsey5741 returns the result of the block5742 does not cache the value5743 when the cached value is truthy5744 returns the cached value5745 does not execute the block5746 does not write to the cache5747 when the cached value is falsey5748 returns the result of the block5749 writes the truthy value to the cache5750PoolRepository5751 associations5752 is expected to belong to shard required: false5753 is expected to belong to source_project required: false5754 is expected to have many member_projects5755 validations5756 is expected to validate that :shard cannot be empty/falsy5757 is expected to validate that :source_project cannot be empty/falsy5758 #disk_path5759 sets the hashed disk_path5760 #unlink_repository5761 when the last member leaves5762 schedules pool removal5763 when the second member leaves5764 does not schedule pool removal5765DiscussionEntity5766 exposes correct attributes5767 does not include base discussion in the notes5768 resolved_by matches note_user_entity schema5769 exposes the url for custom award emoji5770 when is LegacyDiffDiscussion5771 exposes correct attributes5772 when diff file is present5773 exposes diff file attributes5774Gitlab::Ci::Reports::ReportsComparer5775 #initialize5776 sets getter for the report comparer5777 return base report5778 return head report5779 #status5780 returns not implemented error5781 when success? is true5782 returns status success5783 when success? is false5784 returns status failed5785 when base_report is nil5786 returns status not_found5787 when head_report is nil5788 returns status not_found5789 #success?5790 returns not implemented error5791 #existing_errors5792 returns not implemented error5793 #resolved_errors5794 returns not implemented error5795 #errors_count5796 returns not implemented error5797 #resolved_count5798 returns not implemented error5799 #total_count5800 returns not implemented error5801 #not_found?5802 when base report is nil5803 is expected to be truthy5804 when base report exists5805 is expected to be falsey5806Integrations::ChatMessage::AlertMessage5807 behaves like Integrations::ChatMessage5808 when input contains link markup5809 strips all link markup characters5810 #message5811 returns the correct message5812 #attachments5813 returns an array of one5814 contains the correct attributes5815 returns the correct color5816 returns the correct attachment fields5817 returns the correctly formatted time5818Banzai::ReferenceParser::FeatureFlagParser5819 #nodes_visible_to_user5820 when the link has a data-issue attribute5821 behaves like referenced feature visibility5822 when feature is disabled5823 does not create reference5824 when feature is enabled only for team members5825 does not create reference for non member5826 creates reference for member5827 when feature is enabled5828 creates reference5829 #referenced_by5830 when the link has a data-feature-flag attribute5831 using an existing feature flag ID5832 returns an Array of feature flags5833 using a non-existing feature flag ID5834 returns an empty Array5835mail_room.yml5836 when incoming email is disabled5837 contains no configuration5838 when both incoming email and service desk email are enabled5839 contains the intended configuration5840 when both incoming email and service desk email are enabled for Microsoft Graph5841 contains the intended configuration5842Gitlab::Graphql::Deprecation5843 .parse5844 with nil5845 parses to nil5846 with empty options5847 parses to an empty deprecation5848 with defined options5849 assigns the properties5850 validations5851 is expected to be valid5852 when the milestone is absent5853 is expected not to be valid5854 when the milestone is not milestone-ish5855 is expected not to be valid5856 when the milestone is not a string5857 is expected not to be valid5858 when the reason is absent5859 is expected not to be valid5860 when the reason is not a known reason5861 is expected not to be valid5862 when the reason is a string5863 is expected to be valid5864 when the reason is a string ending with a period5865 is expected not to be valid5866 #deprecation_reason5867 when there is a replacement5868 renders as reason-replacement-milestone5869 when there is no replacement5870 renders as reason-milestone5871 processing of reason5872 when the reason is a known reason such as :renamed5873 renders the reason_text correctly5874 when the reason is a known reason such as :alpha5875 renders the reason_text correctly5876 when the reason is any other string5877 appends a period5878 #edit_description5879 appends milestone:reason with a leading space if there is a description5880 returns nil if there is no description5881 #original_description5882 records the description passed to it5883 #markdown5884 when there is a replacement5885 when the context is :inline5886 renders on one line5887 when the context is :block5888 renders a warning note5889 when there is no replacement5890 when the context is :inline5891 renders on one line5892 when the context is :block5893 renders a warning note5894Gitlab::Ci::Badge::Coverage::Template5895 behaves like a badge template5896 #key_text5897 says coverage by default5898 when custom key_text is defined5899 returns custom value5900 when its size is larger than the max allowed value5901 returns default value5902 #key_width5903 is fixed by default5904 when custom key_width is defined5905 returns custom value5906 when it is larger than the max allowed value5907 returns default value5908 #value_text5909 when coverage is known5910 returns coverage percentage5911 when coverage is known to many digits5912 returns rounded coverage percentage5913 when coverage is unknown5914 returns string that says coverage is unknown5915 #value_width5916 when coverage is known5917 is narrower when coverage is known5918 when coverage is unknown5919 is wider when coverage is unknown to fit text5920 #key_color5921 always has the same color5922 #value_color5923 when coverage is good5924 is green5925 when coverage is acceptable5926 is green-orange5927 when coverage is medium5928 is orange-yellow5929 when coverage is low5930 is red5931 when coverage is unknown5932 is grey5933 #width5934 when coverage is known5935 returns the key width plus value width5936 when coverage is unknown5937 returns key width plus wider value width5938Banzai::ObjectRenderer5939 #render5940 with cache5941 renders and redacts an Array of objects5942 calls Banzai::ReferenceRedactor to perform redaction5943 retrieves field content using Banzai::Renderer.render_field5944 passes context to PostProcessPipeline5945 without cache5946 renders and redacts an Array of objects5947 calls Banzai::ReferenceRedactor to perform redaction5948 retrieves field content using Banzai::Renderer.cacheless_render_field5949Ci::BuildsHelper5950 #build_summary5951 when build has no trace5952 when skip is false5953 returns no job log5954 when skip is true5955 returns no job log5956 when build has trace5957 when skip is true5958 returns link to logs5959 when skip is false5960 returns log lines5961 #sidebar_build_class5962 build_id: 1, current_build_id: 1, retried: true, expected_result: "active retried"5963 builds sidebar html class5964 build_id: 1, current_build_id: 1, retried: false, expected_result: "active"5965 builds sidebar html class5966 build_id: 1, current_build_id: 2, retried: false, expected_result: ""5967 builds sidebar html class5968 build_id: 1, current_build_id: 2, retried: true, expected_result: "retried"5969 builds sidebar html class5970 #javascript_build_options5971 returns build options5972 #build_failed_issue_options5973 returns failed title and description5974 #prepare_failed_jobs_summary_data5975 returns array of failed jobs with id, failure and failure summary5976Projects::CreateFromTemplateService5977 calls the importer service5978 returns the project that is created5979 when template is not present5980 does not set import set import type5981 does not set import set import source5982 is not scheduled5983 repository is empty5984 the result project5985 overrides template description5986 overrides template visibility_level5987MergeRequestReviewer5988 behaves like having unique enum values5989 has unique values in "state"5990 associations5991 is expected to belong to merge_request class_name => MergeRequest required: false5992 is expected to belong to reviewer class_name => User required: false inverse_of => merge_request_reviewers5993 #attention_requested_by5994 attention requested5995 is expected to eq #<User id:2501 @user1287>5996 attention requested5997 is expected to eq nil5998Boards::VisitsFinder5999 #latest6000 when a project board6001 returns nil when there is no user6002 queries for most recent visit6003 queries for last N visits6004 when a group board6005 returns nil when there is no user6006 queries for most recent visit6007 queries for last N visits6008Gitlab::Ci::Jwt6009 #payload6010 has correct values for the standard JWT attributes6011 has correct values for the custom attributes6012 skips user related custom attributes if build has no user assigned6013 ref type6014 branches6015 is "branch"6016 tags6017 is "tag"6018 merge requests6019 is "branch"6020 ref_protected6021 is false when ref is not protected6022 is true when ref is protected6023 environment6024 has correct values for environment attributes6025 .for_build6026 when ci_jwt_signing_key is present6027 behaves like generating JWT for build6028 when signing key is present6029 generates JWT with key id6030 generates JWT for the given job with ttl equal to build timeout6031 generates JWT for the given job with default ttl if build timeout is not set6032 when signing key is missing6033 raises NoSigningKeyError6034Resolvers::AlertManagement::HttpIntegrationsResolver6035 is expected to have nullable GraphQL type AlertManagementHttpIntegrationConnection6036 user does not have permission6037 is expected to be empty6038 user has developer permission6039 is expected to be empty6040 user has maintainer permission6041 is expected to contain exactly #<AlertManagement::HttpIntegration id: 1, created_at: "2022-06-29 20:36:53.395069043 +0000", updated_...tifier: "4b1e1365", name: "DataDog", payload_example: {}, payload_attribute_mapping: {}, token: nil>6042 when HTTP Integration ID is given6043 when integration is from the current project6044 is expected to contain exactly #<AlertManagement::HttpIntegration id: 2, created_at: "2022-06-29 20:36:53.403223522 +0000", updated_...tifier: "2467b258", name: "DataDog", payload_example: {}, payload_attribute_mapping: {}, token: nil>6045 when integration is from other project6046 is expected to be empty6047RspecFlaky::FlakyExample6048 #initialize6049 when given an Example hash6050 behaves like a valid FlakyExample instance6051 returns valid attributes6052 when given a FlakyExample hash6053 behaves like a valid FlakyExample instance6054 returns valid attributes6055 #update_flakiness!6056 when given an Example hash6057 behaves like an up-to-date FlakyExample instance6058 sets the first_flaky_at if none exists6059 maintains the first_flaky_at if exists6060 updates the last_flaky_at6061 updates the flaky_reports6062 when passed a :last_attempts_count6063 updates the last_attempts_count6064 when run on the CI6065 updates the last_flaky_job6066 when given a FlakyExample hash6067 behaves like an up-to-date FlakyExample instance6068 sets the first_flaky_at if none exists6069 maintains the first_flaky_at if exists6070 updates the last_flaky_at6071 updates the flaky_reports6072 when passed a :last_attempts_count6073 updates the last_attempts_count6074 when run on the CI6075 updates the last_flaky_job6076 #to_h6077 when given an Example hash6078 behaves like a valid FlakyExample hash6079 returns a valid hash6080 when given a FlakyExample hash6081 behaves like a valid FlakyExample hash6082 returns a valid hash6083LabelLink6084 is expected to be valid6085 is expected to belong to label required: false6086 is expected to belong to target required: false6087 behaves like a BulkInsertSafe model6088 when calling class methods directly6089 raises an error when method is not bulk-insert safe6090 does not raise an error when method is bulk-insert safe6091 .bulk_insert!6092 when all items are valid6093 inserts them all6094 returns an empty array6095 when some items are invalid6096 does not insert any of them and raises an error6097 inserts them anyway when bypassing validations6098 .for_target6099 returns the label links for a given target6100Gitlab::Ci::Pipeline::Logger6101 #log_when6102 stores blocks for later evaluation6103 #instrument6104 returns the block's value6105 records durations of instrumented operations6106 raises an error when block is not provided6107 #instrument_with_sql6108 with a single query6109 is expected to eq 06110 includes SQL metrics6111 with multiple queries6112 is expected to eq 06113 includes SQL metrics6114 with multiple observations6115 includes SQL metrics6116 when there are not SQL operations6117 is expected to eq 1236118 does not include SQL metrics6119 #observe6120 records durations of observed operations6121 #commit6122 when the feature flag is enabled6123 logs to application.json6124 with log conditions6125 does not log when the conditions are false6126 logs when a condition is true6127 when project is not passed and pipeline is not persisted6128 logs to application.json6129 when the feature flag is disabled6130 does not log6131BulkImports::NdjsonPipeline6132 marks pipeline as ndjson6133 #deep_transform_relation!6134 transforms relation hash6135 when subrelations is an array6136 transforms each element of the array6137 when subrelation is a hash6138 transforms subrelation hash6139 when subrelation is nil6140 removes subrelation6141 #transform6142 calls relation factory6143 when data is nil6144 returns6145 when relation hash is nil6146 returns6147 #load6148 when object is not persisted6149 saves the object6150 when object is missing6151 returns6152 #relation_class6153 when relation name is pluralized6154 returns constantized class6155 when relation name is singularized6156 returns constantized class6157 #relation_key_override6158 when portable is group6159 returns group relation name override6160 when portable is project6161 returns group relation name override6162 #relation_factory6163 when portable is group6164 returns group relation factory6165 when portable is project6166 returns project relation factory6167Gitlab::Analytics::CycleAnalytics::BaseQueryBuilder6168 scopes query within the target project6169 date range parameters6170 when filters by only the `from` parameter6171 is expected to eq 26172 when filters by both `from` and `to` parameters6173 is expected to eq 16174 invalid date range is provided6175 is expected to eq 06176 in progress filter6177 when the filter is present6178 returns only open items6179 when the filter is absent6180 returns finished items6181Packages::Debian::ProcessChangesService6182 #execute6183 with valid package file6184 updates package and package file6185 with existing package6186 does not create a package6187 marked as pending_destruction6188 creates a package6189 with invalid package file6190 raise ExtractionError6191 when creating package fails6192 remove the package file6193Integrations::Zentao6194 #create6195 stores data in data_fields correctly6196 #fields6197 returns custom fields6198 #test6199 gets response from Gitlab::Zentao::Client#ping6200 #help6201 renders prompt information6202Gitlab::Usage::Metrics::Instrumentations::CountImportedProjectsTotalMetric6203 with all time frame6204 behaves like a correct instrumented metric value and query6205 behaves like a correct instrumented metric value6206 has correct value6207 behaves like a correct instrumented metric query6208 has correct generate query6209 for 28d time frame6210 behaves like a correct instrumented metric value and query6211 behaves like a correct instrumented metric value6212 has correct value6213 behaves like a correct instrumented metric query6214 has correct generate query6215Gitlab::Checks::DiffCheck6216 #validate!6217 when commits is empty6218 does not call find_changed_paths6219 when commits is not empty6220 when deletion is true6221 does not call find_changed_paths6222 with LFS not enabled6223 does not invoke :lfs_file_locks_validation6224 with LFS enabled6225 when change is sent by a different user6226 raises an error if the user is not allowed to update the file6227 when change is sent by the author of the lock6228 doesn't raise any error6229BulkImports::EntitiesFinder6230 #execute6231 returns a list of import entities associated with user6232 when bulk import is specified6233 returns a list of import entities filtered by bulk import6234 when specified import is not associated with user6235 does not return entities6236 when status is specified6237 returns a list of import entities filtered by status6238 when invalid status is specified6239 does not filter entities by status6240 when bulk import and status are specified6241 returns matched import entities6242 when order is specifed6243 when order is specified as asc6244 returns entities sorted ascending6245 when order is specified as desc6246 returns entities sorted descending6247IncidentManagement::PagerDuty::CreateIncidentIssueService6248 #execute6249 when PagerDuty webhook setting is active6250 when issue can be created6251 creates a new issue6252 responds with success6253 the issue author is Alert bot6254 issue has a correct title6255 issue has a correct description6256 when the payload does not contain a title6257 does not create a GitLab issue6258 responds with error6259 when PagerDuty webhook setting is not active6260 does not create a GitLab issue6261 responds with forbidden6262Projects::ProcessSyncEventsWorker6263 is labeled as idempotent6264 performs multiple times sequentially without raising an exception6265 #perform6266 consumes all sync events6267 syncs project namespace id6268 logs the service result6269Banzai::Filter::MarkdownFilter6270 markdown engine from context6271 defaults to CommonMark6272 uses CommonMark6273 code block6274 using CommonMark6275 adds language to lang attribute when specified6276 does not add language to lang attribute when not specified6277 works with utf8 chars in language6278 works with additional language parameters6279 source line position6280 using CommonMark6281 defaults to add data-sourcepos6282 disables data-sourcepos6283 footnotes in tables6284 processes footnotes in table cells6285Gitlab::ErrorTracking::Processor::GrpcErrorProcessor6286 .call6287 when there is no GRPC exception6288 with Raven event6289 behaves like leaves data unchanged6290 is expected to include {:fingerprint => ["ArgumentError", "Missing arguments"]}6291 with Sentry event6292 behaves like leaves data unchanged6293 is expected to include {:fingerprint => ["ArgumentError", "Missing arguments"]}6294 when there is a GRPC exception with a debug string6295 with Raven event6296 behaves like processes the exception6297 removes the debug error string and stores it as an extra field6298 with no custom fingerprint6299 removes the debug error string and stores it as an extra field6300 with Sentry event6301 behaves like processes the exception6302 removes the debug error string and stores it as an extra field6303 with no custom fingerprint6304 removes the debug error string and stores it as an extra field6305 when there is a wrapped GRPC exception with a debug string6306 with Raven event6307 behaves like processes the exception6308 removes the debug error string and stores it as an extra field6309 with no custom fingerprint6310 removes the debug error string and stores it as an extra field6311 with Sentry event6312 behaves like processes the exception6313 removes the debug error string and stores it as an extra field6314 with no custom fingerprint6315 removes the debug error string and stores it as an extra field6316Gitlab::Database::Partitioning::SlidingListStrategy6317 #current_partitions6318 detects both partitions6319 #validate_and_fix6320 feature flag is disabled6321 does not try to fix the default partition value6322 feature flag is enabled6323 does not call change_column_default if the partitioning in a valid state6324 calls change_column_default on partition_key with the most default partition number6325 does not change the default column if it has been changed in the meanwhile by another process6326 #active_partition6327 is the partition with the largest value6328 #missing_partitions6329 when next_partition_if returns true6330 is a partition definition for the next partition in the series6331 when next_partition_if returns false6332 is empty6333 when there are no partitions for the table6334 returns a partition for value 16335 #extra_partitions6336 when some partitions are true for detach_partition_if6337 is the leading set of partitions before that value6338 when all partitions are true for detach_partition_if6339 is all but the most recent partition6340 #initial_partition6341 starts with the value 16342 #next_partition6343 is one after the active partition6344 #ensure_partitioning_column_ignored!6345 raises when the column is not ignored6346 does not raise when the column is ignored6347 redirecting inserts as the active partition changes6348 redirects to the new partition6349ColorValidator6350 fails fast for long invalid string6351 color: "#000abc", is_valid: true6352 only accepts valid colors6353 color: "#aaa", is_valid: true6354 only accepts valid colors6355 color: "#BBB", is_valid: true6356 only accepts valid colors6357 color: "#cCc", is_valid: true6358 only accepts valid colors6359 color: "#ffff", is_valid: false6360 only accepts valid colors6361 color: "#000111222", is_valid: false6362 only accepts valid colors6363 color: "invalid", is_valid: false6364 only accepts valid colors6365 color: "red", is_valid: false6366 only accepts valid colors6367 color: "000", is_valid: false6368 only accepts valid colors6369 color: nil, is_valid: true6370 only accepts valid colors6371 color: "", is_valid: false6372 only accepts valid colors6373 color: Wed, 29 Jun 2022 20:03:04.115361606 UTC +00:00, is_valid: false6374 only accepts valid colors6375 color: #<Gitlab::Color:0x00007f8f1fbd5aa0 @value="#FF0000">, is_valid: true6376 only accepts valid colors6377 when color must be present6378 rejects nil6379Ci::EnsureStageService#execute6380 when build has a stage assigned6381 does not create a new stage6382 when build does not have a stage assigned6383 creates a new stage6384 when build is invalid6385 does not create a new stage6386 when new stage can not be created because of an exception6387 retries up to two times6388Mutations::CustomEmoji::Destroy6389 field tests6390 is expected to have graphql arguments :id6391 is expected to have graphql field :custom_emoji6392 #resolve6393 when the user6394 has no permissions6395 behaves like does not delete custom emoji6396 raises exception6397 when the user is developer and not the owner of custom emoji6398 behaves like does not delete custom emoji6399 raises exception6400 when user6401 is maintainer6402 behaves like deletes custom emoji6403 returns deleted custom emoji6404 is owner6405 behaves like deletes custom emoji6406 returns deleted custom emoji6407 is developer and creator of the emoji6408 behaves like deletes custom emoji6409 returns deleted custom emoji6410Repositories::DestroyService6411 removes the repository6412 flushes the repository cache6413 does not perform any action if repository path does not exist and returns success6414 gracefully handles exception if the repository does not exist on disk6415 on a read-only instance6416 schedules the repository deletion6417 with a project wiki repository6418 schedules the repository deletion6419Gitlab::ImportExport::UploadsRestorer6420 bundle a project Git repo6421 legacy storage6422 saves the uploads successfully6423 copies the uploads to the project path6424 hashed storage6425 saves the uploads successfully6426 copies the uploads to the project path6427MergeRequests::AddSpentTimeService6428 #execute6429 creates a new timelog with the specified duration and summary6430 creates a system note with the time added6431 saves usage data6432 is more efficient than using the full update-service6433 when duration is nil6434 does not create a timelog with the specified duration6435Packages::Maven::CreatePackageService6436 #execute6437 with version6438 creates a new package with metadatum6439 behaves like assigns the package creator6440 assigns the package creator6441 without version6442 creates a new package with metadatum6443 behaves like assigns the package creator6444 assigns the package creator6445 path is missing6446 raises an error6447Packages::Npm::Metadatum6448 relationships6449 is expected to belong to package required: false inverse_of => npm_metadatum6450 validations6451 package6452 is expected to validate that :package cannot be empty/falsy6453 ensure npm package type6454 package_json6455 is expected to allow :package_json to be ‹{"name" => "foo", "version" => "v1.0", "dist" => {"tarball"=>"x", "shasum"=>"x"}}›6456 is expected to allow :package_json to be ‹{"name" => "foo", "version" => "v1.0", "dist" => {"tarball"=>"x", "shasum"=>"x"}, extra-field: {:foo=>"bar"}}›6457 is expected to allow :package_json to be ‹{"name" => "foo", "version" => "v1.0", "dist" => {"tarball"=>"x", "shasum"=>"x", :"extra-field"=>"x"}}›6458 is expected not to allow :package_json to be ‹{"version" => "v1.0", "dist" => {"tarball"=>"x", "shasum"=>"x"}}›6459 is expected not to allow :package_json to be ‹{"name" => "foo", "dist" => {"tarball"=>"x", "shasum"=>"x"}}›6460 is expected not to allow :package_json to be ‹{"name" => "foo", "version" => "v1.0"}›6461 is expected not to allow :package_json to be ‹{"name" => "foo", "version" => "v1.0", "dist" => {"shasum"=>"x"}}›6462 is expected not to allow :package_json to be ‹{"name" => "foo", "version" => "v1.0", "dist" => {"tarball"=>"x"}}›6463 is expected not to allow :package_json to be ‹{}›6464 is expected not to allow :package_json to be ‹{test: "testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest"}›6465Gitlab::Graphql::Loaders::IssuableLoader6466 #find_all6467 factory: :project, param_name: :project_id6468 assignes the parent parameter, and batching_find_alls the finder6469 factory: :group, param_name: :group_id6470 assignes the parent parameter, and batching_find_alls the finder6471 the parent is of an unexpected type6472 raises an error if we pass an unexpected parent6473 #batching_find_all6474 the finder params are anything other than [iids]6475 batching_find_alls the finder, setting the correct parent parameter6476 allows a post-process block6477 the finder params are exactly [iids]6478 batches requests6479ExclusiveLeaseGuard6480 #try_obtain_lease6481 obtains the lease, calls internal_method and releases the lease6482 when the lease is already obtained6483 does not call internal_method but logs error6484 with overwritten lease_release?6485 does not release the lease after execution6486 #exclusive_lease6487 uses the class name as lease key6488 with overwritten lease_key6489 uses the custom lease key6490 #release_lease6491 sends a cancel message to ExclusiveLease6492 #renew_lease!6493 sends a renew message to the exclusive_lease instance6494projects/commit/show.html.haml6495 inline diff view6496 has limited width6497 parallel diff view6498 spans full width6499 in the context of a merge request6500 shows that it is in the context of a merge request6501Clusters::Aws::FinalizeCreationService6502 #execute6503 configures the provider and platform6504 calls the create_service_account_service6505 configures cluster node authentication6506 error handling6507 failed to request stack details from AWS6508 sets the status to :errored with an appropriate error message6509 failed to create auth config map6510 sets the status to :errored with an appropriate error message6511 failed to save records6512 sets the status to :errored with an appropriate error message6513Projects::RecordTargetPlatformsService#execute6514 when detector returns target platform values6515 behaves like saves and returns detected target platforms6516 creates a new setting record for the project6517 returns the array of stored target platforms6518 when detector returns a non-array value6519 behaves like saves and returns detected target platforms6520 creates a new setting record for the project6521 returns the array of stored target platforms6522 when a project has an existing setting record6523 when target platforms changed6524 updates6525 is expected to contain exactly "ios" and "osx"6526 when target platforms are the same6527 does not update6528 Build iOS guide email experiment6529 experiment candidate6530 executes a Projects::InProductMarketingCampaignEmailsService6531 behaves like tracks experiment assignment event6532 tracks the assignment event6533 experiment control6534 behaves like does not send email6535 does not execute a Projects::InProductMarketingCampaignEmailsService6536 behaves like tracks experiment assignment event6537 tracks the assignment event6538 when project is not an iOS project6539 does not track experiment assignment event6540 behaves like does not send email6541 does not execute a Projects::InProductMarketingCampaignEmailsService6542 when detector does not return any target platform values6543 does nothing6544 is expected to be nil6545Boards::Issues::CreateService6546 #execute6547 delegates the create proceedings to Issues::CreateService6548 creates a new issue6549 adds the label of the list to the issue6550Gitlab::ImportExport::Json::LegacyReader::File6551 behaves like import/export json legacy reader6552 #consume_attributes6553 when valid path is passed6554 no excluded attributes6555 returns the whole tree from parsed JSON6556 some attributes are excluded6557 returns hash without excluded attributes and relations6558 when invalid path is passed6559 raises an exception6560 #consume_relation6561 when valid path is passed6562 key has not been consumed6563 returns an Enumerator6564 value is nil6565 yields nothing to the Enumerator6566 value is an array6567 yields every relation value to the Enumerator6568 value is not array6569 yields the value with index 0 to the Enumerator6570 key has been consumed6571 yields nothing to the Enumerator6572 when invalid path is passed6573 raises an exception6574 #exist?6575 given valid path6576 is expected to equal true6577 given invalid path6578 is expected to equal false6579PersonalAccessTokens::ExpiringWorker6580 #perform6581 when a token needs to be notified6582 uses notification service to send the email6583 marks the notification as delivered6584 when no tokens need to be notified6585 doesn't use notification service to send the email6586 doesn't change the notification delivered of the token6587 when a token is an impersonation token6588 doesn't use notification service to send the email6589 doesn't change the notification delivered of the token6590RuboCop::Cop::RSpec::ExpectGitlabTracking6591 good: expect_snowplow_event(category: nil, action: nil)6592 does not register an offense6593 good: expect_snowplow_event(category: "EventCategory", action: "event_action")6594 does not register an offense6595 good: expect_snowplow_event(category: "EventCategory", action: "event_action", label: "label", property: "property")6596 does not register an offense6597 good: expect_no_snowplow_event6598 does not register an offense6599 bad: expect(Gitlab::Tracking).to receive(:event)6600 registers an offense6601 bad: expect(Gitlab::Tracking).to_not receive(:event)6602 registers an offense6603 bad: expect(Gitlab::Tracking).not_to receive(:event)6604 registers an offense6605 bad: expect(Gitlab::Tracking).to_not receive(:event).with("EventCategory", "event_action")6606 registers an offense6607 bad: expect(Gitlab::Tracking).not_to receive(:event).with("EventCategory", "event_action")6608 registers an offense6609 bad: expect(Gitlab::Tracking).to receive(:event).with("EventCategory", "event_action", label: "label", property: "property")6610 registers an offense6611 bad: expect(Gitlab::Tracking).to have_received(:event).with("EventCategory", "event_action")6612 registers an offense6613 bad: expect(Gitlab::Tracking).to_not have_received(:event).with("EventCategory", "event_action")6614 registers an offense6615 bad: expect(Gitlab::Tracking).not_to have_received(:event).with("EventCategory", "event_action")6616 registers an offense6617 bad: allow(Gitlab::Tracking).to receive(:event).and_call_original6618 registers an offense6619Packages::CreateTemporaryPackageService6620 #execute6621 creates the package6622 can create two packages in a row6623 behaves like assigns the package creator6624 assigns the package creator6625 behaves like assigns build to package6626 with build info6627 assigns the pipeline to the package6628profiles/preferences/show6629 navigation theme6630 has an id for anchoring6631 has correct stylesheet tags6632 syntax highlighting theme6633 has an id for anchoring6634 behavior6635 has option for Render whitespace characters in the Web IDE6636 has an id for anchoring6637 has helpful homepage setup guidance6638 localization6639 has an id for anchoring6640Gitlab::Auth::Atlassian::IdentityLinker6641 linked identity exists6642 sets #changed? to false6643 does not mark as failed6644 identity already linked to different user6645 sets #changed? to false6646 exposes error message6647 identity needs to be created6648 sets #changed? to true6649 behaves like an atlassian identity6650 sets the proper values6651Gitlab::Database::Count::ExactCountStrategy6652 #count6653 counts all models6654 returns default value if count times out6655Grafana::ProxyService6656 .from_cache6657 behaves like initializes an instance6658 initializes an instance of ProxyService class6659 #initialize6660 behaves like initializes an instance6661 initializes an instance of ProxyService class6662 #execute6663 when grafana integration is not configured6664 returns error6665 with caching6666 when value not present in cache6667 returns nil6668 when value present in cache6669 returns cached value6670 call prometheus api6671 connection to grafana datasource succeeds6672 returns the http status code and body from prometheus6673 connection to grafana datasource fails6674 returns error6675JiraConnect::SyncDeploymentsWorker6676 behaves like worker with data consistency6677 .get_data_consistency_feature_flag_enabled?6678 returns true6679 .get_data_consistency6680 returns correct data consistency6681 #perform6682 when the object exists6683 calls the Jira sync service6684 when the object does not exist6685 does not call the sync service6686Ci::JobTokenScope::RemoveProjectService6687 #execute6688 behaves like editable job token scope6689 when job token scope is disabled for the given project6690 behaves like returns error6691 returns an error response6692 when user does not have permissions to edit the job token scope6693 behaves like returns error6694 returns an error response6695 when user has permissions to edit the job token scope6696 when target project is not provided6697 behaves like returns error6698 returns an error response6699 when target project is provided6700 when user does not have permissions to read the target project6701 behaves like returns error6702 returns an error response6703 when user has permissions on source and target project6704 removes the project from the scope6705 when target project is same as the source project6706 behaves like returns error6707 returns an error response6708ListboxHelper6709 #gl_redirect_listbox_tag6710 creates root element with expected classes6711 sets data attributes for items and selected6712 adds styled button6713 sets button text to selected item6714 given html_options6715 applies them to the root element6716 when selected does not match any item6717 selected: nil6718 selects first item6719 selected: "qux"6720 selects first item6721Gitlab::Ci::Config::Entry::Rules::Rule::Changes6722 .new6723 when using a string array6724 is expected to be valid6725 when using an integer array6726 is expected not to be valid6727 returns errors6728 when using a string6729 is expected not to be valid6730 reports an error about invalid policy6731 when using a long array6732 is expected not to be valid6733 returns errors6734 when clause is empty6735 is expected to be valid6736 when policy strategy does not match6737 is expected not to be valid6738 returns information about errors6739 #value6740 when using a string array6741 is expected to eq ["app/", "lib/", "spec/", "other/*", "paths/**/*.rb"]6742Ci::Runners::ResetRegistrationTokenService#execute6743 with instance scope6744 behaves like a registration token reset operation6745 without user6746 does not reset registration token and returns nil6747 with unauthorized user6748 does not reset registration token and returns nil6749 with admin user6750 resets registration token and returns value unchanged6751 with group scope6752 behaves like a registration token reset operation6753 without user6754 does not reset registration token and returns nil6755 with unauthorized user6756 does not reset registration token and returns nil6757 with admin user6758 resets registration token and returns value unchanged6759 with project scope6760 behaves like a registration token reset operation6761 without user6762 does not reset registration token and returns nil6763 with unauthorized user6764 does not reset registration token and returns nil6765 with admin user6766 resets registration token and returns value unchanged6767Gitlab::GithubImport::Importer::LabelLinksImporter6768 #execute6769 creates the label links6770 #create_labels6771 inserts the label links in bulk6772 does not insert label links for non-existing labels6773 #find_target_id6774 returns the ID of the issuable to create the label link for6775Gitlab::Git::BaseError6776 message: "GRPC::DeadlineExceeded: 4:DeadlineExceeded. debug_error_string:{\"hello\":1}", result: "GRPC::DeadlineExceeded: 4:DeadlineExceeded."6777 is expected to eq "GRPC::DeadlineExceeded: 4:DeadlineExceeded."6778 message: "GRPC::DeadlineExceeded: 4:DeadlineExceeded.", result: "GRPC::DeadlineExceeded: 4:DeadlineExceeded."6779 is expected to eq "GRPC::DeadlineExceeded: 4:DeadlineExceeded."6780 message: "GRPC::DeadlineExceeded: 4:DeadlineExceeded. debug_error_string:{\"created\":\"@1598978902.544524530\",\"description\":\"Error received from peer ipv4: debug_error_string:test\"}", result: "GRPC::DeadlineExceeded: 4:DeadlineExceeded."6781 is expected to eq "GRPC::DeadlineExceeded: 4:DeadlineExceeded."6782 message: "9:Multiple lines\nTest line. debug_error_string:{\"created\":\"@1599074877.106467000\"}", result: "9:Multiple lines\nTest line."6783 is expected to eq "9:Multiple lines\nTest line."6784 message: "other message", result: "other message"6785 is expected to eq "other message"6786 message: nil, result: "Gitlab::Git::BaseError"6787 is expected to eq "Gitlab::Git::BaseError"6788Projects::GroupLinks::UpdateService#execute6789 updates existing link6790 project authorizations update6791 calls AuthorizedProjectUpdate::ProjectRecalculateWorker to update project authorizations6792 calls AuthorizedProjectUpdate::UserRefreshFromReplicaWorker with a delay to update project authorizations6793 updates project authorizations of users who had access to the project via the group share6794 with only param not requiring authorization refresh6795 does not perform any project authorizations update using `AuthorizedProjectUpdate::ProjectRecalculateWorker`6796Gitlab::Database::Type::JsonPgSafe6797 #serialize6798 value: nil, json: nil6799 is expected to eq nil6800 value: 1, json: "1"6801 is expected to eq "1"6802 value: 1.0, json: "1.0"6803 is expected to eq "1.0"6804 value: "str\u0000ing\u0000", json: "\"string\""6805 is expected to eq "\"string\""6806 value: ["\u0000arr", "a\u0000y"], json: "[\"arr\",\"ay\"]"6807 is expected to eq "[\"arr\",\"ay\"]"6808 value: {"key\u0000"=>"value\u0000\u0000"}, json: "{\"key\":\"value\"}"6809 is expected to eq "{\"key\":\"value\"}"6810Ci::CreatePipelineService6811 artifacts:6812 reports:6813 with valid config6814 creates pipeline with builds6815 with invalid config6816 creates pipeline with yaml errors6817ErrorTrackingIssueLinkWorker6818 #perform6819 creates a link between an issue and a Sentry issue in Sentry6820 when issue is unavailable6821 behaves like makes no external API requests6822 takes no action6823 when project does not have error tracking configured6824 behaves like makes no external API requests6825 takes no action6826 when the issue is not linked to a Sentry issue in GitLab6827 behaves like makes no external API requests6828 takes no action6829 when Sentry disabled the GitLab integration6830 behaves like attempts to create a link via plugin6831 takes no action6832 when Sentry the GitLab integration is for another project6833 behaves like attempts to create a link via plugin6834 takes no action6835 when Sentry repos request errors6836 falls back to creating a link via plugin6837Gitlab::Ci::Status::Build::Manual6838 #illustration6839 is expected to include :image, :size, :title, and :content6840 when the user can trigger the job6841 is expected to match /This job requires manual intervention to start/6842 when the user can not trigger the job6843 is expected to match /This job does not run automatically and must be started manually/6844 .matches?6845 when build is manual6846 is a correct match6847 when build is not manual6848 does not match6849Tooling::Helm3Client6850 #releases6851Running command: `helm list --namespace "review-apps" --max 256 --offset 0 --output json`6852 raises an error if the Helm command fails6853Running command: `helm list --namespace "review-apps" --max 256 --offset 0 --output json`6854Ignoring this JSON parsing error: 809: unexpected token at ''6855Response was:6856 calls helm list with default arguments6857Running command: `helm list --namespace "review-apps" --max 256 --offset 0 --output json --deployed`6858Ignoring this JSON parsing error: 809: unexpected token at ''6859Response was:6860 calls helm list with extra arguments6861Running command: `helm list --namespace "review-apps" --max 256 --offset 0 --output json --deployed`6862Running command: `helm list --namespace "review-apps" --max 256 --offset 256 --output json --deployed`6863 returns a list of Release objects6864Running command: `helm list --namespace "review-apps" --max 256 --offset 0 --output json`6865Running command: `helm list --namespace "review-apps" --max 256 --offset 256 --output json`6866Running command: `helm list --namespace "review-apps" --max 256 --offset 512 --output json`6867 automatically paginates releases6868 #delete6869Running command: `helm uninstall --namespace "review-apps" my-release`6870 raises an error if the Helm command fails6871Running command: `helm uninstall --namespace "review-apps" my-release`6872 calls helm uninstall with default arguments6873 with multiple release names6874Running command: `helm uninstall --namespace "review-apps" my-release my-release-2`6875 raises an error if the Helm command fails6876Running command: `helm uninstall --namespace "review-apps" my-release my-release-2`6877 calls helm uninstall with multiple release names6878Types::Metrics::DashboardType6879 is expected to eq "MetricsDashboard"6880 has the expected fields6881 annotations field6882 is expected to have graphql type #<Class:0x00007f8f1dd954a0>6883 is expected to have graphql resolver Resolvers::Metrics::Dashboards::AnnotationResolver6884X509Issuer6885 validation6886 is expected to validate that :subject_key_identifier cannot be empty/falsy6887 is expected to validate that :subject cannot be empty/falsy6888 is expected to validate that :crl_url cannot be empty/falsy6889 .safe_create!6890 creates a new issuer if it was not found6891 assigns the correct attributes when creating6892 validators6893 accepts correct subject_key_identifier6894 rejects invalid subject_key_identifier6895 accepts valid crl_url6896 rejects invalid crl_url6897Resolvers::WorkItemResolver6898 #resolve6899 when the user can read the work item6900 is expected to eq #<WorkItem id:272 namespace1193/project1186#1>6901 when the user can not read the work item6902 raises a resource not available error6903 when the work_items feature flag is disabled6904 is expected to be nil6905SnippetUserMention6906 associations6907 is expected to belong to snippet required: false6908 is expected to belong to note required: false6909 behaves like has user mentions6910 #has_mentions?6911 when no mentions6912 returns false6913 when mentioned_users_ids not null6914 returns true6915 when mentioned projects6916 returns true6917 when mentioned groups6918 returns true6919GroupDeployToken6920 relationships6921 is expected to belong to group required: false6922 is expected to belong to deploy_token required: false6923 validation6924 is expected to validate that :deploy_token cannot be empty/falsy6925 is expected to validate that :group cannot be empty/falsy6926 is expected to validate that :deploy_token_id is case-sensitively unique within the scope of :group_id6927 #has_access_to_group?6928 for itself6929 is expected to eq true6930 for a subgroup6931 is expected to eq true6932 for other group6933 is expected to eq false6934Gitlab::Ci::MaskSecret6935 #mask6936 masks exact number of characters6937 masks multiple occurrences6938 does not mask if not found6939 does support null token6940 does not change a bytesize of a value6941Pajamas::CheckboxComponent6942 with default options6943 renders unchecked checkbox with value of `1`6944 does not render help text6945 renders hidden input with value of `0`6946 with custom options6947 renders help text6948 renders checked checkbox with value of `yes`6949 adds CSS class to label6950 renders hidden input with value of `no`6951 with `label` slot6952 renders unchecked checkbox with value of `1`6953 with `help_text` slot6954 renders unchecked checkbox with value of `1`6955 renders help text6956 with `label` and `help_text` slots6957 renders unchecked checkbox with value of `1`6958 renders help text6959GitlabServicePingWorker6960 does not run for GitLab.com6961 obtains a 86400 second exclusive lease6962 sleeps for between 0 and 60 seconds6963 with prerecord_service_ping_data feature enabled6964 delegates to ServicePing::SubmitService6965 with prerecord_service_ping_data feature disabled6966 does not prerecord ServicePing, and calls SubmitService6967 payload computation6968 creates RawUsageData entry when there is NO entry with the same recorded_at timestamp6969 updates RawUsageData entry when there is entry with the same recorded_at timestamp6970 reports errors and continue on execution6971 when lease is not obtained6972 does not invoke ServicePing::SubmitService6973MergeRequest::MetricsFinder6974 when target project is missing6975 is expected to be empty6976 when the user is not part of the project6977 is expected to be empty6978 when user is part of the project6979 returns merge request records6980 excludes not merged records6981 when only merged_before is given6982 is expected to eq [#<MergeRequest::Metrics id: 360, merge_request_id: 277, latest_build_started_at: nil, latest_build_f...d_at: nil, first_reassigned_at: nil, added_lines: nil, removed_lines: nil, target_project_id: 1093>]6983 when only merged_after is given6984 is expected to eq [#<MergeRequest::Metrics id: 360, merge_request_id: 277, latest_build_started_at: nil, latest_build_f...d_at: nil, first_reassigned_at: nil, added_lines: nil, removed_lines: nil, target_project_id: 1093>]6985 when no records matching the date range6986 is expected to be empty6987ServicePing::ServicePingSettings6988 #product_intelligence_enabled?6989 usage_ping_enabled: true, requires_usage_stats_consent: false, expected_product_intelligence_enabled: true6990 has the correct product_intelligence_enabled?6991 usage_ping_enabled: true, requires_usage_stats_consent: true, expected_product_intelligence_enabled: false6992 has the correct product_intelligence_enabled?6993 usage_ping_enabled: false, requires_usage_stats_consent: false, expected_product_intelligence_enabled: false6994 has the correct product_intelligence_enabled?6995 usage_ping_enabled: false, requires_usage_stats_consent: true, expected_product_intelligence_enabled: false6996 has the correct product_intelligence_enabled?6997 #enabled?6998 has the correct enabled6999 when false7000 when true7001FromUnion7002 behaves like from set operator7003 #from_union7004 selects from the results of the UNION7005 returns empty set when passing empty array7006 supports the use of a custom alias for the sub query7007 supports keeping duplicate rows7008Integrations::Irker7009 Validations7010 when integration is active7011 is expected to validate that :recipients cannot be empty/falsy7012 when integration is inactive7013 is expected not to validate that :recipients cannot be empty/falsy7014 Execute7015 sends valid JSON messages to an Irker listener7016RuboCop::Cop::API::Base7017 adds an offense when inheriting from Grape::API7018 adds an offense when inheriting from ::Grape::API7019 adds an offense when inheriting from Grape::API::Instance7020 adds an offense when inheriting from ::Grape::API::Instance7021 does not add an offense when inheriting from BaseAPI7022Packages::Go::Module7023 #path_valid?7024 with root path7025 with major version 07026 returns true7027 with major version 17028 returns true7029 with major version 27030 returns false7031 with path ./v27032 with major version 07033 returns false7034 with major version 17035 returns false7036 with major version 27037 returns true7038 #gomod_valid?7039 with good gomod7040 returns true7041 with bad gomod7042 returns false7043 with empty gomod7044 returns false7045Types::Terraform::StateType7046 is expected to eq "TerraformState"7047 is expected to require graphql authorizations :read_terraform_state7048 fields7049 is expected to have graphql fields :id, :name, :locked_by_user, :locked_at, :latest_version, :created_at, :updated_at, and :deleted_at7050 is expected to be non null7051 is expected to be non null7052 is expected not to be non null7053 is expected not to be non null7054 is expected to be non null7055 is expected to be non null7056 is expected not to be non null7057 is expected not to be non null7058 is expected to eq 37059Packages::Pypi::SimplePackageVersionsPresenter7060 #body7061 for project7062 behaves like pypi package presenter7063 version: ">=2.7", expected_version: ">=2.7", with_package1: true7064 is expected to include "<a href=\"http://localhost/api/v4/projects/1098/packages/pypi/files/440e5e148a25331bbd7991575f7d5493...c0ebf6cc735a18ee5066ac1381bb590\" data-requires-python=\">=2.7\">sample-project-1.0.0.tar.gz</a>"7065 version: "\"><script>alert(1)</script>", expected_version: ""><script>alert(1)</script>", with_package1: true7066 is expected to include "<a href=\"http://localhost/api/v4/projects/1098/packages/pypi/files/440e5e148a25331bbd7991575f7d5493...requires-python=\""><script>alert(1)</script>\">sample-project-1.0.0.tar.gz</a>"7067 version: ">=2.7, !=3.0", expected_version: ">=2.7, !=3.0", with_package1: false7068 is expected to include "<a href=\"http://localhost/api/v4/projects/1098/packages/pypi/files/440e5e148a25331bbd7991575f7d5493...c735a18ee5066ac1381bb590\" data-requires-python=\">=2.7, !=3.0\">sample-project-2.0.0.tar.gz</a>"7069 for group7070 behaves like pypi package presenter7071 version: ">=2.7", expected_version: ">=2.7", with_package1: true7072 is expected to include "<a href=\"http://localhost/api/v4/groups/3925/-/packages/pypi/files/440e5e148a25331bbd7991575f7d5493...c0ebf6cc735a18ee5066ac1381bb590\" data-requires-python=\">=2.7\">sample-project-1.0.0.tar.gz</a>"7073 version: "\"><script>alert(1)</script>", expected_version: ""><script>alert(1)</script>", with_package1: true7074 is expected to include "<a href=\"http://localhost/api/v4/groups/3925/-/packages/pypi/files/440e5e148a25331bbd7991575f7d5493...requires-python=\""><script>alert(1)</script>\">sample-project-1.0.0.tar.gz</a>"7075 version: ">=2.7, !=3.0", expected_version: ">=2.7, !=3.0", with_package1: false7076 is expected to include "<a href=\"http://localhost/api/v4/groups/3925/-/packages/pypi/files/440e5e148a25331bbd7991575f7d5493...c735a18ee5066ac1381bb590\" data-requires-python=\">=2.7, !=3.0\">sample-project-2.0.0.tar.gz</a>"7077 with package files pending destruction7078 is expected not to include "package_file_pending_destruction"7079Gitlab::AppJsonLogger7080 logs a hash as a JSON7081 logs a string as a JSON7082ClusterAgentQueue7083 is expected to eq "cluster_agent:example"7084 is expected to eq :kubernetes_management7085LegacyDiffNote7086 #to_ability_name7087 is expected to eq "note"7088 callbacks7089 #set_diff7090 when not importing7091 updates st_diff7092 when importing7093 does not update st_diff7094 when st_diff is blank7095 updates st_diff7096Ci::CreatePipelineService7097 custom config content7098 creates a pipeline using the content passed in as param7099 when bridge includes yaml from artifact7100 when referenced job exists7101 created a pipeline using the content passed in as param and download the artifact7102 when referenced job does not exist7103 creates an empty pipeline7104Integrations::Campfire7105 Validations7106 when integration is active7107 is expected to validate that :token cannot be empty/falsy7108 when integration is inactive7109 is expected not to validate that :token cannot be empty/falsy7110 #execute7111 calls Campfire API to get a list of rooms and speak in a room7112 calls Campfire API to get a list of rooms but shouldn't speak in a room7113Atlassian::JiraConnect7114 .app_name7115 is expected to eq "GitLab for Jira (localhost)"7116 .app_key7117 is expected to eq "gitlab-jira-connect-localhost"7118 host name is too long7119 truncates the key to be no longer than 64 characters7120Gitlab::Ci::Config::Entry::Workflow7121 validations7122 when work config value is a string7123 #valid?7124 is invalid7125 attaches an error specifying that workflow should point to a hash7126 #value7127 returns the invalid configuration7128 when work config value is a hash7129 #valid?7130 is valid7131 attaches no errors7132 #value7133 returns the config7134 with an invalid key7135 #valid?7136 is invalid7137 attaches an error specifying the unknown key7138 #value7139 returns the invalid configuration7140 .default7141 is nil7142RuboCop::Cop::Migration::BackgroundMigrations7143 when queue_background_migration_jobs_by_range_at_intervals is used7144 registers an offense7145 when requeue_background_migration_jobs_by_range_at_intervals is used7146 registers an offense7147 when migrate_in is used7148 registers an offense7149Gitlab::HookData::GroupBuilder7150 #build7151 data7152 on create7153 is expected to eq "group_create"7154 behaves like includes the required attributes7155 includes the required attributes7156 behaves like does not include old path attributes7157 does not include old path attributes7158 on destroy7159 is expected to eq "group_destroy"7160 behaves like includes the required attributes7161 includes the required attributes7162 behaves like does not include old path attributes7163 does not include old path attributes7164 on rename7165 is expected to eq "group_rename"7166 includes old path details7167 behaves like includes the required attributes7168 includes the required attributes7169Gitlab::SnowplowEventDefinitionGenerator7170 Creating event definition file7171 creates CE event definition file using the template7172 generated filename7173 includes timestamp7174 removes special characters7175 cuts name if longer than 100 characters7176 event definition already exists7177 overwrites event definition --force flag set to true7178 raises error when --force flag set to false7179 EE7180 creates EE event definition file using the template7181Gitlab::GitalyClient::StorageSettings7182 #initialize7183 when the storage contains no path7184 raises an error7185 when the argument isn't a hash7186 raises an error7187 when the storage is valid7188 raises no error7189 .gitaly_address7190 when the storage settings have no gitaly address but one is requested7191 raises an error7192 when the storage settings have a gitaly address and one is requested7193 returns the setting value7194 when the storage settings have a gitaly address keyed symbolically7195 raises no error7196 when the storage settings have a gitaly address keyed with a string7197 raises no error7198 .disk_access_denied?7199 when Rugged is enabled7200 returns false7201 when Rugged is disabled7202 returns true7203Types::Ci::TemplateType7204 is expected to eq "CiTemplate"7205 exposes the expected fields7206Ci::PipelineBridgeStatusService7207 #execute7208 when pipeline has upstream bridge7209 calls inherit_status_from_downstream on upstream bridge7210 when bridge job status raises state machine errors7211 tracks the exception7212Resolvers::Snippets::BlobsResolver7213 is expected to have nullable GraphQL type SnippetBlobConnection7214 #resolve7215 when user is not authorized7216 redacts the field7217 when using no filter7218 returns all snippet blobs7219 when using filters7220 when paths is a single string7221 returns an array of files7222 the argument does not match anything7223 returns an empty result7224 when paths is an array of string7225 returns an array of files7226Ci::AppendBuildTraceService7227 build trace append is successful7228 returns a correct stream size and status code7229 when could not correctly append to a trace7230 responds with content range violation and data stored7231 logs exception if build has live trace7232 when the trace size is exceeded7233 returns 403 status code7234Projects::ForksCountService7235 behaves like a counter caching service7236 #count7237 caches the count7238 #refresh_cache7239 refreshes the cache7240 #delete_cache7241 removes the cache7242 #uncached_count7243 does not cache the count7244 #count7245 returns the number of forks7246Gitlab::SetupHelper::Praefect7247 .configuration_toml7248 defaults to in memory queue7249 provides database details if wanted7250 fails when pghost is missing7251 uses the provided pghost7252 fails when pgport is missing7253 uses the provided pgport7254 fails when pguser is missing7255 uses the provided pguser7256 defaults to praefect_test if dbname is missing7257 uses the provided dbname7258 .get_config_path7259 defaults to praefect.config.toml7260 takes the provided config_filename7261Gitlab::NullRequestStore7262 #store7263 returns an empty hash7264 #active?7265 returns falsey7266 #read7267 returns nil7268 #[]7269 returns nil7270 #write7271 returns the same value7272 #[]=7273 returns the same value7274 #exist?7275 returns falsey7276 #fetch7277 returns the block result7278 #delete7279 when a block is given7280 yields the key to the block7281 returns the block result7282 when a block is not given7283 returns nil7284Gitlab::Kubernetes::ServiceAccountToken7285 is expected to eq "token-name"7286 is expected to eq "a_service_account"7287 is expected to eq "a_namespace"7288 #generate7289 builds a Kubeclient Resource7290Gitlab::ServiceDeskEmail7291 .enabled?7292 when service_desk_email is enabled and address is set7293 returns true7294 when service_desk_email is disabled7295 returns false7296 when service desk address is not set7297 returns false7298 .key_from_address7299 when service desk address is set7300 returns key7301 when service desk address is not set7302 returns nil7303 .address_for_key7304 when service desk address is set7305 returns address7306 when service desk address is not set7307 returns nil7308 self.key_from_fallback_message_id7309 returns reply key7310Ci::BuildFinishedWorker7311 #perform7312 when build exists7313 calculates coverage and calls hooks7314 when build is failed7315 adds a todo7316 when a build can be auto-retried7317 does not add a todo7318 when build has a chat7319 schedules a ChatNotification job7320 when build does not exist7321 does not raise exception7322Gitlab::Ci::RunnerReleases7323 #releases7324 when response is nil7325 returns nil7326 performs exponential backoff on requests7327 behaves like requests that follow cache status7328 almost 5 seconds later7329 returns cached releases7330 after 5 seconds7331 checks new releases7332 when response is not nil7333 returns parsed and sorted Gitlab::VersionInfo objects7334 behaves like requests that follow cache status7335 almost 1 day later7336 returns cached releases7337 after 1 day7338 checks new releases7339Gitlab::PhabricatorImport::Representation::Task7340 #issue_attributes7341 contains the expected values7342 #author_phid7343 returns the correct field7344 #owner_phid7345 returns the correct field7346Gitlab::ExclusiveLeaseHelpers::SleepingLock7347 #retried?7348 we have not made any attempts7349 is expected not to be retried7350 we just made a single (initial) attempt7351 is not considered a retry7352 made multiple attempts7353 is considered a retry7354 #obtain7355 when the lease is not held7356 obtains the lease on the first attempt, without sleeping7357 when the lease is held elsewhere7358 retries to obtain a lease and raises an error7359 when the delay is computed from the attempt number7360 uses the computation to determine the sleep length7361 when lease is granted after retry7362 knows that it retried7363 cancel7364 cancels the lease7365RuboCop::Cop::CodeReuse::Serializer7366 flags the use of a Serializer in a Service class7367 flags the use of a Serializer in a Finder7368 flags the use of a Serializer in a Presenter7369 flags the use of a Serializer in a Serializer7370 flags the use of a Serializer in a model instance method7371 flags the use of a Serializer in a model class method7372 flags the use of a Serializer in a worker7373Gitlab::StringRegexMarker7374 #mark7375 with a single occurrence7376 marks the match7377 with multiple occurrences7378 marks the matches7379 with a Gitlab::UntrustedRegexp7380 marks the matches7381BulkImports::UsersMapper7382 #map7383 when value for specified key exists7384 returns a map of source & destination user ids from redis7385 when value for specified key does not exist7386 returns default value7387 #default_user_id7388 returns current user id7389 #include?7390 when source user id is present in the map7391 returns true7392 when source user id is missing in the map7393 returns false7394 #cache_source_user_id7395 caches provided source & destination user ids in redis7396Repositories::BranchNamesFinder7397 #execute7398 returns all filtered branch names7399 returns a limited number of offset filtered branch names7400TestCaseEntity7401 #as_json7402 when test case is success7403 contains correct test case details7404 when test case is failed7405 contains correct test case details7406 when no test name is entered7407 contains correct test case details7408 when attachment is present7409 returns the attachment_url7410 when attachment is not present7411 returns a nil attachment_url7412SystemCheck::Orphans::NamespaceCheck7413 #multi_check7414 all orphans7415 prints list of all orphaned namespaces except @hashed7416 few orphans with existing namespace7417 prints list of orphaned namespaces7418 few orphans with existing namespace and parents with same name as orphans7419 prints list of orphaned namespaces ignoring parents with same namespace as orphans7420 no orphans7421 prints an empty list ignoring @hashed7422Ci::Runners::UnassignRunnerService#execute7423 without user7424 does not destroy runner_project7425 with unauthorized user7426 does not call destroy on runner_project7427 with admin user7428 destroys runner_project7429RuboCop::Cop::Gitlab::ModuleWithInstanceVariables7430 when source is a regular module7431 behaves like registering offense7432 registers an offense when instance variable is used in a module7433 when source is a nested module7434 behaves like registering offense7435 registers an offense when instance variable is used in a module7436 when source is a nested module with multiple offenses7437 behaves like registering offense7438 registers an offense when instance variable is used in a module7439 when source is using simple or ivar assignment7440 behaves like not registering offense7441 does not register offenses7442 when source is using simple ivar7443 behaves like not registering offense7444 does not register offenses7445 when source is defining initialize7446 behaves like not registering offense7447 does not register offenses7448 when source is using simple or ivar assignment with other ivar7449 behaves like registering offense7450 registers an offense when instance variable is used in a module7451 when source is using or ivar assignment with something else7452 behaves like registering offense7453 registers an offense when instance variable is used in a module7454Ci::Lint::JobEntity7455 #represent7456 exposes job data7457CronFreezePeriodTimezoneValidator7458 freeze_start: "0 23 * * 5", freeze_end: "0 7 * * 1", is_valid: true7459 crontab validation7460 freeze_start: "0 23 * * 5", freeze_end: "invalid", is_valid: false7461 crontab validation7462 freeze_start: "invalid", freeze_end: "0 7 * * 1", is_valid: false7463 crontab validation7464Gitlab::Graphql::Loaders::BatchProjectStatisticsLoader7465 #find7466 only queries once for project statistics7467DescriptionVersion7468 associations7469 is expected to belong to issue required: false7470 is expected to belong to merge_request required: false7471 validations7472 exactly_one_issuable7473 issue_id: nil, merge_request_id: 1, valid?: true7474 is expected to eq true7475 issue_id: 1, merge_request_id: nil, valid?: true7476 is expected to eq true7477 issue_id: nil, merge_request_id: nil, valid?: false7478 is expected to eq false7479 issue_id: 1, merge_request_id: 1, valid?: false7480 is expected to eq false7481Mutations::WorkItems::UpdateTask7482 #resolve7483 when user has sufficient permissions7484 expires etag cache for parent work item7485Bitbucket::Representation::Comment7486 #author7487 is expected to eq "Ben"7488 is expected to be nil7489 #note7490 is expected to eq "Text"7491 is expected to be nil7492 #created_at7493 is expected to eq Wed, 29 Jun 20227494 #updated_at7495 is expected to eq Wed, 29 Jun 20227496 is expected to eq Wed, 29 Jun 20227497UserProjectAccessChangedService7498 #execute7499 schedules the user IDs7500 permits non-blocking operation7501 permits low-priority operation7502 permits medium-priority operation7503 sets the current caller_id as related_class in the context of all the enqueued jobs7504 with load balancing enabled7505 sticks all the updated users and returns the original result7506 avoids N+1 cached queries7507Gitlab::Config::Entry::Validators::NestedArrayHelpers7508 #validate_nested_array7509 with valid values7510 with arrays of integers7511 is expected to be empty7512 with nested arrays of integers7513 is expected to be empty7514 with invalid values7515 with single integers7516 is expected to eq {:value=>["is invalid"]}7517 when it is nested over the limit7518 is expected to eq {:value=>["is invalid"]}7519 when a value in the array is not valid7520 is expected to eq {:value=>["is invalid"]}7521 when a value in the nested array is not valid7522 is expected to eq {:value=>["is invalid"]}7523Gitlab::Graphql::KnownOperations7524 #from_query7525 query_string: "query { helloWorld }", expected: #<struct Gitlab::Graphql::KnownOperations::Operation name="unknown">7526 returns known operation name from GraphQL Query7527 query_string: "query fuzzyyy { helloWorld }", expected: #<struct Gitlab::Graphql::KnownOperations::Operation name="unknown">7528 returns known operation name from GraphQL Query7529 query_string: "query foo { helloWorld }", expected: #<struct Gitlab::Graphql::KnownOperations::Operation name="foo">7530 returns known operation name from GraphQL Query7531 #operations7532 returns array of known operations7533 Operation#to_caller_id7534 query_string: "query { helloWorld }", expected: "graphql:unknown"7535 formats operation name for caller_id metric property7536 query_string: "query foo { helloWorld }", expected: "graphql:foo"7537 formats operation name for caller_id metric property7538 Opeartion#query_urgency7539 returns the associated query urgency7540 .default7541 returns a memoization of values from webpack7542Sidebars::Groups::Menus::CiCdMenu7543 Menu Items7544 Runners7545 is expected not to be nil7546 when the user does not have access7547 is expected to be nil7548Packages::Debian::FindOrCreateIncomingService7549 #execute7550 run once7551 creates a new package7552 behaves like assigns the package creator7553 assigns the package creator7554 run twice7555 returns the same object7556BulkImports::Configuration7557 associations7558 is expected to belong to bulk_import required: true7559 validations7560 is expected to validate that the length of :url is at most 2557561 is expected to validate that the length of :access_token is at most 2557562 is expected to validate that :url cannot be empty/falsy7563 is expected to validate that :access_token cannot be empty/falsy7564Admin::PlansFinder7565 #execute7566 with no params7567 returns all plans7568 with missing name in params7569 returns all plans7570 with existing name in params7571 returns the plan7572 with non-existing name in params7573 returns nil7574AwardEmojiPresenter7575 #description7576 is expected to eq "thumbs up sign"7577 #unicode7578 is expected to eq "1f44d"7579 #unicode_version7580 is expected to eq "6.0"7581 #emoji7582 is expected to eq "👍"7583 when presenting an award emoji with an invalid name7584 returns nil for all properties7585RepositoryLanguage7586 associations7587 is expected to belong to project required: false7588 is expected to belong to programming_language required: false7589 validations7590 is expected to allow :share to be ‹0›7591 is expected to allow :share to be ‹100.0›7592 is expected not to allow :share to be ‹100.1›7593Gitlab::SidekiqSignals7594 .install7595 not a process group leader7596 does nothing7597 as a process group leader7598 installs its own signal handlers for TERM and INT only7599 installs a forwarding signal handler for INT7600 raises if sidekiq no longer traps SIGINT7601 installs a forwarding signal handler for TERM7602 raises if sidekiq no longer traps SIGTERM7603Types::RangeInputType7604 follows expected subtyping relationships for instances7605 follows expected subtyping relationships for classes7606 parameterized on Integer7607 accepts start and end7608 rejects inverted ranges7609Alerting::ProjectAlertingSetting7610 Associations7611 is expected to belong to project required: false7612 #token7613 when set7614 reads the token7615 when not set7616 generates a token before validation7617Prometheus::PidProvider7618 .worker_id7619 when running in Sidekiq server mode7620 in a clustered setup7621 is expected to eq "sidekiq_123"7622 in a single process setup7623 is expected to eq "sidekiq"7624 when running in Puma mode7625 when cluster worker id is specified in process name7626 is expected to eq "puma_1"7627 when no worker id is specified in process name7628 is expected to eq "puma_master"7629 when running in unknown mode7630 is expected to eq "process_466"7631WorkItems::BuildService7632 #execute7633 is expected to be a kind of WorkItem(id: integer, title: string, author_id: integer, project_id: integer, created_at: datetime, u...e_type: integer, blocking_issues_count: integer, upvotes_count: integer, work_item_type_id: integer)7634PropagateIntegrationWorker7635 #perform7636 calls the propagate service with the integration7637Gitlab::SQL::Glob7638 .to_like7639 matches * as %7640 matches % literally7641 matches _ literally7642FeatureFlagSummarySerializer7643 #represent7644 has summary information7645TrackingHelper7646 #tracking_attrs7647 returns no data if snowplow is disabled7648 returns data hash7649 can return data directly7650Gitlab::GithubImport::BulkImporting7651 #build_database_rows7652 returns an Array containing the rows to insert7653 does not import objects that have already been imported7654 #bulk_insert7655 bulk inserts rows into the database7656Gitlab::Ci::Status::Manual7657 #text7658 is expected to eq "manual"7659 #label7660 is expected to eq "manual action"7661 #icon7662 is expected to eq "status_manual"7663 #favicon7664 is expected to eq "favicon_status_manual"7665 #group7666 is expected to eq "manual"7667Gitlab::Database::MigrationHelpers::AnnounceDatabase7668 #announce7669 prefixes message with database name7670 #say7671 prefixes message with database name7672 prefixes subitem message with database name7673 #write7674 does not prefix empty write7675Ci::CopyCrossDatabaseAssociationsService7676 #execute7677 returns a success response7678Tooling::TestMapGenerator7679 #parse7680 with single yaml7681 parses crystalball data into test mapping7682 stores test files without example uid7683 displays a warning when report has no examples7684 with multiple yamls7685 parses crystalball data into test mapping7686 stores test files without example uid7687Gitlab::Database::PostgresqlAdapter::EmptyQueryPing7688 #active?7689 uses an empty query to check liveness7690 returns true if no error was signaled7691 returns false when an error occurs7692RuboCop::Cop::Database::EstablishConnection7693 flags the use of ActiveRecord::Base.establish_connection7694 flags the use of ActiveRecord::Base.establish_connection with arguments7695 flags the use of SomeModel.establish_connection7696Blobs::NotebookPresenter7697 highlight receives markdown7698Types::JiraImportType7699 is expected to eq "JiraImport"7700 has the expected fields7701Gitlab::Middleware::RequestContext7702 #call7703 setting the client ip7704 with X-Forwarded-For headers7705 returns the load balancer IP7706 request7707 sets the `client_ip`7708 sets the `request_start_time`7709Gitlab::GrapeLogging::Loggers::QueueDurationLogger7710 .parameters7711 when no proxy duration is available7712 returns an empty hash7713 when a proxy duration is available7714 adds the duration to log parameters7715RuboCop::Cop::ProjectPathHelper7716 when using namespace_project with the project's namespace7717 registers an offense and corrects7718 when using namespace_project with a different namespace7719 registers no offense7720NamespaceStorageLimitAlertHelper7721 #display_namespace_storage_limit_alert!7722 is defined in CE7723CookiesHelper7724 #set_secure_cookie7725 creates an encrypted cookie with expected attributes7726 creates a permanent cookie with expected attributes7727 creates a regular cookie with expected attributes7728API::Entities::BulkImports::EntityFailure7729 has the correct attributes7730Group::CrmSettings7731 associations7732 is expected to belong to group required: false7733 validations7734 is expected to validate that :group cannot be empty/falsy7735RuboCop::Cop::QA::SelectorUsage7736 in a QA file7737 has no error7738 outside of QA7739 data-qa-selector7740 behaves like non-qa file usage7741 reports an offense7742 qa class7743 behaves like non-qa file usage7744 reports an offense7745Types::ReleaseSourceType7746 is expected to require graphql authorizations :download_code7747 has the expected fields7748Types::Ci::TestSuiteType7749 is expected to eq "TestSuite"7750 contains attributes related to a pipeline test suite7751Types::Ci::RunnerPlatformType7752 is expected to eq "RunnerPlatform"7753 exposes the expected fields7754Types::Tree::BlobType7755 is expected to eq "Blob"7756 is expected to have graphql fields :id, :sha, :name, :type, :path, :flat_path, :web_url, :web_path, :lfs_oid, and :mode7757layouts/_published_experiments7758 renders out data for all non-excluded, published experiments7759Types::CommitEncodingEnum7760 is expected to eq "CommitEncoding"7761 exposes all the existing encoding option7762Database::PartitionManagementWorker7763 #perform7764 syncs partitions7765 reports partition metrics7766Gitlab::Ci::Status::Extended7767 requires subclass to implement matcher7768API::Validations::Validators::UntrustedRegexp7769 valid regex7770 does not raise a validation error7771 invalid regex7772 raises a validation error7773Resolvers::MetadataResolver7774 #resolve7775 returns version and revision7776Gitlab::Asciidoc::Html5Converter7777 convert AsciiDoc to HTML57778 appends user-content- prefix on ref (anchor)7779FromSetOperator7780 when set operator method already exists7781 is expected to raise RuntimeError7782Bitbucket::Representation::User7783 #username7784 returns correct value7785Gitlab::Serializer::Ci::Variables7786 converts keys into strings and symbolizes hash7787Gitlab::APIAuthentication::TokenTypeBuilder7788 #token_types7789 passes strategies and resolvers to SentThroughBuilder7790Gitlab::GitalyClient::Util7791 .repository7792 creates a Gitaly::Repository with the given data7793OmniAuth initializer for GitLab7794 #full_host7795 is expected to eq "proc"7796Gitlab::SlashCommands::ApplicationHelp7797 #execute7798 displays the help section7799Knapsack report was generated. Preview:7800{7801 "spec/services/notification_service_spec.rb": 906.991565235,7802 "spec/services/ci/create_downstream_pipeline_service_spec.rb": 94.06858897100028,7803 "spec/models/integrations/jira_spec.rb": 61.057523407998815,7804 "spec/serializers/pipeline_serializer_spec.rb": 74.40655596100078,7805 "spec/services/ci/job_artifacts/destroy_all_expired_service_spec.rb": 48.028591188000064,7806 "spec/lib/gitlab/diff/position_tracer/line_strategy_spec.rb": 48.15995676100101,7807 "spec/lib/gitlab/ci/parsers/security/common_spec.rb": 30.428461985999093,7808 "spec/services/releases/create_service_spec.rb": 38.06296574899898,7809 "spec/finders/ci/pipelines_finder_spec.rb": 31.661527340000248,7810 "spec/finders/personal_access_tokens_finder_spec.rb": 36.31685969499995,7811 "spec/lib/banzai/reference_parser/snippet_parser_spec.rb": 36.55595001599977,7812 "spec/uploaders/packages/package_file_uploader_spec.rb": 28.393216536000182,7813 "spec/services/deployments/update_environment_service_spec.rb": 25.68867119800052,7814 "spec/lib/gitlab/utils_spec.rb": 7.954858876999424,7815 "spec/graphql/mutations/merge_requests/update_spec.rb": 29.605368001000897,7816 "spec/policies/namespace/root_storage_statistics_policy_spec.rb": 18.422304366999015,7817 "spec/workers/database/batched_background_migration_worker_spec.rb": 22.25397328500003,7818 "spec/services/environments/stop_service_spec.rb": 23.505909879000683,7819 "spec/services/alert_management/create_alert_issue_service_spec.rb": 24.250057899998865,7820 "spec/models/integrations/every_integration_spec.rb": 8.382480243999453,7821 "spec/services/projects/autocomplete_service_spec.rb": 19.879098041999896,7822 "spec/lib/gitlab/database/partitioning_migration_helpers/table_management_helpers_spec.rb": 10.32973999099886,7823 "spec/lib/gitlab/ci/ansi2json/style_spec.rb": 7.895550451999952,7824 "spec/graphql/resolvers/todos_resolver_spec.rb": 22.212918100000024,7825 "spec/lib/gitlab/import_export/project/import_task_spec.rb": 18.967112303998874,7826 "spec/serializers/issue_entity_spec.rb": 15.955091027999515,7827 "spec/models/internal_id_spec.rb": 14.689721098999144,7828 "spec/lib/gitlab/gpg/invalid_gpg_signature_updater_spec.rb": 14.011769350001487,7829 "spec/models/concerns/deprecated_assignee_spec.rb": 14.793464690001201,7830 "spec/models/dev_ops_report/metric_spec.rb": 4.1952171060002,7831 "spec/finders/metrics/dashboards/annotations_finder_spec.rb": 12.087452548999863,7832 "spec/models/incident_management/issuable_escalation_status_spec.rb": 4.602353215001131,7833 "spec/lib/api/helpers/caching_spec.rb": 5.289483741998993,7834 "spec/lib/gitlab/quick_actions/extractor_spec.rb": 1.9612157299998216,7835 "spec/models/namespace/package_setting_spec.rb": 6.649229008000475,7836 "spec/services/deployments/link_merge_requests_service_spec.rb": 10.529139898999347,7837 "spec/lib/banzai/filter/references/feature_flag_reference_filter_spec.rb": 3.797485806999248,7838 "spec/models/onboarding_progress_spec.rb": 6.754710630000773,7839 "spec/lib/gitlab/redis/shared_state_spec.rb": 2.1211859859995457,7840 "spec/lib/gitlab/metrics_spec.rb": 2.253056337000089,7841 "spec/models/concerns/prometheus_adapter_spec.rb": 11.499385613000413,7842 "spec/rubocop/code_reuse_helpers_spec.rb": 2.1689024529987364,7843 "spec/services/metrics/dashboard/dynamic_embed_service_spec.rb": 6.249747118999949,7844 "spec/lib/bulk_imports/common/pipelines/uploads_pipeline_spec.rb": 6.237430039000174,7845 "spec/models/ci/build_report_result_spec.rb": 5.29323026199927,7846 "spec/lib/gitlab/ci/trace/chunked_io_spec.rb": 5.8682871480014,7847 "spec/workers/new_merge_request_worker_spec.rb": 6.676808336000249,7848 "spec/lib/gitlab/ci/config/external/file/artifact_spec.rb": 8.294893131000208,7849 "spec/services/discussions/resolve_service_spec.rb": 6.92591647700101,7850 "spec/services/quick_actions/target_service_spec.rb": 7.48723726299977,7851 "spec/graphql/resolvers/design_management/versions_resolver_spec.rb": 4.28504803999931,7852 "spec/support_specs/helpers/graphql_helpers_spec.rb": 1.2594526119992224,7853 "spec/services/snippets/bulk_destroy_service_spec.rb": 8.011345621998771,7854 "spec/models/issue/metrics_spec.rb": 8.069314099000621,7855 "spec/models/merge_request_assignee_spec.rb": 6.709891713999241,7856 "spec/services/spam/spam_verdict_service_spec.rb": 3.286896986001011,7857 "spec/models/clusters/integrations/elastic_stack_spec.rb": 5.600706379000258,7858 "spec/models/ci/build_metadata_spec.rb": 5.899806624998746,7859 "spec/lib/api/helpers/packages/dependency_proxy_helpers_spec.rb": 1.3321470570008387,7860 "spec/lib/gitlab/database/migration_helpers/v2_spec.rb": 2.6010320900004444,7861 "spec/lib/error_tracking/sentry_client/projects_spec.rb": 1.3454214659996069,7862 "spec/services/environments/auto_stop_service_spec.rb": 9.381435616998715,7863 "spec/views/projects/artifacts/_artifact.html.haml_spec.rb": 6.530710367000211,7864 "spec/lib/gitlab/ci/pipeline/chain/populate_spec.rb": 3.4731015020006453,7865 "spec/serializers/issue_sidebar_basic_entity_spec.rb": 5.366921775999799,7866 "spec/workers/ci/archive_traces_cron_worker_spec.rb": 5.6662100730009115,7867 "spec/finders/crm/organizations_finder_spec.rb": 3.4222116870005266,7868 "spec/lib/gitlab/database/query_analyzers/restrict_allowed_schemas_spec.rb": 1.0534543979993032,7869 "spec/finders/resource_state_event_finder_spec.rb": 3.4343863850008347,7870 "spec/presenters/packages/detail/package_presenter_spec.rb": 4.748576264000803,7871 "spec/tasks/gitlab/git_rake_spec.rb": 5.96187030100009,7872 "spec/lib/gitlab/diff/suggestion_spec.rb": 4.8585029450005095,7873 "spec/helpers/notifications_helper_spec.rb": 1.9824127169995336,7874 "spec/graphql/resolvers/project_milestones_resolver_spec.rb": 2.561343762999968,7875 "spec/lib/gitlab/suggestions/commit_message_spec.rb": 3.6056541230009316,7876 "spec/serializers/discussion_diff_file_entity_spec.rb": 4.354001953999614,7877 "spec/services/merge_requests/remove_approval_service_spec.rb": 5.9136956140009715,7878 "spec/lib/gitlab/repository_cache_spec.rb": 2.002617926000312,7879 "spec/models/pool_repository_spec.rb": 3.7897486080000817,7880 "spec/serializers/discussion_entity_spec.rb": 4.057877907000147,7881 "spec/lib/gitlab/ci/reports/reports_comparer_spec.rb": 0.8963539910000691,7882 "spec/models/integrations/chat_message/alert_message_spec.rb": 2.628855068000121,7883 "spec/lib/banzai/reference_parser/feature_flag_parser_spec.rb": 3.9031943089994456,7884 "spec/config/mail_room_spec.rb": 3.693924215000152,7885 "spec/lib/gitlab/graphql/deprecation_spec.rb": 0.9914437930001441,7886 "spec/lib/gitlab/ci/badge/coverage/template_spec.rb": 0.9274381889990764,7887 "spec/lib/banzai/object_renderer_spec.rb": 4.491782803001115,7888 "spec/helpers/ci/builds_helper_spec.rb": 3.679911736999202,7889 "spec/services/projects/create_from_template_service_spec.rb": 3.22508844100048,7890 "spec/models/merge_request_reviewer_spec.rb": 4.5842041470004915,7891 "spec/finders/boards/visits_finder_spec.rb": 2.8639542090004397,7892 "spec/lib/gitlab/ci/jwt_spec.rb": 1.4360405600000377,7893 "spec/graphql/resolvers/alert_management/http_integrations_resolver_spec.rb": 2.3897933959997317,7894 "spec/tooling/rspec_flaky/flaky_example_spec.rb": 0.836135525998543,7895 "spec/models/label_link_spec.rb": 3.426916626000093,7896 "spec/lib/gitlab/ci/pipeline/logger_spec.rb": 1.621085344999301,7897 "spec/lib/bulk_imports/ndjson_pipeline_spec.rb": 1.6831017310014431,7898 "spec/lib/gitlab/analytics/cycle_analytics/base_query_builder_spec.rb": 2.699664830999609,7899 "spec/services/packages/debian/process_changes_service_spec.rb": 2.622020237999095,7900 "spec/models/integrations/zentao_spec.rb": 2.402022094998756,7901 "spec/lib/gitlab/usage/metrics/instrumentations/count_imported_projects_total_metric_spec.rb": 4.269006530999832,7902 "spec/lib/gitlab/checks/diff_check_spec.rb": 5.453487860000678,7903 "spec/finders/bulk_imports/entities_finder_spec.rb": 0.9505374869986554,7904 "spec/services/incident_management/pager_duty/create_incident_issue_service_spec.rb": 3.245883269000842,7905 "spec/workers/projects/process_sync_events_worker_spec.rb": 3.5447706680006377,7906 "spec/lib/banzai/filter/markdown_filter_spec.rb": 0.6315853720006999,7907 "spec/lib/gitlab/error_tracking/processor/grpc_error_processor_spec.rb": 1.174007249001079,7908 "spec/lib/gitlab/database/partitioning/sliding_list_strategy_spec.rb": 1.5052996439990238,7909 "spec/validators/color_validator_spec.rb": 1.2426496950010915,7910 "spec/services/ci/ensure_stage_service_spec.rb": 3.1582969060000323,7911 "spec/graphql/mutations/custom_emoji/destroy_spec.rb": 1.885296565000317,7912 "spec/services/repositories/destroy_service_spec.rb": 2.7877916249999544,7913 "spec/lib/gitlab/import_export/uploads_restorer_spec.rb": 2.5914386000004015,7914 "spec/services/merge_requests/add_spent_time_service_spec.rb": 3.2886834969995107,7915 "spec/services/packages/maven/create_package_service_spec.rb": 2.7900806150009885,7916 "spec/models/packages/npm/metadatum_spec.rb": 1.1528389809991495,7917 "spec/lib/gitlab/graphql/loaders/issuable_loader_spec.rb": 2.1252242360005766,7918 "spec/services/concerns/exclusive_lease_guard_spec.rb": 0.3703109519992722,7919 "spec/views/projects/commit/show.html.haml_spec.rb": 2.498909547000949,7920 "spec/services/clusters/aws/finalize_creation_service_spec.rb": 1.6988464389996807,7921 "spec/services/projects/record_target_platforms_service_spec.rb": 1.2905832500000542,7922 "spec/services/boards/issues/create_service_spec.rb": 3.485297561999687,7923 "spec/lib/gitlab/import_export/json/legacy_reader/file_spec.rb": 0.353104601999803,7924 "spec/workers/personal_access_tokens/expiring_worker_spec.rb": 0.4986031520002143,7925 "spec/rubocop/cop/rspec/expect_gitlab_tracking_spec.rb": 0.45900128500034043,7926 "spec/services/packages/create_temporary_package_service_spec.rb": 1.408170460999827,7927 "spec/views/profiles/preferences/show.html.haml_spec.rb": 0.8352288249989215,7928 "spec/lib/gitlab/auth/atlassian/identity_linker_spec.rb": 1.1531648920008593,7929 "spec/lib/gitlab/database/count/exact_count_strategy_spec.rb": 3.086778613000206,7930 "spec/services/grafana/proxy_service_spec.rb": 1.0101675919995614,7931 "spec/workers/jira_connect/sync_deployments_worker_spec.rb": 0.9025297810003394,7932 "spec/services/ci/job_token_scope/remove_project_service_spec.rb": 2.1680044530003215,7933 "spec/helpers/listbox_helper_spec.rb": 0.5099227010014147,7934 "spec/lib/gitlab/ci/config/entry/rules/rule/changes_spec.rb": 0.5692783060003421,7935 "spec/services/ci/runners/reset_registration_token_service_spec.rb": 1.4411143490015093,7936 "spec/lib/gitlab/github_import/importer/label_links_importer_spec.rb": 1.728777397000158,7937 "spec/lib/gitlab/git/base_error_spec.rb": 0.26198839000062435,7938 "spec/services/projects/group_links/update_service_spec.rb": 2.332137690000309,7939 "spec/lib/gitlab/database/type/json_pg_safe_spec.rb": 0.16825613700166286,7940 "spec/services/ci/create_pipeline_service/artifacts_spec.rb": 0.9180929089998244,7941 "spec/workers/error_tracking_issue_link_worker_spec.rb": 0.6538604899997154,7942 "spec/lib/gitlab/ci/status/build/manual_spec.rb": 2.1547043940008734,7943 "spec/tooling/lib/tooling/helm3_client_spec.rb": 0.4946520720004628,7944 "spec/graphql/types/metrics/dashboard_type_spec.rb": 0.24990466000053857,7945 "spec/models/x509_issuer_spec.rb": 1.382410604001052,7946 "spec/graphql/resolvers/work_item_resolver_spec.rb": 1.297353390000353,7947 "spec/models/user_mentions/snippet_user_mention_spec.rb": 0.3336969140000292,7948 "spec/models/group_deploy_token_spec.rb": 0.9189893089987891,7949 "spec/lib/gitlab/ci/mask_secret_spec.rb": 0.26156902000002447,7950 "spec/components/pajamas/checkbox_component_spec.rb": 0.5026120610000362,7951 "spec/workers/gitlab_service_ping_worker_spec.rb": 0.5109262710011535,7952 "spec/finders/merge_request/metrics_finder_spec.rb": 2.1708703420008533,7953 "spec/lib/service_ping/service_ping_settings_spec.rb": 0.21513146400138794,7954 "spec/models/concerns/from_union_spec.rb": 0.19676679500116734,7955 "spec/models/integrations/irker_spec.rb": 0.642690840000796,7956 "spec/rubocop/cop/api/base_spec.rb": 0.2034329649995925,7957 "spec/models/packages/go/module_spec.rb": 1.0762315779993514,7958 "spec/graphql/types/terraform/state_type_spec.rb": 0.3550091020006221,7959 "spec/presenters/packages/pypi/simple_package_versions_presenter_spec.rb": 0.937680487999387,7960 "spec/lib/gitlab/app_json_logger_spec.rb": 0.2452144210001279,7961 "spec/workers/concerns/cluster_agent_queue_spec.rb": 0.14212209899960726,7962 "spec/models/legacy_diff_note_spec.rb": 1.9585884689986415,7963 "spec/services/ci/create_pipeline_service/custom_config_content_spec.rb": 2.1179463870012114,7964 "spec/models/integrations/campfire_spec.rb": 1.7844109529996786,7965 "spec/lib/atlassian/jira_connect_spec.rb": 0.19455000500056485,7966 "spec/lib/gitlab/ci/config/entry/workflow_spec.rb": 0.5132209609982965,7967 "spec/rubocop/cop/migration/background_migrations_spec.rb": 0.2040032639997662,7968 "spec/lib/gitlab/hook_data/group_builder_spec.rb": 0.46648703400023805,7969 "spec/lib/generators/gitlab/snowplow_event_definition_generator_spec.rb": 0.28152854799918714,7970 "spec/lib/gitlab/gitaly_client/storage_settings_spec.rb": 0.27724749899971357,7971 "spec/graphql/types/ci/template_type_spec.rb": 0.09584859300048265,7972 "spec/services/ci/pipeline_bridge_status_service_spec.rb": 1.0799337070002366,7973 "spec/graphql/resolvers/snippets/blobs_resolver_spec.rb": 0.9133518500002538,7974 "spec/services/ci/append_build_trace_service_spec.rb": 1.2110937969991937,7975 "spec/services/projects/forks_count_service_spec.rb": 0.4656514540001808,7976 "spec/lib/gitlab/setup_helper/praefect_spec.rb": 0.6469090199989296,7977 "spec/lib/gitlab/null_request_store_spec.rb": 0.5785171850002371,7978 "spec/lib/gitlab/kubernetes/service_account_token_spec.rb": 0.2558758309987752,7979 "spec/lib/gitlab/service_desk_email_spec.rb": 0.49145564299942635,7980 "spec/workers/ci/build_finished_worker_spec.rb": 0.8233754659995611,7981 "spec/lib/gitlab/ci/runner_releases_spec.rb": 0.38265136100017116,7982 "spec/lib/gitlab/phabricator_import/representation/task_spec.rb": 0.13597904999915045,7983 "spec/lib/gitlab/exclusive_lease_helpers/sleeping_lock_spec.rb": 0.25640635099989595,7984 "spec/rubocop/cop/code_reuse/serializer_spec.rb": 0.21879834399987885,7985 "spec/lib/gitlab/string_regex_marker_spec.rb": 0.15831220699874393,7986 "spec/lib/bulk_imports/users_mapper_spec.rb": 0.30413540699919395,7987 "spec/finders/repositories/branch_names_finder_spec.rb": 0.8809205119996477,7988 "spec/serializers/test_case_entity_spec.rb": 0.6463106999999582,7989 "spec/lib/system_check/orphans/namespace_check_spec.rb": 0.5726326260009955,7990 "spec/services/ci/runners/unassign_runner_service_spec.rb": 0.7475721219998377,7991 "spec/rubocop/cop/gitlab/module_with_instance_variables_spec.rb": 0.275666908999483,7992 "spec/serializers/ci/lint/job_entity_spec.rb": 0.05034058599994751,7993 "spec/validators/cron_freeze_period_timezone_validator_spec.rb": 1.2237273959999584,7994 "spec/lib/gitlab/graphql/loaders/batch_project_statistics_loader_spec.rb": 1.1731400399985432,7995 "spec/models/description_version_spec.rb": 0.34771952299888653,7996 "spec/graphql/mutations/work_items/update_task_spec.rb": 1.150941410998712,7997 "spec/lib/bitbucket/representation/comment_spec.rb": 0.27225746899966907,7998 "spec/services/user_project_access_changed_service_spec.rb": 0.36254064199965796,7999 "spec/lib/gitlab/config/entry/validators/nested_array_helpers_spec.rb": 0.21738906299833616,8000 "spec/lib/gitlab/graphql/known_operations_spec.rb": 0.2878992379992269,8001 "spec/lib/sidebars/groups/menus/ci_cd_menu_spec.rb": 0.3857616200002667,8002 "spec/services/packages/debian/find_or_create_incoming_service_spec.rb": 0.5580286370004615,8003 "spec/models/bulk_imports/configuration_spec.rb": 0.23959294199994474,8004 "spec/finders/admin/plans_finder_spec.rb": 0.17701523599862412,8005 "spec/presenters/award_emoji_presenter_spec.rb": 0.28862253799889004,8006 "spec/models/repository_language_spec.rb": 0.2168517529989913,8007 "spec/lib/gitlab/sidekiq_signals_spec.rb": 0.22346430300058273,8008 "spec/graphql/types/range_input_type_spec.rb": 0.22771773200111056,8009 "spec/models/alerting/project_alerting_setting_spec.rb": 0.36807832199883705,8010 "spec/lib/prometheus/pid_provider_spec.rb": 0.2000715649992344,8011 "spec/services/work_items/build_service_spec.rb": 0.4763663630001247,8012 "spec/workers/propagate_integration_worker_spec.rb": 0.45418143499955477,8013 "spec/lib/gitlab/sql/glob_spec.rb": 0.22359425299873692,8014 "spec/serializers/feature_flag_summary_serializer_spec.rb": 0.8824710620010592,8015 "spec/helpers/tracking_helper_spec.rb": 0.26471047999984876,8016 "spec/lib/gitlab/github_import/bulk_importing_spec.rb": 0.19679334499960532,8017 "spec/lib/gitlab/ci/status/manual_spec.rb": 0.29784146699967096,8018 "spec/lib/gitlab/database/migration_helpers/announce_database_spec.rb": 0.2998491369999101,8019 "spec/services/ci/copy_cross_database_associations_service_spec.rb": 0.6294009220000589,8020 "spec/tooling/lib/tooling/test_map_generator_spec.rb": 0.16391263700097625,8021 "spec/lib/gitlab/database/postgresql_adapter/empty_query_ping_spec.rb": 0.15485952800008818,8022 "spec/rubocop/cop/database/establish_connection_spec.rb": 0.10516675200051395,8023 "spec/presenters/blobs/notebook_presenter_spec.rb": 0.44044271600068896,8024 "spec/graphql/types/jira_import_type_spec.rb": 0.11784004099899903,8025 "spec/lib/gitlab/middleware/request_context_spec.rb": 0.17199855700164335,8026 "spec/lib/gitlab/grape_logging/loggers/queue_duration_logger_spec.rb": 0.10515875199962466,8027 "spec/rubocop/cop/project_path_helper_spec.rb": 0.2340167919992382,8028 "spec/helpers/namespace_storage_limit_alert_helper_spec.rb": 0.10491738200107648,8029 "spec/helpers/cookies_helper_spec.rb": 0.1694808969987207,8030 "spec/lib/api/entities/bulk_imports/entity_failure_spec.rb": 0.18770101600057387,8031 "spec/models/group/crm_settings_spec.rb": 0.09542401200087625,8032 "spec/rubocop/cop/qa/selector_usage_spec.rb": 0.13633237999965786,8033 "spec/graphql/types/release_source_type_spec.rb": 0.10773369100024865,8034 "spec/graphql/types/ci/test_suite_type_spec.rb": 0.19350806499824103,8035 "spec/graphql/types/ci/runner_platform_type_spec.rb": 0.1505704990013328,8036 "spec/graphql/types/tree/blob_type_spec.rb": 0.09670297199954803,8037 "spec/views/layouts/_published_experiments.html.haml_spec.rb": 0.14721482899949478,8038 "spec/graphql/types/commit_encoding_enum_spec.rb": 0.09200514300027862,8039 "spec/workers/database/partition_management_worker_spec.rb": 0.0886439629994129,8040 "spec/lib/gitlab/ci/status/extended_spec.rb": 0.11533734099975845,8041 "spec/lib/api/validations/validators/untrusted_regexp_spec.rb": 0.13629899000079604,8042 "spec/graphql/resolvers/metadata_resolver_spec.rb": 0.07478270399951725,8043 "spec/lib/gitlab/asciidoc/html5_converter_spec.rb": 0.0708955039990542,8044 "spec/models/concerns/from_set_operator_spec.rb": 0.06892801399953896,8045 "spec/lib/bitbucket/representation/user_spec.rb": 0.08736087299985229,8046 "spec/lib/gitlab/serializer/ci/variables_spec.rb": 0.0871280730007129,8047 "spec/lib/gitlab/api_authentication/token_type_builder_spec.rb": 0.1299602010003582,8048 "spec/lib/gitlab/gitaly_client/util_spec.rb": 0.05278256500059797,8049 "spec/initializers/omniauth_spec.rb": 0.13184537000051932,8050 "spec/lib/gitlab/slash_commands/application_help_spec.rb": 0.083360054000877438051}8052Knapsack global time execution for tests: 36m 02s8053Pending: (Failures listed here are expected and do not affect your suite's status)8054 1) Packages::PackageFileUploader package_file behaves like builds correct paths #upload_path behaves like matches the method pattern 8055 # No pattern provided, skipping.8056 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88057 2) Packages::PackageFileUploader package_file behaves like builds correct paths #relative_path is relative8058 # Path not set, skipping.8059 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:408060 3) Packages::PackageFileUploader package_file behaves like builds correct paths .absolute_path behaves like matches the method pattern 8061 # No pattern provided, skipping.8062 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88063 4) Packages::PackageFileUploader package_file behaves like builds correct paths .base_dir behaves like matches the method pattern 8064 # No pattern provided, skipping.8065 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88066 5) Packages::PackageFileUploader package_file object store is remote behaves like builds correct paths #cache_dir behaves like matches the method pattern 8067 # No pattern provided, skipping.8068 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88069 6) Packages::PackageFileUploader package_file object store is remote behaves like builds correct paths #work_dir behaves like matches the method pattern 8070 # No pattern provided, skipping.8071 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88072 7) Packages::PackageFileUploader package_file object store is remote behaves like builds correct paths #upload_path behaves like matches the method pattern 8073 # No pattern provided, skipping.8074 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88075 8) Packages::PackageFileUploader package_file object store is remote behaves like builds correct paths #relative_path is relative8076 # Path not set, skipping.8077 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:408078 9) Packages::PackageFileUploader package_file object store is remote behaves like builds correct paths .absolute_path behaves like matches the method pattern 8079 # No pattern provided, skipping.8080 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88081 10) Packages::PackageFileUploader package_file object store is remote behaves like builds correct paths .base_dir behaves like matches the method pattern 8082 # No pattern provided, skipping.8083 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88084 11) Packages::PackageFileUploader debian_package_file behaves like builds correct paths #upload_path behaves like matches the method pattern 8085 # No pattern provided, skipping.8086 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88087 12) Packages::PackageFileUploader debian_package_file behaves like builds correct paths #relative_path is relative8088 # Path not set, skipping.8089 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:408090 13) Packages::PackageFileUploader debian_package_file behaves like builds correct paths .absolute_path behaves like matches the method pattern 8091 # No pattern provided, skipping.8092 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88093 14) Packages::PackageFileUploader debian_package_file behaves like builds correct paths .base_dir behaves like matches the method pattern 8094 # No pattern provided, skipping.8095 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88096 15) Packages::PackageFileUploader debian_package_file object store is remote behaves like builds correct paths #cache_dir behaves like matches the method pattern 8097 # No pattern provided, skipping.8098 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88099 16) Packages::PackageFileUploader debian_package_file object store is remote behaves like builds correct paths #work_dir behaves like matches the method pattern 8100 # No pattern provided, skipping.8101 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88102 17) Packages::PackageFileUploader debian_package_file object store is remote behaves like builds correct paths #upload_path behaves like matches the method pattern 8103 # No pattern provided, skipping.8104 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88105 18) Packages::PackageFileUploader debian_package_file object store is remote behaves like builds correct paths #relative_path is relative8106 # Path not set, skipping.8107 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:408108 19) Packages::PackageFileUploader debian_package_file object store is remote behaves like builds correct paths .absolute_path behaves like matches the method pattern 8109 # No pattern provided, skipping.8110 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88111 20) Packages::PackageFileUploader debian_package_file object store is remote behaves like builds correct paths .base_dir behaves like matches the method pattern 8112 # No pattern provided, skipping.8113 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88114 21) Database::BatchedBackgroundMigrationWorker behaves like it runs batched background migration jobs #perform when the base model does not exist does nothing8115 # because the base model for main exists8116 # ./spec/support/shared_examples/workers/batched_background_migration_worker_shared_examples.rb:668117 22) Database::BatchedBackgroundMigrationWorker behaves like it runs batched background migration jobs #perform when the base model does not exist logs a message indicating execution is skipped8118 # because the base model for main exists8119 # ./spec/support/shared_examples/workers/batched_background_migration_worker_shared_examples.rb:738120Finished in 36 minutes 6 seconds (files took 1 minute 17.13 seconds to load)81213493 examples, 0 failures, 22 pending8122RSpec exited with 0.8123No examples to retry, congrats!8125Not uploading cache ruby-gems-debian-bullseye-ruby-2.7-10 due to policy8126Not uploading cache gitaly-ruby-gems-debian-bullseye-ruby-2.7-10 due to policy8128Uploading artifacts...8129coverage/: found 5 matching files and directories 8130crystalball/: found 2 matching files and directories 8131WARNING: deprecations/: no matching files. Ensure that the artifact path is relative to the working directory 8132knapsack/: found 3 matching files and directories 8133rspec/: found 8 matching files and directories 8134WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory 8135log/*.log: found 20 matching files and directories 8136WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/2658553339/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com8137WARNING: Retrying... context=artifacts-uploader error=request redirected8138Uploading artifacts as "archive" to coordinator... 201 Created id=2658553339 responseStatus=201 Created token=5TmCaU1G8139Uploading artifacts...8140rspec/junit_rspec.xml: found 1 matching files and directories 8141WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/2658553339/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com8142WARNING: Retrying... context=artifacts-uploader error=request redirected8143Uploading artifacts as "junit" to coordinator... 201 Created id=2658553339 responseStatus=201 Created token=5TmCaU1G8145Job succeeded