rspec unit pg13 16/28
Passed Started
by
@rkadam3

Rajendra Kadam
1Running with gitlab-runner 15.9.0~beta.115.g598a7c91 (598a7c91)2 on green-3.shared-gitlab-org.runners-manager.gitlab.com/default EuhiQzPR, system ID: s_360bc95445273 feature flags: FF_NETWORK_PER_BUILD:true, FF_USE_FASTZIP:true, FF_USE_IMPROVED_URL_MASKING:true6Using Docker executor with image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-16.14-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-109-yarn-1.22-graphicsmagick-1.3.36 ...7Starting service postgres:13 ...8Pulling docker image postgres:13 ...9Using docker image sha256:ab3945c8cf7160ed1381efd47c6a203ba9a84fc7327a17e4a389601eb3738b3b for postgres:13 with digest postgres@sha256:67edfda7deeecfda8e40c9b00818eae76573a9e9466ba7edbc536662d128173b ...10Starting service redis:6.2-alpine ...11Pulling docker image redis:6.2-alpine ...12Using docker image sha256:a9a47a706682d445577bb5da7328f0faaa0863a5742a315c829faa461dfc23ae for redis:6.2-alpine with digest redis@sha256:317575f05099ea47b1f2855b1bb6e068b52847bfa19b87014d88d57f82d4b8f0 ...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-3.0.patched-golang-1.19-rust-1.65-node-16.14-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-109-yarn-1.22-graphicsmagick-1.3.36 ...16Using docker image sha256:552b81110cdd830e05d17c8e7365f72e1dd96842217d7225636cb55a75777ea7 for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-16.14-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-109-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-16.14-postgresql-13@sha256:a386dd1acb1341f710f3c3c320984f70512694bcfec8cb1c771365058ac7c475 ...18Running on runner-euhiqzpr-project-278964-concurrent-0 via runner-euhiqzpr-shared-gitlab-org-1681896985-3b4db02c...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: 127066, done. 25remote: Counting objects: 100% (127066/127066), done. 26remote: Compressing objects: 100% (84263/84263), done. 27remote: Total 127066 (delta 52059), reused 86943 (delta 37888), pack-reused 0 28Receiving objects: 100% (127066/127066), 122.40 MiB | 33.01 MiB/s, done.29Resolving deltas: 100% (52059/52059), done.31 * [new ref] refs/pipelines/841847819 -> refs/pipelines/84184781932 * [new branch] master -> origin/master33Checking out e2ff33c5 as detached HEAD (ref is master)...34Skipping Git submodules setup35$ git remote set-url origin "${CI_REPOSITORY_URL}"37Checking cache for ruby-gems-debian-bullseye-ruby-3.0-16...38Downloading cache.zip from https://storage.googleapis.com/gitlab-com-runners-cache/project/278964/ruby-gems-debian-bullseye-ruby-3.0-16 39Successfully extracted cache41Downloading artifacts for compile-test-assets (4139146271)...42Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4139146271 responseStatus=200 OK token=64__Ws9B43Downloading artifacts for retrieve-tests-metadata (4139146276)...44Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4139146276 responseStatus=200 OK token=64__Ws9B45Downloading artifacts for setup-test-env (4139146274)...46Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4139146274 responseStatus=200 OK token=64__Ws9B48Using docker image sha256:552b81110cdd830e05d17c8e7365f72e1dd96842217d7225636cb55a75777ea7 for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-16.14-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-109-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-16.14-postgresql-13@sha256:a386dd1acb1341f710f3c3c320984f70512694bcfec8cb1c771365058ac7c475 ...49$ echo $FOSS_ONLY50$ [ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb51$ export GOPATH=$CI_PROJECT_DIR/.go52$ mkdir -p $GOPATH53$ source scripts/utils.sh54$ source scripts/prepare_build.sh709Using decomposed database config (config/database.yml.decomposed-postgresql)710Geo DB won't be set up.711$ setup_db_user_only712CREATE ROLE713GRANT714==> 'setup_db_user_only' succeeded in 0 seconds.715$ bundle exec rake db:drop db:create db:schema:load db:migrate gitlab:db:lock_writes716Dropped database 'gitlabhq_test'717Dropped database 'gitlabhq_test_ci'718Created database 'gitlabhq_test'719Created database 'gitlabhq_test_ci'720main: == [advisory_lock_connection] object_id: 273740, pg_backend_pid: 101721main: == [advisory_lock_connection] object_id: 273740, pg_backend_pid: 101722ci: == [advisory_lock_connection] object_id: 273820, pg_backend_pid: 103723ci: == [advisory_lock_connection] object_id: 273820, pg_backend_pid: 103724==> 'bundle exec rake db:drop db:create db:schema:load db:migrate gitlab:db:lock_writes' succeeded in 54 seconds.725$ setup_db_praefect726SELECT pg_catalog.set_config('search_path', '', false);727CREATE DATABASE praefect_test ENCODING 'UTF8';728==> 'setup_db_praefect' succeeded in 0 seconds.729$ source ./scripts/rspec_helpers.sh730$ run_timed_command "gem install knapsack --no-document"731$ gem install knapsack --no-document732Successfully installed knapsack-4.0.07331 gem installed734==> 'gem install knapsack --no-document' succeeded in 1 seconds.735$ echo -e "\e[0Ksection_start:`date +%s`:gitaly-test-spawn[collapsed=true]\r\e[0KStarting Gitaly"744$ rspec_paralellized_job "--tag ~quarantine --tag ~level:background_migration"745SKIP_FLAKY_TESTS_AUTOMATICALLY: false746RETRY_FAILED_TESTS_IN_NEW_PROCESS: true747KNAPSACK_GENERATE_REPORT: true748FLAKY_RSPEC_GENERATE_REPORT: true749KNAPSACK_TEST_FILE_PATTERN: spec/{bin,channels,components,config,contracts,db,dependencies,elastic,elastic_integration,experiments,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}{,/**/}*_spec.rb750KNAPSACK_LOG_LEVEL: debug751KNAPSACK_REPORT_PATH: knapsack/rspec_unit_pg13_16_28_report.json752FLAKY_RSPEC_SUITE_REPORT_PATH: rspec/flaky/report-suite.json753FLAKY_RSPEC_REPORT_PATH: rspec/flaky/all_rspec_unit_pg13_16_28_report.json754NEW_FLAKY_RSPEC_REPORT_PATH: rspec/flaky/new_rspec_unit_pg13_16_28_report.json755SKIPPED_FLAKY_TESTS_REPORT_PATH: rspec/flaky/skipped_flaky_tests_rspec_unit_pg13_16_28_report.txt756CRYSTALBALL: 757Knapsack node specs:758spec/lib/gitlab/ci/templates/auto_devops_gitlab_ci_yaml_spec.rb759spec/rubocop/cop/rspec/invalid_feature_category_spec.rb760spec/lib/gitlab/diff/file_spec.rb761spec/lib/banzai/filter/repository_link_filter_spec.rb762spec/lib/gitlab/background_migration/nullify_orphan_runner_id_on_ci_builds_spec.rb763spec/lib/gitlab/import_export/project/relation_factory_spec.rb764spec/services/packages/maven/metadata/create_versions_xml_service_spec.rb765spec/services/resource_access_tokens/create_service_spec.rb766spec/lib/release_highlights/validator_spec.rb767spec/lib/gitlab/ssh_public_key_spec.rb768spec/lib/gitlab/rack_attack/request_spec.rb769spec/lib/gitlab/ci/config/entry/job_spec.rb770spec/lib/feature_spec.rb771spec/lib/gitlab/data_builder/push_spec.rb772spec/models/concerns/token_authenticatable_spec.rb773spec/lib/gitlab/database/batch_count_spec.rb774spec/lib/gitlab/redis/db_load_balancing_spec.rb775spec/lib/gitlab/import_export/fast_hash_serializer_spec.rb776spec/services/work_items/parent_links/create_service_spec.rb777spec/helpers/users_helper_spec.rb778spec/services/post_receive_service_spec.rb779spec/services/clusters/kubernetes/create_or_update_namespace_service_spec.rb780spec/lib/gitlab/background_migration/backfill_project_namespace_on_issues_spec.rb781spec/rubocop/cop/gitlab/mark_used_feature_flags_spec.rb782spec/graphql/mutations/releases/update_spec.rb783spec/services/labels/available_labels_service_spec.rb784spec/models/concerns/chronic_duration_attribute_spec.rb785spec/lib/gitlab_spec.rb786spec/services/ci/reset_skipped_jobs_service_spec.rb787spec/lib/gitlab/workhorse_spec.rb788spec/models/concerns/reactive_caching_spec.rb789spec/helpers/appearances_helper_spec.rb790spec/services/projects/container_repository/gitlab/cleanup_tags_service_spec.rb791spec/models/ssh_host_key_spec.rb792spec/models/ci/build_metadata_spec.rb793spec/lib/gitlab/redis/rate_limiting_spec.rb794spec/workers/incident_management/process_alert_worker_v2_spec.rb795spec/services/draft_notes/create_service_spec.rb796spec/models/analytics/cycle_analytics/aggregation_spec.rb797spec/finders/clusters/kubernetes_namespace_finder_spec.rb798spec/services/files/update_service_spec.rb799spec/lib/container_registry/migration_spec.rb800spec/workers/concerns/worker_attributes_spec.rb801spec/services/pages/migrate_legacy_storage_to_deployment_service_spec.rb802spec/finders/concerns/finder_with_group_hierarchy_spec.rb803spec/models/personal_snippet_spec.rb804spec/policies/design_management/design_policy_spec.rb805spec/bin/sidekiq_cluster_spec.rb806spec/lib/gitlab/import_export/group/relation_tree_restorer_spec.rb807spec/lib/gitlab/ci/reports/test_suite_comparer_spec.rb808spec/policies/personal_snippet_policy_spec.rb809spec/models/concerns/ci/has_ref_spec.rb810spec/scripts/review_apps/automated_cleanup_spec.rb811spec/lib/gitlab/http_io_spec.rb812spec/presenters/project_member_presenter_spec.rb813spec/lib/gitlab/background_migration/backfill_partitioned_table_spec.rb814spec/models/packages/nuget/metadatum_spec.rb815spec/views/ci/status/_badge.html.haml_spec.rb816spec/lib/gitlab/ci/config/entry/service_spec.rb817spec/models/programming_language_spec.rb818spec/services/security/ci_configuration/sast_iac_create_service_spec.rb819spec/lib/gitlab/import_export/command_line_util_spec.rb820spec/lib/gitlab/harbor/query_spec.rb821spec/serializers/issue_sidebar_basic_entity_spec.rb822spec/lib/gitlab/checks/push_check_spec.rb823spec/initializers/secret_token_spec.rb824spec/workers/merge_requests/create_approval_event_worker_spec.rb825spec/services/merge_requests/handle_assignees_change_service_spec.rb826spec/lib/gitlab/ci/pipeline/chain/config/content_spec.rb827spec/serializers/diff_viewer_entity_spec.rb828spec/models/custom_emoji_spec.rb829spec/lib/gitlab/ci/badge/coverage/template_spec.rb830spec/models/group_deploy_key_spec.rb831spec/services/ml/experiment_tracking/candidate_repository_spec.rb832spec/lib/gitlab/ci/badge/release/latest_release_spec.rb833spec/tasks/gitlab/container_registry_rake_spec.rb834spec/views/layouts/_header_search.html.haml_spec.rb835spec/services/labels/create_service_spec.rb836spec/lib/gitlab/git/merge_base_spec.rb837spec/lib/gitlab/ci/parsers/security/sast_spec.rb838spec/services/alert_management/alerts/todo/create_service_spec.rb839spec/lib/gitlab/github_import/importer/note_attachments_importer_spec.rb840spec/models/group_label_spec.rb841spec/lib/gitlab/database/dynamic_model_helpers_spec.rb842spec/lib/error_tracking/sentry_client/api_urls_spec.rb843spec/lib/sidebars/user_profile/menus/groups_menu_spec.rb844spec/lib/gitlab/patch/prependable_spec.rb845spec/lib/banzai/filter/image_link_filter_spec.rb846spec/lib/gitlab/import_export/base/object_builder_spec.rb847spec/lib/bulk_imports/projects/pipelines/issues_pipeline_spec.rb848spec/lib/gitlab/github_import/representation/protected_branch_spec.rb849spec/support_specs/graphql/arguments_spec.rb850spec/services/ci/drop_pipeline_service_spec.rb851spec/lib/gitlab/hook_data/key_builder_spec.rb852spec/components/pajamas/banner_component_spec.rb853spec/db/production/settings_spec.rb854spec/services/feature_flags/destroy_service_spec.rb855spec/models/integrations/chat_message/base_message_spec.rb856spec/lib/gitlab/config/entry/validators_spec.rb857spec/presenters/ci/trigger_presenter_spec.rb858spec/finders/groups/user_groups_finder_spec.rb859spec/services/resource_events/change_labels_service_spec.rb860spec/lib/gitlab/ci/reports/reports_comparer_spec.rb861spec/lib/gitlab/diff/char_diff_spec.rb862spec/lib/gitlab/sidekiq_daemon/monitor_spec.rb863spec/policies/incident_management/timeline_event_policy_spec.rb864spec/finders/packages/conan/package_file_finder_spec.rb865spec/lib/gitlab/import_export/project/sample/date_calculator_spec.rb866spec/graphql/resolvers/ci/runner_projects_resolver_spec.rb867spec/services/x509_certificate_revoke_service_spec.rb868spec/lib/sidebars/admin/menus/admin_settings_menu_spec.rb869spec/graphql/mutations/custom_emoji/destroy_spec.rb870spec/graphql/mutations/security/ci_configuration/configure_sast_spec.rb871spec/lib/gitlab/x509/tag_spec.rb872spec/policies/clusters/agent_token_policy_spec.rb873spec/graphql/mutations/ci/runner/bulk_delete_spec.rb874spec/lib/gitlab/ci/reports/coverage_report_generator_spec.rb875spec/workers/ci/parse_secure_file_metadata_worker_spec.rb876spec/graphql/mutations/ci/job_token_scope/add_project_spec.rb877spec/graphql/resolvers/alert_management/integrations_resolver_spec.rb878spec/graphql/resolvers/project_pipelines_resolver_spec.rb879spec/workers/releases/manage_evidence_worker_spec.rb880spec/services/issue_links/destroy_service_spec.rb881spec/lib/gitlab/phabricator_import/issues/task_importer_spec.rb882spec/models/design_management/git_repository_spec.rb883spec/lib/gitlab/authorized_keys_spec.rb884spec/services/users/reject_service_spec.rb885spec/serializers/job_artifact_report_entity_spec.rb886spec/helpers/bizible_helper_spec.rb887spec/services/container_expiration_policies/cleanup_service_spec.rb888spec/serializers/jira_connect/app_data_serializer_spec.rb889spec/lib/gitlab/ci/config/entry/hidden_spec.rb890spec/presenters/packages/pypi/simple_package_versions_presenter_spec.rb891spec/lib/gitlab/config/entry/composable_array_spec.rb892spec/models/packages/npm/metadatum_spec.rb893spec/services/achievements/create_service_spec.rb894spec/validators/js_regex_validator_spec.rb895spec/workers/gitlab/import/stuck_import_job_spec.rb896spec/finders/projects/topics_finder_spec.rb897spec/lib/gitlab/net_http_adapter_spec.rb898spec/lib/gitlab/asset_proxy_spec.rb899spec/lib/gitlab/usage/metrics/instrumentations/distinct_count_projects_with_expiration_policy_metric_spec.rb900spec/services/award_emojis/copy_service_spec.rb901spec/tasks/migrate/schema_check_rake_spec.rb902spec/views/admin/application_settings/network.html.haml_spec.rb903spec/models/incident_management/timeline_event_tag_link_spec.rb904spec/models/acts_as_taggable_on/tagging_spec.rb905spec/lib/sidebars/user_settings/panel_spec.rb906spec/lib/gitlab/ci/config/entry/inherit/default_spec.rb907spec/graphql/types/customer_relations/contact_state_counts_type_spec.rb908spec/lib/gitlab/sidekiq_middleware/admin_mode/client_spec.rb909spec/lib/gitlab/usage/metrics/instrumentations/count_users_creating_issues_metric_spec.rb910spec/initializers/mail_starttls_patch_spec.rb911spec/workers/todos_destroyer/confidential_issue_worker_spec.rb912spec/lib/gitlab/webpack/file_loader_spec.rb913spec/graphql/resolvers/deployment_resolver_spec.rb914spec/views/events/event/_push.html.haml_spec.rb915spec/lib/safe_zip/extract_spec.rb916spec/lib/gitlab/github_gists_import/representation/gist_spec.rb917spec/lib/gitlab/ci/build/releaser_spec.rb918spec/services/pages_domains/create_service_spec.rb919spec/services/achievements/revoke_service_spec.rb920spec/lib/sidebars/groups/menus/observability_menu_spec.rb921spec/services/service_desk_settings/update_service_spec.rb922spec/models/work_items/widgets/labels_spec.rb923spec/lib/gitlab/prometheus/queries/matched_metric_query_spec.rb924spec/lib/gitlab/database/type/color_spec.rb925spec/views/projects/blob/_viewer.html.haml_spec.rb926spec/lib/gitlab/kas/client_spec.rb927spec/workers/environments/canary_ingress/update_worker_spec.rb928spec/services/snippets/repository_validation_service_spec.rb929spec/helpers/dev_ops_report_helper_spec.rb930spec/lib/gitlab/graphql/authorize/object_authorization_spec.rb931spec/models/integrations/pushover_spec.rb932spec/lib/gitlab/diff/position_collection_spec.rb933spec/lib/gitlab/reference_counter_spec.rb934spec/lib/bitbucket_server/representation/repo_spec.rb935spec/initializers/safe_session_store_patch_spec.rb936spec/rubocop/cop/rspec/duplicate_spec_location_spec.rb937spec/lib/gitlab/word_diff/chunk_collection_spec.rb938spec/models/user_mentions/snippet_user_mention_spec.rb939spec/workers/ci/runners/stale_machines_cleanup_cron_worker_spec.rb940spec/models/namespaces/sync_event_spec.rb941spec/views/profiles/show.html.haml_spec.rb942spec/lib/gitlab/tracking/helpers/weak_password_error_event_spec.rb943spec/lib/gitlab/doorkeeper_secret_storing/secret/pbkdf2_sha512_spec.rb944spec/lib/gitlab/git/commit_stats_spec.rb945spec/lib/gitlab/metrics/subscribers/ldap_spec.rb946spec/workers/gitlab/github_import/stage/import_protected_branches_worker_spec.rb947spec/lib/gitlab/usage/metrics/aggregates/sources/redis_hll_spec.rb948spec/policies/concerns/crud_policy_helpers_spec.rb949spec/workers/repository_check/dispatch_worker_spec.rb950spec/lib/gitlab/github_import/attachments_downloader_spec.rb951spec/rubocop/cop/avoid_becomes_spec.rb952spec/lib/gitlab/data_builder/alert_spec.rb953spec/services/groups/deploy_tokens/destroy_service_spec.rb954spec/lib/gitlab/database/postgres_autovacuum_activity_spec.rb955spec/lib/gitlab/instrumentation/rate_limiting_gates_spec.rb956spec/lib/gitlab/github_import/project_relation_type_spec.rb957spec/lib/gitlab/ci/reports/security/flag_spec.rb958spec/graphql/types/project_member_type_spec.rb959spec/workers/ci/job_artifacts/expire_project_build_artifacts_worker_spec.rb960spec/initializers/countries_spec.rb961spec/lib/product_analytics/event_params_spec.rb962spec/graphql/types/ci/config/need_type_spec.rb963spec/lib/gitlab/middleware/rack_multipart_tempfile_factory_spec.rb964spec/serializers/test_reports_comparer_serializer_spec.rb965spec/graphql/types/ci/config/include_type_enum_spec.rb966spec/lib/gitlab/email/message/build_ios_app_guide_spec.rb967spec/lib/api/entities/snippets/repository_storage_move_spec.rb968spec/serializers/analytics/cycle_analytics/stage_entity_spec.rb969spec/lib/gitlab/git/patches/collection_spec.rb970spec/rubocop/cop/gitlab/finder_with_find_by_spec.rb971spec/lib/banzai/render_context_spec.rb972spec/graphql/types/ci/job_status_enum_spec.rb973spec/lib/gitlab/github_import/importer/issue_and_label_links_importer_spec.rb974spec/graphql/types/metadata/kas_type_spec.rb975spec/helpers/projects/security/configuration_helper_spec.rb976spec/lib/gitlab/ci/config/external/mapper/filter_spec.rb977spec/lib/gitlab/database/schema_validation/validators/base_validator_spec.rb978spec/lib/system_check/base_check_spec.rb979spec/lib/gitlab/rugged_instrumentation_spec.rb980spec/lib/mattermost/client_spec.rb981spec/lib/gitlab/tcp_checker_spec.rb982spec/serializers/import/github_realtime_repo_entity_spec.rb983spec/lib/gitlab/ci/parsers/instrumentation_spec.rb984spec/lib/gitlab/database/sha_attribute_spec.rb985spec/helpers/registrations_helper_spec.rb986spec/workers/todos_destroyer/private_features_worker_spec.rb987spec/graphql/types/packages/package_status_enum_spec.rb988spec/serializers/group_issuable_autocomplete_entity_spec.rb989spec/serializers/integrations/harbor_serializers/artifact_serializer_spec.rb990Filter specs:991Running specs:992Running all node tests without filter993spec/lib/gitlab/ci/templates/auto_devops_gitlab_ci_yaml_spec.rb994spec/rubocop/cop/rspec/invalid_feature_category_spec.rb995spec/lib/gitlab/diff/file_spec.rb996spec/lib/banzai/filter/repository_link_filter_spec.rb997spec/lib/gitlab/background_migration/nullify_orphan_runner_id_on_ci_builds_spec.rb998spec/lib/gitlab/import_export/project/relation_factory_spec.rb999spec/services/packages/maven/metadata/create_versions_xml_service_spec.rb1000spec/services/resource_access_tokens/create_service_spec.rb1001spec/lib/release_highlights/validator_spec.rb1002spec/lib/gitlab/ssh_public_key_spec.rb1003spec/lib/gitlab/rack_attack/request_spec.rb1004spec/lib/gitlab/ci/config/entry/job_spec.rb1005spec/lib/feature_spec.rb1006spec/lib/gitlab/data_builder/push_spec.rb1007spec/models/concerns/token_authenticatable_spec.rb1008spec/lib/gitlab/database/batch_count_spec.rb1009spec/lib/gitlab/redis/db_load_balancing_spec.rb1010spec/lib/gitlab/import_export/fast_hash_serializer_spec.rb1011spec/services/work_items/parent_links/create_service_spec.rb1012spec/helpers/users_helper_spec.rb1013spec/services/post_receive_service_spec.rb1014spec/services/clusters/kubernetes/create_or_update_namespace_service_spec.rb1015spec/lib/gitlab/background_migration/backfill_project_namespace_on_issues_spec.rb1016spec/rubocop/cop/gitlab/mark_used_feature_flags_spec.rb1017spec/graphql/mutations/releases/update_spec.rb1018spec/services/labels/available_labels_service_spec.rb1019spec/models/concerns/chronic_duration_attribute_spec.rb1020spec/lib/gitlab_spec.rb1021spec/services/ci/reset_skipped_jobs_service_spec.rb1022spec/lib/gitlab/workhorse_spec.rb1023spec/models/concerns/reactive_caching_spec.rb1024spec/helpers/appearances_helper_spec.rb1025spec/services/projects/container_repository/gitlab/cleanup_tags_service_spec.rb1026spec/models/ssh_host_key_spec.rb1027spec/models/ci/build_metadata_spec.rb1028spec/lib/gitlab/redis/rate_limiting_spec.rb1029spec/workers/incident_management/process_alert_worker_v2_spec.rb1030spec/services/draft_notes/create_service_spec.rb1031spec/models/analytics/cycle_analytics/aggregation_spec.rb1032spec/finders/clusters/kubernetes_namespace_finder_spec.rb1033spec/services/files/update_service_spec.rb1034spec/lib/container_registry/migration_spec.rb1035spec/workers/concerns/worker_attributes_spec.rb1036spec/services/pages/migrate_legacy_storage_to_deployment_service_spec.rb1037spec/finders/concerns/finder_with_group_hierarchy_spec.rb1038spec/models/personal_snippet_spec.rb1039spec/policies/design_management/design_policy_spec.rb1040spec/bin/sidekiq_cluster_spec.rb1041spec/lib/gitlab/import_export/group/relation_tree_restorer_spec.rb1042spec/lib/gitlab/ci/reports/test_suite_comparer_spec.rb1043spec/policies/personal_snippet_policy_spec.rb1044spec/models/concerns/ci/has_ref_spec.rb1045spec/scripts/review_apps/automated_cleanup_spec.rb1046spec/lib/gitlab/http_io_spec.rb1047spec/presenters/project_member_presenter_spec.rb1048spec/lib/gitlab/background_migration/backfill_partitioned_table_spec.rb1049spec/models/packages/nuget/metadatum_spec.rb1050spec/views/ci/status/_badge.html.haml_spec.rb1051spec/lib/gitlab/ci/config/entry/service_spec.rb1052spec/models/programming_language_spec.rb1053spec/services/security/ci_configuration/sast_iac_create_service_spec.rb1054spec/lib/gitlab/import_export/command_line_util_spec.rb1055spec/lib/gitlab/harbor/query_spec.rb1056spec/serializers/issue_sidebar_basic_entity_spec.rb1057spec/lib/gitlab/checks/push_check_spec.rb1058spec/initializers/secret_token_spec.rb1059spec/workers/merge_requests/create_approval_event_worker_spec.rb1060spec/services/merge_requests/handle_assignees_change_service_spec.rb1061spec/lib/gitlab/ci/pipeline/chain/config/content_spec.rb1062spec/serializers/diff_viewer_entity_spec.rb1063spec/models/custom_emoji_spec.rb1064spec/lib/gitlab/ci/badge/coverage/template_spec.rb1065spec/models/group_deploy_key_spec.rb1066spec/services/ml/experiment_tracking/candidate_repository_spec.rb1067spec/lib/gitlab/ci/badge/release/latest_release_spec.rb1068spec/tasks/gitlab/container_registry_rake_spec.rb1069spec/views/layouts/_header_search.html.haml_spec.rb1070spec/services/labels/create_service_spec.rb1071spec/lib/gitlab/git/merge_base_spec.rb1072spec/lib/gitlab/ci/parsers/security/sast_spec.rb1073spec/services/alert_management/alerts/todo/create_service_spec.rb1074spec/lib/gitlab/github_import/importer/note_attachments_importer_spec.rb1075spec/models/group_label_spec.rb1076spec/lib/gitlab/database/dynamic_model_helpers_spec.rb1077spec/lib/error_tracking/sentry_client/api_urls_spec.rb1078spec/lib/sidebars/user_profile/menus/groups_menu_spec.rb1079spec/lib/gitlab/patch/prependable_spec.rb1080spec/lib/banzai/filter/image_link_filter_spec.rb1081spec/lib/gitlab/import_export/base/object_builder_spec.rb1082spec/lib/bulk_imports/projects/pipelines/issues_pipeline_spec.rb1083spec/lib/gitlab/github_import/representation/protected_branch_spec.rb1084spec/support_specs/graphql/arguments_spec.rb1085spec/services/ci/drop_pipeline_service_spec.rb1086spec/lib/gitlab/hook_data/key_builder_spec.rb1087spec/components/pajamas/banner_component_spec.rb1088spec/db/production/settings_spec.rb1089spec/services/feature_flags/destroy_service_spec.rb1090spec/models/integrations/chat_message/base_message_spec.rb1091spec/lib/gitlab/config/entry/validators_spec.rb1092spec/presenters/ci/trigger_presenter_spec.rb1093spec/finders/groups/user_groups_finder_spec.rb1094spec/services/resource_events/change_labels_service_spec.rb1095spec/lib/gitlab/ci/reports/reports_comparer_spec.rb1096spec/lib/gitlab/diff/char_diff_spec.rb1097spec/lib/gitlab/sidekiq_daemon/monitor_spec.rb1098spec/policies/incident_management/timeline_event_policy_spec.rb1099spec/finders/packages/conan/package_file_finder_spec.rb1100spec/lib/gitlab/import_export/project/sample/date_calculator_spec.rb1101spec/graphql/resolvers/ci/runner_projects_resolver_spec.rb1102spec/services/x509_certificate_revoke_service_spec.rb1103spec/lib/sidebars/admin/menus/admin_settings_menu_spec.rb1104spec/graphql/mutations/custom_emoji/destroy_spec.rb1105spec/graphql/mutations/security/ci_configuration/configure_sast_spec.rb1106spec/lib/gitlab/x509/tag_spec.rb1107spec/policies/clusters/agent_token_policy_spec.rb1108spec/graphql/mutations/ci/runner/bulk_delete_spec.rb1109spec/lib/gitlab/ci/reports/coverage_report_generator_spec.rb1110spec/workers/ci/parse_secure_file_metadata_worker_spec.rb1111spec/graphql/mutations/ci/job_token_scope/add_project_spec.rb1112spec/graphql/resolvers/alert_management/integrations_resolver_spec.rb1113spec/graphql/resolvers/project_pipelines_resolver_spec.rb1114spec/workers/releases/manage_evidence_worker_spec.rb1115spec/services/issue_links/destroy_service_spec.rb1116spec/lib/gitlab/phabricator_import/issues/task_importer_spec.rb1117spec/models/design_management/git_repository_spec.rb1118spec/lib/gitlab/authorized_keys_spec.rb1119spec/services/users/reject_service_spec.rb1120spec/serializers/job_artifact_report_entity_spec.rb1121spec/helpers/bizible_helper_spec.rb1122spec/services/container_expiration_policies/cleanup_service_spec.rb1123spec/serializers/jira_connect/app_data_serializer_spec.rb1124spec/lib/gitlab/ci/config/entry/hidden_spec.rb1125spec/presenters/packages/pypi/simple_package_versions_presenter_spec.rb1126spec/lib/gitlab/config/entry/composable_array_spec.rb1127spec/models/packages/npm/metadatum_spec.rb1128spec/services/achievements/create_service_spec.rb1129spec/validators/js_regex_validator_spec.rb1130spec/workers/gitlab/import/stuck_import_job_spec.rb1131spec/finders/projects/topics_finder_spec.rb1132spec/lib/gitlab/net_http_adapter_spec.rb1133spec/lib/gitlab/asset_proxy_spec.rb1134spec/lib/gitlab/usage/metrics/instrumentations/distinct_count_projects_with_expiration_policy_metric_spec.rb1135spec/services/award_emojis/copy_service_spec.rb1136spec/tasks/migrate/schema_check_rake_spec.rb1137spec/views/admin/application_settings/network.html.haml_spec.rb1138spec/models/incident_management/timeline_event_tag_link_spec.rb1139spec/models/acts_as_taggable_on/tagging_spec.rb1140spec/lib/sidebars/user_settings/panel_spec.rb1141spec/lib/gitlab/ci/config/entry/inherit/default_spec.rb1142spec/graphql/types/customer_relations/contact_state_counts_type_spec.rb1143spec/lib/gitlab/sidekiq_middleware/admin_mode/client_spec.rb1144spec/lib/gitlab/usage/metrics/instrumentations/count_users_creating_issues_metric_spec.rb1145spec/initializers/mail_starttls_patch_spec.rb1146spec/workers/todos_destroyer/confidential_issue_worker_spec.rb1147spec/lib/gitlab/webpack/file_loader_spec.rb1148spec/graphql/resolvers/deployment_resolver_spec.rb1149spec/views/events/event/_push.html.haml_spec.rb1150spec/lib/safe_zip/extract_spec.rb1151spec/lib/gitlab/github_gists_import/representation/gist_spec.rb1152spec/lib/gitlab/ci/build/releaser_spec.rb1153spec/services/pages_domains/create_service_spec.rb1154spec/services/achievements/revoke_service_spec.rb1155spec/lib/sidebars/groups/menus/observability_menu_spec.rb1156spec/services/service_desk_settings/update_service_spec.rb1157spec/models/work_items/widgets/labels_spec.rb1158spec/lib/gitlab/prometheus/queries/matched_metric_query_spec.rb1159spec/lib/gitlab/database/type/color_spec.rb1160spec/views/projects/blob/_viewer.html.haml_spec.rb1161spec/lib/gitlab/kas/client_spec.rb1162spec/workers/environments/canary_ingress/update_worker_spec.rb1163spec/services/snippets/repository_validation_service_spec.rb1164spec/helpers/dev_ops_report_helper_spec.rb1165spec/lib/gitlab/graphql/authorize/object_authorization_spec.rb1166spec/models/integrations/pushover_spec.rb1167spec/lib/gitlab/diff/position_collection_spec.rb1168spec/lib/gitlab/reference_counter_spec.rb1169spec/lib/bitbucket_server/representation/repo_spec.rb1170spec/initializers/safe_session_store_patch_spec.rb1171spec/rubocop/cop/rspec/duplicate_spec_location_spec.rb1172spec/lib/gitlab/word_diff/chunk_collection_spec.rb1173spec/models/user_mentions/snippet_user_mention_spec.rb1174spec/workers/ci/runners/stale_machines_cleanup_cron_worker_spec.rb1175spec/models/namespaces/sync_event_spec.rb1176spec/views/profiles/show.html.haml_spec.rb1177spec/lib/gitlab/tracking/helpers/weak_password_error_event_spec.rb1178spec/lib/gitlab/doorkeeper_secret_storing/secret/pbkdf2_sha512_spec.rb1179spec/lib/gitlab/git/commit_stats_spec.rb1180spec/lib/gitlab/metrics/subscribers/ldap_spec.rb1181spec/workers/gitlab/github_import/stage/import_protected_branches_worker_spec.rb1182spec/lib/gitlab/usage/metrics/aggregates/sources/redis_hll_spec.rb1183spec/policies/concerns/crud_policy_helpers_spec.rb1184spec/workers/repository_check/dispatch_worker_spec.rb1185spec/lib/gitlab/github_import/attachments_downloader_spec.rb1186spec/rubocop/cop/avoid_becomes_spec.rb1187spec/lib/gitlab/data_builder/alert_spec.rb1188spec/services/groups/deploy_tokens/destroy_service_spec.rb1189spec/lib/gitlab/database/postgres_autovacuum_activity_spec.rb1190spec/lib/gitlab/instrumentation/rate_limiting_gates_spec.rb1191spec/lib/gitlab/github_import/project_relation_type_spec.rb1192spec/lib/gitlab/ci/reports/security/flag_spec.rb1193spec/graphql/types/project_member_type_spec.rb1194spec/workers/ci/job_artifacts/expire_project_build_artifacts_worker_spec.rb1195spec/initializers/countries_spec.rb1196spec/lib/product_analytics/event_params_spec.rb1197spec/graphql/types/ci/config/need_type_spec.rb1198spec/lib/gitlab/middleware/rack_multipart_tempfile_factory_spec.rb1199spec/serializers/test_reports_comparer_serializer_spec.rb1200spec/graphql/types/ci/config/include_type_enum_spec.rb1201spec/lib/gitlab/email/message/build_ios_app_guide_spec.rb1202spec/lib/api/entities/snippets/repository_storage_move_spec.rb1203spec/serializers/analytics/cycle_analytics/stage_entity_spec.rb1204spec/lib/gitlab/git/patches/collection_spec.rb1205spec/rubocop/cop/gitlab/finder_with_find_by_spec.rb1206spec/lib/banzai/render_context_spec.rb1207spec/graphql/types/ci/job_status_enum_spec.rb1208spec/lib/gitlab/github_import/importer/issue_and_label_links_importer_spec.rb1209spec/graphql/types/metadata/kas_type_spec.rb1210spec/helpers/projects/security/configuration_helper_spec.rb1211spec/lib/gitlab/ci/config/external/mapper/filter_spec.rb1212spec/lib/gitlab/database/schema_validation/validators/base_validator_spec.rb1213spec/lib/system_check/base_check_spec.rb1214spec/lib/gitlab/rugged_instrumentation_spec.rb1215spec/lib/mattermost/client_spec.rb1216spec/lib/gitlab/tcp_checker_spec.rb1217spec/serializers/import/github_realtime_repo_entity_spec.rb1218spec/lib/gitlab/ci/parsers/instrumentation_spec.rb1219spec/lib/gitlab/database/sha_attribute_spec.rb1220spec/helpers/registrations_helper_spec.rb1221spec/workers/todos_destroyer/private_features_worker_spec.rb1222spec/graphql/types/packages/package_status_enum_spec.rb1223spec/serializers/group_issuable_autocomplete_entity_spec.rb1224spec/serializers/integrations/harbor_serializers/artifact_serializer_spec.rb1225Running all node tests without filter1226Running all node tests without filter1227Running command: bundle exec rspec -Ispec -rspec_helper --color --failure-exit-code 1 --error-exit-code 2 --format documentation --format RspecJunitFormatter --out rspec/junit_rspec.xml --tag ~quarantine --tag ~level:background_migration --default-path spec -- spec/lib/gitlab/ci/templates/auto_devops_gitlab_ci_yaml_spec.rb spec/rubocop/cop/rspec/invalid_feature_category_spec.rb spec/lib/gitlab/diff/file_spec.rb spec/lib/banzai/filter/repository_link_filter_spec.rb spec/lib/gitlab/background_migration/nullify_orphan_runner_id_on_ci_builds_spec.rb spec/lib/gitlab/import_export/project/relation_factory_spec.rb spec/services/packages/maven/metadata/create_versions_xml_service_spec.rb spec/services/resource_access_tokens/create_service_spec.rb spec/lib/release_highlights/validator_spec.rb spec/lib/gitlab/ssh_public_key_spec.rb spec/lib/gitlab/rack_attack/request_spec.rb spec/lib/gitlab/ci/config/entry/job_spec.rb spec/lib/feature_spec.rb spec/lib/gitlab/data_builder/push_spec.rb spec/models/concerns/token_authenticatable_spec.rb spec/lib/gitlab/database/batch_count_spec.rb spec/lib/gitlab/redis/db_load_balancing_spec.rb spec/lib/gitlab/import_export/fast_hash_serializer_spec.rb spec/services/work_items/parent_links/create_service_spec.rb spec/helpers/users_helper_spec.rb spec/services/post_receive_service_spec.rb spec/services/clusters/kubernetes/create_or_update_namespace_service_spec.rb spec/lib/gitlab/background_migration/backfill_project_namespace_on_issues_spec.rb spec/rubocop/cop/gitlab/mark_used_feature_flags_spec.rb spec/graphql/mutations/releases/update_spec.rb spec/services/labels/available_labels_service_spec.rb spec/models/concerns/chronic_duration_attribute_spec.rb spec/lib/gitlab_spec.rb spec/services/ci/reset_skipped_jobs_service_spec.rb spec/lib/gitlab/workhorse_spec.rb spec/models/concerns/reactive_caching_spec.rb spec/helpers/appearances_helper_spec.rb spec/services/projects/container_repository/gitlab/cleanup_tags_service_spec.rb spec/models/ssh_host_key_spec.rb spec/models/ci/build_metadata_spec.rb spec/lib/gitlab/redis/rate_limiting_spec.rb spec/workers/incident_management/process_alert_worker_v2_spec.rb spec/services/draft_notes/create_service_spec.rb spec/models/analytics/cycle_analytics/aggregation_spec.rb spec/finders/clusters/kubernetes_namespace_finder_spec.rb spec/services/files/update_service_spec.rb spec/lib/container_registry/migration_spec.rb spec/workers/concerns/worker_attributes_spec.rb spec/services/pages/migrate_legacy_storage_to_deployment_service_spec.rb spec/finders/concerns/finder_with_group_hierarchy_spec.rb spec/models/personal_snippet_spec.rb spec/policies/design_management/design_policy_spec.rb spec/bin/sidekiq_cluster_spec.rb spec/lib/gitlab/import_export/group/relation_tree_restorer_spec.rb spec/lib/gitlab/ci/reports/test_suite_comparer_spec.rb spec/policies/personal_snippet_policy_spec.rb spec/models/concerns/ci/has_ref_spec.rb spec/scripts/review_apps/automated_cleanup_spec.rb spec/lib/gitlab/http_io_spec.rb spec/presenters/project_member_presenter_spec.rb spec/lib/gitlab/background_migration/backfill_partitioned_table_spec.rb spec/models/packages/nuget/metadatum_spec.rb spec/views/ci/status/_badge.html.haml_spec.rb spec/lib/gitlab/ci/config/entry/service_spec.rb spec/models/programming_language_spec.rb spec/services/security/ci_configuration/sast_iac_create_service_spec.rb spec/lib/gitlab/import_export/command_line_util_spec.rb spec/lib/gitlab/harbor/query_spec.rb spec/serializers/issue_sidebar_basic_entity_spec.rb spec/lib/gitlab/checks/push_check_spec.rb spec/initializers/secret_token_spec.rb spec/workers/merge_requests/create_approval_event_worker_spec.rb spec/services/merge_requests/handle_assignees_change_service_spec.rb spec/lib/gitlab/ci/pipeline/chain/config/content_spec.rb spec/serializers/diff_viewer_entity_spec.rb spec/models/custom_emoji_spec.rb spec/lib/gitlab/ci/badge/coverage/template_spec.rb spec/models/group_deploy_key_spec.rb spec/services/ml/experiment_tracking/candidate_repository_spec.rb spec/lib/gitlab/ci/badge/release/latest_release_spec.rb spec/tasks/gitlab/container_registry_rake_spec.rb spec/views/layouts/_header_search.html.haml_spec.rb spec/services/labels/create_service_spec.rb spec/lib/gitlab/git/merge_base_spec.rb spec/lib/gitlab/ci/parsers/security/sast_spec.rb spec/services/alert_management/alerts/todo/create_service_spec.rb spec/lib/gitlab/github_import/importer/note_attachments_importer_spec.rb spec/models/group_label_spec.rb spec/lib/gitlab/database/dynamic_model_helpers_spec.rb spec/lib/error_tracking/sentry_client/api_urls_spec.rb spec/lib/sidebars/user_profile/menus/groups_menu_spec.rb spec/lib/gitlab/patch/prependable_spec.rb spec/lib/banzai/filter/image_link_filter_spec.rb spec/lib/gitlab/import_export/base/object_builder_spec.rb spec/lib/bulk_imports/projects/pipelines/issues_pipeline_spec.rb spec/lib/gitlab/github_import/representation/protected_branch_spec.rb spec/support_specs/graphql/arguments_spec.rb spec/services/ci/drop_pipeline_service_spec.rb spec/lib/gitlab/hook_data/key_builder_spec.rb spec/components/pajamas/banner_component_spec.rb spec/db/production/settings_spec.rb spec/services/feature_flags/destroy_service_spec.rb spec/models/integrations/chat_message/base_message_spec.rb spec/lib/gitlab/config/entry/validators_spec.rb spec/presenters/ci/trigger_presenter_spec.rb spec/finders/groups/user_groups_finder_spec.rb spec/services/resource_events/change_labels_service_spec.rb spec/lib/gitlab/ci/reports/reports_comparer_spec.rb spec/lib/gitlab/diff/char_diff_spec.rb spec/lib/gitlab/sidekiq_daemon/monitor_spec.rb spec/policies/incident_management/timeline_event_policy_spec.rb spec/finders/packages/conan/package_file_finder_spec.rb spec/lib/gitlab/import_export/project/sample/date_calculator_spec.rb spec/graphql/resolvers/ci/runner_projects_resolver_spec.rb spec/services/x509_certificate_revoke_service_spec.rb spec/lib/sidebars/admin/menus/admin_settings_menu_spec.rb spec/graphql/mutations/custom_emoji/destroy_spec.rb spec/graphql/mutations/security/ci_configuration/configure_sast_spec.rb spec/lib/gitlab/x509/tag_spec.rb spec/policies/clusters/agent_token_policy_spec.rb spec/graphql/mutations/ci/runner/bulk_delete_spec.rb spec/lib/gitlab/ci/reports/coverage_report_generator_spec.rb spec/workers/ci/parse_secure_file_metadata_worker_spec.rb spec/graphql/mutations/ci/job_token_scope/add_project_spec.rb spec/graphql/resolvers/alert_management/integrations_resolver_spec.rb spec/graphql/resolvers/project_pipelines_resolver_spec.rb spec/workers/releases/manage_evidence_worker_spec.rb spec/services/issue_links/destroy_service_spec.rb spec/lib/gitlab/phabricator_import/issues/task_importer_spec.rb spec/models/design_management/git_repository_spec.rb spec/lib/gitlab/authorized_keys_spec.rb spec/services/users/reject_service_spec.rb spec/serializers/job_artifact_report_entity_spec.rb spec/helpers/bizible_helper_spec.rb spec/services/container_expiration_policies/cleanup_service_spec.rb spec/serializers/jira_connect/app_data_serializer_spec.rb spec/lib/gitlab/ci/config/entry/hidden_spec.rb spec/presenters/packages/pypi/simple_package_versions_presenter_spec.rb spec/lib/gitlab/config/entry/composable_array_spec.rb spec/models/packages/npm/metadatum_spec.rb spec/services/achievements/create_service_spec.rb spec/validators/js_regex_validator_spec.rb spec/workers/gitlab/import/stuck_import_job_spec.rb spec/finders/projects/topics_finder_spec.rb spec/lib/gitlab/net_http_adapter_spec.rb spec/lib/gitlab/asset_proxy_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/distinct_count_projects_with_expiration_policy_metric_spec.rb spec/services/award_emojis/copy_service_spec.rb spec/tasks/migrate/schema_check_rake_spec.rb spec/views/admin/application_settings/network.html.haml_spec.rb spec/models/incident_management/timeline_event_tag_link_spec.rb spec/models/acts_as_taggable_on/tagging_spec.rb spec/lib/sidebars/user_settings/panel_spec.rb spec/lib/gitlab/ci/config/entry/inherit/default_spec.rb spec/graphql/types/customer_relations/contact_state_counts_type_spec.rb spec/lib/gitlab/sidekiq_middleware/admin_mode/client_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/count_users_creating_issues_metric_spec.rb spec/initializers/mail_starttls_patch_spec.rb spec/workers/todos_destroyer/confidential_issue_worker_spec.rb spec/lib/gitlab/webpack/file_loader_spec.rb spec/graphql/resolvers/deployment_resolver_spec.rb spec/views/events/event/_push.html.haml_spec.rb spec/lib/safe_zip/extract_spec.rb spec/lib/gitlab/github_gists_import/representation/gist_spec.rb spec/lib/gitlab/ci/build/releaser_spec.rb spec/services/pages_domains/create_service_spec.rb spec/services/achievements/revoke_service_spec.rb spec/lib/sidebars/groups/menus/observability_menu_spec.rb spec/services/service_desk_settings/update_service_spec.rb spec/models/work_items/widgets/labels_spec.rb spec/lib/gitlab/prometheus/queries/matched_metric_query_spec.rb spec/lib/gitlab/database/type/color_spec.rb spec/views/projects/blob/_viewer.html.haml_spec.rb spec/lib/gitlab/kas/client_spec.rb spec/workers/environments/canary_ingress/update_worker_spec.rb spec/services/snippets/repository_validation_service_spec.rb spec/helpers/dev_ops_report_helper_spec.rb spec/lib/gitlab/graphql/authorize/object_authorization_spec.rb spec/models/integrations/pushover_spec.rb spec/lib/gitlab/diff/position_collection_spec.rb spec/lib/gitlab/reference_counter_spec.rb spec/lib/bitbucket_server/representation/repo_spec.rb spec/initializers/safe_session_store_patch_spec.rb spec/rubocop/cop/rspec/duplicate_spec_location_spec.rb spec/lib/gitlab/word_diff/chunk_collection_spec.rb spec/models/user_mentions/snippet_user_mention_spec.rb spec/workers/ci/runners/stale_machines_cleanup_cron_worker_spec.rb spec/models/namespaces/sync_event_spec.rb spec/views/profiles/show.html.haml_spec.rb spec/lib/gitlab/tracking/helpers/weak_password_error_event_spec.rb spec/lib/gitlab/doorkeeper_secret_storing/secret/pbkdf2_sha512_spec.rb spec/lib/gitlab/git/commit_stats_spec.rb spec/lib/gitlab/metrics/subscribers/ldap_spec.rb spec/workers/gitlab/github_import/stage/import_protected_branches_worker_spec.rb spec/lib/gitlab/usage/metrics/aggregates/sources/redis_hll_spec.rb spec/policies/concerns/crud_policy_helpers_spec.rb spec/workers/repository_check/dispatch_worker_spec.rb spec/lib/gitlab/github_import/attachments_downloader_spec.rb spec/rubocop/cop/avoid_becomes_spec.rb spec/lib/gitlab/data_builder/alert_spec.rb spec/services/groups/deploy_tokens/destroy_service_spec.rb spec/lib/gitlab/database/postgres_autovacuum_activity_spec.rb spec/lib/gitlab/instrumentation/rate_limiting_gates_spec.rb spec/lib/gitlab/github_import/project_relation_type_spec.rb spec/lib/gitlab/ci/reports/security/flag_spec.rb spec/graphql/types/project_member_type_spec.rb spec/workers/ci/job_artifacts/expire_project_build_artifacts_worker_spec.rb spec/initializers/countries_spec.rb spec/lib/product_analytics/event_params_spec.rb spec/graphql/types/ci/config/need_type_spec.rb spec/lib/gitlab/middleware/rack_multipart_tempfile_factory_spec.rb spec/serializers/test_reports_comparer_serializer_spec.rb spec/graphql/types/ci/config/include_type_enum_spec.rb spec/lib/gitlab/email/message/build_ios_app_guide_spec.rb spec/lib/api/entities/snippets/repository_storage_move_spec.rb spec/serializers/analytics/cycle_analytics/stage_entity_spec.rb spec/lib/gitlab/git/patches/collection_spec.rb spec/rubocop/cop/gitlab/finder_with_find_by_spec.rb spec/lib/banzai/render_context_spec.rb spec/graphql/types/ci/job_status_enum_spec.rb spec/lib/gitlab/github_import/importer/issue_and_label_links_importer_spec.rb spec/graphql/types/metadata/kas_type_spec.rb spec/helpers/projects/security/configuration_helper_spec.rb spec/lib/gitlab/ci/config/external/mapper/filter_spec.rb spec/lib/gitlab/database/schema_validation/validators/base_validator_spec.rb spec/lib/system_check/base_check_spec.rb spec/lib/gitlab/rugged_instrumentation_spec.rb spec/lib/mattermost/client_spec.rb spec/lib/gitlab/tcp_checker_spec.rb spec/serializers/import/github_realtime_repo_entity_spec.rb spec/lib/gitlab/ci/parsers/instrumentation_spec.rb spec/lib/gitlab/database/sha_attribute_spec.rb spec/helpers/registrations_helper_spec.rb spec/workers/todos_destroyer/private_features_worker_spec.rb spec/graphql/types/packages/package_status_enum_spec.rb spec/serializers/group_issuable_autocomplete_entity_spec.rb spec/serializers/integrations/harbor_serializers/artifact_serializer_spec.rbKnapsack report generator started!1228warning: parser/current is loading parser/ruby30, which recognizes 3.0.5-compliant syntax, but you are running 3.0.6.1230/builds/gitlab-org/gitlab/lib/gitlab.rb:47: warning: already initialized constant Gitlab::APP_DIRS_PATTERN1231/builds/gitlab-org/gitlab/lib/gitlab.rb:47: warning: previous definition of APP_DIRS_PATTERN was here1232/builds/gitlab-org/gitlab/lib/gitlab.rb:48: warning: already initialized constant Gitlab::VERSION1233/builds/gitlab-org/gitlab/lib/gitlab.rb:48: warning: previous definition of VERSION was here1234/builds/gitlab-org/gitlab/lib/gitlab.rb:49: warning: already initialized constant Gitlab::INSTALLATION_TYPE1235/builds/gitlab-org/gitlab/lib/gitlab.rb:49: warning: previous definition of INSTALLATION_TYPE was here1236/builds/gitlab-org/gitlab/lib/gitlab.rb:50: warning: already initialized constant Gitlab::HTTP_PROXY_ENV_VARS1237/builds/gitlab-org/gitlab/lib/gitlab.rb:50: warning: previous definition of HTTP_PROXY_ENV_VARS was here1238Run options: exclude {:quarantine=>true, :level=>"background_migration"}1239Test environment set up in 0.845694214 seconds1240Auto-DevOps.gitlab-ci.yml1241 default_branch: "master"1242 the created pipeline1243 creates a build and a test job1244 when the project is set for deployment to AWS1245 creates an ECS deployment job for production only1246 behaves like no Kubernetes deployment job1247 does not create any Kubernetes deployment-related builds1248 behaves like no ECS job when AUTO_DEVOPS_PLATFORM_TARGET is not present1249 when AUTO_DEVOPS_PLATFORM_TARGET is nil1250 does not trigger the job1251 when AUTO_DEVOPS_PLATFORM_TARGET is empty1252 does not trigger the job1253 with FARGATE as a launch type1254 creates a FARGATE deployment job for production only1255 and we are not on the default branch1256 creates an ECS deployment job for review only1257 behaves like no ECS job when AUTO_DEVOPS_PLATFORM_TARGET is not present1258 when AUTO_DEVOPS_PLATFORM_TARGET is nil1259 does not trigger the job1260 when AUTO_DEVOPS_PLATFORM_TARGET is empty1261 does not trigger the job1262 behaves like no ECS job when AUTO_DEVOPS_PLATFORM_TARGET is not present1263 when AUTO_DEVOPS_PLATFORM_TARGET is nil1264 does not trigger the job1265 when AUTO_DEVOPS_PLATFORM_TARGET is empty1266 does not trigger the job1267 with FARGATE as a launch type1268 creates an FARGATE deployment job for review only1269 and when the project has an active cluster1270 on default branch1271 triggers the deployment to Kubernetes, not to ECS1272 when the platform target is EC21273 contains the build_artifact job, not the build job1274 when the project has no active cluster1275 only creates a build and a test stage1276 behaves like no Kubernetes deployment job1277 does not create any Kubernetes deployment-related builds1278 when a cluster is attached1279 behaves like pipeline with Kubernetes jobs1280 deployment-related builds1281 on default branch1282 does not include rollout jobs besides production1283 when STAGING_ENABLED=11284 includes a staging job and a production_manual job1285 when CANARY_ENABLED=11286 includes a canary job and a production_manual job1287 when MIGRATE_HELM_2TO3=true1288 includes a helm-2to3:migrate and a helm-2to3:cleanup job1289 outside of default branch1290 does not include rollout jobs besides review1291 when MIGRATE_HELM_2TO3=true1292 includes a helm-2to3:migrate and a helm-2to3:cleanup job1293 when certificate_based_clusters FF is disabled1294 does not include production job1295 when project has an Agent1296 behaves like pipeline with Kubernetes jobs1297 deployment-related builds1298 on default branch1299 does not include rollout jobs besides production1300 when STAGING_ENABLED=11301 includes a staging job and a production_manual job1302 when CANARY_ENABLED=11303 includes a canary job and a production_manual job1304 when MIGRATE_HELM_2TO3=true1305 includes a helm-2to3:migrate and a helm-2to3:cleanup job1306 outside of default branch1307 does not include rollout jobs besides review1308 when MIGRATE_HELM_2TO3=true1309 includes a helm-2to3:migrate and a helm-2to3:cleanup job1310 when certificate_based_clusters FF is disabled1311 includes production job1312 buildpack detection1313 No match1314 creates a pipeline with the expected jobs1315 Buildpack1316 creates a pipeline with the expected jobs1317 Explicit set1318 creates a pipeline with the expected jobs1319 Explicit unset1320 creates a pipeline with the expected jobs1321 DOCKERFILE_PATH1322 creates a pipeline with the expected jobs1323 Dockerfile1324 creates a pipeline with the expected jobs1325 Clojure1326 creates a pipeline with the expected jobs1327 Go modules1328 creates a pipeline with the expected jobs1329 Go gb1330 creates a pipeline with the expected jobs1331 Gradle1332 creates a pipeline with the expected jobs1333 Java1334 creates a pipeline with the expected jobs1335 Multi-buildpack1336 creates a pipeline with the expected jobs1337 NodeJS1338 creates a pipeline with the expected jobs1339 PHP1340 creates a pipeline with the expected jobs1341 Play1342 creates a pipeline with the expected jobs1343 Python1344 creates a pipeline with the expected jobs1345 Ruby1346 creates a pipeline with the expected jobs1347 Scala1348 creates a pipeline with the expected jobs1349 Static1350 creates a pipeline with the expected jobs1351 default_branch: "main"1352 the created pipeline1353 creates a build and a test job1354 when the project is set for deployment to AWS1355 creates an ECS deployment job for production only1356 behaves like no Kubernetes deployment job1357 does not create any Kubernetes deployment-related builds1358 behaves like no ECS job when AUTO_DEVOPS_PLATFORM_TARGET is not present1359 when AUTO_DEVOPS_PLATFORM_TARGET is nil1360 does not trigger the job1361 when AUTO_DEVOPS_PLATFORM_TARGET is empty1362 does not trigger the job1363 with FARGATE as a launch type1364 creates a FARGATE deployment job for production only1365 and we are not on the default branch1366 creates an ECS deployment job for review only1367 behaves like no ECS job when AUTO_DEVOPS_PLATFORM_TARGET is not present1368 when AUTO_DEVOPS_PLATFORM_TARGET is nil1369 does not trigger the job1370 when AUTO_DEVOPS_PLATFORM_TARGET is empty1371 does not trigger the job1372 behaves like no ECS job when AUTO_DEVOPS_PLATFORM_TARGET is not present1373 when AUTO_DEVOPS_PLATFORM_TARGET is nil1374 does not trigger the job1375 when AUTO_DEVOPS_PLATFORM_TARGET is empty1376 does not trigger the job1377 with FARGATE as a launch type1378 creates an FARGATE deployment job for review only1379 and when the project has an active cluster1380 on default branch1381 triggers the deployment to Kubernetes, not to ECS1382 when the platform target is EC21383 contains the build_artifact job, not the build job1384 when the project has no active cluster1385 only creates a build and a test stage1386 behaves like no Kubernetes deployment job1387 does not create any Kubernetes deployment-related builds1388 when a cluster is attached1389 behaves like pipeline with Kubernetes jobs1390 deployment-related builds1391 on default branch1392 does not include rollout jobs besides production1393 when STAGING_ENABLED=11394 includes a staging job and a production_manual job1395 when CANARY_ENABLED=11396 includes a canary job and a production_manual job1397 when MIGRATE_HELM_2TO3=true1398 includes a helm-2to3:migrate and a helm-2to3:cleanup job1399 outside of default branch1400 does not include rollout jobs besides review1401 when MIGRATE_HELM_2TO3=true1402 includes a helm-2to3:migrate and a helm-2to3:cleanup job1403 when certificate_based_clusters FF is disabled1404 does not include production job1405 when project has an Agent1406 behaves like pipeline with Kubernetes jobs1407 deployment-related builds1408 on default branch1409 does not include rollout jobs besides production1410 when STAGING_ENABLED=11411 includes a staging job and a production_manual job1412 when CANARY_ENABLED=11413 includes a canary job and a production_manual job1414 when MIGRATE_HELM_2TO3=true1415 includes a helm-2to3:migrate and a helm-2to3:cleanup job1416 outside of default branch1417 does not include rollout jobs besides review1418 when MIGRATE_HELM_2TO3=true1419 includes a helm-2to3:migrate and a helm-2to3:cleanup job1420 when certificate_based_clusters FF is disabled1421 includes production job1422 buildpack detection1423 No match1424 creates a pipeline with the expected jobs1425 Buildpack1426 creates a pipeline with the expected jobs1427 Explicit set1428 creates a pipeline with the expected jobs1429 Explicit unset1430 creates a pipeline with the expected jobs1431 DOCKERFILE_PATH1432 creates a pipeline with the expected jobs1433 Dockerfile1434 creates a pipeline with the expected jobs1435 Clojure1436 creates a pipeline with the expected jobs1437 Go modules1438 creates a pipeline with the expected jobs1439 Go gb1440 creates a pipeline with the expected jobs1441 Gradle1442 creates a pipeline with the expected jobs1443 Java1444 creates a pipeline with the expected jobs1445 Multi-buildpack1446 creates a pipeline with the expected jobs1447 NodeJS1448 creates a pipeline with the expected jobs1449 PHP1450 creates a pipeline with the expected jobs1451 Play1452 creates a pipeline with the expected jobs1453 Python1454 creates a pipeline with the expected jobs1455 Ruby1456 creates a pipeline with the expected jobs1457 Scala1458 creates a pipeline with the expected jobs1459 Static1460 creates a pipeline with the expected jobs1461RuboCop::Cop::RSpec::InvalidFeatureCategory1462 # order random1463 does not flag use of invalid categories in non-example code1464 flags invalid feature category for non-symbols1465 #external_dependency_checksum1466 returns a SHA256 digest used by RuboCop to invalid cache1467 with categories defined in config/feature_categories.yml1468 valid_category: "advanced_deployments"1469 behaves like feature category validation1470 flags invalid feature category in top level example group1471 flags invalid feature category in nested context1472 flags invalid feature category in examples1473 does not flag if feature category is valid1474 suggests an alternative1475 valid_category: "advisory_database"1476 behaves like feature category validation1477 flags invalid feature category in top level example group1478 flags invalid feature category in nested context1479 flags invalid feature category in examples1480 does not flag if feature category is valid1481 suggests an alternative1482 valid_category: "api"1483 behaves like feature category validation1484 flags invalid feature category in top level example group1485 flags invalid feature category in nested context1486 flags invalid feature category in examples1487 does not flag if feature category is valid1488 suggests an alternative1489 valid_category: "api_security"1490 behaves like feature category validation1491 flags invalid feature category in top level example group1492 flags invalid feature category in nested context1493 flags invalid feature category in examples1494 does not flag if feature category is valid1495 suggests an alternative1496 valid_category: "application_instrumentation"1497 behaves like feature category validation1498 flags invalid feature category in top level example group1499 flags invalid feature category in nested context1500 flags invalid feature category in examples1501 does not flag if feature category is valid1502 suggests an alternative1503 valid_category: "application_performance"1504 behaves like feature category validation1505 flags invalid feature category in top level example group1506 flags invalid feature category in nested context1507 flags invalid feature category in examples1508 does not flag if feature category is valid1509 suggests an alternative1510 valid_category: "attack_emulation"1511 behaves like feature category validation1512 flags invalid feature category in top level example group1513 flags invalid feature category in nested context1514 flags invalid feature category in examples1515 does not flag if feature category is valid1516 suggests an alternative1517 valid_category: "audit_events"1518 behaves like feature category validation1519 flags invalid feature category in top level example group1520 flags invalid feature category in nested context1521 flags invalid feature category in examples1522 does not flag if feature category is valid1523 suggests an alternative1524 valid_category: "auto_devops"1525 behaves like feature category validation1526 flags invalid feature category in top level example group1527 flags invalid feature category in nested context1528 flags invalid feature category in examples1529 does not flag if feature category is valid1530 suggests an alternative1531 valid_category: "backup_restore"1532 behaves like feature category validation1533 flags invalid feature category in top level example group1534 flags invalid feature category in nested context1535 flags invalid feature category in examples1536 does not flag if feature category is valid1537 suggests an alternative1538 valid_category: "billing_and_payments"1539 behaves like feature category validation1540 flags invalid feature category in top level example group1541 flags invalid feature category in nested context1542 flags invalid feature category in examples1543 does not flag if feature category is valid1544 suggests an alternative1545 valid_category: "build"1546 behaves like feature category validation1547 flags invalid feature category in top level example group1548 flags invalid feature category in nested context1549 flags invalid feature category in examples1550 does not flag if feature category is valid1551 suggests an alternative1552 valid_category: "build_artifacts"1553 behaves like feature category validation1554 flags invalid feature category in top level example group1555 flags invalid feature category in nested context1556 flags invalid feature category in examples1557 does not flag if feature category is valid1558 suggests an alternative1559 valid_category: "capacity_planning"1560 behaves like feature category validation1561 flags invalid feature category in top level example group1562 flags invalid feature category in nested context1563 flags invalid feature category in examples1564 does not flag if feature category is valid1565 suggests an alternative1566 valid_category: "cell"1567 behaves like feature category validation1568 flags invalid feature category in top level example group1569 flags invalid feature category in nested context1570 flags invalid feature category in examples1571 does not flag if feature category is valid1572 suggests an alternative1573 valid_category: "cloud_native_installation"1574 behaves like feature category validation1575 flags invalid feature category in top level example group1576 flags invalid feature category in nested context1577 flags invalid feature category in examples1578 does not flag if feature category is valid1579 suggests an alternative1580 valid_category: "code_quality"1581 behaves like feature category validation1582 flags invalid feature category in top level example group1583 flags invalid feature category in nested context1584 flags invalid feature category in examples1585 does not flag if feature category is valid1586 suggests an alternative1587 valid_category: "code_review_workflow"1588 behaves like feature category validation1589 flags invalid feature category in top level example group1590 flags invalid feature category in nested context1591 flags invalid feature category in examples1592 does not flag if feature category is valid1593 suggests an alternative1594 valid_category: "code_search"1595 behaves like feature category validation1596 flags invalid feature category in top level example group1597 flags invalid feature category in nested context1598 flags invalid feature category in examples1599 does not flag if feature category is valid1600 suggests an alternative1601 valid_category: "code_suggestions"1602 behaves like feature category validation1603 flags invalid feature category in top level example group1604 flags invalid feature category in nested context1605 flags invalid feature category in examples1606 does not flag if feature category is valid1607 suggests an alternative1608 valid_category: "code_testing"1609 behaves like feature category validation1610 flags invalid feature category in top level example group1611 flags invalid feature category in nested context1612 flags invalid feature category in examples1613 does not flag if feature category is valid1614 suggests an alternative1615 valid_category: "commerce_integrations"1616 behaves like feature category validation1617 flags invalid feature category in top level example group1618 flags invalid feature category in nested context1619 flags invalid feature category in examples1620 does not flag if feature category is valid1621 suggests an alternative1622 valid_category: "compliance_management"1623 behaves like feature category validation1624 flags invalid feature category in top level example group1625 flags invalid feature category in nested context1626 flags invalid feature category in examples1627 does not flag if feature category is valid1628 suggests an alternative1629 valid_category: "consumables_cost_management"1630 behaves like feature category validation1631 flags invalid feature category in top level example group1632 flags invalid feature category in nested context1633 flags invalid feature category in examples1634 does not flag if feature category is valid1635 suggests an alternative1636 valid_category: "container_registry"1637 behaves like feature category validation1638 flags invalid feature category in top level example group1639 flags invalid feature category in nested context1640 flags invalid feature category in examples1641 does not flag if feature category is valid1642 suggests an alternative1643 valid_category: "container_scanning"1644 behaves like feature category validation1645 flags invalid feature category in top level example group1646 flags invalid feature category in nested context1647 flags invalid feature category in examples1648 does not flag if feature category is valid1649 suggests an alternative1650 valid_category: "continuous_delivery"1651 behaves like feature category validation1652 flags invalid feature category in top level example group1653 flags invalid feature category in nested context1654 flags invalid feature category in examples1655 does not flag if feature category is valid1656 suggests an alternative1657 valid_category: "continuous_integration"1658 behaves like feature category validation1659 flags invalid feature category in top level example group1660 flags invalid feature category in nested context1661 flags invalid feature category in examples1662 does not flag if feature category is valid1663 suggests an alternative1664 valid_category: "customersdot_application"1665 behaves like feature category validation1666 flags invalid feature category in top level example group1667 flags invalid feature category in nested context1668 flags invalid feature category in examples1669 does not flag if feature category is valid1670 suggests an alternative1671 valid_category: "database"1672 behaves like feature category validation1673 flags invalid feature category in top level example group1674 flags invalid feature category in nested context1675 flags invalid feature category in examples1676 does not flag if feature category is valid1677 suggests an alternative1678 valid_category: "dataops"1679 behaves like feature category validation1680 flags invalid feature category in top level example group1681 flags invalid feature category in nested context1682 flags invalid feature category in examples1683 does not flag if feature category is valid1684 suggests an alternative1685 valid_category: "dedicated"1686 behaves like feature category validation1687 flags invalid feature category in top level example group1688 flags invalid feature category in nested context1689 flags invalid feature category in examples1690 does not flag if feature category is valid1691 suggests an alternative1692 valid_category: "delivery"1693 behaves like feature category validation1694 flags invalid feature category in top level example group1695 flags invalid feature category in nested context1696 flags invalid feature category in examples1697 does not flag if feature category is valid1698 suggests an alternative1699 valid_category: "dependency_firewall"1700 behaves like feature category validation1701 flags invalid feature category in top level example group1702 flags invalid feature category in nested context1703 flags invalid feature category in examples1704 does not flag if feature category is valid1705 suggests an alternative1706 valid_category: "dependency_management"1707 behaves like feature category validation1708 flags invalid feature category in top level example group1709 flags invalid feature category in nested context1710 flags invalid feature category in examples1711 does not flag if feature category is valid1712 suggests an alternative1713 valid_category: "dependency_proxy"1714 behaves like feature category validation1715 flags invalid feature category in top level example group1716 flags invalid feature category in nested context1717 flags invalid feature category in examples1718 does not flag if feature category is valid1719 suggests an alternative1720 valid_category: "deployment_management"1721 behaves like feature category validation1722 flags invalid feature category in top level example group1723 flags invalid feature category in nested context1724 flags invalid feature category in examples1725 does not flag if feature category is valid1726 suggests an alternative1727 valid_category: "design_management"1728 behaves like feature category validation1729 flags invalid feature category in top level example group1730 flags invalid feature category in nested context1731 flags invalid feature category in examples1732 does not flag if feature category is valid1733 suggests an alternative1734 valid_category: "design_system"1735 behaves like feature category validation1736 flags invalid feature category in top level example group1737 flags invalid feature category in nested context1738 flags invalid feature category in examples1739 does not flag if feature category is valid1740 suggests an alternative1741 valid_category: "devops_reports"1742 behaves like feature category validation1743 flags invalid feature category in top level example group1744 flags invalid feature category in nested context1745 flags invalid feature category in examples1746 does not flag if feature category is valid1747 suggests an alternative1748 valid_category: "disaster_recovery"1749 behaves like feature category validation1750 flags invalid feature category in top level example group1751 flags invalid feature category in nested context1752 flags invalid feature category in examples1753 does not flag if feature category is valid1754 suggests an alternative1755 valid_category: "dora_metrics"1756 behaves like feature category validation1757 flags invalid feature category in top level example group1758 flags invalid feature category in nested context1759 flags invalid feature category in examples1760 does not flag if feature category is valid1761 suggests an alternative1762 valid_category: "dynamic_application_security_testing"1763 behaves like feature category validation1764 flags invalid feature category in top level example group1765 flags invalid feature category in nested context1766 flags invalid feature category in examples1767 does not flag if feature category is valid1768 suggests an alternative1769 valid_category: "environment_management"1770 behaves like feature category validation1771 flags invalid feature category in top level example group1772 flags invalid feature category in nested context1773 flags invalid feature category in examples1774 does not flag if feature category is valid1775 suggests an alternative1776 valid_category: "error_budgets"1777 behaves like feature category validation1778 flags invalid feature category in top level example group1779 flags invalid feature category in nested context1780 flags invalid feature category in examples1781 does not flag if feature category is valid1782 suggests an alternative1783 valid_category: "error_tracking"1784 behaves like feature category validation1785 flags invalid feature category in top level example group1786 flags invalid feature category in nested context1787 flags invalid feature category in examples1788 does not flag if feature category is valid1789 suggests an alternative1790 valid_category: "experimentation_activation"1791 behaves like feature category validation1792 flags invalid feature category in top level example group1793 flags invalid feature category in nested context1794 flags invalid feature category in examples1795 does not flag if feature category is valid1796 suggests an alternative1797 valid_category: "experimentation_adoption"1798 behaves like feature category validation1799 flags invalid feature category in top level example group1800 flags invalid feature category in nested context1801 flags invalid feature category in examples1802 does not flag if feature category is valid1803 suggests an alternative1804 valid_category: "experimentation_conversion"1805 behaves like feature category validation1806 flags invalid feature category in top level example group1807 flags invalid feature category in nested context1808 flags invalid feature category in examples1809 does not flag if feature category is valid1810 suggests an alternative1811 valid_category: "experimentation_expansion"1812 behaves like feature category validation1813 flags invalid feature category in top level example group1814 flags invalid feature category in nested context1815 flags invalid feature category in examples1816 does not flag if feature category is valid1817 suggests an alternative1818 valid_category: "feature_flags"1819 behaves like feature category validation1820 flags invalid feature category in top level example group1821 flags invalid feature category in nested context1822 flags invalid feature category in examples1823 does not flag if feature category is valid1824 suggests an alternative1825 valid_category: "five_minute_production_app"1826 behaves like feature category validation1827 flags invalid feature category in top level example group1828 flags invalid feature category in nested context1829 flags invalid feature category in examples1830 does not flag if feature category is valid1831 suggests an alternative1832 valid_category: "fulfillment_admin_tooling"1833 behaves like feature category validation1834 flags invalid feature category in top level example group1835 flags invalid feature category in nested context1836 flags invalid feature category in examples1837 does not flag if feature category is valid1838 suggests an alternative1839 valid_category: "fulfillment_infrastructure"1840 behaves like feature category validation1841 flags invalid feature category in top level example group1842 flags invalid feature category in nested context1843 flags invalid feature category in examples1844 does not flag if feature category is valid1845 suggests an alternative1846 valid_category: "fuzz_testing"1847 behaves like feature category validation1848 flags invalid feature category in top level example group1849 flags invalid feature category in nested context1850 flags invalid feature category in examples1851 does not flag if feature category is valid1852 suggests an alternative1853 valid_category: "geo_replication"1854 behaves like feature category validation1855 flags invalid feature category in top level example group1856 flags invalid feature category in nested context1857 flags invalid feature category in examples1858 does not flag if feature category is valid1859 suggests an alternative1860 valid_category: "gitaly"1861 behaves like feature category validation1862 flags invalid feature category in top level example group1863 flags invalid feature category in nested context1864 flags invalid feature category in examples1865 does not flag if feature category is valid1866 suggests an alternative1867 valid_category: "gitlab_cli"1868 behaves like feature category validation1869 flags invalid feature category in top level example group1870 flags invalid feature category in nested context1871 flags invalid feature category in examples1872 does not flag if feature category is valid1873 suggests an alternative1874 valid_category: "gitlab_docs"1875 behaves like feature category validation1876 flags invalid feature category in top level example group1877 flags invalid feature category in nested context1878 flags invalid feature category in examples1879 does not flag if feature category is valid1880 suggests an alternative1881 valid_category: "global_search"1882 behaves like feature category validation1883 flags invalid feature category in top level example group1884 flags invalid feature category in nested context1885 flags invalid feature category in examples1886 does not flag if feature category is valid1887 suggests an alternative1888 valid_category: "helm_chart_registry"1889 behaves like feature category validation1890 flags invalid feature category in top level example group1891 flags invalid feature category in nested context1892 flags invalid feature category in examples1893 does not flag if feature category is valid1894 suggests an alternative1895 valid_category: "importers"1896 behaves like feature category validation1897 flags invalid feature category in top level example group1898 flags invalid feature category in nested context1899 flags invalid feature category in examples1900 does not flag if feature category is valid1901 suggests an alternative1902 valid_category: "incident_management"1903 behaves like feature category validation1904 flags invalid feature category in top level example group1905 flags invalid feature category in nested context1906 flags invalid feature category in examples1907 does not flag if feature category is valid1908 suggests an alternative1909 valid_category: "infrastructure_as_code"1910 behaves like feature category validation1911 flags invalid feature category in top level example group1912 flags invalid feature category in nested context1913 flags invalid feature category in examples1914 does not flag if feature category is valid1915 suggests an alternative1916 valid_category: "infrastructure_cost_data"1917 behaves like feature category validation1918 flags invalid feature category in top level example group1919 flags invalid feature category in nested context1920 flags invalid feature category in examples1921 does not flag if feature category is valid1922 suggests an alternative1923 valid_category: "insider_threat"1924 behaves like feature category validation1925 flags invalid feature category in top level example group1926 flags invalid feature category in nested context1927 flags invalid feature category in examples1928 does not flag if feature category is valid1929 suggests an alternative1930 valid_category: "instance_resiliency"1931 behaves like feature category validation1932 flags invalid feature category in top level example group1933 flags invalid feature category in nested context1934 flags invalid feature category in examples1935 does not flag if feature category is valid1936 suggests an alternative1937 valid_category: "integrations"1938 behaves like feature category validation1939 flags invalid feature category in top level example group1940 flags invalid feature category in nested context1941 flags invalid feature category in examples1942 does not flag if feature category is valid1943 suggests an alternative1944 valid_category: "intel_code_security"1945 behaves like feature category validation1946 flags invalid feature category in top level example group1947 flags invalid feature category in nested context1948 flags invalid feature category in examples1949 does not flag if feature category is valid1950 suggests an alternative1951 valid_category: "interactive_application_security_testing"1952 behaves like feature category validation1953 flags invalid feature category in top level example group1954 flags invalid feature category in nested context1955 flags invalid feature category in examples1956 does not flag if feature category is valid1957 suggests an alternative1958 valid_category: "internationalization"1959 behaves like feature category validation1960 flags invalid feature category in top level example group1961 flags invalid feature category in nested context1962 flags invalid feature category in examples1963 does not flag if feature category is valid1964 suggests an alternative1965 valid_category: "kubernetes_management"1966 behaves like feature category validation1967 flags invalid feature category in top level example group1968 flags invalid feature category in nested context1969 flags invalid feature category in examples1970 does not flag if feature category is valid1971 suggests an alternative1972 valid_category: "logging"1973 behaves like feature category validation1974 flags invalid feature category in top level example group1975 flags invalid feature category in nested context1976 flags invalid feature category in examples1977 does not flag if feature category is valid1978 suggests an alternative1979 valid_category: "merge_trains"1980 behaves like feature category validation1981 flags invalid feature category in top level example group1982 flags invalid feature category in nested context1983 flags invalid feature category in examples1984 does not flag if feature category is valid1985 suggests an alternative1986 valid_category: "metrics"1987 behaves like feature category validation1988 flags invalid feature category in top level example group1989 flags invalid feature category in nested context1990 flags invalid feature category in examples1991 does not flag if feature category is valid1992 suggests an alternative1993 valid_category: "mlops"1994 behaves like feature category validation1995 flags invalid feature category in top level example group1996 flags invalid feature category in nested context1997 flags invalid feature category in examples1998 does not flag if feature category is valid1999 suggests an alternative2000 valid_category: "mobile_devops"2001 behaves like feature category validation2002 flags invalid feature category in top level example group2003 flags invalid feature category in nested context2004 flags invalid feature category in examples2005 does not flag if feature category is valid2006 suggests an alternative2007 valid_category: "navigation"2008 behaves like feature category validation2009 flags invalid feature category in top level example group2010 flags invalid feature category in nested context2011 flags invalid feature category in examples2012 does not flag if feature category is valid2013 suggests an alternative2014 valid_category: "no_code_automation"2015 behaves like feature category validation2016 flags invalid feature category in top level example group2017 flags invalid feature category in nested context2018 flags invalid feature category in examples2019 does not flag if feature category is valid2020 suggests an alternative2021 valid_category: "omnibus_package"2022 behaves like feature category validation2023 flags invalid feature category in top level example group2024 flags invalid feature category in nested context2025 flags invalid feature category in examples2026 does not flag if feature category is valid2027 suggests an alternative2028 valid_category: "on_call_schedule_management"2029 behaves like feature category validation2030 flags invalid feature category in top level example group2031 flags invalid feature category in nested context2032 flags invalid feature category in examples2033 does not flag if feature category is valid2034 suggests an alternative2035 valid_category: "onboarding"2036 behaves like feature category validation2037 flags invalid feature category in top level example group2038 flags invalid feature category in nested context2039 flags invalid feature category in examples2040 does not flag if feature category is valid2041 suggests an alternative2042 valid_category: "package_registry"2043 behaves like feature category validation2044 flags invalid feature category in top level example group2045 flags invalid feature category in nested context2046 flags invalid feature category in examples2047 does not flag if feature category is valid2048 suggests an alternative2049 valid_category: "pages"2050 behaves like feature category validation2051 flags invalid feature category in top level example group2052 flags invalid feature category in nested context2053 flags invalid feature category in examples2054 does not flag if feature category is valid2055 suggests an alternative2056 valid_category: "pipeline_composition"2057 behaves like feature category validation2058 flags invalid feature category in top level example group2059 flags invalid feature category in nested context2060 flags invalid feature category in examples2061 does not flag if feature category is valid2062 suggests an alternative2063 valid_category: "planning_analytics"2064 behaves like feature category validation2065 flags invalid feature category in top level example group2066 flags invalid feature category in nested context2067 flags invalid feature category in examples2068 does not flag if feature category is valid2069 suggests an alternative2070 valid_category: "portfolio_management"2071 behaves like feature category validation2072 flags invalid feature category in top level example group2073 flags invalid feature category in nested context2074 flags invalid feature category in examples2075 does not flag if feature category is valid2076 suggests an alternative2077 valid_category: "product_analytics"2078 behaves like feature category validation2079 flags invalid feature category in top level example group2080 flags invalid feature category in nested context2081 flags invalid feature category in examples2082 does not flag if feature category is valid2083 suggests an alternative2084 valid_category: "projects"2085 behaves like feature category validation2086 flags invalid feature category in top level example group2087 flags invalid feature category in nested context2088 flags invalid feature category in examples2089 does not flag if feature category is valid2090 suggests an alternative2091 valid_category: "pubsec_services"2092 behaves like feature category validation2093 flags invalid feature category in top level example group2094 flags invalid feature category in nested context2095 flags invalid feature category in examples2096 does not flag if feature category is valid2097 suggests an alternative2098 valid_category: "purchase"2099 behaves like feature category validation2100 flags invalid feature category in top level example group2101 flags invalid feature category in nested context2102 flags invalid feature category in examples2103 does not flag if feature category is valid2104 suggests an alternative2105 valid_category: "quality_management"2106 behaves like feature category validation2107 flags invalid feature category in top level example group2108 flags invalid feature category in nested context2109 flags invalid feature category in examples2110 does not flag if feature category is valid2111 suggests an alternative2112 valid_category: "rate_limiting"2113 behaves like feature category validation2114 flags invalid feature category in top level example group2115 flags invalid feature category in nested context2116 flags invalid feature category in examples2117 does not flag if feature category is valid2118 suggests an alternative2119 valid_category: "redis"2120 behaves like feature category validation2121 flags invalid feature category in top level example group2122 flags invalid feature category in nested context2123 flags invalid feature category in examples2124 does not flag if feature category is valid2125 suggests an alternative2126 valid_category: "release_evidence"2127 behaves like feature category validation2128 flags invalid feature category in top level example group2129 flags invalid feature category in nested context2130 flags invalid feature category in examples2131 does not flag if feature category is valid2132 suggests an alternative2133 valid_category: "release_orchestration"2134 behaves like feature category validation2135 flags invalid feature category in top level example group2136 flags invalid feature category in nested context2137 flags invalid feature category in examples2138 does not flag if feature category is valid2139 suggests an alternative2140 valid_category: "remote_development"2141 behaves like feature category validation2142 flags invalid feature category in top level example group2143 flags invalid feature category in nested context2144 flags invalid feature category in examples2145 does not flag if feature category is valid2146 suggests an alternative2147 valid_category: "requirements_management"2148 behaves like feature category validation2149 flags invalid feature category in top level example group2150 flags invalid feature category in nested context2151 flags invalid feature category in examples2152 does not flag if feature category is valid2153 suggests an alternative2154 valid_category: "review_apps"2155 behaves like feature category validation2156 flags invalid feature category in top level example group2157 flags invalid feature category in nested context2158 flags invalid feature category in examples2159 does not flag if feature category is valid2160 suggests an alternative2161 valid_category: "runbooks"2162 behaves like feature category validation2163 flags invalid feature category in top level example group2164 flags invalid feature category in nested context2165 flags invalid feature category in examples2166 does not flag if feature category is valid2167 suggests an alternative2168 valid_category: "runner"2169 behaves like feature category validation2170 flags invalid feature category in top level example group2171 flags invalid feature category in nested context2172 flags invalid feature category in examples2173 does not flag if feature category is valid2174 suggests an alternative2175 valid_category: "runner_fleet"2176 behaves like feature category validation2177 flags invalid feature category in top level example group2178 flags invalid feature category in nested context2179 flags invalid feature category in examples2180 does not flag if feature category is valid2181 suggests an alternative2182 valid_category: "runner_saas"2183 behaves like feature category validation2184 flags invalid feature category in top level example group2185 flags invalid feature category in nested context2186 flags invalid feature category in examples2187 does not flag if feature category is valid2188 suggests an alternative2189 valid_category: "saas_provisioning"2190 behaves like feature category validation2191 flags invalid feature category in top level example group2192 flags invalid feature category in nested context2193 flags invalid feature category in examples2194 does not flag if feature category is valid2195 suggests an alternative2196 valid_category: "sbom"2197 behaves like feature category validation2198 flags invalid feature category in top level example group2199 flags invalid feature category in nested context2200 flags invalid feature category in examples2201 does not flag if feature category is valid2202 suggests an alternative2203 valid_category: "scalability"2204 behaves like feature category validation2205 flags invalid feature category in top level example group2206 flags invalid feature category in nested context2207 flags invalid feature category in examples2208 does not flag if feature category is valid2209 suggests an alternative2210 valid_category: "seat_cost_management"2211 behaves like feature category validation2212 flags invalid feature category in top level example group2213 flags invalid feature category in nested context2214 flags invalid feature category in examples2215 does not flag if feature category is valid2216 suggests an alternative2217 valid_category: "secret_detection"2218 behaves like feature category validation2219 flags invalid feature category in top level example group2220 flags invalid feature category in nested context2221 flags invalid feature category in examples2222 does not flag if feature category is valid2223 suggests an alternative2224 valid_category: "secrets_management"2225 behaves like feature category validation2226 flags invalid feature category in top level example group2227 flags invalid feature category in nested context2228 flags invalid feature category in examples2229 does not flag if feature category is valid2230 suggests an alternative2231 valid_category: "security_benchmarking"2232 behaves like feature category validation2233 flags invalid feature category in top level example group2234 flags invalid feature category in nested context2235 flags invalid feature category in examples2236 does not flag if feature category is valid2237 suggests an alternative2238 valid_category: "security_policy_management"2239 behaves like feature category validation2240 flags invalid feature category in top level example group2241 flags invalid feature category in nested context2242 flags invalid feature category in examples2243 does not flag if feature category is valid2244 suggests an alternative2245 valid_category: "service_desk"2246 behaves like feature category validation2247 flags invalid feature category in top level example group2248 flags invalid feature category in nested context2249 flags invalid feature category in examples2250 does not flag if feature category is valid2251 suggests an alternative2252 valid_category: "service_ping"2253 behaves like feature category validation2254 flags invalid feature category in top level example group2255 flags invalid feature category in nested context2256 flags invalid feature category in examples2257 does not flag if feature category is valid2258 suggests an alternative2259 valid_category: "sm_provisioning"2260 behaves like feature category validation2261 flags invalid feature category in top level example group2262 flags invalid feature category in nested context2263 flags invalid feature category in examples2264 does not flag if feature category is valid2265 suggests an alternative2266 valid_category: "software_composition_analysis"2267 behaves like feature category validation2268 flags invalid feature category in top level example group2269 flags invalid feature category in nested context2270 flags invalid feature category in examples2271 does not flag if feature category is valid2272 suggests an alternative2273 valid_category: "source_code_management"2274 behaves like feature category validation2275 flags invalid feature category in top level example group2276 flags invalid feature category in nested context2277 flags invalid feature category in examples2278 does not flag if feature category is valid2279 suggests an alternative2280 valid_category: "static_application_security_testing"2281 behaves like feature category validation2282 flags invalid feature category in top level example group2283 flags invalid feature category in nested context2284 flags invalid feature category in examples2285 does not flag if feature category is valid2286 suggests an alternative2287 valid_category: "subgroups"2288 behaves like feature category validation2289 flags invalid feature category in top level example group2290 flags invalid feature category in nested context2291 flags invalid feature category in examples2292 does not flag if feature category is valid2293 suggests an alternative2294 valid_category: "subscription_management"2295 behaves like feature category validation2296 flags invalid feature category in top level example group2297 flags invalid feature category in nested context2298 flags invalid feature category in examples2299 does not flag if feature category is valid2300 suggests an alternative2301 valid_category: "system_access"2302 behaves like feature category validation2303 flags invalid feature category in top level example group2304 flags invalid feature category in nested context2305 flags invalid feature category in examples2306 does not flag if feature category is valid2307 suggests an alternative2308 valid_category: "team_planning"2309 behaves like feature category validation2310 flags invalid feature category in top level example group2311 flags invalid feature category in nested context2312 flags invalid feature category in examples2313 does not flag if feature category is valid2314 suggests an alternative2315 valid_category: "tracing"2316 behaves like feature category validation2317 flags invalid feature category in top level example group2318 flags invalid feature category in nested context2319 flags invalid feature category in examples2320 does not flag if feature category is valid2321 suggests an alternative2322 valid_category: "user_management"2323 behaves like feature category validation2324 flags invalid feature category in top level example group2325 flags invalid feature category in nested context2326 flags invalid feature category in examples2327 does not flag if feature category is valid2328 suggests an alternative2329 valid_category: "user_profile"2330 behaves like feature category validation2331 flags invalid feature category in top level example group2332 flags invalid feature category in nested context2333 flags invalid feature category in examples2334 does not flag if feature category is valid2335 suggests an alternative2336 valid_category: "value_stream_management"2337 behaves like feature category validation2338 flags invalid feature category in top level example group2339 flags invalid feature category in nested context2340 flags invalid feature category in examples2341 does not flag if feature category is valid2342 suggests an alternative2343 valid_category: "vulnerability_management"2344 behaves like feature category validation2345 flags invalid feature category in top level example group2346 flags invalid feature category in nested context2347 flags invalid feature category in examples2348 does not flag if feature category is valid2349 suggests an alternative2350 valid_category: "web_ide"2351 behaves like feature category validation2352 flags invalid feature category in top level example group2353 flags invalid feature category in nested context2354 flags invalid feature category in examples2355 does not flag if feature category is valid2356 suggests an alternative2357 valid_category: "webhooks"2358 behaves like feature category validation2359 flags invalid feature category in top level example group2360 flags invalid feature category in nested context2361 flags invalid feature category in examples2362 does not flag if feature category is valid2363 suggests an alternative2364 valid_category: "wiki"2365 behaves like feature category validation2366 flags invalid feature category in top level example group2367 flags invalid feature category in nested context2368 flags invalid feature category in examples2369 does not flag if feature category is valid2370 suggests an alternative2371 valid_category: "workflow_automation"2372 behaves like feature category validation2373 flags invalid feature category in top level example group2374 flags invalid feature category in nested context2375 flags invalid feature category in examples2376 does not flag if feature category is valid2377 suggests an alternative2378 with custom categories2379 behaves like feature category validation2380 flags invalid feature category in top level example group2381 flags invalid feature category in nested context2382 flags invalid feature category in examples2383 does not flag if feature category is valid2384 suggests an alternative2385 behaves like feature category validation2386 flags invalid feature category in top level example group2387 flags invalid feature category in nested context2388 flags invalid feature category in examples2389 does not flag if feature category is valid2390 suggests an alternative2391Gitlab::Diff::File2392 #initialize2393 when file is ipynb2394 creates a rendered diff file2395 #ipynb?2396 is ipynb2397 is true2398 is not ipynb2399 is false2400 #has_renderable?2401 file is ipynb2402 has renderable viewer2403 file is not ipynb2404 does not have renderable viewer2405 does not create a Notebook DiffFile2406 #rendered2407 when not ipynb2408 is nil2409 when ipynb2410 creates a NotebookDiffFile for rendering2411 when collapsed2412 is nil2413 when too large2414 is nil2415 when not modified2416 is nil2417 #diff_lines2418 is expected to eq 302419 is expected to be a kind of Gitlab::Diff::Line2420 #highlighted_diff_lines2421 highlights the diff and memoises the result2422 #diff_lines_for_serializer2423 includes bottom match line if not in the end2424 when called multiple times2425 only adds bottom match line once2426 when deleted2427 does not include bottom match line2428 #unfold_diff_lines2429 when unfold required2430 changes @unfolded to true2431 updates @diff_lines2432 when unfold not required2433 keeps @unfolded false2434 does not update @diff_lines2435 #mode_changed?2436 is expected to be falsey2437 #too_large?2438 returns true for a file that is too large2439 returns false for a file that is small enough2440 #collapsed?2441 returns true for a file that is quite big2442 returns false for a file that is small enough2443 #old_blob and #new_blob2444 returns blob of base commit and the new commit2445 #diffable?2446 when attributes exist2447 returns true for files that do not have attributes2448 returns false for files that have been marked as not being diffable in attributes2449 when the text has binary notice2450 returns false2451 when the content is binary2452 returns true2453 #content_changed?2454 when created2455 returns false2456 when deleted2457 returns false2458 when renamed2459 returns false2460 when content changed2461 when binary2462 when the blobs are different2463 returns true2464 when there are no diff refs2465 returns false2466 when not binary2467 when the blobs are different2468 returns true2469 when there are no diff refs2470 returns true2471 #file_hash2472 returns a hash of file_path2473 #file_identifier_hash2474 returns a hash of file_identifier2475 diff file stats2476 #added_lines2477 when stats argument given2478 returns added lines from stats2479 when stats argument not given2480 returns added lines by parsing raw diff2481 #removed_lines2482 when stats argument given2483 returns removed lines from stats2484 when stats argument not given2485 returns removed lines by parsing raw diff2486 #simple_viewer2487 when the file is collapsed2488 returns a Collapsed viewer2489 when the file is not diffable2490 returns a Not Diffable viewer2491 when the content changed2492 when the file represented by the diff file is binary2493 returns a No Preview viewer2494 when the diff file old and new blob types are different2495 returns a No Preview viewer2496 when the file represented by the diff file is text-based2497 returns a text viewer2498 when created2499 when the file represented by the diff file is binary2500 returns an Added viewer2501 when the diff file old and new blob types are different2502 returns an Added viewer2503 when the file represented by the diff file is text-based2504 returns a text viewer2505 when deleted2506 when the file represented by the diff file is binary2507 returns a Deleted viewer2508 when the diff file old and new blob types are different2509 returns a Deleted viewer2510 when the file represented by the diff file is text-based2511 returns a text viewer2512 when renamed2513 returns a Renamed viewer2514 when mode changed2515 returns a Mode Changed viewer2516 when no other conditions apply2517 returns a No Preview viewer2518 #rich_viewer2519 when the diff file has a matching viewer2520 when the diff file content did not change2521 returns nil2522 when the diff file is not diffable2523 returns nil2524 when the diff file old and new blob types are different2525 returns nil2526 when the diff file has an external storage error2527 returns nil2528 when everything is right2529 returns the viewer2530 when the diff file does not have a matching viewer2531 returns nil2532 #alternate_viewer2533 viewer_class: DiffViewer::Image2534 is expected to be nil2535 viewer_class: DiffViewer::Collapsed2536 is expected to be nil2537 viewer_class: DiffViewer::NotDiffable2538 is expected to be nil2539 viewer_class: DiffViewer::Text2540 is expected to be nil2541 viewer_class: DiffViewer::NoPreview2542 is expected to be nil2543 viewer_class: DiffViewer::Added2544 is expected to be nil2545 viewer_class: DiffViewer::Deleted2546 is expected to be nil2547 viewer_class: DiffViewer::ModeChanged2548 is expected to be nil2549 viewer_class: DiffViewer::ModeChanged2550 is expected to be nil2551 viewer_class: DiffViewer::NoPreview2552 is expected to be nil2553 when viewer is DiffViewer::Renamed2554 when it can be rendered as text2555 is expected to be a kind of DiffViewer::Text2556 when it can be rendered as image2557 is expected to be a kind of DiffViewer::Image2558 when it is something else2559 is expected to be nil2560 #rendered_as_text?2561 when the simple viewer is text-based2562 when ignoring errors2563 when the viewer has render errors2564 returns true2565 when the viewer doesn't have render errors2566 returns true2567 when not ignoring errors2568 when the viewer has render errors2569 returns false2570 when the viewer doesn't have render errors2571 returns true2572 when the simple viewer is binary2573 returns false2574 when neither blob exists2575 #blob2576 returns a concrete nil so it can be used in boolean expressions2577 #binary?2578 returns false2579 #size2580 returns zero2581 #empty?2582 returns true2583 #different_type?2584 returns false2585 #content_changed?2586 returns false2587 when the the encoding of the file is unsupported2588 returns a Not Diffable viewer2589 is expected to eq []2590 is expected to eq []2591 #diff_hunk2592 when first line is a match2593 returns raw diff up to given line index2594 when first line is not a match2595 returns raw diff up to given line index2596 #empty?2597 when empty file is created2598 returns true2599 when empty file is deleted2600 returns true2601 when file with content is truncated2602 returns false2603 when empty file has content added2604 returns false2605 #fully_expanded?2606 when empty file is created2607 returns true2608 when empty file is deleted2609 returns true2610 when short file with last line removed2611 returns true2612 when a single line is added to empty file2613 returns true2614 when single line file is changed2615 returns true2616 when long file is changed2617 when first line is removed2618 returns true2619 when last line is removed2620 returns true2621 when first and last lines are removed2622 returns false2623 when first and last lines are changed2624 returns false2625 when every line are changed2626 returns true2627 when all contents are cleared2628 returns true2629 when file is binary2630 returns true2631Banzai::Filter::RepositoryLinkFilter2632 does not trigger a gitaly n+12633 does not raise an exception on invalid URIs2634 does not raise an exception on URIs containing invalid utf-8 byte sequences2635 does not raise an exception on URIs containing invalid utf-8 byte sequences in context requested path2636 does not raise an exception with a garbled path2637 does not explode with an escaped null byte2638 ignores ref if commit is passed2639 with a wiki2640 does not modify any relative URL in anchor2641 does not modify any relative URL in image2642 does not modify any relative URL in video2643 does not modify any relative URL in audio2644 without a repository2645 does not modify any relative URL in anchor2646 does not modify any relative URL in image2647 does not modify any relative URL in video2648 does not modify any relative URL in audio2649 with an empty repository2650 does not modify any relative URL in anchor2651 does not modify any relative URL in image2652 does not modify any relative URL in video2653 does not modify any relative URL in audio2654 without project repository access2655 does not modify any relative URL in anchor2656 does not modify any relative URL in image2657 does not modify any relative URL in video2658 does not modify any relative URL in audio2659 when public project repo with a valid commit2660 handles Gitaly unavailable exceptions gracefully2661 handles Gitaly timeout exceptions gracefully2662 rebuilds absolute URL for a file in the repo2663 does not modify relative URLs in system notes2664 ignores absolute URLs with two leading slashes2665 rebuilds relative URL for a file in the repo2666 rebuilds relative URL for a missing file in the repo2667 rebuilds relative URL for a file in the repo with leading ./2668 rebuilds relative URL for a file in the repo up one directory2669 rebuilds relative URL for a file in the repo up multiple directories2670 rebuilds relative URL for a file in the repository root2671 rebuilds relative URL for a file in the repo with an anchor2672 rebuilds relative URL for a directory in the repo2673 rebuilds relative URL for an image in the repo2674 rebuilds relative URL for link to an image in the repo2675 rebuilds relative URL for a video in the repo2676 rebuilds relative URL for audio in the repo2677 does not modify relative URL with an anchor only2678 does not modify absolute URL2679 does not call gitaly2680 supports Unicode filenames2681 supports percent sign in filenames2682 when requested path is a file in the repo2683 rebuilds URL relative to the containing directory2684 when requested path is a directory in the repo2685 rebuilds URL relative to the directory2686 when ref name contains percent sign2687 correctly escapes the ref2688 when ref name contains special chars2689 correctly escapes the ref2690 when requested path is a directory with space in the repo2691 does not escape the space twice2692 when private project repo with a valid commit2693 handles Gitaly unavailable exceptions gracefully2694 handles Gitaly timeout exceptions gracefully2695 rebuilds absolute URL for a file in the repo2696 does not modify relative URLs in system notes2697 ignores absolute URLs with two leading slashes2698 rebuilds relative URL for a file in the repo2699 rebuilds relative URL for a missing file in the repo2700 rebuilds relative URL for a file in the repo with leading ./2701 rebuilds relative URL for a file in the repo up one directory2702 rebuilds relative URL for a file in the repo up multiple directories2703 rebuilds relative URL for a file in the repository root2704 rebuilds relative URL for a file in the repo with an anchor2705 rebuilds relative URL for a directory in the repo2706 rebuilds relative URL for an image in the repo2707 rebuilds relative URL for link to an image in the repo2708 rebuilds relative URL for a video in the repo2709 rebuilds relative URL for audio in the repo2710 does not modify relative URL with an anchor only2711 does not modify absolute URL2712 does not call gitaly2713 supports Unicode filenames2714 supports percent sign in filenames2715 when requested path is a file in the repo2716 rebuilds URL relative to the containing directory2717 when requested path is a directory in the repo2718 rebuilds URL relative to the directory2719 when ref name contains percent sign2720 correctly escapes the ref2721 when ref name contains special chars2722 correctly escapes the ref2723 when requested path is a directory with space in the repo2724 does not escape the space twice2725 with a valid ref2726 handles Gitaly unavailable exceptions gracefully2727 handles Gitaly timeout exceptions gracefully2728 rebuilds absolute URL for a file in the repo2729 does not modify relative URLs in system notes2730 ignores absolute URLs with two leading slashes2731 rebuilds relative URL for a file in the repo2732 rebuilds relative URL for a missing file in the repo2733 rebuilds relative URL for a file in the repo with leading ./2734 rebuilds relative URL for a file in the repo up one directory2735 rebuilds relative URL for a file in the repo up multiple directories2736 rebuilds relative URL for a file in the repository root2737 rebuilds relative URL for a file in the repo with an anchor2738 rebuilds relative URL for a directory in the repo2739 rebuilds relative URL for an image in the repo2740 rebuilds relative URL for link to an image in the repo2741 rebuilds relative URL for a video in the repo2742 rebuilds relative URL for audio in the repo2743 does not modify relative URL with an anchor only2744 does not modify absolute URL2745 does not call gitaly2746 supports Unicode filenames2747 supports percent sign in filenames2748 when requested path is a file in the repo2749 rebuilds URL relative to the containing directory2750 when requested path is a directory in the repo2751 rebuilds URL relative to the directory2752 when ref name contains percent sign2753 correctly escapes the ref2754 when ref name contains special chars2755 correctly escapes the ref2756 when requested path is a directory with space in the repo2757 does not escape the space twice2758Gitlab::ImportExport::Project::RelationFactory2759 hook object2760 does not have the original ID2761 does not have the original integration_id2762 does not have the original project_id2763 has the new project_id2764 has a nil token2765 original service exists2766 does not have the original integration_id2767 excluded attributes2768 are removed from the imported object2769 merge_request object2770 has preloaded author2771 has preloaded updated_by2772 has preloaded source project2773 has preloaded target project2774 issue object2775 has preloaded project2776 computing relative position2777 when max relative position in the hierarchy is not cached2778 has computed new relative_position2779 when max relative position in the hierarchy is cached2780 has computed new relative_position2781 label object2782 has preloaded project2783 has preloaded group2784 pipeline_schedule2785 when relation_hash has active set to true2786 the created object is not active2787 when relation_hash has active set to false2788 the created object is not active2789 Potentially hazardous foreign keys2790 does not preserve any foreign key IDs2791 overrided model with pluralized name2792 does not raise errors2793 Project references2794 does not preserve any project foreign key IDs2795 behaves like Notes user references2796 when the importer is admin2797 and the note author is not mapped2798 is expected to eq #<User id:575 @user209>2799 is expected to include "*By Administrator"2800 and the note author is the importer user2801 is expected to eq #<User id:581 @user213>2802 is expected not to include "*By Administrator"2803 and the note author exists in the target instance2804 is expected to eq #<User id:590 @user219>2805 is expected not to include "*By Administrator"2806 when the importer is not admin2807 and the note author is not mapped2808 is expected to eq #<User id:595 @user223>2809 is expected to include "*By Administrator"2810 and the note author is the importer user2811 is expected to eq #<User id:601 @user227>2812 is expected to include "*By Administrator"2813 and the note author exists in the target instance2814 is expected to eq #<User id:607 @user231>2815 is expected to include "*By Administrator"2816 encrypted attributes2817 has no value for the encrypted attribute2818 event object2819 has preloaded project2820 protected branch access levels2821 merge access level2822 when access level is no one2823 keeps no one access level2824 when access level is below maintainer2825 sets access level to maintainer2826 when access level is above maintainer2827 sets access level to maintainer2828 root ancestor membership2829 when importer user is root group owner2830 keeps access level as is2831 when user membership in root group is missing2832 sets access level to maintainer2833 when root ancestor is not a group2834 sets access level to maintainer2835 push access level2836 when access level is no one2837 keeps no one access level2838 when access level is below maintainer2839 sets access level to maintainer2840 when access level is above maintainer2841 sets access level to maintainer2842 root ancestor membership2843 when importer user is root group owner2844 keeps access level as is2845 when user membership in root group is missing2846 sets access level to maintainer2847 when root ancestor is not a group2848 sets access level to maintainer2849Packages::Maven::Metadata::CreateVersionsXmlService2850 #execute2851 with same versions in both sides2852 returns no changes2853 with more versions2854 in the xml side2855 behaves like returning an xml with versions in the database2856 returns an metadata versions xml with versions in the database2857 in the database side2858 behaves like returning an xml with versions in the database2859 returns an metadata versions xml with versions in the database2860 with an xml without a release version2861 logs a warn with the reason2862 behaves like returning an xml with versions in the database2863 returns an metadata versions xml with versions in the database2864 with completely different versions2865 behaves like returning an xml with versions in the database2866 returns an metadata versions xml with versions in the database2867 with no versions in the database2868 returns a success2869 with an xml without a release version2870 returns a success2871 with differences in both sides2872 behaves like returning an xml with versions in the database2873 returns an metadata versions xml with versions in the database2874 with a new release and latest from the database2875 behaves like returning an xml with2876 returns an xml with the updated release and latest versions2877 with a latest in the xml2878 behaves like returning an xml with2879 returns an xml with the updated release and latest versions2880 with release and latest not existing in the database2881 behaves like returning an xml with2882 returns an xml with the updated release and latest versions2883 with added versions in the database side no more recent than release2884 behaves like returning an xml with2885 returns an xml with the updated release and latest versions2886 with a latest in the xml2887 behaves like returning an xml with2888 returns an xml with the updated release and latest versions2889 only snapshot versions are in the database2890 returns an xml without any release element2891 behaves like returning an xml with2892 returns an xml with the updated release and latest versions2893 last updated timestamp2894 updates the last updated timestamp2895 with an incomplete metadata content2896 behaves like returning an error service response2897 returns an error service response2898 with an invalid metadata content2899 behaves like returning an error service response2900 returns an error service response2901 behaves like handling metadata content pointing to a file for the create xml service2902 with metadata content pointing to a file2903 with valid content2904 returns no changes2905 with invalid content2906 behaves like returning an error service response2907 returns an error service response2908 with no content2909 behaves like returning an error service response2910 returns an error service response2911 behaves like handling invalid parameters for create xml service2912 with no package2913 behaves like returning an error service response2914 returns an error service response2915 with no metadata content2916 behaves like returning an error service response2917 returns an error service response2918ResourceAccessTokens::CreateService2919 #execute2920 when resource is a project2921 behaves like when user does not have permission to create a resource bot2922 behaves like token creation fails2923 does not add the project bot as a member2924 immediately destroys the bot user if one was created2925 behaves like correct error message2926 returns correct error message2927 user with valid permission2928 behaves like allows creation of bot with valid params2929 is expected to change `User.count` by 12930 creates resource bot user2931 logs the event2932 email confirmation status2933 when created by an admin2934 when admin mode is enabled2935 behaves like creates a user that has their email confirmed2936 creates a user that has their email confirmed2937 when admin mode is disabled2938 returns error2939 when created by a non-admin2940 behaves like creates a user that has their email confirmed2941 creates a user that has their email confirmed2942 bot name2943 when no name is passed2944 uses default name2945 when user provides name2946 overrides the default name value2947 bot username and email2948 check email domain2949 contains SecureRandom part2950 email name is the same as username2951 when conflicts2952 when username is reserved2953 when username is reserved by user2954 uniquifies username and email2955 when it conflicts with top-level group namespace2956 uniquifies username and email2957 when it conflicts with top-level group namespace that includes upcased characters2958 uniquifies username and email2959 when email is reserved2960 when it conflicts with confirmed primary email2961 uniquifies username and email2962 when it conflicts with unconfirmed primary email2963 uniquifies username and email2964 when it conflicts with confirmed secondary email2965 uniquifies username and email2966 when email and username is reserved2967 uniquifies username and email2968 access level2969 when user does not specify an access level2970 adds the bot user as a maintainer in the resource2971 when user specifies an access level2972 behaves like bot with access level2973 adds the bot user with the specified access level in the resource2974 with DEVELOPER access_level, in string format2975 behaves like bot with access level2976 adds the bot user with the specified access level in the resource2977 when user is external2978 creates resource bot user with external status2979 personal access token2980 is expected to change `PersonalAccessToken.count` by 12981 when user does not provide scope2982 has default scopes2983 when user provides scope explicitly2984 overrides the default scope value2985 expires_at2986 when no expiration value is passed2987 uses nil expiration value2988 expiry of the project bot member2989 project bot membership does not expire2990 when user provides expiration value2991 overrides the default expiration value2992 expiry of the project bot member2993 sets the project bot to expire on the same day as the token2994 when invalid scope is passed2995 behaves like token creation fails2996 does not add the project bot as a member2997 immediately destroys the bot user if one was created2998 behaves like correct error message2999 returns correct error message3000 when access provisioning fails3001 with MAINTAINER access_level, in integer format3002 behaves like token creation fails3003 does not add the project bot as a member3004 immediately destroys the bot user if one was created3005 behaves like correct error message3006 returns correct error message3007 with MAINTAINER access_level, in string format3008 behaves like token creation fails3009 does not add the project bot as a member3010 immediately destroys the bot user if one was created3011 behaves like correct error message3012 returns correct error message3013 when user specifies an access level of OWNER for the bot3014 when the executor is a MAINTAINER3015 with OWNER access_level, in integer format3016 behaves like token creation fails3017 does not add the project bot as a member3018 immediately destroys the bot user if one was created3019 behaves like correct error message3020 returns correct error message3021 with OWNER access_level, in string format3022 behaves like token creation fails3023 does not add the project bot as a member3024 immediately destroys the bot user if one was created3025 behaves like correct error message3026 returns correct error message3027 when the executor is an OWNER3028 adds the bot user with the specified access level in the resource3029 when resource is a group3030 behaves like when user does not have permission to create a resource bot3031 behaves like token creation fails3032 does not add the project bot as a member3033 immediately destroys the bot user if one was created3034 behaves like correct error message3035 returns correct error message3036 user with valid permission3037 behaves like allows creation of bot with valid params3038 is expected to change `User.count` by 13039 creates resource bot user3040 logs the event3041 email confirmation status3042 when created by an admin3043 when admin mode is enabled3044 behaves like creates a user that has their email confirmed3045 creates a user that has their email confirmed3046 when admin mode is disabled3047 returns error3048 when created by a non-admin3049 behaves like creates a user that has their email confirmed3050 creates a user that has their email confirmed3051 bot name3052 when no name is passed3053 uses default name3054 when user provides name3055 overrides the default name value3056 bot username and email3057 check email domain3058 contains SecureRandom part3059 email name is the same as username3060 when conflicts3061 when username is reserved3062 when username is reserved by user3063 uniquifies username and email3064 when it conflicts with top-level group namespace3065 uniquifies username and email3066 when it conflicts with top-level group namespace that includes upcased characters3067 uniquifies username and email3068 when email is reserved3069 when it conflicts with confirmed primary email3070 uniquifies username and email3071 when it conflicts with unconfirmed primary email3072 uniquifies username and email3073 when it conflicts with confirmed secondary email3074 uniquifies username and email3075 when email and username is reserved3076 uniquifies username and email3077 access level3078 when user does not specify an access level3079 adds the bot user as a maintainer in the resource3080 when user specifies an access level3081 behaves like bot with access level3082 adds the bot user with the specified access level in the resource3083 with DEVELOPER access_level, in string format3084 behaves like bot with access level3085 adds the bot user with the specified access level in the resource3086 when user is external3087 creates resource bot user with external status3088 personal access token3089 is expected to change `PersonalAccessToken.count` by 13090 when user does not provide scope3091 has default scopes3092 when user provides scope explicitly3093 overrides the default scope value3094 expires_at3095 when no expiration value is passed3096 uses nil expiration value3097 expiry of the project bot member3098 project bot membership does not expire3099 when user provides expiration value3100 overrides the default expiration value3101 expiry of the project bot member3102 sets the project bot to expire on the same day as the token3103 when invalid scope is passed3104 behaves like token creation fails3105 does not add the project bot as a member3106 immediately destroys the bot user if one was created3107 behaves like correct error message3108 returns correct error message3109 when access provisioning fails3110 with MAINTAINER access_level, in integer format3111 behaves like token creation fails3112 does not add the project bot as a member3113 immediately destroys the bot user if one was created3114 behaves like correct error message3115 returns correct error message3116 with MAINTAINER access_level, in string format3117 behaves like token creation fails3118 does not add the project bot as a member3119 immediately destroys the bot user if one was created3120 behaves like correct error message3121 returns correct error message3122 when user specifies an access level of OWNER for the bot3123 adds the bot user with the specified access level in the resource3124ReleaseHighlights::Validator3125 #valid?3126 with a valid file3127 passes entries to entry validator and returns true3128 with invalid file3129 returns false and has errors3130 .validate_all!3131 with valid files3132 is expected to equal true3133 with an invalid file3134 is expected to equal false3135 .error_message3136 with a valid file3137 is expected to be empty3138 with an invalid file3139 returns a nice error message3140 when validating all files3141 they should have no errors3142Gitlab::SSHPublicKey3143 .technology(name)3144 returns nil for an unrecognised name3145 name: :rsa3146 is expected to eq :rsa3147 is expected to eq :rsa3148 name: :dsa3149 is expected to eq :dsa3150 is expected to eq :dsa3151 name: :ecdsa3152 is expected to eq :ecdsa3153 is expected to eq :ecdsa3154 name: :ed255193155 is expected to eq :ed255193156 is expected to eq :ed255193157 name: :ecdsa_sk3158 is expected to eq :ecdsa_sk3159 is expected to eq :ecdsa_sk3160 name: :ed25519_sk3161 is expected to eq :ed25519_sk3162 is expected to eq :ed25519_sk3163 FIPS mode3164 name: :rsa3165 is expected to eq :rsa3166 is expected to eq :rsa3167 name: :ecdsa3168 is expected to eq :ecdsa3169 is expected to eq :ecdsa3170 name: :ed255193171 is expected to eq :ed255193172 is expected to eq :ed255193173 name: :ecdsa_sk3174 is expected to eq :ecdsa_sk3175 is expected to eq :ecdsa_sk3176 name: :ed25519_sk3177 is expected to eq :ed25519_sk3178 is expected to eq :ed25519_sk3179 .supported_types3180 returns array with the names of supported technologies3181 FIPS mode3182 returns array with the names of supported technologies3183 .supported_sizes(name)3184 name: :rsa, sizes: [1024, 2048, 3072, 4096]3185 is expected to eq [1024, 2048, 3072, 4096]3186 is expected to eq [1024, 2048, 3072, 4096]3187 name: :dsa, sizes: [1024, 2048, 3072]3188 is expected to eq [1024, 2048, 3072]3189 is expected to eq [1024, 2048, 3072]3190 name: :ecdsa, sizes: [256, 384, 521]3191 is expected to eq [256, 384, 521]3192 is expected to eq [256, 384, 521]3193 name: :ed25519, sizes: [256]3194 is expected to eq [256]3195 is expected to eq [256]3196 name: :ecdsa_sk, sizes: [256]3197 is expected to eq [256]3198 is expected to eq [256]3199 name: :ed25519_sk, sizes: [256]3200 is expected to eq [256]3201 is expected to eq [256]3202 FIPS mode3203 name: :rsa, sizes: [3072, 4096]3204 is expected to eq [3072, 4096]3205 is expected to eq [3072, 4096]3206 name: :dsa, sizes: []3207 is expected to eq []3208 is expected to eq []3209 name: :ecdsa, sizes: [256, 384, 521]3210 is expected to eq [256, 384, 521]3211 is expected to eq [256, 384, 521]3212 name: :ed25519, sizes: [256]3213 is expected to eq [256]3214 is expected to eq [256]3215 name: :ecdsa_sk, sizes: [256]3216 is expected to eq [256]3217 is expected to eq [256]3218 name: :ed25519_sk, sizes: [256]3219 is expected to eq [256]3220 is expected to eq [256]3221 .supported_algorithms3222 returns all supported algorithms3223 FIPS mode3224 returns all supported algorithms3225 .supported_algorithms_for_name3226 name: :rsa, algorithms: ["ssh-rsa"]3227 returns all supported algorithms for rsa3228 name: :dsa, algorithms: ["ssh-dss"]3229 returns all supported algorithms for dsa3230 name: :ecdsa, algorithms: ["ecdsa-sha2-nistp256", "ecdsa-sha2-nistp384", "ecdsa-sha2-nistp521"]3231 returns all supported algorithms for ecdsa3232 name: :ed25519, algorithms: ["ssh-ed25519"]3233 returns all supported algorithms for ed255193234 name: :ecdsa_sk, algorithms: ["sk-ecdsa-sha2-nistp256@openssh.com"]3235 returns all supported algorithms for ecdsa_sk3236 name: :ed25519_sk, algorithms: ["sk-ssh-ed25519@openssh.com"]3237 returns all supported algorithms for ed25519_sk3238 FIPS mode3239 name: :rsa, algorithms: ["ssh-rsa"]3240 returns all supported algorithms for rsa3241 name: :dsa, algorithms: ["ssh-dss"]3242 returns all supported algorithms for dsa3243 name: :ecdsa, algorithms: ["ecdsa-sha2-nistp256", "ecdsa-sha2-nistp384", "ecdsa-sha2-nistp521"]3244 returns all supported algorithms for ecdsa3245 name: :ed25519, algorithms: ["ssh-ed25519"]3246 returns all supported algorithms for ed255193247 name: :ecdsa_sk, algorithms: ["sk-ecdsa-sha2-nistp256@openssh.com"]3248 returns all supported algorithms for ecdsa_sk3249 name: :ed25519_sk, algorithms: ["sk-ssh-ed25519@openssh.com"]3250 returns all supported algorithms for ed25519_sk3251 .sanitize(key_content)3252 when key has blank space characters3253 removes the extra blank space characters3254 when key doesn't have blank space characters3255 doesn't modify the content3256 when key is invalid3257 returns the original content3258 #valid?3259 with a valid SSH key3260 factory: :rsa_key_20483261 is expected to be valid3262 when key begins with options3263 is expected to be valid3264 when key is in known_hosts format3265 when key begins with 'example.com'3266 is expected to be valid3267 when key begins with '@revoked other.example.com'3268 is expected to be valid3269 factory: :rsa_key_40963270 is expected to be valid3271 when key begins with options3272 is expected to be valid3273 when key is in known_hosts format3274 when key begins with 'example.com'3275 is expected to be valid3276 when key begins with '@revoked other.example.com'3277 is expected to be valid3278 factory: :rsa_key_51203279 is expected to be valid3280 when key begins with options3281 is expected to be valid3282 when key is in known_hosts format3283 when key begins with 'example.com'3284 is expected to be valid3285 when key begins with '@revoked other.example.com'3286 is expected to be valid3287 factory: :rsa_key_81923288 is expected to be valid3289 when key begins with options3290 is expected to be valid3291 when key is in known_hosts format3292 when key begins with 'example.com'3293 is expected to be valid3294 when key begins with '@revoked other.example.com'3295 is expected to be valid3296 factory: :dsa_key_20483297 is expected to be valid3298 when key begins with options3299 is expected to be valid3300 when key is in known_hosts format3301 when key begins with 'example.com'3302 is expected to be valid3303 when key begins with '@revoked other.example.com'3304 is expected to be valid3305 factory: :ecdsa_key_2563306 is expected to be valid3307 when key begins with options3308 is expected to be valid3309 when key is in known_hosts format3310 when key begins with 'example.com'3311 is expected to be valid3312 when key begins with '@revoked other.example.com'3313 is expected to be valid3314 factory: :ed25519_key_2563315 is expected to be valid3316 when key begins with options3317 is expected to be valid3318 when key is in known_hosts format3319 when key begins with 'example.com'3320 is expected to be valid3321 when key begins with '@revoked other.example.com'3322 is expected to be valid3323 factory: :ecdsa_sk_key_2563324 is expected to be valid3325 when key begins with options3326 is expected to be valid3327 when key is in known_hosts format3328 when key begins with 'example.com'3329 is expected to be valid3330 when key begins with '@revoked other.example.com'3331 is expected to be valid3332 factory: :ed25519_sk_key_2563333 is expected to be valid3334 when key begins with options3335 is expected to be valid3336 when key is in known_hosts format3337 when key begins with 'example.com'3338 is expected to be valid3339 when key begins with '@revoked other.example.com'3340 is expected to be valid3341 with an invalid SSH key3342 is expected not to be valid3343 when an unsupported SSH key algorithm3344 is expected not to be valid3345 #type3346 factory: :rsa_key_2048, type: :rsa3347 is expected to eq :rsa3348 factory: :dsa_key_2048, type: :dsa3349 is expected to eq :dsa3350 factory: :ecdsa_key_256, type: :ecdsa3351 is expected to eq :ecdsa3352 factory: :ed25519_key_256, type: :ed255193353 is expected to eq :ed255193354 factory: :ecdsa_sk_key_256, type: :ecdsa_sk3355 is expected to eq :ecdsa_sk3356 factory: :ed25519_sk_key_256, type: :ed25519_sk3357 is expected to eq :ed25519_sk3358 with an invalid SSH key3359 is expected to be nil3360 when the key is represented by a class that is not in the list of supported technologies3361 raises error3362 when the key is represented by a subclass of the class that is in the list of supported technologies3363 raises error3364 #bits3365 factory: :rsa_key_2048, bits: 20483366 is expected to eq 20483367 factory: :rsa_key_4096, bits: 40963368 is expected to eq 40963369 factory: :rsa_key_5120, bits: 51203370 is expected to eq 51203371 factory: :rsa_key_8192, bits: 81923372 is expected to eq 81923373 factory: :dsa_key_2048, bits: 20483374 is expected to eq 20483375 factory: :ecdsa_key_256, bits: 2563376 is expected to eq 2563377 factory: :ed25519_key_256, bits: 2563378 is expected to eq 2563379 factory: :ecdsa_sk_key_256, bits: 2563380 is expected to eq 2563381 factory: :ed25519_sk_key_256, bits: 2563382 is expected to eq 2563383 with an invalid SSH key3384 is expected to be nil3385 when the key is represented by a class that is not in the list of supported technologies3386 raises error3387 when the key is represented by a subclass of the class that is in the list of supported technologies3388 raises error3389 #banned?3390 key: "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAwRIdDlHaIqZXND/l1vFT7ue3rc/DvXh2yx5EFtuxGQRHVxGMazDhV4vj5ANGXDQwUYI0iZh6aOVrDy8I/y9/y+YDGCvsnqrDbuPDjW26s2bBXWgUPiC93T3TA6L2KOxhVcl7mljEOIYACRHPpJNYVGhinCxDUH9LxMrdNXgP5Ok= mateidu@localhost"3391 is expected to equal true3392 key: "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIBnZQ+6nhlPX/JnX5i5hXpljJ89bSnnrsSs51hSPuoJGmoKowBddISK7s10AIpO0xAWGcr8PUr2FOjEBbDHqlRxoXF0Ocms9xv3ql9EYUQ5+U+M6BymWhNTFPOs6gFHUl8Bw3t6c+SRKBpfRFB0yzBj9d093gSdfTAFoz+yLo4vRw=="3393 is expected to equal true3394 key: "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAvIhC5skTzxyHif/7iy3yhxuK6/OB13hjPqrskogkYFrcW8OK4VJT+5+Fx7wd4sQCnVn8rNqahw/x6sfcOMDI/Xvn4yKU4t8TnYf2MpUVr4ndz39L5Ds1n7Si1m2suUNxWbKv58I8+NMhlt2ITraSuTU0NGymWOc8+LNi+MHXdLk= SCCP Superuser"3395 is expected to equal true3396 key: "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key"3397 is expected to equal true3398 key: "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAwRIdDlHaIqZXND/l1vFT7ue3rc/DvXh2yx5EFtuxGQRHVxGMazDhV4vj5ANGXDQwUYI0iZh6aOVrDy8I/y9/y+YDGCvsnqrDbuPDjW26s2bBXWgUPiC93T3TA6L2KOxhVcl7mljEOIYACRHPpJNYVGhinCxDUH9LxMrdNXgP5Ok= mateidu@localhost"3399 is expected to equal true3400 key: "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAn8LoId2N5i28cNKuEWWea3yt0I/LdT/NROrF44WZewtxch+DIwteQhM1qL6EKUSqz3Q2geX1crpOsNnyh67xy5lNo086u/QewOCSRAUGrQCXqFQ4JU8ny/qugWALQHjbIaPHj/3zMK09r4cpTSeAU7CW5nQyTKGmh7v9CAfWfcs= adam@localhost.localdomain"3401 is expected to equal true3402 key: "ssh-dss AAAAB3NzaC1kc3MAAACBAJTDsX+8olPZeyr58g9XE0L8PKT5030NZBPlE7np4hBqx36HoWarWq1Csn8M57dWN9StKbs03k2ggY6sYJK5AW2EWar70um3pYjKQHiZq7mITmitsozFN/K7wu2e2iKRgquUwH5SuYoOJ29n7uhaILXiKZP4/H/dDudqPRSY6tJPAAAAFQDtuWH90mDbU2L/Ms2lfl/cja/wHwAAAIAMBwSHZt2ysOHCFe1WLUvdwVDHUqk3QHTskuuAnMlwMtSvCaUxSatdHahsMZ9VCHjoQUx6j+TcgRLDbMlRLnwUlb6wpniehLBFk+qakGcREqks5NxYzFTJXwROzP72jPvVgQyOZHWq81gCild/ljL7hmrduCqYwxDIz4o7U92UKQAAAIBmhSl9CVPgVMv1xO8DAHVhM1huIIK8mNFrzMJz+JXzBx81ms1kWSeQOC/nraaXFTBlqiQsvB8tzr4xZdbaI/QzVLKNAF5C8BJ4ScNlTIx1aZJwyMil8Nzb+0YAsw5Ja+bEZZvEVlAYnd10qRWrPeEY1txLMmX3wDa+JvJL7fmuBg=="3403 is expected to equal true3404 key: "ssh-dss AAAAB3NzaC1kc3MAAACBAMq5EcIFdfCjJakyQnP/BBp9oc6mpaZVguf0Znp5C40twiG1lASQJZlM1qOB/hkBWYeBCHUkcOLEnVXSZzB62L+W/LGKodqnsiQPRr57AA6jPc6mNBnejHai8cSdAl9n/0s2IQjdcrxM8CPq2uEyfm0J3AV6Lrbbxr5NgE5xxM+DAAAAFQCmFk/M7Rx2jexsJ9COpHkHwUjcNQAAAIAdg18oByp/tjjDKhWhmmv+HbVIROkRqSxBvuEZEmcWlg38mLIT1bydfpSou/V4rI5ctxwCfJ1rRr66pw6GwCrz4fXmyVlhrj7TrktyQ9+zRXhynF4wdNPWErhNHb8tGlSOFiOBcUTlouX3V/ka6Dkd6ZQrZLQFaH+gjfyTZZ82HQAAAIEArsJgp7RLPOsCeLqoia/eljseBFVDazO5Q0ysUotTw9wgXGGVWREwm8wNggFNb9eCiBAAUfVZVfhVAtFT0pBf/eIVLPXyaMw3prBt7LqeBrbagODc3WAAdMTPIdYYcOKgv+YvTXa51zG64v6pQOfS8WXgKCzDl44puXfYeDk5lVQ="3405 is expected to equal true3406 key: "ssh-dss AAAAB3NzaC1kc3MAAACBAKwKBw7D4OA1H/uD4htdh04TBIHdbSjeXUSnWJsce8C0tvoB01Yarjv9TFj+tfeDYVWtUK1DA1JkyqSuoAtDANJzF4I6Isyd0KPrW3dHFTcg6Xlz8d3KEaHokY93NOmB/xWEkhme8b7Q0U2iZie2pgWbTLXV0FA+lhskTtPHW3+VAAAAFQDRyayUlVZKXEweF3bUe03zt9e8VQAAAIAEPK1k3Y6ErAbIl96dnUCnZjuWQ7xXy062pf63QuRWI6LYSscm3f1pEknWUNFr/erQ02pkfi2eP9uHl1TI1ql+UmJX3g3frfssLNZwWXAW0m8PbY3HZSs+f5hevM3ua32pnKDmbQ2WpvKNyycKHi81hSI14xMcdblJolhN5iY8/wAAAIAjEe5+0m/TlBtVkqQbUit+s/g+eB+PFQ+raaQdL1uztW3etntXAPH1MjxsAC/vthWYSTYXORkDFMhrO5ssE2rfg9io0NDyTIZt+VRQMGdi++dH8ptU+ldl2ZejLFdTJFwFgcfXz+iQ1mx6h9TPX1crE1KoMAVOj3yKVfKpLB1EkA== root@lbslave"3407 is expected to equal true3408 key: "ssh-dss AAAAB3NzaC1kc3MAAACBAN3AITryJMQyOKZjAky+mQ/8pOHIlu4q8pzmR0qotKaLm2yye5a0PY2rOaQRAzi7EPheBXbqTb8a8TrHhGXI5P7GUHaJho5HhEnw+5TwAvP72L7LcPwxMxj/rLcR/jV+uLMsVeJVWjwJcUv83yzPXoVjK0hrIm+RLLeuTM+gTylHAAAAFQD5gBdXsXAiTz1atzMg3xDFF1zlowAAAIAlLy6TCMlOBM0IcPsvP/9bEjDj0M8YZazdqt4amO2IaNUPYt9/sIsLOQfxIj8myDK1TOp8NyRJep7V5aICG4f3Q+XktlmLzdWn3sjvbWuIAXe1opjG2T69YhxfHZr8Wn7P4tpCgyqM4uHmUKrfnBzQQ9vkUUWsZoUXM2Z7vUXVfQAAAIAU6eNlphQWDwx0KOBiiYhF9BM6kDbQlyw8333rAG3G4CcjI2G8eYGtpBNliaD185UjCEsjPiudhGil/j4Zt/+VY3aGOLoi8kqXBBc8ZAML9bbkXpyhQhMgwiywx3ciFmvSn2UAin8yurStYPQxtXauZN5PYbdwCHPS7ApIStdpMA== wood@endec1"3409 is expected to equal true3410 key: "ssh-dss AAAAB3NzaC1kc3MAAACBAISAE3CAX4hsxTw0dRc0gx8nQ41r3Vkj9OmG6LGeKWRmpy7C6vaExuupjxid76fd4aS56lCUEEoRlJ3zE93qoK9acI6EGqGQFLuDZ0fqMyRSX+ilf+1HDo/TRyuraggxp9Hj9LMpZVbpFATMm0+d9Xs7eLmaJjuMsowNlOf8NFdHAAAAFQCwdvqOAkR6QhuiAapQ/9iVuR0UAQAAAIBpLMo4dhSeWkChfv659WLPftxRrX/HR8YMD/jqa3R4PsVM2g6dQ1191nHugtdV7uaMeOqOJ/QRWeYM+UYwT0Zgx2LqvgVSjNDfdjk+ZRY8x3SmExFi62mKFoTGSOCXfcAfuanjaoF+sepnaiLUd+SoJShGYHoqR2QWiysTRqknlwAAAIBLEgYmr9XCSqjENFDVQPFELYKT7Zs9J87PjPS1AP0qF1OoRGZ5mefK6X/6VivPAUWmmmev/BuAs8M1HtfGeGGzMzDIiU/WZQ3bScLB1Ykrcjk7TOFD6xrnk/inYAp5l29hjidoAONcXoHmUAMYOKqn63Q2AsDpExVcmfj99/BlpQ=="3411 is expected to equal true3412 with a valid SSH key3413 is expected to equal false3414 with an invalid SSH key3415 is expected to equal false3416 #fingerprint3417 factory: :rsa_key_2048, fingerprint: "58:a8:9d:cd:1f:70:f8:5a:d9:e4:24:8e:da:89:e4:fc"3418 is expected to eq "58:a8:9d:cd:1f:70:f8:5a:d9:e4:24:8e:da:89:e4:fc"3419 factory: :rsa_key_4096, fingerprint: "df:73:db:29:3c:a5:32:cf:09:17:7e:8e:9d:de:d7:f7"3420 is expected to eq "df:73:db:29:3c:a5:32:cf:09:17:7e:8e:9d:de:d7:f7"3421 factory: :rsa_key_5120, fingerprint: "fe:fa:3a:4d:7d:51:ec:bf:c7:64:0c:96:d0:17:8a:d0"3422 is expected to eq "fe:fa:3a:4d:7d:51:ec:bf:c7:64:0c:96:d0:17:8a:d0"3423 factory: :rsa_key_8192, fingerprint: "fb:53:7f:e9:2f:f7:17:aa:c8:32:52:06:8e:05:e2:82"3424 is expected to eq "fb:53:7f:e9:2f:f7:17:aa:c8:32:52:06:8e:05:e2:82"3425 factory: :dsa_key_2048, fingerprint: "c8:85:1e:df:44:0f:20:00:3c:66:57:2b:21:10:5a:27"3426 is expected to eq "c8:85:1e:df:44:0f:20:00:3c:66:57:2b:21:10:5a:27"3427 factory: :ecdsa_key_256, fingerprint: "67:a3:a9:7d:b8:e1:15:d4:80:40:21:34:bb:ed:97:38"3428 is expected to eq "67:a3:a9:7d:b8:e1:15:d4:80:40:21:34:bb:ed:97:38"3429 factory: :ed25519_key_256, fingerprint: "e6:eb:45:8a:3c:59:35:5f:e9:5b:80:12:be:7e:22:73"3430 is expected to eq "e6:eb:45:8a:3c:59:35:5f:e9:5b:80:12:be:7e:22:73"3431 factory: :ecdsa_sk_key_256, fingerprint: "56:b9:bc:99:3d:2f:cf:63:6b:70:d8:f9:40:7e:09:4c"3432 is expected to eq "56:b9:bc:99:3d:2f:cf:63:6b:70:d8:f9:40:7e:09:4c"3433 factory: :ed25519_sk_key_256, fingerprint: "f9:a0:64:0b:4b:72:72:0e:62:92:d7:04:14:74:1c:c9"3434 is expected to eq "f9:a0:64:0b:4b:72:72:0e:62:92:d7:04:14:74:1c:c9"3435 with an invalid SSH key3436 is expected to be nil3437 #fingerprint_sha2563438 factory: :rsa_key_2048, fingerprint_sha256: "SHA256:GdtgO0eHbwLB+mK47zblkoXujkqKRZjgMQrHH6Kks3E"3439 is expected to eq "SHA256:GdtgO0eHbwLB+mK47zblkoXujkqKRZjgMQrHH6Kks3E"3440 factory: :rsa_key_4096, fingerprint_sha256: "SHA256:ByDU7hQ1JB95l6p53rHrffc4eXvEtqGUtQhS+Dhyy7g"3441 is expected to eq "SHA256:ByDU7hQ1JB95l6p53rHrffc4eXvEtqGUtQhS+Dhyy7g"3442 factory: :rsa_key_5120, fingerprint_sha256: "SHA256:PCCupLbFHScm4AbEufbGDvhBU27IM0MVAor715qKQK8"3443 is expected to eq "SHA256:PCCupLbFHScm4AbEufbGDvhBU27IM0MVAor715qKQK8"3444 factory: :rsa_key_8192, fingerprint_sha256: "SHA256:CtHFQAS+9Hb8z4vrv4gVQPsHjNN0WIZhWODaB1mQLs4"3445 is expected to eq "SHA256:CtHFQAS+9Hb8z4vrv4gVQPsHjNN0WIZhWODaB1mQLs4"3446 factory: :dsa_key_2048, fingerprint_sha256: "SHA256:+a3DQ7cU5GM+gaYOfmc0VWNnykHQSuth3VRcCpWuYNI"3447 is expected to eq "SHA256:+a3DQ7cU5GM+gaYOfmc0VWNnykHQSuth3VRcCpWuYNI"3448 factory: :ecdsa_key_256, fingerprint_sha256: "SHA256:C+I5k3D+IGeM6k5iBR1ZsphqTKV+7uvL/XZ5hcrTr7g"3449 is expected to eq "SHA256:C+I5k3D+IGeM6k5iBR1ZsphqTKV+7uvL/XZ5hcrTr7g"3450 factory: :ed25519_key_256, fingerprint_sha256: "SHA256:DCKAjzxWrdOTjaGKBBjtCW8qY5++GaiAJflrHPmp6W0"3451 is expected to eq "SHA256:DCKAjzxWrdOTjaGKBBjtCW8qY5++GaiAJflrHPmp6W0"3452 factory: :ecdsa_sk_key_256, fingerprint_sha256: "SHA256:N0sNKBgWKK8usPuPegtgzHQQA9vQ/dRhAEhwFDAnLA4"3453 is expected to eq "SHA256:N0sNKBgWKK8usPuPegtgzHQQA9vQ/dRhAEhwFDAnLA4"3454 factory: :ed25519_sk_key_256, fingerprint_sha256: "SHA256:U8IKRkIHed6vFMTflwweA3HhIf2DWgZ8EFTm9fgwOUk"3455 is expected to eq "SHA256:U8IKRkIHed6vFMTflwweA3HhIf2DWgZ8EFTm9fgwOUk"3456 with an invalid SSH key3457 is expected to be nil3458 #key_text3459 key_value: "this is not a key"3460 carries the unmodified key data3461 key_value: nil3462 carries the unmodified key data3463Gitlab::RackAttack::Request3464 FILES_PATH_REGEX3465 is expected to match "/api/v4/projects/1/repository/files/README"3466 is expected to match "/api/v4/projects/1/repository/files/README?ref=master"3467 is expected to match "/api/v4/projects/1/repository/files/README/blame"3468 is expected to match "/api/v4/projects/1/repository/files/README/raw"3469 is expected to match "/api/v4/projects/some%2Fnested%2Frepo/repository/files/README"3470 is expected not to match "/api/v4/projects/some/nested/repo/repository/files/README"3471 #api_request?3472 path: "/", expected: false3473 is expected to eq false3474 when the application is mounted at a relative URL3475 is expected to eq false3476 path: "/groups", expected: false3477 is expected to eq false3478 when the application is mounted at a relative URL3479 is expected to eq false3480 path: "/foo/api", expected: false3481 is expected to eq false3482 when the application is mounted at a relative URL3483 is expected to eq false3484 path: "/api", expected: true3485 is expected to eq true3486 when the application is mounted at a relative URL3487 is expected to eq true3488 path: "/api/v4/groups/1", expected: true3489 is expected to eq true3490 when the application is mounted at a relative URL3491 is expected to eq true3492 #api_internal_request?3493 path: "/", expected: false3494 is expected to eq false3495 when the application is mounted at a relative URL3496 is expected to eq false3497 path: "/groups", expected: false3498 is expected to eq false3499 when the application is mounted at a relative URL3500 is expected to eq false3501 path: "/api", expected: false3502 is expected to eq false3503 when the application is mounted at a relative URL3504 is expected to eq false3505 path: "/api/v4/groups/1", expected: false3506 is expected to eq false3507 when the application is mounted at a relative URL3508 is expected to eq false3509 path: "/api/v4/internal", expected: false3510 is expected to eq false3511 when the application is mounted at a relative URL3512 is expected to eq false3513 path: "/foo/api/v4/internal", expected: false3514 is expected to eq false3515 when the application is mounted at a relative URL3516 is expected to eq false3517 path: "/api/v4/internal/", expected: true3518 is expected to eq true3519 when the application is mounted at a relative URL3520 is expected to eq true3521 path: "/api/v4/internal/foo", expected: true3522 is expected to eq true3523 when the application is mounted at a relative URL3524 is expected to eq true3525 path: "/api/v1/internal/foo", expected: true3526 is expected to eq true3527 when the application is mounted at a relative URL3528 is expected to eq true3529 #health_check_request?3530 path: "/", expected: false3531 is expected to eq false3532 when the application is mounted at a relative URL3533 is expected to eq false3534 path: "/groups", expected: false3535 is expected to eq false3536 when the application is mounted at a relative URL3537 is expected to eq false3538 path: "/foo/-/health", expected: false3539 is expected to eq false3540 when the application is mounted at a relative URL3541 is expected to eq false3542 path: "/-/health", expected: true3543 is expected to eq true3544 when the application is mounted at a relative URL3545 is expected to eq true3546 path: "/-/liveness", expected: true3547 is expected to eq true3548 when the application is mounted at a relative URL3549 is expected to eq true3550 path: "/-/readiness", expected: true3551 is expected to eq true3552 when the application is mounted at a relative URL3553 is expected to eq true3554 path: "/-/metrics", expected: true3555 is expected to eq true3556 when the application is mounted at a relative URL3557 is expected to eq true3558 path: "/-/health/foo", expected: true3559 is expected to eq true3560 when the application is mounted at a relative URL3561 is expected to eq true3562 path: "/-/liveness/foo", expected: true3563 is expected to eq true3564 when the application is mounted at a relative URL3565 is expected to eq true3566 path: "/-/readiness/foo", expected: true3567 is expected to eq true3568 when the application is mounted at a relative URL3569 is expected to eq true3570 path: "/-/metrics/foo", expected: true3571 is expected to eq true3572 when the application is mounted at a relative URL3573 is expected to eq true3574 #container_registry_event?3575 path: "/", expected: false3576 is expected to eq false3577 when the application is mounted at a relative URL3578 is expected to eq false3579 path: "/groups", expected: false3580 is expected to eq false3581 when the application is mounted at a relative URL3582 is expected to eq false3583 path: "/api/v4/container_registry_event", expected: false3584 is expected to eq false3585 when the application is mounted at a relative URL3586 is expected to eq false3587 path: "/foo/api/v4/container_registry_event/", expected: false3588 is expected to eq false3589 when the application is mounted at a relative URL3590 is expected to eq false3591 path: "/api/v4/container_registry_event/", expected: true3592 is expected to eq true3593 when the application is mounted at a relative URL3594 is expected to eq true3595 path: "/api/v4/container_registry_event/foo", expected: true3596 is expected to eq true3597 when the application is mounted at a relative URL3598 is expected to eq true3599 path: "/api/v1/container_registry_event/foo", expected: true3600 is expected to eq true3601 when the application is mounted at a relative URL3602 is expected to eq true3603 #product_analytics_collector_request?3604 path: "/", expected: false3605 is expected to eq false3606 when the application is mounted at a relative URL3607 is expected to eq false3608 path: "/groups", expected: false3609 is expected to eq false3610 when the application is mounted at a relative URL3611 is expected to eq false3612 path: "/-/collector", expected: false3613 is expected to eq false3614 when the application is mounted at a relative URL3615 is expected to eq false3616 path: "/-/collector/foo", expected: false3617 is expected to eq false3618 when the application is mounted at a relative URL3619 is expected to eq false3620 path: "/foo/-/collector/i", expected: false3621 is expected to eq false3622 when the application is mounted at a relative URL3623 is expected to eq false3624 path: "/-/collector/i", expected: true3625 is expected to eq true3626 when the application is mounted at a relative URL3627 is expected to eq true3628 path: "/-/collector/ifoo", expected: true3629 is expected to eq true3630 when the application is mounted at a relative URL3631 is expected to eq true3632 path: "/-/collector/i/foo", expected: true3633 is expected to eq true3634 when the application is mounted at a relative URL3635 is expected to eq true3636 #should_be_skipped?3637 api_internal_request: true, health_check_request: true, container_registry_event: true3638 returns true if any condition is true3639 api_internal_request: true, health_check_request: true, container_registry_event: false3640 returns true if any condition is true3641 api_internal_request: true, health_check_request: false, container_registry_event: true3642 returns true if any condition is true3643 api_internal_request: true, health_check_request: false, container_registry_event: false3644 returns true if any condition is true3645 api_internal_request: false, health_check_request: true, container_registry_event: true3646 returns true if any condition is true3647 api_internal_request: false, health_check_request: true, container_registry_event: false3648 returns true if any condition is true3649 api_internal_request: false, health_check_request: false, container_registry_event: true3650 returns true if any condition is true3651 api_internal_request: false, health_check_request: false, container_registry_event: false3652 returns true if any condition is true3653 #web_request?3654 path: "/", expected: true3655 is expected to eq true3656 when the application is mounted at a relative URL3657 is expected to eq true3658 path: "/groups", expected: true3659 is expected to eq true3660 when the application is mounted at a relative URL3661 is expected to eq true3662 path: "/foo/api", expected: true3663 is expected to eq true3664 when the application is mounted at a relative URL3665 is expected to eq true3666 path: "/api", expected: false3667 is expected to eq false3668 when the application is mounted at a relative URL3669 is expected to eq false3670 path: "/api/v4/groups/1", expected: false3671 is expected to eq false3672 when the application is mounted at a relative URL3673 is expected to eq false3674 #protected_path?3675 path: "/", expected: false3676 is expected to eq false3677 when the application is mounted at a relative URL3678 is expected to eq false3679 path: "/groups", expected: false3680 is expected to eq false3681 when the application is mounted at a relative URL3682 is expected to eq false3683 path: "/foo/protected", expected: false3684 is expected to eq false3685 when the application is mounted at a relative URL3686 is expected to eq false3687 path: "/foo/secure", expected: false3688 is expected to eq false3689 when the application is mounted at a relative URL3690 is expected to eq false3691 path: "/protected", expected: true3692 is expected to eq true3693 when the application is mounted at a relative URL3694 is expected to eq true3695 path: "/secure", expected: true3696 is expected to eq true3697 when the application is mounted at a relative URL3698 is expected to eq true3699 path: "/secure/", expected: true3700 is expected to eq true3701 when the application is mounted at a relative URL3702 is expected to eq true3703 path: "/secure/foo", expected: true3704 is expected to eq true3705 when the application is mounted at a relative URL3706 is expected to eq true3707 #frontend_request?3708 session: {}, env: {}, expected: false3709 is expected to eq false3710 session: {}, env: {"HTTP_X_CSRF_TOKEN"=>"ZW85xUISMqF+xqLR28PzTUIUdU6wqhtFlxzRSoZ9HqE="}, expected: false3711 is expected to eq false3712 session: {:_csrf_token=>"ZW85xUISMqF+xqLR28PzTUIUdU6wqhtFlxzRSoZ9HqE="}, env: {"HTTP_X_CSRF_TOKEN"=>"Qt3ZKlf2hUshy+QiksjayLFYh7SswmjfYTVrS9sKpuE="}, expected: false3713 is expected to eq false3714 session: {:_csrf_token=>"ZW85xUISMqF+xqLR28PzTUIUdU6wqhtFlxzRSoZ9HqE="}, env: {"HTTP_X_CSRF_TOKEN"=>"ZW85xUISMqF+xqLR28PzTUIUdU6wqhtFlxzRSoZ9HqE="}, expected: true3715 is expected to eq true3716 #deprecated_api_request?3717 path: "/", query: "", expected: false3718 is expected to eq false3719 when the application is mounted at a relative URL3720 is expected to eq false3721 path: "/api/v4/groups/1/", query: "", expected: true3722 is expected to eq true3723 when the application is mounted at a relative URL3724 is expected to eq true3725 path: "/api/v4/groups/1", query: "", expected: true3726 is expected to eq true3727 when the application is mounted at a relative URL3728 is expected to eq true3729 path: "/api/v4/groups/foo/", query: "", expected: true3730 is expected to eq true3731 when the application is mounted at a relative URL3732 is expected to eq true3733 path: "/api/v4/groups/foo", query: "", expected: true3734 is expected to eq true3735 when the application is mounted at a relative URL3736 is expected to eq true3737 path: "/api/v4/groups/1", query: "with_projects=", expected: true3738 is expected to eq true3739 when the application is mounted at a relative URL3740 is expected to eq true3741 path: "/api/v4/groups/1", query: "with_projects=1", expected: true3742 is expected to eq true3743 when the application is mounted at a relative URL3744 is expected to eq true3745 path: "/api/v4/groups/1", query: "with_projects=0", expected: false3746 is expected to eq false3747 when the application is mounted at a relative URL3748 is expected to eq false3749 path: "/foo/api/v4/groups/1", query: "", expected: false3750 is expected to eq false3751 when the application is mounted at a relative URL3752 is expected to eq false3753 path: "/api/v4/groups/1/foo", query: "", expected: false3754 is expected to eq false3755 when the application is mounted at a relative URL3756 is expected to eq false3757 path: "/api/v4/groups/nested%2Fgroup", query: "", expected: true3758 is expected to eq true3759 when the application is mounted at a relative URL3760 is expected to eq true3761Gitlab::Ci::Config::Entry::Job3762 behaves like with inheritable CI config3763 does prepend an Inheritable mixin3764 all inheritable entries are covered3765 all entries do have inherit flag3766 for non-inheritable entries3767 entry_key: :stage3768 inheritable_class does not define entry3769 entry_key: :only3770 inheritable_class does not define entry3771 entry_key: :except3772 inheritable_class does not define entry3773 entry_key: :rules3774 inheritable_class does not define entry3775 entry_key: :variables3776 inheritable_class does not define entry3777 entry_key: :inherit3778 inheritable_class does not define entry3779 entry_key: :script3780 inheritable_class does not define entry3781 entry_key: :needs3782 inheritable_class does not define entry3783 entry_key: :environment3784 inheritable_class does not define entry3785 entry_key: :coverage3786 inheritable_class does not define entry3787 entry_key: :release3788 inheritable_class does not define entry3789 entry_key: :parallel3790 inheritable_class does not define entry3791 entry_key: :allow_failure3792 inheritable_class does not define entry3793 entry_key: :id_tokens3794 inheritable_class does not define entry3795 entry_key: :publish3796 inheritable_class does not define entry3797 entry_key: :dast_configuration3798 inheritable_class does not define entry3799 entry_key: :secrets3800 inheritable_class does not define entry3801 for inheritable entries3802 entry_key: :before_script, entry_class: Gitlab::Ci::Config::Entry::Commands3803 inheritable_class does define entry3804 when is specified3805 does inherit value3806 when entry is specified3807 does not inherit value3808 when inheritable does not specify3809 does not inherit value3810 entry_key: :after_script, entry_class: Gitlab::Ci::Config::Entry::Commands3811 inheritable_class does define entry3812 when is specified3813 does inherit value3814 when entry is specified3815 does not inherit value3816 when inheritable does not specify3817 does not inherit value3818 entry_key: :hooks, entry_class: Gitlab::Ci::Config::Entry::Hooks3819 inheritable_class does define entry3820 when is specified3821 does inherit value3822 when entry is specified3823 does not inherit value3824 when inheritable does not specify3825 does not inherit value3826 entry_key: :cache, entry_class: Gitlab::Ci::Config::Entry::Caches3827 inheritable_class does define entry3828 when is specified3829 does inherit value3830 when entry is specified3831 does not inherit value3832 when inheritable does not specify3833 does not inherit value3834 entry_key: :image, entry_class: Gitlab::Ci::Config::Entry::Image3835 inheritable_class does define entry3836 when is specified3837 does inherit value3838 when entry is specified3839 does not inherit value3840 when inheritable does not specify3841 does not inherit value3842 entry_key: :services, entry_class: Gitlab::Ci::Config::Entry::Services3843 inheritable_class does define entry3844 when is specified3845 does inherit value3846 when entry is specified3847 does not inherit value3848 when inheritable does not specify3849 does not inherit value3850 entry_key: :interruptible, entry_class: Gitlab::Config::Entry::Boolean3851 inheritable_class does define entry3852 when is specified3853 does inherit value3854 when entry is specified3855 does not inherit value3856 when inheritable does not specify3857 does not inherit value3858 entry_key: :timeout, entry_class: Gitlab::Ci::Config::Entry::Timeout3859 inheritable_class does define entry3860 when is specified3861 does inherit value3862 when entry is specified3863 does not inherit value3864 when inheritable does not specify3865 does not inherit value3866 entry_key: :retry, entry_class: Gitlab::Ci::Config::Entry::Retry3867 inheritable_class does define entry3868 when is specified3869 does inherit value3870 when entry is specified3871 does not inherit value3872 when inheritable does not specify3873 does not inherit value3874 entry_key: :tags, entry_class: Gitlab::Ci::Config::Entry::Tags3875 inheritable_class does define entry3876 when is specified3877 does inherit value3878 when entry is specified3879 does not inherit value3880 when inheritable does not specify3881 does not inherit value3882 entry_key: :artifacts, entry_class: Gitlab::Ci::Config::Entry::Artifacts3883 inheritable_class does define entry3884 when is specified3885 does inherit value3886 when entry is specified3887 does not inherit value3888 when inheritable does not specify3889 does not inherit value3890 .nodes3891 when filtering all the entry/node names3892 is expected to include :before_script, :script, :after_script, :hooks, :stage, :cache, :image, :services, :only, :except, :rules, :needs, :variables, :artifacts, :environment, :coverage, :retry, :interruptible, :timeout, :release, :tags, :inherit, and :parallel3893 .matching?3894 when config is not a hash3895 is expected to be falsey3896 when config is a regular job3897 is expected to be truthy3898 when config is a bridge job3899 is expected to be falsey3900 when config is a hidden job3901 is expected to be falsey3902 when using the default job without script3903 is expected to be falsey3904 when using the default job with script3905 is expected to be truthy3906 validations3907 when entry config value is correct3908 #valid?3909 is valid3910 when job name is empty3911 reports error3912 when config uses both "when:" and "rules:"3913 is valid3914 when delayed job3915 when start_in is specified3916 is expected to be valid3917 when has needs3918 is expected to be valid3919 returns scheduling_type as :dag3920 when has dependencies3921 is expected to be valid3922 when it is a release3923 is expected to be valid3924 when rules are used3925 is expected to be valid3926 when entry value is not correct3927 incorrect config value type3928 #errors3929 reports error about a config type3930 when config is empty3931 #valid3932 is invalid3933 when unknown keys detected3934 #valid3935 is not valid3936 when script is not provided3937 returns error about missing script entry3938 when extends key is not a string3939 returns error about wrong value type3940 when parallel value is not correct3941 when it is not a numeric value3942 returns error about invalid type3943 when it is lower than two3944 returns error about value too low3945 when it is an empty hash3946 returns error about missing matrix3947 when delayed job3948 when start_in is specified3949 is expected to be valid3950 when start_in is empty3951 returns error about invalid type3952 when start_in is not formatted as a duration3953 returns error about invalid type3954 when start_in is longer than one week3955 returns error about exceeding the limit3956 when the `when` keyword is not a string3957 when it is an array3958 returns error3959 when it is a boolean3960 returns error3961 when start_in specified without delayed specification3962 returns error about invalid type3963 when it has dependencies3964 that are not a array of strings3965 returns error about invalid type3966 when the job has needs3967 and there are dependencies that are not included in needs3968 returns error about invalid data3969 and they are only cross pipeline needs3970 adds an error for dependency keyword usage3971 when timeout value is not correct3972 when it is higher than instance wide timeout3973 returns error about value too high3974 when it is not a duration3975 returns error about wrong value3976 when timeout value is correct3977 returns correct timeout3978 when it is a release3979 when `release:description` is missing3980 returns error3981 when invalid rules are used3982 with rules nested more than max allowed levels3983 is expected not to be valid3984 with rules with invalid keys3985 is expected not to be valid3986 when only: is used with rules:3987 returns error about mixing only: with rules:3988 and only: is blank3989 is valid:3990 and rules: is blank3991 is valid3992 when except: is used with rules:3993 returns error about mixing except: with rules:3994 and except: is blank3995 is valid3996 and rules: is blank3997 is valid3998 when only: and except: are both used with rules:3999 returns errors about mixing both only: and except: with rules:4000 when only: and except: as both blank4001 is valid4002 when rules: is blank4003 is valid4004 when job is not a pages job4005 if the config contains a publish entry4006 is invalid4007 when job is a pages job4008 when it does not have a publish entry4009 is valid4010 when it has a publish entry4011 is valid4012 #relevant?4013 is a relevant entry4014 #compose!4015 when job config overrides default config4016 overrides default config4017 when job config does not override default config4018 uses config from default entry4019 with workflow rules4020 name: "uses default only", has_workflow_rules?: false, only: nil, rules: nil, result: {:refs=>["branches", "tags"]}4021 RSpec::ExampleGroups::GitlabCiConfigEntryJob::Compose::WithWorkflowRules::NameUsesDefaultOnlyHasWorkflowRulesFalseOnlyNilRulesNilResultRefsBranchesTags4022 name: "uses user only", has_workflow_rules?: false, only: ["branches"], rules: nil, result: {:refs=>["branches"]}4023 RSpec::ExampleGroups::GitlabCiConfigEntryJob::Compose::WithWorkflowRules::NameUsesUserOnlyHasWorkflowRulesFalseOnlyBranchesRulesNilResultRefsBranches4024 name: "does not define only", has_workflow_rules?: false, only: nil, rules: [], result: nil4025 RSpec::ExampleGroups::GitlabCiConfigEntryJob::Compose::WithWorkflowRules::NameDoesNotDefineOnlyHasWorkflowRulesFalseOnlyNilRulesResultNil4026 name: "does not define only", has_workflow_rules?: true, only: nil, rules: nil, result: nil4027 RSpec::ExampleGroups::GitlabCiConfigEntryJob::Compose::WithWorkflowRules::NameDoesNotDefineOnlyHasWorkflowRulesTrueOnlyNilRulesNilResultNil4028 name: "uses user only", has_workflow_rules?: true, only: ["branches"], rules: nil, result: {:refs=>["branches"]}4029 RSpec::ExampleGroups::GitlabCiConfigEntryJob::Compose::WithWorkflowRules::NameUsesUserOnlyHasWorkflowRulesTrueOnlyBranchesRulesNilResultRefsBranches4030 name: "does not define only", has_workflow_rules?: true, only: nil, rules: [], result: nil4031 RSpec::ExampleGroups::GitlabCiConfigEntryJob::Compose::WithWorkflowRules::NameDoesNotDefineOnlyHasWorkflowRulesTrueOnlyNilRulesResultNil4032 when workflow rules is used4033 when rules are used4034 does not define only4035 when rules are not used4036 does not define only4037 when composed4038 #value4039 when entry is correct4040 returns correct value4041 when job is using tags4042 when limit is reached4043 returns error4044 when limit is not reached4045 returns a valid entry4046 #manual_action?4047 when job is a manual action4048 is a manual action4049 when job is not a manual action4050 is not a manual action4051 #delayed?4052 when job is a delayed4053 is a delayed4054 when job is not a delayed4055 is not a delayed4056 #ignored?4057 when job is a manual action4058 when it is not specified if job is allowed to fail4059 is an ignored job4060 when job is allowed to fail4061 is an ignored job4062 when job is not allowed to fail4063 is not an ignored job4064 when job is dynamically allowed to fail4065 is not an ignored job4066 when job is not a manual action4067 when it is not specified if job is allowed to fail4068 is not an ignored job4069 does not return allow_failure4070 when job is allowed to fail4071 is an ignored job4072 does not return allow_failure_criteria4073 when job is not allowed to fail4074 is not an ignored job4075 does not return allow_failure_criteria4076 when job is dynamically allowed to fail4077 is not an ignored job4078 returns allow_failure_criteria4079Feature4080 .feature_flags_available?4081 returns false on connection error4082 returns false when connection is not active4083 returns false when the flipper table does not exist4084 returns false on NoDatabaseError4085 .get4086 returns the Flipper feature4087 .persisted_names4088 returns the names of the persisted features4089 returns an empty Array when no features are presisted4090 caches the feature names when request store is active4091 fetches all flags once in a single query4092 .persisted_name?4093 when the feature is persisted4094 returns true when feature name is a string4095 returns true when feature name is a symbol4096 when the feature is not persisted4097 returns false when feature name is a string4098 returns false when feature name is a symbol4099 .all4100 returns the Flipper features as an array4101 .flipper4102 when request store is inactive4103 memoizes the Flipper instance but does not not enable Flipper memoization4104 when request store is active4105 memoizes the Flipper instance4106 .enabled?4107 returns false (and tracks / raises exception for dev) for undefined feature4108 returns false for undefined feature with default_enabled_if_undefined: false4109 returns true for undefined feature with default_enabled_if_undefined: true4110 returns false for existing disabled feature in the database4111 returns true for existing enabled feature in the database4112 is expected to eq #<ActiveSupport::Cache::MemoryStore entries=0, size=0, options={:compress=>false}>4113 is expected to eq <ActiveSupport::Cache::NullStore>4114 caches the status in L1 and L2 caches4115 returns the default value when the database does not exist4116 when using redis cache4117 does not make recursive feature-flag calls4118 when self-recursive4119 returns the default value4120 detects self recursion4121 when deeply recursive4122 detects deep recursion4123 logging is enabled4124 does not log feature_flag_state_logs4125 logs other feature flags4126 cached feature flag4127 caches the status in L1 cache for the first minute4128 caches the status in L2 cache after 2 minutes4129 fetches the status after an hour4130 with a group member4131 is true for all group members4132 is false for any other actor4133 with an individual actor4134 returns true when same actor is informed4135 returns false when different actor is informed4136 returns false when no actor is informed4137 with invalid actor4138 when is dev_or_test_env4139 does raise exception4140 validates usage of feature flag with YAML definition4141 when usage is correct4142 when invalid type is used4143 when default_enabled: is false in the YAML definition4144 reads the default from the YAML definition4145 when default_enabled: is true in the YAML definition4146 reads the default from the YAML definition4147 and feature has been disabled4148 is not enabled4149 with a cached value and the YAML definition is changed thereafter4150 reads new default value4151 when YAML definition does not exist for an optional type4152 when in dev or test environment4153 raises an error for dev4154 when in production4155 when database exists4156 checks the persisted status and returns false4157 when database does not exist4158 returns false without checking the status in the database4159 .disable?4160 returns true (and tracks / raises exception for dev) for undefined feature4161 returns true for undefined feature with default_enabled_if_undefined: false4162 returns false for undefined feature with default_enabled_if_undefined: true4163 returns true for existing disabled feature in the database4164 returns false for existing enabled feature in the database4165 .enable4166 returns true4167 behaves like logging4168 logs the event4169 when thing is an actor4170 behaves like logging4171 logs the event4172 .disable4173 returns true4174 behaves like logging4175 logs the event4176 when thing is an actor4177 behaves like logging4178 logs the event4179 when the feature flag was enabled for this actor4180 marks this thing as disabled4181 does not change the global value4182 is possible to re-enable the feature4183 when the feature flag is enabled globally4184 does not mark this thing as disabled4185 does not change the global value4186 opt_out4187 when thing is an actor4188 marks this thing as disabled4189 does not change the global value4190 stores the opt-out information as a gate4191 behaves like logging4192 logs the event4193 when thing is a group4194 has no effect4195 remove_opt_out4196 when thing is an actor4197 re-enables this thing4198 does not change the global value4199 removes the opt-out information4200 behaves like logging4201 logs the event4202 when thing is a group4203 has no effect4204 .enable_percentage_of_time4205 behaves like logging4206 logs the event4207 when the flag is on4208 fails with InvalidOperation4209 .disable_percentage_of_time4210 behaves like logging4211 logs the event4212 .enable_percentage_of_actors4213 behaves like logging4214 logs the event4215 when the flag is on4216 fails with InvalidOperation4217 .disable_percentage_of_actors4218 behaves like logging4219 logs the event4220 .remove4221 behaves like logging4222 logs the event4223 for a non-persisted feature4224 returns nil4225 returns true, and cleans up4226 .log_feature_flag_states?4227 when flag is feature_flag_state_logs4228 is expected to be falsey4229 when flag is old4230 is expected to be falsey4231 when flag is old while log_state_changes is not present4232 is expected to be falsey4233 when flag is old but log_state_changes is true4234 is expected to be truthy4235 when flag is new and not feature_flag_state_logs4236 is expected to be truthy4237 when milestone is nil4238 is expected to be falsey4239 caching with stale reads from the database4240 gives the correct value when enabling for an additional actor4241 gives the correct value when enabling for percentage of time4242 gives the correct value when disabling the flag4243 gives the correct value when deleting the flag4244 Feature::Target4245 #targets4246 returns all found targets4247 when repository target works with different types of repositories4248 returns all found targets4249Gitlab::DataBuilder::Push4250 .build4251 with changed files4252 returns commit hook data4253 without changed files4254 returns commit hook data without include deltas4255 .build_sample4256 is expected to be a kind of Hash4257 is expected to eq "1b12f15a11fc6e62177bef08f47bc7b5ce50b141"4258 is expected to eq "b83d6e391c22777fca1ed3012fce84f633d7fed0"4259 is expected to eq "refs/heads/master"4260 is expected to eq 34261 is expected to eq 34262 is expected to eq ["bar/branch-test.txt"]4263 is expected to eq []4264 is expected to eq []4265 contains project data4266 contains deprecated repository data4267 .sample_data4268 is expected to be a kind of Hash4269 is expected to eq "95790bf891e76fee5e1747ab589903a6a1f80f22"4270 is expected to eq "da1560886d4f094c3e6c9ef40349f7d38b5d27d7"4271 is expected to eq "refs/heads/master"4272 is expected to eq 154273 is expected to eq 14274 is expected to eq 14275 contains project data4276 .build4277 is expected to be a kind of Hash4278 is expected to eq "0000000000000000000000000000000000000000"4279 is expected to eq "5937ac0a7beb003549fc5fd26fc247adbce4a52e"4280 is expected to eq "8a2a6eb295bb170b34c24c76c49ed0e9b2eaf34b"4281 is expected to eq "refs/tags/v1.1.0"4282 is expected to eq nil4283 is expected to eq "Sidney Jones895"4284 is expected to eq "user323"4285 is expected to eq "public-email@example.com"4286 is expected to eq "https://www.gravatar.com/avatar/f04ee079b58aa49b2296a25687ef01f8?s=80&d=identicon"4287 is expected to eq 5624288 is expected to be a kind of Hash4289 is expected to be empty4290 is expected to be zero4291 contains project data4292 contains deprecated repository data4293 does not raise an error when given nil commits4294 .build_bulk4295 is expected to eq {:action=>:created, :ref_count=>2, :ref_type=>:branch}4296User TokenAuthenticatable4297 behaves like TokenAuthenticatable4298 dynamically defined methods4299 is expected to respond to #find_by_feed_token4300 is expected to respond to #ensure_feed_token4301 is expected to respond to #set_feed_token4302 is expected to respond to #reset_feed_token!4303 SensitiveSerializableHash4304 includes the token field in list of sensitive attributes prevented from serialization4305 ensures authentication token4306 is expected to be a kind of String4307ApplicationSetting TokenAuthenticatable4308 behaves like TokenAuthenticatable4309 dynamically defined methods4310 is expected to respond to #find_by_runners_registration_token4311 is expected to respond to #ensure_runners_registration_token4312 is expected to respond to #set_runners_registration_token4313 is expected to respond to #reset_runners_registration_token!4314 SensitiveSerializableHash4315 includes the token field in list of sensitive attributes prevented from serialization4316 generating new token4317 token is not generated yet4318 token field accessor4319 is expected not to be blank4320 ensure_runners_registration_token4321 is expected to be a kind of String4322 is expected not to be blank4323 does not persist token4324 ensure_runners_registration_token!4325 persists new token as an encrypted string4326 does not persist token in a clear text4327 token is generated4328 persists a new token4329 setting new token4330 is expected to eq "0123456789"4331 multiple token fields4332 is expected to respond to #ensure_runners_registration_token4333 is expected to respond to #ensure_error_tracking_access_token4334 is expected to respond to #ensure_yet_another_token4335 setting same token field multiple times4336 raises error4337PersonalAccessToken TokenAuthenticatable4338 .find_by_token4339 finds the token4340 #set_token4341 sets new token4342 #ensure_token4343 token_digest does not exist4344 behaves like changes personal access token4345 sets new token4346 token_digest already generated4347 behaves like does not change personal access token4348 sets new token4349 #ensure_token!4350 token_digest does not exist4351 behaves like changes personal access token4352 sets new token4353 token_digest already generated4354 behaves like does not change personal access token4355 sets new token4356 #reset_token!4357 token_digest does not exist4358 behaves like changes personal access token4359 sets new token4360 token_digest already generated4361 behaves like changes personal access token4362 sets new token4363Ci::Build TokenAuthenticatable4364 behaves like TokenAuthenticatable4365 dynamically defined methods4366 is expected to respond to #find_by_token4367 is expected to respond to #ensure_token4368 is expected to respond to #set_token4369 is expected to respond to #reset_token!4370 SensitiveSerializableHash4371 includes the token field in list of sensitive attributes prevented from serialization4372 generating new token4373 token is not generated yet4374 token field accessor4375 does not generate a token when saving a build4376 ensure_token4377 is expected to be a kind of String4378 is expected not to be blank4379 does not persist token4380 ensure_token!4381 persists a new token4382 persists new token as an encrypted string4383 does not persist a token in a clear text4384 #reset_token!4385 persists a new token4386 setting a new token4387 returns the token4388 writes a new encrypted token4389 does not write a new cleartext token4390 #token_with_expiration4391 #expirable?4392 is expected to eq false4393Ci::Runner TokenAuthenticatable4394 #token_expired?4395 when runner has no token expiration4396 is expected to eq false4397 when runner token is not expired4398 is expected to eq false4399 when runner token is expired4400 is expected to eq true4401 #token_with_expiration4402 #token4403 is expected to eq "xA5Rc3y2cAssFh6ABXmv"4404 #token_expires_at4405 is expected to eq 2023-04-19 09:55:04.799547070 +00004406 #expirable?4407 is expected to eq true4408 .find_by_token4409 when runner has no token expiration4410 is expected to eq #<Ci::Runner id: 1, token: nil, created_at: "2023-04-19 09:54:59.777578924 +0000", updated_at: "2023-...at: nil, allowed_plans: [], registration_type: "registration_token", creator_id: nil, tag_list: nil>4411 when runner token is not expired4412 is expected to eq #<Ci::Runner id: 2, token: nil, created_at: "2023-04-19 09:54:59.794298261 +0000", updated_at: "2023-... +0000", allowed_plans: [], registration_type: "registration_token", creator_id: nil, tag_list: nil>4413 when runner token is expired4414 is expected to be nil4415Project TokenAuthenticatable4416 behaves like prefixed token rotation4417 ensure_runners_token4418 token is not set4419 generates a new token4420 token is set, but does not match the prefix4421 generates a new token4422 token is set and matches prefix4423 leaves the token unchanged4424 ensure_runners_token!4425 token is not set4426 generates a new token4427 token is set, but does not match the prefix4428 generates a new token4429 token is set and matches prefix4430 leaves the token unchanged4431Group TokenAuthenticatable4432 behaves like prefixed token rotation4433 ensure_runners_token4434 token is not set4435 generates a new token4436 token is set, but does not match the prefix4437 generates a new token4438 token is set and matches prefix4439 leaves the token unchanged4440 ensure_runners_token!4441 token is not set4442 generates a new token4443 token is set, but does not match the prefix4444 generates a new token4445 token is set and matches prefix4446 leaves the token unchanged4447Gitlab::Database::BatchCount4448 #batch_count4449 counts table4450 counts with :id field4451 counts with "id" field4452 counts with table.id field4453 counts with Arel column4454 counts table with batch_size 50K4455 will not count table with a batch size less than allowed4456 produces the same result with different batch sizes4457 counts with a start and finish4458 stops counting when finish value is reached4459 defaults the batch size to 1000004460 does not use BETWEEN to define the range4461 behaves like when a transaction is open4462 raises an error4463 behaves like when batch fetch query is canceled4464 reduces batch size by half and retry fetch4465 when all retries fail4466 logs failing query4467 disallowed_configurations4468 returns fallback if start is bigger than finish4469 returns fallback if loops more than allowed4470 returns fallback if batch size is less than min required4471 raises an error if distinct count is requested4472 when a relation is grouped4473 count by default column4474 counts grouped records4475 #batch_count_with_timeout4476 counts table4477 counts with :id field4478 counts with "id" field4479 counts with table.id field4480 counts with Arel column4481 counts table with batch_size 50K4482 will not count table with a batch size less than allowed4483 produces the same result with different batch sizes4484 counts with a start and finish4485 stops counting when finish value is reached4486 returns a partial count when timeout elapses4487 starts counting from a given partial result4488 behaves like when a transaction is open4489 raises an error4490 behaves like when batch fetch query is canceled4491 reduces batch size by half and retry fetch4492 when all retries fail4493 logs failing query4494 disallowed_configurations4495 returns fallback if start is bigger than finish4496 returns fallback if loops more than allowed4497 returns fallback if batch size is less than min required4498 raises an error if distinct count is requested4499 when a relation is grouped4500 count by default column4501 counts grouped records4502 #batch_distinct_count4503 counts with column field4504 counts with "id" field4505 counts with table.column field4506 counts with Arel column4507 counts with :column field with batch_size of 50K4508 will not count table with a batch size less than allowed4509 produces the same result with different batch sizes4510 counts with a start and finish4511 stops counting when finish value is reached4512 counts with User min and max as start and finish4513 defaults the batch size to 100004514 behaves like when a transaction is open4515 raises an error4516 disallowed configurations4517 returns fallback if start is bigger than finish4518 returns fallback if loops more than allowed4519 returns fallback if batch size is less than min required4520 will raise an error if distinct count with the :id column is requested4521 when a relation is grouped4522 distinct count by non-unique column4523 counts grouped records4524 behaves like when batch fetch query is canceled4525 reduces batch size by half and retry fetch4526 when all retries fail4527 logs failing query4528 #batch_sum4529 returns the sum of values in the given column4530 works when given an Arel column4531 works with a batch size of 50K4532 works with start and finish provided4533 returns the same result regardless of batch size4534 defaults the batch size to 10004535 behaves like when a transaction is open4536 raises an error4537 behaves like disallowed configurations4538 returns fallback if start is bigger than finish4539 returns fallback if loops more than allowed4540 returns fallback if batch size is less than min required4541 behaves like when batch fetch query is canceled4542 reduces batch size by half and retry fetch4543 when all retries fail4544 logs failing query4545 #batch_average4546 calls BatchAverageCounter4547Gitlab::Redis::DbLoadBalancing4548 # order random4549 #raw_config_hash4550 returns old-style single url config in a hash4551 returns cluster config without url key in a hash4552 .params4553 withstands mutation4554 when url contains unix socket reference4555 with old format4556 returns path key instead4557 with new format4558 returns path key instead4559 when url is host based4560 with old format4561 returns hash with host, port, db, and password4562 with new format4563 rails_env: "development", host: "development-host"4564 returns hash with host, port, db, and password4565 rails_env: "test", host: "test-host"4566 returns hash with host, port, db, and password4567 rails_env: "production", host: "production-host"4568 returns hash with host, port, db, and password4569 with redis cluster format4570 rails_env: "development", host: "development-master"4571 returns hash with cluster and password4572 rails_env: "test", host: "test-master"4573 returns hash with cluster and password4574 rails_env: "production", host: "production-master"4575 returns hash with cluster and password4576 #db4577 with old format4578 returns the correct db4579 with new format4580 returns the correct db4581 with cluster-mode4582 returns the correct db4583 .store4584 with old format4585 behaves like redis store4586 instantiates Redis::Store4587 with the namespace4588 uses specified namespace4589 with new format4590 behaves like redis store4591 instantiates Redis::Store4592 with the namespace4593 uses specified namespace4594 #sentinels?4595 when sentinels are defined4596 returns true4597 when sentinels are not defined4598 is expected to eq nil4599 when cluster is defined4600 returns false4601 .config_file_name4602 when there is no config file anywhere4603 is expected to be nil4604 and there is a global env override4605 is expected to eq "global override"4606 and there is an instance specific config file4607 is expected to eq "/tmp/d20230419-326-cavrou/config/redis.db_load_balancing.yml"4608 returns a path that exists4609 and there is a specific env override4610 is expected to eq "instance specific override"4611 #sentinels4612 when sentinels are defined4613 rails_env: "development", hosts: ["development-replica1", "development-replica2"]4614 returns an array of hashes with host and port keys4615 rails_env: "test", hosts: ["test-replica1", "test-replica2"]4616 returns an array of hashes with host and port keys4617 rails_env: "production", hosts: ["production-replica1", "production-replica2"]4618 returns an array of hashes with host and port keys4619 when sentinels are not defined4620 returns nil4621 when cluster is defined4622 returns nil4623 #fetch_config4624 raises an exception when the config file contains invalid yaml4625 has a value for the legacy default URL4626 when redis.yml exists4627 uses config/redis.yml4628 when no config file exsits4629 returns nil4630 but resque.yml exists4631 returns the config from resque.yml4632 #fetch_config4633 when redis.yml exists4634 when the fallback has a redis.yml entry4635 is expected to eq {"fallback redis.yml"=>123}4636 and an instance config file exists4637 is expected to eq {"instance specific file"=>456}4638 and the instance has a redis.yml entry4639 is expected to eq {"instance redis.yml"=>789}4640 when no redis config file exsits4641 returns nil4642 when resque.yml exists4643 returns the config from resque.yml4644 behaves like redis_shared_examples4645 .config_file_name4646 when there is no config file anywhere4647 is expected to be nil4648 and there is a global env override4649 is expected to eq "global override"4650 and there is an instance specific config file4651 is expected to eq "/tmp/d20230419-326-qplo86/config/redis.db_load_balancing.yml"4652 returns a path that exists4653 and there is a specific env override4654 is expected to eq "instance specific override"4655 .store4656 with old format4657 behaves like redis store4658 instantiates Redis::Store4659 with the namespace4660 uses specified namespace4661 with new format4662 behaves like redis store4663 instantiates Redis::Store4664 with the namespace4665 uses specified namespace4666 .params4667 withstands mutation4668 when url contains unix socket reference4669 with old format4670 returns path key instead4671 with new format4672 returns path key instead4673 when url is host based4674 with old format4675 returns hash with host, port, db, and password4676 with new format4677 rails_env: "development", host: "development-host"4678 returns hash with host, port, db, and password4679 rails_env: "test", host: "test-host"4680 returns hash with host, port, db, and password4681 rails_env: "production", host: "production-host"4682 returns hash with host, port, db, and password4683 with redis cluster format4684 rails_env: "development", host: "development-master"4685 returns hash with cluster and password4686 rails_env: "test", host: "test-master"4687 returns hash with cluster and password4688 rails_env: "production", host: "production-master"4689 returns hash with cluster and password4690 .url4691 withstands mutation4692 when yml file with env variable4693 reads redis url from env variable4694 .version4695 returns a version4696 .with4697 when running on single-threaded runtime4698 instantiates a connection pool with size 54699 when running on multi-threaded runtime4700 instantiates a connection pool with a size based on the concurrency of the worker4701 when there is no config at all4702 can run an empty block4703 #db4704 with old format4705 returns the correct db4706 with new format4707 returns the correct db4708 with cluster-mode4709 returns the correct db4710 #sentinels4711 when sentinels are defined4712 rails_env: "development", hosts: ["development-replica1", "development-replica2"]4713 returns an array of hashes with host and port keys4714 rails_env: "test", hosts: ["test-replica1", "test-replica2"]4715 returns an array of hashes with host and port keys4716 rails_env: "production", hosts: ["production-replica1", "production-replica2"]4717 returns an array of hashes with host and port keys4718 when sentinels are not defined4719 returns nil4720 when cluster is defined4721 returns nil4722 #sentinels?4723 when sentinels are defined4724 returns true4725 when sentinels are not defined4726 is expected to eq nil4727 when cluster is defined4728 returns false4729 #raw_config_hash4730 returns old-style single url config in a hash4731 returns cluster config without url key in a hash4732 #fetch_config4733 raises an exception when the config file contains invalid yaml4734 has a value for the legacy default URL4735 when redis.yml exists4736 uses config/redis.yml4737 when no config file exsits4738 returns nil4739 but resque.yml exists4740 returns the config from resque.yml4741 .url4742 withstands mutation4743 when yml file with env variable4744 reads redis url from env variable4745 .with4746 when running on single-threaded runtime4747 instantiates a connection pool with size 54748 when running on multi-threaded runtime4749 instantiates a connection pool with a size based on the concurrency of the worker4750 when there is no config at all4751 can run an empty block4752 #raw_config_hash4753 has a legacy default URL4754 .config_file_name4755 and there is a global env override4756 is expected to eq "global override"4757 and SharedState has a different config file4758 is expected to eq "fallback config file"4759 #pool4760 instantiates an instance of MultiStore4761 behaves like multi store feature flags4762 with feature flag :use_primary_and_secondary_stores_for_db_load_balancing is enabled4763 multi store is enabled4764 with feature flag :use_primary_and_secondary_stores_for_db_load_balancing is disabled4765 multi store is disabled4766 with feature flag :use_primary_store_as_default_for_db_load_balancing is enabled4767 primary store is enabled4768 with feature flag :use_primary_store_as_default_for_db_load_balancing is disabled4769 primary store is disabled4770 .version4771 returns a version4772Gitlab::ImportExport::FastHashSerializer4773 saves the correct hash4774 has approvals_before_merge set4775 has milestones4776 has merge requests4777 has merge request's milestones4778 has merge request's source branch SHA4779 has merge request's target branch SHA4780 has events4781 has snippets4782 has snippet notes4783 has releases4784 has no author on releases4785 has the author ID on releases4786 has issues4787 has issue comments4788 has issue assignees4789 has author on issue comments4790 has project members4791 has merge requests diffs4792 has merge request diff files4793 has merge request diff commits4794 has merge requests comments4795 has author on merge requests comments4796 has pipeline stages4797 has pipeline builds4798 has pipeline builds4799 has pipeline commits4800 has commit notes4801 has labels with no associations4802 has labels associated to records4803 has project and group labels4804 has priorities associated to labels4805 has issue resource label events4806 has merge request resource label events4807 has project feature4808 has custom attributes4809 has badges4810 does not complain about non UTF-8 characters in MR diff files4811 has a board and a list4812 project attributes4813 does not contain the runners token4814 relation ordering4815 orders exported pipelines by primary key4816WorkItems::ParentLinks::CreateService4817 #execute4818 when the reference list is empty4819 behaves like returns not found error4820 returns error4821 no relationship is created4822 when work item not found4823 behaves like returns not found error4824 returns error4825 no relationship is created4826 when user has no permission to link work items4827 behaves like returns not found error4828 returns error4829 no relationship is created4830 child and parent are the same work item4831 no relationship is created4832 when adjacent is already in place4833 adjacent_position: -100, expected_order: lazy { [adjacent, current_item] }4834 sets relative positions4835 adjacent_position: 0, expected_order: lazy { [adjacent, current_item] }4836 sets relative positions4837 adjacent_position: 100, expected_order: lazy { [adjacent, current_item] }4838 sets relative positions4839 when there are tasks to relate4840 creates relationships4841 returns success status and created links4842 creates notes and records the events4843 when note creation fails for some reason4844 still records the link event4845 still records the link event4846 when task is already assigned4847 creates links only for non related tasks4848 when there are invalid children4849 creates links only for valid children4850 returns error status4851 creates notes for valid links4852 when parent type is invalid4853 returns error status4854 when max depth is reached4855 returns error status4856 when params include invalid ids4857 creates links only for valid IDs4858 when user is a guest4859 behaves like returns not found error4860 returns error4861 no relationship is created4862 when user is a guest assigned to the work item4863 behaves like returns not found error4864 returns error4865 no relationship is created4866UsersHelper4867 display_public_email?4868 is expected to equal true4869 when user public email is blank4870 is expected to equal false4871 #user_link4872 links to the user's profile4873 has the user's email as title4874 #user_clear_status_at4875 when status exists4876 with clear_status_at set4877 has the correct iso formatted date4878 without clear_status_at set4879 returns nil4880 without status4881 returns nil4882 #profile_tabs4883 with public profile4884 includes all the expected tabs4885 with private profile4886 is empty4887 #user_internal_regex_data4888 user_default_external: false, user_default_internal_regex: nil, result: {:user_internal_regex_pattern=>nil, :user_internal_regex_options=>nil}4889 is expected to eq {:user_internal_regex_options=>nil, :user_internal_regex_pattern=>nil}4890 user_default_external: false, user_default_internal_regex: "", result: {:user_internal_regex_pattern=>nil, :user_internal_regex_options=>nil}4891 is expected to eq {:user_internal_regex_options=>nil, :user_internal_regex_pattern=>nil}4892 user_default_external: false, user_default_internal_regex: "mockRegexPattern", result: {:user_internal_regex_pattern=>nil, :user_internal_regex_options=>nil}4893 is expected to eq {:user_internal_regex_options=>nil, :user_internal_regex_pattern=>nil}4894 user_default_external: true, user_default_internal_regex: nil, result: {:user_internal_regex_pattern=>nil, :user_internal_regex_options=>nil}4895 is expected to eq {:user_internal_regex_options=>nil, :user_internal_regex_pattern=>nil}4896 user_default_external: true, user_default_internal_regex: "", result: {:user_internal_regex_pattern=>nil, :user_internal_regex_options=>nil}4897 is expected to eq {:user_internal_regex_options=>nil, :user_internal_regex_pattern=>nil}4898 user_default_external: true, user_default_internal_regex: "mockRegexPattern", result: {:user_internal_regex_pattern=>"mockRegexPattern", :user_internal_regex_options=>"i"}4899 is expected to eq {:user_internal_regex_options=>"i", :user_internal_regex_pattern=>"mockRegexPattern"}4900 #current_user_menu_items4901 includes all default items4902 includes the profile tab if the user can read themself4903 includes the settings tab if the user can update themself4904 when terms are enforced4905 hides the profile and the settings tab4906 #user_badges_in_admin_section4907 with a blocked user4908 returns the blocked badge4909 with a pending approval user4910 returns the pending approval badge4911 with a banned user4912 returns the banned badge4913 with an admin user4914 returns the admin badge4915 with a bot4916 returns the bot badge4917 with an external user4918 returns the external badge4919 with the current user4920 returns the "It's You" badge4921 with an external blocked admin4922 returns the blocked, admin and external badges4923 with a locked user4924 returns the "Locked" badge4925 get badges for normal user4926 returns no badges4927 #can_force_email_confirmation?4928 for a user that is already confirmed4929 is expected to eq false4930 for a user that is not confirmed4931 is expected to eq true4932 #work_information4933 when neither organization nor job_title are present4934 is expected to be nil4935 when user parameter is nil4936 is expected to be nil4937 without schema markup4938 when both job_title and organization are present4939 returns job title concatenated with organization4940 when only organization is present4941 returns organization4942 when only job_title is present4943 returns job title4944 with schema markup4945 when both job_title and organization are present4946 returns job title concatenated with organization4947 when only organization is present4948 returns organization4949 when only job_title is present4950 returns job title4951 #user_display_name4952 for a confirmed user4953 is expected to eq "Sidney Jones1001"4954 for an unconfirmed user4955 is expected to eq "Unconfirmed user"4956 when current user is an admin4957 is expected to eq "Sidney Jones1003"4958 when the current user is self4959 is expected to eq "Sidney Jones1005"4960 for a blocked user4961 is expected to eq "Blocked user"4962 #admin_users_data_attributes4963 users matches the serialized json4964 paths matches the schema4965 #confirm_user_data4966 sets `path` key correctly4967 sets `modal_attributes` key to valid json4968 when `user.unconfirmed_email` is set4969 sets `modal_attributes.messageHtml` correctly4970 when `user.unconfirmed_email` is not set4971 sets `modal_attributes.messageHtml` correctly4972 #user_email_help_text4973 when `user.unconfirmed_email` is not set4974 contains avatar detection text4975 when `user.unconfirmed_email` is set4976 contains resend confirmation e-mail text4977 #admin_user_actions_data_attributes4978 user matches the serialized json4979 paths matches the schema4980 #trials_link_url4981 returns the correct URL4982 #user_profile_tabs_app_data4983 returns expected hash4984 #load_max_project_member_accesses4985 without current_user4986 executes no queries4987 when current_user is present4988 preloads ProjectPolicy#lookup_access_level! and UsersHelper#max_member_project_member_access for current_user in two queries4989PostReceiveService4990 when project is nil4991 does not return error4992 behaves like does not record an onboarding progress action4993 is expected not to receive new(*(any args)) 0 times4994 when repository is nil4995 does not return error4996 when both repository and project are nil4997 does not return error4998 with Project4999 returns link to create new merge request5000 returns the link to an existing merge request when it exists5001 does not invoke MergeRequests::PushOptionsHandlerService5002 behaves like post_receive_service actions5003 enqueues a PostReceive worker job5004 decreases the reference counter and returns the result5005 behaves like records an onboarding progress action5006 is expected to receive execute({:action=>:git_write}) 1 time5007 when printing_merge_request_link_enabled is false5008 returns no merge request messages5009 when there are merge_request push options5010 invalidates the branch name cache5011 invokes MergeRequests::PushOptionsHandlerService5012 creates a new merge request5013 links to the newly created merge request5014 adds errors on the service instance to warnings5015 adds ActiveRecord errors on invalid MergeRequest records to warnings5016 with PersonalSnippet5017 does not return link to create new merge request5018 does not return the link to an existing merge request when it exists5019 behaves like post_receive_service actions5020 enqueues a PostReceive worker job5021 decreases the reference counter and returns the result5022 behaves like records an onboarding progress action5023 is expected to receive execute({:action=>:git_write}) 1 time5024 with ProjectSnippet5025 does not return link to create new merge request5026 does not return the link to an existing merge request when it exists5027 behaves like post_receive_service actions5028 enqueues a PostReceive worker job5029 decreases the reference counter and returns the result5030 behaves like records an onboarding progress action5031 is expected to receive execute({:action=>:git_write}) 1 time5032 broadcast message banner exists5033 outputs a broadcast message5034 broadcast message notification exists5035 does not output a broadcast message5036 broadcast message does not exist5037 does not output a broadcast message5038 nil broadcast message5039 does not output a broadcast message5040 broadcast message has a target_path5041 no project path matches5042 does not output the scoped broadcast messages5043 does output another message that doesn't have a target_path5044 project path matches5045 does output the latest scoped broadcast message5046 does not output the older scoped broadcast message5047 does not output another message that doesn't have a target_path5048 with a redirected data5049 returns redirected message on the response5050 with new project data5051 returns new project message on the response5052 #process_mr_push_options5053 when repository belongs to a snippet5054 with PersonalSnippet5055 returns an error message5056 with ProjectSnippet5057 returns an error message5058 #merge_request_urls5059 when repository belongs to a snippet5060 with PersonalSnippet5061 returns an empty array5062 with ProjectSnippet5063 returns an empty array5064Clusters::Kubernetes::CreateOrUpdateNamespaceService#execute5065 group clusters5066 when kubernetes namespace is not persisted5067 behaves like successful creation of kubernetes namespace5068 creates a Clusters::KubernetesNamespace5069 creates project service account and namespace5070 configures kubernetes token5071 without environment5072 creates project service account and namespace5073 project clusters5074 when kubernetes namespace is not persisted5075 behaves like successful creation of kubernetes namespace5076 creates a Clusters::KubernetesNamespace5077 creates project service account and namespace5078 configures kubernetes token5079 without environment5080 creates project service account and namespace5081 when there is a Kubernetes Namespace associated5082 does not create any Clusters::KubernetesNamespace5083 creates project service account5084 updates Clusters::KubernetesNamespace5085RuboCop::Cop::Gitlab::MarkUsedFeatureFlags5086 # order random5087 self.limit_feature_flag_for_override = :foo5088 sets the flag as used5089 use_rugged? method5090 a string feature flag5091 sets the flag as used5092 a symbol feature flag5093 sets the flag as used5094 an interpolated string feature flag with a string prefix5095 sets the flag as used5096 an interpolated symbol feature flag with a string prefix5097 sets the flag as used5098 an interpolated string feature flag with a string prefix and suffix5099 sets the flag as used5100 a dynamic string feature flag as a variable5101 sets the flag as used5102 an integer feature flag5103 sets the flag as used5104 Feature.disabled? method5105 a string feature flag5106 sets the flag as used5107 a symbol feature flag5108 sets the flag as used5109 an interpolated string feature flag with a string prefix5110 sets the flag as used5111 an interpolated symbol feature flag with a string prefix5112 sets the flag as used5113 a string with a "/" in it5114 sets the flag as used5115 an interpolated string feature flag with a string prefix and suffix5116 sets the flag as used5117 a dynamic string feature flag as a variable5118 sets the flag as used5119 an integer feature flag5120 sets the flag as used5121 ROUTING_FEATURE_FLAG = :foo5122 sets the flag as used5123 Worker `deduplicate` method5124 sets the flag as used5125 sets the flag as used5126 YamlProcessor::FeatureFlags.enabled? method5127 a string feature flag5128 sets the flag as used5129 a symbol feature flag5130 sets the flag as used5131 an interpolated string feature flag with a string prefix5132 sets the flag as used5133 an interpolated symbol feature flag with a string prefix5134 sets the flag as used5135 a string with a "/" in it5136 sets the flag as used5137 an interpolated string feature flag with a string prefix and suffix5138 sets the flag as used5139 a dynamic string feature flag as a variable5140 sets the flag as used5141 an integer feature flag5142 sets the flag as used5143 push_frontend_feature_flag method5144 a string feature flag5145 sets the flag as used5146 a symbol feature flag5147 sets the flag as used5148 an interpolated string feature flag with a string prefix5149 sets the flag as used5150 an interpolated symbol feature flag with a string prefix5151 sets the flag as used5152 a string with a "/" in it5153 sets the flag as used5154 an interpolated string feature flag with a string prefix and suffix5155 sets the flag as used5156 a dynamic string feature flag as a variable5157 sets the flag as used5158 an integer feature flag5159 sets the flag as used5160 self.limit_feature_flag = :foo5161 sets the flag as used5162 Worker `data_consistency` method5163 sets the flag as used5164 sets the flag as used5165 Feature::Gitaly.disabled? method5166 a string feature flag5167 sets the flag as used5168 a symbol feature flag5169 sets the flag as used5170 an interpolated string feature flag with a string prefix5171 sets the flag as used5172 an interpolated symbol feature flag with a string prefix5173 sets the flag as used5174 an interpolated string feature flag with a string prefix and suffix5175 sets the flag as used5176 a dynamic string feature flag as a variable5177 sets the flag as used5178 an integer feature flag5179 sets the flag as used5180 Feature::Gitaly.enabled? method5181 a string feature flag5182 sets the flag as used5183 a symbol feature flag5184 sets the flag as used5185 an interpolated string feature flag with a string prefix5186 sets the flag as used5187 an interpolated symbol feature flag with a string prefix5188 sets the flag as used5189 an interpolated string feature flag with a string prefix and suffix5190 sets the flag as used5191 a dynamic string feature flag as a variable5192 sets the flag as used5193 an integer feature flag5194 sets the flag as used5195 Feature.enabled? method5196 a string feature flag5197 sets the flag as used5198 a symbol feature flag5199 sets the flag as used5200 an interpolated string feature flag with a string prefix5201 sets the flag as used5202 an interpolated symbol feature flag with a string prefix5203 sets the flag as used5204 a string with a "/" in it5205 sets the flag as used5206 an interpolated string feature flag with a string prefix and suffix5207 sets the flag as used5208 a dynamic string feature flag as a variable5209 sets the flag as used5210 an integer feature flag5211 sets the flag as used5212 FEATURE_FLAG = :foo5213 sets the flag as used5214 with the experiment method5215 a string feature flag5216 sets the flag as used5217 a symbol feature flag5218 sets the flag as used5219 an interpolated string feature flag with a string prefix5220 sets the flag as used5221 an interpolated symbol feature flag with a string prefix5222 sets the flag as used5223 an interpolated string feature flag with a string prefix and suffix5224 sets the flag as used5225 a dynamic string feature flag as a variable5226 sets the flag as used5227 an integer feature flag5228 sets the flag as used5229Mutations::Releases::Update5230 #ready?5231 when released_at is included as an argument but is passed nil5232 raises a validation error5233 when milestones is included as an argument but is passed nil5234 raises a validation error5235 #resolve5236 when the current user has access to create releases5237 name5238 when a new name is provided5239 updates the name5240 behaves like no changes to the release except for the5241 does not change other release properties5242 with protected tag5243 when user has access to the protected tag5244 does not have errors5245 when user does not have access to the protected tag5246 has an access error5247 when nil is provided5248 updates the name to be the tag name5249 behaves like no changes to the release except for the5250 does not change other release properties5251 description5252 when a new description is provided5253 updates the description5254 behaves like no changes to the release except for the5255 does not change other release properties5256 when nil is provided5257 updates the description to nil5258 behaves like no changes to the release except for the5259 does not change other release properties5260 released_at5261 when a new released_at is provided5262 updates the released_at5263 behaves like no changes to the release except for the5264 does not change other release properties5265 milestones5266 when a new set of milestones is provided provided5267 updates the milestone associations5268 behaves like no changes to the release except for the5269 does not change other release properties5270 when an empty array is provided5271 removes all milestone associations5272 behaves like no changes to the release except for the5273 does not change other release properties5274 when a non-existent milestone title is provided5275 behaves like validation error with message5276 returns the updated release as nil5277 returns a validation error5278 when a milestone title from a different project is provided5279 behaves like validation error with message5280 returns the updated release as nil5281 returns a validation error5282 validation5283 when no updated fields are provided5284 behaves like validation error with message5285 returns the updated release as nil5286 returns a validation error5287 when the tag does not exist5288 behaves like validation error with message5289 returns the updated release as nil5290 returns a validation error5291 when the project does not exist5292 raises an error5293 when the current user doesn't have access to update releases5294 raises an error5295Labels::AvailableLabelsService5296 #find_or_create_by_titles5297 when parent is a project5298 when a user is not a project member5299 returns only relevant label ids5300 when a user is a project member5301 creates new labels for not found titles5302 do not cause additional query for finding labels5303 when parent is a group5304 when a user is not a group member5305 returns only relevant label ids5306 when a user is a group member5307 creates new labels for not found titles5308 #filter_labels_ids_in_param5309 accepts a single id parameter5310 when parent is a project5311 returns only relevant label ids5312 returns labels in preserved order5313 when parent is a group5314 returns only relevant label ids5315 #available_labels5316 when parent is a project5317 returns only relevant labels5318 when parent is a group5319 returns only relevant labels5320ChronicDurationAttribute5321 when default value is not set5322 behaves like ChronicDurationAttribute reader5323 contains dynamically created reader method5324 outputs chronic duration formatted value5325 when value is set to nil5326 outputs nil5327 behaves like ChronicDurationAttribute writer5328 contains dynamically created writer method5329 parses chronic duration input5330 passes validation5331 when negative input is used5332 doesn't raise exception5333 doesn't change value5334 doesn't pass validation5335 when empty input is used5336 writes default value5337 passes validation5338 when nil input is used5339 writes default value5340 passes validation5341 doesn't raise exception5342 when default value is set5343 behaves like ChronicDurationAttribute reader5344 contains dynamically created reader method5345 outputs chronic duration formatted value5346 when value is set to nil5347 outputs nil5348 behaves like ChronicDurationAttribute writer5349 contains dynamically created writer method5350 parses chronic duration input5351 passes validation5352 when negative input is used5353 doesn't raise exception5354 doesn't change value5355 doesn't pass validation5356 when empty input is used5357 writes default value5358 passes validation5359 when nil input is used5360 writes default value5361 passes validation5362 doesn't raise exception5363ChronicDurationAttribute - reader5364 doesn't contain dynamically created writer method5365 behaves like ChronicDurationAttribute reader5366 contains dynamically created reader method5367 outputs chronic duration formatted value5368 when value is set to nil5369 outputs nil5370Gitlab5371 delegates root to GitlabEdition5372 delegates extensions to GitlabEdition5373 delegates ee? to GitlabEdition5374 delegates jh? to GitlabEdition5375 delegates ee to GitlabEdition5376 delegates jh to GitlabEdition5377 .revision5378 when a REVISION file exists5379 returns the actual Git revision5380 memoizes the revision5381 when no REVISION file exist5382 when the Git command succeeds5383 returns the actual Git revision5384 when the Git command fails5385 returns "Unknown"5386 .com?5387 is true when GITLAB_SIMULATE_SAAS is true and in development5388 is false when GITLAB_SIMULATE_SAAS is true and in test5389 when not simulating SaaS5390 is true when on https://gitlab.com5391 is true when on https://staging.gitlab.com5392 is true when on other gitlab subdomain5393 is true when on other gitlab subdomain with hyphen5394 is false when not on GitLab.com5395 .com5396 when on GitLab.com5397 is expected to equal true5398 when not on GitLab.com5399 is expected to be nil5400 .staging?5401 is false when on https://gitlab.com5402 is true when on https://staging.gitlab.com5403 is false when not on staging5404 .canary?5405 is true when CANARY env var is set to true5406 is false when CANARY env var is set to false5407 .com_and_canary?5408 is true when on .com and canary5409 is false when on .com but not on canary5410 .com_but_not_canary?5411 is false when on .com and canary5412 is true when on .com but not on canary5413 .org_or_com?5414 is true when on .com5415 is true when org5416 is false when not dev, org or com5417 .simulate_com?5418 when GITLAB_SIMULATE_SAAS is true5419 is false when test env5420 is true when dev env5421 is false when env is not dev5422 when GITLAB_SIMULATE_SAAS is false5423 is false when test env5424 is false when dev env5425 is false when env is not dev or test5426 .dev_or_test_env?5427 is true when test env5428 is true when dev env5429 is false when env is not dev or test5430 .http_proxy_env?5431 returns true when lower case https5432 returns true when upper case https5433 returns true when lower case http5434 returns true when upper case http5435 returns false when not set5436 .maintenance_mode?5437 returns true when maintenance mode is enabled5438 returns false when maintenance mode is disabled5439 returns false when maintenance mode column is not present5440Ci::ResetSkippedJobsService5441 # order random5442 with same-stage needs5443 marks subsequent skipped jobs as processable5444 with a stage-dag mixed pipeline5445 marks subsequent skipped jobs as processable5446 when executed by a different user than the original owner5447 reassigns jobs with updated statuses to the retryer5448 with stage-dag mixed pipeline with some same-stage needs5449 marks subsequent skipped jobs as processable5450Gitlab::Workhorse5451 .send_git_archive5452 sets the header correctly5453 when archive caching is disabled5454 tells workhorse not to use the cache5455 when the repository doesn't have an archive file path5456 raises an error5457 .send_git_patch5458 sets the header correctly5459 .channel_websocket5460 without ca_pem5461 is expected to eq {"Channel"=>{"Header"=>{"Authorization"=>["Token x"]}, "MaxSessionTime"=>600, "Subprotocols"=>["foo"], "Url"=>"wss://example.com/terminal.ws"}}5462 with ca_pem5463 is expected to eq {"Channel"=>{"CAPem"=>"foo", "Header"=>{"Authorization"=>["Token x"]}, "MaxSessionTime"=>600, "Subprotocols"=>["foo"], "Url"=>"wss://example.com/terminal.ws"}}5464 .send_git_diff5465 sets the header correctly5466 #verify_api_request!5467 accepts a correct header5468 raises an error when the header is not set5469 raises an error when the header is not signed5470 raises an error when the header is signed with the wrong key5471 raises an error when the issuer is incorrect5472 .git_http_ok5473 is expected to include {:GL_ID => "user-1127", :GL_USERNAME => "user444", :GL_REPOSITORY => "project-659", :ShowAllRefs => false}5474 includes a Repository param5475 when the repo_type is a wiki5476 is expected to include {:GL_ID => "user-1129", :GL_USERNAME => "user446", :GL_REPOSITORY => "wiki-659", :ShowAllRefs => false}5477 when git_upload_pack action is passed5478 is expected to include {:GitalyServer => {:call_metadata => {"gitaly-feature-enforce-requests-limits" => "true", "user_id" => "user-1130", "username" => "user447"}, :address => "unix:tmp/tests/gitaly/praefect.socket", :token => "secret"}}5479 show_all_refs enabled5480 is expected to include {:ShowAllRefs => true}5481 when a feature flag is set for a single project5482 sets the flag to true for that project5483 sets the flag to false for other projects5484 sets the flag to false when there is no project5485 when git_receive_pack action is passed5486 is expected to include {:GitalyServer => {:call_metadata => {"gitaly-feature-enforce-requests-limits" => "true", "user_id" => "user-1137", "username" => "user453"}, :address => "unix:tmp/tests/gitaly/praefect.socket", :token => "secret"}}5487 when info_refs action is passed5488 is expected to include {:GitalyServer => {:call_metadata => {"gitaly-feature-enforce-requests-limits" => "true", "user_id" => "user-1138", "username" => "user454"}, :address => "unix:tmp/tests/gitaly/praefect.socket", :token => "secret"}}5489 show_all_refs enabled5490 is expected to include {:ShowAllRefs => true}5491 when action passed is not supported by Gitaly5492 is expected to raise Exception with "Unsupported action: download"5493 when receive_max_input_size has been updated5494 returns custom git config5495 when receive_max_input_size is empty5496 returns an empty git config5497 when remote_ip is available in the application context5498 includes a RemoteIP params5499 when remote_ip is not available in the application context5500 does not include RemoteIP params5501 .set_key_and_notify5502 when we set a new key5503 behaves like set and notify5504 set and return the same value5505 set and notify5506 when we set an existing key5507 and overwrite5508 behaves like set and notify5509 set and return the same value5510 set and notify5511 and do not overwrite5512 try to set but return the previous value5513 does not notify5514 .detect_content_type5515 returns array setting detect content type in workhorse5516 .send_git_blob5517 sets the header correctly5518 .send_url5519 sets the header correctly5520 .send_scaled_image5521 sets the header correctly5522 .send_dependency5523 sets the header correctly5524 .send_git_snapshot5525 sets the header correctly5526ReactiveCaching5527 #with_reactive_cache5528 when cache is empty5529 is expected to be nil5530 updates the cache lifespan5531 behaves like reactive worker call5532 performs caching with correct worker5533 behaves like reactive worker call5534 performs caching with correct worker5535 when the cache is full5536 behaves like a cacheable value5537 is expected to eq 45538 does not enqueue a background worker5539 updates the cache lifespan5540 and expired5541 is expected to be nil5542 behaves like reactive worker call5543 performs caching with correct worker5544 behaves like reactive worker call5545 performs caching with correct worker5546 when the cache contains non-nil but blank value5547 behaves like a cacheable value5548 is expected to eq false5549 does not enqueue a background worker5550 updates the cache lifespan5551 and expired5552 is expected to be nil5553 behaves like reactive worker call5554 performs caching with correct worker5555 behaves like reactive worker call5556 performs caching with correct worker5557 when the cache contains nil value5558 behaves like a cacheable value5559 is expected to eq nil5560 does not enqueue a background worker5561 updates the cache lifespan5562 and expired5563 is expected to be nil5564 behaves like reactive worker call5565 performs caching with correct worker5566 behaves like reactive worker call5567 performs caching with correct worker5568 #with_reactive_cache_set5569 calls with_reactive_cache5570 data returned5571 saves keys in set5572 returns the data5573 .reactive_cache_worker_finder5574 with default reactive_cache_worker_finder5575 calls the activerecord find_by method5576 with custom reactive_cache_worker_finder5577 overrides the default reactive_cache_worker_finder5578 #clear_reactive_cache!5579 is expected to be nil5580 is expected to be falsy5581 #exclusively_update_reactive_cache!5582 when the lease is free and lifetime is not exceeded5583 takes and releases the lease5584 enqueues a repeat worker5585 calls a reactive_cache_updated only once if content did not change on subsequent update5586 does not delete the value key5587 behaves like successful cache5588 caches the result of #calculate_reactive_cache5589 does not raise the exception5590 when :external_dependency cache5591 enqueues a repeat worker5592 when reactive_cache_hard_limit is set5593 when cache size is over the overridden limit5594 raises ExceededReactiveCacheLimit exception and does not cache new data5595 when reactive_cache_limit_enabled? is overridden to return false5596 behaves like successful cache5597 caches the result of #calculate_reactive_cache5598 does not raise the exception5599 when cache size is within the overridden limit5600 behaves like successful cache5601 caches the result of #calculate_reactive_cache5602 does not raise the exception5603 and #calculate_reactive_cache raises an exception5604 leaves the cache untouched5605 does not enqueue a repeat worker5606 when lifetime is exceeded5607 skips the calculation5608 deletes the value key5609 when the lease is already taken5610 skips the calculation5611 default options5612 is expected to be a kind of ActiveSupport::Duration5613 is expected to be a kind of ActiveSupport::Duration5614 is expected to be a kind of ActiveSupport::Duration5615 is expected to respond to #call5616 is expected to be nil5617 is expected to respond to #call5618 classes including this concern5619 sets reactive_cache_work_type5620AppearancesHelper5621 pwa icon scaled5622 returns path of maskable logo5623 with custom icon5624 behaves like gets icon path5625 returns path of icon5626 behaves like gets icon path5627 returns path of icon5628 with default icon5629 behaves like gets icon path5630 returns path of icon5631 behaves like gets icon path5632 returns path of icon5633 with wrong input5634 behaves like gets icon path5635 returns path of icon5636 when path is append to root5637 appends root and path5638 #appearance_pwa_name5639 returns the default value5640 returns the customized value5641 #appearance_pwa_short_name5642 returns the default value5643 returns the customized value5644 #appearance_pwa_description5645 returns the default value5646 returns the customized value5647 .current_appearance5648 memoizes empty appearance5649 memoizes custom appearance5650 #header_message5651 returns nil when header message field is not set5652 when header message is set5653 includes current message5654 #footer_message5655 returns nil when footer message field is not set5656 when footer message is set5657 includes current message5658 #brand_image5659 when there is a logo5660 returns a path5661 when there is no associated upload5662 falls back to using the original path5663 when there is no logo5664 returns path of GitLab logo5665 when there is a title5666 returns the title5667 when there is no title5668 returns the default title5669 #brand_image_path5670 with a custom logo5671 returns path of custom logo5672 with no custom logo5673 returns path of GitLab logo5674 #brand_header_logo5675 renders shared/logo by default5676 with header logo5677 renders image tag5678 with add_gitlab_white_text option5679 renders shared/logo_with_white_text partial5680 with add_gitlab_black_text option5681 renders shared/logo_with_black_text partial5682 #brand_title5683 returns the default title when no appearance is present5684 #default_brand_title5685 returns the default title5686Projects::ContainerRepository::Gitlab::CleanupTagsService5687 # order random5688 #execute5689 with several tags pages5690 behaves like when regex matching everything is specified5691 behaves like removing the expected tags5692 removes the expected tags5693 with deprecated name_regex param5694 behaves like removing the expected tags5695 removes the expected tags5696 behaves like when regex matching everything is specified and latest is not kept5697 behaves like removing the expected tags5698 removes the expected tags5699 behaves like when delete regex matching specific tags is used5700 behaves like removing the expected tags5701 removes the expected tags5702 behaves like when delete regex matching specific tags is used with overriding allow regex5703 behaves like removing the expected tags5704 removes the expected tags5705 with name_regex_delete overriding deprecated name_regex5706 behaves like removing the expected tags5707 removes the expected tags5708 behaves like with allow regex value5709 behaves like removing the expected tags5710 removes the expected tags5711 behaves like when keeping only N tags5712 sorts tags by date5713 behaves like when not keeping N tags5714 does not sort tags by date5715 when removing keeping only 35716 behaves like not removing anything5717 does not remove anything5718 behaves like when removing older than 1 day5719 behaves like removing the expected tags5720 removes the expected tags5721 behaves like when combining all parameters5722 behaves like removing the expected tags5723 removes the expected tags5724 behaves like when running a container_expiration_policy5725 with valid container_expiration_policy param5726 removes the expected tags5727 with a timeout5728 removes the first few pages5729 when disable_timeout is set to true5730 does not check if it timed out5731 behaves like when regex matching everything is specified5732 behaves like removing the expected tags5733 removes the expected tags5734 with deprecated name_regex param5735 behaves like removing the expected tags5736 removes the expected tags5737 with a single tags page5738 behaves like when regex matching everything is specified5739 behaves like removing the expected tags5740 removes the expected tags5741 with deprecated name_regex param5742 behaves like removing the expected tags5743 removes the expected tags5744 behaves like when delete regex matching specific tags is used5745 behaves like removing the expected tags5746 removes the expected tags5747 behaves like when delete regex matching specific tags is used with overriding allow regex5748 behaves like removing the expected tags5749 removes the expected tags5750 with name_regex_delete overriding deprecated name_regex5751 behaves like removing the expected tags5752 removes the expected tags5753 behaves like with allow regex value5754 behaves like removing the expected tags5755 removes the expected tags5756 behaves like when keeping only N tags5757 sorts tags by date5758 behaves like when not keeping N tags5759 does not sort tags by date5760 behaves like when removing keeping only 35761 behaves like removing the expected tags5762 removes the expected tags5763 behaves like when removing older than 1 day5764 behaves like removing the expected tags5765 removes the expected tags5766 behaves like when combining all parameters5767 behaves like removing the expected tags5768 removes the expected tags5769 behaves like when running a container_expiration_policy5770 with valid container_expiration_policy param5771 removes the expected tags5772 with no tags page5773 is expected to eq {:before_delete_size=>0, :deleted=>[], :deleted_size=>0, :original_size=>0, :status=>:success}5774SshHostKey5775 .primary_key5776 returns a symbol5777 .find_by5778 accepts a string key5779 accepts a symbol key5780 #fingerprints5781 returns an array of indexed fingerprints when the cache is filled5782 returns an empty array when the cache is empty5783 #fingerprints5784 returns an array of indexed fingerprints when the cache is filled5785 returns an empty array when the cache is empty5786 when FIPS is enabled5787 only includes SHA256 fingerprint5788 #host_keys_changed?5789 known_hosts_a: "example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3UpyF2iLqy1d63M6k3jH1vuEnq/NWtE+orJe1Xn7JoRbduKd6zpsJ0JhBGWgcQK0ph0aGW5PcudzzBSc+SlYfCc4GTaxDtmj41hW0o72mNiuDW3oKXXShOiVRde2ZOquH8Z865jGiZIC8BI/bXZD29IGUih0hPu7Rjp70VYiE+35QRf/psD0Ddrz8QUIG3A/2dMzLI5F5ZORk3BIX2F3mJwJOvZxRhR/SqyphDMZ5eZ0EzqbFBCDE6HABWoz9ck8RBGLvCIggmDHj3FmMLcQGMDiy6wKp7QdnBtxjCP6vtE6YPUM223AqsWt+9NTtCfB8YdNAH7YcHHOR1FgtSk1x git@localhost\n@revoked other.example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLIp+4ciR2YO9f9rpldc7InNQw/TBUtcNbJ2XR0rr15/5ytz7YM16xXG0Qjx576PNSmqs4gbTrvTuFZak+v1Jx/9deHRq/yqp9f+tv33+iaJGCQCX/+OVY7aWgV2R9YsS7XQ4mnv4XlOTEssib/rGAIT+ATd/GcdYSEOO+dh4O09/6O/jIMGSeP+NNetgn1nPCnLOjrXFZUnUtNDi6EEKeIlrliJjSb7Jr4f7gjvZnv4RskWHHFo8FgAAqt0gOMT6EmKrnypBe2vLGSAXbtkXr01q6/DNPH+n9VA1LTV6v1KN/W5CN5tQV11wRSKiM8g5OEbi86VjJRi2sOuYoXQU1 git@localhost\n", known_hosts_b: "example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3UpyF2iLqy1d63M6k3jH1vuEnq/NWtE+orJe1Xn7JoRbduKd6zpsJ0JhBGWgcQK0ph0aGW5PcudzzBSc+SlYfCc4GTaxDtmj41hW0o72mNiuDW3oKXXShOiVRde2ZOquH8Z865jGiZIC8BI/bXZD29IGUih0hPu7Rjp70VYiE+35QRf/psD0Ddrz8QUIG3A/2dMzLI5F5ZORk3BIX2F3mJwJOvZxRhR/SqyphDMZ5eZ0EzqbFBCDE6HABWoz9ck8RBGLvCIggmDHj3FmMLcQGMDiy6wKp7QdnBtxjCP6vtE6YPUM223AqsWt+9NTtCfB8YdNAH7YcHHOR1FgtSk1x git@localhost\n@revoked other.example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLIp+4ciR2YO9f9rpldc7InNQw/TBUtcNbJ2XR0rr15/5ytz7YM16xXG0Qjx576PNSmqs4gbTrvTuFZak+v1Jx/9deHRq/yqp9f+tv33+iaJGCQCX/+OVY7aWgV2R9YsS7XQ4mnv4XlOTEssib/rGAIT+ATd/GcdYSEOO+dh4O09/6O/jIMGSeP+NNetgn1nPCnLOjrXFZUnUtNDi6EEKeIlrliJjSb7Jr4f7gjvZnv4RskWHHFo8FgAAqt0gOMT6EmKrnypBe2vLGSAXbtkXr01q6/DNPH+n9VA1LTV6v1KN/W5CN5tQV11wRSKiM8g5OEbi86VjJRi2sOuYoXQU1 git@localhost\nfoo\nbar\n", result: true5790 (normal)5791 is expected to eq true5792 (reversed)5793 is expected to eq true5794 known_hosts_a: "example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3UpyF2iLqy1d63M6k3jH1vuEnq/NWtE+orJe1Xn7JoRbduKd6zpsJ0JhBGWgcQK0ph0aGW5PcudzzBSc+SlYfCc4GTaxDtmj41hW0o72mNiuDW3oKXXShOiVRde2ZOquH8Z865jGiZIC8BI/bXZD29IGUih0hPu7Rjp70VYiE+35QRf/psD0Ddrz8QUIG3A/2dMzLI5F5ZORk3BIX2F3mJwJOvZxRhR/SqyphDMZ5eZ0EzqbFBCDE6HABWoz9ck8RBGLvCIggmDHj3FmMLcQGMDiy6wKp7QdnBtxjCP6vtE6YPUM223AqsWt+9NTtCfB8YdNAH7YcHHOR1FgtSk1x git@localhost\n@revoked other.example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLIp+4ciR2YO9f9rpldc7InNQw/TBUtcNbJ2XR0rr15/5ytz7YM16xXG0Qjx576PNSmqs4gbTrvTuFZak+v1Jx/9deHRq/yqp9f+tv33+iaJGCQCX/+OVY7aWgV2R9YsS7XQ4mnv4XlOTEssib/rGAIT+ATd/GcdYSEOO+dh4O09/6O/jIMGSeP+NNetgn1nPCnLOjrXFZUnUtNDi6EEKeIlrliJjSb7Jr4f7gjvZnv4RskWHHFo8FgAAqt0gOMT6EmKrnypBe2vLGSAXbtkXr01q6/DNPH+n9VA1LTV6v1KN/W5CN5tQV11wRSKiM8g5OEbi86VjJRi2sOuYoXQU1 git@localhost\n", known_hosts_b: "foo\n", result: true5795 (normal)5796 is expected to eq true5797 (reversed)5798 is expected to eq true5799 known_hosts_a: "example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3UpyF2iLqy1d63M6k3jH1vuEnq/NWtE+orJe1Xn7JoRbduKd6zpsJ0JhBGWgcQK0ph0aGW5PcudzzBSc+SlYfCc4GTaxDtmj41hW0o72mNiuDW3oKXXShOiVRde2ZOquH8Z865jGiZIC8BI/bXZD29IGUih0hPu7Rjp70VYiE+35QRf/psD0Ddrz8QUIG3A/2dMzLI5F5ZORk3BIX2F3mJwJOvZxRhR/SqyphDMZ5eZ0EzqbFBCDE6HABWoz9ck8RBGLvCIggmDHj3FmMLcQGMDiy6wKp7QdnBtxjCP6vtE6YPUM223AqsWt+9NTtCfB8YdNAH7YcHHOR1FgtSk1x git@localhost\n@revoked other.example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLIp+4ciR2YO9f9rpldc7InNQw/TBUtcNbJ2XR0rr15/5ytz7YM16xXG0Qjx576PNSmqs4gbTrvTuFZak+v1Jx/9deHRq/yqp9f+tv33+iaJGCQCX/+OVY7aWgV2R9YsS7XQ4mnv4XlOTEssib/rGAIT+ATd/GcdYSEOO+dh4O09/6O/jIMGSeP+NNetgn1nPCnLOjrXFZUnUtNDi6EEKeIlrliJjSb7Jr4f7gjvZnv4RskWHHFo8FgAAqt0gOMT6EmKrnypBe2vLGSAXbtkXr01q6/DNPH+n9VA1LTV6v1KN/W5CN5tQV11wRSKiM8g5OEbi86VjJRi2sOuYoXQU1 git@localhost\n", known_hosts_b: "", result: true5800 (normal)5801 is expected to eq true5802 (reversed)5803 is expected to eq true5804 known_hosts_a: "example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3UpyF2iLqy1d63M6k3jH1vuEnq/NWtE+orJe1Xn7JoRbduKd6zpsJ0JhBGWgcQK0ph0aGW5PcudzzBSc+SlYfCc4GTaxDtmj41hW0o72mNiuDW3oKXXShOiVRde2ZOquH8Z865jGiZIC8BI/bXZD29IGUih0hPu7Rjp70VYiE+35QRf/psD0Ddrz8QUIG3A/2dMzLI5F5ZORk3BIX2F3mJwJOvZxRhR/SqyphDMZ5eZ0EzqbFBCDE6HABWoz9ck8RBGLvCIggmDHj3FmMLcQGMDiy6wKp7QdnBtxjCP6vtE6YPUM223AqsWt+9NTtCfB8YdNAH7YcHHOR1FgtSk1x git@localhost\n@revoked other.example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLIp+4ciR2YO9f9rpldc7InNQw/TBUtcNbJ2XR0rr15/5ytz7YM16xXG0Qjx576PNSmqs4gbTrvTuFZak+v1Jx/9deHRq/yqp9f+tv33+iaJGCQCX/+OVY7aWgV2R9YsS7XQ4mnv4XlOTEssib/rGAIT+ATd/GcdYSEOO+dh4O09/6O/jIMGSeP+NNetgn1nPCnLOjrXFZUnUtNDi6EEKeIlrliJjSb7Jr4f7gjvZnv4RskWHHFo8FgAAqt0gOMT6EmKrnypBe2vLGSAXbtkXr01q6/DNPH+n9VA1LTV6v1KN/W5CN5tQV11wRSKiM8g5OEbi86VjJRi2sOuYoXQU1 git@localhost\n", known_hosts_b: nil, result: true5805 (normal)5806 is expected to eq true5807 (reversed)5808 is expected to eq true5809 known_hosts_a: "example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3UpyF2iLqy1d63M6k3jH1vuEnq/NWtE+orJe1Xn7JoRbduKd6zpsJ0JhBGWgcQK0ph0aGW5PcudzzBSc+SlYfCc4GTaxDtmj41hW0o72mNiuDW3oKXXShOiVRde2ZOquH8Z865jGiZIC8BI/bXZD29IGUih0hPu7Rjp70VYiE+35QRf/psD0Ddrz8QUIG3A/2dMzLI5F5ZORk3BIX2F3mJwJOvZxRhR/SqyphDMZ5eZ0EzqbFBCDE6HABWoz9ck8RBGLvCIggmDHj3FmMLcQGMDiy6wKp7QdnBtxjCP6vtE6YPUM223AqsWt+9NTtCfB8YdNAH7YcHHOR1FgtSk1x git@localhost\n@revoked other.example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLIp+4ciR2YO9f9rpldc7InNQw/TBUtcNbJ2XR0rr15/5ytz7YM16xXG0Qjx576PNSmqs4gbTrvTuFZak+v1Jx/9deHRq/yqp9f+tv33+iaJGCQCX/+OVY7aWgV2R9YsS7XQ4mnv4XlOTEssib/rGAIT+ATd/GcdYSEOO+dh4O09/6O/jIMGSeP+NNetgn1nPCnLOjrXFZUnUtNDi6EEKeIlrliJjSb7Jr4f7gjvZnv4RskWHHFo8FgAAqt0gOMT6EmKrnypBe2vLGSAXbtkXr01q6/DNPH+n9VA1LTV6v1KN/W5CN5tQV11wRSKiM8g5OEbi86VjJRi2sOuYoXQU1 git@localhost\n", known_hosts_b: "example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3UpyF2iLqy1d63M6k3jH1vuEnq/NWtE+orJe1Xn7JoRbduKd6zpsJ0JhBGWgcQK0ph0aGW5PcudzzBSc+SlYfCc4GTaxDtmj41hW0o72mNiuDW3oKXXShOiVRde2ZOquH8Z865jGiZIC8BI/bXZD29IGUih0hPu7Rjp70VYiE+35QRf/psD0Ddrz8QUIG3A/2dMzLI5F5ZORk3BIX2F3mJwJOvZxRhR/SqyphDMZ5eZ0EzqbFBCDE6HABWoz9ck8RBGLvCIggmDHj3FmMLcQGMDiy6wKp7QdnBtxjCP6vtE6YPUM223AqsWt+9NTtCfB8YdNAH7YcHHOR1FgtSk1x git@localhost\n@revoked other.example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLIp+4ciR2YO9f9rpldc7InNQw/TBUtcNbJ2XR0rr15/5ytz7YM16xXG0Qjx576PNSmqs4gbTrvTuFZak+v1Jx/9deHRq/yqp9f+tv33+iaJGCQCX/+OVY7aWgV2R9YsS7XQ4mnv4XlOTEssib/rGAIT+ATd/GcdYSEOO+dh4O09/6O/jIMGSeP+NNetgn1nPCnLOjrXFZUnUtNDi6EEKeIlrliJjSb7Jr4f7gjvZnv4RskWHHFo8FgAAqt0gOMT6EmKrnypBe2vLGSAXbtkXr01q6/DNPH+n9VA1LTV6v1KN/W5CN5tQV11wRSKiM8g5OEbi86VjJRi2sOuYoXQU1 git@localhost\n", result: false5810 (normal)5811 is expected to eq false5812 (reversed)5813 is expected to eq false5814 known_hosts_a: "@revoked other.example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLIp+4ciR2YO9f9rpldc7InNQw/TBUtcNbJ2XR0rr15/5ytz7YM16xXG0Qjx576PNSmqs4gbTrvTuFZak+v1Jx/9deHRq/yqp9f+tv33+iaJGCQCX/+OVY7aWgV2R9YsS7XQ4mnv4XlOTEssib/rGAIT+ATd/GcdYSEOO+dh4O09/6O/jIMGSeP+NNetgn1nPCnLOjrXFZUnUtNDi6EEKeIlrliJjSb7Jr4f7gjvZnv4RskWHHFo8FgAAqt0gOMT6EmKrnypBe2vLGSAXbtkXr01q6/DNPH+n9VA1LTV6v1KN/W5CN5tQV11wRSKiM8g5OEbi86VjJRi2sOuYoXQU1 git@localhost\nexample.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3UpyF2iLqy1d63M6k3jH1vuEnq/NWtE+orJe1Xn7JoRbduKd6zpsJ0JhBGWgcQK0ph0aGW5PcudzzBSc+SlYfCc4GTaxDtmj41hW0o72mNiuDW3oKXXShOiVRde2ZOquH8Z865jGiZIC8BI/bXZD29IGUih0hPu7Rjp70VYiE+35QRf/psD0Ddrz8QUIG3A/2dMzLI5F5ZORk3BIX2F3mJwJOvZxRhR/SqyphDMZ5eZ0EzqbFBCDE6HABWoz9ck8RBGLvCIggmDHj3FmMLcQGMDiy6wKp7QdnBtxjCP6vtE6YPUM223AqsWt+9NTtCfB8YdNAH7YcHHOR1FgtSk1x git@localhost\n", known_hosts_b: "example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3UpyF2iLqy1d63M6k3jH1vuEnq/NWtE+orJe1Xn7JoRbduKd6zpsJ0JhBGWgcQK0ph0aGW5PcudzzBSc+SlYfCc4GTaxDtmj41hW0o72mNiuDW3oKXXShOiVRde2ZOquH8Z865jGiZIC8BI/bXZD29IGUih0hPu7Rjp70VYiE+35QRf/psD0Ddrz8QUIG3A/2dMzLI5F5ZORk3BIX2F3mJwJOvZxRhR/SqyphDMZ5eZ0EzqbFBCDE6HABWoz9ck8RBGLvCIggmDHj3FmMLcQGMDiy6wKp7QdnBtxjCP6vtE6YPUM223AqsWt+9NTtCfB8YdNAH7YcHHOR1FgtSk1x git@localhost\n@revoked other.example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLIp+4ciR2YO9f9rpldc7InNQw/TBUtcNbJ2XR0rr15/5ytz7YM16xXG0Qjx576PNSmqs4gbTrvTuFZak+v1Jx/9deHRq/yqp9f+tv33+iaJGCQCX/+OVY7aWgV2R9YsS7XQ4mnv4XlOTEssib/rGAIT+ATd/GcdYSEOO+dh4O09/6O/jIMGSeP+NNetgn1nPCnLOjrXFZUnUtNDi6EEKeIlrliJjSb7Jr4f7gjvZnv4RskWHHFo8FgAAqt0gOMT6EmKrnypBe2vLGSAXbtkXr01q6/DNPH+n9VA1LTV6v1KN/W5CN5tQV11wRSKiM8g5OEbi86VjJRi2sOuYoXQU1 git@localhost\n", result: false5815 (normal)5816 is expected to eq false5817 (reversed)5818 is expected to eq false5819 known_hosts_a: "example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3UpyF2iLqy1d63M6k3jH1vuEnq/NWtE+orJe1Xn7JoRbduKd6zpsJ0JhBGWgcQK0ph0aGW5PcudzzBSc+SlYfCc4GTaxDtmj41hW0o72mNiuDW3oKXXShOiVRde2ZOquH8Z865jGiZIC8BI/bXZD29IGUih0hPu7Rjp70VYiE+35QRf/psD0Ddrz8QUIG3A/2dMzLI5F5ZORk3BIX2F3mJwJOvZxRhR/SqyphDMZ5eZ0EzqbFBCDE6HABWoz9ck8RBGLvCIggmDHj3FmMLcQGMDiy6wKp7QdnBtxjCP6vtE6YPUM223AqsWt+9NTtCfB8YdNAH7YcHHOR1FgtSk1x git@localhost\n@revoked other.example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLIp+4ciR2YO9f9rpldc7InNQw/TBUtcNbJ2XR0rr15/5ytz7YM16xXG0Qjx576PNSmqs4gbTrvTuFZak+v1Jx/9deHRq/yqp9f+tv33+iaJGCQCX/+OVY7aWgV2R9YsS7XQ4mnv4XlOTEssib/rGAIT+ATd/GcdYSEOO+dh4O09/6O/jIMGSeP+NNetgn1nPCnLOjrXFZUnUtNDi6EEKeIlrliJjSb7Jr4f7gjvZnv4RskWHHFo8FgAAqt0gOMT6EmKrnypBe2vLGSAXbtkXr01q6/DNPH+n9VA1LTV6v1KN/W5CN5tQV11wRSKiM8g5OEbi86VjJRi2sOuYoXQU1 git@localhost\nfoo\nbar\n", known_hosts_b: "foo\n", result: true5820 (normal)5821 is expected to eq true5822 (reversed)5823 is expected to eq true5824 known_hosts_a: "", known_hosts_b: "", result: false5825 (normal)5826 is expected to eq false5827 (reversed)5828 is expected to eq false5829 known_hosts_a: nil, known_hosts_b: nil, result: false5830 (normal)5831 is expected to eq false5832 (reversed)5833 is expected to eq false5834 known_hosts_a: "", known_hosts_b: nil, result: false5835 (normal)5836 is expected to eq false5837 (reversed)5838 is expected to eq false5839 #calculate_reactive_cache5840 writes the hostname to STDIN5841 successful key scan5842 stores the cleaned known_hosts data5843 failed key scan (exit code 1)5844 returns a generic error5845 failed key scan (exit code 0)5846 returns a generic error5847 DNS rebinding protection enabled5848 sends an address as well as hostname to ssh-keyscan5849 URL validation5850 when local requests are not allowed5851 forbids scanning localhost5852 when local requests are allowed5853 permits scanning localhost5854Ci::BuildMetadata5855 is expected to belong to build required: false5856 is expected to belong to project required: false5857 behaves like having unique enum values5858 has unique values in "timeout_source"5859 #update_timeout_state5860 when job, project and runner timeouts are set5861 when job timeout is lower then runner timeout5862 behaves like sets timeout5863 sets project_timeout_source5864 sets project timeout5865 when runner timeout is lower then job timeout5866 behaves like sets timeout5867 sets project_timeout_source5868 sets project timeout5869 when job, project timeout values are set and runner is assigned5870 when runner has no timeout set5871 behaves like sets timeout5872 sets project_timeout_source5873 sets project timeout5874 when only job and project timeouts are defined5875 when job timeout is lower then project timeout5876 behaves like sets timeout5877 sets project_timeout_source5878 sets project timeout5879 when project timeout is lower then job timeout5880 behaves like sets timeout5881 sets project_timeout_source5882 sets project timeout5883 when only project and runner timeouts are defined5884 when runner timeout is lower then project timeout5885 behaves like sets timeout5886 sets project_timeout_source5887 sets project timeout5888 when project timeout is lower then runner timeout5889 behaves like sets timeout5890 sets project_timeout_source5891 sets project timeout5892 when only job and runner timeouts are defined5893 when runner timeout is lower them job timeout5894 behaves like sets timeout5895 sets project_timeout_source5896 sets project timeout5897 when job timeout is lower them runner timeout5898 behaves like sets timeout5899 sets project_timeout_source5900 sets project timeout5901 when only job timeout is defined and runner is assigned, but has no timeout set5902 behaves like sets timeout5903 sets project_timeout_source5904 sets project timeout5905 when only one timeout value is defined5906 when only project timeout value is defined5907 behaves like sets timeout5908 sets project_timeout_source5909 sets project timeout5910 validations5911 when attributes are valid5912 returns no errors5913 when data is invalid5914 returns errors5915 set_cancel_gracefully5916 sets cancel_gracefully5917 returns false5918 loose foreign key on ci_builds_metadata.project_id5919 behaves like cleanup by a loose foreign key5920 cleans up (delete or nullify) the model5921 #enable_debug_trace!5922 when debug_trace_enabled is false5923 sets debug_trace_enabled to true5924 when debug_trace_enabled is true5925 does not set debug_trace_enabled to true5926 partitioning5927 with job5928 copies the partition_id from job5929 when it is already set5930 does not change the partition_id value5931 without job5932 is expected to validate that :partition_id cannot be empty/falsy5933 does not change the partition_id value5934 jsonb fields serialization5935 changing other fields does not change config_options5936 accessing config_options does not change it5937Gitlab::Redis::RateLimiting5938 behaves like redis_shared_examples5939 .config_file_name5940 when there is no config file anywhere5941 is expected to be nil5942 and there is a global env override5943 is expected to eq "global override"5944 and there is an instance specific config file5945 is expected to eq "/tmp/d20230419-326-10b699/config/redis.rate_limiting.yml"5946 returns a path that exists5947 and there is a specific env override5948 is expected to eq "instance specific override"5949 .store5950 with old format5951 behaves like redis store5952 instantiates Redis::Store5953 with the namespace5954 uses specified namespace5955 with new format5956 behaves like redis store5957 instantiates Redis::Store5958 with the namespace5959 uses specified namespace5960 .params5961 withstands mutation5962 when url contains unix socket reference5963 with old format5964 returns path key instead5965 with new format5966 returns path key instead5967 when url is host based5968 with old format5969 returns hash with host, port, db, and password5970 with new format5971 rails_env: "development", host: "development-host"5972 returns hash with host, port, db, and password5973 rails_env: "test", host: "test-host"5974 returns hash with host, port, db, and password5975 rails_env: "production", host: "production-host"5976 returns hash with host, port, db, and password5977 with redis cluster format5978 rails_env: "development", host: "development-master"5979 returns hash with cluster and password5980 rails_env: "test", host: "test-master"5981 returns hash with cluster and password5982 rails_env: "production", host: "production-master"5983 returns hash with cluster and password5984 .url5985 withstands mutation5986 when yml file with env variable5987 reads redis url from env variable5988 .version5989 returns a version5990 .with5991 when running on single-threaded runtime5992 instantiates a connection pool with size 55993 when running on multi-threaded runtime5994 instantiates a connection pool with a size based on the concurrency of the worker5995 when there is no config at all5996 can run an empty block5997 #db5998 with old format5999 returns the correct db6000 with new format6001 returns the correct db6002 with cluster-mode6003 returns the correct db6004 #sentinels6005 when sentinels are defined6006 rails_env: "development", hosts: ["development-replica1", "development-replica2"]6007 returns an array of hashes with host and port keys6008 rails_env: "test", hosts: ["test-replica1", "test-replica2"]6009 returns an array of hashes with host and port keys6010 rails_env: "production", hosts: ["production-replica1", "production-replica2"]6011 returns an array of hashes with host and port keys6012 when sentinels are not defined6013 returns nil6014 when cluster is defined6015 returns nil6016 #sentinels?6017 when sentinels are defined6018 returns true6019 when sentinels are not defined6020 is expected to eq nil6021 when cluster is defined6022 returns false6023 #raw_config_hash6024 returns old-style single url config in a hash6025 returns cluster config without url key in a hash6026 #fetch_config6027 raises an exception when the config file contains invalid yaml6028 has a value for the legacy default URL6029 when redis.yml exists6030 uses config/redis.yml6031 when no config file exsits6032 returns nil6033 but resque.yml exists6034 returns the config from resque.yml6035 .config_file_name6036 and there is a global env override6037 is expected to eq "global override"6038 and Cache has a different config file6039 is expected to eq "fallback config file"6040 #fetch_config6041 when redis.yml exists6042 when the fallback has a redis.yml entry6043 is expected to eq {"fallback redis.yml"=>123}6044 and an instance config file exists6045 is expected to eq {"instance specific file"=>456}6046 and the instance has a redis.yml entry6047 is expected to eq {"instance redis.yml"=>789}6048 when no redis config file exsits6049 returns nil6050 when resque.yml exists6051 returns the config from resque.yml6052 .cache_store6053 uses the CACHE_NAMESPACE namespace6054IncidentManagement::ProcessAlertWorkerV26055 # order random6056 #perform6057 with valid alert6058 behaves like creates issue successfully6059 creates an issue6060 updates AlertManagement::Alert#issue_id6061 does not write a warning to log6062 behaves like an idempotent worker6063 is labeled as idempotent6064 performs multiple times sequentially without raising an exception6065 does not create a second issue6066 when alert cannot be updated6067 updates AlertManagement::Alert#issue_id6068 logs a warning6069 prometheus alert6070 behaves like creates issue successfully6071 creates an issue6072 updates AlertManagement::Alert#issue_id6073 does not write a warning to log6074 behaves like an idempotent worker6075 is labeled as idempotent6076 performs multiple times sequentially without raising an exception6077 does not create a second issue6078 with invalid alert6079 does not create issues6080DraftNotes::CreateService6081 creates a simple draft note6082 tracks the start event when the draft is persisted6083 does not track the start event when the draft is not persisted6084 cannot resolve when there is nothing to resolve6085 creates a draft note with a position in a diff6086 in a thread6087 creates a draft note with discussion_id6088 creates a draft that resolves the thread6089 diff highlight cache clearing6090 when diff file is unfolded and it is not a reply6091 clears diff highlighting cache6092 when diff file is not unfolded and it is not a reply6093 clears diff highlighting cache6094Analytics::CycleAnalytics::Aggregation6095 associations6096 is expected to belong to namespace required: true6097 validations6098 is expected not to validate that :namespace cannot be empty/falsy6099 is expected not to validate that :enabled cannot be empty/falsy6100 validates the array length of incremental_runtimes_in_seconds6101 validates the array length of incremental_processed_records6102 validates the array length of full_runtimes_in_seconds6103 validates the array length of full_processed_records6104 behaves like value stream analytics namespace models6105 when ProjectNamespace is given6106 is valid6107 when Namespace is given6108 fails6109 attribute updater methods6110 #cursor_for6111 returns empty cursors6112 when cursor is not empty6113 returns the cursor values6114 #consistency_check_cursor_for6115 returns empty cursor6116 returns the cursor value for IssueStageEvent6117 returns the cursor value for MergeRequestStageEvent6118 #refresh_last_run6119 updates the run_at column6120 #reset_full_run_cursors6121 resets all full run cursors to nil6122 #set_cursor6123 sets the cursor values for the given mode6124 #set_stats6125 appends stats to the runtime and processed_records attributes6126 #safe_create_for_namespace6127 creates the aggregation record6128 when non top-level group is given6129 creates the aggregation record for the top-level group6130 when the record is already present6131 does nothing6132 when the aggregation was disabled for some reason6133 re-enables the aggregation6134 #load_batch6135 loads records in priority order6136 when loading batch for last_consistency_check_updated_at6137 loads records in priority order6138 #estimated_next_run_at6139 when aggregation was not yet executed for the given group6140 is expected to eq nil6141 when aggregation was already run6142 returns the duration between the previous run timestamp and the earliest last_incremental_run_at6143 when the aggregation has persisted previous runtimes6144 adds the runtime to the estimation6145 when no records are present in the DB6146 returns nil6147 when only one aggregation record present6148 returns the minutes until the next aggregation6149Clusters::KubernetesNamespaceFinder6150 #execute6151 cluster supports separate namespaces per environment6152 no persisted namespace is present6153 is expected to be nil6154 a namespace with an environment is present6155 environment matches6156 is expected to eq #<Clusters::KubernetesNamespace id: 12, cluster_id: 85, project_id: 679, cluster_project_id: nil, cre...t_name: "project715-679-production-service-account", environment_id: 56, service_account_token: nil>6157 project cluster6158 is expected to eq #<Clusters::KubernetesNamespace id: 13, cluster_id: 87, project_id: 680, cluster_project_id: 24, crea...t_name: "project716-680-production-service-account", environment_id: 57, service_account_token: nil>6159 service account token is blank6160 is expected to be nil6161 allow_blank_token is true6162 is expected to eq #<Clusters::KubernetesNamespace id: 15, cluster_id: 91, project_id: 682, cluster_project_id: nil, cre...t_name: "project718-682-production-service-account", environment_id: 59, service_account_token: nil>6163 environment does not match6164 is expected to be nil6165 cluster does not support separate namespaces per environment6166 no persisted namespace is present6167 is expected to be nil6168 a legacy namespace with no environment is present6169 is expected to eq #<Clusters::KubernetesNamespace id: 17, cluster_id: 97, project_id: 685, cluster_project_id: nil, cre...ice_account_name: "project721-685-service-account", environment_id: nil, service_account_token: nil>6170 project cluster6171 is expected to eq #<Clusters::KubernetesNamespace id: 18, cluster_id: 99, project_id: 686, cluster_project_id: 25, crea...ice_account_name: "project722-686-service-account", environment_id: nil, service_account_token: nil>6172 service account token is blank6173 is expected to be nil6174 allow_blank_token is true6175 is expected to eq #<Clusters::KubernetesNamespace id: 20, cluster_id: 103, project_id: 688, cluster_project_id: nil, cr...ice_account_name: "project724-688-service-account", environment_id: nil, service_account_token: nil>6176Files::UpdateService6177 #execute6178 when the file's last commit sha is earlier than the latest change for that branch6179 returns a hash with the correct error message and a :error status6180 when the file's last commit sha does match the supplied last_commit_sha6181 returns a hash with the :success status6182 updates the file with the new contents6183 uses the commit email6184 when the last_commit_sha is not supplied6185 returns a hash with the :success status6186 updates the file with the new contents6187ContainerRegistry::Migration6188 .enabled?6189 is expected to eq true6190 feature flag disabled6191 is expected to eq false6192 .limit_gitlab_org?6193 is expected to eq true6194 feature flag disabled6195 is expected to eq false6196 .enqueue_waiting_time6197 slow_enabled: false, fast_enabled: false, expected_result: 45 minutes6198 is expected to eq 45 minutes6199 slow_enabled: true, fast_enabled: false, expected_result: 165 minutes6200 is expected to eq 165 minutes6201 slow_enabled: false, fast_enabled: true, expected_result: 06202 is expected to eq 06203 slow_enabled: true, fast_enabled: true, expected_result: 06204 is expected to eq 06205 .capacity6206 ff_1_enabled: false, ff_2_enabled: false, ff_5_enabled: false, ff_10_enabled: false, ff_25_enabled: false, ff_40_enabled: false, expected_result: 06207 is expected to eq 06208 ff_1_enabled: true, ff_2_enabled: false, ff_5_enabled: false, ff_10_enabled: false, ff_25_enabled: false, ff_40_enabled: false, expected_result: 16209 is expected to eq 16210 ff_1_enabled: false, ff_2_enabled: true, ff_5_enabled: false, ff_10_enabled: false, ff_25_enabled: false, ff_40_enabled: false, expected_result: 26211 is expected to eq 26212 ff_1_enabled: true, ff_2_enabled: true, ff_5_enabled: false, ff_10_enabled: false, ff_25_enabled: false, ff_40_enabled: false, expected_result: 26213 is expected to eq 26214 ff_1_enabled: false, ff_2_enabled: false, ff_5_enabled: true, ff_10_enabled: false, ff_25_enabled: false, ff_40_enabled: false, expected_result: 56215 is expected to eq 56216 ff_1_enabled: true, ff_2_enabled: true, ff_5_enabled: true, ff_10_enabled: false, ff_25_enabled: false, ff_40_enabled: false, expected_result: 56217 is expected to eq 56218 ff_1_enabled: false, ff_2_enabled: false, ff_5_enabled: false, ff_10_enabled: true, ff_25_enabled: false, ff_40_enabled: false, expected_result: 106219 is expected to eq 106220 ff_1_enabled: true, ff_2_enabled: true, ff_5_enabled: true, ff_10_enabled: true, ff_25_enabled: false, ff_40_enabled: false, expected_result: 106221 is expected to eq 106222 ff_1_enabled: false, ff_2_enabled: false, ff_5_enabled: false, ff_10_enabled: false, ff_25_enabled: true, ff_40_enabled: false, expected_result: 256223 is expected to eq 256224 ff_1_enabled: true, ff_2_enabled: true, ff_5_enabled: true, ff_10_enabled: true, ff_25_enabled: true, ff_40_enabled: false, expected_result: 256225 is expected to eq 256226 ff_1_enabled: false, ff_2_enabled: false, ff_5_enabled: false, ff_10_enabled: false, ff_25_enabled: false, ff_40_enabled: true, expected_result: 406227 is expected to eq 406228 ff_1_enabled: true, ff_2_enabled: true, ff_5_enabled: true, ff_10_enabled: true, ff_25_enabled: true, ff_40_enabled: true, expected_result: 406229 is expected to eq 406230 .max_tags_count6231 returns the matching application_setting6232 .max_retries6233 returns the matching application_setting6234 .start_max_retries6235 returns the matching application_setting6236 .max_step_duration6237 returns the matching application_setting6238 .target_plan_name6239 returns the matching application_setting6240 .created_before6241 returns the matching application_setting6242 .pre_import_timeout6243 returns the matching application_setting6244 .import_timeout6245 returns the matching application_setting6246 .pre_import_tags_rate6247 returns the matching application_setting6248 .target_plans6249 target_plan: "free", result: ["free", "early_adopter", nil]6250 is expected to eq ["free", "early_adopter", nil]6251 target_plan: "premium", result: ["premium", "bronze", "silver", "premium_trial"]6252 is expected to eq ["premium", "bronze", "silver", "premium_trial"]6253 target_plan: "ultimate", result: ["ultimate", "gold", "ultimate_trial"]6254 is expected to eq ["ultimate", "gold", "ultimate_trial"]6255 .all_plans?6256 is expected to eq true6257 feature flag disabled6258 is expected to eq false6259 .delete_container_repository_worker_support?6260 is expected to eq true6261 feature flag disabled6262 is expected to eq false6263 .dynamic_pre_import_timeout_for6264 returns the expected seconds6265WorkerAttributes6266 class attributes6267 getter: :get_feature_category, setter: :feature_category, default: nil, values: [:foo], expected: :foo6268 when the attribute is set6269 returns the expected value6270 when the attribute is not set6271 returns the default value6272 when the attribute is set in the child worker6273 returns the default value for the parent, and the expected value for the child6274 getter: :get_urgency, setter: :urgency, default: :low, values: [:high], expected: :high6275 when the attribute is set6276 returns the expected value6277 when the attribute is not set6278 returns the default value6279 when the attribute is set in the child worker6280 returns the default value for the parent, and the expected value for the child6281 getter: :get_data_consistency, setter: :data_consistency, default: :always, values: [:sticky], expected: :sticky6282 when the attribute is set6283 returns the expected value6284 when the attribute is not set6285 returns the default value6286 when the attribute is set in the child worker6287 returns the default value for the parent, and the expected value for the child6288 getter: :get_worker_resource_boundary, setter: :worker_resource_boundary, default: :unknown, values: [:cpu], expected: :cpu6289 when the attribute is set6290 returns the expected value6291 when the attribute is not set6292 returns the default value6293 when the attribute is set in the child worker6294 returns the default value for the parent, and the expected value for the child6295 getter: :get_weight, setter: :weight, default: 1, values: [3], expected: 36296 when the attribute is set6297 returns the expected value6298 when the attribute is not set6299 returns the default value6300 when the attribute is set in the child worker6301 returns the default value for the parent, and the expected value for the child6302 getter: :get_tags, setter: :tags, default: [], values: [:foo, :bar], expected: [:foo, :bar]6303 when the attribute is set6304 returns the expected value6305 when the attribute is not set6306 returns the default value6307 when the attribute is set in the child worker6308 returns the default value for the parent, and the expected value for the child6309 getter: :get_deduplicate_strategy, setter: :deduplicate, default: :until_executing, values: [:none], expected: :none6310 when the attribute is set6311 returns the expected value6312 when the attribute is not set6313 returns the default value6314 when the attribute is set in the child worker6315 returns the default value for the parent, and the expected value for the child6316 getter: :get_deduplication_options, setter: :deduplicate, default: {}, values: [:none, {:including_scheduled=>true}], expected: {:including_scheduled=>true}6317 when the attribute is set6318 returns the expected value6319 when the attribute is not set6320 returns the default value6321 when the attribute is set in the child worker6322 returns the default value for the parent, and the expected value for the child6323 getter: :worker_has_external_dependencies?, setter: :worker_has_external_dependencies!, default: false, values: [], expected: true6324 when the attribute is set6325 returns the expected value6326 when the attribute is not set6327 returns the default value6328 when the attribute is set in the child worker6329 returns the default value for the parent, and the expected value for the child6330 getter: :idempotent?, setter: :idempotent!, default: false, values: [], expected: true6331 when the attribute is set6332 returns the expected value6333 when the attribute is not set6334 returns the default value6335 when the attribute is set in the child worker6336 returns the default value for the parent, and the expected value for the child6337 getter: :big_payload?, setter: :big_payload!, default: false, values: [], expected: true6338 when the attribute is set6339 returns the expected value6340 when the attribute is not set6341 returns the default value6342 when the attribute is set in the child worker6343 returns the default value for the parent, and the expected value for the child6344 .data_consistency6345 with invalid data_consistency6346 raise exception6347 when feature_flag is provided6348DEPRECATION WARNING: Invalid Feature Flag test_feature_flag stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)6349 returns correct feature flag value6350 #deduplication_enabled?6351 when no feature flag is set6352 returns true6353 when feature flag is set6354 when the FF is enabled6355DEPRECATION WARNING: Invalid Feature Flag my_feature_flag stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)6356 returns true6357 when the FF is disabled6358DEPRECATION WARNING: Invalid Feature Flag my_feature_flag stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)6359 returns false6360Pages::MigrateLegacyStorageToDeploymentService6361 calls ::Pages::ZipDirectoryService6362 does not mark pages as not deployed if public directory is absent but invalid entries are not ignored6363 removes pages archive when can not save deployment6364 when mark_projects_as_not_deployed is passed6365 marks pages as not deployed if public directory is absent and invalid entries are ignored6366 does not mark pages as not deployed if public directory is absent but pages_deployment exists6367 when pages site is deployed to legacy storage6368 creates pages deployment6369 removes tmp pages archive6370 does not change pages deployment if it is set6371FinderWithGroupHierarchy6372 when specifying group6373 returns only the group by default6374 when specifying group_id6375 returns only the group by default6376 when including items from group ancestors6377 returns group and its ancestors6378 ignores groups which user can not read6379 returns them all when skip_authorization is true6380 when including items from group descendants6381 returns items from group and its descendants6382 ignores items from groups which user can not read6383 returns them all when skip_authorization is true6384 with N+1 query check6385 does not produce N+1 query6386 when preload_max_access_levels_for_labels_finder is disabled6387 when specifying group6388 returns only the group by default6389 when specifying group_id6390 returns only the group by default6391 when including items from group ancestors6392 returns group and its ancestors6393 ignores groups which user can not read6394 returns them all when skip_authorization is true6395 when including items from group descendants6396 returns items from group and its descendants6397 ignores items from groups which user can not read6398 returns them all when skip_authorization is true6399PersonalSnippet6400 #embeddable?6401 returns true when snippet is public6402 returns true when snippet is public6403 returns true when snippet is public6404 behaves like model with repository6405 container class includes HasRepository6406 #commits_by6407 retrieves several commits from the repository by oid6408 #web_url6409 when given the only_path option6410 when only_path is false6411 returns the full web URL for this repo6412 when only_path is true6413 returns the relative web URL for this repo6414 when only_path is nil6415 returns the full web URL for this repo6416 when not given the only_path option6417 returns the full web URL for this repo6418 #url_to_repo6419 returns the SSH URL to the repository6420 #ssh_url_to_repo6421 returns the SSH URL to the repository6422 #http_url_to_repo6423 returns the HTTP URL to the repository6424 #repository6425 returns valid repo6426 uses the same container6427 #storage6428 returns valid storage6429 #full_path6430 returns valid full_path6431 #lfs_enabled?6432 returns the expected value6433 #empty_repo?6434 when the repo does not exist6435 returns true6436 when the repo exists6437 returns the empty state of the repository6438 #valid_repo?6439 is expected to equal false6440 is expected to equal true6441 #repository_exists?6442 is expected to equal false6443 is expected to equal true6444 #repo_exists?6445 is expected to equal false6446 is expected to equal true6447 #root_ref6448 is expected to equal true6449 is expected to equal false6450 is expected to equal false6451 Respond to6452 is expected to respond to #base_dir6453 is expected to respond to #disk_path6454 is expected to respond to #gitlab_shell6455 #change_head6456 delegates #change_head to repository6457 #after_repository_change_head6458 calls #reload_default_branch6459 #parent_user6460 returns the snippet author6461DesignManagement::DesignPolicy6462 when DesignManagement is not enabled6463 behaves like design abilities not available6464 for owners6465 is expected to be disallowed :read_design, :create_design, :destroy_design, :move_design, and :update_design6466 for admins6467 is expected to be disallowed :read_design, :create_design, :destroy_design, :move_design, and :update_design6468 for maintainers6469 is expected to be disallowed :read_design, :create_design, :destroy_design, :move_design, and :update_design6470 for developers6471 is expected to be disallowed :read_design, :create_design, :destroy_design, :move_design, and :update_design6472 for reporters6473 is expected to be disallowed :read_design, :create_design, :destroy_design, :move_design, and :update_design6474 for guests6475 is expected to be disallowed :read_design, :create_design, :destroy_design, :move_design, and :update_design6476 for anonymous users6477 is expected to be disallowed :read_design, :create_design, :destroy_design, :move_design, and :update_design6478 when the feature is available6479 behaves like design abilities available for members6480 for owners6481 is expected to be allowed :read_design, :create_design, :destroy_design, :move_design, and :update_design6482 for admins6483 when admin mode enabled6484 is expected to be allowed :read_design, :create_design, :destroy_design, :move_design, and :update_design6485 when admin mode disabled6486 behaves like read-only design abilities6487 is expected to be allowed :read_design6488 is expected to be disallowed :create_design, :destroy_design, :move_design, and :update_design6489 for maintainers6490 is expected to be allowed :read_design, :create_design, :destroy_design, :move_design, and :update_design6491 for developers6492 is expected to be allowed :read_design, :create_design, :destroy_design, :move_design, and :update_design6493 for reporters6494 behaves like read-only design abilities6495 is expected to be allowed :read_design6496 is expected to be disallowed :create_design, :destroy_design, :move_design, and :update_design6497 for guests in private projects6498 behaves like read-only design abilities6499 is expected to be allowed :read_design6500 is expected to be disallowed :create_design, :destroy_design, :move_design, and :update_design6501 for anonymous users in public projects6502 behaves like read-only design abilities6503 is expected to be allowed :read_design6504 is expected to be disallowed :create_design, :destroy_design, :move_design, and :update_design6505 when the issue is confidential6506 behaves like design abilities available for members6507 for owners6508 is expected to be allowed :read_design, :create_design, :destroy_design, :move_design, and :update_design6509 for admins6510 when admin mode enabled6511 is expected to be allowed :read_design, :create_design, :destroy_design, :move_design, and :update_design6512 when admin mode disabled6513 behaves like read-only design abilities6514 is expected to be allowed :read_design6515 is expected to be disallowed :create_design, :destroy_design, :move_design, and :update_design6516 for maintainers6517 is expected to be allowed :read_design, :create_design, :destroy_design, :move_design, and :update_design6518 for developers6519 is expected to be allowed :read_design, :create_design, :destroy_design, :move_design, and :update_design6520 for reporters6521 behaves like read-only design abilities6522 is expected to be allowed :read_design6523 is expected to be disallowed :create_design, :destroy_design, :move_design, and :update_design6524 for guests6525 is expected to be disallowed :read_design, :create_design, :destroy_design, :move_design, and :update_design6526 for anonymous users6527 is expected to be disallowed :read_design, :create_design, :destroy_design, :move_design, and :update_design6528 when the project is archived6529 behaves like read-only design abilities6530 is expected to be allowed :read_design6531 is expected to be disallowed :create_design, :destroy_design, :move_design, and :update_design6532bin/sidekiq-cluster6533 when selecting some queues and excluding others6534 args: ["--negate", "cronjob"], included: "-qdefault,1", excluded: "-qcronjob,1"6535 runs successfully6536 args: ["--queue-selector", "resource_boundary=cpu"], included: "-qupdate_merge_requests,1", excluded: "-qdefault,1"6537 runs successfully6538 when selecting all queues6539 runs successfully with `["*"]`6540 runs successfully with `["--queue-selector", "*"]`6541 when arguments contain newlines6542 raises an error6543Gitlab::ImportExport::Group::RelationTreeRestorer6544 restores group tree6545 logs top-level relation creation6546 relation object saving6547 when relation object is new6548 when relation object has invalid subrelations6549 logs invalid subrelations6550 when relation object is persisted6551 when relation object is invalid6552 saves import failure with nested errors6553Gitlab::Ci::Reports::TestSuiteComparer6554 #new_failures6555 when head suite has a newly failed test case which does not exist in base6556 returns the failed test case6557 when head suite still has a failed test case which failed in base6558 does not return the failed test case6559 when head suite has a success test case which failed in base6560 does not return the failed test case6561 #existing_failures6562 when head suite has a newly failed test case which does not exist in base6563 returns the failed test case6564 when head suite still has a failed test case which failed in base6565 does not return the failed test case6566 when head suite has a success test case which failed in base6567 does not return the failed test case6568 #resolved_failures6569 when head suite has a newly failed test case which does not exist in base6570 returns the failed test case6571 returns the correct resolved count6572 when head suite still has a failed test case which failed in base6573 does not return the failed test case6574 returns the correct resolved count6575 when head suite has a success test case which failed in base6576 does not return the resolved test case6577 returns the correct resolved count6578 #new_errors6579 when head suite has a new error test case which does not exist in base6580 returns the error test case6581 when head suite still has an error test case which errored in base6582 does not return the error test case6583 when head suite has a success test case which errored in base6584 does not return the error test case6585 #existing_errors6586 when head suite has a new error test case which does not exist in base6587 does not return the error test case6588 when head suite still has an error test case which errored in base6589 returns the error test case6590 when head suite has a success test case which errored in base6591 does not return the error test case6592 #resolved_errors6593 when head suite has a new error test case which does not exist in base6594 does not return the error test case6595 returns the correct resolved count6596 when head suite still has an error test case which errored in base6597 does not return the error test case6598 returns the correct resolved count6599 when head suite has a success test case which errored in base6600 returns the resolved test case6601 returns the correct resolved count6602 #total_count6603 returns the total test counts in head suite6604 #failed_count6605 when there are a new failure and an existing failure6606 returns the correct count6607 when there is a new failure6608 returns the correct count6609 when there is an existing failure6610 returns the correct count6611 #total_status6612 when all test cases in head suite are success6613 returns the total status in head suite6614 when there is a failed test case in head suite6615 returns the total status in head suite as failed6616 when there is an error test case in head suite6617 returns the total status in head suite as failed6618 #limited_tests6619 limits amount of tests returned6620 prefers new over existing and resolved6621 returns 2 of each new category, and 1 of each resolved and existing6622 does not affect the overall count6623 prefers existing over resolved6624 returns 2 of each existing category, and 1 of each resolved6625 does not affect the overall count6626 limits amount of resolved6627 returns 2 of each resolved category6628 does not affect the overall count6629PersonalSnippetPolicy6630 public snippet6631 no user6632 is expected to be disallowed :update_snippet and :admin_snippet6633 regular user6634 is expected to be disallowed :update_snippet and :admin_snippet6635 author6636 is expected to be allowed :update_snippet and :admin_snippet6637 behaves like admin access with admin mode6638 admin user6639 is expected to be allowed :update_snippet and :admin_snippet6640 internal snippet6641 no user6642 is expected to be disallowed :update_snippet and :admin_snippet6643 regular user6644 is expected to be disallowed :update_snippet and :admin_snippet6645 external user6646 is expected to be disallowed :update_snippet and :admin_snippet6647 snippet author6648 is expected to be allowed :update_snippet and :admin_snippet6649 behaves like admin access with admin mode6650 admin user6651 is expected to be allowed :update_snippet and :admin_snippet6652 private snippet6653 no user6654 is expected to be disallowed :update_snippet and :admin_snippet6655 regular user6656 is expected to be disallowed :update_snippet and :admin_snippet6657 external user6658 is expected to be disallowed :update_snippet and :admin_snippet6659 snippet author6660 is expected to be allowed :update_snippet and :admin_snippet6661 behaves like admin access with admin mode6662 admin user6663 is expected to be allowed :update_snippet and :admin_snippet6664Ci::HasRef6665 #branch?6666 is not a tag6667 return true when tag is set to false6668 when it was triggered by merge request6669 returns false6670 is not a tag6671 return false when tag is set to true6672 #git_ref6673 when tag is true6674 returns a tag ref6675 when tag is false6676 returns a branch ref6677 when tag is nil6678 returns a branch ref6679 when it is triggered by a merge request6680 returns nil6681ReviewApps::AutomatedCleanup6682 # order random6683 #perform_helm_releases_cleanup!6684 behaves like the days argument is an integer in the correct range6685 when days is nil6686 raises an error6687 when days is zero6688 raises an error6689 when days is above 3656690 raises an error6691 when days is a string6692 does not raise an error6693 when days is a float6694 does not raise an error6695 when the helm release is not a review-app release6696 behaves like does not delete the helm release6697 does not delete the helm release6698 does not delete the associated k8s namespace6699 when the helm release is a review-app release6700 when the helm release was deployed recently enough6701 when the helm release is in failed state6702 behaves like deletes the helm release6703 deletes the helm release6704 deletes the associated k8s namespace6705 when the dry-run flag is true6706 behaves like does nothing on a dry run6707 behaves like does not delete the helm release6708 does not delete the helm release6709 does not delete the associated k8s namespace6710 when the helm release is not in failed state6711 behaves like does not delete the helm release6712 does not delete the helm release6713 does not delete the associated k8s namespace6714 when the helm release was deployed a while ago6715 when the helm release is in failed state6716 behaves like deletes the helm release6717 deletes the helm release6718 deletes the associated k8s namespace6719 when the helm release is not in failed state6720 behaves like deletes the helm release6721 deletes the helm release6722 deletes the associated k8s namespace6723 .parse_args6724 when no arguments are provided6725 returns the default options6726 --dry-run6727 when no DRY_RUN variable is provided6728 raises an error6729 when the DRY_RUN variable is not set to true6730 returns the default options6731 when the DRY_RUN variable is set to true6732 returns the correct dry_run value6733 when the short version of the flag is used6734 returns the correct dry_run value6735 #perform_stale_namespace_cleanup!6736 performs Kubernetes cleanup for review apps namespaces6737 behaves like the days argument is an integer in the correct range6738 when days is nil6739 raises an error6740 when days is zero6741 raises an error6742 when days is above 3656743 raises an error6744 when days is a string6745 does not raise an error6746 when days is a float6747 does not raise an error6748 when the dry-run flag is true6749 does not delete anything6750Gitlab::HttpIO6751 #close6752 is expected to be nil6753 #binmode6754 is expected to be nil6755 #binmode?6756 is expected to be truthy6757 #path6758 is expected to be nil6759 #url6760 is expected to eq "http://object-storage/trace"6761 #seek6762 when moves pos to end of the file6763 is expected to eq 1924416764 when moves pos to middle of the file6765 is expected to eq 962206766 when moves pos around6767 matches the result6768 #eof?6769 when current pos is at end of the file6770 is expected to be truthy6771 when current pos is not at end of the file6772 is expected to be falsey6773 #each_line6774 yields lines6775 when buckets on GCS6776 when BUFFER_SIZE is larger than file size6777 calls get_chunk only once6778 #read6779 when there are no network issue6780 when read whole size6781 when BUFFER_SIZE is smaller than file size6782 reads a trace6783 when BUFFER_SIZE is larger than file size6784 reads a trace6785 when read only first 100 bytes6786 when BUFFER_SIZE is smaller than file size6787 reads a trace6788 when BUFFER_SIZE is larger than file size6789 reads a trace6790 when tries to read oversize6791 when BUFFER_SIZE is smaller than file size6792 reads a trace6793 when BUFFER_SIZE is larger than file size6794 reads a trace6795 when tries to read 0 bytes6796 when BUFFER_SIZE is smaller than file size6797 reads a trace6798 when BUFFER_SIZE is larger than file size6799 reads a trace6800 when there is anetwork issue6801 reads a trace6802 #readline6803 when there is anetwork issue6804 reads a trace6805 when BUFFER_SIZE is smaller than file size6806 behaves like all line matching6807 reads a line6808 when BUFFER_SIZE is larger than file size6809 behaves like all line matching6810 reads a line6811 when pos is at middle of the file6812 reads from pos6813 #write6814 is expected to raise NotImplementedError6815 #truncate6816 is expected to raise NotImplementedError6817 #flush6818 is expected to raise NotImplementedError6819 #present?6820 is expected to be truthy6821 #send6822 does not set the "accept-encoding" header6823ProjectMemberPresenter6824 #can_resend_invite?6825 when project_member is invited6826 and user can admin_project_member6827 is expected to eq true6828 and user cannot admin_project_member6829 is expected to eq false6830 when project_member is not invited6831 and user can admin_project_member6832 is expected to eq false6833 and user cannot admin_project_member6834 is expected to eq false6835 #last_owner?6836 when member is the holder of the personal namespace6837 is expected to eq true6838 when member is not the holder of the personal namespace6839 is expected to eq false6840 #can_update?6841 when user is NOT attempting to update an Owner6842 when user can update_project_member6843 is expected to eq true6844 when user cannot update_project_member6845 is expected to eq false6846 when user is attempting to update an Owner6847 when user can manage owners6848 is expected to eq true6849 when user cannot manage owners6850 is expected to eq false6851 #can_remove?6852 when user is NOT attempting to remove an Owner6853 when user can destroy_project_member6854 is expected to eq true6855 when user cannot destroy_project_member6856 is expected to eq false6857 when user is attempting to remove an Owner6858 when user can manage owners6859 is expected to eq true6860 when user cannot manage owners6861 is expected to eq false6862 #can_approve?6863 when project_member has request an invite6864 and user can update_project_member6865 is expected to eq true6866 and user cannot update_project_member6867 is expected to eq false6868 when project_member did not request an invite6869 and user can update_project_member6870 is expected to eq false6871 and user cannot update_project_member6872 is expected to eq false6873 valid level roles6874 when user cannot manage owners6875 behaves like #valid_level_roles6876 when no parent member is present6877 returns all permissible roles6878 when parent member is present6879 returns higher roles when a parent member is present6880 when user can manage owners6881 behaves like #valid_level_roles6882 when no parent member is present6883 returns all permissible roles6884 when parent member is present6885 returns higher roles when a parent member is present6886Packages::Nuget::Metadatum6887 relationships6888 is expected to belong to package required: false inverse_of => nuget_metadatum6889 validations6890 is expected to validate that :package cannot be empty/falsy6891 #license_url6892 is expected to allow :license_url to be ‹"http://sandbox.com"›6893 is expected to allow :license_url to be ‹"https://sandbox.com"›6894 is expected not to allow :license_url to be ‹"123"›6895 is expected not to allow :license_url to be ‹"sandbox.com"›6896 #ensure_at_least_one_field_supplied6897 rejects unfilled metadatum6898 #ensure_nuget_package_type6899 rejects if not linked to a nuget package6900 #project_url6901 is expected to allow :project_url to be ‹"http://sandbox.com"›6902 is expected to allow :project_url to be ‹"https://sandbox.com"›6903 is expected not to allow :project_url to be ‹"123"›6904 is expected not to allow :project_url to be ‹"sandbox.com"›6905 #ensure_at_least_one_field_supplied6906 rejects unfilled metadatum6907 #ensure_nuget_package_type6908 rejects if not linked to a nuget package6909 #icon_url6910 is expected to allow :icon_url to be ‹"http://sandbox.com"›6911 is expected to allow :icon_url to be ‹"https://sandbox.com"›6912 is expected not to allow :icon_url to be ‹"123"›6913 is expected not to allow :icon_url to be ‹"sandbox.com"›6914 #ensure_at_least_one_field_supplied6915 rejects unfilled metadatum6916 #ensure_nuget_package_type6917 rejects if not linked to a nuget package6918ci/status/_badge6919 when rendering status for build6920 when user has ability to see details6921 has link to build details page6922 when user do not have ability to see build details6923 contains build status text6924 does not contain links6925 when rendering status for external job6926 when user has ability to see commit status details6927 status has external target url6928 contains valid commit status text6929 has link to external status page6930 status do not have external target url6931 contains valid commit status text6932 has link to external status page6933Gitlab::Ci::Config::Entry::Service6934 when configuration is a string6935 #valid?6936 is valid6937 #value6938 returns valid hash6939 #image6940 returns service's image name6941 #alias6942 returns service's alias6943 #command6944 returns service's command6945 #ports6946 returns service's ports6947 when configuration is a hash6948 #valid?6949 is valid6950 #value6951 returns valid hash6952 #image6953 returns service's image name6954 #alias6955 returns service's alias6956 #command6957 returns service's command6958 #entrypoint6959 returns service's entrypoint6960 #pull_policy6961 returns nil6962 when configuration has ports6963 when with_image_ports metadata is not enabled6964 #valid?6965 is not valid6966 when with_image_ports metadata is enabled6967 #valid?6968 is valid6969 when unknown port keys detected6970 is not valid6971 #ports6972 returns image's ports6973 when configuration has pull_policy6974 #valid?6975 is valid6976 #value6977 returns value6978 when entry value is not correct6979 #errors6980 saves errors6981 #valid?6982 is not valid6983 when unexpected key is specified6984 #errors6985 saves errors6986 #valid?6987 is not valid6988 when service has ports6989 alias field is mandatory6990 when service does not have ports6991 alias field is optional6992ProgrammingLanguage6993 is expected to respond to #name6994 is expected to respond to #color6995 is expected to validate that :name cannot be empty/falsy6996 is expected to allow :color to be ‹"#000000"›6997 is expected not to allow :color to be ‹"000000"›6998 is expected not to allow :color to be ‹"#0z0000"›6999 .with_name_case_insensitive scope7000 accepts a single name parameter7001 accepts multiple names7002 .most_popular7003 returns the most popular programming languages7004Security::CiConfiguration::SastIacCreateService7005 #execute7006 user does not belong to project7007 returns an error status7008 does not track a snowplow event7009 user belongs to project7010 does track the snowplow event7011 raises exception if the user does not have permission to create a new branch7012 when exception is raised7013 when branch was created7014 tries to rm branch7015 when branch was not created7016 does not try to rm branch7017 with no parameters7018 returns the path to create a new merge request7019 when the project has a non-default ci config file7020 does track the snowplow event7021 when existing ci config contains anchors/aliases7022 fails with error7023 when parsing existing ci config gives a Psych error7024 fails with error7025 when parsing existing ci config gives any other error7026 is successful7027 when the project is empty7028 returns an error7029Gitlab::ImportExport::CommandLineUtil7030 #download_or_copy_upload7031 when the upload is local7032 copies the file7033 when the upload is remote7034 downloads the file7035 #download7036 a non-localhost uri7037 with ok status code7038 gets the contents7039 streams the contents via Gitlab::HTTP7040 does not get the content over the size_limit7041 gets the content within the size_limit7042 with a redirect status code MOVED_PERMANENTLY7043 logs the redirect7044 with a redirect status code FOUND7045 logs the redirect7046 with a redirect status code SEE_OTHER7047 logs the redirect7048 with a redirect status code TEMPORARY_REDIRECT7049 logs the redirect7050 with an invalid status code ACCEPTED7051 throws an error7052 with an invalid status code UNAUTHORIZED7053 throws an error7054 with an invalid status code BAD_REQUEST7055 throws an error7056 a localhost uri7057 throws a blocked url error7058 for object_storage uri7059 gets the content7060 #gzip7061 compresses specified file7062 when exception occurs7063 raises an exception7064 #gunzip7065 decompresses specified file7066 when exception occurs7067 raises an exception7068 #tar_cf7069 archives a folder without compression7070 when something goes wrong7071 raises an error7072 #untar_zxf7073 has the right mask for project.json7074 has the right mask for uploads7075 behaves like deletes symlinks7076 deletes the symlinks7077 #untar_xf7078 extracts archive without decompression7079 behaves like deletes symlinks7080 deletes the symlinks7081 when something goes wrong7082 raises an error7083 returns false and includes error status7084Gitlab::Harbor::Query7085 Validations7086 page7087 with valid page7088 initialize successfully7089 with invalid page7090 initialize failed7091 limit7092 with valid limit7093 initialize successfully7094 with invalid limit7095 with limit less than 07096 initialize failed7097 with limit greater than 257098 initialize failed7099 repository_id7100 with valid repository_id7101 initialize successfully7102 with invalid repository_id7103 initialize failed7104 artifact_id7105 with valid artifact_id7106 initialize successfully7107 with invalid artifact_id7108 initialize failed7109 sort7110 with valid sort7111 initialize successfully7112 with invalid sort7113 initialize failed7114 search7115 with valid search7116 initialize successfully7117 with invalid search7118 initialize failed7119 #repositories7120 when params is {}7121 fills default params7122 when params contains options7123 fills params with standard of Harbor7124 when params contains invalid sort option7125 ignores invalid sort params7126 when client.get_repositories returns data7127 returns the right repositories data7128 #artifacts7129 when params is {}7130 fills default params7131 when params contains options7132 fills params with standard of Harbor7133 when params contains invalid sort option7134 ignores invalid sort params7135 when client.get_artifacts returns data7136 returns the right artifacts data7137 #tags7138 when params is {}7139 fills default params7140 when params contains options7141 fills params with standard of Harbor7142 when params contains invalid sort option7143 ignores invalid sort params7144 when client.get_tags returns data7145 returns the right tags data7146IssueSidebarBasicEntity7147 contains keys related to issuables7148 contains attributes related to the issue7149 current_user7150 contains attributes related to the current user7151 can_update_escalation_status7152 for a standard issue7153 is not present7154 for an incident issue7155 is present and true7156 without permissions7157 is present and false7158 show_crm_contacts7159 is_reporter: false, contacts_exist_for_group: false, expected: false7160 sets proper boolean value for show_crm_contacts7161 is_reporter: false, contacts_exist_for_group: true, expected: false7162 sets proper boolean value for show_crm_contacts7163 is_reporter: true, contacts_exist_for_group: false, expected: false7164 sets proper boolean value for show_crm_contacts7165 is_reporter: true, contacts_exist_for_group: true, expected: true7166 sets proper boolean value for show_crm_contacts7167 in subgroup7168 with crm enabled7169 is true7170 with crm disabled7171 is false7172Gitlab::Checks::PushCheck7173 #validate!7174 does not raise any error7175 when the user is not allowed to push to the repo7176 raises an error7177 when using a DeployKeyAccess instance7178 when the deploy key cannot push to the targetted branch7179 raises an error7180 when the deploy key can push to the targetted branch7181 is valid7182create_tokens7183 ensure acknowledged secrets in any installations7184 does not allow to add a new secret without a proper handling7185 setting secret keys7186 when none of the secrets exist7187 generates different hashes for secret_key_base, otp_key_base, and db_key_base7188 generates an RSA key for openid_connect_signing_key7189 warns about the secrets to add to secrets.yml7190 writes the secrets to secrets.yml7191 does not write a .secret file7192 when the other secrets all exist7193 when secret_key_base exists in the environment and secrets.yml7194 does not issue a warning7195 uses the environment variable7196 does not update secrets.yml7197 when secret_key_base and otp_key_base exist7198 does not write any files7199 sets the keys to the values from the environment and secrets.yml7200 deletes the .secret file7201 when secret_key_base and otp_key_base do not exist7202 uses the file secret7203 keeps the other secrets as they were7204 warns about the missing secrets7205 deletes the .secret file7206 when rotated_encrypted_settings_key_base does not exist7207 does not warn about the missing secrets7208 does not update secrets.yml7209 when db_key_base is blank but exists in secrets.yml7210 warns about updating db_key_base7211 warns about the blank value existing in secrets.yml and exits7212 does not update secrets.yml7213MergeRequests::CreateApprovalEventWorker7214 calls MergeRequests::CreateApprovalEventService7215 behaves like subscribes to event7216 consumes the published event7217 behaves like an idempotent worker7218 is labeled as idempotent7219 performs multiple times sequentially without raising an exception7220 when the user does not exist7221 behaves like when object does not exist7222 does not call MergeRequests::CreateApprovalEventService7223 when the merge request does not exist7224 behaves like when object does not exist7225 does not call MergeRequests::CreateApprovalEventService7226MergeRequests::HandleAssigneesChangeService7227 #async_execute7228 performs MergeRequests::HandleAssigneesChangeWorker asynchronously7229 #execute7230 creates assignee note7231 sends email notifications to old and new assignees7232 creates pending todo for assignee7233 tracks users assigned event7234 tracks assignees changed event7235 when unassigning all users7236 creates assignee note7237 when execute_hooks option is set to true7238 executes hooks and integrations7239Gitlab::Ci::Pipeline::Chain::Config::Content7240 #perform!7241 when bridge job is passed in as parameter7242 returns the content already available in command7243 when config is defined in a custom path in the repository7244 builds root config including the local custom file7245 when config is defined remotely7246 builds root config including the remote config7247 when config is defined in a separate repository7248 builds root config including the path to another repository7249 when path specifies a refname7250 builds root config including the path and refname to another repository7251 when config is defined in the default .gitlab-ci.yml7252 builds root config including the canonical CI config file7253 when config is the Auto-Devops template7254 builds root config including the auto-devops template7255 when config is passed as a parameter7256 uses the parameter content7257 when config is not defined anywhere7258 builds root config including the auto-devops template7259DiffViewerEntity7260 when add_ignore_all_white_spaces is enabled7261 serializes diff file viewer7262 contains whitespace_only attribute7263 when whitespace_only option is true7264 returns the whitespace_only attribute true7265 when whitespace_only option is false7266 returns the whitespace_only attribute false7267 when add_ignore_all_white_spaces is disabled7268 serializes diff file viewer7269 does not contain whitespace_only attribute7270CustomEmoji7271 Associations7272 is expected to belong to namespace required: false inverse_of => custom_emoji7273 is expected to belong to creator required: false inverse_of => created_custom_emoji7274 is expected to have db column named file7275 is expected to validate that :creator cannot be empty/falsy7276 is expected to validate that the length of :name is at most 367277 is expected to validate that :name cannot be empty/falsy7278 is expected to have db column named external7279 exclusion of duplicated emoji7280 disallows emoji names of built-in emoji7281 disallows very long invalid emoji name without regular expression backtracking issues7282 disallows duplicate custom emoji names within namespace7283 disallows non http and https file value7284Gitlab::Ci::Badge::Coverage::Template7285 behaves like a badge template7286 #key_text7287 says coverage by default7288 when custom key_text is defined7289 returns custom value7290 when its size is larger than the max allowed value7291 returns default value7292 #key_width7293 is fixed by default7294 when custom key_width is defined7295 returns custom value7296 when it is larger than the max allowed value7297 returns default value7298 #value_text7299 when coverage is known7300 returns coverage percentage7301 when coverage is known to many digits7302 returns rounded coverage percentage7303 when coverage is unknown7304 returns string that says coverage is unknown7305 #value_width7306 when coverage is known7307 is narrower when coverage is known7308 when coverage is unknown7309 is wider when coverage is unknown to fit text7310 #key_color7311 always has the same color7312 #value_color7313 when coverage is good7314 is green7315 when coverage is acceptable7316 is green-orange7317 when coverage is medium7318 is orange-yellow7319 when coverage is low7320 is red7321 when coverage is unknown7322 is grey7323 #width7324 when coverage is known7325 returns the key width plus value width7326 when coverage is unknown7327 returns key width plus wider value width7328GroupDeployKey7329 is expected to validate that :user cannot be empty/falsy7330 is expected to belong to user required: false7331 is expected to have many groups7332 is of type DeployKey7333 #group_deploy_keys_group_for7334 when this group deploy key is linked to a given group7335 returns the relevant group_deploy_keys_group association7336 when this group deploy key is not linked to a given group7337 is expected to be nil7338 .defined_enums7339 excludes the inherited enum7340 #can_be_edited_for7341 when a given user has the :update_group_deploy_key permission for that key7342 is true7343 when a given user does not have the :update_group_deploy_key permission for that key7344 is true when this user has the :update_group_deploy_key_for_group permission for this group7345 is false when this user does not have the :update_group_deploy_key_for_group permission for this group7346 #group_deploy_keys_groups_for_user7347 when a group has a group deploy key7348 returns the related group_deploy_keys_group association when the user can read the group7349 does not return the related group_deploy_keys_group association when the user cannot read the group7350 .for_groups7351 when group deploy keys are enabled for some groups7352 returns these group deploy keys7353Ml::ExperimentTracking::CandidateRepository7354 # order random7355 #add_params7356 adds the parameters7357 if parameter misses key7358 does not throw and does not add7359 if parameter misses value7360 does not throw and does not add7361 if parameter repeated do7362 does not throw and adds only the first of each kind7363 #add_metrics7364 adds the metrics7365 when metrics have repeated keys7366 adds all of them7367 #by_eid7368 is expected to eq #<Ml::Candidate id: 1, created_at: "2023-04-19 10:00:41.157186000 +0000", updated_at: "2023-04-19 10:... nil, package_id: nil, eid: "d1c17776-cee7-447c-942a-e27cea7359b3", project_id: 771, internal_id: 1>7369 when iid does not exist7370 is expected to be nil7371 when iid belongs to a different project7372 is expected to be nil7373 #add_tags7374 adds the tags7375 if tags misses key7376 does throw and does not add7377 if tag misses value7378 does throw and does not add7379 if tag repeated7380 does not throw and adds only the first of each kind7381 #add_metric!7382 adds a new metric7383 when name missing7384 does not add metric7385 #add_tag!7386 adds a new tag7387 when name missing7388 throws RecordInvalid7389 when tag was already added7390 throws RecordInvalid7391 #update7392 is expected to be truthy7393 when end_time is missing7394 is expected to be truthy7395 when status is wrong7396 fails assigning the value7397 when status is missing7398 is expected to be truthy7399 #add_param!7400 adds a new param7401 when name missing7402 throws RecordInvalid7403 when param was already added7404 throws RecordInvalid7405 #create!7406 creates the candidate7407 creates with tag7408 when name is passed as tag7409 ignores if name is not nil7410 when name is nil7411 sets the mlflow.runName as candidate name7412Gitlab::Ci::Badge::Release::LatestRelease7413 #entity7414 describes latest release7415 #tag7416 returns latest release tag for the project ordered using release_at7417 #metadata7418 returns correct metadata7419 #template7420 returns correct template7421gitlab:container_registry namespace rake tasks7422 #configure7423 when container registry is disabled7424 behaves like invalid config7425 does not call UpdateContainerRegistryInfoService7426 does not raise an error7427 prints a warning message7428 when container registry api_url is blank7429 behaves like invalid config7430 does not call UpdateContainerRegistryInfoService7431 does not raise an error7432 prints a warning message7433 when container registry is enabled and api_url is not blank7434 calls UpdateContainerRegistryInfoService7435layouts/_header_search7436 when doing a project level search7437 sets project_id field7438 behaves like hidden fields are properly set7439 when search_context has a scope value7440 sets scope input to issues7441 when search_context has a code_search value7442 sets search_code input to true7443 when search_context has a ref value7444 sets repository_ref input to test-branch7445 when search_context has a for_snippets value7446 sets for_snippets input to true7447 nav_source7448 always set to navbar7449 submit button7450 always renders for specs7451 when doing a group level search7452 sets group_id field7453 behaves like hidden fields are properly set7454 when search_context has a scope value7455 sets scope input to issues7456 when search_context has a code_search value7457 sets search_code input to true7458 when search_context has a ref value7459 sets repository_ref input to test-branch7460 when search_context has a for_snippets value7461 sets for_snippets input to true7462 nav_source7463 always set to navbar7464 submit button7465 always renders for specs7466Labels::CreateService7467 #execute7468 in a project7469 with color in hex-code7470 creates a label7471 with color in allowed name7472 creates a label7473 with color in up-case allowed name7474 creates a label7475 with color surrounded by spaces7476 creates a label7477 with unknown color7478 doesn't create a label7479 with no color7480 doesn't create a label7481 in a group7482 with color in hex-code7483 creates a label7484 with color in allowed name7485 creates a label7486 with color in up-case allowed name7487 creates a label7488 with color surrounded by spaces7489 creates a label7490 with unknown color7491 doesn't create a label7492 with no color7493 doesn't create a label7494 in admin area7495 with color in hex-code7496 creates a label7497 with color in allowed name7498 creates a label7499 with color in up-case allowed name7500 creates a label7501 with color surrounded by spaces7502 creates a label7503 with unknown color7504 doesn't create a label7505 with no color7506 doesn't create a label7507Gitlab::Git::MergeBase7508 #sha7509 returns `nil` when the refs do not have a common ancestor7510 returns a merge base when passing 2 branch names7511 returns a merge base when passing a tag name7512 when the refs exist7513 returns the SHA of the merge base7514 memoizes the result7515 when passing a missing ref7516 does not call merge_base on the repository but raises an error7517 #commit7518 does not try to find the commit when there is no sha7519 for existing refs with a merge base7520 finds the commit for the merge base7521 only looks up the commit once7522 #unknown_refs7523 returns the refs passed that are not part of the repository7524 only looks up the commits once7525Gitlab::Ci::Parsers::Security::Sast7526 #parse!7527 when passing valid report7528 report_format: :sast, report_version: "15.0.0", scanner_length: 1, finding_length: 5, identifier_length: 6, file_path: "groovy/src/main/java/com/gitlab/security_products/tests/App.groovy", start_line: 47, end_line: 47, primary_identifiers_length: nil7529 parses all identifiers and findings7530 generates expected location7531 generates expected metadata_version7532 report_format: :sast_semgrep_for_multiple_findings, report_version: "15.0.4", scanner_length: 1, finding_length: 2, identifier_length: 6, file_path: "app/app.py", start_line: 39, end_line: nil, primary_identifiers_length: 27533 parses all identifiers and findings7534 generates expected location7535 generates expected metadata_version7536 when parsing an empty report7537 is expected to be empty7538AlertManagement::Alerts::Todo::CreateService7539 #execute7540 when the user is anonymous7541 behaves like permissions error7542 returns an error7543 when the user does not have permission7544 behaves like permissions error7545 returns an error7546 when user has permission7547 creates a todo7548 returns the alert and todo in the payload7549 when the user has a marked todo for the alert7550 when todo is pending7551 does not create a todo7552 returns an error7553 when todo is done7554 is expected to equal true7555 is expected to change `Todo.count` by 17556Gitlab::GithubImport::Importer::NoteAttachmentsImporter7557 # order random7558 #execute7559 when importing release attachments7560 behaves like updates record description7561 changes attachment links7562 changes link to project blob files7563 doesn't change links to other projects7564 when importing issue attachments7565 behaves like updates record description7566 changes attachment links7567 changes link to project blob files7568 doesn't change links to other projects7569 when importing merge request attachments7570 behaves like updates record description7571 changes attachment links7572 changes link to project blob files7573 doesn't change links to other projects7574 when importing note attachments7575 changes note text with new attachment urls7576 changes note links to project blob files7577 doesn't change note links to other projects7578GroupLabel7579 relationships7580 is expected to belong to group required: false7581 validations7582 is expected to validate that :group cannot be empty/falsy7583 #subject7584 aliases group to subject7585 #to_reference7586 using id7587 returns a String reference to the object7588 using name7589 returns a String reference to the object7590 uses id when name contains double quote7591 cross-project7592 returns a String reference to the object7593 using invalid format7594 raises error7595 #preloaded_parent_container7596 when group is loaded7597 does not invoke a DB query7598 when parent_container is loaded7599 does not invoke a DB query7600 when none of them are loaded7601 invokes a DB query7602Gitlab::Database::DynamicModelHelpers7603 #define_batchable_model7604 is an ActiveRecord model7605 includes EachBatch7606 has the correct table name7607 has the inheritance type column disable7608 #each_batch7609 when no transaction is open7610 iterates table in batches7611 when transaction is open7612 raises an error7613 #each_batch_range7614 when no transaction is open7615 iterates table in batch ranges7616 yields only one batch if bigger than the table size7617 makes it possible to apply a scope7618 when transaction is open7619 raises an error7620ErrorTracking::SentryClient::ApiUrls7621 # order random7622 #issue_latest_event_url7623 behaves like correct url7624 is expected to eq uri "https://sentrytest.gitlab.com/api/0/issues/123456/events/latest/"7625 behaves like correct url with extra slashes7626 behaves like correct url7627 is expected to eq uri "https://sentrytest.gitlab.com/api/0/issues/123456/events/latest/"7628 behaves like correctly escapes issue ID7629 with param a string with reserved chars7630 is expected to include "123%24%25"7631 with param a symbol with reserved chars7632 is expected to include "123%24%25"7633 with param an integer7634 is expected to include "12345678"7635 #issues_url7636 behaves like correct url7637 is expected to eq uri "https://sentrytest.gitlab.com/api/0/projects/sentry-org/sentry-project/issues/"7638 behaves like correct url with extra slashes7639 behaves like correct url7640 is expected to eq uri "https://sentrytest.gitlab.com/api/0/projects/sentry-org/sentry-project/issues/"7641 #projects_url7642 behaves like correct url7643 is expected to eq uri "https://sentrytest.gitlab.com/api/0/projects/"7644 behaves like correct url with extra slashes7645 behaves like correct url7646 is expected to eq uri "https://sentrytest.gitlab.com/api/0/projects/"7647 #issue_url7648 behaves like correct url7649 is expected to eq uri "https://sentrytest.gitlab.com/api/0/issues/123456/"7650 behaves like correct url with extra slashes7651 behaves like correct url7652 is expected to eq uri "https://sentrytest.gitlab.com/api/0/issues/123456/"7653 behaves like correctly escapes issue ID7654 with param a string with reserved chars7655 is expected to include "123%24%25"7656 with param a symbol with reserved chars7657 is expected to include "123%24%25"7658 with param an integer7659 is expected to include "12345678"7660Sidebars::UserProfile::Menus::GroupsMenu7661 # order random7662 behaves like User profile menu7663 does not contain any sub menu7664 renders the correct link7665 renders the correct title7666 defines correct active route7667 renders if user is logged in7668 when viewed user is blocked7669 when user is not logged in7670 is not allowed to view the menu item7671 when current user has permission7672 is allowed to view the menu item7673 when current user does not have permission7674 is not allowed to view the menu item7675 when viewed user is banned7676 when user is not logged in7677 is not allowed to view the menu item7678 when current user has permission7679 is allowed to view the menu item7680 when current user does not have permission7681 is not allowed to view the menu item7682Gitlab::Patch::Prependable7683 a class including a concern prepending a concern7684 returns values from prepended module ee7685 has the expected ancestors7686 prepends only once even if called twice7687 overriding methods7688 returns values from the class7689 a class prepending a concern prepending a concern7690 returns values from prepended module ee7691 has the expected ancestors7692 prepends only once7693 a class prepending a concern7694 returns values from prepended module ee7695 has the expected ancestors7696 prepends only once7697 simple case7698 class methods7699 has a method7700 can execute a method7701 instance methods7702 has a method7703 chains a method execution7704 having two prepended blocks7705 raises an error7706 the extra hack for override verification7707 when ENV["STATIC_VERIFICATION"] is not defined7708 does not extend ClassMethods onto the defining module7709 when ENV["STATIC_VERIFICATION"] is defined7710 does extend ClassMethods onto the defining module7711Banzai::Filter::ImageLinkFilter7712 wraps the image with a link to the image src7713 does not wrap a duplicate link7714 works with external images7715 works with inline images7716 keep the data-canonical-src7717 moves the data-diagram* attributes7718 adds no-attachment icon class to the link7719 when :link_replaces_image is true7720 replaces the image with link to image src7721 uses image alt as a link text7722 uses image data-src as a link text7723 adds attachment icon class to the link7724 when link attributes contain malicious code7725 when image alt contains malicious code7726 ignores image alt and uses image path as the link text7727 when image src contains malicious code7728 ignores image src and does not use it as the link text7729 keeps image src unchanged, malicious code does not execute as part of url7730 when image data-src contains malicious code7731 ignores data-src and uses image path as the link text7732 uses image data-src, malicious code does not execute as part of url7733Gitlab::ImportExport::Base::ObjectBuilder7734 #build7735 when object exists7736 when where_clauses are implemented7737 finds existing object instead of creating one7738 when where_clauses are not implemented7739 raises NotImplementedError7740 when object does not exist7741 creates new object7742BulkImports::Projects::Pipelines::IssuesPipeline7743 #run7744 imports issue into destination project7745 zoom meetings7746 restores zoom meetings7747 sentry issue7748 restores sentry issue information7749 award emoji7750 has award emoji on an issue7751 issue state7752 restores issue state7753 labels7754 restores issue labels7755 milestone7756 restores issue milestone7757 timelogs7758 restores issue timelogs7759 notes7760 restores issue notes and their award emoji7761Gitlab::GithubImport::Representation::ProtectedBranch7762 # order random7763 .from_api_response7764 behaves like a ProtectedBranch rule7765 returns an instance of ProtectedBranch7766 with ProtectedBranch7767 includes the protected branch ID (name) attribute7768 includes the protected branch allow_force_pushes attribute7769 includes the protected branch required_conversation_resolution attribute7770 includes the protected branch required_pull_request_reviews7771 includes the protected branch require_code_owner_reviews7772 includes the protected branch allowed_to_push_users7773 .from_json_hash7774 behaves like a ProtectedBranch rule7775 returns an instance of ProtectedBranch7776 with ProtectedBranch7777 includes the protected branch ID (name) attribute7778 includes the protected branch allow_force_pushes attribute7779 includes the protected branch required_conversation_resolution attribute7780 includes the protected branch required_pull_request_reviews7781 includes the protected branch require_code_owner_reviews7782 includes the protected branch allowed_to_push_users7783Graphql::Arguments7784 returns a blank string if the arguments are blank7785 returns a serialized arguments if the arguments are not blank7786 supports merge with +7787 supports merge with + and a string7788 supports merge with + and a string when empty7789 supports merge with + and an empty string7790 serializes all values correctly7791Ci::DropPipelineService7792 #execute_async_for_all7793 drops only cancelable pipelines asynchronously7794 #execute7795 drops each cancelable build in the pipeline7796 avoids N+1 queries when reading data7797Gitlab::HookData::KeyBuilder7798 #build7799 for keys that belong to a user7800 data7801 on create7802 is expected to eq "key_create"7803 is expected to eq "user644"7804 behaves like includes the required attributes7805 includes the required attributes7806 on destroy7807 is expected to eq "key_destroy"7808 is expected to eq "user644"7809 behaves like includes the required attributes7810 includes the required attributes7811 for keys that do not belong to a user7812 data7813 on create7814 is expected to eq "key_create"7815 behaves like includes the required attributes7816 includes the required attributes7817 on destroy7818 is expected to eq "key_destroy"7819 behaves like includes the required attributes7820 includes the required attributes7821Pajamas::BannerComponent7822 basic usage7823 renders its content7824 renders its title7825 renders a close button7826 button_text and button_link7827 define the primary action7828 banner_options7829 are on the banner7830 with custom classes7831 don't conflict with internal banner_classes7832 close_options7833 are on the close button7834 embedded7835 by default (false)7836 keeps the banner's borders7837 when set to true7838 removes the banner's borders7839 variant7840 by default (promotion)7841 applies no variant class7842 when set to introduction7843 applies the introduction class to the banner7844 applies the confirm class to the close button7845 when set to unknown variant7846 ignores the unknown variant7847 illustration7848 has none by default7849 with svg_path7850 renders an image as illustration7851 with illustration slot7852 renders the slot content as illustration7853 and conflicting svg_path7854 uses the slot content7855 with primary_action slot7856 renders the slot content as the primary action7857 and conflicting button_text and button_link7858 uses the slot content7859seed production settings7860 GITLAB_SHARED_RUNNERS_REGISTRATION_TOKEN is set in the environment7861Saved Runner Registration Token7862Saved CI JWT signing key7863 writes the token to the database7864 GITLAB_PROMETHEUS_METRICS_ENABLED is set in the environment7865 GITLAB_PROMETHEUS_METRICS_ENABLED is true7866Saved Prometheus metrics enabled flag7867Saved CI JWT signing key7868 prometheus_metrics_enabled is set to true7869 GITLAB_PROMETHEUS_METRICS_ENABLED is false7870Saved Prometheus metrics enabled flag7871Saved CI JWT signing key7872 prometheus_metrics_enabled is set to false7873 GITLAB_PROMETHEUS_METRICS_ENABLED is default7874Saved CI JWT signing key7875 prometheus_metrics_enabled is set to true7876 CI JWT signing key7877Saved CI JWT signing key7878 writes valid RSA key to the database7879FeatureFlags::DestroyService7880 #execute7881 returns status success7882 destroys feature flag7883 creates audit log7884 behaves like update feature flag client7885 updates last feature flag updated at7886 when user is reporter7887 returns error status7888 when feature flag can not be destroyed7889 returns status error7890 does not create audit log7891 behaves like does not update feature flag client7892 does not update last feature flag updated at7893Integrations::ChatMessage::BaseMessage7894 #fallback7895 without relative links7896 is expected to eq "Just another *markdown* message"7897 with relative links7898 is expected to eq "Check this out https://gitlab-domain.com/uploads/Screenshot1.png"7899 with multiple relative links7900 is expected to eq "Check this out https://gitlab-domain.com/uploads/Screenshot1.png. And this https://gitlab-domain.com/uploads/Screenshot2.png"7901 #strip_markup7902 input: nil, output: nil7903 returns the expected output7904 input: "", output: ""7905 returns the expected output7906 input: "[label](url)", output: "label(url)"7907 returns the expected output7908 input: "<url|label>", output: "urllabel"7909 returns the expected output7910 input: "<a href=\"url\">label</a>", output: "a href=\"url\"label/a"7911 returns the expected output7912Gitlab::Config::Entry::Validators7913 Gitlab::Config::Entry::Validators::MutuallyExclusiveKeysValidator7914 context: "with mutually exclusive keys", config: {:foo=>1, :bar=>2}, valid_result: false7915 validates the instance7916 context: "without mutually exclusive keys", config: {:foo=>1}, valid_result: true7917 validates the instance7918 context: "without mutually exclusive keys", config: {:bar=>1}, valid_result: true7919 validates the instance7920 context: "with other keys", config: {:foo=>1, :baz=>2}, valid_result: true7921 validates the instance7922 Gitlab::Config::Entry::Validators::DisallowedKeysValidator7923 config: {:foo=>"1"}, disallowed_keys: "foo", ignore_nil: false, valid_result: false7924 validates the instance7925 config: {:foo=>"1", :bar=>"2", :baz=>"3"}, disallowed_keys: "foo, bar", ignore_nil: false, valid_result: false7926 validates the instance7927 config: {:baz=>"1", :qux=>"2"}, disallowed_keys: "", ignore_nil: false, valid_result: true7928 validates the instance7929 config: {:foo=>nil}, disallowed_keys: "foo", ignore_nil: false, valid_result: false7930 validates the instance7931 config: {:foo=>nil, :bar=>"2", :baz=>"3"}, disallowed_keys: "foo, bar", ignore_nil: false, valid_result: false7932 validates the instance7933 config: {:foo=>nil, :bar=>nil, :baz=>"3"}, disallowed_keys: "foo, bar", ignore_nil: false, valid_result: false7934 validates the instance7935 config: {:baz=>nil, :qux=>nil}, disallowed_keys: "", ignore_nil: false, valid_result: true7936 validates the instance7937 config: {:foo=>"1"}, disallowed_keys: "foo", ignore_nil: true, valid_result: false7938 validates the instance7939 config: {:foo=>"1", :bar=>"2", :baz=>"3"}, disallowed_keys: "foo, bar", ignore_nil: true, valid_result: false7940 validates the instance7941 config: {:baz=>"1", :qux=>"2"}, disallowed_keys: "", ignore_nil: true, valid_result: true7942 validates the instance7943 config: {:foo=>nil}, disallowed_keys: "", ignore_nil: true, valid_result: true7944 validates the instance7945 config: {:foo=>nil, :bar=>"2", :baz=>"3"}, disallowed_keys: "bar", ignore_nil: true, valid_result: false7946 validates the instance7947 config: {:foo=>nil, :bar=>nil, :baz=>"3"}, disallowed_keys: "", ignore_nil: true, valid_result: true7948 validates the instance7949 config: {:baz=>nil, :qux=>nil}, disallowed_keys: "", ignore_nil: true, valid_result: true7950 validates the instance7951 when custom message is provided7952 returns the custom message when invalid7953Ci::TriggerPresenter7954 when user is not a trigger owner7955 #token7956 exposes only short token7957 #has_token_exposed?7958 does not have token exposed7959 when user is a trigger owner and builds admin7960 #token7961 exposes full token7962 #has_token_exposed?7963 has token exposed7964Groups::UserGroupsFinder7965 #execute7966 returns all groups where the user is a direct member7967 when target_user is nil7968 is expected to be empty7969 when current_user is nil7970 is expected to be empty7971 when permission is :create_projects7972 is expected to contain exactly #<Group id:2460 @root-group/a-public-maintainer>, #<Group id:2461 @a-public-owner>, #<Group id:2458 @root-group/b-private-maintainer>, and #<Group id:2459 @root-group/c-public-developer>7973 behaves like user group finder searching by name or path7974 is expected to contain exactly #<Group id:2460 @root-group/a-public-maintainer> and #<Group id:2458 @root-group/b-private-maintainer>7975 when searching for a full path (including parent)7976 is expected to contain exactly #<Group id:2458 @root-group/b-private-maintainer>7977 when search keywords include the parent route7978 is expected to match [#<Group id:2460 @root-group/a-public-maintainer>, #<Group id:2459 @root-group/c-public-developer>]7979 when permission is :transfer_projects7980 is expected to contain exactly #<Group id:2460 @root-group/a-public-maintainer>, #<Group id:2461 @a-public-owner>, and #<Group id:2458 @root-group/b-private-maintainer>7981 behaves like user group finder searching by name or path7982 is expected to contain exactly #<Group id:2460 @root-group/a-public-maintainer> and #<Group id:2458 @root-group/b-private-maintainer>7983 when searching for a full path (including parent)7984 is expected to contain exactly #<Group id:2458 @root-group/b-private-maintainer>7985 when search keywords include the parent route7986 is expected to match [#<Group id:2460 @root-group/a-public-maintainer>]7987ResourceEvents::ChangeLabelsService7988 #execute7989 expires resource note etag cache7990 when adding a label7991 creates new label event7992 behaves like creating timeline events7993 when resource is not an incident7994 does not call create timeline events service7995 when resource is an incident7996 calls create timeline events service with correct attributes7997 when removing a label7998 creates new label event7999 behaves like creating timeline events8000 when resource is not an incident8001 does not call create timeline events service8002 when resource is an incident8003 calls create timeline events service with correct attributes8004 when both adding and removing labels8005 creates all label events in a single query8006 behaves like creating timeline events8007 when resource is not an incident8008 does not call create timeline events service8009 when resource is an incident8010 calls create timeline events service with correct attributes8011 when resource is a work item8012 triggers note created subscription8013 when resource is an MR8014 does not trigger note created subscription8015 usage data8016 when resource is an issue8017 tracks changed labels8018 behaves like issue_edit snowplow tracking8019 behaves like Snowplow event tracking with RedisHLL context8020 behaves like Snowplow event tracking8021 is emitted8022 when resource is a merge request8023 does not track changed labels8024 does not emit snowplow event8025Gitlab::Ci::Reports::ReportsComparer8026 #initialize8027 sets getter for the report comparer8028 return base report8029 return head report8030 #status8031 returns not implemented error8032 when success? is true8033 returns status success8034 when success? is false8035 returns status failed8036 when base_report is nil8037 returns status not_found8038 when head_report is nil8039 returns status not_found8040 #success?8041 returns not implemented error8042 #existing_errors8043 returns not implemented error8044 #resolved_errors8045 returns not implemented error8046 #errors_count8047 returns not implemented error8048 #resolved_count8049 returns not implemented error8050 #total_count8051 returns not implemented error8052 #not_found?8053 when base report is nil8054 is expected to be truthy8055 when base report exists8056 is expected to be falsey8057Gitlab::Diff::CharDiff8058 #generate_diff8059 generates an array of changes8060 when old string is nil8061 does not raise an error8062 treats nil values as blank strings8063 #changed_ranges8064 returns ranges of changes8065 when old string is nil8066 returns lists of changes8067 #to_html8068 returns an HTML representation of the diff8069Gitlab::SidekiqDaemon::Monitor8070 #within_job8071 tracks thread, jid and worker_class8072 when job is canceled8073 does not execute a block8074 raises exception8075 #jobs8076 returns running jobs hash8077 #run_thread when notification channel not enabled8078 return directly8079 #run_thread when notification channel enabled8080 when structured logging is used8081 logs start message8082 logs stop message8083 logs StandardError message8084 logs and raises Exception message8085 when StandardError is raised8086 does retry connection8087 when message is published8088 and message is valid8089 processes cancel8090 and message is not valid json8091 skips processing8092 #stop8093#<Thread:0x00007f52174310f0 /builds/gitlab-org/gitlab/lib/gitlab/daemon.rb:56 run> terminated with exception (report_on_exception is true):8094Interrupt (Interrupt)8095 does stop the thread8096 #process_job_cancel8097 when jid is missing8098 does not run thread8099 when jid is provided8100 when jid is not found8101 does not log cancellation message8102 when jid is found8103#<Thread:0x00007f520c891330 /builds/gitlab-org/gitlab/spec/lib/gitlab/sidekiq_daemon/monitor_spec.rb:237 run> terminated with exception (report_on_exception is true):8104/builds/gitlab-org/gitlab/spec/lib/gitlab/sidekiq_daemon/monitor_spec.rb:237:in `sleep': Gitlab::SidekiqDaemon::Monitor::CancelledError (Gitlab::SidekiqDaemon::Monitor::CancelledError)8105 from /builds/gitlab-org/gitlab/spec/lib/gitlab/sidekiq_daemon/monitor_spec.rb:237:in `block (6 levels) in <top (required)>'8106 does log cancellation message8107#<Thread:0x00007f520db0d8d8 /builds/gitlab-org/gitlab/spec/lib/gitlab/sidekiq_daemon/monitor_spec.rb:237 run> terminated with exception (report_on_exception is true):8108/builds/gitlab-org/gitlab/spec/lib/gitlab/sidekiq_daemon/monitor_spec.rb:237:in `sleep': Gitlab::SidekiqDaemon::Monitor::CancelledError (Gitlab::SidekiqDaemon::Monitor::CancelledError)8109 from /builds/gitlab-org/gitlab/spec/lib/gitlab/sidekiq_daemon/monitor_spec.rb:237:in `block (6 levels) in <top (required)>'8110 does cancel the thread8111 .cancel_job8112 sets a redis key8113 notifies all workers8114 #notification_channel_enabled?8115 return nil when SIDEKIQ_MONITOR_WORKER is not set8116 return nil when SIDEKIQ_MONITOR_WORKER set to 08117 return 1 when SIDEKIQ_MONITOR_WORKER set to 18118IncidentManagement::TimelineEventPolicy8119 # order random8120 #rules8121 when a user is not able to manage timeline events8122 when timeline event is editable8123 does not allow to edit the timeline event8124 when a user is able to manage timeline events8125 when timeline event is editable8126 allows to edit the timeline event8127 when timeline event is not editable8128 does not allow to edit the timeline event8129Packages::Conan::PackageFileFinder8130 #execute8131 behaves like package file finder examples8132 is expected to eq #<Packages::PackageFile id: 355, package_id: 238, created_at: "2023-04-19 10:01:51.861902000 +0000", ...um: nil, verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>8133 with conan_file_type8134 is expected to eq "recipe_file"8135 with conan_package_reference8136 is expected to eq #<Packages::PackageFile id: 359, package_id: 238, created_at: "2023-04-19 10:01:51.953190000 +0000", ...um: nil, verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>8137 with file_name_like8138 is expected to eq #<Packages::PackageFile id: 355, package_id: 238, created_at: "2023-04-19 10:01:51.861902000 +0000", ...um: nil, verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>8139 behaves like not returning pending_destruction package files8140 returns the correct package file8141 with unknown file_name8142 is expected to be nil8143 #execute!8144 behaves like package file finder examples8145 is expected to eq #<Packages::PackageFile id: 355, package_id: 238, created_at: "2023-04-19 10:01:51.861902000 +0000", ...um: nil, verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>8146 with conan_file_type8147 is expected to eq "recipe_file"8148 with conan_package_reference8149 is expected to eq #<Packages::PackageFile id: 359, package_id: 238, created_at: "2023-04-19 10:01:51.953190000 +0000", ...um: nil, verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>8150 with file_name_like8151 is expected to eq #<Packages::PackageFile id: 355, package_id: 238, created_at: "2023-04-19 10:01:51.861902000 +0000", ...um: nil, verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>8152 behaves like not returning pending_destruction package files8153 returns the correct package file8154 with unknown file_name8155 is expected to raise ActiveRecord::RecordNotFound8156Gitlab::ImportExport::Project::Sample::DateCalculator8157 #closest date to average8158 when dates are empty8159 is expected to be nil8160 when dates are not empty8161 is expected to eq 2021-01-01 00:00:00.000000000 +00008162 #calculate_by_closest_date_to_average8163 when average date is nil8164 is expected to eq 2023-04-19 10:01:54.219887208 +00008165 when average date is in the past8166 is expected to eq 2024-04-18 10:01:54.251415577 +00008167 when average date is in the future8168 is expected to eq 2023-04-19 10:01:54.283588265 +00008169Resolvers::Ci::RunnerProjectsResolver8170 # order random8171 #resolve8172 with authorized user8173 with search argument8174 returns a lazy value with projects containing the specified prefix8175 with supported arguments8176 creates ProjectsFinder with expected arguments8177 without arguments8178 returns a lazy value with all projects8179 with unauthorized user8180 is expected to be nil8181X509CertificateRevokeService8182 #execute8183 for revoked certificates8184 update all commit signatures8185 for good certificates8186 do not update any commit signature8187Sidebars::Admin::Menus::AdminSettingsMenu8188 # order random8189 behaves like Admin menu with sub menus8190 contains submemus8191 behaves like Admin menu8192 renders the correct link8193 renders the correct title8194 renders the correct icon8195 #render?8196 when user is admin8197 renders8198 when user is not admin8199 does not render8200 when user is not logged in8201 does not render8202Mutations::CustomEmoji::Destroy8203 field tests8204 is expected to have graphql arguments :id8205 is expected to have graphql field :custom_emoji8206 #resolve8207 when the user8208 has no permissions8209 behaves like does not delete custom emoji8210 raises exception8211 when the user is developer and not the owner of custom emoji8212 behaves like does not delete custom emoji8213 raises exception8214 when user8215 is maintainer8216 behaves like deletes custom emoji8217 returns deleted custom emoji8218 is owner8219 behaves like deletes custom emoji8220 returns deleted custom emoji8221 is developer and creator of the emoji8222 behaves like deletes custom emoji8223 returns deleted custom emoji8224Mutations::Security::CiConfiguration::ConfigureSast8225 is expected to require graphql authorizations :push_code8226 #resolve8227 generates an error if the resource is not accessible to the user8228 when user does not have enough permissions8229 generates an error8230 when user is a maintainer of a different project8231 generates an error8232 when the user does not have permission to create a new branch8233 returns an array of errors8234 when the user can create a merge request8235 when service successfully generates a path to create a new merge request8236 returns a success path8237 when service can not generate any path to create a new merge request8238 returns an array of errors8239Gitlab::X509::Tag8240 #signature8241 signed tag8242 is expected not to be nil8243 is expected to eq :unverified8244 is expected to have attributes {:email => "r.meier@siemens.com", :serial_number => 3664232660, :subject => "CN=Meier Roger,O=Siemens,SN=Me...r=Z000NWDH", :subject_key_identifier => "21:7E:82:45:29:5D:0E:B1:19:CD:24:45:65:EE:0C:5C:73:03:5E:33"}8245 is expected to have attributes {:crl_url => "http://ch.siemens.com/pki?ZZZZZZA6.crl", :subject => "CN=Siemens Issuing CA Medium Strength...ayern,C=DE", :subject_key_identifier => "F8:15:5D:47:0C:6C:77:7B:72:C4:02:17:91:68:A2:B6:F7:6A:09:44"}8246 unsigned tag8247 is expected to be nil8248Clusters::AgentTokenPolicy8249 rules8250 when reporter8251 is expected to be disallowed :admin_cluster8252 is expected to be disallowed :read_cluster8253 when developer8254 is expected to be disallowed :admin_cluster8255 is expected to be allowed :read_cluster8256 when maintainer8257 is expected to be allowed :admin_cluster8258 is expected to be allowed :read_cluster8259Mutations::Ci::Runner::BulkDelete8260 #resolve8261 when user can delete runners8262 when runner IDs are missing8263 when admin mode is enabled8264 does not return an error8265 with runners specified by id8266 ignores unknown keys from service response payload (FAILED - 1)82681st Try error in ./spec/graphql/mutations/ci/runner/bulk_delete_spec.rb:51:8269undefined method `execute' for AggregatedFailure: This method caused a failure which has been suppressed to be aggregated into our failure report by returning this value, further errors can be ignored.:RSpec::Expectations::FailureAggregator::AggregatedFailure8271RSpec::Retry: 2nd try ./spec/graphql/mutations/ci/runner/bulk_delete_spec.rb:518272 when admin mode is enabled8273 deletes runners8274 when the user cannot delete the runner8275 when user is admin and admin mode is not enabled8276 returns error8277Gitlab::Ci::Reports::CoverageReportGenerator8278 #report8279 when pipeline has multiple builds with coverage reports8280 behaves like having a coverage report8281 returns coverage reports with collected data8282 and it is a child pipeline8283 returns empty coverage report8284 when builds are retried8285 does not take retried builds into account8286 when pipeline does not have any builds with coverage reports8287 returns empty coverage reports8288 when pipeline has child pipeline with builds that have coverage reports8289 behaves like having a coverage report8290 returns coverage reports with collected data8291 when both parent and child pipeline have builds with coverage reports8292 behaves like having a coverage report8293 returns coverage reports with collected data8294Ci::ParseSecureFileMetadataWorker8295 # order random8296 #perform8297 is labeled as idempotent8298 performs multiple times sequentially without raising an exception8299 when the file is found8300 calls update_metadata!8301 when file is not found8302WARNING: An expectation of `:update_metadata!` was set on `nil`. To allow expectations on `nil` and suppress this message, set `RSpec::Mocks.configuration.allow_message_expectations_on_nil` to `true`. To disallow expectations on `nil`, set `RSpec::Mocks.configuration.allow_message_expectations_on_nil` to `false`. Called from /builds/gitlab-org/gitlab/spec/workers/ci/parse_secure_file_metadata_worker_spec.rb:25:in `block (4 levels) in <top (required)>'.8303 does not call update_metadata!8304Mutations::Ci::JobTokenScope::AddProject8305 #resolve8306 when user is not logged in8307 raises error8308 when user is logged in8309 when user does not have permissions to admin project8310 raises error8311 when user has permissions to admin project and read target project8312 adds target project to the outbound job token scope by default8313 when mutation uses the direction argument8314 when targeting the outbound allowlist8315 adds the target project8316 when targeting the inbound allowlist8317 adds the target project8318 when the service returns an error8319 returns an error response8320Resolvers::AlertManagement::IntegrationsResolver8321 is expected to have nullable GraphQL type AlertManagementIntegrationConnection8322 user does not have permission8323 is expected to be empty8324 user has permission8325 is expected to contain exactly #<AlertManagement::HttpIntegration id: 1, created_at: "2023-04-19 10:02:15.841352576 +0000", updated_...tifier: "9c1c0122", name: "DataDog", payload_example: {}, payload_attribute_mapping: {}, token: nil> and #<Integrations::Prometheus id: 4, project_id: 841, created_at: "2023-04-19 10:02:15.805704719 +0000",...ted_properties_iv: "t\x96\xB6Hr\xD5\x87\t\x1A\xB2\x1E\xB0", incident_events: false, properties: nil>8326 when HTTP Integration ID is given8327 when integration is from the current project8328 is expected to contain exactly #<AlertManagement::HttpIntegration id: 2, created_at: "2023-04-19 10:02:15.847563066 +0000", updated_...tifier: "9451e9dd", name: "DataDog", payload_example: {}, payload_attribute_mapping: {}, token: nil>8329 when integration is from other project8330 is expected to be empty8331 when Prometheus Integration ID is given8332 when integration is from the current project8333 is expected to contain exactly #<Integrations::Prometheus id: 4, project_id: 841, created_at: "2023-04-19 10:02:15.805704719 +0000",...ted_properties_iv: "t\x96\xB6Hr\xD5\x87\t\x1A\xB2\x1E\xB0", incident_events: false, properties: nil>8334 when integration is from other project8335 is expected to be empty8336Resolvers::ProjectPipelinesResolver8337 when the user does have access8338 resolves only MRs for the passed merge request8339 when the user does not have access8340 does not return pipeline data8341Releases::ManageEvidenceWorker8342 when `released_at` in inside the window8343 when Evidence has not been created8344 creates a new Evidence record8345 when evidence has already been created8346 behaves like does not create a new Evidence record8347 sidekiq_inline8348 when `released_at` is outside the window8349 behaves like does not create a new Evidence record8350 sidekiq_inline8351IssueLinks::DestroyService8352 #execute8353 behaves like a destroyable issuable link8354 when successfully removes an issuable link8355 removes related issue8356 creates notes8357 returns success message8358 when failing to remove an issuable link8359 does not remove relation8360 does not create notes8361 returns error message8362 when target is an incident8363 behaves like an incident management tracked event8364 .track_event8365 tracks the event using redis8366 behaves like Snowplow event tracking with RedisHLL context8367 behaves like Snowplow event tracking8368 is emitted8369Gitlab::PhabricatorImport::Issues::TaskImporter8370 #execute8371 creates the issue with the expected attributes8372 does not recreate the issue when called multiple times8373 does not trigger a save when the object did not change8374 links the author if the author can be found8375 links an assignee if the user can be found8376DesignManagement::GitRepository8377 # order random8378 #attributes8379 confirms that all files are LFS enabled8380 #copy_gitattributes8381 always returns regardless of whether given a valid or invalid ref8382 #gitattribute8383 returns a gitattribute when path has gitattributes8384 returns nil when path has no gitattributes8385 #attributes_at8386 is expected to eql {"diff"=>"lfs", "filter"=>"lfs", "merge"=>"lfs", "text"=>false}8387 #info_attributes8388 is expected to eql {"diff"=>"lfs", "filter"=>"lfs", "merge"=>"lfs", "text"=>false}8389Gitlab::AuthorizedKeys8390 #accessible?8391 authorized_keys file exists8392 can open file8393 is expected to be truthy8394 cannot open file8395 is expected to be falsey8396 authorized_keys file does not exist8397 is expected to be falsey8398 #create8399 authorized_keys file exists8400 is expected to be truthy8401 authorized_keys file does not exist8402 creates authorized_keys file8403 cannot create file8404 is expected to be falsey8405 #add_key8406 authorized_keys file exists8407 adds a line at the end of the file and strips trailing garbage8408 authorized_keys file does not exist8409 creates the file8410 #batch_add_keys8411 authorized_keys file exists8412 adds lines at the end of the file8413 invalid key8414 doesn't add keys8415 authorized_keys file does not exist8416 creates the file8417 #remove_key8418 authorized_keys file exists8419 removes the right line8420 authorized_keys file does not exist8421 is expected to be falsey8422 #clear8423 authorized_keys file exists8424 is expected to be truthy8425 authorized_keys file does not exist8426 is expected to be truthy8427 #list_key_ids8428 authorized_keys file exists8429 is expected to eq [1, 2, 3, 9000]8430 authorized_keys file does not exist8431 is expected to be empty8432Users::RejectService8433 #execute8434 failures8435 when the executor user is not allowed to reject users8436 returns error result8437 when the executor user is an admin in admin mode8438 when user is not in pending approval state8439 returns error result8440 success8441 when the executor user is an admin in admin mode8442 initiates user removal8443 emails the user on rejection8444 logs rejection in application logs8445 audit events8446 when not licensed8447 does not log any audit event8448JobArtifactReportEntity8449 #as_json8450 exposes file_type8451 exposes file_format8452 exposes size8453 exposes download path8454BizibleHelper8455 #bizible_enabled?8456 when bizible config is not true8457 is expected to be falsy8458 when bizible config is enabled8459 is expected to be truthy8460 with ecomm_instrumentation feature flag disabled8461 is expected to be falsey8462 with ecomm_instrumentation feature flag enabled8463 is expected to be truthy8464 with invite_email present8465 is expected to be falsy8466ContainerExpirationPolicies::CleanupService8467 #execute8468 with a successful cleanup tags service execution8469 completely clean up the repository8470 without a successful cleanup tags service execution8471 partially clean up the repository8472 with a truncated cleanup tags service response8473 partially clean up the repository8474 with no repository8475 returns an error response8476 with an invalid policy8477 returns an error response8478 with a network error8479 raises an error8480 next run scheduling8481 with cleanups started_at before policy next_run_at8482 behaves like not scheduling the next run8483 does not scheduled the next run8484 with cleanups started_at around policy next_run_at8485 behaves like not scheduling the next run8486 does not scheduled the next run8487 with only the current repository started_at before the policy next_run_at8488 behaves like scheduling the next run8489 schedules the next run8490 with cleanups started_at after policy next_run_at8491 behaves like scheduling the next run8492 schedules the next run8493 with a future policy next_run_at8494 behaves like not scheduling the next run8495 does not scheduled the next run8496JiraConnect::AppDataSerializer8497 #as_json8498 uses the subscription entity8499 includes a group path with already subscribed namespaces as skip_groups8500 is expected to include {:subscriptions_path => "/-/jira_connect/subscriptions"}8501 is expected to include {:login_path => "/-/jira_connect/users"}8502 when signed in8503 is expected to include {:login_path => nil}8504Gitlab::Ci::Config::Entry::Hidden8505 .matching?8506 when name starts with dot8507 is expected to be truthy8508 when name does not start with dot8509 is expected to be falsey8510 .new8511 validations8512 when entry config value is correct8513 #value8514 returns key value8515 #valid?8516 is valid8517 when entry value is not correct8518 when config is empty8519 #valid8520 is invalid8521 #leaf?8522 is a leaf8523 #relevant?8524 is not a relevant entry8525Packages::Pypi::SimplePackageVersionsPresenter8526 #body8527 for project8528 behaves like pypi package presenter8529 avoids N+1 database queries8530 version: ">=2.7", expected_version: ">=2.7", with_package1: true8531 is expected to include "<a href=\"http://localhost/api/v4/projects/856/packages/pypi/files/440e5e148a25331bbd7991575f7d54933...c0ebf6cc735a18ee5066ac1381bb590\" data-requires-python=\">=2.7\">sample-project-1.0.0.tar.gz</a>"8532 version: "\"><script>alert(1)</script>", expected_version: ""><script>alert(1)</script>", with_package1: true8533 is expected to include "<a href=\"http://localhost/api/v4/projects/856/packages/pypi/files/440e5e148a25331bbd7991575f7d54933...requires-python=\""><script>alert(1)</script>\">sample-project-1.0.0.tar.gz</a>"8534 version: ">=2.7, !=3.0", expected_version: ">=2.7, !=3.0", with_package1: false8535 is expected to include "<a href=\"http://localhost/api/v4/projects/856/packages/pypi/files/440e5e148a25331bbd7991575f7d54933...c735a18ee5066ac1381bb590\" data-requires-python=\">=2.7, !=3.0\">sample-project-2.0.0.tar.gz</a>"8536 for group8537 behaves like pypi package presenter8538 avoids N+1 database queries8539 version: ">=2.7", expected_version: ">=2.7", with_package1: true8540 is expected to include "<a href=\"http://localhost/api/v4/groups/2592/-/packages/pypi/files/440e5e148a25331bbd7991575f7d5493...c0ebf6cc735a18ee5066ac1381bb590\" data-requires-python=\">=2.7\">sample-project-1.0.0.tar.gz</a>"8541 version: "\"><script>alert(1)</script>", expected_version: ""><script>alert(1)</script>", with_package1: true8542 is expected to include "<a href=\"http://localhost/api/v4/groups/2592/-/packages/pypi/files/440e5e148a25331bbd7991575f7d5493...requires-python=\""><script>alert(1)</script>\">sample-project-1.0.0.tar.gz</a>"8543 version: ">=2.7, !=3.0", expected_version: ">=2.7, !=3.0", with_package1: false8544 is expected to include "<a href=\"http://localhost/api/v4/groups/2592/-/packages/pypi/files/440e5e148a25331bbd7991575f7d5493...c735a18ee5066ac1381bb590\" data-requires-python=\">=2.7, !=3.0\">sample-project-2.0.0.tar.gz</a>"8545 with package files pending destruction8546 is expected not to include "package_file_pending_destruction"8547Gitlab::Config::Entry::ComposableArray8548 #valid?8549 is valid8550 is invalid8551 is expected not to be valid8552 #compose!8553 composes child entry with configured value8554 composes child entries with configured values8555 #descendants8556 creates descendant nodes8557Packages::Npm::Metadatum8558 relationships8559 is expected to belong to package required: false inverse_of => npm_metadatum8560 validations8561 package8562 is expected to validate that :package cannot be empty/falsy8563 ensure npm package type8564 package_json8565 is expected to allow :package_json to be ‹{"name" => "foo", "version" => "v1.0", "dist" => {"tarball"=>"x", "shasum"=>"x"}}›8566 is expected to allow :package_json to be ‹{"name" => "foo", "version" => "v1.0", "dist" => {"tarball"=>"x", "shasum"=>"x"}, extra-field: {:foo=>"bar"}}›8567 is expected to allow :package_json to be ‹{"name" => "foo", "version" => "v1.0", "dist" => {"tarball"=>"x", "shasum"=>"x", :"extra-field"=>"x"}}›8568 is expected not to allow :package_json to be ‹{"version" => "v1.0", "dist" => {"tarball"=>"x", "shasum"=>"x"}}›8569 is expected not to allow :package_json to be ‹{"name" => "foo", "dist" => {"tarball"=>"x", "shasum"=>"x"}}›8570 is expected not to allow :package_json to be ‹{"name" => "foo", "version" => "v1.0"}›8571 is expected not to allow :package_json to be ‹{"name" => "foo", "version" => "v1.0", "dist" => {"shasum"=>"x"}}›8572 is expected not to allow :package_json to be ‹{"name" => "foo", "version" => "v1.0", "dist" => {"tarball"=>"x"}}›8573 is expected not to allow :package_json to be ‹{}›8574 is expected not to allow :package_json to be ‹{test: "testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest"}›8575Achievements::CreateService8576 # order random8577 #execute8578 when user does not have permission8579 returns an error8580 when user has permission8581 creates an achievement8582 returns an error when the achievement is not persisted8583JsRegexValidator8584 #validates_each8585 user_default_internal_regex: nil, result: []8586 generates correct errors8587 user_default_internal_regex: "", result: []8588 generates correct errors8589 user_default_internal_regex: "(?#comment)", result: ["Regex Pattern (?#comment) can not be expressed in Javascript"]8590 generates correct errors8591 user_default_internal_regex: "(?(a)b|c)", result: ["invalid conditional pattern: /(?(a)b|c)/i"]8592 generates correct errors8593Gitlab::Import::StuckImportJob8594 marks the stuck import project as failed and track the error on import_failures8595Projects::TopicsFinder8596 #execute8597 returns topics8598 filter by name8599 search: "topic", result: ["topicC", "topicA", "topicB"]8600 returns filtered topics8601 search: "pic", result: ["topicC", "topicA", "topicB"]8602 returns filtered topics8603 search: "B", result: []8604 returns filtered topics8605 search: "cB", result: []8606 returns filtered topics8607 search: "icB", result: ["topicB"]8608 returns filtered topics8609 search: "topicA", result: ["topicA"]8610 returns filtered topics8611 search: "topica", result: ["topicA"]8612 returns filtered topics8613 filter by without_projects8614 returns topics without assigned projects8615 returns topics without assigned projects8616Gitlab::NetHttpAdapter8617 #connect8618 uses a Gitlab::BufferedIo instance as @socket8619Gitlab::AssetProxy8620 when asset proxy is disabled8621 returns the original URL8622 when asset proxy is enabled8623 returns a proxied URL8624 returns original URL for invalid domains8625 whitelisted domain8626 returns original URL for single domain whitelist8627 returns original URL for wildcard subdomain whitelist8628Gitlab::Usage::Metrics::Instrumentations::DistinctCountProjectsWithExpirationPolicyMetric8629 # order random8630 behaves like a correct instrumented metric value8631 has correct value8632 behaves like a correct instrumented metric value8633 has correct value8634 behaves like a correct instrumented metric value8635 has correct value8636 behaves like a correct instrumented metric value8637 has correct value8638AwardEmojis::CopyService8639 #initialize8640 validates that we cannot copy AwardEmoji to the same Awardable8641 #execute8642 copies AwardEmojis8643 returns success8644schema_version_check rake task8645 allows migrations on databases meeting the min schema version requirement8646 raises an error when schema version is too old to migrate8647 skips running validation when passed the skip env variable8648 allows migrations on fresh databases8649admin/application_settings/network.html.haml8650 # order random8651 for Projects API rate limit8652 renders the `projects_api_rate_limit_unauthenticated` field8653 when the feature flag `rate_limit_for_unauthenticated_projects_api_access` is turned off8654 does not render the `projects_api_rate_limit_unauthenticated` field8655IncidentManagement::TimelineEventTagLink8656 # order random8657 associations8658 is expected to belong to timeline_event required: false8659 is expected to belong to timeline_event_tag required: false8660ActsAsTaggableOn::Tagging8661 has the same connection as Ci::ApplicationRecord8662 has the same sticking as Ci::ApplicationRecord8663Sidebars::UserSettings::Panel8664 # order random8665 implements #super_sidebar_context_header8666Gitlab::Ci::Config::Entry::Inherit::Default8667 validations8668 config: true, valid: true8669 is expected to eq true8670 config: false, valid: true8671 is expected to eq true8672 config: ["image"], valid: true8673 is expected to eq true8674 config: ["unknown"], valid: false8675 is expected to eq false8676 config: [:image], valid: false8677 is expected to eq false8678 config: [true], valid: false8679 is expected to eq false8680 config: "string", valid: false8681 is expected to eq false8682 #inherit?8683 config: true, inherit: true8684 is expected to eq true8685 config: false, inherit: false8686 is expected to eq false8687 config: ["image"], inherit: true8688 is expected to eq true8689 config: ["before_script"], inherit: false8690 is expected to eq false8691Types::CustomerRelations::ContactStateCountsType8692 is expected to eq "ContactStateCounts"8693 is expected to have graphql fields "all", "active", and "inactive"8694 is expected to require graphql authorizations :read_crm_contact8695Gitlab::SidekiqMiddleware::AdminMode::Client8696 yields block8697 user is a regular user8698 no admin mode field in payload8699 user is an administrator8700 admin mode disabled8701 no admin mode field in payload8702 admin mode enabled8703 when sidekiq required context not set8704 no admin mode field in payload8705 when user stored in current request8706 has admin mode field in payload8707 when bypassing session8708 has admin mode field in payload8709 admin mode setting disabled8710 yields block8711 no admin mode field in payload8712Gitlab::Usage::Metrics::Instrumentations::CountUsersCreatingIssuesMetric8713 with all time frame8714 behaves like a correct instrumented metric value and query8715 behaves like a correct instrumented metric value8716 has correct value8717 behaves like a correct instrumented metric query8718 has correct generate query8719 for 28d time frame8720 behaves like a correct instrumented metric value and query8721 behaves like a correct instrumented metric value8722 has correct value8723 behaves like a correct instrumented metric query8724 has correct generate query8725Mail STARTTLS patch8726 # order random8727 when enable_starttls and tls are enabled8728 raises an argument exception8729 ssl: true, tls: nil, enable_starttls: nil, enable_starttls_auto: nil, smtp_tls: true, smtp_starttls_mode: false8730 sets TLS and STARTTLS settings properly8731 ssl: false, tls: false, enable_starttls: true, enable_starttls_auto: false, smtp_tls: false, smtp_starttls_mode: :always8732 sets TLS and STARTTLS settings properly8733 ssl: false, tls: nil, enable_starttls: :always, enable_starttls_auto: nil, smtp_tls: false, smtp_starttls_mode: :always8734 sets TLS and STARTTLS settings properly8735 ssl: false, tls: nil, enable_starttls: :auto, enable_starttls_auto: nil, smtp_tls: false, smtp_starttls_mode: :auto8736 sets TLS and STARTTLS settings properly8737 ssl: nil, tls: false, enable_starttls: nil, enable_starttls_auto: nil, smtp_tls: false, smtp_starttls_mode: :auto8738 sets TLS and STARTTLS settings properly8739 ssl: false, tls: false, enable_starttls: false, enable_starttls_auto: nil, smtp_tls: false, smtp_starttls_mode: false8740 sets TLS and STARTTLS settings properly8741 ssl: false, tls: nil, enable_starttls: false, enable_starttls_auto: false, smtp_tls: false, smtp_starttls_mode: false8742 sets TLS and STARTTLS settings properly8743 ssl: nil, tls: false, enable_starttls: nil, enable_starttls_auto: true, smtp_tls: false, smtp_starttls_mode: :auto8744 sets TLS and STARTTLS settings properly8745TodosDestroyer::ConfidentialIssueWorker8746 calls the Todos::Destroy::ConfidentialIssueService with issue_id parameter8747 calls the Todos::Destroy::ConfidentialIssueService with project_id parameter8748Gitlab::Webpack::FileLoader8749 with dev server enabled8750 returns content when responds successfully8751 raises error when 4048752 raises error when errors out8753 with dev server enabled and https8754 raises error if catches SSLError8755 with dev server disabled8756 .load8757 returns file content from file path8758 throws error if file cannot be read8759Resolvers::DeploymentResolver8760 # order random8761 #resolve8762 finds the deployment8763 does not find the deployment if the IID does not match8764events/event/_push.html.haml8765 with a branch8766 links to the branch8767 that has been deleted8768 does not link to the branch8769 ref_count is more than 18770 includes the count in the text8771 with a tag8772 links to the tag8773 that has been deleted8774 does not link to the tag8775 ref_count is more than 18776 includes the count in the text8777SafeZip::Extract8778 #extract8779 when using valid-simple.zip archive8780 behaves like extracts archive8781 when specifying directories8782 does extract archive8783 when specifying files8784 does extract archive8785 when using valid-symlinks-first.zip archive8786 behaves like extracts archive8787 when specifying directories8788 does extract archive8789 when specifying files8790 does extract archive8791 when using valid-non-writeable.zip archive8792 behaves like extracts archive8793 when specifying directories8794 does extract archive8795 when specifying files8796 does extract archive8797 when zip files are invalid8798 name: "invalid-symlink-does-not-exist.zip", message: "does not exist"8799 behaves like fails to extract archive8800 does not extract archive8801 name: "invalid-symlinks-outside.zip", message: "Symlink cannot be created"8802 behaves like fails to extract archive8803 does not extract archive8804 name: "invalid-unexpected-large.zip", message: "larger when inflated"8805 behaves like fails to extract archive8806 does not extract archive8807 when no matching directories are found8808 behaves like fails to extract archive8809 does not extract archive8810 when no matching files are found8811 behaves like fails to extract archive8812 does not extract archive8813Gitlab::GithubGistsImport::Representation::Gist8814 # order random8815 .from_api_response8816 behaves like a Gist8817 returns an instance of Gist8818 with Gist8819 includes gist attributes8820 #truncated_title8821 truncates the title to 255 characters8822 does not truncate the title if it is shorter than 255 characters8823 #github_identifiers8824 returns a hash with needed identifiers8825 .from_json_hash8826 behaves like a Gist8827 returns an instance of Gist8828 with Gist8829 includes gist attributes8830 #visibility_level8831 returns 20 when public8832 returns 0 when private8833 #first_file8834 returns a hash with needed identifiers8835Gitlab::Ci::Build::Releaser8836 #script8837 all nodes8838 generates the script8839 individual nodes8840 node_name: :name, node_value: "Release $CI_COMMIT_SHA", result: "release-cli create --name \"Release $CI_COMMIT_SHA\""8841 generates the script8842 node_name: :description, node_value: "Release-cli $EXTRA_DESCRIPTION", result: "release-cli create --description \"Release-cli $EXTRA_DESCRIPTION\""8843 generates the script8844 node_name: :tag_name, node_value: "release-$CI_COMMIT_SHA", result: "release-cli create --tag-name \"release-$CI_COMMIT_SHA\""8845 generates the script8846 node_name: :tag_message, node_value: "Annotated tag message", result: "release-cli create --tag-message \"Annotated tag message\""8847 generates the script8848 node_name: :ref, node_value: "$CI_COMMIT_SHA", result: "release-cli create --ref \"$CI_COMMIT_SHA\""8849 generates the script8850 node_name: :milestones, node_value: ["m1", "m2", "m3"], result: "release-cli create --milestone \"m1\" --milestone \"m2\" --milestone \"m3\""8851 generates the script8852 node_name: :released_at, node_value: "2020-07-15T08:00:00Z", result: "release-cli create --released-at \"2020-07-15T08:00:00Z\""8853 generates the script8854 node_name: :assets, node_value: {:links=>[{:name=>"asset1", :url=>"https://example.com/assets/1", :link_type=>"other", :filepath=>"/pretty/asset/1"}]}, result: "release-cli create --assets-link \"{\\\"name\\\":\\\"asset1\\\",\\\"url\\\":\\\"https://example.com/assets/1\\\",\\\"link_type\\\":\\\"other\\\",\\\"filepath\\\":\\\"/pretty/asset/1\\\"}\""8855 generates the script8856PagesDomains::CreateService8857 # order random8858 when the user does not have the required permissions8859 does not create a pages domain and does not publish a PagesDomainCreatedEvent8860 when the user has the required permissions8861 when it saves the domain successfully8862 creates the domain and publishes a PagesDomainCreatedEvent8863 when it fails to save the domain8864 does not create a pages domain and does not publish a PagesDomainCreatedEvent8865Achievements::RevokeService8866 # order random8867 #execute8868 when user does not have permission8869 returns an error8870 when user has permission8871 revokes an achievement8872 when the achievement has already been revoked8873 returns the correct error8874 when the user achievement fails to save8875 returns the correct error8876Sidebars::Groups::Menus::ObservabilityMenu8877 # order random8878 #render?8879 when observability#explore is allowed8880 returns true8881 when observability#explore is not allowed8882 returns false8883 Menu items8884 Explore8885 behaves like observability menu entry8886 when action is allowed8887 the menu item is added to list of menu items8888 when action is not allowed8889 the menu item is added to list of menu items8890 Datasources8891 behaves like observability menu entry8892 when action is allowed8893 the menu item is added to list of menu items8894 when action is not allowed8895 the menu item is added to list of menu items8896ServiceDeskSettings::UpdateService8897 #execute8898 with valid params8899 updates service desk settings8900 when project_key is an empty string8901 sets nil project_key8902 with invalid params8903 does not update service desk settings8904WorkItems::Widgets::Labels8905 .type8906 is expected to eq :labels8907 .quick_action_params8908 is expected to include :add_label_ids, :remove_label_ids, and :label_ids8909 #type8910 is expected to eq :labels8911 #labels8912 is expected to eq #<ActiveRecord::Associations::CollectionProxy [#<ProjectLabel id:101 namespace930/project932~101>]>8913 #allowScopedLabels8914 is expected to eq false8915Gitlab::Prometheus::Queries::MatchedMetricQuery8916 with one group where two metrics is found8917 both metrics in the group pass requirements8918 responds with both metrics as actve8919 none of the metrics pass requirements8920 responds with both metrics missing requirements8921 no series information found about the metrics8922 responds with both metrics missing requirements8923 one of the series info was not found8924 responds with one active and one missing metric8925 with one group where only one metric is found8926 both metrics in the group pass requirements8927 responds with one metrics as active and no missing requiremens8928 no metrics in group pass requirements8929 responds with one metrics as active and no missing requiremens8930 with two groups where metrics are found in each group8931 all metrics in both groups pass requirements8932 responds with one metrics as active and no missing requiremens8933 no metrics in groups pass requirements8934 responds with one metrics as active and no missing requiremens8935Gitlab::Database::Type::Color8936 serializes by calling #to_s8937 serializes nil to nil8938 casts by calling Color::new8939 accepts colors as arguments to cast8940 allows nil database values8941 tells us what is serializable8942 tells us what is not serializable8943projects/blob/_viewer.html.haml8944 when the viewer is loaded asynchronously8945 when there is no render error8946 adds a URL to the blob viewer element8947 renders the loading indicator8948 when there is a render error8949 renders the error8950 when the viewer is loaded synchronously8951 when there is no render error8952 prepares the viewer8953 renders the viewer8954 when there is a render error8955 renders the error8956Gitlab::Kas::Client8957 #initialize8958 kas is not enabled8959 raises a configuration error8960 internal url is not set8961 raises a configuration error8962 gRPC calls8963 #get_connected_agents8964 is expected to eq [#<Double (anonymous)>]8965 #list_agent_config_files8966 is expected to eq [#<Double (anonymous)>]8967 with grpcs8968 uses a ChannelCredentials object with the correct certificates8969Environments::CanaryIngress::UpdateWorker8970 #perform8971 executes the update service8972 when an environment does not exist8973 does not execute the update service8974Snippets::RepositoryValidationService8975 #execute8976 returns error when the repository has more than one branch8977 returns error when existing branch name is not the default one8978 returns error when the repository has tags8979 returns error when the repository has more file than the limit8980 returns error when the repository has no files8981 returns error when the repository size is over the limit8982 returns success when no validation errors are raised8983DevOpsReportHelper8984 #devops_score_metrics8985 is expected to eq {:scoreLevel=>{:icon=>"status-alert", :label=>"Moderate", :variant=>"warning"}, :value=>"55.9"}8986 is expected to eq {:leadInstance=>"9.3", :score=>"13.3", :scoreLevel=>{:label=>"Low", :variant=>"muted"}, :title=>"Issues created per active user", :usage=>"1.2"}8987 is expected to eq {:leadInstance=>"30.3", :score=>"92.7", :scoreLevel=>{:label=>"High", :variant=>"success"}, :title=>"Comments created per active user", :usage=>"28.1"}8988 is expected to eq {:leadInstance=>"5.2", :score=>"62.4", :scoreLevel=>{:label=>"Moderate", :variant=>"neutral"}, :title=>"Boards created per active user", :usage=>"3.3"}8989 is expected to eq "2021-04-03 02:01"8990 with low average score8991 is expected to eq {:scoreLevel=>{:icon=>"status-failed", :label=>"Low", :variant=>"danger"}, :value=>"2.0"}8992 with high average score8993 is expected to eq {:scoreLevel=>{:icon=>"status_success_solid", :label=>"High", :variant=>"success"}, :value=>"82.0"}8994 with blank metrics8995 is expected to eq {}8996Gitlab::Graphql::Authorize::ObjectAuthorization8997 #ok?8998 when there are no abilities8999 is expected to be ok #<Double (anonymous)> and #<Double (anonymous)>9000 when no ability should be allowed9001 is expected not to be ok #<struct Foo x=0, y=0> and #<Double :User>9002 when go_fast should be allowed9003 is expected not to be ok #<struct Foo x=100, y=0> and #<Double :User>9004 when go_fast and go_slow should be allowed9005 is expected to be ok #<struct Foo x=100, y=100> and #<Double :User>9006 when the object delegates to another subject9007 is expected to be ok #<Double :Proxy> and #<Double :User>9008 is expected not to be ok #<Double :Proxy> and #<Double :User>9009Integrations::Pushover9010 Validations9011 when integration is active9012 is expected to validate that :api_key cannot be empty/falsy9013 is expected to validate that :user_key cannot be empty/falsy9014 is expected to validate that :priority cannot be empty/falsy9015 when integration is inactive9016 is expected not to validate that :api_key cannot be empty/falsy9017 is expected not to validate that :user_key cannot be empty/falsy9018 is expected not to validate that :priority cannot be empty/falsy9019 Execute9020 calls Pushover API9021Gitlab::Diff::PositionCollection9022 #to_a9023 returns all positions that are Gitlab::Diff::Position9024 #unfoldable9025 returns unfoldable diff positions9026 when given head_sha does not match with positions head_sha9027 returns no position9028 when given head_sha is nil9029 returns unfoldable diff positions unfiltered by head_sha9030 #concat9031 returns a Gitlab::Diff::Position9032 concatenates the new position to the collection9033Gitlab::ReferenceCounter9034 #increase9035 increases and sets the expire time of a reference count for a path9036 #decrease9037 decreases the reference count for a path9038 warns if attempting to decrease a counter with a value of zero or less, and resets the counter9039 #value9040 get the reference count for a path9041 #reset!9042 resets reference count down to zero9043 #expires_in9044 displays the expiration time in seconds9045BitbucketServer::Representation::Repo9046 #project_key9047 is expected to eq "TEST"9048 #project_name9049 is expected to eq "test"9050 #slug9051 is expected to eq "rouge"9052 #browse_url9053 is expected to eq "http://localhost:7990/projects/TEST/repos/rouge/browse"9054 #clone_url9055 is expected to eq "http://root@localhost:7990/scm/test/rouge.git"9056 #description9057 is expected to eq "Rogue Repo"9058 #full_name9059 is expected to eq "test/rouge"9060safe_sesion_store_patch9061 # order random9062 with ActionController::TestSession9063 behaves like safe session store9064 allows storing a String9065 raises error when session attempts to store an unsafe object9066 allows instance double of OneLogin::RubySaml::Response9067 raises an error for instance double of REXML::Document9068 with ActionDispatch::Request::Session9069 behaves like safe session store9070 allows storing a String9071 raises error when session attempts to store an unsafe object9072 allows instance double of OneLogin::RubySaml::Response9073 raises an error for instance double of REXML::Document9074RuboCop::Cop::RSpec::DuplicateSpecLocation9075 # order random9076 for a non-EE spec file9077 registers no offenses9078 for an EE spec file for EE extension9079 registers no offenses9080 when there is a duplicate file9081 marks the describe as offending9082 for an EE application file9083 registers no offenses9084 for an EE spec file for EE only code9085 registers no offenses9086 when there is a duplicate file9087 marks the describe as offending9088 for a non-EE application file9089 registers no offenses9090Gitlab::WordDiff::ChunkCollection9091 #add9092 adds elements to the chunk collection9093 #content9094 when no elements in the collection9095 is expected to eq ""9096 when elements exist9097 is expected to eq "Hi GitLab!"9098 #reset9099 clears the collection9100 #marker_ranges9101 returns marker ranges for every chunk with changes9102SnippetUserMention9103 associations9104 is expected to belong to snippet required: false9105 is expected to belong to note required: false9106 behaves like has user mentions9107 #has_mentions?9108 when no mentions9109 returns false9110 when mentioned_users_ids not null9111 returns true9112 when mentioned projects9113 returns true9114 when mentioned groups9115 returns true9116Ci::Runners::StaleMachinesCleanupCronWorker9117 # order random9118 #perform9119 behaves like an idempotent worker9120 is labeled as idempotent9121 performs multiple times sequentially without raising an exception9122 delegates to Ci::Runners::StaleMachinesCleanupService9123 cleans up stale runner managers9124Namespaces::SyncEvent9125 # order random9126 .enqueue_worker9127 schedules Namespaces::ProcessSyncEventsWorker job9128 .upper_bound_count9129 returns 0 when there are no records in the table9130 returns an estimated number of the records in the database9131profiles/show9132 when the profile page is opened9133 displays the correct elements9134 renders required hidden inputs for set status form9135Gitlab::Tracking::Helpers::WeakPasswordErrorEvent9136 # order random9137 when user does not have a weak password error9138 does not track the event9139 when user does not have any errors9140 does not track the event9141 when user has a weak password error9142 tracks the event9143Gitlab::DoorkeeperSecretStoring::Secret::Pbkdf2Sha5129144 # order random9145 .secret_matches?9146 match by hashing the input if the stored value is hashed9147 SALT9148 is empty9149 STRETCHES9150 is 20_0009151 .transform_secret9152 generates a PBKDF2+SHA512 hashed value in the correct format9153Gitlab::Git::CommitStats9154 returns commit stats and caches them9155Gitlab::Metrics::Subscribers::Ldap9156 # order random9157 #observe_event9158 tracks LDAP request count9159 tracks LDAP request duration9160 stores per-request counters9161 .payload9162 when SafeRequestStore is empty9163 returns an empty array9164 when LDAP recorded some values9165 returns the populated payload9166Gitlab::GithubImport::Stage::ImportProtectedBranchesWorker9167 # order random9168 #import9169 imports all the pull requests9170 when an error raised9171 raises an error9172Gitlab::Usage::Metrics::Aggregates::Sources::RedisHll9173 .calculate_events_union9174 calls Gitlab::UsageDataCounters::HLLRedisCounter.calculate_events_union9175 prevents from using fallback value as valid union result9176 .calculate_metrics_intersections9177 uses values returned by union to compute the intersection9178 raises error if union is < 09179CrudPolicyHelpers9180 .create_read_update_admin_destroy9181 returns an array of the appropriate abilites given a feature name9182 .create_update_admin_destroy9183 returns an array of the appropriate abilites given a feature name9184 .create_update_admin9185 returns an array of the appropriate abilites given a feature name9186RepositoryCheck::DispatchWorker9187 does nothing when repository checks are disabled9188 does nothing if the exclusive lease is taken9189 dispatches work to RepositoryCheck::BatchWorker9190 with unhealthy shard9191 only triggers RepositoryCheck::BatchWorker for healthy shards9192 logs unhealthy shards9193Gitlab::GithubImport::AttachmentsDownloader9194 # order random9195 #perform9196 when file valid9197 downloads file9198 when filename is malicious9199 raises expected exception9200 when file size exceeds limit9201 raises expected exception9202 when file name length exceeds limit9203 chops filename9204 #delete9205 removes file with parent folder9206RuboCop::Cop::AvoidBecomes9207 # order random9208 flags the use of becomes with a namespaced constant parameter9209 flags the use of becomes with a constant parameter9210 flags the use of becomes with a dynamic parameter9211Gitlab::DataBuilder::Alert9212 .build9213 is expected to be a kind of Hash9214 is expected to eq "alert"9215 contains the correct object attributes9216Groups::DeployTokens::DestroyService9217 behaves like a deploy token deletion service9218 #execute9219 destroys a token record and it's associated DeployToken9220 invalid token id9221 raises an error9222Gitlab::Database::PostgresAutovacuumActivity9223 is expected to be a kind of Gitlab::Database::SharedModel(abstract)9224 .for_tables9225 returns autovacuum activity for queries tables9226Gitlab::Instrumentation::RateLimitingGates9227 .gates9228 returns an empty array when no gates are tracked9229 returns all gates used in the request9230 deduplicates its results9231 .payload9232 returns the gates in a hash9233Gitlab::GithubImport::ProjectRelationType9234 # order random9235 #for9236 when it's user owned repo9237 is expected to eq "owned"9238 when it's organization repo9239 is expected to eq "organization"9240 when it's user collaborated repo9241 is expected to eq "collaborated"9242 with cache9243 calls client only once during 5 minutes timeframe9244Gitlab::Ci::Reports::Security::Flag9245 #initialize9246 when all params are given9247 initializes an instance9248 #to_h9249 returns expected hash9250 #false_positive?9251 is expected to be truthy9252Types::ProjectMemberType9253 is expected to expose permissions using Types::PermissionTypes::Project9254 is expected to eq "ProjectMember"9255 is expected to require graphql authorizations :read_project9256 has the expected fields9257Ci::JobArtifacts::ExpireProjectBuildArtifactsWorker9258 #perform9259 executes ExpireProjectArtifactsService service with the project9260 when project does not exist9261 does nothing9262countries9263 # order random9264 configures locals to EN9265 initialises Taiwan with custom country name9266 initialises Ukraine with custom country name9267ProductAnalytics::EventParams9268 .parse_event_params9269 extracts all params from raw event9270 .has_required_params?9271 aid and eid are present9272 is expected to be truthy9273 aid and eid are missing9274 is expected to be falsey9275 eid is missing9276 is expected to be falsey9277Types::Ci::Config::NeedType9278 is expected to eq "CiConfigNeed"9279 exposes the expected fields9280Gitlab::Middleware::RackMultipartTempfileFactory9281 for a multipart request9282 immediately unlinks the temporary file9283 processes the request as normal9284 for a regular request9285 does nothing9286TestReportsComparerSerializer9287 #to_json9288 when head and base reports include two test suites9289 when the status of head report is success9290 matches the schema9291 when the status of head report is failed9292 matches the schema9293 when the status of head report is resolved9294 matches the schema9295Types::Ci::Config::IncludeTypeEnum9296 is expected to eq "CiConfigIncludeType"9297 exposes all the existing include types9298Gitlab::Email::Message::BuildIosAppGuide9299 contains the correct message9300API::Entities::Snippets::RepositoryStorageMove9301 #as_json9302 includes basic fields9303Analytics::CycleAnalytics::StageEntity9304 exposes start and end event descriptions9305 exposes start_event and end_event objects9306Gitlab::Git::Patches::Collection9307 #size9308 combines the size of the patches9309 #valid_size?9310 is not valid if the total size is bigger than 2MB9311RuboCop::Cop::Gitlab::FinderWithFindBy9312 # order random9313 when calling execute.find9314 registers an offense and corrects9315 when called within the `FinderMethods` module9316 does not register an offense9317Banzai::RenderContext9318 #project_for_node9319 returns the default project if no associated project was found9320 returns the associated project if one was associated explicitly9321 returns the project associated with a DocumentFragment when using a node9322Types::Ci::JobStatusEnum9323 exposes all job status values9324Gitlab::GithubImport::Importer::IssueAndLabelLinksImporter9325 #execute9326 imports an issue and its labels9327Types::Metadata::KasType9328 is expected to eq "Kas"9329 is expected to require graphql authorizations :read_instance_metadata9330Projects::Security::ConfigurationHelper9331 security_upgrade_path9332 is expected to eq "https://about.gitlab.com/pricing/"9333 vulnerability_training_docs_path9334 is expected to eq "/help/user/application_security/vulnerabilities/index#enable-security-training-for-vulnerabilities"9335Gitlab::Ci::Config::External::Mapper::Filter9336 # order random9337 #process9338 filters locations according to rules9339Gitlab::Database::SchemaValidation::Validators::BaseValidator9340 # order random9341 .all_validators9342 returns an array of all validators9343 #execute9344 raises an exception9345SystemCheck::BaseCheck9346 helpers on instance level9347 responds to SystemCheck::Helpers methods9348 responds to Gitlab::TaskHelpers methods9349Gitlab::RuggedInstrumentation9350 .query_time9351 increments query times9352 .increment_query_count9353 tracks query counts9354Mattermost::Client9355 JSON parse error9356 yields an error on malformed JSON9357/builds/gitlab-org/gitlab/spec/lib/mattermost/client_spec.rb:12: warning: redefining constant Struct::Request9358 shows a client error if the request was unsuccessful9359Gitlab::TcpChecker9360 #check9361 can connect to an open port9362 fails to connect to a closed port9363Import::GithubRealtimeRepoEntity9364 # order random9365 exposes correct attributes9366 when import stats is failed9367 includes import_error9368Gitlab::Ci::Parsers::Instrumentation9369 #parse!9370 sets metrics for duration of parsing9371Gitlab::Database::ShaAttribute9372 #deserialize9373 converts the binary SHA to a String9374 #serialize9375 converts a SHA String to binary data9376RegistrationsHelper9377 #signup_username_data_attributes9378 has expected attributes9379TodosDestroyer::PrivateFeaturesWorker9380 calls the Todos::Destroy::PrivateFeaturesService with the params it was given9381Types::Packages::PackageStatusEnum9382 exposes all package statuses9383GroupIssuableAutocompleteEntity9384 #represent9385 includes the iid, title, and reference9386Integrations::HarborSerializers::ArtifactSerializer9387 represents Integrations::HarborSerializers::ArtifactEntity entities9388Knapsack report was generated. Preview:9389{9390 "spec/lib/gitlab/ci/templates/auto_devops_gitlab_ci_yaml_spec.rb": 322.58997579199996,9391 "spec/rubocop/cop/rspec/invalid_feature_category_spec.rb": 43.28879181500008,9392 "spec/lib/gitlab/diff/file_spec.rb": 90.70681343900003,9393 "spec/lib/banzai/filter/repository_link_filter_spec.rb": 83.22479434000002,9394 "spec/lib/gitlab/import_export/project/relation_factory_spec.rb": 62.461181357999976,9395 "spec/services/packages/maven/metadata/create_versions_xml_service_spec.rb": 54.492395320000014,9396 "spec/services/resource_access_tokens/create_service_spec.rb": 32.17070151200005,9397 "spec/lib/release_highlights/validator_spec.rb": 50.43272498600004,9398 "spec/lib/gitlab/ssh_public_key_spec.rb": 7.3479222029998255,9399 "spec/lib/gitlab/rack_attack/request_spec.rb": 5.251641553000127,9400 "spec/lib/gitlab/ci/config/entry/job_spec.rb": 5.605356666000034,9401 "spec/lib/feature_spec.rb": 10.347467824000205,9402 "spec/lib/gitlab/data_builder/push_spec.rb": 27.306002825000178,9403 "spec/models/concerns/token_authenticatable_spec.rb": 13.962564332999591,9404 "spec/lib/gitlab/database/batch_count_spec.rb": 9.781732524000063,9405 "spec/lib/gitlab/redis/db_load_balancing_spec.rb": 4.508642561999977,9406 "spec/lib/gitlab/import_export/fast_hash_serializer_spec.rb": 20.845904001000008,9407 "spec/services/work_items/parent_links/create_service_spec.rb": 17.36549517000003,9408 "spec/helpers/users_helper_spec.rb": 9.51599722800006,9409 "spec/services/post_receive_service_spec.rb": 8.921708085999853,9410 "spec/services/clusters/kubernetes/create_or_update_namespace_service_spec.rb": 15.020216665000135,9411 "spec/rubocop/cop/gitlab/mark_used_feature_flags_spec.rb": 3.9621806790000846,9412 "spec/graphql/mutations/releases/update_spec.rb": 11.586101490000146,9413 "spec/services/labels/available_labels_service_spec.rb": 14.246745548000035,9414 "spec/models/concerns/chronic_duration_attribute_spec.rb": 9.246252434000098,9415 "spec/lib/gitlab_spec.rb": 2.5623809460000757,9416 "spec/services/ci/reset_skipped_jobs_service_spec.rb": 13.332805574999838,9417 "spec/lib/gitlab/workhorse_spec.rb": 5.785601960999884,9418 "spec/models/concerns/reactive_caching_spec.rb": 3.025058890000082,9419 "spec/helpers/appearances_helper_spec.rb": 5.512639118999914,9420 "spec/services/projects/container_repository/gitlab/cleanup_tags_service_spec.rb": 5.840910972000074,9421 "spec/models/ssh_host_key_spec.rb": 3.6810164850001,9422 "spec/models/ci/build_metadata_spec.rb": 7.15476882300004,9423 "spec/lib/gitlab/redis/rate_limiting_spec.rb": 2.1602168169999914,9424 "spec/workers/incident_management/process_alert_worker_v2_spec.rb": 7.894305509999867,9425 "spec/services/draft_notes/create_service_spec.rb": 11.43883711400008,9426 "spec/models/analytics/cycle_analytics/aggregation_spec.rb": 3.9666713070000696,9427 "spec/finders/clusters/kubernetes_namespace_finder_spec.rb": 11.584735534999936,9428 "spec/services/files/update_service_spec.rb": 7.709420894999994,9429 "spec/lib/container_registry/migration_spec.rb": 1.9100715120000586,9430 "spec/workers/concerns/worker_attributes_spec.rb": 2.0554158870002084,9431 "spec/services/pages/migrate_legacy_storage_to_deployment_service_spec.rb": 7.132953906000012,9432 "spec/finders/concerns/finder_with_group_hierarchy_spec.rb": 6.205150959000093,9433 "spec/models/personal_snippet_spec.rb": 2.4794511519999105,9434 "spec/policies/design_management/design_policy_spec.rb": 4.129201422000051,9435 "spec/bin/sidekiq_cluster_spec.rb": 7.678832296999872,9436 "spec/lib/gitlab/import_export/group/relation_tree_restorer_spec.rb": 8.915820281999913,9437 "spec/lib/gitlab/ci/reports/test_suite_comparer_spec.rb": 2.340390646999822,9438 "spec/policies/personal_snippet_policy_spec.rb": 5.152249966999989,9439 "spec/models/concerns/ci/has_ref_spec.rb": 4.873547516999906,9440 "spec/scripts/review_apps/automated_cleanup_spec.rb": 1.5287770649999857,9441 "spec/lib/gitlab/http_io_spec.rb": 1.9787901090001014,9442 "spec/presenters/project_member_presenter_spec.rb": 4.220894580000049,9443 "spec/models/packages/nuget/metadatum_spec.rb": 2.2750566780000554,9444 "spec/views/ci/status/_badge.html.haml_spec.rb": 6.441810121000117,9445 "spec/lib/gitlab/ci/config/entry/service_spec.rb": 1.5936007330001303,9446 "spec/models/programming_language_spec.rb": 3.0445086419999825,9447 "spec/services/security/ci_configuration/sast_iac_create_service_spec.rb": 4.443705022000131,9448 "spec/lib/gitlab/import_export/command_line_util_spec.rb": 2.809526180000148,9449 "spec/lib/gitlab/harbor/query_spec.rb": 2.2024299120000705,9450 "spec/serializers/issue_sidebar_basic_entity_spec.rb": 6.388426888999902,9451 "spec/lib/gitlab/checks/push_check_spec.rb": 4.931447574000003,9452 "spec/initializers/secret_token_spec.rb": 2.2912735390000307,9453 "spec/workers/merge_requests/create_approval_event_worker_spec.rb": 5.106217422999862,9454 "spec/services/merge_requests/handle_assignees_change_service_spec.rb": 4.702307037000082,9455 "spec/lib/gitlab/ci/pipeline/chain/config/content_spec.rb": 4.769231564999927,9456 "spec/serializers/diff_viewer_entity_spec.rb": 5.265684349999901,9457 "spec/models/custom_emoji_spec.rb": 1.7138493880001988,9458 "spec/lib/gitlab/ci/badge/coverage/template_spec.rb": 1.0682019460000447,9459 "spec/models/group_deploy_key_spec.rb": 1.6855832989999726,9460 "spec/services/ml/experiment_tracking/candidate_repository_spec.rb": 2.845756960000017,9461 "spec/lib/gitlab/ci/badge/release/latest_release_spec.rb": 5.3818455190000805,9462 "spec/tasks/gitlab/container_registry_rake_spec.rb": 2.265703614000131,9463 "spec/views/layouts/_header_search.html.haml_spec.rb": 1.7786463740001182,9464 "spec/services/labels/create_service_spec.rb": 4.0071358999998665,9465 "spec/lib/gitlab/git/merge_base_spec.rb": 1.470122731000174,9466 "spec/lib/gitlab/ci/parsers/security/sast_spec.rb": 3.900734437999972,9467 "spec/services/alert_management/alerts/todo/create_service_spec.rb": 1.8476397790000192,9468 "spec/lib/gitlab/github_import/importer/note_attachments_importer_spec.rb": 3.6139062940001168,9469 "spec/models/group_label_spec.rb": 1.7564543549999598,9470 "spec/lib/gitlab/database/dynamic_model_helpers_spec.rb": 3.908178046999865,9471 "spec/lib/error_tracking/sentry_client/api_urls_spec.rb": 1.0791118950000964,9472 "spec/lib/sidebars/user_profile/menus/groups_menu_spec.rb": 1.159077090999972,9473 "spec/lib/gitlab/patch/prependable_spec.rb": 0.9604236519999176,9474 "spec/lib/banzai/filter/image_link_filter_spec.rb": 1.1368014019999464,9475 "spec/lib/gitlab/import_export/base/object_builder_spec.rb": 2.7350472569999056,9476 "spec/lib/bulk_imports/projects/pipelines/issues_pipeline_spec.rb": 3.592155004999995,9477 "spec/lib/gitlab/github_import/representation/protected_branch_spec.rb": 0.9269579350000186,9478 "spec/support_specs/graphql/arguments_spec.rb": 0.6557047209998927,9479 "spec/services/ci/drop_pipeline_service_spec.rb": 4.604458644999795,9480 "spec/lib/gitlab/hook_data/key_builder_spec.rb": 0.8854815270001382,9481 "spec/components/pajamas/banner_component_spec.rb": 1.0494472569998834,9482 "spec/db/production/settings_spec.rb": 3.7088763579999977,9483 "spec/services/feature_flags/destroy_service_spec.rb": 1.7961548429998402,9484 "spec/models/integrations/chat_message/base_message_spec.rb": 0.6266390630000842,9485 "spec/lib/gitlab/config/entry/validators_spec.rb": 1.6241551629998412,9486 "spec/presenters/ci/trigger_presenter_spec.rb": 1.4646284129999003,9487 "spec/finders/groups/user_groups_finder_spec.rb": 2.162499081000078,9488 "spec/services/resource_events/change_labels_service_spec.rb": 2.3066475609998633,9489 "spec/lib/gitlab/ci/reports/reports_comparer_spec.rb": 0.8538735780000479,9490 "spec/lib/gitlab/diff/char_diff_spec.rb": 0.5834616240001651,9491 "spec/lib/gitlab/sidekiq_daemon/monitor_spec.rb": 1.5518587879998904,9492 "spec/policies/incident_management/timeline_event_policy_spec.rb": 2.316225151000026,9493 "spec/finders/packages/conan/package_file_finder_spec.rb": 2.7585762950000117,9494 "spec/lib/gitlab/import_export/project/sample/date_calculator_spec.rb": 0.6586916400001428,9495 "spec/graphql/resolvers/ci/runner_projects_resolver_spec.rb": 2.000287920999881,9496 "spec/services/x509_certificate_revoke_service_spec.rb": 2.069951415999867,9497 "spec/lib/sidebars/admin/menus/admin_settings_menu_spec.rb": 0.6540440210001179,9498 "spec/graphql/mutations/custom_emoji/destroy_spec.rb": 1.5158956990001116,9499 "spec/graphql/mutations/security/ci_configuration/configure_sast_spec.rb": 2.5652819070000987,9500 "spec/lib/gitlab/x509/tag_spec.rb": 1.573991296000031,9501 "spec/policies/clusters/agent_token_policy_spec.rb": 2.398922086000084,9502 "spec/graphql/mutations/ci/runner/bulk_delete_spec.rb": 1.27060543399989,9503 "spec/lib/gitlab/ci/reports/coverage_report_generator_spec.rb": 2.2652731549999316,9504 "spec/workers/ci/parse_secure_file_metadata_worker_spec.rb": 1.2836135730001388,9505 "spec/graphql/mutations/ci/job_token_scope/add_project_spec.rb": 2.789110613000048,9506 "spec/graphql/resolvers/alert_management/integrations_resolver_spec.rb": 2.515981788999852,9507 "spec/graphql/resolvers/project_pipelines_resolver_spec.rb": 1.3272187110001141,9508 "spec/workers/releases/manage_evidence_worker_spec.rb": 2.717009308000115,9509 "spec/services/issue_links/destroy_service_spec.rb": 2.4433198839999477,9510 "spec/lib/gitlab/phabricator_import/issues/task_importer_spec.rb": 2.679277299000205,9511 "spec/models/design_management/git_repository_spec.rb": 0.9220603349999692,9512 "spec/lib/gitlab/authorized_keys_spec.rb": 0.9734603720000905,9513 "spec/services/users/reject_service_spec.rb": 1.9730586319999475,9514 "spec/serializers/job_artifact_report_entity_spec.rb": 2.5562735380001413,9515 "spec/helpers/bizible_helper_spec.rb": 0.481620181000153,9516 "spec/services/container_expiration_policies/cleanup_service_spec.rb": 1.62809246300003,9517 "spec/serializers/jira_connect/app_data_serializer_spec.rb": 0.8221661109998877,9518 "spec/lib/gitlab/ci/config/entry/hidden_spec.rb": 0.6670497210000121,9519 "spec/presenters/packages/pypi/simple_package_versions_presenter_spec.rb": 1.3323292610000408,9520 "spec/lib/gitlab/config/entry/composable_array_spec.rb": 0.6494425710000087,9521 "spec/models/packages/npm/metadatum_spec.rb": 0.8045809719999397,9522 "spec/services/achievements/create_service_spec.rb": 0.9830885610001587,9523 "spec/validators/js_regex_validator_spec.rb": 0.5802275860000918,9524 "spec/workers/gitlab/import/stuck_import_job_spec.rb": 0.6079055739999148,9525 "spec/finders/projects/topics_finder_spec.rb": 1.428313474999868,9526 "spec/lib/gitlab/net_http_adapter_spec.rb": 0.3543817780000609,9527 "spec/lib/gitlab/asset_proxy_spec.rb": 0.505316829999856,9528 "spec/lib/gitlab/usage/metrics/instrumentations/distinct_count_projects_with_expiration_policy_metric_spec.rb": 2.076269322000144,9529 "spec/services/award_emojis/copy_service_spec.rb": 1.9755235820000507,9530 "spec/tasks/migrate/schema_check_rake_spec.rb": 1.9442340820000936,9531 "spec/views/admin/application_settings/network.html.haml_spec.rb": 0.7513629000000037,9532 "spec/models/incident_management/timeline_event_tag_link_spec.rb": 0.39381860100002086,9533 "spec/models/acts_as_taggable_on/tagging_spec.rb": 0.4068925799999761,9534 "spec/lib/sidebars/user_settings/panel_spec.rb": 0.38669001999983266,9535 "spec/lib/gitlab/ci/config/entry/inherit/default_spec.rb": 0.9167434410001079,9536 "spec/graphql/types/customer_relations/contact_state_counts_type_spec.rb": 0.5531828499999847,9537 "spec/lib/gitlab/sidekiq_middleware/admin_mode/client_spec.rb": 1.2130299509999531,9538 "spec/lib/gitlab/usage/metrics/instrumentations/count_users_creating_issues_metric_spec.rb": 1.41734322100001,9539 "spec/initializers/mail_starttls_patch_spec.rb": 0.7747587010001098,9540 "spec/workers/todos_destroyer/confidential_issue_worker_spec.rb": 0.4727474300000267,9541 "spec/lib/gitlab/webpack/file_loader_spec.rb": 0.6350072800000817,9542 "spec/graphql/resolvers/deployment_resolver_spec.rb": 1.4611309809999966,9543 "spec/views/events/event/_push.html.haml_spec.rb": 1.173357272000203,9544 "spec/lib/safe_zip/extract_spec.rb": 0.7350972909998745,9545 "spec/lib/gitlab/github_gists_import/representation/gist_spec.rb": 0.6286914400000114,9546 "spec/lib/gitlab/ci/build/releaser_spec.rb": 0.5999433699998917,9547 "spec/services/pages_domains/create_service_spec.rb": 1.3144315910001296,9548 "spec/services/achievements/revoke_service_spec.rb": 1.3313873810000132,9549 "spec/lib/sidebars/groups/menus/observability_menu_spec.rb": 0.7842879600000288,9550 "spec/services/service_desk_settings/update_service_spec.rb": 1.0626087209998332,9551 "spec/models/work_items/widgets/labels_spec.rb": 1.1559615610001401,9552 "spec/lib/gitlab/prometheus/queries/matched_metric_query_spec.rb": 0.7562278300001708,9553 "spec/lib/gitlab/database/type/color_spec.rb": 0.795101331000069,9554 "spec/views/projects/blob/_viewer.html.haml_spec.rb": 0.6974624909998965,9555 "spec/lib/gitlab/kas/client_spec.rb": 1.0556908800001565,9556 "spec/workers/environments/canary_ingress/update_worker_spec.rb": 1.2368520810000518,9557 "spec/services/snippets/repository_validation_service_spec.rb": 0.8447214610000628,9558 "spec/helpers/dev_ops_report_helper_spec.rb": 0.7869071310001345,9559 "spec/lib/gitlab/graphql/authorize/object_authorization_spec.rb": 0.4909383509998406,9560 "spec/models/integrations/pushover_spec.rb": 0.6363119999998617,9561 "spec/lib/gitlab/diff/position_collection_spec.rb": 0.7195473809999839,9562 "spec/lib/gitlab/reference_counter_spec.rb": 0.581848379999883,9563 "spec/lib/bitbucket_server/representation/repo_spec.rb": 0.509691420000081,9564 "spec/initializers/safe_session_store_patch_spec.rb": 0.6210946510000213,9565 "spec/rubocop/cop/rspec/duplicate_spec_location_spec.rb": 0.58110441000008,9566 "spec/lib/gitlab/word_diff/chunk_collection_spec.rb": 0.6835506410000107,9567 "spec/models/user_mentions/snippet_user_mention_spec.rb": 0.5729003100000227,9568 "spec/workers/ci/runners/stale_machines_cleanup_cron_worker_spec.rb": 0.7803974000000835,9569 "spec/models/namespaces/sync_event_spec.rb": 0.8002869809999993,9570 "spec/views/profiles/show.html.haml_spec.rb": 1.343414242000108,9571 "spec/lib/gitlab/tracking/helpers/weak_password_error_event_spec.rb": 0.5409474509999654,9572 "spec/lib/gitlab/doorkeeper_secret_storing/secret/pbkdf2_sha512_spec.rb": 0.48151356999983363,9573 "spec/lib/gitlab/git/commit_stats_spec.rb": 1.005350500999839,9574 "spec/lib/gitlab/metrics/subscribers/ldap_spec.rb": 0.6650286399999459,9575 "spec/workers/gitlab/github_import/stage/import_protected_branches_worker_spec.rb": 0.6574469410002166,9576 "spec/lib/gitlab/usage/metrics/aggregates/sources/redis_hll_spec.rb": 0.4822886599999947,9577 "spec/policies/concerns/crud_policy_helpers_spec.rb": 0.6227616010000929,9578 "spec/workers/repository_check/dispatch_worker_spec.rb": 0.6238020799999049,9579 "spec/lib/gitlab/github_import/attachments_downloader_spec.rb": 0.636968490000072,9580 "spec/rubocop/cop/avoid_becomes_spec.rb": 0.493281320000051,9581 "spec/lib/gitlab/data_builder/alert_spec.rb": 0.7792592099999638,9582 "spec/services/groups/deploy_tokens/destroy_service_spec.rb": 0.8830057100001341,9583 "spec/lib/gitlab/database/postgres_autovacuum_activity_spec.rb": 0.4082924499998626,9584 "spec/lib/gitlab/instrumentation/rate_limiting_gates_spec.rb": 0.4031510699999217,9585 "spec/lib/gitlab/github_import/project_relation_type_spec.rb": 0.4240602999998373,9586 "spec/lib/gitlab/ci/reports/security/flag_spec.rb": 0.498289399999976,9587 "spec/graphql/types/project_member_type_spec.rb": 0.4677307209999526,9588 "spec/workers/ci/job_artifacts/expire_project_build_artifacts_worker_spec.rb": 0.6941997799999626,9589 "spec/initializers/countries_spec.rb": 0.4571988410000358,9590 "spec/lib/product_analytics/event_params_spec.rb": 0.45585193100009747,9591 "spec/graphql/types/ci/config/need_type_spec.rb": 0.3108312399999704,9592 "spec/lib/gitlab/middleware/rack_multipart_tempfile_factory_spec.rb": 0.6275129410000773,9593 "spec/serializers/test_reports_comparer_serializer_spec.rb": 0.519116140000051,9594 "spec/graphql/types/ci/config/include_type_enum_spec.rb": 0.44201483999995617,9595 "spec/lib/gitlab/email/message/build_ios_app_guide_spec.rb": 0.7258437609998509,9596 "spec/lib/api/entities/snippets/repository_storage_move_spec.rb": 0.8226128899998457,9597 "spec/serializers/analytics/cycle_analytics/stage_entity_spec.rb": 0.4513312509998286,9598 "spec/lib/gitlab/git/patches/collection_spec.rb": 0.33264427999984036,9599 "spec/rubocop/cop/gitlab/finder_with_find_by_spec.rb": 0.5239837799999805,9600 "spec/lib/banzai/render_context_spec.rb": 0.45905920099994546,9601 "spec/graphql/types/ci/job_status_enum_spec.rb": 0.4285102310000184,9602 "spec/lib/gitlab/github_import/importer/issue_and_label_links_importer_spec.rb": 0.2957214400000794,9603 "spec/graphql/types/metadata/kas_type_spec.rb": 0.5118539700001747,9604 "spec/helpers/projects/security/configuration_helper_spec.rb": 0.4486890709999898,9605 "spec/lib/gitlab/ci/config/external/mapper/filter_spec.rb": 0.2891912800000682,9606 "spec/lib/gitlab/database/schema_validation/validators/base_validator_spec.rb": 0.48901201000012406,9607 "spec/lib/system_check/base_check_spec.rb": 0.6710483809999914,9608 "spec/lib/gitlab/rugged_instrumentation_spec.rb": 0.36389387000008355,9609 "spec/lib/mattermost/client_spec.rb": 0.4681563510000615,9610 "spec/lib/gitlab/tcp_checker_spec.rb": 0.4088266599999315,9611 "spec/serializers/import/github_realtime_repo_entity_spec.rb": 0.4377674100001059,9612 "spec/lib/gitlab/ci/parsers/instrumentation_spec.rb": 0.33636866000006194,9613 "spec/lib/gitlab/database/sha_attribute_spec.rb": 0.3271145409999008,9614 "spec/helpers/registrations_helper_spec.rb": 0.32159520000004704,9615 "spec/workers/todos_destroyer/private_features_worker_spec.rb": 0.35447575999978653,9616 "spec/graphql/types/packages/package_status_enum_spec.rb": 0.3021228500001598,9617 "spec/serializers/group_issuable_autocomplete_entity_spec.rb": 0.417095910000171,9618 "spec/serializers/integrations/harbor_serializers/artifact_serializer_spec.rb": 0.4653557010001359619}9620Knapsack global time execution for tests: 22m 13s9621Failures:9622 1) Mutations::Ci::Runner::BulkDelete#resolve when user can delete runners with runners specified by id ignores unknown keys from service response payload9623 Failure/Error: result = ::Ci::Runners::BulkDeleteRunnersService.new(runners: runners, current_user: current_user).execute9624 #<Ci::Runners::BulkDeleteRunnersService (class)> received :new with unexpected arguments9625 expected: ({:current_user=>#<User id:1526 @user671>, :runners=>[#<Ci::Runner id: 22, token: nil, created_at: "20...: nil, allowed_plans: [], registration_type: "registration_token", creator_id: nil, tag_list: nil>]}) (options hash)9626 got: ({:current_user=>#<User id:1526 @user671>, :runners=>#<ActiveRecord::Relation [#<Ci::Runner id: 23, to... nil, allowed_plans: [], registration_type: "registration_token", creator_id: nil, tag_list: nil>]>}) (keyword arguments)9627 Diff:9628 @@ -1,5 +1,4 @@9629 [{:current_user=>#<User id:1526 @user671>,9630 :runners=>9631 - [#<Ci::Runner id: 22, token: nil, created_at: "2023-04-19 10:02:07.945208898 +0000", updated_at: "2023-04-19 10:02:07.945208898 +0000", description: [FILTERED], contacted_at: nil, active: true, name: nil, version: nil, revision: nil, platform: "darwin", architecture: nil, run_untagged: true, locked: false, access_level: "not_protected", ip_address: nil, maximum_timeout: nil, runner_type: "group_type", token_encrypted: "|g/Ys8A6K6+nLyhlpZ6pIM/bBCY9OCP9dfeBAYPnN9Nu5ZCNwa...", public_projects_minutes_cost_factor: 1.0, private_projects_minutes_cost_factor: 1.0, config: {}, executor_type: nil, maintainer_note: nil, token_expires_at: nil, allowed_plans: [], registration_type: "registration_token", creator_id: nil, tag_list: nil>,9632 - #<Ci::Runner id: 23, token: nil, created_at: "2023-04-19 10:02:07.996437945 +0000", updated_at: "2023-04-19 10:02:07.996437945 +0000", description: [FILTERED], contacted_at: nil, active: true, name: nil, version: nil, revision: nil, platform: "darwin", architecture: nil, run_untagged: true, locked: false, access_level: "not_protected", ip_address: nil, maximum_timeout: nil, runner_type: "group_type", token_encrypted: "|NSm5dJMJpWWOA63pXJ3q/TpGJ2A1/EG1NZs/vo9jq6IT7P/ya...", public_projects_minutes_cost_factor: 1.0, private_projects_minutes_cost_factor: 1.0, config: {}, executor_type: nil, maintainer_note: nil, token_expires_at: nil, allowed_plans: [], registration_type: "registration_token", creator_id: nil, tag_list: nil>]}]9633 + #<ActiveRecord::Relation [#<Ci::Runner id: 23, token: nil, created_at: "2023-04-19 10:02:07.996437000 +0000", updated_at: "2023-04-19 10:02:07.996437000 +0000", description: [FILTERED], contacted_at: nil, active: true, name: nil, version: nil, revision: nil, platform: "darwin", architecture: nil, run_untagged: true, locked: false, access_level: "not_protected", ip_address: nil, maximum_timeout: nil, runner_type: "group_type", token_encrypted: "|NSm5dJMJpWWOA63pXJ3q/TpGJ2A1/EG1NZs/vo9jq6IT7P/ya...", public_projects_minutes_cost_factor: 1.0, private_projects_minutes_cost_factor: 1.0, config: {}, executor_type: nil, maintainer_note: nil, token_expires_at: nil, allowed_plans: [], registration_type: "registration_token", creator_id: nil, tag_list: nil>, #<Ci::Runner id: 22, token: nil, created_at: "2023-04-19 10:02:07.945208000 +0000", updated_at: "2023-04-19 10:02:07.945208000 +0000", description: [FILTERED], contacted_at: nil, active: true, name: nil, version: nil, revision: nil, platform: "darwin", architecture: nil, run_untagged: true, locked: false, access_level: "not_protected", ip_address: nil, maximum_timeout: nil, runner_type: "group_type", token_encrypted: "|g/Ys8A6K6+nLyhlpZ6pIM/bBCY9OCP9dfeBAYPnN9Nu5ZCNwa...", public_projects_minutes_cost_factor: 1.0, private_projects_minutes_cost_factor: 1.0, config: {}, executor_type: nil, maintainer_note: nil, token_expires_at: nil, allowed_plans: [], registration_type: "registration_token", creator_id: nil, tag_list: nil>]>}]9634 # ./app/graphql/mutations/ci/runner/bulk_delete.rb:32:in `resolve'9635 # ./lib/gitlab/graphql/present/field_extension.rb:18:in `resolve'9636 # ./lib/gitlab/graphql/calls_gitaly/field_extension.rb:15:in `resolve'9637 # ./spec/support/helpers/graphql_helpers.rb:165:in `block in resolve_field'9638 # ./lib/gitlab/with_request_store.rb:17:in `enabling_request_store'9639 # ./lib/gitlab/with_request_store.rb:10:in `with_request_store'9640 # ./spec/support/helpers/graphql_helpers.rb:154:in `resolve_field'9641 # ./spec/support/helpers/graphql_helpers.rb:92:in `resolve'9642 # ./spec/graphql/mutations/ci/runner/bulk_delete_spec.rb:18:in `block (3 levels) in <top (required)>'9643 # ./spec/graphql/mutations/ci/runner/bulk_delete_spec.rb:65:in `block (5 levels) in <top (required)>'9644 # ./spec/spec_helper.rb:427:in `block (3 levels) in <top (required)>'9645 # ./spec/support/sidekiq_middleware.rb:18:in `with_sidekiq_server_middleware'9646 # ./spec/spec_helper.rb:419:in `block (2 levels) in <top (required)>'9647 # ./spec/spec_helper.rb:415:in `block (3 levels) in <top (required)>'9648 # ./lib/gitlab/application_context.rb:61:in `with_raw_context'9649 # ./spec/spec_helper.rb:415:in `block (2 levels) in <top (required)>'9650 # ./spec/spec_helper.rb:242:in `block (2 levels) in <top (required)>'9651 # ./spec/support/system_exit_detected.rb:7:in `block (2 levels) in <top (required)>'9652 # ./spec/support/database/prevent_cross_joins.rb:108:in `block (3 levels) in <top (required)>'9653 # ./spec/support/database/prevent_cross_joins.rb:62:in `with_cross_joins_prevented'9654 # ./spec/support/database/prevent_cross_joins.rb:108:in `block (2 levels) in <top (required)>'9655Finished in 22 minutes 18 seconds (files took 48.46 seconds to load)96564162 examples, 1 failure9657Failed examples:9658rspec ./spec/graphql/mutations/ci/runner/bulk_delete_spec.rb:51 # Mutations::Ci::Runner::BulkDelete#resolve when user can delete runners with runners specified by id ignores unknown keys from service response payload9659Randomized with seed 558099660[TEST PROF INFO] Time spent in factories: 09:29.623 (42.38% of total time)9661Stopped processing SimpleCov as a previous error not related to SimpleCov has been detected9662RSpec exited with 1.9663RETRIED_TESTS_REPORT_PATH: rspec/flaky/retried_tests_rspec_unit_pg13_16_28_report.txt9664Retrying the failing examples in a new RSpec process...9665$ gem install junit_merge --no-document --version 0.1.29666Successfully installed nokogiri-1.14.3-x86_64-linux9667Successfully installed junit_merge-0.1.296682 gems installed9669==> 'gem install junit_merge --no-document --version 0.1.2' succeeded in 2 seconds.9670Running RSpec command: bin/rspec -Ispec -rspec_helper --color --failure-exit-code 1 --error-exit-code 2 --format documentation --format RspecJunitFormatter --out rspec/junit_rspec-retry.xml --only-failures --pattern "spec/{bin,channels,components,config,contracts,db,dependencies,elastic,elastic_integration,experiments,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}{,/**/}*_spec.rb"9671warning: parser/current is loading parser/ruby30, which recognizes 3.0.5-compliant syntax, but you are running 3.0.6.9673Run options: include {:last_run_status=>"failed"}9674Test environment set up in 0.48134484 seconds9675Mutations::Ci::Runner::BulkDelete9676 #resolve9677 when user can delete runners9678 with runners specified by id9679 ignores unknown keys from service response payload9680Finished in 3.73 seconds (files took 45.77 seconds to load)96811 example, 0 failures9682[TEST PROF INFO] Time spent in factories: 00:01.071 (16.81% of total time)9683A test was flaky and succeeded after being retried. Checking to see if flaky test is part of this MR...9684Flaky test was not part of this MR.9686Not uploading cache ruby-gems-debian-bullseye-ruby-3.0-16 due to policy9688Uploading artifacts...9689coverage/: found 4 matching artifact files and directories 9690WARNING: crystalball/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 9691deprecations/: found 4 matching artifact files and directories 9692knapsack/: found 3 matching artifact files and directories 9693query_recorder/: found 2 matching artifact files and directories 9694rspec/: found 10 matching artifact files and directories 9695WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 9696log/*.log: found 17 matching artifact files and directories 9697WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4139146387/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com9698WARNING: Retrying... context=artifacts-uploader error=request redirected9699Uploading artifacts as "archive" to coordinator... 201 Created id=4139146387 responseStatus=201 Created token=64__Ws9B9700Uploading artifacts...9701rspec/junit_rspec.xml: found 1 matching artifact files and directories 9702WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4139146387/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com9703WARNING: Retrying... context=artifacts-uploader error=request redirected9704Uploading artifacts as "junit" to coordinator... 201 Created id=4139146387 responseStatus=201 Created token=64__Ws9B9706Job succeeded