There was an error fetching the job.
rspec unit pg13 single-db 22/28
Passed Started
by
@gitlab-bot

🤖 GitLab Bot 🤖
1Running with gitlab-runner 15.9.0~beta.212.g8ccc65e7 (8ccc65e7)2 on green-4.private.runners-manager.gitlab.com/gitlab.com/gitlab-org rpvz2FF9, system ID: s_d704414ba02a3 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.18-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:dd421ca1f7f13d81c5c145d77d97d8d84cd0e6f1e045936ee506ce0f50ee397a for postgres:13 with digest postgres@sha256:00f455399f30cc3f2fe4185476601438b7a4959c74653665582d7c313a783d51 ...10Starting service redis:6.2-alpine ...11Pulling docker image redis:6.2-alpine ...12Using docker image sha256:3616f0c0705d2a35d30dde109daf3cbe58ae7284121aafa6f5cfa987db98d1a8 for redis:6.2-alpine with digest redis@sha256:edddbcad5a41d58df2f142d68439922f1860ea902903d016257337c3342f30fc ...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.18-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:7a1b51158a1ee23b080b514ce6ebbf52ac51585877198fb52709e5cd01805a77 for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.18-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.18-rust-1.65-node-16.14-postgresql-13@sha256:412d55913d43377094427ced549cb422ed2f2c7223e6a605d0d3e0151cb892b0 ...18Running on runner-rpvz2ff9-project-278964-concurrent-0 via runner-rpvz2ff9-private-1680167577-e53ca49b...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: 135903, done. 25remote: Counting objects: 100% (135903/135903), done. 26remote: Compressing objects: 100% (88560/88560), done. 27remote: Total 135903 (delta 58315), reused 94618 (delta 42152), pack-reused 0 28Receiving objects: 100% (135903/135903), 121.35 MiB | 30.05 MiB/s, done.29Resolving deltas: 100% (58315/58315), done.31 * [new ref] refs/pipelines/822866544 -> refs/pipelines/82286654432Checking out 523abdde as detached HEAD (ref is refs/merge-requests/116270/merge)...33Skipping Git submodules setup34$ git remote set-url origin "${CI_REPOSITORY_URL}"36Checking cache for ruby-gems-debian-bullseye-ruby-3.0-16...37cache.zip is up to date 38Successfully extracted cache39Checking cache for gitaly-ruby-gems-debian-bullseye-ruby-3.0-16...40cache.zip is up to date 41Successfully extracted cache43Downloading artifacts for compile-test-assets (4031138198)...44Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4031138198 responseStatus=200 OK token=64_v9nzs45Downloading artifacts for detect-tests (4031138213)...46Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4031138213 responseStatus=200 OK token=64_v9nzs47Downloading artifacts for retrieve-tests-metadata (4031138217)...48Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4031138217 responseStatus=200 OK token=64_v9nzs49Downloading artifacts for setup-test-env (4031138204)...50Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4031138204 responseStatus=200 OK token=64_v9nzs52Using docker image sha256:7a1b51158a1ee23b080b514ce6ebbf52ac51585877198fb52709e5cd01805a77 for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.18-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.18-rust-1.65-node-16.14-postgresql-13@sha256:412d55913d43377094427ced549cb422ed2f2c7223e6a605d0d3e0151cb892b0 ...53$ echo $FOSS_ONLY54$ [ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb55$ export GOPATH=$CI_PROJECT_DIR/.go56$ mkdir -p $GOPATH57$ source scripts/utils.sh58$ source scripts/prepare_build.sh709Using decomposed database config (config/database.yml.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'717Created database 'gitlabhq_test'718==> 'bundle exec rake db:drop db:create db:schema:load db:migrate gitlab:db:lock_writes' succeeded in 35 seconds.719$ setup_db_praefect720SELECT pg_catalog.set_config('search_path', '', false);721CREATE DATABASE praefect_test ENCODING 'UTF8';722==> 'setup_db_praefect' succeeded in 0 seconds.723$ source ./scripts/rspec_helpers.sh724$ run_timed_command "gem install knapsack --no-document"725$ gem install knapsack --no-document726Successfully installed knapsack-4.0.07271 gem installed728==> 'gem install knapsack --no-document' succeeded in 1 seconds.729$ echo -e "\e[0Ksection_start:`date +%s`:gitaly-test-spawn[collapsed=true]\r\e[0KStarting Gitaly"833$ rspec_paralellized_job "--tag ~quarantine --tag ~level:background_migration"834SKIP_FLAKY_TESTS_AUTOMATICALLY: false835RETRY_FAILED_TESTS_IN_NEW_PROCESS: true836KNAPSACK_GENERATE_REPORT: true837FLAKY_RSPEC_GENERATE_REPORT: true838KNAPSACK_TEST_FILE_PATTERN: spec/{bin,channels,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,components}{,/**/}*_spec.rb839KNAPSACK_LOG_LEVEL: debug840KNAPSACK_REPORT_PATH: knapsack/rspec_unit_pg13_single-db_22_28_report.json841FLAKY_RSPEC_SUITE_REPORT_PATH: rspec/flaky/report-suite.json842FLAKY_RSPEC_REPORT_PATH: rspec/flaky/all_rspec_unit_pg13_single-db_22_28_report.json843NEW_FLAKY_RSPEC_REPORT_PATH: rspec/flaky/new_rspec_unit_pg13_single-db_22_28_report.json844SKIPPED_FLAKY_TESTS_REPORT_PATH: rspec/flaky/skipped_flaky_tests_rspec_unit_pg13_single-db_22_28_report.txt845CRYSTALBALL: 846Knapsack node specs:847spec/models/issue_spec.rb848spec/models/note_spec.rb849spec/lib/gitlab/git/repository_spec.rb850spec/services/projects/import_service_spec.rb851spec/services/issues/move_service_spec.rb852spec/policies/environment_policy_spec.rb853spec/models/commit_status_spec.rb854spec/workers/database/batched_background_migration_worker_spec.rb855spec/lib/banzai/filter/references/commit_reference_filter_spec.rb856spec/lib/gitlab/rack_attack/request_spec.rb857spec/models/award_emoji_spec.rb858spec/services/git/wiki_push_service_spec.rb859spec/workers/emails_on_push_worker_spec.rb860spec/lib/banzai/filter/references/user_reference_filter_spec.rb861spec/lib/gitlab/ci/build/rules/rule/clause/exists_spec.rb862spec/lib/gitlab/database/background_migration/batched_migration_spec.rb863spec/helpers/commits_helper_spec.rb864spec/lib/gitlab/background_migration/destroy_invalid_group_members_spec.rb865spec/models/commit_range_spec.rb866spec/finders/ci/pipelines_finder_spec.rb867spec/serializers/pipeline_serializer_spec.rb868spec/models/integrations/discord_spec.rb869spec/services/merge_requests/ff_merge_service_spec.rb870spec/lib/gitlab/import_export/import_failure_service_spec.rb871spec/lib/gitlab/bitbucket_import/importer_spec.rb872spec/lib/gitlab/git/branch_spec.rb873spec/services/snippets/bulk_destroy_service_spec.rb874spec/services/ci/pipeline_creation/cancel_redundant_pipelines_service_spec.rb875spec/lib/banzai/reference_parser/commit_range_parser_spec.rb876spec/services/discussions/update_diff_position_service_spec.rb877spec/services/projects/hashed_storage/migrate_repository_service_spec.rb878spec/lib/gitlab/kubernetes/helm/v2/init_command_spec.rb879spec/lib/gitlab/checks/single_change_access_spec.rb880spec/services/issue_links/create_service_spec.rb881spec/services/security/merge_reports_service_spec.rb882spec/rubocop/cop/rspec/misspelled_aggregate_failures_spec.rb883spec/lib/gitlab/diff/lines_unfolder_spec.rb884spec/models/ci/job_token/scope_spec.rb885spec/lib/gitlab/import_export/after_export_strategies/base_after_export_strategy_spec.rb886spec/workers/remove_expired_group_links_worker_spec.rb887spec/helpers/merge_requests_helper_spec.rb888spec/services/award_emojis/add_service_spec.rb889spec/services/ci/create_pipeline_service/cross_project_pipeline_spec.rb890spec/lib/bulk_imports/clients/http_spec.rb891spec/services/quick_actions/target_service_spec.rb892spec/lib/gitlab/ci/charts_spec.rb893spec/lib/gitlab/ci/config/entry/environment_spec.rb894spec/helpers/version_check_helper_spec.rb895spec/lib/gitlab/ci/build/context/global_spec.rb896spec/lib/gitlab/background_migration/delete_orphaned_packages_dependencies_spec.rb897spec/views/notify/import_work_items_csv_email.html.haml_spec.rb898spec/services/ci/job_artifacts/expire_project_build_artifacts_service_spec.rb899spec/lib/container_registry/migration_spec.rb900spec/lib/gitlab/background_migration/backfill_prepared_at_merge_requests_spec.rb901spec/tasks/gitlab/incoming_email_rake_spec.rb902spec/services/bulk_imports/file_download_service_spec.rb903spec/lib/sbom/package_url/encoder_spec.rb904spec/models/work_items/type_spec.rb905spec/lib/gitlab/etag_caching/middleware_spec.rb906spec/workers/stuck_merge_jobs_worker_spec.rb907spec/lib/gitlab/diff/highlight_cache_spec.rb908spec/graphql/mutations/timelogs/delete_spec.rb909spec/models/board_project_recent_visit_spec.rb910spec/lib/gitlab/jira_import_spec.rb911spec/services/repository_archive_clean_up_service_spec.rb912spec/lib/gitlab/metrics/global_search_slis_spec.rb913spec/lib/banzai/reference_parser/label_parser_spec.rb914spec/policies/namespaces/user_namespace_policy_spec.rb915spec/lib/gitlab/jira_import/issue_serializer_spec.rb916spec/presenters/group_member_presenter_spec.rb917spec/services/jira_connect_installations/proxy_lifecycle_event_service_spec.rb918spec/services/error_tracking/list_projects_service_spec.rb919spec/workers/concerns/limited_capacity/worker_spec.rb920spec/lib/gitlab/checks/push_file_count_check_spec.rb921spec/workers/new_issue_worker_spec.rb922spec/models/packages/npm/metadatum_spec.rb923spec/presenters/gitlab/blame_presenter_spec.rb924spec/lib/gitlab/utils/override_spec.rb925spec/graphql/resolvers/concerns/resolves_pipelines_spec.rb926spec/workers/packages/cleanup_package_registry_worker_spec.rb927spec/helpers/environments_helper_spec.rb928spec/models/metrics/users_starred_dashboard_spec.rb929spec/workers/ci/external_pull_requests/create_pipeline_worker_spec.rb930spec/lib/gitlab/ci/matching/runner_matcher_spec.rb931spec/lib/gitlab/auth/result_spec.rb932spec/models/concerns/sha_attribute_spec.rb933spec/services/alert_management/alerts/todo/create_service_spec.rb934spec/services/packages/rpm/parse_package_service_spec.rb935spec/workers/concerns/worker_context_spec.rb936spec/lib/gitlab/fogbugz_import/importer_spec.rb937spec/lib/atlassian/jira_connect/serializers/build_entity_spec.rb938spec/rubocop/cop/migration/batch_migrations_post_only_spec.rb939spec/lib/gitlab/audit/type/definition_spec.rb940spec/services/issuable/callbacks/milestone_spec.rb941spec/lib/api/entities/wiki_page_spec.rb942spec/lib/banzai/reference_parser/mentioned_user_parser_spec.rb943spec/lib/gitlab/import_export/base/object_builder_spec.rb944spec/graphql/mutations/incident_management/timeline_event/promote_from_note_spec.rb945spec/services/ci/update_pending_build_service_spec.rb946spec/workers/repository_cleanup_worker_spec.rb947spec/lib/gitlab/ci/pipeline/chain/populate_metadata_spec.rb948spec/lib/gitlab/background_migration_spec.rb949spec/lib/gitlab/discussions_diff/highlight_cache_spec.rb950spec/graphql/mutations/alert_management/prometheus_integration/create_spec.rb951spec/lib/gitlab/ci/pipeline/chain/seed_block_spec.rb952spec/workers/bulk_imports/pipeline_worker_spec.rb953spec/workers/merge_requests/execute_approval_hooks_worker_spec.rb954spec/services/projects/create_from_template_service_spec.rb955spec/lib/gitlab/sidekiq_logging/structured_logger_spec.rb956spec/services/metrics/dashboard/panel_preview_service_spec.rb957spec/lib/gitlab/incoming_email_spec.rb958spec/lib/gitlab/x509/tag_spec.rb959spec/services/system_notes/alert_management_service_spec.rb960spec/models/issue/email_spec.rb961spec/models/users/namespace_commit_email_spec.rb962spec/workers/error_tracking_issue_link_worker_spec.rb963spec/views/profiles/keys/_form.html.haml_spec.rb964spec/lib/gitlab/kas/client_spec.rb965spec/workers/packages/mark_package_files_for_destruction_worker_spec.rb966spec/lib/gitlab/graphql/pagination/array_connection_spec.rb967spec/lib/gitlab/github_import_spec.rb968spec/models/shard_spec.rb969spec/graphql/types/admin/analytics/usage_trends/measurement_type_spec.rb970spec/lib/gitlab/external_authorization_spec.rb971spec/lib/gitlab/web_ide/config/entry/global_spec.rb972spec/finders/groups/user_groups_finder_spec.rb973spec/policies/personal_access_token_policy_spec.rb974spec/services/import/prepare_service_spec.rb975spec/lib/gitlab/sidekiq_config_spec.rb976spec/lib/gitlab/graphql/known_operations_spec.rb977spec/graphql/types/commit_type_spec.rb978spec/models/preloaders/users_max_access_level_by_project_preloader_spec.rb979spec/serializers/analytics_summary_serializer_spec.rb980spec/models/clusters/agents/group_authorization_spec.rb981spec/services/groups/deploy_tokens/revoke_service_spec.rb982spec/services/ci/create_pipeline_service/artifacts_spec.rb983spec/rubocop/cop/migration/schedule_async_spec.rb984spec/helpers/lazy_image_tag_helper_spec.rb985spec/lib/gitlab/config_checker/external_database_checker_spec.rb986spec/lib/gitlab/ci/processable_object_hierarchy_spec.rb987spec/lib/gitlab/json_logger_spec.rb988spec/workers/gitlab/jira_import/stage/import_notes_worker_spec.rb989spec/services/test_hooks/system_service_spec.rb990spec/workers/update_project_statistics_worker_spec.rb991spec/initializers/check_forced_decomposition_spec.rb992spec/workers/object_pool/join_worker_spec.rb993spec/services/x509_certificate_revoke_service_spec.rb994spec/policies/application_setting_policy_spec.rb995spec/services/packages/debian/create_package_file_service_spec.rb996spec/services/alert_management/metric_images/upload_service_spec.rb997spec/workers/ci/build_finished_worker_spec.rb998spec/graphql/mutations/branches/create_spec.rb999spec/tooling/lib/tooling/find_tests_spec.rb1000spec/lib/gitlab/database/schema_validation/database_spec.rb1001spec/services/user_project_access_changed_service_spec.rb1002spec/lib/gitlab/quick_actions/timeline_text_and_date_time_separator_spec.rb1003spec/models/integrations/external_wiki_spec.rb1004spec/lib/error_tracking/collector/payload_validator_spec.rb1005spec/helpers/ci/jobs_helper_spec.rb1006spec/uploaders/object_storage/s3_spec.rb1007spec/lib/gitlab/dependency_linker/podspec_json_linker_spec.rb1008spec/serializers/issue_serializer_spec.rb1009spec/graphql/types/work_items/widget_interface_spec.rb1010spec/models/diff_viewer/server_side_spec.rb1011spec/graphql/types/work_item_id_type_spec.rb1012spec/lib/gitlab/i18n_spec.rb1013spec/workers/concerns/limited_capacity/job_tracker_spec.rb1014spec/lib/gitlab/word_diff/segments/chunk_spec.rb1015spec/views/notify/user_deactivated_email.text.erb_spec.rb1016spec/services/projects/schedule_bulk_repository_shard_moves_service_spec.rb1017spec/workers/deployments/archive_in_project_worker_spec.rb1018spec/workers/service_desk_email_receiver_worker_spec.rb1019spec/lib/container_registry/registry_spec.rb1020spec/helpers/webpack_helper_spec.rb1021spec/services/keys/create_service_spec.rb1022spec/scripts/setup/find_jh_branch_spec.rb1023spec/views/admin/application_settings/_ci_cd.html.haml_spec.rb1024spec/lib/sidebars/user_settings/menus/profile_menu_spec.rb1025spec/lib/gitlab/dependency_linker/podfile_linker_spec.rb1026spec/services/merge_requests/mergeability/check_ci_status_service_spec.rb1027spec/rubocop/cop/gitlab/event_store_subscriber_spec.rb1028spec/helpers/groups/settings_helper_spec.rb1029spec/support_specs/matchers/event_store_spec.rb1030spec/lib/gitlab/graphql/calls_gitaly/field_extension_spec.rb1031spec/lib/gitlab/ci/mask_secret_spec.rb1032spec/lib/gitlab/memory/upload_and_cleanup_reports_spec.rb1033spec/models/alerting/project_alerting_setting_spec.rb1034spec/graphql/types/error_tracking/sentry_error_stack_trace_type_spec.rb1035spec/lib/gitlab/ci/environment_matcher_spec.rb1036spec/lib/gitlab/ci/config/yaml/result_spec.rb1037spec/services/pages_domains/delete_service_spec.rb1038spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/strategies_spec.rb1039spec/lib/gitlab/ci/config/entry/tags_spec.rb1040spec/lib/api/api_spec.rb1041spec/lib/gitlab/template/gitignore_template_spec.rb1042spec/graphql/types/milestone_type_spec.rb1043spec/lib/gitlab/search/sort_options_spec.rb1044spec/workers/gitlab/github_import/import_release_attachments_worker_spec.rb1045spec/lib/gitlab/rugged_instrumentation_spec.rb1046spec/graphql/types/ci/runner_type_spec.rb1047spec/lib/gitlab/usage/metrics/instrumentations/snowplow_configured_to_gitlab_collector_metric_spec.rb1048spec/models/bulk_imports/file_transfer_spec.rb1049spec/lib/gitlab/utils/batch_loader_spec.rb1050spec/lib/gitlab/import/errors_spec.rb1051spec/services/google_cloud/gcp_region_add_or_replace_service_spec.rb1052spec/graphql/mutations/members/bulk_update_base_spec.rb1053spec/workers/gitlab/github_import/import_pull_request_merged_by_worker_spec.rb1054spec/lib/gitlab/database/migrations/observers/batch_details_spec.rb1055spec/lib/bulk_imports/groups/extractors/subgroups_extractor_spec.rb1056spec/graphql/types/admin/analytics/usage_trends/measurement_identifier_enum_spec.rb1057spec/lib/gitlab/git/gitmodules_parser_spec.rb1058spec/lib/gitlab/database/schema_validation/validators/extra_indexes_spec.rb1059spec/graphql/types/container_expiration_policy_cadence_enum_spec.rb1060spec/graphql/types/projects/service_type_spec.rb1061spec/graphql/types/design_management/design_version_event_enum_spec.rb1062spec/lib/bulk_imports/groups/transformers/subgroup_to_entity_transformer_spec.rb1063spec/graphql/types/packages/conan/file_metadatum_type_spec.rb1064spec/lib/gitlab/ci/config/normalizer/factory_spec.rb1065spec/graphql/types/container_expiration_policy_keep_enum_spec.rb1066spec/models/concerns/transactions_spec.rb1067spec/lib/gitlab/email/message/build_ios_app_guide_spec.rb1068spec/lib/banzai/pipeline/emoji_pipeline_spec.rb1069spec/graphql/types/users/email_type_spec.rb1070spec/graphql/types/milestone_stats_type_spec.rb1071spec/lib/sidebars/projects/super_sidebar_menus/monitor_menu_spec.rb1072spec/lib/gitlab/metrics/dashboard/validator/custom_formats_spec.rb1073spec/graphql/types/permission_types/user_spec.rb1074spec/graphql/mutations/concerns/mutations/resolves_group_spec.rb1075spec/lib/bitbucket/representation/user_spec.rb1076spec/lib/gitlab/usage/metrics/instrumentations/service_desk_email_encrypted_secrets_enabled_metric_spec.rb1077spec/graphql/types/ci/variable_type_enum_spec.rb1078Filter specs:1079Running specs:1080Running all node tests without filter1081spec/models/issue_spec.rb1082spec/models/note_spec.rb1083spec/lib/gitlab/git/repository_spec.rb1084spec/services/projects/import_service_spec.rb1085spec/services/issues/move_service_spec.rb1086spec/policies/environment_policy_spec.rb1087spec/models/commit_status_spec.rb1088spec/workers/database/batched_background_migration_worker_spec.rb1089spec/lib/banzai/filter/references/commit_reference_filter_spec.rb1090spec/lib/gitlab/rack_attack/request_spec.rb1091spec/models/award_emoji_spec.rb1092spec/services/git/wiki_push_service_spec.rb1093spec/workers/emails_on_push_worker_spec.rb1094spec/lib/banzai/filter/references/user_reference_filter_spec.rb1095spec/lib/gitlab/ci/build/rules/rule/clause/exists_spec.rb1096spec/lib/gitlab/database/background_migration/batched_migration_spec.rb1097spec/helpers/commits_helper_spec.rb1098spec/lib/gitlab/background_migration/destroy_invalid_group_members_spec.rb1099spec/models/commit_range_spec.rb1100spec/finders/ci/pipelines_finder_spec.rb1101spec/serializers/pipeline_serializer_spec.rb1102spec/models/integrations/discord_spec.rb1103spec/services/merge_requests/ff_merge_service_spec.rb1104spec/lib/gitlab/import_export/import_failure_service_spec.rb1105spec/lib/gitlab/bitbucket_import/importer_spec.rb1106spec/lib/gitlab/git/branch_spec.rb1107spec/services/snippets/bulk_destroy_service_spec.rb1108spec/services/ci/pipeline_creation/cancel_redundant_pipelines_service_spec.rb1109spec/lib/banzai/reference_parser/commit_range_parser_spec.rb1110spec/services/discussions/update_diff_position_service_spec.rb1111spec/services/projects/hashed_storage/migrate_repository_service_spec.rb1112spec/lib/gitlab/kubernetes/helm/v2/init_command_spec.rb1113spec/lib/gitlab/checks/single_change_access_spec.rb1114spec/services/issue_links/create_service_spec.rb1115spec/services/security/merge_reports_service_spec.rb1116spec/rubocop/cop/rspec/misspelled_aggregate_failures_spec.rb1117spec/lib/gitlab/diff/lines_unfolder_spec.rb1118spec/models/ci/job_token/scope_spec.rb1119spec/lib/gitlab/import_export/after_export_strategies/base_after_export_strategy_spec.rb1120spec/workers/remove_expired_group_links_worker_spec.rb1121spec/helpers/merge_requests_helper_spec.rb1122spec/services/award_emojis/add_service_spec.rb1123spec/services/ci/create_pipeline_service/cross_project_pipeline_spec.rb1124spec/lib/bulk_imports/clients/http_spec.rb1125spec/services/quick_actions/target_service_spec.rb1126spec/lib/gitlab/ci/charts_spec.rb1127spec/lib/gitlab/ci/config/entry/environment_spec.rb1128spec/helpers/version_check_helper_spec.rb1129spec/lib/gitlab/ci/build/context/global_spec.rb1130spec/lib/gitlab/background_migration/delete_orphaned_packages_dependencies_spec.rb1131spec/views/notify/import_work_items_csv_email.html.haml_spec.rb1132spec/services/ci/job_artifacts/expire_project_build_artifacts_service_spec.rb1133spec/lib/container_registry/migration_spec.rb1134spec/lib/gitlab/background_migration/backfill_prepared_at_merge_requests_spec.rb1135spec/tasks/gitlab/incoming_email_rake_spec.rb1136spec/services/bulk_imports/file_download_service_spec.rb1137spec/lib/sbom/package_url/encoder_spec.rb1138spec/models/work_items/type_spec.rb1139spec/lib/gitlab/etag_caching/middleware_spec.rb1140spec/workers/stuck_merge_jobs_worker_spec.rb1141spec/lib/gitlab/diff/highlight_cache_spec.rb1142spec/graphql/mutations/timelogs/delete_spec.rb1143spec/models/board_project_recent_visit_spec.rb1144spec/lib/gitlab/jira_import_spec.rb1145spec/services/repository_archive_clean_up_service_spec.rb1146spec/lib/gitlab/metrics/global_search_slis_spec.rb1147spec/lib/banzai/reference_parser/label_parser_spec.rb1148spec/policies/namespaces/user_namespace_policy_spec.rb1149spec/lib/gitlab/jira_import/issue_serializer_spec.rb1150spec/presenters/group_member_presenter_spec.rb1151spec/services/jira_connect_installations/proxy_lifecycle_event_service_spec.rb1152spec/services/error_tracking/list_projects_service_spec.rb1153spec/workers/concerns/limited_capacity/worker_spec.rb1154spec/lib/gitlab/checks/push_file_count_check_spec.rb1155spec/workers/new_issue_worker_spec.rb1156spec/models/packages/npm/metadatum_spec.rb1157spec/presenters/gitlab/blame_presenter_spec.rb1158spec/lib/gitlab/utils/override_spec.rb1159spec/graphql/resolvers/concerns/resolves_pipelines_spec.rb1160spec/workers/packages/cleanup_package_registry_worker_spec.rb1161spec/helpers/environments_helper_spec.rb1162spec/models/metrics/users_starred_dashboard_spec.rb1163spec/workers/ci/external_pull_requests/create_pipeline_worker_spec.rb1164spec/lib/gitlab/ci/matching/runner_matcher_spec.rb1165spec/lib/gitlab/auth/result_spec.rb1166spec/models/concerns/sha_attribute_spec.rb1167spec/services/alert_management/alerts/todo/create_service_spec.rb1168spec/services/packages/rpm/parse_package_service_spec.rb1169spec/workers/concerns/worker_context_spec.rb1170spec/lib/gitlab/fogbugz_import/importer_spec.rb1171spec/lib/atlassian/jira_connect/serializers/build_entity_spec.rb1172spec/rubocop/cop/migration/batch_migrations_post_only_spec.rb1173spec/lib/gitlab/audit/type/definition_spec.rb1174spec/services/issuable/callbacks/milestone_spec.rb1175spec/lib/api/entities/wiki_page_spec.rb1176spec/lib/banzai/reference_parser/mentioned_user_parser_spec.rb1177spec/lib/gitlab/import_export/base/object_builder_spec.rb1178spec/graphql/mutations/incident_management/timeline_event/promote_from_note_spec.rb1179spec/services/ci/update_pending_build_service_spec.rb1180spec/workers/repository_cleanup_worker_spec.rb1181spec/lib/gitlab/ci/pipeline/chain/populate_metadata_spec.rb1182spec/lib/gitlab/background_migration_spec.rb1183spec/lib/gitlab/discussions_diff/highlight_cache_spec.rb1184spec/graphql/mutations/alert_management/prometheus_integration/create_spec.rb1185spec/lib/gitlab/ci/pipeline/chain/seed_block_spec.rb1186spec/workers/bulk_imports/pipeline_worker_spec.rb1187spec/workers/merge_requests/execute_approval_hooks_worker_spec.rb1188spec/services/projects/create_from_template_service_spec.rb1189spec/lib/gitlab/sidekiq_logging/structured_logger_spec.rb1190spec/services/metrics/dashboard/panel_preview_service_spec.rb1191spec/lib/gitlab/incoming_email_spec.rb1192spec/lib/gitlab/x509/tag_spec.rb1193spec/services/system_notes/alert_management_service_spec.rb1194spec/models/issue/email_spec.rb1195spec/models/users/namespace_commit_email_spec.rb1196spec/workers/error_tracking_issue_link_worker_spec.rb1197spec/views/profiles/keys/_form.html.haml_spec.rb1198spec/lib/gitlab/kas/client_spec.rb1199spec/workers/packages/mark_package_files_for_destruction_worker_spec.rb1200spec/lib/gitlab/graphql/pagination/array_connection_spec.rb1201spec/lib/gitlab/github_import_spec.rb1202spec/models/shard_spec.rb1203spec/graphql/types/admin/analytics/usage_trends/measurement_type_spec.rb1204spec/lib/gitlab/external_authorization_spec.rb1205spec/lib/gitlab/web_ide/config/entry/global_spec.rb1206spec/finders/groups/user_groups_finder_spec.rb1207spec/policies/personal_access_token_policy_spec.rb1208spec/services/import/prepare_service_spec.rb1209spec/lib/gitlab/sidekiq_config_spec.rb1210spec/lib/gitlab/graphql/known_operations_spec.rb1211spec/graphql/types/commit_type_spec.rb1212spec/models/preloaders/users_max_access_level_by_project_preloader_spec.rb1213spec/serializers/analytics_summary_serializer_spec.rb1214spec/models/clusters/agents/group_authorization_spec.rb1215spec/services/groups/deploy_tokens/revoke_service_spec.rb1216spec/services/ci/create_pipeline_service/artifacts_spec.rb1217spec/rubocop/cop/migration/schedule_async_spec.rb1218spec/helpers/lazy_image_tag_helper_spec.rb1219spec/lib/gitlab/config_checker/external_database_checker_spec.rb1220spec/lib/gitlab/ci/processable_object_hierarchy_spec.rb1221spec/lib/gitlab/json_logger_spec.rb1222spec/workers/gitlab/jira_import/stage/import_notes_worker_spec.rb1223spec/services/test_hooks/system_service_spec.rb1224spec/workers/update_project_statistics_worker_spec.rb1225spec/initializers/check_forced_decomposition_spec.rb1226spec/workers/object_pool/join_worker_spec.rb1227spec/services/x509_certificate_revoke_service_spec.rb1228spec/policies/application_setting_policy_spec.rb1229spec/services/packages/debian/create_package_file_service_spec.rb1230spec/services/alert_management/metric_images/upload_service_spec.rb1231spec/workers/ci/build_finished_worker_spec.rb1232spec/graphql/mutations/branches/create_spec.rb1233spec/tooling/lib/tooling/find_tests_spec.rb1234spec/lib/gitlab/database/schema_validation/database_spec.rb1235spec/services/user_project_access_changed_service_spec.rb1236spec/lib/gitlab/quick_actions/timeline_text_and_date_time_separator_spec.rb1237spec/models/integrations/external_wiki_spec.rb1238spec/lib/error_tracking/collector/payload_validator_spec.rb1239spec/helpers/ci/jobs_helper_spec.rb1240spec/uploaders/object_storage/s3_spec.rb1241spec/lib/gitlab/dependency_linker/podspec_json_linker_spec.rb1242spec/serializers/issue_serializer_spec.rb1243spec/graphql/types/work_items/widget_interface_spec.rb1244spec/models/diff_viewer/server_side_spec.rb1245spec/graphql/types/work_item_id_type_spec.rb1246spec/lib/gitlab/i18n_spec.rb1247spec/workers/concerns/limited_capacity/job_tracker_spec.rb1248spec/lib/gitlab/word_diff/segments/chunk_spec.rb1249spec/views/notify/user_deactivated_email.text.erb_spec.rb1250spec/services/projects/schedule_bulk_repository_shard_moves_service_spec.rb1251spec/workers/deployments/archive_in_project_worker_spec.rb1252spec/workers/service_desk_email_receiver_worker_spec.rb1253spec/lib/container_registry/registry_spec.rb1254spec/helpers/webpack_helper_spec.rb1255spec/services/keys/create_service_spec.rb1256spec/scripts/setup/find_jh_branch_spec.rb1257spec/views/admin/application_settings/_ci_cd.html.haml_spec.rb1258spec/lib/sidebars/user_settings/menus/profile_menu_spec.rb1259spec/lib/gitlab/dependency_linker/podfile_linker_spec.rb1260spec/services/merge_requests/mergeability/check_ci_status_service_spec.rb1261spec/rubocop/cop/gitlab/event_store_subscriber_spec.rb1262spec/helpers/groups/settings_helper_spec.rb1263spec/support_specs/matchers/event_store_spec.rb1264spec/lib/gitlab/graphql/calls_gitaly/field_extension_spec.rb1265spec/lib/gitlab/ci/mask_secret_spec.rb1266spec/lib/gitlab/memory/upload_and_cleanup_reports_spec.rb1267spec/models/alerting/project_alerting_setting_spec.rb1268spec/graphql/types/error_tracking/sentry_error_stack_trace_type_spec.rb1269spec/lib/gitlab/ci/environment_matcher_spec.rb1270spec/lib/gitlab/ci/config/yaml/result_spec.rb1271spec/services/pages_domains/delete_service_spec.rb1272spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/strategies_spec.rb1273spec/lib/gitlab/ci/config/entry/tags_spec.rb1274spec/lib/api/api_spec.rb1275spec/lib/gitlab/template/gitignore_template_spec.rb1276spec/graphql/types/milestone_type_spec.rb1277spec/lib/gitlab/search/sort_options_spec.rb1278spec/workers/gitlab/github_import/import_release_attachments_worker_spec.rb1279spec/lib/gitlab/rugged_instrumentation_spec.rb1280spec/graphql/types/ci/runner_type_spec.rb1281spec/lib/gitlab/usage/metrics/instrumentations/snowplow_configured_to_gitlab_collector_metric_spec.rb1282spec/models/bulk_imports/file_transfer_spec.rb1283spec/lib/gitlab/utils/batch_loader_spec.rb1284spec/lib/gitlab/import/errors_spec.rb1285spec/services/google_cloud/gcp_region_add_or_replace_service_spec.rb1286spec/graphql/mutations/members/bulk_update_base_spec.rb1287spec/workers/gitlab/github_import/import_pull_request_merged_by_worker_spec.rb1288spec/lib/gitlab/database/migrations/observers/batch_details_spec.rb1289spec/lib/bulk_imports/groups/extractors/subgroups_extractor_spec.rb1290spec/graphql/types/admin/analytics/usage_trends/measurement_identifier_enum_spec.rb1291spec/lib/gitlab/git/gitmodules_parser_spec.rb1292spec/lib/gitlab/database/schema_validation/validators/extra_indexes_spec.rb1293spec/graphql/types/container_expiration_policy_cadence_enum_spec.rb1294spec/graphql/types/projects/service_type_spec.rb1295spec/graphql/types/design_management/design_version_event_enum_spec.rb1296spec/lib/bulk_imports/groups/transformers/subgroup_to_entity_transformer_spec.rb1297spec/graphql/types/packages/conan/file_metadatum_type_spec.rb1298spec/lib/gitlab/ci/config/normalizer/factory_spec.rb1299spec/graphql/types/container_expiration_policy_keep_enum_spec.rb1300spec/models/concerns/transactions_spec.rb1301spec/lib/gitlab/email/message/build_ios_app_guide_spec.rb1302spec/lib/banzai/pipeline/emoji_pipeline_spec.rb1303spec/graphql/types/users/email_type_spec.rb1304spec/graphql/types/milestone_stats_type_spec.rb1305spec/lib/sidebars/projects/super_sidebar_menus/monitor_menu_spec.rb1306spec/lib/gitlab/metrics/dashboard/validator/custom_formats_spec.rb1307spec/graphql/types/permission_types/user_spec.rb1308spec/graphql/mutations/concerns/mutations/resolves_group_spec.rb1309spec/lib/bitbucket/representation/user_spec.rb1310spec/lib/gitlab/usage/metrics/instrumentations/service_desk_email_encrypted_secrets_enabled_metric_spec.rb1311spec/graphql/types/ci/variable_type_enum_spec.rb1312Running all node tests without filter1313Running all node tests without filter1314Running 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/models/issue_spec.rb spec/models/note_spec.rb spec/lib/gitlab/git/repository_spec.rb spec/services/projects/import_service_spec.rb spec/services/issues/move_service_spec.rb spec/policies/environment_policy_spec.rb spec/models/commit_status_spec.rb spec/workers/database/batched_background_migration_worker_spec.rb spec/lib/banzai/filter/references/commit_reference_filter_spec.rb spec/lib/gitlab/rack_attack/request_spec.rb spec/models/award_emoji_spec.rb spec/services/git/wiki_push_service_spec.rb spec/workers/emails_on_push_worker_spec.rb spec/lib/banzai/filter/references/user_reference_filter_spec.rb spec/lib/gitlab/ci/build/rules/rule/clause/exists_spec.rb spec/lib/gitlab/database/background_migration/batched_migration_spec.rb spec/helpers/commits_helper_spec.rb spec/lib/gitlab/background_migration/destroy_invalid_group_members_spec.rb spec/models/commit_range_spec.rb spec/finders/ci/pipelines_finder_spec.rb spec/serializers/pipeline_serializer_spec.rb spec/models/integrations/discord_spec.rb spec/services/merge_requests/ff_merge_service_spec.rb spec/lib/gitlab/import_export/import_failure_service_spec.rb spec/lib/gitlab/bitbucket_import/importer_spec.rb spec/lib/gitlab/git/branch_spec.rb spec/services/snippets/bulk_destroy_service_spec.rb spec/services/ci/pipeline_creation/cancel_redundant_pipelines_service_spec.rb spec/lib/banzai/reference_parser/commit_range_parser_spec.rb spec/services/discussions/update_diff_position_service_spec.rb spec/services/projects/hashed_storage/migrate_repository_service_spec.rb spec/lib/gitlab/kubernetes/helm/v2/init_command_spec.rb spec/lib/gitlab/checks/single_change_access_spec.rb spec/services/issue_links/create_service_spec.rb spec/services/security/merge_reports_service_spec.rb spec/rubocop/cop/rspec/misspelled_aggregate_failures_spec.rb spec/lib/gitlab/diff/lines_unfolder_spec.rb spec/models/ci/job_token/scope_spec.rb spec/lib/gitlab/import_export/after_export_strategies/base_after_export_strategy_spec.rb spec/workers/remove_expired_group_links_worker_spec.rb spec/helpers/merge_requests_helper_spec.rb spec/services/award_emojis/add_service_spec.rb spec/services/ci/create_pipeline_service/cross_project_pipeline_spec.rb spec/lib/bulk_imports/clients/http_spec.rb spec/services/quick_actions/target_service_spec.rb spec/lib/gitlab/ci/charts_spec.rb spec/lib/gitlab/ci/config/entry/environment_spec.rb spec/helpers/version_check_helper_spec.rb spec/lib/gitlab/ci/build/context/global_spec.rb spec/lib/gitlab/background_migration/delete_orphaned_packages_dependencies_spec.rb spec/views/notify/import_work_items_csv_email.html.haml_spec.rb spec/services/ci/job_artifacts/expire_project_build_artifacts_service_spec.rb spec/lib/container_registry/migration_spec.rb spec/lib/gitlab/background_migration/backfill_prepared_at_merge_requests_spec.rb spec/tasks/gitlab/incoming_email_rake_spec.rb spec/services/bulk_imports/file_download_service_spec.rb spec/lib/sbom/package_url/encoder_spec.rb spec/models/work_items/type_spec.rb spec/lib/gitlab/etag_caching/middleware_spec.rb spec/workers/stuck_merge_jobs_worker_spec.rb spec/lib/gitlab/diff/highlight_cache_spec.rb spec/graphql/mutations/timelogs/delete_spec.rb spec/models/board_project_recent_visit_spec.rb spec/lib/gitlab/jira_import_spec.rb spec/services/repository_archive_clean_up_service_spec.rb spec/lib/gitlab/metrics/global_search_slis_spec.rb spec/lib/banzai/reference_parser/label_parser_spec.rb spec/policies/namespaces/user_namespace_policy_spec.rb spec/lib/gitlab/jira_import/issue_serializer_spec.rb spec/presenters/group_member_presenter_spec.rb spec/services/jira_connect_installations/proxy_lifecycle_event_service_spec.rb spec/services/error_tracking/list_projects_service_spec.rb spec/workers/concerns/limited_capacity/worker_spec.rb spec/lib/gitlab/checks/push_file_count_check_spec.rb spec/workers/new_issue_worker_spec.rb spec/models/packages/npm/metadatum_spec.rb spec/presenters/gitlab/blame_presenter_spec.rb spec/lib/gitlab/utils/override_spec.rb spec/graphql/resolvers/concerns/resolves_pipelines_spec.rb spec/workers/packages/cleanup_package_registry_worker_spec.rb spec/helpers/environments_helper_spec.rb spec/models/metrics/users_starred_dashboard_spec.rb spec/workers/ci/external_pull_requests/create_pipeline_worker_spec.rb spec/lib/gitlab/ci/matching/runner_matcher_spec.rb spec/lib/gitlab/auth/result_spec.rb spec/models/concerns/sha_attribute_spec.rb spec/services/alert_management/alerts/todo/create_service_spec.rb spec/services/packages/rpm/parse_package_service_spec.rb spec/workers/concerns/worker_context_spec.rb spec/lib/gitlab/fogbugz_import/importer_spec.rb spec/lib/atlassian/jira_connect/serializers/build_entity_spec.rb spec/rubocop/cop/migration/batch_migrations_post_only_spec.rb spec/lib/gitlab/audit/type/definition_spec.rb spec/services/issuable/callbacks/milestone_spec.rb spec/lib/api/entities/wiki_page_spec.rb spec/lib/banzai/reference_parser/mentioned_user_parser_spec.rb spec/lib/gitlab/import_export/base/object_builder_spec.rb spec/graphql/mutations/incident_management/timeline_event/promote_from_note_spec.rb spec/services/ci/update_pending_build_service_spec.rb spec/workers/repository_cleanup_worker_spec.rb spec/lib/gitlab/ci/pipeline/chain/populate_metadata_spec.rb spec/lib/gitlab/background_migration_spec.rb spec/lib/gitlab/discussions_diff/highlight_cache_spec.rb spec/graphql/mutations/alert_management/prometheus_integration/create_spec.rb spec/lib/gitlab/ci/pipeline/chain/seed_block_spec.rb spec/workers/bulk_imports/pipeline_worker_spec.rb spec/workers/merge_requests/execute_approval_hooks_worker_spec.rb spec/services/projects/create_from_template_service_spec.rb spec/lib/gitlab/sidekiq_logging/structured_logger_spec.rb spec/services/metrics/dashboard/panel_preview_service_spec.rb spec/lib/gitlab/incoming_email_spec.rb spec/lib/gitlab/x509/tag_spec.rb spec/services/system_notes/alert_management_service_spec.rb spec/models/issue/email_spec.rb spec/models/users/namespace_commit_email_spec.rb spec/workers/error_tracking_issue_link_worker_spec.rb spec/views/profiles/keys/_form.html.haml_spec.rb spec/lib/gitlab/kas/client_spec.rb spec/workers/packages/mark_package_files_for_destruction_worker_spec.rb spec/lib/gitlab/graphql/pagination/array_connection_spec.rb spec/lib/gitlab/github_import_spec.rb spec/models/shard_spec.rb spec/graphql/types/admin/analytics/usage_trends/measurement_type_spec.rb spec/lib/gitlab/external_authorization_spec.rb spec/lib/gitlab/web_ide/config/entry/global_spec.rb spec/finders/groups/user_groups_finder_spec.rb spec/policies/personal_access_token_policy_spec.rb spec/services/import/prepare_service_spec.rb spec/lib/gitlab/sidekiq_config_spec.rb spec/lib/gitlab/graphql/known_operations_spec.rb spec/graphql/types/commit_type_spec.rb spec/models/preloaders/users_max_access_level_by_project_preloader_spec.rb spec/serializers/analytics_summary_serializer_spec.rb spec/models/clusters/agents/group_authorization_spec.rb spec/services/groups/deploy_tokens/revoke_service_spec.rb spec/services/ci/create_pipeline_service/artifacts_spec.rb spec/rubocop/cop/migration/schedule_async_spec.rb spec/helpers/lazy_image_tag_helper_spec.rb spec/lib/gitlab/config_checker/external_database_checker_spec.rb spec/lib/gitlab/ci/processable_object_hierarchy_spec.rb spec/lib/gitlab/json_logger_spec.rb spec/workers/gitlab/jira_import/stage/import_notes_worker_spec.rb spec/services/test_hooks/system_service_spec.rb spec/workers/update_project_statistics_worker_spec.rb spec/initializers/check_forced_decomposition_spec.rb spec/workers/object_pool/join_worker_spec.rb spec/services/x509_certificate_revoke_service_spec.rb spec/policies/application_setting_policy_spec.rb spec/services/packages/debian/create_package_file_service_spec.rb spec/services/alert_management/metric_images/upload_service_spec.rb spec/workers/ci/build_finished_worker_spec.rb spec/graphql/mutations/branches/create_spec.rb spec/tooling/lib/tooling/find_tests_spec.rb spec/lib/gitlab/database/schema_validation/database_spec.rb spec/services/user_project_access_changed_service_spec.rb spec/lib/gitlab/quick_actions/timeline_text_and_date_time_separator_spec.rb spec/models/integrations/external_wiki_spec.rb spec/lib/error_tracking/collector/payload_validator_spec.rb spec/helpers/ci/jobs_helper_spec.rb spec/uploaders/object_storage/s3_spec.rb spec/lib/gitlab/dependency_linker/podspec_json_linker_spec.rb spec/serializers/issue_serializer_spec.rb spec/graphql/types/work_items/widget_interface_spec.rb spec/models/diff_viewer/server_side_spec.rb spec/graphql/types/work_item_id_type_spec.rb spec/lib/gitlab/i18n_spec.rb spec/workers/concerns/limited_capacity/job_tracker_spec.rb spec/lib/gitlab/word_diff/segments/chunk_spec.rb spec/views/notify/user_deactivated_email.text.erb_spec.rb spec/services/projects/schedule_bulk_repository_shard_moves_service_spec.rb spec/workers/deployments/archive_in_project_worker_spec.rb spec/workers/service_desk_email_receiver_worker_spec.rb spec/lib/container_registry/registry_spec.rb spec/helpers/webpack_helper_spec.rb spec/services/keys/create_service_spec.rb spec/scripts/setup/find_jh_branch_spec.rb spec/views/admin/application_settings/_ci_cd.html.haml_spec.rb spec/lib/sidebars/user_settings/menus/profile_menu_spec.rb spec/lib/gitlab/dependency_linker/podfile_linker_spec.rb spec/services/merge_requests/mergeability/check_ci_status_service_spec.rb spec/rubocop/cop/gitlab/event_store_subscriber_spec.rb spec/helpers/groups/settings_helper_spec.rb spec/support_specs/matchers/event_store_spec.rb spec/lib/gitlab/graphql/calls_gitaly/field_extension_spec.rb spec/lib/gitlab/ci/mask_secret_spec.rb spec/lib/gitlab/memory/upload_and_cleanup_reports_spec.rb spec/models/alerting/project_alerting_setting_spec.rb spec/graphql/types/error_tracking/sentry_error_stack_trace_type_spec.rb spec/lib/gitlab/ci/environment_matcher_spec.rb spec/lib/gitlab/ci/config/yaml/result_spec.rb spec/services/pages_domains/delete_service_spec.rb spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/strategies_spec.rb spec/lib/gitlab/ci/config/entry/tags_spec.rb spec/lib/api/api_spec.rb spec/lib/gitlab/template/gitignore_template_spec.rb spec/graphql/types/milestone_type_spec.rb spec/lib/gitlab/search/sort_options_spec.rb spec/workers/gitlab/github_import/import_release_attachments_worker_spec.rb spec/lib/gitlab/rugged_instrumentation_spec.rb spec/graphql/types/ci/runner_type_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/snowplow_configured_to_gitlab_collector_metric_spec.rb spec/models/bulk_imports/file_transfer_spec.rb spec/lib/gitlab/utils/batch_loader_spec.rb spec/lib/gitlab/import/errors_spec.rb spec/services/google_cloud/gcp_region_add_or_replace_service_spec.rb spec/graphql/mutations/members/bulk_update_base_spec.rb spec/workers/gitlab/github_import/import_pull_request_merged_by_worker_spec.rb spec/lib/gitlab/database/migrations/observers/batch_details_spec.rb spec/lib/bulk_imports/groups/extractors/subgroups_extractor_spec.rb spec/graphql/types/admin/analytics/usage_trends/measurement_identifier_enum_spec.rb spec/lib/gitlab/git/gitmodules_parser_spec.rb spec/lib/gitlab/database/schema_validation/validators/extra_indexes_spec.rb spec/graphql/types/container_expiration_policy_cadence_enum_spec.rb spec/graphql/types/projects/service_type_spec.rb spec/graphql/types/design_management/design_version_event_enum_spec.rb spec/lib/bulk_imports/groups/transformers/subgroup_to_entity_transformer_spec.rb spec/graphql/types/packages/conan/file_metadatum_type_spec.rb spec/lib/gitlab/ci/config/normalizer/factory_spec.rb spec/graphql/types/container_expiration_policy_keep_enum_spec.rb spec/models/concerns/transactions_spec.rb spec/lib/gitlab/email/message/build_ios_app_guide_spec.rb spec/lib/banzai/pipeline/emoji_pipeline_spec.rb spec/graphql/types/users/email_type_spec.rb spec/graphql/types/milestone_stats_type_spec.rb spec/lib/sidebars/projects/super_sidebar_menus/monitor_menu_spec.rb spec/lib/gitlab/metrics/dashboard/validator/custom_formats_spec.rb spec/graphql/types/permission_types/user_spec.rb spec/graphql/mutations/concerns/mutations/resolves_group_spec.rb spec/lib/bitbucket/representation/user_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/service_desk_email_encrypted_secrets_enabled_metric_spec.rb spec/graphql/types/ci/variable_type_enum_spec.rbKnapsack report generator started!1315Run options: exclude {:quarantine=>true, :level=>"background_migration"}1316Test environment set up in 0.593763556 seconds1317Issue1318 Associations1319 is expected to belong to milestone required: false1320 is expected to belong to project required: false1321 is expected to belong to work_item_type class_name => WorkItems::Type required: false1322 is expected to belong to moved_to class_name => Issue required: false1323 is expected to have one moved_from class_name => Issue1324 is expected to belong to duplicated_to class_name => Issue required: false1325 is expected to belong to closed_by class_name => User required: false1326 is expected to have many assignees1327 is expected to have many user_mentions class_name => IssueUserMention1328 is expected to have many designs1329 is expected to have many design_versions1330 is expected to have one sentry_issue1331 is expected to have one alert_management_alert1332 is expected to have many alert_management_alerts1333 is expected to have many resource_milestone_events1334 is expected to have many resource_state_events1335 is expected to have and belong to many prometheus_alert_events1336 is expected to have and belong to many self_managed_prometheus_alert_events1337 is expected to have many prometheus_alerts1338 is expected to have many issue_email_participants1339 is expected to have one email1340 is expected to have many timelogs1341 is expected to have one incident_management_issuable_escalation_status1342 is expected to have many issue_customer_relations_contacts1343 is expected to have many customer_relations_contacts1344 is expected to have many incident_management_timeline_events1345 versions.most_recent1346 returns the most recent version1347 modules1348 is expected to includes the Issuable module1349 is expected to includes the Referable module1350 is expected to includes the Sortable module1351 is expected to includes the Taskable module1352 is expected to includes the MilestoneEventable module1353 is expected to includes the StateEventable module1354 behaves like AtomicInternalId1355 .has_internal_id1356 Module inclusion1357 is expected to includes the AtomicInternalId module1358 Validation1359 when presence validation is required1360 when creating an object1361 raises an error if the internal id is blank1362 when updating an object1363 raises an error if the internal id is blank1364 when presence validation is not required1365 when creating an object1366 does not raise an error if the internal id is blank (PENDING: No reason given)1367 when updating an object1368 does not raise an error if the internal id is blank (PENDING: No reason given)1369 Creating an instance1370 saves a new instance properly1371 internal id generation1372 calls InternalId.generate_next and sets internal id attribute1373 does not overwrite an existing internal id1374 when the instance has an internal ID set1375 calls InternalId.update_last_value and sets the `last_value` to that of the instance1376 unsetting the instance internal id on rollback1377 when the internal id has been changed1378 when the internal id is automatically set1379 clears it on the instance1380 when the internal id is manually set1381 does not clear it on the instance1382 when the internal id has not been changed1383 preserves the value on the instance1384 supply of internal ids1385 provides a persistent supply of IID values, sensitive to the current state1386 #reset_scope_internal_id_attribute1387 rewinds the allocated IID1388 allocates the same IID1389 validations1390 is expected not to allow :confidential to be ‹nil›1391 is expected to allow :confidential to be ‹true› or ‹false›1392 custom validations1393 due_date_after_start_date1394 when both values are not present1395 is expected to be truthy1396 when start date is present and due date is not1397 is expected to be truthy1398 when due date is present and start date is not1399 is expected to be truthy1400 when both date values are present1401 when due date is greater than start date1402 is expected to be truthy1403 when due date is equal to start date1404 is expected to be truthy1405 when due date is before start date1406 is expected to be falsey1407 adds an error message1408 issue_type1409 when a valid type1410 is expected to eq true1411 empty type1412 is expected to eq false1413 #allowed_work_item_type_change1414 old_type: :issue, new_type: :incident, is_valid: true1415 is possible to change type only between selected types1416 old_type: :incident, new_type: :issue, is_valid: true1417 is possible to change type only between selected types1418 old_type: :test_case, new_type: :issue, is_valid: true1419 is possible to change type only between selected types1420 old_type: :issue, new_type: :test_case, is_valid: true1421 is possible to change type only between selected types1422 old_type: :issue, new_type: :task, is_valid: false1423 is possible to change type only between selected types1424 old_type: :test_case, new_type: :task, is_valid: false1425 is possible to change type only between selected types1426 old_type: :incident, new_type: :task, is_valid: false1427 is possible to change type only between selected types1428 old_type: :task, new_type: :issue, is_valid: false1429 is possible to change type only between selected types1430 old_type: :task, new_type: :incident, is_valid: false1431 is possible to change type only between selected types1432 old_type: :task, new_type: :test_case, is_valid: false1433 is possible to change type only between selected types1434 confidentiality1435 when parent and child are confidential1436 does not allow to make child not-confidential1437 allows to make parent not-confidential1438 when parent and child are not-confidential1439 does not allow to make parent confidential1440 allows to make child confidential1441 callbacks1442 #ensure_metrics!1443 creates metrics after saving1444 does not create duplicate metrics for an issue1445 records current metrics1446 when metrics record is missing1447 creates the metrics record1448 #ensure_work_item_type1449 when a type was already set1450 does not fetch a work item type from the DB1451 does not fetch a work item type from the DB when updating the type1452 ensures a work item type if updated to nil1453 when no type was set1454 sets a work item type before validation1455 does not fetch type from DB if provided during update1456 #record_create_action1457 records the creation action after saving1458 behaves like issue_edit snowplow tracking1459 behaves like Snowplow event tracking with RedisHLL context1460 behaves like Snowplow event tracking1461 is emitted1462 issue namespace1463 sets the namespace_id1464 when issue is created1465 sets the namespace_id1466 when existing issue is saved1467 sets the namespace id1468 order by upvotes1469 .order_upvotes_desc1470 orders on upvotes1471 .order_upvotes_asc1472 orders on upvotes1473 .with_alert_management_alerts1474 gets only issues with alerts1475 .simple_sorts1476 includes all keys1477 .with_issue_type1478 gives issues with the given issue type1479 gives issues with the given issue type1480 .order_severity1481 sorting ascending1482 is expected to eq [#<Issue id:73 namespace34/project34#1>, #<Issue id:72 namespace33/project33#1>, #<Issue id:71 namespace32/project32#1>]1483 sorting descending1484 is expected to eq [#<Issue id:71 namespace32/project32#1>, #<Issue id:72 namespace33/project33#1>, #<Issue id:73 namespace34/project34#1>]1485 .order_title1486 sorting ascending1487 is expected to eq [#<Issue id:75 namespace36/project36#1>, #<Issue id:76 namespace37/project37#1>, #<Issue id:77 namespace38/project38#1>, #<Issue id:74 namespace35/project35#1>]1488 sorting descending1489 is expected to eq [#<Issue id:74 namespace35/project35#1>, #<Issue id:77 namespace38/project38#1>, #<Issue id:76 namespace37/project37#1>, #<Issue id:75 namespace36/project36#1>]1490 #order_by_relative_position1491 returns ordered list1492 order by escalation status1493 .order_escalation_status_asc1494 is expected to eq [#<Issue id:82 namespace39/project39#1>, #<Issue id:83 namespace40/project40#1>, #<Issue id:84 namespace41/project41#1>]1495 .order_escalation_status_desc1496 is expected to eq [#<Issue id:83 namespace40/project40#1>, #<Issue id:82 namespace39/project39#1>, #<Issue id:84 namespace41/project41#1>]1497 #sort1498 by relative_position1499 sorts asc with nulls at the end1500 #card_attributes1501 includes the author name1502 includes the assignee name1503 #close1504 sets closed_at to Time.current when an issue is closed1505 changes the state to closed1506 when an argument is provided1507 and the argument is a User1508 changes closed_by to the given user1509 and the argument is a not a User1510 does not change closed_by1511 when an argument is not provided1512 does not change closed_by1513 #reopen1514 sets closed_at to nil when an issue is reopened1515 sets closed_by to nil when an issue is reopened1516 clears moved_to_id for moved issues1517 clears duplicated_to_id for duplicated issues1518 changes the state to opened1519 #to_reference1520 when nil argument1521 returns issue id1522 returns complete path to the issue with full: true1523 when argument is a project1524 when same project1525 returns issue id1526 returns full reference with full: true1527 when cross-project in same namespace1528 returns a cross-project reference1529 when cross-project in different namespace1530 returns complete path to the issue1531 when argument is a namespace1532 when same as issue1533 returns path to the issue with the project name1534 returns full reference with full: true1535 when different to issue namespace1536 returns full path to the issue with full: true1537 #to_reference with table syntax1538 issue: project_issue, full: false, from: nil, result: lazy { "##{issue.iid}" }1539 returns correct reference1540 issue: project_issue, full: true, from: nil, result: project_issue_full_reference1541 returns correct reference1542 issue: project_issue, full: false, from: group, result: lazy { "#{project.path}##{issue.iid}" }1543 returns correct reference1544 issue: project_issue, full: true, from: group, result: project_issue_full_reference1545 returns correct reference1546 issue: project_issue, full: false, from: parent, result: project_issue_full_reference1547 returns correct reference1548 issue: project_issue, full: true, from: parent, result: project_issue_full_reference1549 returns correct reference1550 issue: project_issue, full: false, from: project, result: lazy { "##{issue.iid}" }1551 returns correct reference1552 issue: project_issue, full: true, from: project, result: project_issue_full_reference1553 returns correct reference1554 issue: project_issue, full: false, from: project_namespace, result: lazy { "##{issue.iid}" }1555 returns correct reference1556 issue: project_issue, full: true, from: project_namespace, result: project_issue_full_reference1557 returns correct reference1558 issue: project_issue, full: false, from: same_namespace_project, result: lazy { "#{project.path}##{issue.iid}" }1559 returns correct reference1560 issue: project_issue, full: true, from: same_namespace_project, result: project_issue_full_reference1561 returns correct reference1562 issue: project_issue, full: false, from: same_namespace_project_namespace, result: lazy { "#{project.path}##{issue.iid}" }1563 returns correct reference1564 issue: project_issue, full: true, from: same_namespace_project_namespace, result: project_issue_full_reference1565 returns correct reference1566 issue: project_issue, full: false, from: another_group, result: project_issue_full_reference1567 returns correct reference1568 issue: project_issue, full: true, from: another_group, result: project_issue_full_reference1569 returns correct reference1570 issue: project_issue, full: false, from: another_namespace_project, result: project_issue_full_reference1571 returns correct reference1572 issue: project_issue, full: true, from: another_namespace_project, result: project_issue_full_reference1573 returns correct reference1574 issue: project_issue, full: false, from: another_namespace_project_namespace, result: project_issue_full_reference1575 returns correct reference1576 issue: project_issue, full: true, from: another_namespace_project_namespace, result: project_issue_full_reference1577 returns correct reference1578 issue: project_issue, full: false, from: user_namespace, result: project_issue_full_reference1579 returns correct reference1580 issue: project_issue, full: true, from: user_namespace, result: project_issue_full_reference1581 returns correct reference1582 issue: group_issue, full: false, from: nil, result: lazy { "##{issue.iid}" }1583 returns correct reference1584 issue: group_issue, full: true, from: nil, result: group_issue_full_reference1585 returns correct reference1586 issue: group_issue, full: false, from: user_namespace, result: group_issue_full_reference1587 returns correct reference1588 issue: group_issue, full: true, from: user_namespace, result: group_issue_full_reference1589 returns correct reference1590 issue: group_issue, full: false, from: group, result: lazy { "##{issue.iid}" }1591 returns correct reference1592 issue: group_issue, full: true, from: group, result: group_issue_full_reference1593 returns correct reference1594 issue: group_issue, full: false, from: parent, result: lazy { "#{group.path}##{issue.iid}" }1595 returns correct reference1596 issue: group_issue, full: true, from: parent, result: group_issue_full_reference1597 returns correct reference1598 issue: group_issue, full: false, from: project, result: lazy { "#{group.path}##{issue.iid}" }1599 returns correct reference1600 issue: group_issue, full: true, from: project, result: group_issue_full_reference1601 returns correct reference1602 issue: group_issue, full: false, from: project_namespace, result: lazy { "#{group.path}##{issue.iid}" }1603 returns correct reference1604 issue: group_issue, full: true, from: project_namespace, result: group_issue_full_reference1605 returns correct reference1606 issue: group_issue, full: false, from: another_group, result: group_issue_full_reference1607 returns correct reference1608 issue: group_issue, full: true, from: another_group, result: group_issue_full_reference1609 returns correct reference1610 issue: group_issue, full: false, from: another_namespace_project, result: group_issue_full_reference1611 returns correct reference1612 issue: group_issue, full: true, from: another_namespace_project, result: group_issue_full_reference1613 returns correct reference1614 issue: group_issue, full: false, from: another_namespace_project_namespace, result: group_issue_full_reference1615 returns correct reference1616 issue: group_issue, full: true, from: another_namespace_project_namespace, result: group_issue_full_reference1617 returns correct reference1618 issue: user_issue, full: false, from: nil, result: lazy { "##{issue.iid}" }1619 returns correct reference1620 issue: user_issue, full: true, from: nil, result: user_issue_full_reference1621 returns correct reference1622 issue: user_issue, full: false, from: user_namespace, result: lazy { "##{issue.iid}" }1623 returns correct reference1624 issue: user_issue, full: true, from: user_namespace, result: user_issue_full_reference1625 returns correct reference1626 issue: user_issue, full: false, from: group, result: user_issue_full_reference1627 returns correct reference1628 issue: user_issue, full: true, from: group, result: user_issue_full_reference1629 returns correct reference1630 issue: user_issue, full: false, from: parent, result: user_issue_full_reference1631 returns correct reference1632 issue: user_issue, full: true, from: parent, result: user_issue_full_reference1633 returns correct reference1634 issue: user_issue, full: false, from: project, result: user_issue_full_reference1635 returns correct reference1636 issue: user_issue, full: true, from: project, result: user_issue_full_reference1637 returns correct reference1638 issue: user_issue, full: false, from: project_namespace, result: user_issue_full_reference1639 returns correct reference1640 issue: user_issue, full: true, from: project_namespace, result: user_issue_full_reference1641 returns correct reference1642 issue: user_issue, full: false, from: another_group, result: user_issue_full_reference1643 returns correct reference1644 issue: user_issue, full: true, from: another_group, result: user_issue_full_reference1645 returns correct reference1646 issue: user_issue, full: false, from: another_namespace_project, result: user_issue_full_reference1647 returns correct reference1648 issue: user_issue, full: true, from: another_namespace_project, result: user_issue_full_reference1649 returns correct reference1650 issue: user_issue, full: false, from: another_namespace_project_namespace, result: user_issue_full_reference1651 returns correct reference1652 issue: user_issue, full: true, from: another_namespace_project_namespace, result: user_issue_full_reference1653 returns correct reference1654 #assignee_or_author?1655 returns true for a user that is assigned to an issue1656 returns true for a user that is the author of an issue1657 returns false for a user that is not the assignee or author1658 #related_issues to relate incidents and issues1659 returns only authorized related issues for given user1660 returns issues with valid issue_link_type1661 returns issues including the link creation time1662 returns issues including the link update time1663 when a user cannot read cross project1664 only returns issues within the same project1665 #can_move?1666 user is not a member of project issue belongs to1667 is expected to eq false1668 user is reporter in project issue belongs to1669 is expected to eq true1670 issue not persisted1671 is expected to eq false1672 checking destination project also1673 destination project allowed1674 is expected to eq true1675 destination project not allowed1676 is expected to eq false1677 #moved?1678 when issue has not been moved1679 is expected not to be moved1680 when issue has already been moved1681 is expected to be moved1682 #duplicated?1683 issue not duplicated1684 is expected to eq false1685 issue already duplicated1686 is expected to eq true1687 #from_service_desk?1688 when issue author is support bot1689 is expected to be truthy1690 when issue author is not support bot1691 is expected to be falsey1692 #suggested_branch_name1693 #to_branch_name does not exists1694 returns #to_branch_name1695 #to_branch_name exists not ending with -index1696 returns #to_branch_name ending with -21697 #to_branch_name exists ending with -index1698 returns #to_branch_name ending with max index + 11699 when branch name still exists after 5 attempts1700 returns #to_branch_name ending with random characters1701 behaves like an editable mentionable1702 creates new cross-reference notes when the mentionable text is edited1703 behaves like a mentionable1704 generates a descriptive back-reference1705 extracts references from its reference property1706 creates cross-reference notes1707 when there are cached markdown fields1708 sends in cached markdown fields when appropriate1709 when there are cached markdown fields1710 refreshes markdown cache if necessary1711 when the markdown cache is stale1712 persists the refreshed cache so that it does not have to be refreshed every time1713 behaves like a Taskable1714 with multiple tasks1715 returns the correct task status1716 #tasks?1717 returns true when object has tasks1718 returns false when object has no tasks1719 with nested tasks1720 returns the correct task status1721 with an incomplete task1722 returns the correct task status1723 with tasks that are not formatted correctly1724 returns the correct task status1725 with a complete task1726 returns the correct task status1727 with tasks in blockquotes1728 returns the correct task status1729 .to_branch_name1730 parameterizes arguments and joins with dashes1731 preserves the case in the first argument1732 truncates branch name to at most 100 characters1733 truncates dangling parts of the branch name1734 takes issue branch template into account1735 #to_branch_name1736 returns a branch name with the issue title if not confidential1737 returns a generic branch name if confidential1738 #can_be_worked_on?1739 is expected to be can be worked on1740 is closed1741 is expected not to be can be worked on1742 project is forked1743 is expected not to be can be worked on1744 #participants1745 behaves like issuable participants1746 when resource parent is public1747 and users are referenced on notes1748 includes the issue author1749 includes the authors of the notes1750 and note is confidential1751 and mentions users1752 only includes users that can read the note as participants1753 using a private project1754 does not include mentioned users that do not have access to the project1755 cached counts1756 updates when assignees change1757 #visible_to_user?1758 with a project1759 returns false when feature is disabled1760 without a user1761 with issue available as public1762 returns true when the issue is publicly visible1763 returns false when the issue is not publicly visible1764 with issues available only to team members in a public project1765 returns false1766 with a user1767 with an admin user1768 when admin mode is enabled1769 behaves like issue readable by user1770 is expected to eq true1771 behaves like confidential issue readable by user1772 is expected to eq true1773 behaves like hidden issue readable by user1774 is expected to eq true1775 when admin mode is disabled1776 behaves like issue not readable by user1777 is expected to eq false1778 behaves like confidential issue not readable by user1779 is expected to eq false1780 behaves like hidden issue not readable by user1781 is expected to eq false1782 with an owner1783 behaves like issue readable by user1784 is expected to eq true1785 behaves like confidential issue readable by user1786 is expected to eq true1787 behaves like hidden issue not readable by user1788 is expected to eq false1789 with a reporter user1790 behaves like issue readable by user1791 is expected to eq true1792 behaves like confidential issue readable by user1793 is expected to eq true1794 behaves like hidden issue not readable by user1795 is expected to eq false1796 with a guest user1797 behaves like issue readable by user1798 is expected to eq true1799 behaves like confidential issue not readable by user1800 is expected to eq false1801 behaves like hidden issue not readable by user1802 is expected to eq false1803 when user is an assignee1804 behaves like issue readable by user1805 is expected to eq true1806 behaves like confidential issue readable by user1807 is expected to eq true1808 behaves like hidden issue not readable by user1809 is expected to eq false1810 when user is the author1811 behaves like issue readable by user1812 is expected to eq true1813 behaves like confidential issue readable by user1814 is expected to eq true1815 behaves like hidden issue not readable by user1816 is expected to eq false1817 with a user that is not a member1818 using a public project1819 behaves like issue readable by user1820 is expected to eq true1821 behaves like confidential issue not readable by user1822 is expected to eq false1823 behaves like hidden issue not readable by user1824 is expected to eq false1825 using an internal project1826 using an internal user1827 behaves like issue readable by user1828 is expected to eq true1829 behaves like confidential issue not readable by user1830 is expected to eq false1831 behaves like hidden issue not readable by user1832 is expected to eq false1833 using an external user1834 behaves like issue not readable by user1835 is expected to eq false1836 behaves like confidential issue not readable by user1837 is expected to eq false1838 behaves like hidden issue not readable by user1839 is expected to eq false1840 using an external user1841 behaves like issue not readable by user1842 is expected to eq false1843 behaves like confidential issue not readable by user1844 is expected to eq false1845 behaves like hidden issue not readable by user1846 is expected to eq false1847 with an external authentication service1848 is `false` when an external authorization service is enabled1849 checks the external service to determine if an issue is readable by a user1850 does not check the external service if a user does not have access to the project1851 with an admin1852 when admin mode is enabled1853 does not check the external webservice1854 when admin mode is disabled1855 checks the external service to determine if an issue is readable by the admin1856 when issue is moved to a private project1857 when user is the author of the original issue1858 behaves like issue visible if user has guest access1859 when user is not a member1860 behaves like issue not readable by user1861 is expected to eq false1862 behaves like confidential issue not readable by user1863 is expected to eq false1864 when user is a guest1865 behaves like issue readable by user1866 is expected to eq true1867 behaves like confidential issue readable by user1868 is expected to eq true1869 when user is an assignee in the original issue1870 behaves like issue visible if user has guest access1871 when user is not a member1872 behaves like issue not readable by user1873 is expected to eq false1874 behaves like confidential issue not readable by user1875 is expected to eq false1876 when user is a guest1877 behaves like issue readable by user1878 is expected to eq true1879 behaves like confidential issue readable by user1880 is expected to eq true1881 when user is not the author or an assignee in original issue1882 when user is a guest1883 behaves like issue readable by user1884 is expected to eq true1885 behaves like confidential issue not readable by user1886 is expected to eq false1887 when user is a reporter1888 behaves like issue readable by user1889 is expected to eq true1890 behaves like confidential issue readable by user1891 is expected to eq true1892 #publicly_visible?1893 using a public project1894 returns true for a regular issue1895 returns false for a confidential issue1896 using an internal project1897 returns false for a regular issue1898 returns false for a confidential issue1899 using a private project1900 returns false for a regular issue1901 returns false for a confidential issue1902 #check_for_spam?1903 support_bot?: false, visibility_level: 20, confidential: false, new_attributes: {:description=>"new"}, check_for_spam?: true1904 checks for spam when necessary1905 support_bot?: false, visibility_level: 20, confidential: false, new_attributes: {:title=>"new"}, check_for_spam?: true1906 checks for spam when necessary1907 support_bot?: false, visibility_level: 20, confidential: true, new_attributes: {:confidential=>false}, check_for_spam?: true1908 checks for spam when necessary1909 support_bot?: false, visibility_level: 20, confidential: false, new_attributes: {:confidential=>true}, check_for_spam?: false1910 checks for spam when necessary1911 support_bot?: false, visibility_level: 20, confidential: true, new_attributes: {:description=>"new"}, check_for_spam?: false1912 checks for spam when necessary1913 support_bot?: false, visibility_level: 20, confidential: false, new_attributes: {:title=>"new", :confidential=>true}, check_for_spam?: false1914 checks for spam when necessary1915 support_bot?: false, visibility_level: 20, confidential: false, new_attributes: {:description=>"original description"}, check_for_spam?: false1916 checks for spam when necessary1917 support_bot?: false, visibility_level: 20, confidential: false, new_attributes: {:weight=>3}, check_for_spam?: false1918 checks for spam when necessary1919 support_bot?: false, visibility_level: 10, confidential: false, new_attributes: {:description=>"new"}, check_for_spam?: false1920 checks for spam when necessary1921 support_bot?: false, visibility_level: 0, confidential: false, new_attributes: {:description=>"new"}, check_for_spam?: false1922 checks for spam when necessary1923 support_bot?: true, visibility_level: 20, confidential: true, new_attributes: {:confidential=>false}, check_for_spam?: true1924 checks for spam when necessary1925 support_bot?: true, visibility_level: 20, confidential: false, new_attributes: {:confidential=>true}, check_for_spam?: false1926 checks for spam when necessary1927 support_bot?: true, visibility_level: 20, confidential: true, new_attributes: {:description=>"new"}, check_for_spam?: true1928 checks for spam when necessary1929 support_bot?: true, visibility_level: 20, confidential: false, new_attributes: {:title=>"new", :confidential=>true}, check_for_spam?: true1930 checks for spam when necessary1931 support_bot?: true, visibility_level: 10, confidential: false, new_attributes: {:description=>"new"}, check_for_spam?: true1932 checks for spam when necessary1933 support_bot?: true, visibility_level: 0, confidential: false, new_attributes: {:title=>"new"}, check_for_spam?: true1934 checks for spam when necessary1935 support_bot?: true, visibility_level: 20, confidential: false, new_attributes: {:description=>"original description"}, check_for_spam?: false1936 checks for spam when necessary1937 support_bot?: true, visibility_level: 0, confidential: true, new_attributes: {:weight=>3}, check_for_spam?: false1938 checks for spam when necessary1939 removing an issue1940 refreshes the number of open issues of the project1941 .public_only1942 only returns public issues1943 .confidential_only1944 only returns confidential_only issues1945 .without_hidden1946 only returns without_hidden issues1947 .by_project_id_and_iid1948 behaves like a where_composite scope1949 we pass an empty array1950 returns a null relation1951 we pass nil1952 returns a null relation1953 we pass a singleton composite id1954 finds the first result1955 we pass group of ids1956 finds all the results1957 performance1958 is not O(N)1959 .service_desk1960 returns the service desk issue1961 behaves like throttled touch1962 #touch1963 updates the updated_at timestamp1964 updates the object at most once per minute1965 relative positioning1966 is not blocked for repositioning by default1967 behaves like a class that supports relative positioning1968 #scoped_items1969 includes all items with the same scope1970 #relative_siblings1971 includes all items with the same scope, except self1972 .move_nulls_to_end1973 moves items with null relative_position to the end1974 preserves relative position1975 moves the item near the start position when there are no existing positions1976 does not perform any moves if all items have their relative_position set1977 manages to move nulls to the end even if there is a sequence at the end1978 manages to move nulls to the end even if there is not enough space1979 manages to move nulls to the end, stacking if we cannot create enough space1980 manages to move nulls found in the relative scope1981 can move many nulls1982 does not have an N+1 issue1983 .move_nulls_to_start1984 moves items with null relative_position to the start1985 moves the item near the start position when there are no existing positions1986 preserves relative position1987 does not perform any moves if all items have their relative_position set1988 manages to move nulls to the start even if there is not enough space1989 manages to move nulls to the end, stacking if we cannot create enough space1990 #move_before1991 moves item before1992 can move the item before an item at the start1993 can move the item before an item at MIN_POSITION1994 can move the item before an item bunched up at MIN_POSITION1995 when there is no space1996 moves items correctly1997 leap-frogging to the left1998 can leap-frog STEPS times before needing to rebalance1999 there is no space to the left after moving STEPS times2000 rebalances to the right2001 #move_after2002 moves item after2003 can move the item after an item bunched up at MAX_POSITION2004 when there is no space2005 can move the item after an item at MAX_POSITION2006 moves items correctly2007 leap-frogging2008 rebalances after STEPS jumps2009 #move_to_start2010 places items at most IDEAL_DISTANCE from the start when the range is open2011 moves item to the end2012 positions the item at MIN_POSITION when there is only one space left2013 rebalances when there is already an item at the MIN_POSITION2014 deals with a run of elements at the start2015 #move_to_end2016 places items at most IDEAL_DISTANCE from the start when the range is open2017 moves item to the end2018 positions the item at MAX_POSITION when there is only one space left2019 rebalances when there is already an item at the MAX_POSITION2020 deals with a run of elements at the end2021 #move_between2022 positions item between two other2023 positions item between on top2024 positions item between to end2025 positions items even when after and before positions are the same2026 positions item in the middle of other two if distance is big enough2027 positions item closer to the middle if we are at the very top2028 positions item closer to the middle if we are at the very bottom2029 positions item in the middle of other two2030 positions item right if we pass non-sequential parameters2031 avoids N+1 queries when rebalancing other items2032 the two items are next to each other2033 behaves like moves item between2034 moves the middle item to between left and right2035 there is no space2036 behaves like moves item between2037 moves the middle item to between left and right2038 there is a bunch of items2039 handles bunches correctly2040 behaves like moves item between2041 moves the middle item to between left and right2042 when block_issue_repositioning flag is enabled for group2043 is blocked for repositioning2044 does not move issues with null position2045 behaves like versioned description2046 associations2047 is expected to have many description_versions2048 save_description_version2049 when description was changed2050 saves the old and new description for the first update2051 only saves the new description for subsequent updates2052 sets the new description version to `saved_description_version`2053 clears `saved_description_version` after another save that does not change description2054 when description was not changed2055 does not save any description version2056 #previous_updated_at2057 returns updated_at value if updated_at did not change at all2058 returns updated_at value if `previous_changes` has nil value for `updated_at`2059 returns updated_at value if previous updated_at value is not present2060 returns previous updated_at when present2061 #design_collection2062 returns a design collection2063 current designs2064 an issue has no designs2065 is expected to be empty2066 an issue only has current designs2067 is expected to include #<DesignManagement::Design id:4 namespace1/project1#1/designs[homescreen-4.jpg]>, #<DesignManagement::Design id:5 namespace1/project1#1/designs[homescreen-5.jpg]>, and #<DesignManagement::Design id:6 namespace1/project1#1/designs[homescreen-6.jpg]>2068 an issue only has deleted designs2069 is expected to be empty2070 an issue has a mixture of current and deleted designs2071 is expected to contain exactly #<DesignManagement::Design id:10 namespace1/project1#1/designs[homescreen-10.jpg]> and #<DesignManagement::Design id:12 namespace1/project1#1/designs[homescreen-12.jpg]>2072 banzai_render_context2073 sets the label_url_method in the context2074 scheduling rebalancing2075 when project in user namespace2076 behaves like schedules issues rebalancing2077 schedules rebalancing if there is no space left2078 when project in a group namespace2079 behaves like schedules issues rebalancing2080 schedules rebalancing if there is no space left2081 #allows_reviewers?2082 returns false as we do not support reviewers on issues yet2083 #issue_type_supports?2084 raises error when feature is invalid2085 #supports_time_tracking?2086 issue_type: :issue, supports_time_tracking: true2087 is expected to eq true2088 issue_type: :incident, supports_time_tracking: true2089 is expected to eq true2090 #supports_move_and_clone?2091 issue_type: :issue, supports_move_and_clone: true2092 is expected to eq true2093 issue_type: :incident, supports_move_and_clone: true2094 is expected to eq true2095 #email_participants_emails2096 returns a list of emails2097 #email_participants_downcase2098 returns a list of emails with all uppercase letters replaced with their lowercase counterparts2099 #escalation_status2100 returns the incident_management_issuable_escalation_status association2101 #expire_etag_cache2102 touches the etag cache store2103 #link_reference_pattern2104 with issue url2105 matches with expected attributes2106 with incident url2107 matches with expected attributes2108 order by closed_at2109 .order_closed_at_asc2110 orders on closed at2111 .order_closed_at_desc2112 orders on closed at2113 #full_search2114 when searching non-english terms2115 adds extra where clause to match partial index2116 adds extra where clause to match partial index2117 adds extra where clause to match partial index2118 adds extra where clause to match partial index2119Note2120 associations2121 is expected to belong to project required: false2122 is expected to belong to noteable required: false2123 is expected to belong to author class_name => User required: false2124 is expected to have many todos2125 is expected to belong to review required: false inverse_of => notes2126 modules2127 is expected to includes the Participable module2128 is expected to includes the Mentionable module2129 is expected to includes the Awardable module2130 is expected to includes the Sortable module2131 default values2132 is expected not to be system2133 validation2134 is expected to validate that the length of :note is at most 10000002135 is expected to validate that :note cannot be empty/falsy2136 is expected to validate that :project cannot be empty/falsy2137 when note is on commit2138 is expected to validate that :commit_id cannot be empty/falsy2139 is expected not to validate that :noteable_id cannot be empty/falsy2140 when note is not on commit2141 is expected not to validate that :commit_id cannot be empty/falsy2142 is expected to validate that :noteable_id cannot be empty/falsy2143 when noteable and note project differ2144 is expected to be invalid2145 when noteable and note project are the same2146 is expected to be valid2147 when project is missing for a project related note2148 is expected to be invalid2149 when noteable is a personal snippet2150 is valid without project2151 max notes limit2152 when creating a system note2153 is expected to be valid2154 when creating a user note2155 is expected not to be valid2156 when updating an existing note on a noteable that already exceeds the limit2157 is expected to be valid2158 created_at in the past2159 when creating a note not too much in the past2160 is expected to be valid2161 when creating a note too much in the past2162 is expected not to be valid2163 confidentiality2164 for existing public note2165 is not possible to change the note to confidential2166 is possible to change confidentiality from nil to false2167 for existing confidential note2168 is not possible to change the note to public2169 for a new note2170 allows to create a confidential note for an issue2171 when noteable is not allowed to have confidential notes2172 can not be set confidential2173 when note type is not allowed to be confidential2174 can not be set confidential2175 when the note is a discussion note2176 is expected to be valid2177 when replying to a note2178 when the note is reply to a confidential note2179 is expected to be valid2180 when the note is reply to a public note2181 can not be set confidential2182 when reply note is public but discussion is confidential2183 can not be set confidential2184 callbacks2185 #keep_around_commit2186 calls #keep_around_commit normally2187 skips #keep_around_commit if 'skip_keep_around_commits' is true2188 skips #keep_around_commit if 'importing' is true2189 #notify_after_create2190 calls #after_note_created on the noteable2191 #notify_after_destroy2192 calls #after_note_destroyed on the noteable2193 does not error if noteable is nil2194 sets internal flag2195 when confidential is `true`2196 is expected to equal true2197 when confidential is `false`2198 is expected to equal false2199 when confidential is `nil`2200 is expected to equal false2201 Commit notes2202 is accessible through #noteable2203 saves a valid note2204 is recognized by #for_commit?2205 keeps the commit around2206 does not generate N+1 queries for participants2207 authorization2208 read2209 is expected to be falsey2210 is expected to be truthy2211 is expected to be falsey2212 write2213 is expected to be falsey2214 is expected to be truthy2215 is expected to be falsey2216 admin2217 is expected to be falsey2218 is expected to be truthy2219 is expected to be falsey2220 behaves like an editable mentionable2221 creates new cross-reference notes when the mentionable text is edited2222 behaves like a mentionable2223 generates a descriptive back-reference2224 extracts references from its reference property2225 creates cross-reference notes2226 when there are cached markdown fields2227 sends in cached markdown fields when appropriate2228 when there are cached markdown fields2229 refreshes markdown cache if necessary2230 when the markdown cache is stale2231 persists the refreshed cache so that it does not have to be refreshed every time2232 #all_references2233 reads the rendered note body from the cache2234 editable?2235 returns true2236 returns false2237 noteable_author?2238 when note is on commit2239 if user is the noteable author2240 returns true2241 if user is not the noteable author2242 returns false2243 when note is on issue2244 if user is the noteable author2245 returns true2246 if user is not the noteable author2247 returns false2248 last_edited_at2249 with last_edited_at2250 returns last_edited_at2251 without last_edited_at2252 returns updated_at2253 edited?2254 with updated_by2255 returns true2256 without updated_by2257 returns false2258 #confidential?2259 when note is not confidential2260 is false when a noteable is not confidential2261 is false when noteable can't be confidential2262 when include_noteable is set to true2263 is true when a noteable is confidential2264 when include_noteable is not set to true2265 is false when a noteable is confidential2266 when note is confidential2267 is true even when a noteable is not confidential2268 #system_note_visible_for?2269 when project is public2270 behaves like users with note access2271 returns true2272 when group is private2273 returns visible but not readable for non-member user2274 returns visible but not readable for a nil user2275 behaves like users with note access2276 returns true2277 #system_note_viewable_by?(user)2278 when system_note_metadata is not present2279 returns true2280 system_note_metadata isn't of type 'branch' or 'contact'2281 returns true2282 system_note_metadata is of type 'branch'2283 user doesn't have :download_code ability2284 returns false2285 user has the :download_code ability2286 returns true2287 system_note_metadata is of type 'contact'2288 user doesn't have :read_crm_contact ability2289 returns false2290 user has the :read_crm_contact ability2291 returns true2292 system_note_visible_for?2293 when there is one reference in note2294 behaves like checks references2295 returns false2296 returns true2297 returns true if user visible reference count set2298 returns false if user visible reference count set but does not match total reference count2299 returns false if ref count is 02300 when there is a reference to a label2301 behaves like checks references2302 returns false2303 returns true2304 returns true if user visible reference count set2305 returns false if user visible reference count set but does not match total reference count2306 returns false if ref count is 02307 when there are two references in note2308 behaves like checks references2309 returns false2310 returns true2311 returns true if user visible reference count set2312 returns false if user visible reference count set but does not match total reference count2313 returns false if ref count is 02314 when there is a private issue and user reference2315 behaves like checks references2316 returns false2317 returns true2318 returns true if user visible reference count set2319 returns false if user visible reference count set but does not match total reference count2320 returns false if ref count is 02321 when there is a publicly visible user reference2322 returns true for other users2323 returns true for anonymous users2324 #system_note_with_references?2325 falsey for user-generated notes2326 when the note might contain cross references2327 delegates to the cross-reference regex2328 delegates to the cross-reference regex2329 delegates to the cross-reference regex2330 delegates to the cross-reference regex2331 delegates to the cross-reference regex2332 delegates to the cross-reference regex2333 delegates to the cross-reference regex2334 delegates to the cross-reference regex2335 delegates to the cross-reference regex2336 delegates to the cross-reference regex2337 delegates to the cross-reference regex2338 delegates to the cross-reference regex2339 delegates to the cross-reference regex2340 delegates to the cross-reference regex2341 delegates to the cross-reference regex2342 delegates to the cross-reference regex2343 delegates to the cross-reference regex2344 delegates to the cross-reference regex2345 delegates to the cross-reference regex2346 delegates to the cross-reference regex2347 when the note cannot contain cross references2348 scan for a `mentioned in` prefix2349 when system note metadata is not present2350 delegates to the system note service2351 with a system note2352 with :label action2353 is expected to be falsy2354 behaves like system_note_metadata includes note action2355 delegates to the cross-reference regex2356 with cross reference label note2357 is expected to be truthy2358 with :milestone action2359 is expected to be falsy2360 behaves like system_note_metadata includes note action2361 delegates to the cross-reference regex2362 with cross reference milestone note2363 is expected to be truthy2364 clear_blank_line_code!2365 clears a blank line code before validation2366 #participants2367 includes the note author2368 #start_of_discussion?2369 returns true when note is the start of a discussion2370 returns false when note is a reply2371 .find_discussion2372 returns a discussion with multiple notes2373 .grouped_diff_discussions2374 active diff discussions2375 includes active discussions2376 doesn't include outdated discussions2377 groups the discussions by line code2378 with image discussions2379 groups image discussions by file identifier2380 groups text discussions by line code2381 diff discussions for older diff refs2382 for diff refs a discussion was created at2383 includes discussions that were created then2384 groups the discussions by original line code2385 for diff refs a discussion was last active at2386 includes discussions that were last active2387 groups the discussions by line code2388 .simple_sorts2389 does not contain name sorts2390 .cherry_picked_merge_requests2391 returns merge requests that match the given merge commit2392 #for_work_item?2393 returns true for a work item2394 returns false for an issue2395 #for_project_snippet?2396 returns true for a project snippet note2397 returns false for a personal snippet note2398 #for_personal_snippet?2399 returns false for a project snippet note2400 returns true for a personal snippet note2401 #for_design2402 is true when the noteable is a design2403 #to_ability_name2404 returns note2405 #noteable_ability_name2406 returns snippet for a project snippet note2407 returns snippet for a personal snippet note2408 returns merge_request for an MR note2409 returns issue for an issue note2410 returns commit for a commit note2411 returns alert_management_alert for an alert note2412 #cache_markdown_field2413 note for a project snippet2414 skips project check2415 note for a personal snippet2416 does not skip project check2417 #can_be_discussion_note?2418 for a note on a merge request2419 returns true2420 for a note on an issue2421 returns true2422 for a note on a commit2423 returns true2424 for a note on a snippet2425 returns true2426 for a diff note on merge request2427 returns false2428 for a diff note on commit2429 returns false2430 for a discussion note2431 returns false2432 #discussion_class2433 when the note is displayed out of context2434 returns OutOfContextDiscussion2435 when the note is displayed in the original context2436 returns IndividualNoteDiscussion2437 #discussion_id2438 when it is newly created2439 has a discussion id2440 when it didn't store a discussion id before2441 has a discussion id2442 when the note is displayed out of context2443 overrides the discussion id2444 #to_discussion2445 returns a discussion with just this note2446 #discussion2447 when the note is part of a discussion2448 returns the discussion this note is in2449 when the note is not part of a discussion2450 returns a discussion with just this note2451 #part_of_discussion?2452 for a regular note2453 returns false2454 for a diff note2455 returns true2456 for a discussion note2457 returns true2458 #in_reply_to?2459 for a note2460 when part of a discussion2461 checks if the note is in reply to the other discussion2462 when not part of a discussion2463 checks if the note is in reply to the other noteable2464 for a discussion2465 when part of the same discussion2466 returns true2467 when not part of the same discussion2468 returns false2469 for a noteable2470 when a comment on the same noteable2471 returns true2472 when not a comment on the same noteable2473 returns false2474 #references2475 when part of a discussion2476 references all earlier notes in the discussion2477 when not part of a discussion2478 returns the noteable2479 expiring ETag cache2480 expires cache for note's issue when note is saved2481 expires cache for note's issue when note is destroyed2482 when issuable etag caching is disabled2483 does not store cache key2484 for merge requests2485 when adding a note to the MR2486 expires the MR note etag cache2487 when adding a note to a commit on the MR2488 expires the MR note etag cache2489 #with_notes_filter2490 when notes filter is nil2491 is expected to include #<Note id: 203, note: [FILTERED], noteable_type: "Issue", author_id: 333, created_at: "2023-03-30 11:...nil, resolved_by_push: nil, review_id: nil, confidential: nil, last_edited_at: nil, internal: false> and #<Note id: 204, note: [FILTERED], noteable_type: "Issue", author_id: 334, created_at: "2023-03-30 11:...nil, resolved_by_push: nil, review_id: nil, confidential: nil, last_edited_at: nil, internal: false>2492 when notes filter is set to all notes2493 is expected to include #<Note id: 205, note: [FILTERED], noteable_type: "Issue", author_id: 335, created_at: "2023-03-30 11:...nil, resolved_by_push: nil, review_id: nil, confidential: nil, last_edited_at: nil, internal: false> and #<Note id: 206, note: [FILTERED], noteable_type: "Issue", author_id: 336, created_at: "2023-03-30 11:...nil, resolved_by_push: nil, review_id: nil, confidential: nil, last_edited_at: nil, internal: false>2494 when notes filter is set to only comments2495 is expected to include #<Note id: 207, note: [FILTERED], noteable_type: "Issue", author_id: 337, created_at: "2023-03-30 11:...nil, resolved_by_push: nil, review_id: nil, confidential: nil, last_edited_at: nil, internal: false>2496 is expected not to include #<Note id: 210, note: [FILTERED], noteable_type: "Issue", author_id: 340, created_at: "2023-03-30 11:...nil, resolved_by_push: nil, review_id: nil, confidential: nil, last_edited_at: nil, internal: false>2497 #parent2498 returns project for project notes2499 returns nil for personal snippet note2500 scopes2501 .for_note_or_capitalized_note2502 returns the expected matching note2503 returns the expected capitalized note2504 does not support pattern matching2505 .like_note_or_capitalized_note2506 returns the expected matching note2507 returns the expected capitalized note2508 supports pattern matching2509 .with_suggestions2510 returns the correct note2511 .inc_relations_for_view2512 when noteable can not have diffs2513 does not include additional associations2514 when noteable is not set2515 includes additional diff associations2516 when noteable can have diffs2517 includes additional diff associations2518 banzai_render_context2519 when noteable is a merge request2520 sets the label_url_method in the context2521 when noteable is an issue2522 sets the label_url_method in the context2523 when noteable is a personal snippet2524 sets the parent user in the context2525 #parent_user2526 returns the author of a personal snippet2527 returns nil for project snippet2528 returns nil when noteable is not a snippet2529 #skip_notification?2530 when there is no review2531 is expected to be falsey2532 when the review exists2533 is expected to be truthy2534 #attachment2535 is cleaned up correctly when project is destroyed2536 #post_processed_cache_key2537 returns cache key and author cache key by default2538 when note has no author2539 returns cache key only2540 when note has redacted_note_html2541 returns cache key with redacted_note_html sha2542 #commands_changes2543 only returns allowed keys2544 #bump_updated_at2545 sets updated_at to the current timestamp2546 with legacy edited note2547 copies updated_at to last_edited_at before bumping the timestamp2548 #note2549 behaves like note that replaces task for checklist item in body text2550 when note is not a system note2551 is expected to eq "marked the task **task 1** as completed"2552 when note is a system note2553 when note noteable_type is not Issue2554 is expected to eq "marked the task **task 1** as completed"2555 when note noteable_type is Issue2556 is expected to eq "marked the checklist item **task 1** as completed"2557 context when note and cache are null (happens in bulk insert)2558 is expected to be in [nil, ""]2559 behaves like note that replaces task for checklist item in body text2560 when note is not a system note2561 is expected to eq "marked the task **task 1** as incomplete"2562 when note is a system note2563 when note noteable_type is not Issue2564 is expected to eq "marked the task **task 1** as incomplete"2565 when note noteable_type is Issue2566 is expected to eq "marked the checklist item **task 1** as incomplete"2567 context when note and cache are null (happens in bulk insert)2568 is expected to be in [nil, ""]2569 #note_html2570 behaves like note that replaces task for checklist item in body text2571 when note is not a system note2572 is expected to eq "<p data-sourcepos=\"1:1-1:48\" dir=\"auto\">marked the task <strong>task 1</strong> as completed</p>"2573 when note is a system note2574 when note noteable_type is not Issue2575 is expected to eq "<p data-sourcepos=\"1:1-1:48\" dir=\"auto\">marked the task <strong>task 1</strong> as completed</p>"2576 when note noteable_type is Issue2577 is expected to eq "<p data-sourcepos=\"1:1-1:48\" dir=\"auto\">marked the checklist item <strong>task 1</strong> as completed</p>"2578 context when note and cache are null (happens in bulk insert)2579 is expected to be in [nil, ""]2580 behaves like note that replaces task for checklist item in body text2581 when note is not a system note2582 is expected to eq "<p data-sourcepos=\"1:1-1:48\" dir=\"auto\">marked the task <strong>task 1</strong> as incomplete</p>"2583 when note is a system note2584 when note noteable_type is not Issue2585 is expected to eq "<p data-sourcepos=\"1:1-1:48\" dir=\"auto\">marked the task <strong>task 1</strong> as incomplete</p>"2586 when note noteable_type is Issue2587 is expected to eq "<p data-sourcepos=\"1:1-1:48\" dir=\"auto\">marked the checklist item <strong>task 1</strong> as incomplete</p>"2588 context when note and cache are null (happens in bulk insert)2589 is expected to be in [nil, ""]2590 #issuable_ability_name2591 when not confidential note2592 is expected to eq :read_note2593 when confidential note2594 is expected to eq :read_internal_note2595 #exportable_record?2596 when not a system note2597 is expected to be truthy2598 with system note2599 returns `false` when the user cannot read the note2600 when user can read the note2601 is expected to be truthy2602Gitlab::Git::Repository2603 Respond to2604 is expected to respond to #root_ref2605 is expected to respond to #tags2606 #root_ref2607 returns UTF-82608 gets the branch name from GitalyClient2609 behaves like wrapping gRPC errors2610 wraps gRPC not found error2611 wraps gRPC unknown error2612 #create_repository2613 behaves like wrapping gRPC errors2614 wraps gRPC not found error2615 wraps gRPC unknown error2616 #branch_names2617 has TestRepo::BRANCH_SHA.size elements2618 returns UTF-82619 is expected to include "master"2620 is expected not to include "branch-from-space"2621 behaves like wrapping gRPC errors2622 wraps gRPC not found error2623 wraps gRPC unknown error2624 #tag_names2625 is expected to be a kind of Array2626 has some elements2627 returns UTF-82628 is expected to include "v1.0.0"2629 is expected not to include "v5.0.0"2630 #last2631 is expected to eq "v1.1.1"2632 behaves like wrapping gRPC errors2633 wraps gRPC not found error2634 wraps gRPC unknown error2635 #tags2636 behaves like wrapping gRPC errors2637 wraps gRPC not found error2638 wraps gRPC unknown error2639 #archive_metadata2640 sets CommitId to the commit SHA2641 sets ArchivePrefix to the expected prefix2642 sets ArchivePath to the expected globally-unique path2643 path is set2644 appends the path to the prefix2645 append_sha varies archive path and filename2646 append_sha: true, ref: "master", expected_prefix: "gitlab-git-test-master-b83d6e391c22777fca1ed3012fce84f633d7fed0"2647 is expected to eq "gitlab-git-test-master-b83d6e391c22777fca1ed3012fce84f633d7fed0"2648 is expected to eq "/tmp/project-301/b83d6e391c22777fca1ed3012fce84f633d7fed0/@v2/gitlab-git-test-master-b83d6e391c22777fca1ed3012fce84f633d7fed0.tar.gz"2649 append_sha: true, ref: "b83d6e391c22777fca1ed3012fce84f633d7fed0", expected_prefix: "gitlab-git-test-b83d6e391c22777fca1ed3012fce84f633d7fed0-b83d6e391c22777fca1ed3012fce84f633d7fed0"2650 is expected to eq "gitlab-git-test-b83d6e391c22777fca1ed3012fce84f633d7fed0-b83d6e391c22777fca1ed3012fce84f633d7fed0"2651 is expected to eq "/tmp/project-301/b83d6e391c22777fca1ed3012fce84f633d7fed0/@v2/gitlab-git-test-b83d6e391c22777fca1ed3012fce84f633d7fed0-b83d6e391c22777fca1ed3012fce84f633d7fed0.tar.gz"2652 append_sha: false, ref: "master", expected_prefix: "gitlab-git-test-master"2653 is expected to eq "gitlab-git-test-master"2654 is expected to eq "/tmp/project-301/b83d6e391c22777fca1ed3012fce84f633d7fed0/@v2/gitlab-git-test-master.tar.gz"2655 append_sha: false, ref: "b83d6e391c22777fca1ed3012fce84f633d7fed0", expected_prefix: "gitlab-git-test-b83d6e391c22777fca1ed3012fce84f633d7fed0"2656 is expected to eq "gitlab-git-test-b83d6e391c22777fca1ed3012fce84f633d7fed0"2657 is expected to eq "/tmp/project-301/b83d6e391c22777fca1ed3012fce84f633d7fed0/@v2/gitlab-git-test-b83d6e391c22777fca1ed3012fce84f633d7fed0.tar.gz"2658 append_sha: nil, ref: "master", expected_prefix: "gitlab-git-test-master-b83d6e391c22777fca1ed3012fce84f633d7fed0"2659 is expected to eq "gitlab-git-test-master-b83d6e391c22777fca1ed3012fce84f633d7fed0"2660 is expected to eq "/tmp/project-301/b83d6e391c22777fca1ed3012fce84f633d7fed0/@v2/gitlab-git-test-master-b83d6e391c22777fca1ed3012fce84f633d7fed0.tar.gz"2661 append_sha: nil, ref: "b83d6e391c22777fca1ed3012fce84f633d7fed0", expected_prefix: "gitlab-git-test-b83d6e391c22777fca1ed3012fce84f633d7fed0"2662 is expected to eq "gitlab-git-test-b83d6e391c22777fca1ed3012fce84f633d7fed0"2663 is expected to eq "/tmp/project-301/b83d6e391c22777fca1ed3012fce84f633d7fed0/@v2/gitlab-git-test-b83d6e391c22777fca1ed3012fce84f633d7fed0.tar.gz"2664 format varies archive path and filename2665 format: nil, expected_extension: "tar.gz"2666 is expected to eq "gitlab-git-test-master-b83d6e391c22777fca1ed3012fce84f633d7fed0"2667 is expected to eq "/tmp/project-301/b83d6e391c22777fca1ed3012fce84f633d7fed0/@v2/gitlab-git-test-master-b83d6e391c22777fca1ed3012fce84f633d7fed0.tar.gz"2668 format: "madeup", expected_extension: "tar.gz"2669 is expected to eq "gitlab-git-test-master-b83d6e391c22777fca1ed3012fce84f633d7fed0"2670 is expected to eq "/tmp/project-301/b83d6e391c22777fca1ed3012fce84f633d7fed0/@v2/gitlab-git-test-master-b83d6e391c22777fca1ed3012fce84f633d7fed0.tar.gz"2671 format: "tbz2", expected_extension: "tar.bz2"2672 is expected to eq "gitlab-git-test-master-b83d6e391c22777fca1ed3012fce84f633d7fed0"2673 is expected to eq "/tmp/project-301/b83d6e391c22777fca1ed3012fce84f633d7fed0/@v2/gitlab-git-test-master-b83d6e391c22777fca1ed3012fce84f633d7fed0.tar.bz2"2674 format: "zip", expected_extension: "zip"2675 is expected to eq "gitlab-git-test-master-b83d6e391c22777fca1ed3012fce84f633d7fed0"2676 is expected to eq "/tmp/project-301/b83d6e391c22777fca1ed3012fce84f633d7fed0/@v2/gitlab-git-test-master-b83d6e391c22777fca1ed3012fce84f633d7fed0.zip"2677 #size2678 is expected to be > 02679 #to_s2680 is expected to eq "<Gitlab::Git::Repository: namespace395/project397>"2681 #object_directory_size2682 is expected to eq 20482683 #empty?2684 is expected not to be empty2685 #ref_names2686 is expected to be a kind of Array2687 #first2688 is expected to eq "'test'"2689 #last2690 is expected to eq "v1.1.1"2691 #submodule_url_for2692 is expected to eq "git://github.com/randx/six.git"2693 is expected to eq "git://github.com/randx/six.git"2694 is expected to eq nil2695 uncommitted submodule dir2696 is expected to eq nil2697 tags2698 is expected to eq "git://github.com/randx/six.git"2699 no .gitmodules at commit2700 is expected to eq nil2701 no gitlink entry2702 is expected to eq nil2703 #submodule_urls_for2704 returns url mappings for submodules2705 #commit_count2706 is expected to eq 372707 is expected to eq 92708 is expected to eq 02709 behaves like wrapping gRPC errors2710 wraps gRPC not found error2711 wraps gRPC unknown error2712 #diverging_commit_count2713 counts 0 for the same branch2714 max count does not truncate results2715 left: 1, right: 1, expected: [1, 1]2716 returns the correct count bounding at max_count2717 left: 4, right: 4, expected: [4, 4]2718 returns the correct count bounding at max_count2719 left: 2, right: 2, expected: [2, 2]2720 returns the correct count bounding at max_count2721 left: 2, right: 4, expected: [2, 4]2722 returns the correct count bounding at max_count2723 left: 4, right: 2, expected: [4, 2]2724 returns the correct count bounding at max_count2725 left: 10, right: 10, expected: [10, 10]2726 returns the correct count bounding at max_count2727 max count truncates results2728 left: 1, right: 1, max_count: 12729 returns the correct count bounding at max_count2730 left: 4, right: 4, max_count: 42731 returns the correct count bounding at max_count2732 left: 2, right: 2, max_count: 32733 returns the correct count bounding at max_count2734 left: 2, right: 4, max_count: 32735 returns the correct count bounding at max_count2736 left: 4, right: 2, max_count: 52737 returns the correct count bounding at max_count2738 left: 10, right: 10, max_count: 102739 returns the correct count bounding at max_count2740 behaves like wrapping gRPC errors2741 wraps gRPC not found error2742 wraps gRPC unknown error2743 #has_local_branches?2744 check for local branches2745 is expected to eq true2746 #delete_branch2747 deletes a branch2748 deletes a fully qualified branch2749 #delete_refs2750 deletes the ref2751 deletes all refs2752 does not fail when deleting an empty list of refs2753 raises an error if it failed2754 #branch_names_contains_sha2755 displays that branch2756 when limit is provided2757 displays limited number of branches2758 #refs_hash2759 has as many entries as branches and tags2760 has valid commit ids as keys2761 does not error when dereferenced_target is nil2762 #fetch_remote2763 delegates to the gitaly RepositoryService2764 behaves like wrapping gRPC errors2765 wraps gRPC not found error2766 wraps gRPC unknown error2767 #search_files_by_content2768 has 2 items2769 has the correct matching line2770 #search_files_by_regexp2771 when sending a valid regexp2772 returns matched files2773 when sending an ivalid regexp2774 raises error2775 when the ref doesn't exist2776 returns an empty array2777 #search_files_by_name2778 when sending a valid name2779 returns matched files2780 when sending a name with space2781 returns matched files2782 when sending a name with special ASCII characters2783 returns matched files2784 when sending a non-existing name2785 raises error2786 #find_remote_root_ref2787 gets the remote root ref from GitalyClient2788 returns UTF-82789 returns nil when remote name is nil2790 returns nil when remote name is empty2791 behaves like wrapping gRPC errors2792 wraps gRPC not found error2793 wraps gRPC unknown error2794 #log2795 when Gitaly find_commits feature is enabled2796 behaves like repository log2797 where 'follow' == true2798 and 'path' is a directory2799 does not follow renames2800 and 'path' is a file that matches the new filename2801 without offset2802 follows renames2803 with offset=12804 follows renames and skip the latest commit2805 with offset=1 and limit=12806 follows renames, skip the latest commit and return only one commit2807 with offset=1 and limit=22808 follows renames, skip the latest commit and return only two commits2809 with offset=22810 follows renames and skip the latest commit2811 with offset=2 and limit=12812 follows renames, skip the two latest commit and return only one commit2813 with offset=2 and limit=22814 follows renames, skip the two latest commit and return only one commit2815 and 'path' is a file that matches the old filename2816 does not follow renames2817 unknown ref2818 returns an empty array2819 where 'follow' == false2820 and 'path' is a directory2821 does not follow renames2822 and 'path' is a file that matches the new filename2823 does not follow renames2824 and 'path' is a file that matches the old filename2825 does not follow renames2826 where provides 'after' timestamp2827 returns commits on or after that timestamp2828 where provides 'before' timestamp2829 returns commits on or before that timestamp2830 when multiple paths are provided2831 only returns commits matching at least one path2832 limit validation2833 limit: 02834 is expected to raise ArgumentError2835 limit: nil2836 is expected to raise ArgumentError2837 limit: ""2838 is expected to raise ArgumentError2839 limit: "foo"2840 is expected to raise ArgumentError2841 with all2842 returns a list of commits2843 #blobs2844 single revision2845 behaves like a blob enumeration2846 enumerates blobs2847 multiple revisions2848 behaves like a blob enumeration2849 enumerates blobs2850 pseudo revisions2851 behaves like a blob enumeration2852 enumerates blobs2853 blank revisions2854 behaves like a blob enumeration2855 enumerates blobs2856 #new_blobs2857 with a single revision2858 behaves like #new_blobs with revisions2859 enumerates new blobs2860 memoizes results2861 with a single-entry array2862 behaves like #new_blobs with revisions2863 enumerates new blobs2864 memoizes results2865 with multiple revisions2866 behaves like #new_blobs with revisions2867 enumerates new blobs2868 memoizes results2869 with partially blank revisions2870 behaves like #new_blobs with revisions2871 enumerates new blobs2872 memoizes results2873 with repeated revisions2874 behaves like #new_blobs with revisions2875 enumerates new blobs2876 memoizes results2877 with preexisting commits2878 behaves like #new_blobs with revisions2879 enumerates new blobs2880 memoizes results2881 with a single nil newrev2882 behaves like #new_blobs without revisions2883 returns an empty array2884 with a single zero newrev2885 behaves like #new_blobs without revisions2886 returns an empty array2887 with an empty array2888 behaves like #new_blobs without revisions2889 returns an empty array2890 with array containing only empty refs2891 behaves like #new_blobs without revisions2892 returns an empty array2893 #new_commits2894 enumerates commits2895 #count_commits_between2896 is expected to eq 292897 #raw_changes_between2898 initial commit2899 returns the changes2900 with an invalid rev2901 returns an error2902 with valid revs2903 returns the changes2904 #merge_base2905 from: "master", to: "feature", result: "ae73cb07c9eeaf35924a10f713b364d32b2dd34f"2906 is expected to eq "ae73cb07c9eeaf35924a10f713b364d32b2dd34f"2907 from: "feature", to: "master", result: "ae73cb07c9eeaf35924a10f713b364d32b2dd34f"2908 is expected to eq "ae73cb07c9eeaf35924a10f713b364d32b2dd34f"2909 from: "master", to: "foobar", result: nil2910 is expected to eq nil2911 from: "foobar", to: "master", result: nil2912 is expected to eq nil2913 #count_commits2914 extended commit counting2915 with after timestamp2916 returns the number of commits after timestamp2917 with before timestamp2918 returns the number of commits before timestamp2919 with max_count2920 returns the number of commits with path2921 with path2922 returns the number of commits with path2923 with option :from and option :to2924 returns the number of commits ahead for master..feature2925 returns the number of commits ahead for feature..master2926 with option :left_right2927 returns the number of commits for master..feature2928 with max_count2929 returns the number of commits2930 with max_count2931 returns the number of commits up to the passed limit2932 with all2933 returns the number of commits in the whole repository2934 without all or ref being specified2935 raises an ArgumentError2936 #find_branch2937 returns a Branch for master2938 handles non-existent branch2939 when branch is ambiguous2940 returns nil for ambiguous branch2941 #branches2942 with local and remote branches2943 returns the local and remote branches2944 behaves like wrapping gRPC errors2945 wraps gRPC not found error2946 wraps gRPC unknown error2947 #branch_count2948 returns the number of branches2949 with local and remote branches2950 returns the count of local branches2951 #merged_branch_names2952 when branch names are passed2953 only returns the names we are asking2954 does not return unmerged branch names2955 when no root ref is available2956 returns empty list2957 when no branch names are specified2958 returns all merged branch names except for identical one2959 #diff_stats2960 returns a DiffStatsCollection2961 yields Gitaly::DiffStats objects2962 returns no Gitaly::DiffStats when SHAs are invalid2963 returns no Gitaly::DiffStats when there is a nil SHA2964 returns no Gitaly::DiffStats when there is a BLANK_SHA2965 #find_changed_paths2966 returns a list of paths2967 returns no paths when SHAs are invalid2968 returns a list of paths even when containing a blank ref2969 returns no paths when the commits are nil2970 #ls_files2971 read every file paths of master branch2972 reads full file paths of master branch2973 does not read submodule directory and empty directory of master branch2974 does not include 'nil'2975 returns empty array when not existed branch2976 returns valid utf-8 data2977 #copy_gitattributes2978 raises an error with invalid ref2979 when forcing encoding issues2980 doesn't raise with a valid unicode ref2981 #gitattribute2982 with gitattributes2983 returns matching language attribute2984 returns matching language attribute with additional options2985 returns nil if nothing matches2986 without gitattributes2987 returns nil2988 #ref_exists?2989 returns true for an existing tag2990 returns false for a non-existing tag2991 raises an ArgumentError for an empty string2992 raises an ArgumentError for an invalid ref2993 #tag_exists?2994 returns true for an existing tag2995 returns false for a non-existing tag2996 #branch_exists?2997 returns true for an existing branch2998 returns false for a non-existing branch2999 returns false when using an invalid branch name3000 #local_branches3001 returns the local branches3002 returns a Branch with UTF-8 fields3003 gets the branches from GitalyClient3004 behaves like wrapping gRPC errors3005 wraps gRPC not found error3006 wraps gRPC unknown error3007 #find_tag3008 returns a tag3009 when asking for a non-existent tag3010 behaves like a nonexistent tag3011 returns nil3012 when Gitaly returns Internal error3013 behaves like a nonexistent tag3014 returns nil3015 when Gitaly returns tag_not_found error3016 behaves like a nonexistent tag3017 returns nil3018 #languages3019 returns exactly the expected results3020 uses the repository's HEAD when no ref is passed3021 #license3022 when no license file can be found3023 is expected to be nil3024 when an mit license is found3025 is expected to have attributes {:key => "mit"}3026 when license is not recognized3027 is expected to have attributes {:key => "other", :nickname => "LICENSE"}3028 #fetch_source_branch!3029 when the branch exists3030 when the commit does not exist locally3031 writes the ref3032 when the commit exists locally3033 writes the ref3034 when the branch does not exist3035 does not write the ref3036 #rm_branch3037 removes the branch from the repo3038 #write_ref3039 writes the HEAD3040 writes other refs3041 validations3042 ref_path: "foo bar", ref: "123"3043 raises ArgumentError3044 ref_path: "foobar", ref: "12\u00003"3045 raises ArgumentError3046 #list_refs3047 returns a list of branches with their head commit3048 filters by pattern3049 with pointing_at_oids and peel_tags options3050 filters by target OIDs3051 returns peeled_target for annotated tags3052 #refs_by_oid3053 returns a list of refs from a OID3054 returns a single ref from a OID3055 returns empty for unknown ID3056 returns nil for an empty repo3057 #set_full_path3058 writes full_path to gitaly3059 it is given an empty path3060 does not write it to disk3061 repository does not exist3062 raises NoRepository and does not call SetFullPath3063 #full_path3064 returns the full path3065 #merge_to_ref3066 generates a commit in the target_ref3067 does not change the right branch HEAD3068 #merge3069 can perform a merge3070 returns nil if there was a concurrent branch update3071 #ff_merge3072 calls Gitaly's OperationService3073 behaves like #ff_merge3074 performs a ff_merge3075 with a non-existing target branch3076 throws an ArgumentError3077 with a non-existing source commit3078 throws an ArgumentError3079 when the source sha is not a descendant of the branch head3080 doesn't perform the ff_merge3081 #delete_all_refs_except3082 deletes all refs except those with the specified prefixes3083 #bundle_to_disk3084 saves a bundle to disk3085 #create_from_bundle3086 creates a repo from a bundle file3087 raises an error if the bundle is an attempted malicious payload3088 #compare_source_branch3089 compares two branches cross repo3090 source ref does not exist in source repo3091 returns an empty comparison3092 #checksum3093 calculates the checksum for non-empty repo3094 returns a blank sha for an empty repo3095 raises NoRepository for a non-existent repo3096 #replicas3097 gets the replica checksum through praefect3098 #squash3099 sparse checkout (PENDING: No reason given)3100 with an ASCII-8BIT diff (PENDING: No reason given)3101 with trailing whitespace in an invalid patch (PENDING: No reason given)3102 #disconnect_alternates3103 does not raise an error when disconnecting a non-linked repository3104 can still access objects in the object pool3105 #rename3106 moves the repository3107 #remove3108 removes the repository3109 when the repository does not exist3110 is idempotent3111 #import_repository3112 raises an error if a relative path is provided3113 raises an error if an absolute path is provided3114 delegates to Gitaly3115 behaves like wrapping gRPC errors3116 wraps gRPC not found error3117 wraps gRPC unknown error3118 #replicate3119 destination does not exist3120 mirrors the source repository3121 destination exists3122 mirrors the source repository3123 with keep-around refs3124 includes the temporary and keep-around refs3125 #check_objects_exist3126 returns hash specifying which object exists in repo3127Projects::ImportService3128 #async?3129 returns true for an asynchronous importer3130 returns false for a regular importer3131 returns false when the importer does not define #async?3132 returns false when the importer does not exist3133 #execute3134 with unknown url3135 succeeds if repository is created successfully3136 fails if repository creation fails3137 when repository creation succeeds3138 does not download lfs files3139 with known url3140 with a Github repository3141 tracks the start of import3142 succeeds if repository import was scheduled3143 fails if repository import was not scheduled3144 when repository import scheduled3145 does not download lfs objects3146 with a non Github repository3147 when importer supports refmap3148 succeeds if repository fetch as mirror is successful3149 fails if repository fetch as mirror fails3150 when importer does not support refmap3151 succeeds if repository import is successful3152 fails if repository import fails3153 when lfs import fails3154 logs the error3155 when repository import scheduled3156 downloads lfs objects if lfs_enabled is enabled for project3157 does not download lfs objects if lfs_enabled is not enabled for project3158 with valid importer3159 succeeds if importer succeeds3160 fails if importer fails3161 when importer3162 has a custom repository importer it does not download lfs objects3163 does not have a custom repository importer downloads lfs objects3164 when lfs import fails3165 logs the error3166 with blocked import_URL3167 fails with localhost3168 fails with port 253169 fails with file scheme3170 when DNS rebind protection is disabled3171 imports repository with url without additional resolved address3172 when DNS rebind protection is enabled3173 when https url is provided3174 imports repository with url and additional resolved address3175 when host resolves to an IPv6 address3176 imports repository with url and additional resolved bare IPv6 address3177 when http url is provided3178 imports repository with url and additional resolved address3179 when git address is provided3180 imports repository with url and without resolved address3181Issues::MoveService3182 #execute3183 when issue creation fails3184 raises a move error3185 issue movable3186 creates resource state event3187 generic issue3188 creates a new issue in a new project3189 copies issue title3190 copies issue description3191 adds system note to old issue at the end3192 adds system note to new issue at the end3193 closes old issue3194 persists new issue3195 persists all changes3196 preserves author3197 creates a new internal id for issue3198 marks issue as moved3199 marks issue as closed3200 preserves create time3201 issue with award emoji3202 copies the award emoji3203 issue with milestone3204 does not create extra milestone events3205 issue with due date3206 does not create extra system notes3207 issue with assignee3208 preserves assignee with access to the new issue3209 ignores assignee without access to the new issue3210 issue with contacts3211 preserves contacts3212 when moving to another root group3213 does not preserve contacts3214 moving to same project3215 raises error3216 project issue hooks3217 executes project issue hooks for both projects3218 issue with notes3219 copies existing notes in order3220 issue with a design3221 calls CopyDesignCollection::QueueService3222 logs if QueueService returns an error3223 copies the design and its notes3224 issue relative position3225 behaves like copy or reset relative position3226 when moved to a project within same group hierarchy3227 does not reset the relative_position3228 when moved to a project in a different group hierarchy3229 does reset the relative_position3230 issue with escalation status3231 keeps the escalation status3232 move permissions3233 user is reporter in both projects3234 is expected not to raise Exception3235 user is reporter only in new project3236 is expected to raise StandardError with message matching /permissions/3237 user is reporter only in old project3238 is expected to raise StandardError with message matching /permissions/3239 user is reporter in one project and guest in another3240 is expected to raise StandardError with message matching /permissions/3241 issue has already been moved3242 is expected to raise StandardError with message matching /permissions/3243 issue is not persisted3244 is expected to raise StandardError with message matching /permissions/3245 #rewrite_related_issues3246 multiple related issues3247 when admin mode is enabled3248 moves all related issues and retains permissions3249 when admin mode is disabled3250 moves all related issues and retains permissions3251 updating sent notifications3252 when issue is from service desk3253 updates moved issue sent notifications3254 does not update other issues sent notifications3255 when issue is not from service desk3256 does not update sent notifications3257 copying email participants3258 copies moved issue email participants3259EnvironmentPolicy3260 #rules3261 when project is public3262 with stop action3263 access_level: nil, allowed?: false3264 is expected to equal false3265 access_level: :guest, allowed?: false3266 is expected to equal false3267 access_level: :reporter, allowed?: false3268 is expected to equal false3269 access_level: :developer, allowed?: true3270 is expected to equal true3271 access_level: :maintainer, allowed?: true3272 is expected to equal true3273 when an admin user3274 when admin mode is enabled3275 is expected to be allowed :stop_environment3276 when admin mode is disabled3277 is expected to be disallowed :stop_environment3278 with protected branch3279 when an admin user3280 when admin mode is enabled3281 is expected to be allowed :stop_environment3282 when admin mode is disabled3283 is expected to be disallowed :stop_environment3284 without stop action3285 access_level: nil, allowed?: false3286 is expected to equal false3287 access_level: :guest, allowed?: false3288 is expected to equal false3289 access_level: :reporter, allowed?: false3290 is expected to equal false3291 access_level: :developer, allowed?: true3292 is expected to equal true3293 access_level: :maintainer, allowed?: true3294 is expected to equal true3295 when an admin user3296 when admin mode is enabled3297 is expected to be allowed :stop_environment3298 when admin mode is disabled3299 is expected to be disallowed :stop_environment3300 #destroy_environment3301 access_level: nil, allowed?: false3302 is expected to be disallowed :destroy_environment3303 when environment is stopped3304 is expected to equal false3305 access_level: :guest, allowed?: false3306 is expected to be disallowed :destroy_environment3307 when environment is stopped3308 is expected to equal false3309 access_level: :reporter, allowed?: false3310 is expected to be disallowed :destroy_environment3311 when environment is stopped3312 is expected to equal false3313 access_level: :developer, allowed?: true3314 is expected to be disallowed :destroy_environment3315 when environment is stopped3316 is expected to equal true3317 access_level: :maintainer, allowed?: true3318 is expected to be disallowed :destroy_environment3319 when environment is stopped3320 is expected to equal true3321 when an admin user3322 is expected to be disallowed :destroy_environment3323 when environment is stopped3324 when admin mode is enabled3325 is expected to be allowed :destroy_environment3326 when admin mode is disabled3327 is expected to be disallowed :destroy_environment3328 when project is private3329 with stop action3330 access_level: nil, allowed?: false3331 is expected to equal false3332 access_level: :guest, allowed?: false3333 is expected to equal false3334 access_level: :reporter, allowed?: false3335 is expected to equal false3336 access_level: :developer, allowed?: true3337 is expected to equal true3338 access_level: :maintainer, allowed?: true3339 is expected to equal true3340 when an admin user3341 when admin mode is enabled3342 is expected to be allowed :stop_environment3343 when admin mode is disabled3344 is expected to be disallowed :stop_environment3345 with protected branch3346 when an admin user3347 when admin mode is enabled3348 is expected to be allowed :stop_environment3349 when admin mode is disabled3350 is expected to be disallowed :stop_environment3351 without stop action3352 access_level: nil, allowed?: false3353 is expected to equal false3354 access_level: :guest, allowed?: false3355 is expected to equal false3356 access_level: :reporter, allowed?: false3357 is expected to equal false3358 access_level: :developer, allowed?: true3359 is expected to equal true3360 access_level: :maintainer, allowed?: true3361 is expected to equal true3362 when an admin user3363 when admin mode is enabled3364 is expected to be allowed :stop_environment3365 when admin mode is disabled3366 is expected to be disallowed :stop_environment3367 #destroy_environment3368 access_level: nil, allowed?: false3369 is expected to be disallowed :destroy_environment3370 when environment is stopped3371 is expected to equal false3372 access_level: :guest, allowed?: false3373 is expected to be disallowed :destroy_environment3374 when environment is stopped3375 is expected to equal false3376 access_level: :reporter, allowed?: false3377 is expected to be disallowed :destroy_environment3378 when environment is stopped3379 is expected to equal false3380 access_level: :developer, allowed?: true3381 is expected to be disallowed :destroy_environment3382 when environment is stopped3383 is expected to equal true3384 access_level: :maintainer, allowed?: true3385 is expected to be disallowed :destroy_environment3386 when environment is stopped3387 is expected to equal true3388 when an admin user3389 is expected to be disallowed :destroy_environment3390 when environment is stopped3391 when admin mode is enabled3392 is expected to be allowed :destroy_environment3393 when admin mode is disabled3394 is expected to be disallowed :destroy_environment3395CommitStatus3396 is expected to belong to pipeline class_name => Ci::Pipeline required: false inverse_of => statuses3397 is expected to belong to user required: false3398 is expected to belong to project required: false3399 is expected to belong to auto_canceled_by required: false3400 is expected to validate that :name cannot be empty/falsy3401 is expected to validate that :status is either ‹"pending"›, ‹"running"›, ‹"failed"›, ‹"success"›, or ‹"canceled"›3402 is expected to delegate #sha to the #pipeline object3403 is expected to delegate #short_sha to the #pipeline object3404 is expected to respond to #success?3405 is expected to respond to #failed?3406 is expected to respond to #running?3407 is expected to respond to #pending?3408 is expected not to be retried3409 is expected to eq "id"3410 behaves like having unique enum values3411 has unique values in "scheduling_type"3412 has unique values in "failure_reason"3413 #author3414 is expected to eq #<User id: @>3415 status state machine3416 invalidates the cache after a transition3417 transitioning to running3418 records the started at time3419 transitioning to created from skipped or manual3420 does not update user without parameter3421 updates user with user parameter3422 .updated_at_before3423 finds the relevant records3424 .created_at_before3425 finds the relevant records3426 .scheduled_at_before3427 is expected to contain exactly #<CommitStatus status: "success", finished_at: "2016-01-26 07:23:42.000000000 +0000", created_at: "20..._resource_at: nil, processed: false, scheduling_type: nil, id: 47, stage_id: nil, partition_id: 100>3428 #processed3429 processed state is always persisted3430 status is latest3431 is expected to be falsey3432 status is retried3433 is expected to be truthy3434 .cancelable3435 when running commit status3436 is expected to contain exactly #<CommitStatus status: "running", finished_at: "2016-01-26 07:23:42.000000000 +0000", created_at: "20..._resource_at: nil, processed: false, scheduling_type: nil, id: 52, stage_id: nil, partition_id: 100>3437 when pending commit status3438 is expected to contain exactly #<CommitStatus status: "pending", finished_at: "2016-01-26 07:23:42.000000000 +0000", created_at: "20..._resource_at: nil, processed: false, scheduling_type: nil, id: 53, stage_id: nil, partition_id: 100>3439 when waiting_for_resource commit status3440 is expected to contain exactly #<CommitStatus status: "waiting_for_resource", finished_at: "2016-01-26 07:23:42.000000000 +0000", cr..._resource_at: nil, processed: false, scheduling_type: nil, id: 54, stage_id: nil, partition_id: 100>3441 when preparing commit status3442 is expected to contain exactly #<CommitStatus status: "preparing", finished_at: "2016-01-26 07:23:42.000000000 +0000", created_at: "..._resource_at: nil, processed: false, scheduling_type: nil, id: 55, stage_id: nil, partition_id: 100>3443 when created commit status3444 is expected to contain exactly #<CommitStatus status: "created", finished_at: "2016-01-26 07:23:42.000000000 +0000", created_at: "20..._resource_at: nil, processed: false, scheduling_type: nil, id: 56, stage_id: nil, partition_id: 100>3445 when scheduled commit status3446 is expected to contain exactly #<CommitStatus status: "scheduled", finished_at: "2016-01-26 07:23:42.000000000 +0000", created_at: "..._resource_at: nil, processed: false, scheduling_type: nil, id: 57, stage_id: nil, partition_id: 100>3447 when failed commit status3448 is expected to be empty3449 when success commit status3450 is expected to be empty3451 when skipped commit status3452 is expected to be empty3453 when canceled commit status3454 is expected to be empty3455 when manual commit status3456 is expected to be empty3457 #started?3458 without started_at3459 is expected to equal false3460 with started_at3461 if commit status is running3462 is expected to eq true3463 if commit status is success3464 is expected to eq true3465 if commit status is failed3466 is expected to eq true3467 if commit status is created3468 is expected to equal false3469 if commit status is waiting_for_resource3470 is expected to equal false3471 if commit status is preparing3472 is expected to equal false3473 if commit status is pending3474 is expected to equal false3475 if commit status is canceled3476 is expected to equal false3477 if commit status is skipped3478 is expected to equal false3479 if commit status is manual3480 is expected to equal false3481 if commit status is scheduled3482 is expected to equal false3483 #active?3484 if commit_status.status is pending3485 is expected to be truthy3486 if commit_status.status is running3487 is expected to be truthy3488 if commit_status.status is success3489 is expected to be falsey3490 if commit_status.status is failed3491 is expected to be falsey3492 if commit_status.status is canceled3493 is expected to be falsey3494 #complete?3495 if commit_status.status is success3496 is expected to be truthy3497 if commit_status.status is failed3498 is expected to be truthy3499 if commit_status.status is canceled3500 is expected to be truthy3501 if commit_status.status is pending3502 is expected to be falsey3503 if commit_status.status is running3504 is expected to be falsey3505 #cancel3506 when status is scheduled3507 updates the status3508 #auto_canceled?3509 when it is canceled3510 when there is auto_canceled_by3511 is auto canceled3512 when there is no auto_canceled_by3513 is not auto canceled3514 #duration3515 is expected to eq 120.03516 if the building process has not started yet3517 is expected to be nil3518 if the building process has started3519 is expected to be a kind of Float3520 is expected to be > 0.03521 #queued_duration3522 when created, then enqueued, then started3523 is expected to eq 5.03524 when created but not yet enqueued3525 is expected to be nil3526 when enqueued, but not started3527 is expected to eq 1 minute3528 .latest3529 returns unique statuses3530 .retried3531 returns unique statuses3532 .retried_ordered3533 returns retried statuses in order3534 .running_or_pending3535 returns statuses that are running or pending3536 .after_stage3537 returns statuses from second and third stage3538 .failed_but_allowed3539 returns statuses without what we want to ignore3540 .for_ref3541 returns statuses with the specified ref3542 .by_name3543 returns statuses with the specified name3544 .for_project_paths3545 with a single path3546 returns statuses for other_project3547 with array of paths3548 returns statuses for project3549 .status3550 when there are multiple statuses present3551 returns a correct compound status3552 when there are only allowed to fail commit statuses present3553 returns status that indicates success3554 when using a scope to select latest statuses3555 returns status according to the scope3556 .match_id_and_lock_version3557 returns statuses that match the given id and lock versions3558 #before_sha3559 when no before_sha is set for pipeline3560 returns blank sha3561 for before_sha set for pipeline3562 returns the set value3563 #commit3564 returns commit pipeline has been created for3565 #group_name3566 name: "rspec1", group_name: "rspec1"3567 rspec1 puts in rspec13568 name: "rspec1 0 1", group_name: "rspec1"3569 rspec1 0 1 puts in rspec13570 name: "rspec1 0/2", group_name: "rspec1"3571 rspec1 0/2 puts in rspec13572 name: "rspec:windows", group_name: "rspec:windows"3573 rspec:windows puts in rspec:windows3574 name: "rspec:windows 0", group_name: "rspec:windows 0"3575 rspec:windows 0 puts in rspec:windows 03576 name: "rspec:windows 0 2/2", group_name: "rspec:windows 0"3577 rspec:windows 0 2/2 puts in rspec:windows 03578 name: "rspec:windows 0 test", group_name: "rspec:windows 0 test"3579 rspec:windows 0 test puts in rspec:windows 0 test3580 name: "rspec:windows 0 test 2/2", group_name: "rspec:windows 0 test"3581 rspec:windows 0 test 2/2 puts in rspec:windows 0 test3582 name: "rspec:windows 0 1 2/2", group_name: "rspec:windows"3583 rspec:windows 0 1 2/2 puts in rspec:windows3584 name: "rspec:windows 0 1 [aws] 2/2", group_name: "rspec:windows"3585 rspec:windows 0 1 [aws] 2/2 puts in rspec:windows3586 name: "rspec:windows 0 1 name [aws] 2/2", group_name: "rspec:windows 0 1 name"3587 rspec:windows 0 1 name [aws] 2/2 puts in rspec:windows 0 1 name3588 name: "rspec:windows 0 1 name", group_name: "rspec:windows 0 1 name"3589 rspec:windows 0 1 name puts in rspec:windows 0 1 name3590 name: "rspec:windows 0 1 name 1/2", group_name: "rspec:windows 0 1 name"3591 rspec:windows 0 1 name 1/2 puts in rspec:windows 0 1 name3592 name: "rspec:windows 0/1", group_name: "rspec:windows"3593 rspec:windows 0/1 puts in rspec:windows3594 name: "rspec:windows 0/1 name", group_name: "rspec:windows 0/1 name"3595 rspec:windows 0/1 name puts in rspec:windows 0/1 name3596 name: "rspec:windows 0/1 name 1/2", group_name: "rspec:windows 0/1 name"3597 rspec:windows 0/1 name 1/2 puts in rspec:windows 0/1 name3598 name: "rspec:windows 0:1", group_name: "rspec:windows"3599 rspec:windows 0:1 puts in rspec:windows3600 name: "rspec:windows 0:1 name", group_name: "rspec:windows 0:1 name"3601 rspec:windows 0:1 name puts in rspec:windows 0:1 name3602 name: "rspec:windows 10000 20000", group_name: "rspec:windows"3603 rspec:windows 10000 20000 puts in rspec:windows3604 name: "rspec:windows 0 : / 1", group_name: "rspec:windows"3605 rspec:windows 0 : / 1 puts in rspec:windows3606 name: "rspec:windows 0 : / 1 name", group_name: "rspec:windows 0 : / 1 name"3607 rspec:windows 0 : / 1 name puts in rspec:windows 0 : / 1 name3608 name: "rspec [inception: [something, other thing], value]", group_name: "rspec"3609 rspec [inception: [something, other thing], value] puts in rspec3610 name: "0 1 name ruby", group_name: "0 1 name ruby"3611 0 1 name ruby puts in 0 1 name ruby3612 name: "0 :/ 1 name ruby", group_name: "0 :/ 1 name ruby"3613 0 :/ 1 name ruby puts in 0 :/ 1 name ruby3614 name: "rspec: [aws]", group_name: "rspec"3615 rspec: [aws] puts in rspec3616 name: "rspec: [aws] 0/1", group_name: "rspec"3617 rspec: [aws] 0/1 puts in rspec3618 name: "rspec: [aws, max memory]", group_name: "rspec"3619 rspec: [aws, max memory] puts in rspec3620 name: "rspec:linux: [aws, max memory, data]", group_name: "rspec:linux"3621 rspec:linux: [aws, max memory, data] puts in rspec:linux3622 name: "rspec: [inception: [something, other thing], value]", group_name: "rspec"3623 rspec: [inception: [something, other thing], value] puts in rspec3624 name: "rspec:windows 0/1: [name, other]", group_name: "rspec:windows"3625 rspec:windows 0/1: [name, other] puts in rspec:windows3626 name: "rspec:windows: [name, other] 0/1", group_name: "rspec:windows"3627 rspec:windows: [name, other] 0/1 puts in rspec:windows3628 name: "rspec:windows: [name, 0/1] 0/1", group_name: "rspec:windows"3629 rspec:windows: [name, 0/1] 0/1 puts in rspec:windows3630 name: "rspec:windows: [0/1, name]", group_name: "rspec:windows"3631 rspec:windows: [0/1, name] puts in rspec:windows3632 name: "rspec:windows: [, ]", group_name: "rspec:windows"3633 rspec:windows: [, ] puts in rspec:windows3634 name: "rspec:windows: [name]", group_name: "rspec:windows"3635 rspec:windows: [name] puts in rspec:windows3636 name: "rspec:windows: [name,other]", group_name: "rspec:windows"3637 rspec:windows: [name,other] puts in rspec:windows3638 #detailed_status3639 returns a detailed status3640 #sortable_name3641 'karma' sorts as '["karma"]'3642 'karma 0 20' sorts as '["karma ", 0, " ", 20]'3643 'karma 10 20' sorts as '["karma ", 10, " ", 20]'3644 'karma 50:100' sorts as '["karma ", 50, ":", 100]'3645 'karma 1.10' sorts as '["karma ", 1, ".", 10]'3646 'karma 1.5.1' sorts as '["karma ", 1, ".", 5, ".", 1]'3647 'karma 1 a' sorts as '["karma ", 1, " a"]'3648 #locking_enabled?3649 when changing status3650 lock3651 raise exception when trying to update3652 when changing description3653 do not lock3654 save correctly3655 #drop3656 when failure_reason is nil3657 is expected to be unknown failure3658 behaves like incrementing failure reason counter3659 increments the counter with the failure_reason3660 when failure_reason is script_failure3661 is expected to be script failure3662 behaves like incrementing failure reason counter3663 increments the counter with the failure_reason3664 when failure_reason is unmet_prerequisites3665 is expected to be unmet prerequisites3666 behaves like incrementing failure reason counter3667 increments the counter with the failure_reason3668 when status is manual3669 is able to be dropped3670 when a failure reason is provided3671 when a failure reason is a symbol3672 correctly sets a failure reason3673 when a failure reason is an object3674 correctly sets a failure reason3675 ensure stage assignment3676 when the feature flag ci_remove_ensure_stage_service is disabled3677 when commit status has a stage_id assigned3678 does not create a new stage3679 when commit status does not have a stage_id assigned3680 creates a new stage3681 when commit status does not have stage but it exists3682 uses existing stage3683 when commit status is being imported3684 does not create a new stage3685 #all_met_to_become_pending?3686 is expected to eq true3687 #enqueue3688 when initial state is :created3689 behaves like commit status enqueued3690 sets queued_at value when enqueued3691 when initial state is :skipped3692 behaves like commit status enqueued3693 sets queued_at value when enqueued3694 when initial state is :manual3695 behaves like commit status enqueued3696 sets queued_at value when enqueued3697 when initial state is :scheduled3698 behaves like commit status enqueued3699 sets queued_at value when enqueued3700 #present3701 is expected to be a kind of CommitStatusPresenter3702 #recoverable?3703 when commit status is failed3704 failure_reason: :script_failure, recoverable: false3705 when failure reason is script_failure3706 is expected to eq false3707 failure_reason: :missing_dependency_failure, recoverable: false3708 when failure reason is missing_dependency_failure3709 is expected to eq false3710 failure_reason: :archived_failure, recoverable: false3711 when failure reason is archived_failure3712 is expected to eq false3713 failure_reason: :scheduler_failure, recoverable: false3714 when failure reason is scheduler_failure3715 is expected to eq false3716 failure_reason: :data_integrity_failure, recoverable: false3717 when failure reason is data_integrity_failure3718 is expected to eq false3719 failure_reason: :unknown_failure, recoverable: true3720 when failure reason is unknown_failure3721 is expected to eq true3722 failure_reason: :api_failure, recoverable: true3723 when failure reason is api_failure3724 is expected to eq true3725 failure_reason: :stuck_or_timeout_failure, recoverable: true3726 when failure reason is stuck_or_timeout_failure3727 is expected to eq true3728 failure_reason: :runner_system_failure, recoverable: true3729 when failure reason is runner_system_failure3730 is expected to eq true3731 when commit status is not failed3732 is expected to eq false3733 #update_older_statuses_retried!3734 updates 'retried' and 'status' columns of the latest status with the same name in the same pipeline3735 #expire_etag_cache!3736 expires the etag cache3737 loose foreign key on ci_builds.project_id3738 behaves like cleanup by a loose foreign key3739 cleans up (delete or nullify) the model3740 loose foreign key on ci_builds.runner_id3741 behaves like cleanup by a loose foreign key3742 cleans up (delete or nullify) the model3743 .stage_name3744 returns the stage name3745 when ci stage is not present3746 is expected to be nil3747 partitioning3748 with pipeline3749 copies the partition_id from pipeline3750 when it is already set3751 does not change the partition_id value3752 without pipeline3753 is expected to validate that :partition_id cannot be empty/falsy3754 does not change the partition_id value3755 #failure_reason3756 behaves like having enum with nil value3757 has enum with nil value3758Database::BatchedBackgroundMigrationWorker3759 behaves like it runs batched background migration jobs3760 defining the job attributes3761 defines the data_consistency as always3762 defines the feature_category as database3763 defines the idempotency as true3764 .tracking_database3765 does not raise an error3766 overrides the method to return the tracking database3767 .lease_key3768 does not raise an error3769 returns the lease key3770 .enabled?3771 returns true when execute_batched_migrations_on_schedule feature flag is enabled3772 returns false when execute_batched_migrations_on_schedule feature flag is disabled3773 #perform3774 when the base model does not exist3775 does nothing (PENDING: because the base model for main exists)3776 logs a message indicating execution is skipped (PENDING: because the base model for main exists)3777 when the base model does exist3778 when the tracking database is shared3779 does nothing (PENDING: Skipping because database main exists)3780 when the tracking database is not shared3781 when the feature flag is disabled3782 does nothing3783 when the feature flag is enabled3784 when database config is shared3785 does nothing3786 when no active migrations exist3787 when parallel execution is disabled3788 does nothing3789 when parallel execution is enabled3790 does nothing3791 when active migrations exist3792 when parallel execution is disabled3793 always cleans up the exclusive lease3794 delegetes the execution to ExecutionWorker3795 when the calculated timeout is less than the minimum allowed3796 sets the lease timeout to the minimum value3797 when parallel execution is enabled3798 delegetes the execution to ExecutionWorker3799 executing an entire migration3800 when parallel execution is disabled3801 assigns proper feature category to the context and the worker3802 behaves like batched background migration execution3803 marks the migration record as finished3804 creates job records for each processed batch3805 marks all job records as succeeded3806 updates matching records in the range3807 does not update non-matching records in the range3808 health status3809 puts migration on hold when there is autovaccum activity on related tables3810 puts migration on hold when the pending WAL count is above the limit3811 when parallel execution is enabled3812 behaves like batched background migration execution3813 marks the migration record as finished3814 creates job records for each processed batch3815 marks all job records as succeeded3816 updates matching records in the range3817 does not update non-matching records in the range3818 health status3819 puts migration on hold when there is autovaccum activity on related tables3820 puts migration on hold when the pending WAL count is above the limit3821Banzai::Filter::References::CommitReferenceFilter3822 requires project context3823 ignores valid references contained inside 'pre' element3824 ignores valid references contained inside 'code' element3825 ignores valid references contained inside 'a' element3826 ignores valid references contained inside 'style' element3827 internal reference3828 links to a valid reference of 7 characters3829 links to a valid reference of 8 characters3830 links to a valid reference of 12 characters3831 links to a valid reference of 18 characters3832 links to a valid reference of 20 characters3833 links to a valid reference of 32 characters3834 links to a valid reference of 40 characters3835 always uses the short ID as the link text3836 links with adjacent text3837 ignores invalid commit IDs3838 includes a title attribute3839 escapes the title attribute3840 includes default classes3841 includes a data-project attribute3842 includes a data-commit attribute3843 supports an :only_path context3844 in merge request context3845 handles merge request contextual commit references3846 a doc with many (29) strings that could be SHAs3847 makes only a single request to Gitaly3848 cross-project / cross-namespace complete reference3849 link has valid text3850 has valid text3851 ignores invalid commit IDs on the referenced project3852 cross-project / same-namespace complete reference3853 link has valid text3854 has valid text3855 ignores invalid commit IDs on the referenced project3856 cross-project shorthand reference3857 link has valid text3858 has valid text3859 ignores invalid commit IDs on the referenced project3860 cross-project URL reference3861 links to a valid reference3862 links with adjacent text3863 ignores invalid commit IDs on the referenced project3864 URL reference for a commit patch3865 links to a valid reference3866 has valid text3867 does not link to patch when extension match is after the path3868 group context3869 ignores internal references3870 links to a valid reference3871 checking N+13872 does not have N+1 per multiple references per project3873Gitlab::RackAttack::Request3874 FILES_PATH_REGEX3875 is expected to match "/api/v4/projects/1/repository/files/README"3876 is expected to match "/api/v4/projects/1/repository/files/README?ref=master"3877 is expected to match "/api/v4/projects/1/repository/files/README/blame"3878 is expected to match "/api/v4/projects/1/repository/files/README/raw"3879 is expected to match "/api/v4/projects/some%2Fnested%2Frepo/repository/files/README"3880 is expected not to match "/api/v4/projects/some/nested/repo/repository/files/README"3881 #api_request?3882 path: "/", expected: false3883 is expected to eq false3884 when the application is mounted at a relative URL3885 is expected to eq false3886 path: "/groups", expected: false3887 is expected to eq false3888 when the application is mounted at a relative URL3889 is expected to eq false3890 path: "/foo/api", expected: false3891 is expected to eq false3892 when the application is mounted at a relative URL3893 is expected to eq false3894 path: "/api", expected: true3895 is expected to eq true3896 when the application is mounted at a relative URL3897 is expected to eq true3898 path: "/api/v4/groups/1", expected: true3899 is expected to eq true3900 when the application is mounted at a relative URL3901 is expected to eq true3902 #api_internal_request?3903 path: "/", expected: false3904 is expected to eq false3905 when the application is mounted at a relative URL3906 is expected to eq false3907 path: "/groups", expected: false3908 is expected to eq false3909 when the application is mounted at a relative URL3910 is expected to eq false3911 path: "/api", expected: false3912 is expected to eq false3913 when the application is mounted at a relative URL3914 is expected to eq false3915 path: "/api/v4/groups/1", expected: false3916 is expected to eq false3917 when the application is mounted at a relative URL3918 is expected to eq false3919 path: "/api/v4/internal", expected: false3920 is expected to eq false3921 when the application is mounted at a relative URL3922 is expected to eq false3923 path: "/foo/api/v4/internal", expected: false3924 is expected to eq false3925 when the application is mounted at a relative URL3926 is expected to eq false3927 path: "/api/v4/internal/", expected: true3928 is expected to eq true3929 when the application is mounted at a relative URL3930 is expected to eq true3931 path: "/api/v4/internal/foo", expected: true3932 is expected to eq true3933 when the application is mounted at a relative URL3934 is expected to eq true3935 path: "/api/v1/internal/foo", expected: true3936 is expected to eq true3937 when the application is mounted at a relative URL3938 is expected to eq true3939 #health_check_request?3940 path: "/", expected: false3941 is expected to eq false3942 when the application is mounted at a relative URL3943 is expected to eq false3944 path: "/groups", expected: false3945 is expected to eq false3946 when the application is mounted at a relative URL3947 is expected to eq false3948 path: "/foo/-/health", expected: false3949 is expected to eq false3950 when the application is mounted at a relative URL3951 is expected to eq false3952 path: "/-/health", expected: true3953 is expected to eq true3954 when the application is mounted at a relative URL3955 is expected to eq true3956 path: "/-/liveness", expected: true3957 is expected to eq true3958 when the application is mounted at a relative URL3959 is expected to eq true3960 path: "/-/readiness", expected: true3961 is expected to eq true3962 when the application is mounted at a relative URL3963 is expected to eq true3964 path: "/-/metrics", expected: true3965 is expected to eq true3966 when the application is mounted at a relative URL3967 is expected to eq true3968 path: "/-/health/foo", expected: true3969 is expected to eq true3970 when the application is mounted at a relative URL3971 is expected to eq true3972 path: "/-/liveness/foo", expected: true3973 is expected to eq true3974 when the application is mounted at a relative URL3975 is expected to eq true3976 path: "/-/readiness/foo", expected: true3977 is expected to eq true3978 when the application is mounted at a relative URL3979 is expected to eq true3980 path: "/-/metrics/foo", expected: true3981 is expected to eq true3982 when the application is mounted at a relative URL3983 is expected to eq true3984 #container_registry_event?3985 path: "/", expected: false3986 is expected to eq false3987 when the application is mounted at a relative URL3988 is expected to eq false3989 path: "/groups", expected: false3990 is expected to eq false3991 when the application is mounted at a relative URL3992 is expected to eq false3993 path: "/api/v4/container_registry_event", expected: false3994 is expected to eq false3995 when the application is mounted at a relative URL3996 is expected to eq false3997 path: "/foo/api/v4/container_registry_event/", expected: false3998 is expected to eq false3999 when the application is mounted at a relative URL4000 is expected to eq false4001 path: "/api/v4/container_registry_event/", expected: true4002 is expected to eq true4003 when the application is mounted at a relative URL4004 is expected to eq true4005 path: "/api/v4/container_registry_event/foo", expected: true4006 is expected to eq true4007 when the application is mounted at a relative URL4008 is expected to eq true4009 path: "/api/v1/container_registry_event/foo", expected: true4010 is expected to eq true4011 when the application is mounted at a relative URL4012 is expected to eq true4013 #product_analytics_collector_request?4014 path: "/", expected: false4015 is expected to eq false4016 when the application is mounted at a relative URL4017 is expected to eq false4018 path: "/groups", expected: false4019 is expected to eq false4020 when the application is mounted at a relative URL4021 is expected to eq false4022 path: "/-/collector", expected: false4023 is expected to eq false4024 when the application is mounted at a relative URL4025 is expected to eq false4026 path: "/-/collector/foo", expected: false4027 is expected to eq false4028 when the application is mounted at a relative URL4029 is expected to eq false4030 path: "/foo/-/collector/i", expected: false4031 is expected to eq false4032 when the application is mounted at a relative URL4033 is expected to eq false4034 path: "/-/collector/i", expected: true4035 is expected to eq true4036 when the application is mounted at a relative URL4037 is expected to eq true4038 path: "/-/collector/ifoo", expected: true4039 is expected to eq true4040 when the application is mounted at a relative URL4041 is expected to eq true4042 path: "/-/collector/i/foo", expected: true4043 is expected to eq true4044 when the application is mounted at a relative URL4045 is expected to eq true4046 #should_be_skipped?4047 api_internal_request: true, health_check_request: true, container_registry_event: true4048 returns true if any condition is true4049 api_internal_request: true, health_check_request: true, container_registry_event: false4050 returns true if any condition is true4051 api_internal_request: true, health_check_request: false, container_registry_event: true4052 returns true if any condition is true4053 api_internal_request: true, health_check_request: false, container_registry_event: false4054 returns true if any condition is true4055 api_internal_request: false, health_check_request: true, container_registry_event: true4056 returns true if any condition is true4057 api_internal_request: false, health_check_request: true, container_registry_event: false4058 returns true if any condition is true4059 api_internal_request: false, health_check_request: false, container_registry_event: true4060 returns true if any condition is true4061 api_internal_request: false, health_check_request: false, container_registry_event: false4062 returns true if any condition is true4063 #web_request?4064 path: "/", expected: true4065 is expected to eq true4066 when the application is mounted at a relative URL4067 is expected to eq true4068 path: "/groups", expected: true4069 is expected to eq true4070 when the application is mounted at a relative URL4071 is expected to eq true4072 path: "/foo/api", expected: true4073 is expected to eq true4074 when the application is mounted at a relative URL4075 is expected to eq true4076 path: "/api", expected: false4077 is expected to eq false4078 when the application is mounted at a relative URL4079 is expected to eq false4080 path: "/api/v4/groups/1", expected: false4081 is expected to eq false4082 when the application is mounted at a relative URL4083 is expected to eq false4084 #protected_path?4085 path: "/", expected: false4086 is expected to eq false4087 when the application is mounted at a relative URL4088 is expected to eq false4089 path: "/groups", expected: false4090 is expected to eq false4091 when the application is mounted at a relative URL4092 is expected to eq false4093 path: "/foo/protected", expected: false4094 is expected to eq false4095 when the application is mounted at a relative URL4096 is expected to eq false4097 path: "/foo/secure", expected: false4098 is expected to eq false4099 when the application is mounted at a relative URL4100 is expected to eq false4101 path: "/protected", expected: true4102 is expected to eq true4103 when the application is mounted at a relative URL4104 is expected to eq true4105 path: "/secure", expected: true4106 is expected to eq true4107 when the application is mounted at a relative URL4108 is expected to eq true4109 path: "/secure/", expected: true4110 is expected to eq true4111 when the application is mounted at a relative URL4112 is expected to eq true4113 path: "/secure/foo", expected: true4114 is expected to eq true4115 when the application is mounted at a relative URL4116 is expected to eq true4117 #frontend_request?4118 session: {}, env: {}, expected: false4119 is expected to eq false4120 session: {}, env: {"HTTP_X_CSRF_TOKEN"=>"8HSEISiQ628yg5bvmP8mjkERaUHBzRROZELC7APb0Ng="}, expected: false4121 is expected to eq false4122 session: {:_csrf_token=>"8HSEISiQ628yg5bvmP8mjkERaUHBzRROZELC7APb0Ng="}, env: {"HTTP_X_CSRF_TOKEN"=>"z1f8kPCyciJlMCbEV//jU9DIDbo7zwrU+USreOL4n24="}, expected: false4123 is expected to eq false4124 session: {:_csrf_token=>"8HSEISiQ628yg5bvmP8mjkERaUHBzRROZELC7APb0Ng="}, env: {"HTTP_X_CSRF_TOKEN"=>"8HSEISiQ628yg5bvmP8mjkERaUHBzRROZELC7APb0Ng="}, expected: true4125 is expected to eq true4126 #deprecated_api_request?4127 path: "/", query: "", expected: false4128 is expected to eq false4129 when the application is mounted at a relative URL4130 is expected to eq false4131 path: "/api/v4/groups/1/", query: "", expected: true4132 is expected to eq true4133 when the application is mounted at a relative URL4134 is expected to eq true4135 path: "/api/v4/groups/1", query: "", expected: true4136 is expected to eq true4137 when the application is mounted at a relative URL4138 is expected to eq true4139 path: "/api/v4/groups/foo/", query: "", expected: true4140 is expected to eq true4141 when the application is mounted at a relative URL4142 is expected to eq true4143 path: "/api/v4/groups/foo", query: "", expected: true4144 is expected to eq true4145 when the application is mounted at a relative URL4146 is expected to eq true4147 path: "/api/v4/groups/1", query: "with_projects=", expected: true4148 is expected to eq true4149 when the application is mounted at a relative URL4150 is expected to eq true4151 path: "/api/v4/groups/1", query: "with_projects=1", expected: true4152 is expected to eq true4153 when the application is mounted at a relative URL4154 is expected to eq true4155 path: "/api/v4/groups/1", query: "with_projects=0", expected: false4156 is expected to eq false4157 when the application is mounted at a relative URL4158 is expected to eq false4159 path: "/foo/api/v4/groups/1", query: "", expected: false4160 is expected to eq false4161 when the application is mounted at a relative URL4162 is expected to eq false4163 path: "/api/v4/groups/1/foo", query: "", expected: false4164 is expected to eq false4165 when the application is mounted at a relative URL4166 is expected to eq false4167 path: "/api/v4/groups/nested%2Fgroup", query: "", expected: true4168 is expected to eq true4169 when the application is mounted at a relative URL4170 is expected to eq true4171AwardEmoji4172 Associations4173 is expected to belong to awardable required: false4174 is expected to belong to user required: false4175 modules4176 is expected to includes the Participable module4177 validations4178 is expected to validate that :awardable cannot be empty/falsy4179 is expected to validate that :user cannot be empty/falsy4180 is expected to validate that :name cannot be empty/falsy4181 scoped uniqueness validation4182 rejects duplicate award emoji4183 allows duplicate award emoji for ghost users4184 when importing4185 allows duplicate award emoji4186 custom emoji4187 is accepted on issue4188 is accepted on merge_request4189 is accepted on note_on_issue4190 is accepted on snippet4191 is accepted on subgroup issue4192 is not supported on personal snippet (yet)4193 scopes4194 .upvotes4195 is expected to contain exactly #<AwardEmoji id: 8, name: "thumbsup", user_id: 780, awardable_id: 857, awardable_type: "Issue", created_at: "2023-03-30 11:52:14.116351028 +0000", updated_at: "2023-03-30 11:52:14.116351028 +0000">4196 .downvotes4197 is expected to contain exactly #<AwardEmoji id: 9, name: "thumbsdown", user_id: 782, awardable_id: 858, awardable_type: "Issue", created_at: "2023-03-30 11:52:14.566026852 +0000", updated_at: "2023-03-30 11:52:14.566026852 +0000">4198 .named4199 is expected to contain exactly #<AwardEmoji id: 8, name: "thumbsup", user_id: 780, awardable_id: 857, awardable_type: "Issue", created_at: "2023-03-30 11:52:14.116351028 +0000", updated_at: "2023-03-30 11:52:14.116351028 +0000">4200 is expected to contain exactly #<AwardEmoji id: 8, name: "thumbsup", user_id: 780, awardable_id: 857, awardable_type: "Issue", created_at: "2023-03-30 11:52:14.116351028 +0000", updated_at: "2023-03-30 11:52:14.116351028 +0000"> and #<AwardEmoji id: 9, name: "thumbsdown", user_id: 782, awardable_id: 858, awardable_type: "Issue", created_at: "2023-03-30 11:52:14.566026852 +0000", updated_at: "2023-03-30 11:52:14.566026852 +0000">4201 .awarded_by4202 is expected to contain exactly #<AwardEmoji id: 8, name: "thumbsup", user_id: 780, awardable_id: 857, awardable_type: "Issue", created_at: "2023-03-30 11:52:14.116351028 +0000", updated_at: "2023-03-30 11:52:14.116351028 +0000">4203 is expected to contain exactly #<AwardEmoji id: 8, name: "thumbsup", user_id: 780, awardable_id: 857, awardable_type: "Issue", created_at: "2023-03-30 11:52:14.116351028 +0000", updated_at: "2023-03-30 11:52:14.116351028 +0000"> and #<AwardEmoji id: 9, name: "thumbsdown", user_id: 782, awardable_id: 858, awardable_type: "Issue", created_at: "2023-03-30 11:52:14.566026852 +0000", updated_at: "2023-03-30 11:52:14.566026852 +0000">4204 expiring ETag cache4205 on a note4206 calls expire_etag_cache on the note when saved4207 calls expire_etag_cache on the note when destroyed4208 on another awardable4209 does not call expire_etag_cache on the issue when saved4210 does not call expire_etag_cache on the issue when destroyed4211 bumping updated at4212 calls bump_updated_at on the note when saved4213 calls bump_updated_at on the note when destroyed4214 on another awardable4215 does not error out when saved4216 does not error out when destroy4217 .award_counts_for_user4218 returns the awarded emoji in descending order4219 limits the returned number of rows4220 updating upvotes_count4221 on an issue4222 updates upvotes_count on the issue when saved4223 updates upvotes_count on the issue when destroyed4224 on another awardable4225 does not update upvotes_count on the merge_request when saved4226 does not update upvotes_count on the merge_request when destroyed4227 #url4228 is nil for built-in emoji4229 is nil for unrecognized emoji4230 is set for custom emoji4231 feature flag disabled4232 does not query4233 #to_ability_name4234 returns correct ability name4235Git::WikiPushService4236 #execute4237 executes model-specific callbacks4238 #process_changes4239 calls log_error for every event we cannot create4240 the push contains more than the permitted number of changes4241 creates only MAX_CHANGES events4242 default_branch collides with a tag4243 creates only one event4244 successfully creating events4245 creates one event for every wiki action4246 handles all known actions4247 when wiki_page slug is not UTF-84248 does not raise an error4249 two pages have been created4250 creates two events4251 creates two metadata records4252 creates appropriate events4253 a non-page file as been added4254 does not create events, or WikiPage metadata4255 one page, and one non-page have been created4256 creates a wiki page creation event4257 creates one metadata record4258 one page has been added, and then updated4259 creates just a single event4260 creates just one metadata record4261 creates a new wiki page creation event4262 when a page we already know about has been updated4263 does not create a new meta-data record4264 creates a new event4265 adds an update event4266 when a page we do not know about has been updated4267 creates a new meta-data record4268 creates a new event4269 adds an update event4270 when a page we do not know about has been deleted4271 create a new meta-data record4272 creates a new event4273 adds an update event4274 #perform_housekeeping4275 does not perform housekeeping when not needed4276 increments the push counter4277 when housekeeping is needed4278 performs housekeeping4279 does not raise an exception4280EmailsOnPushWorker4281 #perform4282 when push is a new branch4283 sends a mail with the correct subject4284 sends the mail to the correct recipient4285 when push is a deleted branch4286 sends a mail with the correct subject4287 sends the mail to the correct recipient4288 when push is a force push to delete commits4289 sends a mail with the correct subject4290 mentions force pushing in the body4291 sends the mail to the correct recipient4292 when there are no errors in sending4293 sends a mail with the correct subject4294 does not mention force pushing in the body4295 sends the mail to the correct recipient4296 when there is an SMTP error4297 gracefully handles an input SMTP error4298 when there are multiple recipients4299 with mixed-case recipient4300 retains the case4301 when the recipient addresses are a list of email addresses4302 sends the mail to each of the recipients4303 only generates the mail once4304 when SMIME signing is enabled4305 does not sign the email multiple times4306 when recipients are invalid4307 ignores them4308 when the recipient addresses contains angle brackets and are separated by spaces4309 accepts emails separated by whitespace4310 when the recipient addresses contain a mix of emails with and without angle brackets4311 accepts both kind of emails4312 when the recipient addresses contains angle brackets and are separated by newlines4313 accepts emails separated by newlines4314 when the recipient addresses contains duplicates4315 deduplicates recipients while treating the domain part as case-insensitive4316Banzai::Filter::References::UserReferenceFilter4317 requires project context4318 ignores invalid users4319 ignores references with text before the @ sign4320 ignores valid references contained inside 'pre' element4321 ignores valid references contained inside 'code' element4322 ignores valid references contained inside 'a' element4323 ignores valid references contained inside 'style' element4324 links with adjacent text4325 includes default classes4326 behaves like user reference or project reference4327 supports an :only_path context4328 mentioning a resource4329 links to a resource4330 links to a resource with a period4331 links to a resource with an underscore4332 links to a resource with different case-sensitivity4333 behaves like a reference containing an element node4334 does not escape inner html4335 behaves like it contains a data- attribute4336 includes a data- attribute4337 referencing a resource in a link href4338 links to the resource4339 links with adjacent text4340 behaves like it contains a data- attribute4341 includes a data- attribute4342 mentioning @all4343 supports a special @all mention4344 includes a data-author attribute when there is an author4345 does not include a data-author attribute when there is no author4346 ignores reference to all when the user is not a project member4347 behaves like a reference containing an element node4348 does not escape inner html4349 mentioning a group4350 links to the Group4351 includes a data-group attribute4352 behaves like a reference containing an element node4353 does not escape inner html4354 mentioning a nested group4355 links to the nested group4356 has the full group name as a title4357 behaves like a reference containing an element node4358 does not escape inner html4359 when a project is not specified4360 does not link a User4361 when skip_project_check set to true4362 links to a User4363 does not link users using @all reference4364 in group context4365 supports a special @all mention4366 supports mentioning a single user4367 supports mentioning a group4368 #namespaces4369 returns a Hash containing all Namespaces4370 #usernames4371 returns the usernames mentioned in a document4372 checking N+14373 does not have N+1 per multiple user references4374Gitlab::Ci::Build::Rules::Rule::Clause::Exists4375 #satisfied_by?4376 when the rules are being evaluated at job level4377 behaves like a rules:exists with a context4378 behaves like a glob matching rule4379 exact top-level match4380 is expected to eq true4381 exact top-level no match4382 is expected to eq false4383 pattern top-level match4384 is expected to eq true4385 pattern top-level no match4386 is expected to eq false4387 exact nested match4388 is expected to eq true4389 exact nested no match4390 is expected to eq false4391 pattern nested match4392 is expected to eq true4393 pattern nested no match4394 is expected to eq false4395 ext top-level match4396 is expected to eq true4397 ext nested no match4398 is expected to eq false4399 ext slash no match4400 is expected to eq false4401 when the rules:exists has a variable4402 when the context has the specified variables4403 is expected to be truthy4404 when variable expansion does not match4405 is expected to be falsey4406 after pattern comparision limit is reached4407 is expected to be truthy4408 when the rules are being evaluated for an entire pipeline4409 behaves like a rules:exists with a context4410 behaves like a glob matching rule4411 exact top-level match4412 is expected to eq true4413 exact top-level no match4414 is expected to eq false4415 pattern top-level match4416 is expected to eq true4417 pattern top-level no match4418 is expected to eq false4419 exact nested match4420 is expected to eq true4421 exact nested no match4422 is expected to eq false4423 pattern nested match4424 is expected to eq true4425 pattern nested no match4426 is expected to eq false4427 ext top-level match4428 is expected to eq true4429 ext nested no match4430 is expected to eq false4431 ext slash no match4432 is expected to eq false4433 when the rules:exists has a variable4434 when the context has the specified variables4435 is expected to be truthy4436 when variable expansion does not match4437 is expected to be falsey4438 after pattern comparision limit is reached4439 is expected to be truthy4440 when rules are being evaluated with `include`4441 behaves like a rules:exists with a context4442 behaves like a glob matching rule4443 exact top-level match4444 is expected to eq true4445 exact top-level no match4446 is expected to eq false4447 pattern top-level match4448 is expected to eq true4449 pattern top-level no match4450 is expected to eq false4451 exact nested match4452 is expected to eq true4453 exact nested no match4454 is expected to eq false4455 pattern nested match4456 is expected to eq true4457 pattern nested no match4458 is expected to eq false4459 ext top-level match4460 is expected to eq true4461 ext nested no match4462 is expected to eq false4463 ext slash no match4464 is expected to eq false4465 when the rules:exists has a variable4466 when the context has the specified variables4467 is expected to be truthy4468 when variable expansion does not match4469 is expected to be falsey4470 after pattern comparision limit is reached4471 is expected to be truthy4472 when context has no project4473 is expected to eq false4474Gitlab::Database::BackgroundMigration::BatchedMigration4475 is expected to be a kind of Gitlab::Database::SharedModel(abstract)4476 associations4477 is expected to have many batched_jobs4478 #last_job4479 returns the batched job with highest max_value4480 validations4481 is expected to validate that :job_arguments is case-sensitively unique within the scope of :job_class_name, :table_name, and :column_name4482 when there are failed jobs4483 raises an exception4484 when the jobs are completed4485 finishes the migration4486 state machine4487 when a migration is executed4488 updates the started_at4489 #pause!4490 when an invalid transition is applied4491 raises an exception4492 raises an exception4493 raises an exception4494 when a valid transition is applied4495 moves to pause4496 moves to pause4497 #execute!4498 when an invalid transition is applied4499 raises an exception4500 raises an exception4501 when a valid transition is applied4502 moves to active4503 moves to active4504 moves to active4505 #finish!4506 when an invalid transition is applied4507 raises an exception4508 when a valid transition is applied4509 moves to active4510 moves to active4511 moves to active4512 moves to active4513 #failure!4514 when an invalid transition is applied4515 raises an exception4516 raises an exception4517 when a valid transition is applied4518 moves to active4519 moves to active4520 moves to active4521 .valid_status4522 returns valid status4523 .queue_order4524 returns batched migrations ordered by their id4525 .ordered_by_created_at_desc4526 returns batched migrations ordered by created_at (DESC)4527 .active_migration4528 when there are no migrations on hold4529 returns the first active migration according to queue order4530 when there are migrations on hold4531 returns the first active migration that is not on hold according to queue order4532 when there are migrations not available for the current connection4533 returns the first active migration that is available for the current connection4534 when there are no active migrations available4535 returns nil4536 .find_executable4537 when the migration does not exist4538 returns nil4539 when the migration is not active4540 returns nil4541 when the migration is on hold4542 returns nil4543 when the migration is not available for the current connection4544 returns nil4545 when ther migration exists and is executable4546 returns the migration4547 .active_migrations_distinct_on_table4548 returns one pending executable migration per table4549 returns epmty collection when there are no pending executable migrations4550 .created_after4551 only returns migrations created after the specified time4552 .queued4553 returns active and paused migrations4554 .finalizing4555 returns only finalizing migrations4556 .successful_rows_counts4557 returns totals from successful jobs4558 #reset_attempts_of_blocked_jobs!4559 sets the number of attempts to zero for blocked jobs4560 #interval_elapsed?4561 when the migration has no last_job4562 returns true4563 when the migration has a last_job4564 when the last_job is less than an interval old4565 returns false4566 when the last_job is exactly an interval old4567 returns true4568 when the last_job is more than an interval old4569 returns true4570 when an interval variance is given4571 when the last job is less than an interval with variance old4572 returns false4573 when the last job is more than an interval with variance old4574 returns true4575 #create_batched_job!4576 creates a batched_job with the correct batch configuration4577 #next_min_value4578 when a previous job exists4579 returns the next value after the previous maximum4580 when a previous job does not exist4581 returns the migration minimum value4582 #job_class4583 returns the class of the job for the migration4584 #batch_class4585 returns the class of the batch strategy for the migration4586 #retry_failed_jobs!4587 when there are failed migration jobs4588 moves the status of the migration to active4589 changes the number of attempts to 04590 when there are no failed migration jobs4591 moves the status of the migration to active4592 #should_stop?4593 when the started_at is nil4594 is expected to be falsey4595 when the number of jobs is lesser than the MINIMUM_JOBS4596 is expected to be falsey4597 when the calculated value is greater than the threshold4598 is expected to be truthy4599 when the calculated value is lesser than the threshold4600 is expected to be falsey4601 #job_class_name=4602 behaves like an attr_writer that assigns class names4603 when a module name exists4604 keeps the class with module name4605 removes leading namespace resolution operator4606 when a module name does not exist4607 does not change the given class name4608 #batch_class_name=4609 behaves like an attr_writer that assigns class names4610 when a module name exists4611 keeps the class with module name4612 removes leading namespace resolution operator4613 when a module name does not exist4614 does not change the given class name4615 #migrated_tuple_count4616 sums the batch_size of succeeded jobs4617 #prometheus_labels4618 returns a hash with labels for the migration4619 #smoothed_time_efficiency4620 when there are not enough jobs4621 returns nil4622 when there are enough jobs4623 example 1: increasing trend, but only recently crossed threshold4624 returns the smoothed time efficiency4625 example 2: increasing trend, crossed threshold a while ago4626 returns the smoothed time efficiency4627 example 3: decreasing trend, but only recently crossed threshold4628 returns the smoothed time efficiency4629 example 4: latest run spiked4630 returns the smoothed time efficiency4631 with preloaded batched migration4632 avoids N+14633 #optimize!4634 calls the BatchOptimizer4635 #hold!4636 updates on_hold_until property4637 defaults to 10 minutes4638 #on_hold?4639 returns false if no on_hold_until is set4640 returns false if on_hold_until has passed4641 returns true if on_hold_until is in the future4642 #progress4643 when the migration is completed4644 returns 1004645 when the status is finished4646 returns 1004647 when the migration does not have jobs4648 returns zero4649 when the `total_tuple_count` is zero4650 returns nil4651 when migration has completed jobs4652 calculates the progress4653 .for_configuration4654 finds the migration matching the given configuration parameters4655 filters by gitlab schemas available for the connection4656 doesn not filter by gitlab schemas available for the connection if the column is nor present (PENDING: Skipping because none of the extra databases [:ci] are setup)4657 .find_for_configuration4658 returns nill if such migration does not exists4659 returns the migration when it exists4660 .for_gitlab_schema4661 finds the migrations matching the given gitlab schema4662CommitsHelper4663 commit_author_link4664 escapes the author email4665 escapes the author name4666 commit_committer_link4667 escapes the committer email4668 escapes the committer name4669 #view_file_button4670 links to project files4671 #view_on_environment_button4672 returns a link tag linking to the file in the environment4673 #diff_mode_swap_button4674 for rendered4675 renders the correct select-rendered button4676 for raw4677 renders the correct select-raw button4678 #commit_to_html4679 renders HTML representation of a commit4680 commit_path4681 returns a persisted merge request commit path4682 returns a non-persisted merge request commit path which commits still reside in the source project4683 returns a project commit path4684 #conditionally_paginate_diff_files4685 pagination is enabled4686 has been paginated4687 can change the number of items per page4688 page 14689 has 20 diffs4690 page 54691 has the remaining 5 out of 85 diffs4692 pagination is disabled4693 returns the unpaginated collection4694 #cherry_pick_projects_data4695 returns data for cherry picking into a project4696 #commit_options_dropdown_data4697 when user is logged in4698 returns data as expected4699 when can not collaborate on project4700 returns data as expected4701 when commit has already been reverted4702 returns data as expected4703 when user is not logged in4704 returns data as expected4705 #commit_partial_cache_key4706 is expected to eq [#<CommitPresenter(#<Commit id:570e7b2abdd848b95f2f578043fc23bd6f6fd24d namespace828/project847@570e7...path=>"test", :pipeline_status=>"pipelines/64-20230330115426853643", :referenced_by=>0, :xhr=>true}]4707 when the show_tags_on_commits_view flag is disabled4708 is expected to eq [#<CommitPresenter(#<Commit id:570e7b2abdd848b95f2f578043fc23bd6f6fd24d namespace831/project850@570e7...330115429412620", :path=>"test", :pipeline_status=>"pipelines/65-20230330115428640486", :xhr=>true}]4709 final cache key output4710 is expected to include "commit:570e7b2abdd848b95f2f578043fc23bd6f6fd24d"4711 is expected to include "pipelines/67-20230330115432630572"4712 #commit_path_template4713 is expected to eq "/namespace840/project859/-/commit/$COMMIT_SHA"4714CommitRange4715 raises ArgumentError when given an invalid range string4716 modules4717 is expected to includes the Referable module4718 #initialize4719 does not modify strings in-place4720 #to_s4721 is correct for three-dot syntax4722 is correct for two-dot syntax4723 #to_reference4724 returns a String reference to the object4725 returns a String reference to the object4726 supports a cross-project reference4727 #reference_link_text4728 returns a String reference to the object4729 returns a String reference to the object4730 supports a cross-project reference4731 #to_param4732 includes the correct keys4733 includes the correct values for a three-dot range4734 includes the correct values for a two-dot range4735 #exclude_start?4736 is false for three-dot ranges4737 is true for two-dot ranges4738 #valid_commits?4739 with a valid repo4740 is false when `sha_from` is invalid4741 is false when `sha_to` is invalid4742 is true when both `sha_from` and `sha_to` are valid4743 without a valid repo4744 returns false4745Ci::PipelinesFinder4746 #execute4747 when params is empty4748 returns all pipelines4749 when scope is running4750 returns matched pipelines4751 when scope is pending4752 returns matched pipelines4753 when scope is finished4754 returns matched pipelines4755 when scope is branches or tags4756 when scope is branches4757 returns matched pipelines4758 when scope is tags4759 returns matched pipelines4760 when project has child pipelines4761 filters out child pipelines and shows only the parents by default4762 when status is created4763 returns matched pipelines4764 when status is waiting_for_resource4765 returns matched pipelines4766 when status is preparing4767 returns matched pipelines4768 when status is pending4769 returns matched pipelines4770 when status is running4771 returns matched pipelines4772 when status is success4773 returns matched pipelines4774 when status is failed4775 returns matched pipelines4776 when status is canceled4777 returns matched pipelines4778 when status is skipped4779 returns matched pipelines4780 when status is manual4781 returns matched pipelines4782 when status is scheduled4783 returns matched pipelines4784 when ref is specified4785 when ref exists4786 returns matched pipelines4787 when ref does not exist4788 returns empty4789 when username is specified4790 when username exists4791 returns matched pipelines4792 when username does not exist4793 returns empty4794 when yaml_errors is specified4795 when yaml_errors is true4796 returns matched pipelines4797 when yaml_errors is false4798 returns matched pipelines4799 when yaml_errors is invalid4800 returns all pipelines4801 when updated_at filters are specified4802 returns deployments with matched updated_at4803 when iids filter is specified4804 returns matches pipelines4805 does not fitler out child pipelines4806 when sha is specified4807 when sha exists4808 returns matched pipelines4809 when sha does not exist4810 returns empty4811 when the project has limited access to pipelines4812 when the user has access4813 is expected to return pipelines4814 the user is not allowed to read pipelines4815 returns empty4816 when source is specified4817 returns only the matched pipeline4818 when name is specified4819 performs exact compare4820 when name does not exist4821 returns empty4822 when pipeline_name_search feature flag is off4823 ignores name parameter4824 ordering4825 order_by: "id", sort: "asc", ordered_pipelines: [:pipeline_1, :pipeline_2, :pipeline_3]4826 returns the pipelines ordered4827 order_by: "id", sort: "desc", ordered_pipelines: [:pipeline_3, :pipeline_2, :pipeline_1]4828 returns the pipelines ordered4829 order_by: "ref", sort: "asc", ordered_pipelines: [:pipeline_2, :pipeline_1, :pipeline_3]4830 returns the pipelines ordered4831 order_by: "ref", sort: "desc", ordered_pipelines: [:pipeline_3, :pipeline_1, :pipeline_2]4832 returns the pipelines ordered4833 order_by: "status", sort: "asc", ordered_pipelines: [:pipeline_2, :pipeline_1, :pipeline_3]4834 returns the pipelines ordered4835 order_by: "status", sort: "desc", ordered_pipelines: [:pipeline_3, :pipeline_1, :pipeline_2]4836 returns the pipelines ordered4837 order_by: "updated_at", sort: "asc", ordered_pipelines: [:pipeline_2, :pipeline_3, :pipeline_1]4838 returns the pipelines ordered4839 order_by: "updated_at", sort: "desc", ordered_pipelines: [:pipeline_1, :pipeline_3, :pipeline_2]4840 returns the pipelines ordered4841 order_by: "user_id", sort: "asc", ordered_pipelines: [:pipeline_1, :pipeline_2, :pipeline_3]4842 returns the pipelines ordered4843 order_by: "user_id", sort: "desc", ordered_pipelines: [:pipeline_3, :pipeline_2, :pipeline_1]4844 returns the pipelines ordered4845 order_by: "invalid", sort: "asc", ordered_pipelines: [:pipeline_1, :pipeline_2, :pipeline_3]4846 returns the pipelines ordered4847 order_by: "id", sort: "err", ordered_pipelines: [:pipeline_3, :pipeline_2, :pipeline_1]4848 returns the pipelines ordered4849PipelineSerializer4850 # order random4851 #represent4852 when used without pagination4853 created a not paginated serializer4854 when a single object is being serialized4855 serializers the pipeline object4856 when multiple objects are being serialized4857 serializers the array of pipelines4858 when used with pagination4859 created a paginated serializer4860 when resource is not paginatable4861 when a single pipeline object is being serialized4862 raises error4863 when resource is paginatable relation4864 when a single pipeline object is present in relation4865 serializes pipeline relation4866 when a multiple pipeline objects are being serialized4867 serializes appropriate number of objects4868 appends relevant headers4869 when there are pipelines for merge requests4870 includes merge requests information4871 preloads related merge requests4872 number of queries when preloaded4873 with the same ref4874 verifies number of queries4875 with different refs4876 verifies number of queries4877 with triggered pipelines4878 verifies number of queries4879 with build environments4880 executes one query to fetch all related environments4881 with scheduled and manual builds4882 sends at most one metadata query for each type of build4883 #represent_status4884 when represents only status4885 serializes only status4886Integrations::Discord4887 behaves like chat integration4888 Associations4889 is expected to belong to project required: false4890 Validations4891 when integration is active4892 is expected to validate that :webhook cannot be empty/falsy4893 behaves like issue tracker integration URL attribute4894 is expected to allow :webhook to be ‹"https://example.com"›4895 is expected not to allow :webhook to be ‹"example.com"›4896 is expected not to allow :webhook to be ‹"ftp://example.com"›4897 is expected not to allow :webhook to be ‹"herp-and-derp"›4898 when integration is inactive4899 is expected not to validate that :webhook cannot be empty/falsy4900 .supported_events4901 does not support deployment_events4902 #execute4903 with push events4904 behaves like triggered Discord notifications integration4905 calls Discord notifications API4906 with default branch4907 when only default branch are to be notified4908 behaves like triggered Discord notifications integration4909 calls Discord notifications API4910 when only protected branches are to be notified4911 behaves like untriggered Discord notifications integration4912 does not call Discord notifications API4913 when default and protected branches are to be notified4914 behaves like triggered Discord notifications integration4915 calls Discord notifications API4916 when all branches are to be notified4917 behaves like triggered Discord notifications integration4918 calls Discord notifications API4919 with protected branch4920 when only default branch are to be notified4921 behaves like untriggered Discord notifications integration4922 does not call Discord notifications API4923 when only protected branches are to be notified4924 behaves like triggered Discord notifications integration4925 calls Discord notifications API4926 when default and protected branches are to be notified4927 behaves like triggered Discord notifications integration4928 calls Discord notifications API4929 when all branches are to be notified4930 behaves like triggered Discord notifications integration4931 calls Discord notifications API4932 with neither default nor protected branch4933 when only default branch are to be notified4934 behaves like untriggered Discord notifications integration4935 does not call Discord notifications API4936 when only protected branches are to be notified4937 behaves like untriggered Discord notifications integration4938 does not call Discord notifications API4939 when default and protected branches are to be notified4940 behaves like untriggered Discord notifications integration4941 does not call Discord notifications API4942 when all branches are to be notified4943 behaves like triggered Discord notifications integration4944 calls Discord notifications API4945 with issue events4946 behaves like triggered Discord notifications integration4947 calls Discord notifications API4948 with merge events4949 behaves like triggered Discord notifications integration4950 calls Discord notifications API4951 with wiki page events4952 behaves like triggered Discord notifications integration4953 calls Discord notifications API4954 with note events4955 with commit comment4956 behaves like triggered Discord notifications integration4957 calls Discord notifications API4958 with merge request comment4959 behaves like triggered Discord notifications integration4960 calls Discord notifications API4961 with issue comment4962 behaves like triggered Discord notifications integration4963 calls Discord notifications API4964 with snippet comment4965 behaves like triggered Discord notifications integration4966 calls Discord notifications API4967 with pipeline events4968 with failed pipeline4969 behaves like triggered Discord notifications integration4970 calls Discord notifications API4971 with succeeded pipeline4972 with default notify_only_broken_pipelines4973 does not call Discord notifications API4974 when notify_only_broken_pipelines is false4975 behaves like triggered Discord notifications integration4976 calls Discord notifications API4977 with default branch4978 when only default branch are to be notified4979 behaves like triggered Discord notifications integration4980 calls Discord notifications API4981 when only protected branches are to be notified4982 behaves like untriggered Discord notifications integration4983 does not call Discord notifications API4984 when default and protected branches are to be notified4985 behaves like triggered Discord notifications integration4986 calls Discord notifications API4987 when all branches are to be notified4988 behaves like triggered Discord notifications integration4989 calls Discord notifications API4990 with protected branch4991 when only default branch are to be notified4992 behaves like untriggered Discord notifications integration4993 does not call Discord notifications API4994 when only protected branches are to be notified4995 behaves like triggered Discord notifications integration4996 calls Discord notifications API4997 when default and protected branches are to be notified4998 behaves like triggered Discord notifications integration4999 calls Discord notifications API5000 when all branches are to be notified5001 behaves like triggered Discord notifications integration5002 calls Discord notifications API5003 with neither default nor protected branch5004 when only default branch are to be notified5005 behaves like untriggered Discord notifications integration5006 does not call Discord notifications API5007 when only protected branches are to be notified5008 behaves like untriggered Discord notifications integration5009 does not call Discord notifications API5010 when default and protected branches are to be notified5011 behaves like untriggered Discord notifications integration5012 does not call Discord notifications API5013 when all branches are to be notified5014 behaves like triggered Discord notifications integration5015 calls Discord notifications API5016 deployment events5017 behaves like untriggered Discord notifications integration5018 does not call Discord notifications API5019 #execute5020 uses the right embed parameters5021 DNS rebind to local address5022 does not allow DNS rebinding5023 when the Discord request fails5024 logs an error and returns false5025MergeRequests::FfMergeService5026 #execute5027 valid params5028 does not create merge commit5029 keeps the merge request valid5030 updates the merge request to merged5031 sends email to user2 about merge of new merge_request5032 creates resource event about merge_request merge5033 does not update squash_commit_sha if it is not a squash5034 updates squash_commit_sha if it is a squash5035 error handling5036 logs and saves error if there is an exception5037 logs and saves error if there is an PreReceiveError exception5038 does not update squash_commit_sha if squash merge is not successful5039Gitlab::ImportExport::ImportFailureService5040 #log_import_failure5041 when importable is a group5042 behaves like log import failure5043 tracks error5044 saves data to ImportFailure5045 when importable is a project5046 behaves like log import failure5047 tracks error5048 saves data to ImportFailure5049 when ImportFailure does not support importable class5050 raise exception5051 #with_retry5052 when exceptions are retriable5053 exception: GRPC::DeadlineExceeded5054 when retry succeeds5055 retries and logs import failure once with correct params5056 when retry continues to fail with intermittent errors5057 retries the number of times allowed and raise exception5058 logs import failure each time and raise exception5059 exception: ActiveRecord::QueryCanceled5060 when retry succeeds5061 retries and logs import failure once with correct params5062 when retry continues to fail with intermittent errors5063 retries the number of times allowed and raise exception5064 logs import failure each time and raise exception5065 when exception is not retriable5066 raise the exception5067Gitlab::BitbucketImport::Importer5068 #import_pull_requests5069 imports threaded discussions5070 when user exists in GitLab5071 does not add author line to comments5072 when importing a pull request throws an exception5073 logs an error without the backtrace5074 when branches' sha is not found in the repository5075 uses the pull request sha references5076 metrics5077 counts imported pull requests5078 issues statuses5079 maps statuses to open or closed5080 creating labels on project5081 creates labels as expected5082 does not fail if label is already existing5083 does not create new labels5084 does not update existing ones5085 wiki import5086 is skipped when the wiki exists5087 imports to the project disk_path5088 issue import5089 allocates internal ids5090 maps reporters to anonymous if bitbucket reporter is nil5091 sets work item type on new issues5092 with issue comments5093 imports issue comments5094 metrics5095 counts imported issues5096 #execute5097 metrics5098 counts and measures duration of imported projects5099Gitlab::Git::Branch5100 is expected to be a kind of Array5101 .find5102 when finding branch via branch name5103 returns a branch object5104 when the branch is already a branch5105 returns a branch object5106 #cache_key5107 returns a cache key that changes based on changeable values5108 #size5109 is expected to eq 835110 first branch5111 is expected to eq "'test'"5112 is expected to start with "e56497b"5113 master branch5114 is expected to start with "b83d6e391c22777fca1ed3012fce84f633d7fed0"5115 with active, stale and future branches5116 examine if the branch is active or stale5117 #active?5118 is expected to be falsey5119 is expected to be truthy5120 is expected to be truthy5121 #stale?5122 is expected to be truthy5123 is expected to be falsey5124 is expected to be falsey5125 #state5126 is expected to eq :stale5127 is expected to eq :active5128 is expected to eq :active5129Snippets::BulkDestroyService5130 #execute5131 deletes the snippets in bulk5132 when snippets is empty5133 returns a ServiceResponse success response5134 when user does not have access to remove the snippet5135 behaves like error is raised5136 returns error5137 no record is deleted5138 when skip_authorization option is passed5139 returns a ServiceResponse success response5140 deletes all the snippets that belong to the user5141 when an error is raised deleting the repository5142 behaves like error is raised5143 returns error5144 no record is deleted5145 when an error is raised deleting the records5146 behaves like error is raised5147 returns error5148 no record is deleted5149 when snippet does not have a repository attached5150 returns success5151Ci::PipelineCreation::CancelRedundantPipelinesService5152 # order random5153 #execute!5154 when build statuses are set up correctly5155 has builds of all statuses5156 when auto-cancel is enabled5157 cancels only previous interruptible builds5158 logs canceled pipelines5159 cancels the builds with 2 queries to avoid query timeout5160 does not cancel future pipelines5161 when the previous pipeline has a child pipeline5162 with another nested child pipeline5163 cancels all nested child pipeline builds5164 when started after pipeline was finished5165 cancels child pipeline builds5166 when the child pipeline has interruptible running jobs5167 cancels all child pipeline builds5168 when the child pipeline includes completed interruptible jobs5169 cancels all child pipeline builds with a cancelable_status5170 when the child pipeline has started non-interruptible job5171 does not cancel any child pipeline builds5172 when the child pipeline has non-interruptible non-started job5173 when the jobs are cancelable5174 cancels all child pipeline builds when build status waiting_for_resource included5175 cancels all child pipeline builds when build status preparing included5176 cancels all child pipeline builds when build status pending included5177 cancels all child pipeline builds when build status created included5178 cancels all child pipeline builds when build status scheduled included5179 when the jobs are not cancelable5180 does not cancel child pipeline builds when build status canceled included5181 does not cancel child pipeline builds when build status skipped included5182 does not cancel child pipeline builds when build status manual included5183 when the pipeline is a child pipeline5184 does not cancel any builds5185 when the previous pipeline source is webide5186 does not cancel builds of the previous pipeline5187 when auto-cancel is disabled5188 does not cancel any build5189Banzai::ReferenceParser::CommitRangeParser5190 #nodes_visible_to_user5191 when the link has a data-project attribute5192 includes the link if can_read_reference? returns true5193 excludes the link if can_read_reference? returns false5194 behaves like referenced feature visibility5195 when feature is disabled5196 does not create reference5197 when feature is enabled only for team members5198 does not create reference for non member5199 creates reference for member5200 when feature is enabled5201 creates reference5202 when the link does not have a data-project attribute5203 returns the nodes5204 #referenced_by5205 when the link has a data-project attribute5206 when the link as a data-commit-range attribute5207 returns an Array of commit ranges5208 returns an empty Array when the commit range could not be found5209 when the link does not have a data-commit-range attribute5210 returns an empty Array5211 when the link does not have a data-project attribute5212 returns an empty Array5213 #commit_range_ids_per_project5214 returns a Hash containing range IDs per project5215 does not add a project when the data-commit-range attribute is empty5216 #find_ranges5217 returns an Array of range objects5218 skips ranges that could not be found5219 #find_object5220 when the range has valid commits5221 returns the commit range5222 when the range does not have any valid commits5223 returns nil5224 group context5225 returns nil5226 when checking commits ranges on another projects5227 behaves like no project N+1 queries5228 avoids N+1 queries in #nodes_visible_to_user5229Discussions::UpdateDiffPositionService5230 #execute5231 when the diff line is the same5232 updates the position5233 when the resolve_outdated_diff_discussions setting is set5234 does not resolve the discussion5235 when the diff line has changed5236 doesn't update the position5237 sets the change position5238 creates a system discussion5239 when the resolve_outdated_diff_discussions setting is set5240 sets resolves the discussion and sets resolved_by_push5241 doesn't update the position5242 sets the change position5243 creates a system discussion5244Projects::HashedStorage::MigrateRepositoryService5245 #execute5246 works even when project validation fails5247 repository lock5248 tries to lock the repository5249 fails when a git operation is in progress5250 when repository doesnt exist on disk5251 skips the disk change but increase the version5252 when succeeds5253 renames project, wiki and design repositories5254 updates project to be hashed and not read-only5255 move operation is called for all repositories5256 writes project full path to gitaly5257 when exception happens5258 handles OpenSSL::Cipher::CipherError5259 ensures rollback when OpenSSL::Cipher::CipherError5260 handles Gitlab::Git::CommandError5261 ensures rollback when Gitlab::Git::CommandError5262 when one move fails5263 rollsback repositories to original name5264 when rollback fails5265 does not try to move nil repository over existing5266Gitlab::Kubernetes::Helm::V2::InitCommand5267 behaves like helm command generator5268 #generate_script5269 returns appropriate command5270 on a rbac-enabled cluster5271 behaves like helm command generator5272 #generate_script5273 returns appropriate command5274 behaves like helm command5275 HELM_VERSION5276 is expected to match /\d+\.\d+\.\d+/5277 #env5278 is expected to be a kind of Hash5279 #rbac?5280 rbac is enabled5281 is expected to be truthy5282 rbac is not enabled5283 is expected to be falsey5284 #pod_resource5285 rbac is enabled5286 is expected to be an instance of Kubeclient::Resource5287 generates a pod that uses the tiller serviceAccountName5288 rbac is not enabled5289 is expected to be an instance of Kubeclient::Resource5290 generates a pod that uses the default serviceAccountName5291 #config_map_resource5292 returns a KubeClient resource with config map content for the application5293 #service_account_resource5294 rbac is enabled5295 generates a Kubeclient resource for the tiller ServiceAccount5296 rbac is not enabled5297 generates nothing5298 #cluster_role_binding_resource5299 rbac is enabled5300 generates a Kubeclient resource for the ClusterRoleBinding for tiller5301 binds the account in #service_account_resource5302 rbac is not enabled5303 generates nothing5304Gitlab::Checks::SingleChangeAccess5305 #validate!5306 without failed checks5307 doesn't raise an error5308 calls pushes checks5309 calls branches checks5310 calls tags checks5311 calls diff checks5312 when time limit was reached5313 raises a TimeoutError5314 #commits5315 with provided commits5316 behaves like #commits5317 returns expected commits5318 returns expected commits on repeated calls5319 without provided commits5320 behaves like #commits5321 returns expected commits5322 returns expected commits on repeated calls5323IssueLinks::CreateService5324 #execute5325 behaves like issuable link creation5326 #execute5327 when the reference list is empty5328 returns error5329 when Issuable not found5330 returns error5331 no relationship is created5332 when user has no permission to target issuable5333 returns error5334 no relationship is created5335 source and target are the same issuable5336 does not create notes5337 no relationship is created5338 when there is an issuable to relate5339 creates relationships5340 returns success status and created links5341 creates notes5342 when reference of any already related issue is present5343 creates notes only for new relations5344 when there are invalid references5345 creates links only for valid references5346 returns error status5347 when target is an incident5348 behaves like an incident management tracked event5349 .track_event5350 tracks the event using redis5351 behaves like Snowplow event tracking with RedisHLL context5352 behaves like Snowplow event tracking5353 is emitted5354Security::MergeReportsService#execute5355 copies scanners into target report and eliminates duplicates5356 copies identifiers into target report and eliminates duplicates5357 deduplicates (except cwe and wasc) and sorts the vulnerabilities by severity (desc) then by compare key5358 deduplicates scanned resources5359 errors on target report5360 is expected to contain exactly {:message=>"bar", :type=>"foo"} and {:message=>"baz", :type=>"zoo"}5361 warnings on target report5362 is expected to contain exactly {:message=>"bar", :type=>"foo"} and {:message=>"baz", :type=>"zoo"}5363 ordering reports for sast analyzers5364 when reports are gathered in an unprioritized order5365 is expected to eql #<Gitlab::Ci::Reports::Security::Scanner:0x00007fc3c5af74a0 @external_id="bandit", @name="Bandit", @v...on="1.0.0", @primary_identifiers=nil, @sort_keys=[1, "bandit", "Bandit", "Security Scanner Vendor"]> and #<Gitlab::Ci::Reports::Security::Scanner:0x00007fc3ca68d798 @external_id="semgrep", @name="Semgrep", ...="1.0.0", @primary_identifiers=nil, @sort_keys=[2, "semgrep", "Semgrep", "Security Scanner Vendor"]>5366 is expected to eq 25367 is expected to eql #<Gitlab::Ci::Reports::Security::Identifier:0x00007fc3aaf5e2c0 @external_id="B403", @external_type="b...id", @name="bandit_test_id-B403", @url=nil, @fingerprint="9ea39e538d11434f325435e905bf238e7cf1f7a4"> and #<Gitlab::Ci::Reports::Security::Identifier:0x00007fc3a9332600 @external_id="CVE-2019-123", @external...="cve", @name="cve-CVE-2019-123", @url=nil, @fingerprint="6d834ff5767ac7544bef36b0e9996a9a3d6da5f1">5368 is expected to contain exactly #<Gitlab::Ci::Reports::Security::Identifier:0x00007fc3ac7e7508 @external_id="rules.bandit.B105", @ext...e="semgrep_id-rules.bandit.B105", @url=nil, @fingerprint="86d65bee153188dc92a8fd17263d8319d9fbe4ee">5369 when a custom analyzer is completed before the known analyzers5370 is expected to eql #<Gitlab::Ci::Reports::Security::Scanner:0x00007fc391c38aa0 @external_id="bandit", @name="Bandit", @v...on="1.0.0", @primary_identifiers=nil, @sort_keys=[1, "bandit", "Bandit", "Security Scanner Vendor"]>, #<Gitlab::Ci::Reports::Security::Scanner:0x00007fc390fbe680 @external_id="semgrep", @name="Semgrep", ...="1.0.0", @primary_identifiers=nil, @sort_keys=[2, "semgrep", "Semgrep", "Security Scanner Vendor"]>, and #<Gitlab::Ci::Reports::Security::Scanner:0x00007fc390266d98 @external_id="scanner-2", @name="Scanner ...primary_identifiers=nil, @sort_keys=[Infinity, "scanner-2", "Scanner 2", "Security Scanner Vendor"]>5371 is expected to eq 35372 is expected to contain exactly #<Gitlab::Ci::Reports::Security::Identifier:0x00007fc3de97c120 @external_id="VULN-2", @external_type=...ner-2", @name="scanner-2-VULN-2", @url=nil, @fingerprint="8e683704c05c3d223f7572623a39cdf39ecc5f15"> and #<Gitlab::Ci::Reports::Security::Identifier:0x00007fc3d4bde530 @external_id="CVE-2019-456", @external...="cve", @name="cve-CVE-2019-456", @url=nil, @fingerprint="47c8c718e4355e29c0b8e87fd62c2c7da65911dd">5373RuboCop::Cop::RSpec::MisspelledAggregateFailures5374 # order random5375 with legit tags5376 tag: "aggregate"5377 behaves like legit tag5378 does not flag5379 tag: "aggregations"5380 behaves like legit tag5381 does not flag5382 tag: "aggregate_two_underscores"5383 behaves like legit tag5384 does not flag5385 with misspelled tags5386 tag: "aggregate_errors"5387 behaves like misspelled tag5388 flags and auto-corrects misspelled tags in describe5389 flags and auto-corrects misspelled tags in context5390 flags and auto-corrects misspelled tags in examples5391 flags and auto-corrects misspelled tags in any order5392 tag: "aggregate_failure"5393 behaves like misspelled tag5394 flags and auto-corrects misspelled tags in describe5395 flags and auto-corrects misspelled tags in context5396 flags and auto-corrects misspelled tags in examples5397 flags and auto-corrects misspelled tags in any order5398 tag: "aggregated_failures"5399 behaves like misspelled tag5400 flags and auto-corrects misspelled tags in describe5401 flags and auto-corrects misspelled tags in context5402 flags and auto-corrects misspelled tags in examples5403 flags and auto-corrects misspelled tags in any order5404 tag: "aggregate_results"5405 behaves like misspelled tag5406 flags and auto-corrects misspelled tags in describe5407 flags and auto-corrects misspelled tags in context5408 flags and auto-corrects misspelled tags in examples5409 flags and auto-corrects misspelled tags in any order5410 tag: "aggregated_errors"5411 behaves like misspelled tag5412 flags and auto-corrects misspelled tags in describe5413 flags and auto-corrects misspelled tags in context5414 flags and auto-corrects misspelled tags in examples5415 flags and auto-corrects misspelled tags in any order5416 tag: "aggregates_failures"5417 behaves like misspelled tag5418 flags and auto-corrects misspelled tags in describe5419 flags and auto-corrects misspelled tags in context5420 flags and auto-corrects misspelled tags in examples5421 flags and auto-corrects misspelled tags in any order5422 tag: "aggregate_failues"5423 behaves like misspelled tag5424 flags and auto-corrects misspelled tags in describe5425 flags and auto-corrects misspelled tags in context5426 flags and auto-corrects misspelled tags in examples5427 flags and auto-corrects misspelled tags in any order5428 tag: "aggregate_bar"5429 behaves like misspelled tag5430 flags and auto-corrects misspelled tags in describe5431 flags and auto-corrects misspelled tags in context5432 flags and auto-corrects misspelled tags in examples5433 flags and auto-corrects misspelled tags in any order5434 tag: "aggregate_foo"5435 behaves like misspelled tag5436 flags and auto-corrects misspelled tags in describe5437 flags and auto-corrects misspelled tags in context5438 flags and auto-corrects misspelled tags in examples5439 flags and auto-corrects misspelled tags in any order5440Gitlab::Diff::LinesUnfolder5441 position requires a middle expansion and new match lines5442 old_line is an invalid number5443 fails gracefully5444 blob lines5445 returns the extracted blob lines correctly5446 diff lines5447 return merge of blob lines with diff lines correctly5448 merged lines have correct line codes5449 position requires a middle expansion and no top match line5450 blob lines5451 returns the extracted blob lines correctly5452 diff lines5453 return merge of blob lines with diff lines correctly5454 merged lines have correct line codes5455 position requires a middle expansion and no bottom match line5456 blob lines5457 returns the extracted blob lines correctly5458 diff lines5459 return merge of blob lines with diff lines correctly5460 merged lines have correct line codes5461 position requires a short top expansion5462 blob lines5463 returns the extracted blob lines correctly5464 diff lines5465 return merge of blob lines with diff lines correctly5466 merged lines have correct line codes5467 position sits between two match lines (no expasion needed)5468 diff lines5469 returns nil5470 position requires bottom expansion and new match lines5471 blob lines5472 returns the extracted blob lines correctly5473 diff lines5474 return merge of blob lines with diff lines correctly5475 merged lines have correct line codes5476 position requires bottom expansion and no new match line5477 blob lines5478 returns the extracted blob lines correctly5479 diff lines5480 return merge of blob lines with diff lines correctly5481 merged lines have correct line codes5482 positioned on an image5483 diff file is not text5484 returns nil5485 diff file is text5486 returns nil5487Ci::JobToken::Scope5488 #outbound_projects5489 when no projects are added to the scope5490 returns the project defining the scope5491 when projects are added to the scope5492 returns all projects that can be accessed from a given scope5493 #inbound_projects5494 when no projects are added to the scope5495 returns the project defining the scope5496 when projects are added to the scope5497 returns all projects that can be accessed from a given scope5498 add!5499 adds the project5500 adds the project5501 with inbound only enabled5502 provides access5503 accessible?5504 with inbound and outbound scopes enabled5505 when inbound and outbound access setup5506 accessed_project: current_project, result: true5507 allows self and projects allowed from both directions5508 accessed_project: inbound_allowlist_project, result: false5509 allows self and projects allowed from both directions5510 accessed_project: unscoped_project1, result: false5511 allows self and projects allowed from both directions5512 accessed_project: unscoped_project2, result: false5513 allows self and projects allowed from both directions5514 accessed_project: outbound_allowlist_project, result: false5515 allows self and projects allowed from both directions5516 accessed_project: inbound_accessible_project, result: false5517 allows self and projects allowed from both directions5518 accessed_project: fully_accessible_project, result: true5519 allows self and projects allowed from both directions5520 with inbound scope enabled and outbound scope disabled5521 accessed_project: current_project, result: true5522 is expected to eq true5523 accessed_project: inbound_allowlist_project, result: false5524 is expected to eq false5525 accessed_project: unscoped_project1, result: false5526 is expected to eq false5527 accessed_project: unscoped_project2, result: false5528 is expected to eq false5529 accessed_project: outbound_allowlist_project, result: false5530 is expected to eq false5531 accessed_project: inbound_accessible_project, result: true5532 is expected to eq true5533 accessed_project: fully_accessible_project, result: true5534 is expected to eq true5535 with inbound scope disabled and outbound scope enabled5536 accessed_project: current_project, result: true5537 is expected to eq true5538 accessed_project: inbound_allowlist_project, result: false5539 is expected to eq false5540 accessed_project: unscoped_project1, result: false5541 is expected to eq false5542 accessed_project: unscoped_project2, result: false5543 is expected to eq false5544 accessed_project: outbound_allowlist_project, result: true5545 is expected to eq true5546 accessed_project: inbound_accessible_project, result: false5547 is expected to eq false5548 accessed_project: fully_accessible_project, result: true5549 is expected to eq true5550Gitlab::ImportExport::AfterExportStrategies::BaseAfterExportStrategy5551 #execute5552 returns if project exported file is not found5553 creates a lock file in the export dir5554 when the method succeeds5555 removes the lock file5556 removes the archive path5557 when the method fails5558 when validation fails5559 does not create the lock file5560 does not execute main logic5561 logs validation errors in shared context5562 removes the archive path5563 when an exception is raised5564 removes the lock5565 #log_validation_errors5566 add the message to the shared context5567 #to_json5568 adds the current strategy class to the serialized attributes5569RemoveExpiredGroupLinksWorker5570 #perform5571 ProjectGroupLinks5572 removes expired group links5573 leaves group links that expire in the future5574 leaves group links that do not expire at all5575 removes project authorization5576 GroupGroupLinks5577 expired GroupGroupLink exists5578 calls Groups::GroupLinks::DestroyService5579 with skip_group_share_unlink_auth_refresh feature flag disabled5580 removes project authorization5581 with skip_group_share_unlink_auth_refresh feature flag enabled5582 does not remove project authorization5583 expired GroupGroupLink does not exist5584 does not call Groups::GroupLinks::DestroyService5585MergeRequestsHelper5586 #format_mr_branch_names5587 within the same project5588 is expected to eq ["master", "feature"]5589 within different projects5590 is expected to eq ["group53/project1123:master", "namespace1078/project1122:feature"]5591 #merge_path_description5592 forked with arrow5593 is expected to eq "Project:Branches: group54/project1125:master → namespace1079/project1124:feature"5594 forked default5595 is expected to eq "Project:Branches: group55/project1127:master to namespace1080/project1126:feature"5596 with arrow5597 is expected to eq "Branches: master → feature"5598 default5599 is expected to eq "Branches: master to feature"5600 #tab_link_for5601 supports the :force_link option5602 removes the data-toggle attributes5603 #user_merge_requests_counts5604 returns assigned, review requested and total merge request counts5605 #reviewers_label5606 when multiple reviewers exist5607 returns reviewer label with reviewer names5608 returns reviewer label only with include_value: false5609 when the name contains a URL5610 returns sanitized name5611 when one reviewer exists5612 returns reviewer label with no names5613 returns reviewer label only with include_value: false5614 when no reviewers exist5615 returns reviewer label with no names5616 returns reviewer label only with include_value: false5617AwardEmojis::AddService5618 #execute5619 when user is not authorized5620 does not add an emoji5621 returns an error state5622 when user is authorized5623 creates an award emoji5624 returns the award emoji5625 return a success status5626 sets the correct properties on the award emoji5627 marking Todos as done5628 type: :issue, expectation: true5629 is expected to eq true5630 type: :merge_request, expectation: true5631 is expected to eq true5632 type: :project_snippet, expectation: false5633 is expected to eq false5634 for notes5635 regular Notes5636 marks the Todo as done5637 PersonalSnippet Notes5638 does not mark the Todo as done5639 when the awardable cannot have emoji awarded to it5640 does not add an emoji5641 returns an error status5642 when the awardable is invalid5643 does not add an emoji5644 returns an error status5645 returns an error message5646Ci::CreatePipelineService#execute5647 with resource group5648 creates bridge job with resource group5649 when sidekiq processes the job5650 transitions to pending status and triggers a downstream pipeline5651 when the resource is occupied by the other bridge5652 stays waiting for resource5653BulkImports::Clients::HTTP5654 #get5655 performs network request5656 error handling5657 when error occurred5658 raises BulkImports::NetworkError5659 when response is not success5660 raises BulkImports::NetworkError5661 #each_page5662 with a block5663 yields every retrieved page to the supplied block5664 without a block5665 returns an Enumerator5666 when the request is asynchronous5667 sets a timeout that is double the default read timeout5668 #post5669 performs network request5670 error handling5671 when error occurred5672 raises BulkImports::NetworkError5673 when response is not success5674 raises BulkImports::NetworkError5675 #head5676 performs network request5677 error handling5678 when error occurred5679 raises BulkImports::NetworkError5680 when response is not success5681 raises BulkImports::NetworkError5682 #stream5683 performs network request with stream_body option5684 #instance_version5685 returns version as an instance of Gitlab::VersionInfo5686 when /version endpoint is not available5687 requests /metadata endpoint5688 when /metadata endpoint returns a 4015689 raises a BulkImports:Error5690 when /metadata endpoint returns a 4035691 raises a BulkImports:Error5692 when /metadata endpoint returns a 4045693 raises a BulkImports:Error5694 when /metadata endpoint returns any other BulkImports::NetworkError5695 raises a BulkImports:NetworkError5696 #validate_instance_version!5697 when instance version is greater than or equal to the minimum major version5698 is expected to eq true5699 when instance version is less than the minimum major version5700 is expected to raise BulkImports::Error5701 #validate_import_scopes!5702 when the source_version is < 15.55703 skips validation5704 when source version is 15.5 or higher5705 when an HTTP error is raised5706 raises BulkImports::NetworkError5707 when scopes are valid5708 returns true5709 when scopes are invalid5710 raises a BulkImports error5711 #instance_enterprise5712 returns source instance enterprise information5713 when enterprise information is missing5714 defaults to true5715 #compatible_for_project_migration?5716 when instance version is lower the the expected minimum5717 returns false5718 when instance version is at least the expected minimum5719 returns true5720 when url is relative5721 performs network request to a relative gitlab url5722QuickActions::TargetService5723 #execute5724 for issue5725 behaves like find target5726 returns the target5727 behaves like build target5728 builds a new target5729 behaves like build target5730 builds a new target5731 for work item5732 behaves like find target5733 returns the target5734 for merge request5735 behaves like find target5736 returns the target5737 behaves like build target5738 builds a new target5739 behaves like build target5740 builds a new target5741 for commit5742 behaves like find target5743 returns the target5744 behaves like no target5745 returns nil5746 with nil target_iid5747 behaves like find target5748 returns the target5749 for unknown type5750 behaves like no target5751 returns nil5752Gitlab::Ci::Charts5753 yearchart5754 goes until the end of the current month (including the whole last day of the month)5755 starts at the beginning of the current year5756 uses %B %Y as labels format5757 returns count of pipelines run each day in the current year5758 monthchart5759 includes the whole current day5760 starts one month ago5761 uses %d %B as labels format5762 returns count of pipelines run each day in the current month5763 weekchart5764 includes the whole current day5765 starts one week ago5766 uses %d %B as labels format5767 returns count of pipelines run each day in the current week5768 weekchart_utc5769 uses a utc time zone for range times5770 returns count of pipelines run each day in the current week5771 weekchart_non_utc5772 uses a non-utc time zone for range times5773 returns count of pipelines run each day in the current week5774 pipeline_times5775 returns pipeline times in minutes5776 handles nil pipeline times5777Gitlab::Ci::Config::Entry::Environment5778 when configuration is a string5779 #string?5780 is string configuration5781 #hash?5782 is not hash configuration5783 #valid?5784 is valid5785 #value5786 returns valid hash5787 #name5788 returns environment name5789 #url5790 returns environment url5791 when configuration is a hash5792 #string?5793 is not string configuration5794 #hash?5795 is hash configuration5796 #valid?5797 is valid5798 #value5799 returns valid hash5800 #name5801 returns environment name5802 #url5803 returns environment url5804 when valid action is used5805 action: "start"5806 is valid5807 action: "stop"5808 is valid5809 action: "prepare"5810 is valid5811 action: "verify"5812 is valid5813 action: "access"5814 is valid5815 when wrong action type is used5816 #valid?5817 is not valid5818 #errors5819 contains error about wrong action type5820 when invalid action is used5821 #valid?5822 is not valid5823 #errors5824 contains error about invalid action5825 when on_stop is used5826 is valid5827 when invalid on_stop is used5828 #valid?5829 is not valid5830 #errors5831 contains error about invalid action5832 when wrong url type is used5833 #valid?5834 is not valid5835 #errors5836 contains error about wrong url type5837 when variables are used for environment5838 #valid?5839 is valid5840 when auto_stop_in is specified5841 when auto_stop_in is correct format5842 becomes valid5843 when variables are used for auto_stop_in5844 becomes valid5845 when configuration is invalid5846 when configuration is an array5847 #valid?5848 is not valid5849 #errors5850 contains error about invalid type5851 when environment name is not present5852 #valid?5853 is not valid5854 #errors?5855 contains error about missing environment name5856 kubernetes5857 is a string5858 is expected not to be valid5859 is a hash5860 is expected to be valid5861 is nil5862 is expected to be valid5863 deployment_tier5864 is a string5865 is expected to be valid5866 is a hash5867 is expected not to be valid5868 is nil5869 is expected to be valid5870 is unknown value5871 is invalid and adds an error5872VersionCheckHelper5873 #show_version_check?5874 return conditions5875 enabled: false, consent: false, is_admin: false, result: false5876 returns correct results5877 enabled: false, consent: false, is_admin: true, result: false5878 returns correct results5879 enabled: false, consent: true, is_admin: false, result: false5880 returns correct results5881 enabled: false, consent: true, is_admin: true, result: false5882 returns correct results5883 enabled: true, consent: false, is_admin: false, result: false5884 returns correct results5885 enabled: true, consent: false, is_admin: true, result: true5886 returns correct results5887 enabled: true, consent: true, is_admin: false, result: false5888 returns correct results5889 enabled: true, consent: true, is_admin: true, result: false5890 returns correct results5891 #gitlab_version_check5892 returns an instance of the VersionCheck class5893 #show_security_patch_upgrade_alert?5894 return conditions5895 show_version_check: false, gitlab_version_check: nil, result: false5896 returns correct results5897 show_version_check: false, gitlab_version_check: {"severity"=>"success"}, result: false5898 returns correct results5899 show_version_check: false, gitlab_version_check: {"severity"=>"danger"}, result: false5900 returns correct results5901 show_version_check: false, gitlab_version_check: {"severity"=>"danger", "critical_vulnerability"=>"some text"}, result: false5902 returns correct results5903 show_version_check: false, gitlab_version_check: {"severity"=>"danger", "critical_vulnerability"=>"false"}, result: false5904 returns correct results5905 show_version_check: false, gitlab_version_check: {"severity"=>"danger", "critical_vulnerability"=>false}, result: false5906 returns correct results5907 show_version_check: false, gitlab_version_check: {"severity"=>"danger", "critical_vulnerability"=>"true"}, result: false5908 returns correct results5909 show_version_check: false, gitlab_version_check: {"severity"=>"danger", "critical_vulnerability"=>true}, result: false5910 returns correct results5911 show_version_check: true, gitlab_version_check: nil, result: false5912 returns correct results5913 show_version_check: true, gitlab_version_check: {"severity"=>"success"}, result: nil5914 returns correct results5915 show_version_check: true, gitlab_version_check: {"severity"=>"danger"}, result: nil5916 returns correct results5917 show_version_check: true, gitlab_version_check: {"severity"=>"danger", "critical_vulnerability"=>"some text"}, result: nil5918 returns correct results5919 show_version_check: true, gitlab_version_check: {"severity"=>"danger", "critical_vulnerability"=>"false"}, result: false5920 returns correct results5921 show_version_check: true, gitlab_version_check: {"severity"=>"danger", "critical_vulnerability"=>false}, result: false5922 returns correct results5923 show_version_check: true, gitlab_version_check: {"severity"=>"danger", "critical_vulnerability"=>"true"}, result: true5924 returns correct results5925 show_version_check: true, gitlab_version_check: {"severity"=>"danger", "critical_vulnerability"=>true}, result: true5926 returns correct results5927Gitlab::Ci::Build::Context::Global5928 #variables5929 is expected to be an instance of Gitlab::Ci::Variables::Collection5930 behaves like variables collection5931 is expected to include {"CI_COMMIT_REF_NAME" => "master"}5932 is expected to include {"CI_PIPELINE_IID" => "1"}5933 is expected to include {"CI_PROJECT_PATH" => "namespace1135/project1176"}5934 is expected not to have key "CI_JOB_NAME"5935 is expected not to have key "CI_BUILD_REF_NAME"5936 with passed yaml variables5937 is expected to include {"SUPPORTED" => "parsed"}5938 #variables_hash5939 is expected to be an instance of ActiveSupport::HashWithIndifferentAccess5940 behaves like variables collection5941 is expected to include {"CI_COMMIT_REF_NAME" => "master"}5942 is expected to include {"CI_PIPELINE_IID" => "1"}5943 is expected to include {"CI_PROJECT_PATH" => "namespace1142/project1183"}5944 is expected not to have key "CI_JOB_NAME"5945 is expected not to have key "CI_BUILD_REF_NAME"5946 with passed yaml variables5947 is expected to include {"SUPPORTED" => "parsed"}5948notify/import_work_items_csv_email.html.haml5949 # order random5950 when work item type column contains blank entries5951 renders with missing work item message5952 behaves like contains project link5953 is expected to have visible link "Sidney Jones1796 / project1187" with href "http://test.host/namespace1146/project1187"5954 behaves like no records created5955 is expected not to have text "work items successfully imported."5956 behaves like does not contain parse error5957 is expected not to have text "Error parsing CSV file. Please make sure it has the correct format"5958 when CSV contains multiple kinds of work item type errors5959 renders with missing work item message5960 behaves like contains project link5961 is expected to have visible link "Sidney Jones1796 / project1187" with href "http://test.host/namespace1146/project1187"5962 behaves like no records created5963 is expected not to have text "work items successfully imported."5964 behaves like does not contain parse error5965 is expected not to have text "Error parsing CSV file. Please make sure it has the correct format"5966 when import errors reported5967 renders correctly5968 behaves like contains project link5969 is expected to have visible link "Sidney Jones1796 / project1187" with href "http://test.host/namespace1146/project1187"5970 behaves like work item records created5971 is expected to have text "work items successfully imported."5972 behaves like does not contain parse error5973 is expected not to have text "Error parsing CSV file. Please make sure it has the correct format"5974 when parse error reported while importing5975 behaves like contains project link5976 is expected to have visible link "Sidney Jones1796 / project1187" with href "http://test.host/namespace1146/project1187"5977 behaves like no records created5978 is expected not to have text "work items successfully imported."5979 behaves like contains parse error5980 is expected to have text "Error parsing CSV file. Please make sure it has the correct format"5981 when work item type column contains disallowed entries5982 renders with missing work item message5983 behaves like contains project link5984 is expected to have visible link "Sidney Jones1796 / project1187" with href "http://test.host/namespace1146/project1187"5985 behaves like no records created5986 is expected not to have text "work items successfully imported."5987 behaves like does not contain parse error5988 is expected not to have text "Error parsing CSV file. Please make sure it has the correct format"5989 when work item type column contains missing entries5990 renders with missing work item message5991 behaves like contains project link5992 is expected to have visible link "Sidney Jones1796 / project1187" with href "http://test.host/namespace1146/project1187"5993 behaves like no records created5994 is expected not to have text "work items successfully imported."5995 behaves like does not contain parse error5996 is expected not to have text "Error parsing CSV file. Please make sure it has the correct format"5997 when no errors found while importing5998 renders correctly5999 behaves like contains project link6000 is expected to have visible link "Sidney Jones1796 / project1187" with href "http://test.host/namespace1146/project1187"6001 behaves like work item records created6002 is expected to have text "work items successfully imported."6003 behaves like does not contain parse error6004 is expected not to have text "Error parsing CSV file. Please make sure it has the correct format"6005Ci::JobArtifacts::ExpireProjectBuildArtifactsService6006 #execute6007 with job containing erasable artifacts6008 unlocks erasable job artifacts6009 expires erasable job artifacts6010 with job containing trace artifacts6011 does not unlock trace artifacts6012 does not expire trace artifacts6013 with job from artifact locked pipeline6014 does not unlock locked artifacts6015 does not expire locked artifacts6016 with job containing both erasable and trace artifacts6017 unlocks erasable artifacts6018 expires erasable artifacts6019 does not unlock trace artifacts6020 does not expire trace artifacts6021 with multiple pipelines6022 unlocks artifacts across pipelines6023 expires artifacts across pipelines6024 with artifacts belonging to another project6025 does not unlock erasable artifacts in other projects6026 does not expire erasable artifacts in other projects6027ContainerRegistry::Migration6028 .enabled?6029 is expected to eq true6030 feature flag disabled6031 is expected to eq false6032 .limit_gitlab_org?6033 is expected to eq true6034 feature flag disabled6035 is expected to eq false6036 .enqueue_waiting_time6037 slow_enabled: false, fast_enabled: false, expected_result: 45 minutes6038 is expected to eq 45 minutes6039 slow_enabled: true, fast_enabled: false, expected_result: 165 minutes6040 is expected to eq 165 minutes6041 slow_enabled: false, fast_enabled: true, expected_result: 06042 is expected to eq 06043 slow_enabled: true, fast_enabled: true, expected_result: 06044 is expected to eq 06045 .capacity6046 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: 06047 is expected to eq 06048 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: 16049 is expected to eq 16050 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: 26051 is expected to eq 26052 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: 26053 is expected to eq 26054 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: 56055 is expected to eq 56056 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: 56057 is expected to eq 56058 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: 106059 is expected to eq 106060 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: 106061 is expected to eq 106062 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: 256063 is expected to eq 256064 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: 256065 is expected to eq 256066 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: 406067 is expected to eq 406068 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: 406069 is expected to eq 406070 .max_tags_count6071 returns the matching application_setting6072 .max_retries6073 returns the matching application_setting6074 .start_max_retries6075 returns the matching application_setting6076 .max_step_duration6077 returns the matching application_setting6078 .target_plan_name6079 returns the matching application_setting6080 .created_before6081 returns the matching application_setting6082 .pre_import_timeout6083 returns the matching application_setting6084 .import_timeout6085 returns the matching application_setting6086 .pre_import_tags_rate6087 returns the matching application_setting6088 .target_plans6089 target_plan: "free", result: ["free", "early_adopter", nil]6090 is expected to eq ["free", "early_adopter", nil]6091 target_plan: "premium", result: ["premium", "bronze", "silver", "premium_trial"]6092 is expected to eq ["premium", "bronze", "silver", "premium_trial"]6093 target_plan: "ultimate", result: ["ultimate", "gold", "ultimate_trial"]6094 is expected to eq ["ultimate", "gold", "ultimate_trial"]6095 .all_plans?6096 is expected to eq true6097 feature flag disabled6098 is expected to eq false6099 .delete_container_repository_worker_support?6100 is expected to eq true6101 feature flag disabled6102 is expected to eq false6103 .dynamic_pre_import_timeout_for6104 returns the expected seconds6105gitlab:incoming_email:secret rake tasks6106 # order random6107 :show6108 displays error when file does not exist6109 displays error when key does not exist6110 displays error when key is changed6111 outputs the unencrypted content when present6112 write6113 creates encrypted file from stdin6114 displays error when key does not exist6115 displays error when write directory does not exist6116somevalue shows a warning when content is invalid6117 edit6118# password: '123'6119# user: 'gitlab-incoming@gmail.com'6120 creates encrypted file6121 displays error when key does not exist6122 displays error when key is changed6123 displays error when write directory does not exist6124somevalue shows a warning when content is invalid6125 displays error when $EDITOR is not set6126BulkImports::FileDownloadService6127 #execute6128 downloads file6129 when content-type is application/gzip6130 downloads file6131 when url is not valid6132 raises an error6133 when content-type is not valid6134 raises an error6135 when content-length is not valid6136 when content-length exceeds limit6137 raises an error6138 when content-length is missing6139 raises an error6140 when content-length is equals the file size limit6141 does not raise an error6142 when partially downloaded file exceeds limit6143 raises an error6144 when chunk code is not 2006145 raises an error6146 when chunk code is redirection6147 does not write a redirection chunk6148 when redirection chunk appears at a later stage of the download6149 raises an error6150 remote content validation6151 on redirect chunk6152 does not run content type & length validations6153 when there is one data chunk6154 validates content type & length6155 when there are multiple data chunks6156 validates content type & length only once6157 when file is a symlink6158 raises an error and removes the file6159 when dir is not in tmpdir6160 raises an error6161 when dir path is being traversed6162 raises an error6163 when using the remote filename6164 when no filename is given6165 raises an error when the filename is not provided in the request header6166 with a given filename6167 uses the given filename6168 when the filename is a path6169 raises an error when the filename is not provided in the request header6170 when the filename is longer the the limit6171 raises an error when the filename is not provided in the request header6172Sbom::PackageUrl::Encoder6173 # order random6174 #encode6175 valid maven purl6176 is expected to eq "pkg:maven/org.apache.commons/io@1.3.4"6177 basic valid maven purl without version6178 is expected to eq "pkg:maven/org.apache.commons/io"6179 valid go purl without version and with subpath6180 is expected to eq "pkg:golang/google.golang.org/genproto#googleapis/api/annotations"6181 valid go purl with version and subpath6182 is expected to eq "pkg:golang/google.golang.org/genproto@abcdedf#googleapis/api/annotations"6183 bitbucket namespace and name should be lowercased6184 is expected to eq "pkg:bitbucket/birkenfeld/pygments-main@244fd47e07d1014f0aed9c"6185 github namespace and name should be lowercased6186 is expected to eq "pkg:github/package-url/purl-spec@244fd47e07d1004f0aed9c"6187 debian can use qualifiers6188 is expected to eq "pkg:deb/debian/curl@7.50.3-1?arch=i386&distro=jessie"6189 docker uses qualifiers and hash image id as versions6190 is expected to eq "pkg:docker/customer/dockerimage@sha256%3A244fd47e07d1004f0aed9c?repository_url=gcr.io"6191 Java gem can use a qualifier6192 is expected to eq "pkg:gem/jruby-launcher@1.1.2?platform=java"6193 maven often uses qualifiers6194 is expected to eq "pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?classifier=sources&repository_url=repo.spring.io%2Frelease"6195 maven pom reference6196 is expected to eq "pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?extension=pom&repository_url=repo.spring.io%2Frelease"6197 maven can come with a type qualifier6198 is expected to eq "pkg:maven/net.sf.jacob-project/jacob@1.14.3?classifier=x86&type=dll"6199 npm can be scoped6200 is expected to eq "pkg:npm/%40angular/animation@12.3.1"6201 nuget names are case sensitive6202 is expected to eq "pkg:nuget/EnterpriseLibrary.Common@6.0.1304"6203 pypi names have special rules and not case sensitive6204 is expected to eq "pkg:pypi/django-package@1.11.1.dev1"6205 rpm often use qualifiers6206 is expected to eq "pkg:rpm/fedora/curl@7.50.3-1.fc25?arch=i386&distro=fedora-25"6207 slash / after scheme is not significant6208 is expected to eq "pkg:maven/org.apache.commons/io"6209 double slash // after scheme is not significant6210 is expected to eq "pkg:maven/org.apache.commons/io"6211 slash /// after type is not significant6212 is expected to eq "pkg:maven/org.apache.commons/io"6213 valid maven purl with case sensitive namespace and name6214 is expected to eq "pkg:maven/HTTPClient/HTTPClient@0.3-3"6215 valid maven purl containing a space in the version and qualifier6216 is expected to eq "pkg:maven/mygroup/myartifact@1.0.0+Final?mykey=my+value"6217 valid conan purl6218 is expected to eq "pkg:conan/cctz@2.3"6219 valid conan purl with namespace and qualifier channel6220 is expected to eq "pkg:conan/bincrafters/cctz@2.3?channel=stable"6221 valid conda purl with qualifiers6222 is expected to eq "pkg:conda/absl-py@0.4.1?build=py36h06a4308_0&channel=main&subdir=linux-64&type=tar.bz2"6223 valid cran purl6224 is expected to eq "pkg:cran/A3@0.9.1"6225 valid swift purl6226 is expected to eq "pkg:swift/github.com/Alamofire/Alamofire@5.4.3"6227 valid hackage purl6228 is expected to eq "pkg:hackage/AC-HalfInteger@1.2.1"6229WorkItems::Type6230 modules6231 is expected to includes the CacheMarkdownField module6232 associations6233 is expected to have many work_items6234 is expected to belong to namespace required: false6235 has many `widget_definitions`6236 has many `enabled_widget_definitions`6237 scopes6238 order_by_name_asc6239 is expected to match ["atype", "gtype", "Ztype"]6240 #destroy6241 does not delete type when there are related issues6242 when there are no work items of that type6243 deletes type but not unrelated issues6244 validation6245 is expected not to allow :icon_name to be ‹"ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss"›6246 name uniqueness6247 is expected to validate that :name is case-insensitively unique within the scope of :namespace_id6248 .default_by_type6249 returns default work item type by base type without calling importer6250 when default types are missing6251 creates types and restrictions and returns default work item type by base type6252 #default?6253 when namespace is nil6254 is expected to be truthy6255 when namespace is present6256 is expected to be falsey6257 #name6258 strips name6259 #supports_assignee?6260 is expected to be truthy6261 when the assignees widget is not supported6262 is expected to be falsey6263 #default_issue?6264 when work item type is default Issue6265 returns true6266 when work item type is not Issue6267 returns false6268Gitlab::EtagCaching::Middleware6269 .skip!6270 sets the skip header on the response6271 when ETag caching is not enabled for current route6272 does not add ETag headers6273 passes status code from app6274 does not set feature category attribute6275 when there is no ETag in store for given resource6276 generates ETag6277 when If-None-Match header was specified6278 tracks "etag_caching_key_not_found" event6279 when there is ETag in store for given resource6280 returns the correct headers6281 when the matching route requests that the ETag is skipped6282 returns the correct headers6283 when If-None-Match header matches ETag in store6284 does not call app6285 returns status code 3046286 sets correct headers6287 pushes expected information in to the context6288 returns empty body6289 tracks "etag_caching_cache_hit" event6290 behaves like sends a process_action.action_controller notification6291 sends the expected payload6292 publishes process_action.action_controller event to be picked up by lograge's subscriber6293 when polling is disabled6294 returns status code 4296295 behaves like sends a process_action.action_controller notification6296 sends the expected payload6297 publishes process_action.action_controller event to be picked up by lograge's subscriber6298 when If-None-Match header does not match ETag in store6299 calls app6300 tracks "etag_caching_resource_changed" event6301 when If-None-Match header is not specified6302 tracks "etag_caching_header_missing" event6303 when GitLab instance is using a relative URL6304 uses full path as cache key6305StuckMergeJobsWorker6306 perform6307 merge job identified as completed6308 updates merge request to merged when locked but has merge_commit_sha6309 updates merge request to opened when locked but has not been merged6310 logs updated stuck merge job ids6311 merge job not identified as completed6312 does not change merge request state when job is not completed yet6313Gitlab::Diff::HighlightCache6314 #decorate6315 does not calculate highlighting when reading from cache6316 assigns highlighted diff lines to the DiffFile6317 assigns highlighted diff lines which rich_text are HTML-safe6318 when diff_file is uncached due to default_max_patch_bytes change6319 manually writes highlighted lines to the cache6320 assigns highlighted diff lines to the DiffFile6321 #write_if_empty6322 updates memory usage metrics if Redis version >= 46323 does not update memory usage metrics if Redis version < 46324 behaves like caches missing entries6325 filters the key/value list of entries to be caches for each invocation6326 reads from cache once6327 refreshes TTL of the key on read6328 different diff_collections for the same diffable6329 writes an uncached files in the collection to the same redis hash6330 when cache initialized with MergeRequestDiffBatch6331 behaves like caches missing entries6332 filters the key/value list of entries to be caches for each invocation6333 reads from cache once6334 refreshes TTL of the key on read6335 #write_to_redis_hash6336 creates or updates a Redis hash6337 when diff contains unsupported characters6338 does not update the cache6339 #clear6340 clears cache6341 GZip usage6342 uses ActiveSupport::Gzip when reading from the cache6343 uses ActiveSupport::Gzip to compress data when writing to cache6344 metrics6345 observes :gitlab_redis_diff_caching_memory_usage_bytes6346 records hit ratio metrics6347 #key6348 returns cache key6349 when the `diff_line_syntax_highlighting` feature flag is disabled6350 returns the original version of the cache6351Mutations::Timelogs::Delete6352 #resolve6353 when the timelog id is not valid6354 raises Gitlab::Graphql::Errors::ResourceNotAvailable6355 when the current user is not the timelog's author, not a maintainer and not an admin6356 raises Gitlab::Graphql::Errors::ResourceNotAvailable6357 when the current user is the timelog's author6358 deletes the timelog6359 returns the deleted timelog6360 returns no errors6361 when the current user is not the timelog's author but a maintainer of the project6362 deletes the timelog6363 returns the deleted timelog6364 returns no errors6365 when the current user is not the timelog's author, not a maintainer but an admin6366 deletes the timelog6367 returns the deleted timelog6368 returns no errors6369BoardProjectRecentVisit6370 relationships6371 is expected to belong to user required: false6372 is expected to belong to project required: false6373 is expected to belong to board required: false6374 validations6375 is expected to validate that :user cannot be empty/falsy6376 is expected to validate that :project cannot be empty/falsy6377 is expected to validate that :board cannot be empty/falsy6378 behaves like boards recent visit6379 #visited6380 creates a visit if one does not exists6381 behaves like was visited previously6382 updates the timestamp6383 when we try to create a visit that is not unique6384 behaves like was visited previously6385 updates the timestamp6386 #latest6387 returns the most recent visited6388 returns last 3 visited boards6389Gitlab::JiraImport6390 .validate_project_settings!6391 without user param6392 behaves like jira configuration base checks6393 with configuration_check set to false6394 does not raise Jira integration error6395 when Jira integration was not setup6396 behaves like raise Jira import error6397 returns error6398 when Jira integration exists6399 when Jira connection is not valid6400 behaves like raise Jira import error6401 returns error6402 when jira connection is valid6403 does not return any error6404 with user param provided6405 when user has permission to run import6406 behaves like jira configuration base checks6407 with configuration_check set to false6408 does not raise Jira integration error6409 when Jira integration was not setup6410 behaves like raise Jira import error6411 returns error6412 when Jira integration exists6413 when Jira connection is not valid6414 behaves like raise Jira import error6415 returns error6416 when jira integration is configured6417 when issues feature is disabled6418 behaves like raise Jira import error6419 returns error6420 when everything is ok6421 does not return any error6422 when user does not have permissions to run the import6423 behaves like raise Jira import error6424 returns error6425 .already_imported_cache_key6426 returns cache key for already imported items6427 .jira_issues_next_page_cache_key6428 returns cache key for next issues6429 .get_issues_next_start_at6430 returns zero when not defined6431 returns negative value for next issues to be imported starting point6432 returns cached value for next issues to be imported starting point6433 .cache_users_mapping6434 stores the data correctly6435 .get_user_mapping6436 reads the data correctly6437 returns nil if value not found6438 .store_issues_next_started_at6439 stores nil value6440 stores positive value6441 stores negative value6442RepositoryArchiveCleanUpService6443 #execute (new archive locations)6444 removes outdated archives and directories in a new-style path6445 removes outdated archives and directories in a versioned path6446 does not remove directories when they contain outdated non-archives6447 does not remove in-date archives in a new-style path6448 #execute (legacy archive locations)6449 when the downloads directory does not exist6450 does not remove any archives6451 when the downloads directory exists6452 removes files older than 2 hours that matches valid archive extensions6453 with files older than 2 hours that does not matches valid archive extensions6454 behaves like invalid archive files6455 does not remove files and directory6456 with files older than 2 hours inside invalid directories6457 behaves like invalid archive files6458 does not remove files and directory6459 with files newer than 2 hours that matches valid archive extensions6460 behaves like invalid archive files6461 does not remove files and directory6462 with files newer than 2 hours that does not matches valid archive extensions6463 behaves like invalid archive files6464 does not remove files and directory6465 with files newer than 2 hours inside invalid directories6466 behaves like invalid archive files6467 does not remove files and directory6468Gitlab::Metrics::GlobalSearchSlis6469 # order random6470 #record_apdex6471 search_type: "basic", code_search: false, duration_target: 8.8126472 increments the global_search SLI as a success if the elapsed time is within the target6473 increments the global_search SLI as a failure if the elapsed time is not within the target6474 search_type: "basic", code_search: true, duration_target: 27.5386475 increments the global_search SLI as a success if the elapsed time is within the target6476 increments the global_search SLI as a failure if the elapsed time is not within the target6477 search_type: "advanced", code_search: false, duration_target: 2.4526478 increments the global_search SLI as a success if the elapsed time is within the target6479 increments the global_search SLI as a failure if the elapsed time is not within the target6480 search_type: "advanced", code_search: true, duration_target: 15.526481 increments the global_search SLI as a success if the elapsed time is within the target6482 increments the global_search SLI as a failure if the elapsed time is not within the target6483 #initialize_slis!6484 initializes Apdex SLIs for global_search6485 initializes ErrorRate SLIs for global_search6486 when initializeing for limited types6487 api: true, web: true6488 only initializes for the relevant endpoints6489 api: true, web: false6490 only initializes for the relevant endpoints6491 api: false, web: true6492 only initializes for the relevant endpoints6493 api: false, web: false6494 only initializes for the relevant endpoints6495 #record_error_rate6496 calls increment on the error rate SLI6497Banzai::ReferenceParser::LabelParser6498 #nodes_visible_to_user6499 when the link has a data-issue attribute6500 behaves like referenced feature visibility6501 when feature is disabled6502 does not create reference6503 when feature is enabled only for team members6504 does not create reference for non member6505 creates reference for member6506 when feature is enabled6507 creates reference6508 #referenced_by6509 when the link has a data-label attribute6510 using an existing label ID6511 returns an Array of labels6512 using a non-existing label ID6513 returns an empty Array6514Namespaces::UserNamespacePolicy6515 with no user6516 is expected to be banned6517 regular user6518 is expected to be disallowed :owner_access, :create_projects, :admin_namespace, :read_namespace, :read_statistics, :transfer_projects, :admin_package, :read_billing, and :edit_billing6519 owner6520 is expected to be allowed :owner_access, :create_projects, :admin_namespace, :read_namespace, :read_statistics, :transfer_projects, :admin_package, :read_billing, and :edit_billing6521 user who has exceeded project limit6522 is expected to be disallowed :create_projects6523 is expected to be disallowed :transfer_projects6524 bot user6525 is expected to be disallowed :create_projects6526 is expected to be disallowed :transfer_projects6527 admin6528 when admin mode is enabled6529 is expected to be allowed :owner_access, :create_projects, :admin_namespace, :read_namespace, :read_statistics, :transfer_projects, :admin_package, :read_billing, and :edit_billing6530 when admin mode is disabled6531 is expected to be disallowed :owner_access, :create_projects, :admin_namespace, :read_namespace, :read_statistics, :transfer_projects, :admin_package, :read_billing, and :edit_billing6532 create_jira_connect_subscription6533 admin6534 when admin mode enabled6535 is expected to be allowed :create_jira_connect_subscription6536 when admin mode disabled6537 is expected to be disallowed :create_jira_connect_subscription6538 owner6539 is expected to be allowed :create_jira_connect_subscription6540 other user6541 is expected to be disallowed :create_jira_connect_subscription6542 create projects6543 when user can create projects6544 is expected to be allowed :create_projects6545 when user cannot create projects6546 is expected to be disallowed :create_projects6547Gitlab::JiraImport::IssueSerializer6548 #execute6549 attributes setting6550 sets the basic attributes6551 creates a hash for valid issue6552 labels6553 creates all missing labels (on project level)6554 when there are no new labels6555 assigns the labels to the Issue hash6556 does not create new labels6557 author6558 when reporter maps to a valid GitLab user6559 sets the issue author to the mapped user6560 when reporter does not map to a valid Gitlab user6561 defaults the issue author to project creator6562 when reporter field is empty6563 defaults the issue author to project creator6564 when reporter field is missing accountId6565 defaults the issue author to project creator6566 assignee6567 when assignee maps to a valid GitLab user6568 sets the issue assignees to the mapped user6569 when assignee does not map to a valid GitLab user6570 leaves the assignee empty6571 when assginee field is empty6572 leaves the assignee empty6573 when assginee field is missing accountId6574 leaves the assignee empty6575 with jira server response6576 when assignee maps to a valid GitLab user6577 sets the issue assignees to the mapped user6578 with done status6579 maps the status to closed6580 without the iid6581 does not set the iid6582GroupMemberPresenter6583 #can_resend_invite?6584 when group_member is invited6585 and user can admin_group_member6586 is expected to eq true6587 and user cannot admin_group_member6588 is expected to eq false6589 when group_member is not invited6590 and user can admin_group_member6591 is expected to eq false6592 and user cannot admin_group_member6593 is expected to eq false6594 #last_owner?6595 when member is the last owner of the group6596 is expected to eq true6597 when member is not the last owner of the group6598 is expected to eq false6599 #can_update?6600 when user can update_group_member6601 is expected to eq true6602 when user cannot update_group_member6603 is expected to eq false6604 #can_remove?6605 when user can destroy_group_member6606 is expected to eq true6607 when user cannot destroy_group_member6608 is expected to eq false6609 #can_approve?6610 when group_member has request an invite6611 when user can update_group_member6612 is expected to eq true6613 when user cannot update_group_member6614 is expected to eq false6615 when group_member did not request an invite6616 when user can update_group_member6617 is expected to eq false6618 when user cannot update_group_member6619 is expected to eq false6620 behaves like #valid_level_roles6621 when no parent member is present6622 returns all permissible roles6623 when parent member is present6624 returns higher roles when a parent member is present6625JiraConnectInstallations::ProxyLifecycleEventService6626 # order random6627 .new6628 creates an internal duplicate of the installation and sets the instance_url6629 with unknown event6630 raises an error6631 .execute6632 creates an instance and calls execute6633 #execute6634 when installed event6635 behaves like sends the event hook6636 returns a ServiceResponse6637 sends an installed event to the instance6638 creates the JWT token with the event and installation6639 and the instance responds with an error6640 returns an error ServiceResponse6641 logs the error response6642 and the request raises an error6643 returns an error ServiceResponse6644 when uninstalled event6645 behaves like sends the event hook6646 returns a ServiceResponse6647 sends an installed event to the instance6648 creates the JWT token with the event and installation6649 and the instance responds with an error6650 returns an error ServiceResponse6651 logs the error response6652 and the request raises an error6653 returns an error ServiceResponse6654ErrorTracking::ListProjectsService6655 #execute6656 with authorized user6657 set model attributes to new values6658 uses new api_url and token6659 masked param token6660 with the current api host6661 uses database token6662 with a new api host6663 returns an error6664 resets the token6665 with invalid url6666 returns error6667 when list_sentry_projects returns projects6668 returns the projects6669 with unauthorized user6670 returns error6671 with error tracking disabled6672 ignores enabled flag6673 error_tracking_setting is nil6674 builds a new error_tracking_setting6675LimitedCapacity::Worker6676 required methods6677 is expected to raise NotImplementedError6678 is expected to raise NotImplementedError6679 is expected to raise NotImplementedError6680 Sidekiq options6681 does not retry failed jobs6682 does not deduplicate jobs6683 .perform_with_capacity6684 enqueues jobs6685 #perform6686 with capacity6687 calls perform_work6688 re-enqueues itself6689 reports prometheus metrics6690 updates the running set6691 with capacity and without work6692 does not re-enqueue itself6693 without capacity6694 does not call perform_work6695 does not re-enqueue itself6696 when perform_work fails6697 does not re-enqueue itself6698 removes itself from the running set6699 reports prometheus metrics6700 #remove_failed_jobs6701 removes failed jobs6702 #report_prometheus_metrics6703 reports number of running jobs6704Gitlab::Checks::PushFileCountCheck6705 #validate!6706 initial creation6707 allows creation6708 old: "single-file", new: "edit-file", valid: true, message: nil6709 verifies6710 old: "single-file", new: "multiple-files", valid: false, message: "The repository can contain at most 2 file(s)."6711 verifies6712 old: "single-file", new: "no-files", valid: false, message: "The repository must contain at least 1 file."6713 verifies6714 old: "edit-file", new: "rename-and-edit-file", valid: true, message: nil6715 verifies6716NewIssueWorker6717 #perform6718 when an issue not found6719 does not call Services6720 logs an error6721 when a user not found6722 does not call Services6723 logs an error6724 with a user6725 when the new issue author is blocked6726 behaves like a new issue where the current_user cannot trigger notifications6727 does not create a notification for the mentioned user6728 when the new issue author is a ghost6729 behaves like a new issue where the current_user cannot trigger notifications6730 does not create a notification for the mentioned user6731 when everything is ok6732 creates a new event record6733 creates a notification for the mentioned user6734 calls Issues::AfterCreateService6735 when a class is set6736 creates event with the correct type6737Packages::Npm::Metadatum6738 relationships6739 is expected to belong to package required: false inverse_of => npm_metadatum6740 validations6741 package6742 is expected to validate that :package cannot be empty/falsy6743 ensure npm package type6744 package_json6745 is expected to allow :package_json to be ‹{"name" => "foo", "version" => "v1.0", "dist" => {"tarball"=>"x", "shasum"=>"x"}}›6746 is expected to allow :package_json to be ‹{"name" => "foo", "version" => "v1.0", "dist" => {"tarball"=>"x", "shasum"=>"x"}, extra-field: {:foo=>"bar"}}›6747 is expected to allow :package_json to be ‹{"name" => "foo", "version" => "v1.0", "dist" => {"tarball"=>"x", "shasum"=>"x", :"extra-field"=>"x"}}›6748 is expected not to allow :package_json to be ‹{"version" => "v1.0", "dist" => {"tarball"=>"x", "shasum"=>"x"}}›6749 is expected not to allow :package_json to be ‹{"name" => "foo", "dist" => {"tarball"=>"x", "shasum"=>"x"}}›6750 is expected not to allow :package_json to be ‹{"name" => "foo", "version" => "v1.0"}›6751 is expected not to allow :package_json to be ‹{"name" => "foo", "version" => "v1.0", "dist" => {"shasum"=>"x"}}›6752 is expected not to allow :package_json to be ‹{"name" => "foo", "version" => "v1.0", "dist" => {"tarball"=>"x"}}›6753 is expected not to allow :package_json to be ‹{}›6754 is expected not to allow :package_json to be ‹{test: "testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest"}›6755Gitlab::BlamePresenter6756 precalculates necessary data on init6757 #groups6758 delegates #groups call to the blame6759 #first_line6760 delegates #first_line call to the blame6761 #commit_data6762 has the data necessary to render the view6763 renamed file6764 does not generate link to previous blame on initial commit6765 generates link link to previous blame6766Gitlab::Utils::Override6767 # order random6768 #override6769 when instance is klass.new(0)6770 when STATIC_VERIFICATION is set6771 when subject is a class6772 behaves like checking as intended6773 checks ok for overriding method6774 checks ok for overriding method using negative arity6775 raises NotImplementedError when it is not overriding anything6776 raises NotImplementedError when overriding a method with different arity6777 when subject is a module, and class is prepending it6778 behaves like checking as intended6779 checks ok for overriding method6780 checks ok for overriding method using negative arity6781 raises NotImplementedError when it is not overriding anything6782 raises NotImplementedError when overriding a method with different arity6783 when subject is a module, and class is including it6784 behaves like checking as intended, nothing was overridden6785 raises NotImplementedError because it is not overriding it6786 raises NotImplementedError when it is not overriding anything6787 when ActiveSupport::Concern and class_methods are used6788 when it is defining a overriding method6789 verifies6790 when it is not defining a overriding method6791 raises NotImplementedError6792 when STATIC_VERIFICATION is not set6793 when subject is a class6794 behaves like nothing happened6795 does not complain when it is overriding something6796 does not complain when it is not overriding anything6797 when subject is a module, and class is prepending it6798 behaves like nothing happened6799 does not complain when it is overriding something6800 does not complain when it is not overriding anything6801 when subject is a module, and class is including it6802 does not complain when it is overriding something6803 does not complain when it is not overriding anything6804 when instance is klass6805 when STATIC_VERIFICATION is set6806 when subject is a module, and class is prepending it6807 behaves like checking as intended6808 checks ok for overriding method6809 checks ok for overriding method using negative arity6810 raises NotImplementedError when it is not overriding anything6811 raises NotImplementedError when overriding a method with different arity6812 when subject is a module, and class is extending it6813 behaves like checking as intended, nothing was overridden6814 raises NotImplementedError because it is not overriding it6815 raises NotImplementedError when it is not overriding anything6816ResolvesPipelines6817 is expected to have graphql arguments :status, :scope, :ref, :sha, :source, :updated_after, :updated_before, and :username6818 finds all pipelines6819 allows filtering by status6820 allows filtering by scope6821 allows filtering by ref6822 allows filtering by sha6823 allows filtering by username6824 does not return any pipelines if the user does not have access6825 increases field complexity based on arguments6826 filtering by source6827 does filter by source6828 returns all the pipelines6829 filtering by updated_at6830 filters by updated_after6831 filters by updated_before6832 filters by both updated_after and updated_before with valid date range6833 filters by both updated_after and updated_before with invalid date range6834Packages::CleanupPackageRegistryWorker6835 #perform6836 with package files pending destruction6837 queues the cleanup job6838 behaves like an idempotent worker6839 is labeled as idempotent6840 performs multiple times sequentially without raising an exception6841 with no package files pending destruction6842 does not queue the cleanup job6843 behaves like an idempotent worker6844 is labeled as idempotent6845 performs multiple times sequentially without raising an exception6846 with runnable policies6847 queues the cleanup job6848 behaves like an idempotent worker6849 is labeled as idempotent6850 performs multiple times sequentially without raising an exception6851 with no runnable policies6852 does not queue the cleanup job6853 counts logging6854 logs all the counts6855 with load balancing enabled6856 reads the count from the replica6857EnvironmentsHelper6858 #metrics_data6859 returns data6860 without admin_operations permission6861 is expected to include {"can_access_operations_settings" => "false"}6862 with metrics_setting6863 adds external_dashboard_url6864 when the environment is not available6865 is expected to include {"environment_state" => "stopped"}6866 when request is from project scoped metrics path6867 /:namespace/:project/-/metrics6868 uses correct path for metrics_dashboard_base_path6869 /:namespace/:project/-/metrics/some_custom_dashboard.yml6870 uses correct path for metrics_dashboard_base_path6871 #custom_metrics_available?6872 returns true6873 #environment_logs_data6874 returns logs data6875 #environment_data6876 returns the environment as JSON6877Metrics::UsersStarredDashboard6878 associations6879 is expected to belong to project required: false inverse_of => metrics_users_starred_dashboards6880 is expected to belong to user required: false inverse_of => metrics_users_starred_dashboards6881 validation6882 is expected to validate that :user_id cannot be empty/falsy6883 is expected to validate that :project_id cannot be empty/falsy6884 is expected to validate that :dashboard_path cannot be empty/falsy6885 is expected to validate that the length of :dashboard_path is at most 2556886 is expected to validate that :dashboard_path is case-sensitively unique within the scope of :user_id and :project_id6887 scopes6888 #for_project6889 selects only starred dashboards belonging to project6890 #for_project_dashboard6891 selects only starred dashboards belonging to project with given dashboard path6892Ci::ExternalPullRequests::CreatePipelineWorker6893 #perform6894 creates the pipeline6895 when the project not found6896 behaves like not calling service6897 does not call the service6898 when the user not found6899 behaves like not calling service6900 does not call the service6901 when the pull request not found6902 behaves like not calling service6903 does not call the service6904 when the pull request does not belong to the project6905 behaves like not calling service6906 does not call the service6907Gitlab::Ci::Matching::RunnerMatcher6908 .new6909 when attributes are missing6910 is expected to raise KeyError6911 with attributes6912 is expected to eq [1]6913 is expected to eq "instance_type"6914 is expected to eq 06915 is expected to eq 16916 is expected to eq false6917 is expected to eq "ref_protected"6918 is expected to eq ["tag1", "tag2"]6919 #instance_type?6920 is expected to be truthy6921 context with private runners6922 is expected to be falsey6923 #matches?6924 with an instance of BuildMatcher6925 ref_protected: true, build_protected: true, run_untagged: true, runner_tags: [], build_tags: [], result: true6926 is expected to eq true6927 ref_protected: true, build_protected: false, run_untagged: true, runner_tags: [], build_tags: [], result: false6928 is expected to eq false6929 ref_protected: false, build_protected: true, run_untagged: true, runner_tags: [], build_tags: [], result: true6930 is expected to eq true6931 ref_protected: false, build_protected: false, run_untagged: true, runner_tags: [], build_tags: [], result: true6932 is expected to eq true6933 ref_protected: true, build_protected: true, run_untagged: true, runner_tags: [], build_tags: [], result: true6934 is expected to eq true6935 ref_protected: true, build_protected: true, run_untagged: true, runner_tags: [], build_tags: ["a"], result: false6936 is expected to eq false6937 ref_protected: true, build_protected: true, run_untagged: true, runner_tags: ["a", "b"], build_tags: ["a"], result: true6938 is expected to eq true6939 ref_protected: true, build_protected: true, run_untagged: true, runner_tags: ["a"], build_tags: ["a", "b"], result: false6940 is expected to eq false6941 ref_protected: true, build_protected: true, run_untagged: true, runner_tags: ["a"], build_tags: ["a"], result: true6942 is expected to eq true6943 ref_protected: true, build_protected: true, run_untagged: false, runner_tags: ["a"], build_tags: ["a"], result: true6944 is expected to eq true6945 ref_protected: true, build_protected: true, run_untagged: false, runner_tags: ["b"], build_tags: ["a"], result: false6946 is expected to eq false6947 ref_protected: true, build_protected: true, run_untagged: false, runner_tags: ["a", "b"], build_tags: ["a"], result: true6948 is expected to eq true6949 with an instance of Ci::Build6950 raises ArgumentError6951Gitlab::Auth::Result6952 when actor is User6953 returns auth_user6954 does not return deploy token6955 when actor is Deploy token6956 returns deploy token6957 does not return auth_user6958 #authentication_abilities_include?6959 when authentication abilities are empty6960 returns false6961 when authentication abilities are not empty6962 returns false when ability is not allowed6963 returns true when ability is allowed6964 #can_perform_action_on_project?6965 returns if actor can do perform given action on given project6966 returns if actor cannot do perform given action on given project6967 #can?6968 returns if actor can do perform given action on given project6969 returns if actor cannot do perform given action on given project6970ShaAttribute6971 .sha_attribute6972 defines a SHA attribute with Gitlab::Database::ShaAttribute type6973 .sha256_attribute6974 defines a SHA256 attribute with Gitlab::Database::ShaAttribute type6975 .load_schema!6976 column_name: binary_column, environment: "development", expected_error: :no_error6977 with sha_attribute6978 validates column type6979 with sha256_attribute6980 validates column type6981 column_name: binary_column, environment: "production", expected_error: :no_error6982 with sha_attribute6983 validates column type6984 with sha256_attribute6985 validates column type6986 column_name: text_column, environment: "development", expected_error: :sha_mismatch_error6987 with sha_attribute6988 validates column type6989 with sha256_attribute6990 validates column type6991 column_name: text_column, environment: "production", expected_error: :no_error6992 with sha_attribute6993 validates column type6994 with sha256_attribute6995 validates column type6996 column_name: :__non_existent_column, environment: "development", expected_error: :no_error6997 with sha_attribute6998 validates column type6999 with sha256_attribute7000 validates column type7001 column_name: :__non_existent_column, environment: "production", expected_error: :no_error7002 with sha_attribute7003 validates column type7004 with sha256_attribute7005 validates column type7006AlertManagement::Alerts::Todo::CreateService7007 #execute7008 when the user is anonymous7009 behaves like permissions error7010 returns an error7011 when the user does not have permission7012 behaves like permissions error7013 returns an error7014 when user has permission7015 creates a todo7016 returns the alert and todo in the payload7017 when the user has a marked todo for the alert7018 when todo is pending7019 does not create a todo7020 returns an error7021 when todo is done7022 is expected to equal true7023 is expected to change `Todo.count` by 17024Packages::Rpm::ParsePackageService7025 # order random7026 dynamic private methods7027 define dynamic build attribute method7028 define dynamic build attribute method7029 define dynamic build attribute method7030 #execute7031 when wrong format file received7032 raise error7033 when valid file uploaded7034 when .rpm file uploaded7035 behaves like valid package parsing7036 return hash7037 has all static attribute keys7038 includes epoch attribute7039 has all built attributes with array values7040 when .src.rpm file uploaded7041 behaves like valid package parsing7042 return hash7043 has all static attribute keys7044 includes epoch attribute7045 has all built attributes with array values7046WorkerContext7047 .worker_context7048 allows modifying the context for the entire worker7049 allows fetches the context from a superclass if none was defined7050 .bulk_perform_async_with_contexts7051 calls bulk_perform_async with the arguments7052 behaves like tracking bulk scheduling contexts7053 clears the contexts7054 context contents7055 keeps track of the context per key to schedule7056 does not share contexts across threads7057 .bulk_perform_in_with_contexts7058 calls bulk_perform_in with the arguments and delay7059 behaves like tracking bulk scheduling contexts7060 clears the contexts7061 context contents7062 keeps track of the context per key to schedule7063 does not share contexts across threads7064 #with_context7065 allows modifying context when the job is running7066 yields the arguments to the block7067Gitlab::FogbugzImport::Importer7068 imports bugs7069 imports opened bugs7070 imports closed bugs7071 verify url7072 when host is localhost7073 does not allow localhost requests7074 when host is on local network7075 does not allow localhost requests7076 when host is ftp protocol7077 only accept http and https requests7078Atlassian::JiraConnect::Serializers::BuildEntity7079 when the pipeline does not belong to any Jira issue7080 #issue_keys7081 is empty7082 #to_json7083 can encode the object7084 is invalid, since it has no issue keys7085 when the pipeline does belong to a Jira issue7086 because it belongs to an MR with a jira_branch7087 #issue_keys7088 is not empty7089 #to_json7090 is valid according to the build info schema7091 because it belongs to an MR with a jira_title7092 #issue_keys7093 is not empty7094 #to_json7095 is valid according to the build info schema7096 because it belongs to an MR with a jira_description7097 #issue_keys7098 is not empty7099 #to_json7100 is valid according to the build info schema7101 in the pipeline's commit messsage7102 #issue_keys7103 is expected to contain exactly "PROJ-1234"7104 #to_json7105 is expected to be valid json and match schema {"additionalProperties"=>false, "properties"=>{"buildNumber"=>{"type"=>"integer"}, "displayName"=>{"t...splayName", "url", "state", "issueKeys", "testInfo", "references", "lastUpdated"], "type"=>"object"}7106RuboCop::Cop::Migration::BatchMigrationsPostOnly7107 # order random7108 when methods appear in a regular migration7109 does not allow 'ensure_batched_background_migration_is_finished' to be called7110 does not allow 'queue_batched_background_migration' to be called7111 does not allow 'delete_batched_background_migration' to be called7112 does not allow 'ensure_batched_background_migration_is_finished' to be called7113 allows arbitrary other method to be called7114 when methods appear in a post-deployment migration7115 allows 'ensure_batched_background_migration_is_finished' to be called7116 allows 'queue_batched_background_migration' to be called7117 allows 'delete_batched_background_migration' to be called7118 allows 'ensure_batched_background_migration_is_finished' to be called7119 allows arbitrary other method to be called7120Gitlab::Audit::Type::Definition7121 # order random7122 .defined?7123 returns true if definition for the event name exists7124 returns false if definition for the event name exists7125 .event_names7126 returns names of event types as string array7127 .load_all!7128 when there are no audit event types a list of definitions is empty7129 when there's a single audit event type it properly loads them7130 when the same audit event type is stored multiple times raises exception7131 when one of the YAMLs is invalid it does raise exception7132 .get7133 when audit event type is not defined7134 returns nil7135 when audit event type is defined7136 returns an instance of Gitlab::Audit::Type::Definition7137 returns the properties as defined for that audit event type7138 .stream_only?7139 returns true for a stream only event7140 returns false for an event that is saved to database7141 .load_from_file7142 properly loads a definition from file7143 for missing file7144 raises exception7145 for invalid definition7146 raises exception7147 validate that all the YAML definitions matches the audit event type schema7148 successfully loads all the YAML definitions7149 .definitions7150 loads the definitions for all the audit event types7151 #key7152 returns a symbol from name7153 .paths7154 returns at least one path7155 #validate!7156 param: :path, value: "audit_event/types/invalid.yml", result: /Audit event type 'group_deploy_token_destroyed' has an invalid path/7157 is expected to raise /Audit event type 'group_deploy_token_destroyed' has an invalid path/7158 param: :name, value: nil, result: /property '\/name' is not of type: string/7159 is expected to raise /property '\/name' is not of type: string/7160 param: :description, value: nil, result: /property '\/description' is not of type: string/7161 is expected to raise /property '\/description' is not of type: string/7162 param: :introduced_by_issue, value: nil, result: /property '\/introduced_by_issue' is not of type: string/7163 is expected to raise /property '\/introduced_by_issue' is not of type: string/7164 param: :introduced_by_mr, value: nil, result: /property '\/introduced_by_mr' is not of type: string/7165 is expected to raise /property '\/introduced_by_mr' is not of type: string/7166 param: :feature_category, value: nil, result: /property '\/feature_category' is not of type: string/7167 is expected to raise /property '\/feature_category' is not of type: string/7168 param: :milestone, value: nil, result: /property '\/milestone' is not of type: string/7169 is expected to raise /property '\/milestone' is not of type: string/7170 when both saved_to_database and streamed are false7171 raises an exception7172Issuable::Callbacks::Milestone7173 # order random7174 #after_initialize7175 sets the issuable's milestone7176 when assigning a group milestone7177 sets the issuable's milestone7178 when assigning a group milestone outside the project ancestors7179 does not change the issuable's milestone7180 when user is not allowed to set issuable metadata7181 does not change the issuable's milestone7182 when unsetting a milestone7183 when milestone_id is nil7184 unsets the issuable's milestone7185 when milestone_id is an empty string7186 unsets the issuable's milestone7187 when milestone_id is 07188 unsets the issuable's milestone7189 when milestone_id is not given7190 does not unset the issuable's milestone7191 when new type does not support milestones7192 unsets the issuable's milestone7193API::Entities::WikiPage7194 returns the proper encoding for the wiki page content7195 returns the raw wiki page content7196 when render_html param is passed7197 when it is true7198 returns the wiki page content rendered7199 includes the wiki page version in the render context7200 when page is an Ascii document7201 renders the page without errors7202 when content contains a reference7203 expands the reference in the content7204 when it is false7205 returns the raw wiki page content7206Banzai::ReferenceParser::MentionedUserParser7207 #gather_references7208 when the link has a data-group attribute7209 using an existing group ID7210 returns empty list of users7211 when the link has a data-project attribute7212 using an existing project ID7213 returns empty list of users7214 when the link has a data-user attribute7215 returns an Array of users7216Gitlab::ImportExport::Base::ObjectBuilder7217 #build7218 when object exists7219 when where_clauses are implemented7220 finds existing object instead of creating one7221 when where_clauses are not implemented7222 raises NotImplementedError7223 when object does not exist7224 creates new object7225Mutations::IncidentManagement::TimelineEvent::PromoteFromNote7226 # order random7227 is expected to require graphql authorizations :admin_incident_management_timeline_event7228 #resolve7229 when a user has permissions to create timeline event7230 behaves like creating an incident timeline event7231 creates a timeline event7232 responds with a timeline event7233 when TimelineEvents::CreateService responds with an error7234 behaves like responding with an incident timeline errors7235 returns errors7236 when note does not exist7237 raises an error7238 when note does not belong to an incident7239 raises an error7240 when note belongs to anything else but issuable7241 raises an error7242 behaves like failing to create an incident timeline event7243 when a user has no permissions to create timeline event7244 raises an error7245Ci::UpdatePendingBuildService7246 #execute7247 validations7248 when model is invalid7249 raises an error7250 when params is invalid7251 raises an error7252 when model is a group with pending builds7253 updates all pending builds7254 when model is a project with pending builds7255 updates all pending builds7256RepositoryCleanupWorker7257 #perform7258 executes the cleanup service and sends a success notification7259 raises an error if the project cannot be found7260 raises an error if the user cannot be found7261 #sidekiq_retries_exhausted7262 does not send a failure notification for a RecordNotFound error7263 sends a failure notification7264 cleans up the attempt7265Gitlab::Ci::Pipeline::Chain::PopulateMetadata7266 # order random7267 with pipeline name7268 does not break the chain7269 builds pipeline_metadata7270 with empty name7271 strips whitespace from name7272 with empty name after variable substitution7273 does not save empty name7274 with variables7275 substitutes variables7276 with invalid name7277 returns error and breaks chain7278Gitlab::BackgroundMigration7279 .queue7280 returns background migration worker queue7281 .steal7282 when the queue contains unprocessed jobs7283 uses the coordinator to steal jobs7284 when a custom predicate is given7285 steals jobs that match the predicate7286 does not steal jobs that do not match the predicate7287 when retry_dead_jobs is true7288 steals from the dead and retry queue7289 .perform7290 uses the coordinator to perform a background migration7291 .exists?7292 uses the coordinator to find if a job exists7293 uses the coordinator to find a job does not exist7294 .remaining7295 uses the coordinator to find the number of remaining jobs7296Gitlab::DiscussionsDiff::HighlightCache7297 #write_multiple7298 sets multiple keys serializing content as JSON7299 #read_multiple7300 reads multiple keys and serializes content into Gitlab::Diff::Line objects7301 returns nil when cached key is not found7302 returns lines which rich_text are HTML-safe7303 #clear_multiple7304 removes all named keys7305 only removed named keys7306Mutations::AlertManagement::PrometheusIntegration::Create7307 is expected to require graphql authorizations :admin_project7308 #resolve7309 user has access to project7310 when Prometheus Integration already exists7311 returns errors7312 when UpdateService responds with success7313 returns the integration with no errors7314 creates a corresponding token7315 when UpdateService responds with an error7316 returns errors7317 when resource is not accessible to the user7318 raises an error if the resource is not accessible to the user7319Gitlab::Ci::Pipeline::Chain::SeedBlock7320 #perform!7321 when there is not seeds_block7322 does nothing7323 when there is seeds_block7324 executes the block7325 when the seeds_block tries to save the pipelie7326 raises error7327BulkImports::PipelineWorker7328 behaves like successfully runs the pipeline7329 runs the given pipeline successfully7330 when exclusive lease cannot be obtained7331 does not run the pipeline7332 when the pipeline raises an exception7333 logs the error7334 when enqueued pipeline cannot be found7335 when pipeline is finished7336 logs the error7337 when pipeline is skipped7338 logs the error7339 when tracker is started7340 marks tracker as failed7341 when entity is failed7342 marks tracker as skipped and logs the skip7343 when retry pipeline error is raised7344 reenqueues the worker7345 when file extraction pipeline7346 runs the pipeline successfully7347 when export status is started7348 reenqueues pipeline worker7349 when export status is empty7350 when timeout is not reached7351 reenqueues pipeline worker7352 when empty export timeout is reached7353 marks as failed and logs the error7354 when tracker created_at is nil7355 falls back to entity created_at7356 when job reaches timeout7357 marks as failed and logs the error7358 when export status is failed7359 marks as failed and logs the error7360MergeRequests::ExecuteApprovalHooksWorker7361 calls MergeRequests::ExecuteApprovalHooksService7362 behaves like subscribes to event7363 consumes the published event7364 behaves like an idempotent worker7365 is labeled as idempotent7366 performs multiple times sequentially without raising an exception7367 when the user does not exist7368 behaves like when object does not exist7369 logs and does not call MergeRequests::ExecuteApprovalHooksService7370 when the merge request does not exist7371 behaves like when object does not exist7372 logs and does not call MergeRequests::ExecuteApprovalHooksService7373Projects::CreateFromTemplateService7374 calls the importer service7375 returns the project that is created7376 when template is not present7377 does not set import set import type7378 does not set import set import source7379 is not scheduled7380 repository is empty7381 the result project7382 overrides template description7383 overrides template visibility_level7384Gitlab::SidekiqLogging::StructuredLogger7385 #call7386 with SIDEKIQ_LOG_ARGUMENTS enabled7387 logs start and end of job7388 logs real job wrapped by active job worker7389 logs an exception in job7390 logs the normalized SQL query for statement timeouts7391 logs the root cause of an Sidekiq::JobRetry::Skip exception in the job7392 logs the root cause of an Sidekiq::JobRetry::Handled exception in the job7393 keeps Sidekiq::JobRetry::Handled exception if the cause does not exist7394 does not modify the job7395 does not modify the wrapped job7396 with SIDEKIQ_LOG_ARGUMENTS disabled7397 logs start and end of job without args7398 logs without created_at and enqueued_at fields7399 with latency7400 logs with scheduling latency7401 with enqueue latency7402 logs with scheduling latency7403 with Gitaly, Rugged, and Redis calls7404 logs with Gitaly and Rugged timing data7405 when the job performs database queries7406 when load balancing is enabled7407 logs the database time7408 prevents database time from leaking to the next job7409 when the job uses load balancing capabilities7410 logs the database chosen7411 when there is extra metadata set for the done log7412 logs it in the done log7413 when instrumentation data is not loaded7414 does not raise exception7415 when the job payload is compressed7416 logs it in the done log7417 #add_time_keys!7418 update payload correctly7419Metrics::Dashboard::PanelPreviewService7420 #execute7421 valid panel's yaml7422 returns success service response7423 returns processed panel7424 uses dashboard processor7425 invalid panel's yaml7426 returns error service response7427 returns error message7428 returns error service response7429 returns error message7430 returns error service response7431 returns error message7432 returns error service response7433 returns error message7434Gitlab::IncomingEmail7435 behaves like common email methods7436 behaves like enabled? method for email7437 value: false, address: nil, result: false7438 is expected to eq false7439 value: false, address: "replies+%{key}@example.com", result: false7440 is expected to eq false7441 value: true, address: nil, result: false7442 is expected to eq false7443 value: true, address: "replies+%{key}@example.com", result: true7444 is expected to eq true7445 behaves like supports_wildcard? method for email7446 when address contains the wildcard placeholder7447 confirms that wildcard is supported7448 when address doesn't contain the wildcard placeholder7449 returns that wildcard is not supported7450 when address is nil7451 returns that wildcard is not supported7452 behaves like key_from_fallback_message_id method for email7453 returns reply key7454 behaves like supports_issue_creation? method for email7455 enabled_value: false, supports_wildcard_value: false, result: false7456 is expected to eq false7457 enabled_value: false, supports_wildcard_value: true, result: false7458 is expected to eq false7459 enabled_value: true, supports_wildcard_value: false, result: false7460 is expected to eq false7461 enabled_value: true, supports_wildcard_value: true, result: true7462 is expected to eq true7463 behaves like reply_address method for email7464 returns the address with an interpolated reply key7465 behaves like unsubscribe_address method for email7466 returns the address with interpolated reply key and unsubscribe suffix7467 behaves like scan_fallback_references method for email7468 returns reply key7469 self.key_from_address7470 returns reply key7471 does not match emails with extra bits7472 when a custom wildcard address is used7473 finds key if email matches address pattern7474Gitlab::X509::Tag7475 #signature7476 signed tag7477 is expected not to be nil7478 is expected to eq :unverified7479 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"}7480 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"}7481 unsigned tag7482 is expected to be nil7483SystemNotes::AlertManagementService7484 #create_new_alert7485 has the appropriate message7486 behaves like a system note7487 has the correct attributes7488 #change_alert_status7489 with no specified reason7490 has the appropriate message7491 behaves like a system note7492 has the correct attributes7493 with reason provided7494 has the appropriate message7495 #new_alert_issue7496 has the appropriate message7497 behaves like a system note7498 has the correct attributes7499 #log_resolving_alert7500 has the appropriate message7501 behaves like a system note7502 has the correct attributes7503Issue::Email7504 Associations7505 is expected to belong to issue required: false7506 Validations7507 is expected to validate that :issue cannot be empty/falsy7508 is expected to validate that :issue is case-sensitively unique7509 is expected to validate that :email_message_id is case-sensitively unique7510 is expected to validate that the length of :email_message_id is at most 10007511 is expected to validate that :email_message_id cannot be empty/falsy7512Users::NamespaceCommitEmail7513 # order random7514 is expected to be valid7515 validations7516 is expected to validate that :user cannot be empty/falsy7517 is expected to validate that :namespace cannot be empty/falsy7518 is expected to validate that :email cannot be empty/falsy7519 is expected to validate that :user is case-sensitively unique within the scope of :namespace_id7520 validate_root_group7521 when root group7522 is expected to be valid7523 when subgroup7524 is invalid and reports the relevant error7525 associations7526 is expected to belong to user required: false7527 is expected to belong to namespace required: false7528 is expected to belong to email required: false7529 .delete_for_namespace7530 deletes all records for namespace7531ErrorTrackingIssueLinkWorker7532 #perform7533 creates a link between an issue and a Sentry issue in Sentry7534 when issue is unavailable7535 behaves like makes no external API requests7536 takes no action7537 when project does not have error tracking configured7538 behaves like makes no external API requests7539 takes no action7540 when the issue is not linked to a Sentry issue in GitLab7541 behaves like makes no external API requests7542 takes no action7543 when Sentry disabled the GitLab integration7544 behaves like attempts to create a link via plugin7545 takes no action7546 when Sentry the GitLab integration is for another project7547 behaves like attempts to create a link via plugin7548 takes no action7549 when Sentry repos request errors7550 falls back to creating a link via plugin7551profiles/keys/_form.html.haml7552 when the form partial is used7553 renders the form with the correct action7554 has the key field7555 has the title field7556 has the usage type field7557 has the expires at field7558 has the validation warning7559 has the submit button7560Gitlab::Kas::Client7561 #initialize7562 kas is not enabled7563 raises a configuration error7564 internal url is not set7565 raises a configuration error7566 gRPC calls7567 #get_connected_agents7568 is expected to eq [#<Double (anonymous)>]7569 #list_agent_config_files7570 is expected to eq [#<Double (anonymous)>]7571 with grpcs7572 uses a ChannelCredentials object with the correct certificates7573Packages::MarkPackageFilesForDestructionWorker7574 #perform7575 with a valid package id7576 marks all package files as pending_destruction7577 behaves like an idempotent worker7578 is labeled as idempotent7579 performs multiple times sequentially without raising an exception7580 with an invalid package id7581 marks no packag files7582 behaves like an idempotent worker7583 is labeled as idempotent7584 performs multiple times sequentially without raising an exception7585 with a nil package id7586 marks no packag files7587 behaves like an idempotent worker7588 is labeled as idempotent7589 performs multiple times sequentially without raising an exception7590Gitlab::Graphql::Pagination::ArrayConnection7591 behaves like a connection with collection methods7592 responds to to_a7593 responds to size7594 responds to map7595 responds to include?7596 responds to empty?7597 behaves like a redactable connection7598 no redactor set7599 contains the unwanted item7600 does not redact more than once7601 redactor is set7602 does not contain the unwanted item7603 does not redact more than once7604Gitlab::GithubImport7605 github.com7606 returns a new Client with a custom token7607 returns a new Client with a token stored in the import data7608 returns the ID of the ghost user7609 caches the ghost user ID7610 GitHub Enterprise7611 returns a new Client with a custom token7612 returns a new Client with a token stored in the import data7613 returns the ID of the ghost user7614 caches the ghost user ID7615 formats the import url7616 .per_page7617 when project group is present7618 when github_importer_lower_per_page_limit is enabled7619 returns lower per page value7620 when github_importer_lower_per_page_limit is disabled7621 returns default per page value7622 when project group is missing7623 returns default per page value7624Shard7625 .populate!7626 creates shards based on the config file7627 .by_name7628 returns an existing shard7629 creates a new shard7630 returns existing record if creation races7631Types::Admin::Analytics::UsageTrends::MeasurementType7632 is expected to have graphql field :recorded_at7633 is expected to have graphql field :identifier7634 is expected to have graphql field :count7635 authorization7636 when the user is not admin7637 returns an error7638 does not return usageTrendsMeasurements data7639 when user is an admin7640 returns usageTrendsMeasurements data7641Gitlab::ExternalAuthorization7642 #access_allowed?7643 is always true when the feature is disabled7644 #rejection_reason7645 is always nil when the feature is disabled7646 #access_for_user_to_label7647 only loads the access once per request7648 logs the access request once per request7649Gitlab::WebIde::Config::Entry::Global7650 .nodes7651 returns a hash7652 when filtering all the entry/node names7653 contains the expected node names7654 when configuration is valid7655 when some entries defined7656 #compose!7657 creates nodes hash7658 creates node object for each entry7659 creates node object using valid class7660 sets correct description for nodes7661 #leaf?7662 is not leaf7663 when not composed7664 #terminal_value7665 returns nil7666 #leaf?7667 is leaf7668 when composed7669 #errors7670 has no errors7671 #terminal_value7672 returns correct script7673 when configuration is not valid7674 when job does not have valid before script7675 #errors7676 reports errors about missing script7677 when value is not a hash7678 #valid?7679 is not valid7680 #errors7681 returns error about invalid type7682 #specified?7683 is concrete entry that is defined7684 #[]7685 when entry exists7686 returns correct entry7687 when entry does not exist7688 always return unspecified node7689Groups::UserGroupsFinder7690 #execute7691 returns all groups where the user is a direct member7692 when target_user is nil7693 is expected to be empty7694 when current_user is nil7695 is expected to be empty7696 when permission is :create_projects7697 is expected to contain exactly #<Group id:3007 @root-group/a-public-maintainer>, #<Group id:3008 @a-public-owner>, #<Group id:3005 @root-group/b-private-maintainer>, and #<Group id:3006 @root-group/c-public-developer>7698 behaves like user group finder searching by name or path7699 is expected to contain exactly #<Group id:3007 @root-group/a-public-maintainer> and #<Group id:3005 @root-group/b-private-maintainer>7700 when searching for a full path (including parent)7701 is expected to contain exactly #<Group id:3005 @root-group/b-private-maintainer>7702 when search keywords include the parent route7703 is expected to match [#<Group id:3007 @root-group/a-public-maintainer>, #<Group id:3006 @root-group/c-public-developer>]7704 when permission is :transfer_projects7705 is expected to contain exactly #<Group id:3007 @root-group/a-public-maintainer>, #<Group id:3008 @a-public-owner>, and #<Group id:3005 @root-group/b-private-maintainer>7706 behaves like user group finder searching by name or path7707 is expected to contain exactly #<Group id:3007 @root-group/a-public-maintainer> and #<Group id:3005 @root-group/b-private-maintainer>7708 when searching for a full path (including parent)7709 is expected to contain exactly #<Group id:3005 @root-group/b-private-maintainer>7710 when search keywords include the parent route7711 is expected to match [#<Group id:3007 @root-group/a-public-maintainer>]7712PersonalAccessTokenPolicy7713 current_user is an administrator7714 not the owner of the token7715 is expected to be allowed :read_token7716 is expected to be allowed :revoke_token7717 owner of the token7718 is expected to be allowed :read_token7719 is expected to be allowed :revoke_token7720 current_user is not an administrator7721 not the owner of the token7722 is expected to be disallowed :read_token7723 is expected to be disallowed :revoke_token7724 owner of the token7725 is expected to be allowed :read_token7726 is expected to be allowed :revoke_token7727 subject of the impersonated token7728 is expected to be disallowed :read_token7729 is expected to be disallowed :revoke_token7730 current_user is a blocked administrator7731 owner of the token7732 is expected to be disallowed :read_token7733 is expected to be disallowed :revoke_token7734 not the owner of the token7735 is expected to be disallowed :read_token7736 is expected to be disallowed :revoke_token7737Import::PrepareService7738 when file is uploaded correctly7739 raises NotImplemented error for worker7740 when a job is enqueued7741 raises NotImplemented error for success_message when a job is enqueued7742 returns a success respnse when a success_message is implemented7743 when file upload fails7744 returns an error message7745Gitlab::SidekiqConfig7746 .workers7747 includes all workers7748 .worker_queues7749 includes all queues7750 .workers_for_all_queues_yml7751 returns a tuple with FOSS workers first7752 .all_queues_yml_outdated?7753 returns true if the YAML file does not match the application code7754 returns false if the YAML file matches the application code7755 .queues_for_sidekiq_queues_yml7756 returns queues and weights, aggregating namespaces with the same weight7757 .sidekiq_queues_yml_outdated?7758 returns true if the YAML file does not match the application code7759 returns false if the YAML file matches the application code7760 .worker_queue_mappings7761 returns the worker class => queue mappings based on the current routing configuration7762 .current_worker_queue_mappings7763 returns worker queue mappings that have queues in the current Sidekiq options7764 .routing_queues7765 returns worker queue mappings that have queues in the current Sidekiq options7766Gitlab::Graphql::KnownOperations7767 #from_query7768 query_string: "query { helloWorld }", expected: #<struct Gitlab::Graphql::KnownOperations::Operation name="unknown">7769 returns known operation name from GraphQL Query7770 query_string: "query fuzzyyy { helloWorld }", expected: #<struct Gitlab::Graphql::KnownOperations::Operation name="unknown">7771 returns known operation name from GraphQL Query7772 query_string: "query foo { helloWorld }", expected: #<struct Gitlab::Graphql::KnownOperations::Operation name="foo">7773 returns known operation name from GraphQL Query7774 #operations7775 returns array of known operations7776 Operation#to_caller_id7777 query_string: "query { helloWorld }", expected: "graphql:unknown"7778 formats operation name for caller_id metric property7779 query_string: "query foo { helloWorld }", expected: "graphql:foo"7780 formats operation name for caller_id metric property7781 Opeartion#query_urgency7782 returns the associated query urgency7783 .default7784 returns a memoization of values from webpack7785Types::CommitType7786 is expected to eq "Commit"7787 is expected to require graphql authorizations :read_code7788 is expected to include Types::TodoableInterface7789 contains attributes related to commit7790Preloaders::UsersMaxAccessLevelByProjectPreloader7791 # order random7792 #execute7793 avoids N+1 queries7794 preloads the max access level used by project policies7795AnalyticsSummarySerializer7796 generates payload for single object7797 contains important elements of AnalyticsStage7798 does not include unit7799 when representing with unit7800 contains unit7801Clusters::Agents::GroupAuthorization7802 is expected to belong to agent class_name => Clusters::Agent required: true7803 is expected to belong to group class_name => ::Group required: true7804 is expected to validate jsonb schema "config"7805 #config_project7806 is expected to eq #<Project id:1189 namespace1292/project1309>>7807Groups::DeployTokens::RevokeService7808 #execute7809 revokes a group deploy token7810 invalid token id7811 raises an error7812Ci::CreatePipelineService7813 artifacts:7814 reports:7815 with valid config7816 creates pipeline with builds7817 with invalid config7818 creates pipeline with yaml errors7819RuboCop::Cop::Migration::ScheduleAsync7820 # order random7821 outside of a migration7822 behaves like a disabled cop7823 does not register any offenses7824 in a migration7825 in an old migration7826 behaves like a disabled cop7827 does not register any offenses7828 that is recent7829 BackgroundMigrationWorker.perform_async7830 adds an offense when calling `BackgroundMigrationWorker.peform_async`7831 CiDatabaseWorker.perform_async7832 adds an offense when calling `CiDatabaseWorker.peform_async`7833 BackgroundMigrationWorker.perform_in7834 adds an offense7835 CiDatabaseWorker.perform_in7836 adds an offense7837 BackgroundMigrationWorker.bulk_perform_async7838 adds an offense7839 CiDatabaseWorker.bulk_perform_async7840 adds an offense7841 BackgroundMigrationWorker.bulk_perform_in7842 adds an offense7843 CiDatabaseWorker.bulk_perform_in7844 adds an offense7845LazyImageTagHelper7846 #image_tag7847 when only source passed7848 returns a lazy image tag by default7849 when lazy mode is disabled7850 returns a normal image tag7851 when Dark Mode is enabled7852 when auto dark enabled7853 adds an auto dark mode class from gitlab-ui7854 when auto dark disabled7855 does nothing7856 when dark variant is present7857 uses dark variant as a source7858 when Dark Mode is disabled7859 when auto dark enabled7860 does not add a dark mode class from gitlab-ui7861 when auto dark disabled7862 does nothing7863 when dark variant is present7864 uses original image as a source7865 when auto_dark and dark_variant are both passed7866 does not add a dark mode class from gitlab-ui7867Gitlab::ConfigChecker::ExternalDatabaseChecker7868 #check7869 with a single database7870 when database meets minimum supported version7871 is expected to be empty7872 when database does not meet minimum supported version7873 reports deprecated database notice7874 with a multiple database7875 when both databases meets minimum supported version7876 example at ./spec/lib/gitlab/config_checker/external_database_checker_spec.rb:55 (PENDING: Skipping because none of the extra databases [:ci] are setup)7877 when the one of the databases does not meet minimum supported version7878 reports deprecated database notice if the main database is using an old version (PENDING: Skipping because none of the extra databases [:ci] are setup)7879 reports deprecated database notice if the ci database is using an old version (PENDING: Skipping because none of the extra databases [:ci] are setup)7880 when both databases do not meet minimum supported version7881 reports deprecated database notice (PENDING: Skipping because none of the extra databases [:ci] are setup)7882Gitlab::Ci::ProcessableObjectHierarchy7883 # order random7884 #base_and_ancestors7885 includes the base and its ancestors7886 can find ancestors upto a certain level7887 hierarchy_order option7888 for :asc7889 orders by child to ancestor7890 for :desc7891 orders by ancestor to child7892 #base_and_descendants7893 includes the base and its descendants7894 when with_depth is true7895 includes depth in the results7896Gitlab::JsonLogger7897 #file_name7898 raises error when file_name_noext not implemented7899 returns log file name when file_name_noext is implemented7900 #format_message7901 formats strings7902 formats hashes7903Gitlab::JiraImport::Stage::ImportNotesWorker7904 modules7905 behaves like include import workers modules7906 is expected to includes the ApplicationWorker module7907 is expected to includes the Gitlab::JiraImport::QueueOptions module7908 is expected to includes the Gitlab::JiraImport::ImportWorker module7909 #perform7910 when import did not start7911 behaves like cannot do Jira import7912 does not advance to next stage7913 behaves like does not advance to next stage7914 does not advance to next stage7915 when import started7916 behaves like advance to next stage7917 advances to finish stage7918TestHooks::SystemService7919 #execute7920 hook with not implemented test7921 returns error message7922 push_events7923 executes hook7924 tag_push_events7925 executes hook7926 repository_update_events7927 executes hook7928 merge_requests_events7929 returns error message if the user does not have any repository with a merge request7930 executes hook7931UpdateProjectStatisticsWorker7932 #perform7933 when a lease could be obtained7934 updates the project statistics7935 when a lease could not be obtained7936 does not update the project statistics7937check_forced_decomposition initializer7938 # order random7939 for production env7940 for single database7941 is expected not to raise Exception7942 for multiple database7943 when ci and main share the same database7944 is expected not to raise Exception7945 when host is not present7946 is expected not to raise Exception7947 when ci and main share the same database but different host7948 is expected to raise /Separate CI database is not ready/7949 when ci and main are different databases7950 is expected to raise /Separate CI database is not ready/7951 for SaaS7952 is expected not to raise Exception7953 when env var GITLAB_ALLOW_SEPARATE_CI_DATABASE is true7954 is expected not to raise Exception7955 when env var GITLAB_ALLOW_SEPARATE_CI_DATABASE is false7956 is expected to raise /Separate CI database is not ready/7957ObjectPool::JoinWorker7958 #perform7959 when the pool is not joinable7960 doesn't raise an error7961 when the pool has been joined before7962 succeeds in joining7963X509CertificateRevokeService7964 #execute7965 for revoked certificates7966 update all commit signatures7967 for good certificates7968 do not update any commit signature7969ApplicationSettingPolicy7970 update_runners_registration_token7971 when anonymous7972 is expected not to be allowed :update_runners_registration_token7973 regular user7974 is expected not to be allowed :update_runners_registration_token7975 when external7976 is expected not to be allowed :update_runners_registration_token7977 admin7978 when admin mode is enabled7979 is expected to be allowed :update_runners_registration_token7980 when admin mode is disabled7981 is expected to be disallowed :update_runners_registration_token7982Packages::Debian::CreatePackageFileService7983 #execute7984 with temp file7985 behaves like a valid deb7986 creates a new package file7987 with a .changes file7988 behaves like a valid changes7989 creates a new package file7990 with distribution7991 behaves like a valid deb7992 creates a new package file7993 when current_user is missing7994 raises an error7995 with remote file7996 behaves like a valid deb7997 creates a new package file7998 when package is missing7999 raises an error8000 when params is empty8001 raises an error8002 when file is missing8003 raises an error8004AlertManagement::MetricImages::UploadService8005 #execute8006 user does not have permissions8007 behaves like no metric saved, an error given8008 returns an error and does not upload8009 user has permissions8010 behaves like uploads the metric8011 uploads the metric and returns a success8012 no url given8013 behaves like uploads the metric8014 uploads the metric and returns a success8015 record invalid8016 behaves like no metric saved, an error given8017 returns an error and does not upload8018 user is guest8019 behaves like no metric saved, an error given8020 returns an error and does not upload8021Ci::BuildFinishedWorker8022 #perform8023 when build exists8024 calculates coverage and calls hooks8025 when build is failed8026 adds a todo8027 when a build can be auto-retried8028 does not add a todo8029 when build has a chat8030 schedules a ChatNotification job8031 when it has a token8032 removes the token8033 when build does not exist8034 does not raise exception8035Mutations::Branches::Create8036 #resolve8037 raises an error if the resource is not accessible to the user8038 when the user can create a branch8039 when service successfully creates a new branch8040 returns a new branch8041 when service fails to create a new branch8042 is expected to be nil8043 is expected to eq ["Branch already exists"]8044Tooling::FindTests8045 # order random8046 #execute8047 does not modify the content of the input file8048 does not overwrite the output file8049 loads the tests.yml file with a pattern matching mapping8050 when the matching_tests_paths file does not exist8051 creates the file8052 when the matching_tests_paths file already exists8053 does not create an empty file8054 when RSPEC_TESTS_MAPPING_ENABLED env variable is set8055 loads the direct matching pattern file8056 when RSPEC_TESTS_MAPPING_ENABLED env variable is not set8057 when RSPEC_TESTS_MAPPING_PATH is set8058 does not load the direct matching pattern file8059 when RSPEC_TESTS_MAPPING_PATH is not set8060 does not load the direct matching pattern file8061 when the same spec is matching multiple times8062 writes uniquely matching specs to the output8063Gitlab::Database::SchemaValidation::Database8064 # order random8065 when having triggers8066 #fetch_trigger_by_name8067 returns trigger by name8068 when trigger does not exist8069 returns nil8070 #trigger_exists?8071 when trigger exists8072 returns true8073 when trigger does not exist8074 returns false8075 #triggers8076 returns triggers8077 when having indexes8078 #fetch_index_by_name8079 returns index by name8080 when index does not exist8081 returns nil8082 #index_exists?8083 when index exists8084 returns true8085 when index does not exist8086 returns false8087 #indexes8088 returns indexes8089UserProjectAccessChangedService8090 #execute8091 permits high-priority operation8092 permits medium-priority operation8093 sets the current caller_id as related_class in the context of all the enqueued jobs8094 for low priority operation8095 does not perform low-priority operation8096 when the feature flag `do_not_run_safety_net_auth_refresh_jobs` is disabled8097 permits low-priority operation8098 with load balancing enabled8099 sticks all the updated users and returns the original result8100 avoids N+1 cached queries8101Gitlab::QuickActions::TimelineTextAndDateTimeSeparator8102 # order random8103 execute8104 with invalid parameters in arg line8105 with empty arg line8106 behaves like arg line with invalid parameters8107 returns nil8108 with invalid date8109 behaves like arg line with invalid parameters8110 returns nil8111 behaves like arg line with invalid parameters8112 returns nil8113 behaves like arg line with invalid parameters8114 returns nil8115 with invalid time8116 behaves like arg line with invalid parameters8117 returns nil8118 when date is invalid in arg line8119 return current date8120 with valid parameters8121 when only timeline text present in arg line8122 behaves like arg line with valid parameters8123 returns text and date time array8124 when only timeline text and time present in arg line8125 behaves like arg line with valid parameters8126 returns text and date time array8127 when timeline text and date is present in arg line8128 behaves like arg line with valid parameters8129 returns text and date time array8130Integrations::ExternalWiki8131 Validations8132 when integration is active8133 is expected to validate that :external_wiki_url cannot be empty/falsy8134 behaves like issue tracker integration URL attribute8135 is expected to allow :external_wiki_url to be ‹"https://example.com"›8136 is expected not to allow :external_wiki_url to be ‹"example.com"›8137 is expected not to allow :external_wiki_url to be ‹"ftp://example.com"›8138 is expected not to allow :external_wiki_url to be ‹"herp-and-derp"›8139 when integration is inactive8140 is expected not to validate that :external_wiki_url cannot be empty/falsy8141 test8142 the URL is not reachable8143 is not successful8144 the URL is reachable8145 is successful8146ErrorTracking::Collector::PayloadValidator8147 #valid?8148 with event fixtures8149 event_fixture: "/builds/gitlab-org/gitlab/spec/fixtures/error_tracking/browser_event.json"8150 behaves like valid payload8151 is expected to be valid8152 event_fixture: "/builds/gitlab-org/gitlab/spec/fixtures/error_tracking/go_parsed_event.json"8153 behaves like valid payload8154 is expected to be valid8155 event_fixture: "/builds/gitlab-org/gitlab/spec/fixtures/error_tracking/go_two_exception_event.json"8156 behaves like valid payload8157 is expected to be valid8158 event_fixture: "/builds/gitlab-org/gitlab/spec/fixtures/error_tracking/parsed_event.json"8159 behaves like valid payload8160 is expected to be valid8161 event_fixture: "/builds/gitlab-org/gitlab/spec/fixtures/error_tracking/parsed_event_nullbytes.json"8162 behaves like valid payload8163 is expected to be valid8164 event_fixture: "/builds/gitlab-org/gitlab/spec/fixtures/error_tracking/python_event.json"8165 behaves like valid payload8166 is expected to be valid8167 event_fixture: "/builds/gitlab-org/gitlab/spec/fixtures/error_tracking/python_event_repl.json"8168 behaves like valid payload8169 is expected to be valid8170 when empty8171 behaves like invalid payload8172 is expected not to be valid8173 when invalid8174 behaves like invalid payload8175 is expected not to be valid8176Ci::JobsHelper8177 jobs data8178 returns bridge data8179ObjectStorage::S38180 # order random8181 .signed_head_url8182 when the provider is AWS8183 generates a signed url8184 delegates to Fog::AWS::Storage::Files#head_url8185Gitlab::DependencyLinker::PodspecJsonLinker8186 .support?8187 supports *.podspec.json8188 does not support other files8189 #link8190 links the gem name8191 links the license8192 links the homepage8193 links the source URL8194 links dependencies8195 does not link subspec names8196IssueSerializer8197 non-sidebar issue serialization8198 matches issue json schema8199 sidebar issue serialization8200 matches issue_sidebar json schema8201 sidebar extras issue serialization8202 matches issue_sidebar_extras json schema8203 board issue serialization8204 matches board issue json schema8205Types::WorkItems::WidgetInterface8206 exposes the expected fields8207 .resolve_type8208 raises an error for an unknown type8209 widget_class: WorkItems::Widgets::Description, widget_type_name: Types::WorkItems::Widgets::DescriptionType8210 knows the correct type for objects8211 widget_class: WorkItems::Widgets::Hierarchy, widget_type_name: Types::WorkItems::Widgets::HierarchyType8212 knows the correct type for objects8213 widget_class: WorkItems::Widgets::Assignees, widget_type_name: Types::WorkItems::Widgets::AssigneesType8214 knows the correct type for objects8215 widget_class: WorkItems::Widgets::Labels, widget_type_name: Types::WorkItems::Widgets::LabelsType8216 knows the correct type for objects8217 widget_class: WorkItems::Widgets::Notes, widget_type_name: Types::WorkItems::Widgets::NotesType8218 knows the correct type for objects8219 widget_class: WorkItems::Widgets::Notifications, widget_type_name: Types::WorkItems::Widgets::NotificationsType8220 knows the correct type for objects8221DiffViewer::ServerSide8222 #render_error8223 when the diff file is stored externally8224 return :server_side_but_stored_externally8225 #render_error_reason8226 when the diff file is stored externally8227 returns error message if stored in LFS8228 returns error message if stored externally8229Types::WorkItemIdType8230 .coerce_input8231 can coerce valid issue input8232 can coerce valid work item input8233 fails for other input types8234 .coerce_result8235 can coerce issue results and return a WorkItem global ID8236 can coerce work item results8237 fails for other input types8238Gitlab::I18n8239 .selectable_locales8240 does not return languages with default translation levels 60%8241 does not return languages with less than 100% translation levels8242 .locale=8243 sets the locale based on current user preferred language8244 .use_default_locale8245 resets the locale to the default language8246 .pluralisation_rule8247 when overridden8248 returns custom definition regardless8249LimitedCapacity::JobTracker8250 #register8251 adds jid to the set8252 returns false if the jid was not added8253 #remove8254 removes jid from the set8255 #clean_up8256 with running jobs8257 does not remove the jid from the set8258 does only one Redis call to get the job ids8259 with completed jobs8260 removes the jid from the set8261 gets the job ids, removes them, and updates the counter with only two Redis calls8262Gitlab::WordDiff::Segments::Chunk8263 #removed?8264 is expected to be falsey8265 when line starts with "-"8266 is expected to be truthy8267 #added?8268 is expected to be falsey8269 when line starts with "+"8270 is expected to be truthy8271 #to_s8272 removes lead string modifier8273 when chunk is empty8274 is expected to eq ""8275 #length8276 is expected to eq 58277notify/user_deactivated_email.text.erb8278 # order random8279 displays the user's name8280 when additional text setting is set8281 when additional text feature flag is enabled8282 displays the additional text8283 when additional text feature flag is disabled8284 does not display the additional text8285 behaves like renders plain text email correctly8286 renders the email without HTML links8287 when additional text setting is not set8288 does not display any additional text8289Projects::ScheduleBulkRepositoryShardMovesService8290 behaves like moves repository shard in bulk8291 #execute8292 schedules container repository storage moves8293 read-only repository8294 does not get scheduled8295 .enqueue8296 defers to the worker8297Deployments::ArchiveInProjectWorker8298 #perform8299 executes Deployments::ArchiveInProjectService8300ServiceDeskEmailReceiverWorker8301 #perform8302 when service_desk_email config is enabled8303 does not ignore the email8304 when service desk receiver raises an exception8305 sends a rejection email8306 when service_desk_email config is disabled8307 ignores the email8308ContainerRegistry::Registry8309 is expected to respond to #client8310 is expected to respond to #uri8311 is expected to respond to #path8312 is expected not to be nil8313 #path8314 path from URL8315 is expected to eq "example.com"8316 custom path8317 is expected to eq "registry.example.com"8318 #gitlab_api_client8319 returns a GitLabApiClient with an import token8320WebpackHelper8321 #prefetch_link_tag8322DEPRECATION WARNING: The asset "foo.js" is not present in the asset pipeline.8323Falling back to an asset that may be in the public folder.8324This behavior is deprecated and will be removed.8325To bypass the asset pipeline and preserve this behavior,8326use the `skip_pipeline: true` option.8327 (called from prefetch_link_tag at /builds/gitlab-org/gitlab/app/helpers/webpack_helper.rb:5)8328 returns prefetch link tag8329 #webpack_preload_asset_tag8330 preloads the resource by default8331 prefetches the resource if explicitly asked8332Keys::CreateService8333 creates a key8334 notification8335 sends a notification8336FindJhBranch8337 # order random8338 #run8339 when it is not a merge request8340 returns JH_DEFAULT_BRANCH8341 when it is a merge request8342 when there is a corresponding JH branch8343 returns the corresponding JH branch name8344 when there is no corresponding JH branch8345 returns the default JH branch8346 when it is targeting a default branch8347 when there is a corresponding JH stable branch8348 returns the corresponding JH stable branch8349 when there is no corresponding JH stable branch8350 raises FindJhBranch::BranchNotFound8351 when it is not targeting the default branch8352 returns the default JH branch8353admin/application_settings/_ci_cd8354 limits8355 has fields for CI/CD limits8356 does not display the plan name when there is only one plan8357 with multiple plans8358 displays the plan name when there is more than one plan8359Sidebars::UserSettings::Menus::ProfileMenu8360 # order random8361 behaves like User settings menu #render? method8362 #render?8363 when user is logged in8364 renders8365 when user is not logged in8366 does not render8367 behaves like User settings menu8368 does not contain any sub menu8369 renders the correct link8370 renders the correct title8371 renders the correct icon8372 defines correct active route8373Gitlab::DependencyLinker::PodfileLinker8374 .support?8375 supports Podfile8376 does not support other files8377 #link8378 links sources8379 links packages8380 links external packages8381 links Git repos8382MergeRequests::Mergeability::CheckCiStatusService8383 #execute8384 when the merge request is in a mergable state8385 returns a check result with status success8386 when the merge request is not in a mergeable state8387 returns a check result with status failed8388 #skip?8389 when skip check is true8390 returns true8391 when skip check is false8392 returns false8393 #cacheable?8394 returns false8395RuboCop::Cop::Gitlab::EventStoreSubscriber8396 # order random8397 when an event store subscriber does not override #perform8398 does not register an offense8399 when an event store subscriber overrides #perform8400 registers an offense8401 when a Sidekiq worker implements #handle_event8402 does not register an offense8403 a non worker class8404 does not register an offense8405 when a Sidekiq worker overrides #perform8406 does not register an offense8407 when an event store subscriber does not implement #handle_event8408 registers an offense8409Groups::SettingsHelper8410 #group_settings_confirm_modal_data8411 prevent_delete_response: true, is_button_disabled: "true", form_value_id: nil8412 returns expected parameters8413 prevent_delete_response: true, is_button_disabled: "true", form_value_id: "fake_form_id"8414 returns expected parameters8415 prevent_delete_response: false, is_button_disabled: "false", form_value_id: nil8416 returns expected parameters8417 prevent_delete_response: false, is_button_disabled: "false", form_value_id: "fake_form_id"8418 returns expected parameters8419event store matchers8420 # order random8421 not_publish_event8422 requires a block matcher8423 does not permit .with8424 validates the event type8425 publish_event8426 requires a block matcher8427 validates the event type8428 validates the event data8429Gitlab::Graphql::CallsGitaly::FieldExtension8430 when the field calls gitaly8431 when the field has a constant complexity8432 allows the call8433 when the field declares that it calls gitaly8434 allows the call8435 when the field does not have these arguments8436 notices, and raises, mentioning the field8437 when it does not call gitaly8438 does not raise8439 when some field calls gitaly while we were waiting8440 is acceptable if all are accounted for8441 is unacceptable if some of the calls are unaccounted for8442Gitlab::Ci::MaskSecret8443 #mask8444 masks exact number of characters8445 masks multiple occurrences8446 does not mask if not found8447 does support null token8448 does not change a bytesize of a value8449Gitlab::Memory::UploadAndCleanupReports8450 # order random8451 #initalize8452 when sleep_time_seconds is passed through the environment8453 initializes with these settings8454 when sleep_time_seconds is passed through the initializer8455 initializes with these settings8456 when `sleep_time_seconds` is not passed8457 initialized with the default8458 #call8459 invokes the uploader and cleans the files8460 when there is an exception8461 logs it and does not crash the loop8462Alerting::ProjectAlertingSetting8463 Associations8464 is expected to belong to project required: false8465 #token8466 when set8467 reads the token8468 when not set8469 generates a token before validation8470Types::ErrorTracking::SentryErrorStackTraceType8471 is expected to eq "SentryErrorStackTrace"8472 is expected to require graphql authorizations :read_sentry_issue8473 exposes the expected fields8474Gitlab::Ci::EnvironmentMatcher8475 # order random8476 #match?8477 when given pattern is a normal string8478 returns true on an exact match8479 returns false if not an exact match8480 when given pattern has a wildcard8481 returns true on wildcard matches8482 returns false when not a wildcard match8483 when given pattern is nil8484 always returns false8485 when given pattern is an empty string8486 always returns false8487Gitlab::Ci::Config::Yaml::Result8488 # order random8489 stores an error / exception when initialized with it8490 raises an error when reading a header when there is none8491 does not have a header when config is a single hash8492 when config is an array of hashes8493 when first document matches the header schema8494 has a header8495 when first document does not match the header schema8496 does not have header8497PagesDomains::DeleteService8498 # order random8499 when the user has the required permissions8500 when it updates the domain successfully8501 deletes the domain and publishes a PagesDomainDeletedEvent8502 when the user does not have the required permissions8503 does not delete the pages domain and does not publish a PagesDomainDeletedEvent8504Gitlab::SidekiqMiddleware::DuplicateJobs::Strategies8505 .for8506 returns the right class for `until_executing`8507 returns the right class for `until_executed`8508 returns the right class for `none`8509 raises an UnknownStrategyError when passing an unknown key8510Gitlab::Ci::Config::Entry::Tags8511 validation8512 when tags config value is correct8513 #value8514 returns tags configuration8515 #valid?8516 is valid8517 when entry value is not correct8518 #errors8519 when tags config is not an array of strings8520 reports error8521 when tags limit is reached8522 reports error8523API::API8524 .prefix8525 has a prefix defined8526 .version8527 uses most recent version of the API8528 .versions8529 returns all available versions8530Gitlab::Template::GitignoreTemplate8531 .all8532 strips the gitignore suffix8533 combines the globals and rest8534 .find8535 returns nil if the file does not exist8536 returns the Gitignore object of a valid file8537 #content8538 loads the full file8539Types::MilestoneType8540 is expected to eq "Milestone"8541 is expected to require graphql authorizations :read_milestone8542 has the expected fields8543 stats field8544 is expected to have graphql type Types::MilestoneStatsType8545Gitlab::Search::SortOptions8546 .sort_and_direction8547 using order_by and sort8548 returns matched options8549 using just sort8550 returns matched options8551 when unknown option8552 returns unknown8553Gitlab::GithubImport::ImportReleaseAttachmentsWorker8554 # order random8555 #import8556 imports an issue event8557Gitlab::RuggedInstrumentation8558 .query_time8559 increments query times8560 .increment_query_count8561 tracks query counts8562Types::Ci::RunnerType8563 is expected to eq "CiRunner"8564 is expected to require graphql authorizations :read_runner8565 contains attributes related to a runner8566Gitlab::Usage::Metrics::Instrumentations::SnowplowConfiguredToGitlabCollectorMetric8567 for collector_hostname option8568 collector_hostname: "snowplow.trx.gitlab.net", expected_value: true8569 behaves like a correct instrumented metric value8570 has correct value8571 collector_hostname: "foo.bar.something.net", expected_value: false8572 behaves like a correct instrumented metric value8573 has correct value8574BulkImports::FileTransfer8575 .config_for8576 when portable is group8577 returns group config8578 when portable is project8579 returns project config8580 when portable is unsupported8581 raises an error8582Gitlab::Utils::BatchLoader8583 # order random8584 .clear_key8585 clears batched items which match the specified batch key8586 clears loaded values which match the specified batch key8587Gitlab::Import::Errors8588 # order random8589 .merge_nested_errors8590 merges nested collection errors8591GoogleCloud::GcpRegionAddOrReplaceService8592 adds and replaces GCP region vars8593Mutations::Members::BulkUpdateBase8594 # order random8595 raises a NotImplementedError error if the source_type method is called on the base class8596Gitlab::GithubImport::ImportPullRequestMergedByWorker8597 is expected to includes the Gitlab::GithubImport::ObjectImporter module8598 #representation_class8599 is expected to eq Gitlab::GithubImport::Representation::PullRequest8600 #importer_class8601 is expected to eq Gitlab::GithubImport::Importer::PullRequestMergedByImporter8602Gitlab::Database::Migrations::Observers::BatchDetails8603 # order random8604 meta: lazy { { job_meta: job_meta } }, expected_keys: ["time_spent", "min_value", "max_value", "batch_size", "sub_batch_size", "pause_ms"]8605 records expected information to file8606 meta: {:job_meta=>nil}, expected_keys: ["time_spent"]8607 records expected information to file8608 meta: nil, expected_keys: ["time_spent"]8609 records expected information to file8610BulkImports::Groups::Extractors::SubgroupsExtractor8611 #extract8612 returns ExtractedData response8613Types::Admin::Analytics::UsageTrends::MeasurementIdentifierEnum8614 is expected to eq "MeasurementIdentifier"8615 exposes all the existing identifier values8616Gitlab::Git::GitmodulesParser8617 parses a .gitmodules file correctly8618Gitlab::Database::SchemaValidation::Validators::ExtraIndexes8619 # order random8620 returns index inconsistencies8621Types::ContainerExpirationPolicyCadenceEnum8622 behaves like exposing container expiration policy option8623 exposes all options8624 uses all possible options from model8625Types::Projects::ServiceType8626 is expected to have graphql fields :type, :service_type, and :active8627 .resolve_type8628 resolves the corresponding type for objects8629Types::DesignManagement::DesignVersionEventEnum8630 is expected to eq "DesignVersionEvent"8631 exposes the correct event states8632BulkImports::Groups::Transformers::SubgroupToEntityTransformer8633 #transform8634 transforms subgroups data in entity params8635Types::Packages::Conan::FileMetadatumType8636 includes conan file metadatum fields8637Gitlab::Ci::Config::Normalizer::Factory8638 #create8639 when no strategy applies8640 is expected to be empty8641Types::ContainerExpirationPolicyKeepEnum8642 behaves like exposing container expiration policy option8643 exposes all options8644 uses all possible options from model8645Transactions8646 is not in a transaction8647 is in a transaction8648Gitlab::Email::Message::BuildIosAppGuide8649 contains the correct message8650Banzai::Pipeline::EmojiPipeline8651 replaces emoji8652 filters out HTML tags8653Types::Users::EmailType8654 # order random8655 is expected to require graphql authorizations :read_user_email_address8656 has the correct fields8657Types::MilestoneStatsType8658 is expected to require graphql authorizations :read_milestone8659 has the expected fields8660Sidebars::Projects::SuperSidebarMenus::MonitorMenu8661 # order random8662 has title and sprite_icon8663 defines list of NilMenuItem placeholders8664Gitlab::Metrics::Dashboard::Validator::CustomFormats8665 #format_handlers8666 add_to_metric_id_cache8667 adds data to metric id cache8668Types::PermissionTypes::User8669 returns user permissions8670Mutations::ResolvesGroup8671 uses the GroupsResolver to resolve groups by path8672Bitbucket::Representation::User8673 #username8674 returns correct value8675Gitlab::Usage::Metrics::Instrumentations::ServiceDeskEmailEncryptedSecretsEnabledMetric8676 # order random8677 behaves like a correct instrumented metric value8678 has correct value8679Types::Ci::VariableTypeEnum8680 matches the keys of Ci::Variable.variable_types8681Knapsack report was generated. Preview:8682{8683 "spec/models/issue_spec.rb": 135.01038641100058,8684 "spec/models/note_spec.rb": 145.01646846900076,8685 "spec/lib/gitlab/git/repository_spec.rb": 93.5620702819997,8686 "spec/services/projects/import_service_spec.rb": 89.56964972999958,8687 "spec/services/issues/move_service_spec.rb": 65.30159464700046,8688 "spec/policies/environment_policy_spec.rb": 63.222496755000975,8689 "spec/models/commit_status_spec.rb": 29.7316102879995,8690 "spec/workers/database/batched_background_migration_worker_spec.rb": 48.63713821199963,8691 "spec/lib/banzai/filter/references/commit_reference_filter_spec.rb": 47.039541169000586,8692 "spec/lib/gitlab/rack_attack/request_spec.rb": 5.6880132499991305,8693 "spec/models/award_emoji_spec.rb": 20.645748939999976,8694 "spec/services/git/wiki_push_service_spec.rb": 31.83480718499959,8695 "spec/workers/emails_on_push_worker_spec.rb": 29.07331580200116,8696 "spec/lib/banzai/filter/references/user_reference_filter_spec.rb": 17.298805182999786,8697 "spec/lib/gitlab/ci/build/rules/rule/clause/exists_spec.rb": 22.91053235599975,8698 "spec/lib/gitlab/database/background_migration/batched_migration_spec.rb": 5.872004703998755,8699 "spec/helpers/commits_helper_spec.rb": 19.24163444000078,8700 "spec/models/commit_range_spec.rb": 18.735655686999962,8701 "spec/finders/ci/pipelines_finder_spec.rb": 11.707266924000578,8702 "spec/serializers/pipeline_serializer_spec.rb": 16.74138399000003,8703 "spec/models/integrations/discord_spec.rb": 9.028405128001395,8704 "spec/services/merge_requests/ff_merge_service_spec.rb": 20.399841418000506,8705 "spec/lib/gitlab/import_export/import_failure_service_spec.rb": 13.517925328000274,8706 "spec/lib/gitlab/bitbucket_import/importer_spec.rb": 15.11300527200001,8707 "spec/lib/gitlab/git/branch_spec.rb": 16.754543387000012,8708 "spec/services/snippets/bulk_destroy_service_spec.rb": 16.40062299500096,8709 "spec/services/ci/pipeline_creation/cancel_redundant_pipelines_service_spec.rb": 15.411846084998615,8710 "spec/lib/banzai/reference_parser/commit_range_parser_spec.rb": 12.386710804999893,8711 "spec/services/discussions/update_diff_position_service_spec.rb": 12.194174520998786,8712 "spec/services/projects/hashed_storage/migrate_repository_service_spec.rb": 13.270174815001155,8713 "spec/lib/gitlab/kubernetes/helm/v2/init_command_spec.rb": 8.241721550000875,8714 "spec/lib/gitlab/checks/single_change_access_spec.rb": 10.401887214999078,8715 "spec/services/issue_links/create_service_spec.rb": 8.516405456999564,8716 "spec/services/security/merge_reports_service_spec.rb": 8.15485219599941,8717 "spec/rubocop/cop/rspec/misspelled_aggregate_failures_spec.rb": 1.9091245439994964,8718 "spec/lib/gitlab/diff/lines_unfolder_spec.rb": 7.491536572999394,8719 "spec/models/ci/job_token/scope_spec.rb": 7.156133997999859,8720 "spec/lib/gitlab/import_export/after_export_strategies/base_after_export_strategy_spec.rb": 8.910950420999143,8721 "spec/workers/remove_expired_group_links_worker_spec.rb": 9.013178651000999,8722 "spec/helpers/merge_requests_helper_spec.rb": 7.212312026998916,8723 "spec/services/award_emojis/add_service_spec.rb": 5.7311358810002275,8724 "spec/services/ci/create_pipeline_service/cross_project_pipeline_spec.rb": 10.87136926400126,8725 "spec/lib/bulk_imports/clients/http_spec.rb": 1.6198014399997192,8726 "spec/services/quick_actions/target_service_spec.rb": 7.9786824799994065,8727 "spec/lib/gitlab/ci/charts_spec.rb": 7.04355618900081,8728 "spec/lib/gitlab/ci/config/entry/environment_spec.rb": 1.7788663789997372,8729 "spec/helpers/version_check_helper_spec.rb": 1.5687626489998365,8730 "spec/lib/gitlab/ci/build/context/global_spec.rb": 6.317819648000295,8731 "spec/views/notify/import_work_items_csv_email.html.haml_spec.rb": 2.9886207660001674,8732 "spec/services/ci/job_artifacts/expire_project_build_artifacts_service_spec.rb": 2.3824390129993844,8733 "spec/lib/container_registry/migration_spec.rb": 1.9258563410003262,8734 "spec/tasks/gitlab/incoming_email_rake_spec.rb": 2.324134623999271,8735 "spec/services/bulk_imports/file_download_service_spec.rb": 1.8604472240003815,8736 "spec/lib/sbom/package_url/encoder_spec.rb": 1.2609910589999345,8737 "spec/models/work_items/type_spec.rb": 3.5220667150006193,8738 "spec/lib/gitlab/etag_caching/middleware_spec.rb": 1.1181653149997146,8739 "spec/workers/stuck_merge_jobs_worker_spec.rb": 7.012206534998768,8740 "spec/lib/gitlab/diff/highlight_cache_spec.rb": 3.1481212570015487,8741 "spec/graphql/mutations/timelogs/delete_spec.rb": 2.2875647509990813,8742 "spec/models/board_project_recent_visit_spec.rb": 3.9161122899986367,8743 "spec/lib/gitlab/jira_import_spec.rb": 2.9389869869992253,8744 "spec/services/repository_archive_clean_up_service_spec.rb": 2.153088467000998,8745 "spec/lib/gitlab/metrics/global_search_slis_spec.rb": 1.1740352740016533,8746 "spec/lib/banzai/reference_parser/label_parser_spec.rb": 3.2687939739989815,8747 "spec/policies/namespaces/user_namespace_policy_spec.rb": 1.5805925360000401,8748 "spec/lib/gitlab/jira_import/issue_serializer_spec.rb": 2.0016378370000893,8749 "spec/presenters/group_member_presenter_spec.rb": 2.126586401998793,8750 "spec/services/jira_connect_installations/proxy_lifecycle_event_service_spec.rb": 1.3532177710003452,8751 "spec/services/error_tracking/list_projects_service_spec.rb": 3.5026651979987946,8752 "spec/workers/concerns/limited_capacity/worker_spec.rb": 1.0945847299990419,8753 "spec/lib/gitlab/checks/push_file_count_check_spec.rb": 4.81271281699992,8754 "spec/workers/new_issue_worker_spec.rb": 3.6301615339998534,8755 "spec/models/packages/npm/metadatum_spec.rb": 0.8514340370002174,8756 "spec/presenters/gitlab/blame_presenter_spec.rb": 5.341720394999356,8757 "spec/lib/gitlab/utils/override_spec.rb": 1.0884443009999814,8758 "spec/graphql/resolvers/concerns/resolves_pipelines_spec.rb": 3.1253919109985873,8759 "spec/workers/packages/cleanup_package_registry_worker_spec.rb": 2.4751838550000684,8760 "spec/helpers/environments_helper_spec.rb": 1.7666018209984031,8761 "spec/models/metrics/users_starred_dashboard_spec.rb": 1.9371565089986689,8762 "spec/workers/ci/external_pull_requests/create_pipeline_worker_spec.rb": 4.3412967570002365,8763 "spec/lib/gitlab/ci/matching/runner_matcher_spec.rb": 1.5294621370012464,8764 "spec/lib/gitlab/auth/result_spec.rb": 0.8921891789996153,8765 "spec/models/concerns/sha_attribute_spec.rb": 1.1820718740000302,8766 "spec/services/alert_management/alerts/todo/create_service_spec.rb": 1.5886326150011882,8767 "spec/services/packages/rpm/parse_package_service_spec.rb": 0.7612274439998146,8768 "spec/workers/concerns/worker_context_spec.rb": 0.78618318000008,8769 "spec/lib/gitlab/fogbugz_import/importer_spec.rb": 3.685377203000826,8770 "spec/lib/atlassian/jira_connect/serializers/build_entity_spec.rb": 2.092003439000109,8771 "spec/rubocop/cop/migration/batch_migrations_post_only_spec.rb": 0.7577372340001602,8772 "spec/lib/gitlab/audit/type/definition_spec.rb": 1.288817963000838,8773 "spec/services/issuable/callbacks/milestone_spec.rb": 1.831841708999491,8774 "spec/lib/api/entities/wiki_page_spec.rb": 2.195405438000307,8775 "spec/lib/banzai/reference_parser/mentioned_user_parser_spec.rb": 2.3252271949986607,8776 "spec/lib/gitlab/import_export/base/object_builder_spec.rb": 2.7696966390012676,8777 "spec/graphql/mutations/incident_management/timeline_event/promote_from_note_spec.rb": 1.9106763540003158,8778 "spec/services/ci/update_pending_build_service_spec.rb": 1.4923810939999385,8779 "spec/workers/repository_cleanup_worker_spec.rb": 3.4030144379994454,8780 "spec/lib/gitlab/ci/pipeline/chain/populate_metadata_spec.rb": 2.1247473919993354,8781 "spec/lib/gitlab/background_migration_spec.rb": 0.6523641849998967,8782 "spec/lib/gitlab/discussions_diff/highlight_cache_spec.rb": 0.8568417860005866,8783 "spec/graphql/mutations/alert_management/prometheus_integration/create_spec.rb": 1.9434837169992534,8784 "spec/lib/gitlab/ci/pipeline/chain/seed_block_spec.rb": 3.4075959860001603,8785 "spec/workers/bulk_imports/pipeline_worker_spec.rb": 1.8917037880000862,8786 "spec/workers/merge_requests/execute_approval_hooks_worker_spec.rb": 1.4535233110000263,8787 "spec/services/projects/create_from_template_service_spec.rb": 2.5976068720010517,8788 "spec/lib/gitlab/sidekiq_logging/structured_logger_spec.rb": 1.1921808119986963,8789 "spec/services/metrics/dashboard/panel_preview_service_spec.rb": 1.013704195000173,8790 "spec/lib/gitlab/incoming_email_spec.rb": 0.9972040590000688,8791 "spec/lib/gitlab/x509/tag_spec.rb": 1.4157365880000725,8792 "spec/services/system_notes/alert_management_service_spec.rb": 1.940396967000197,8793 "spec/models/issue/email_spec.rb": 1.6551606429984531,8794 "spec/models/users/namespace_commit_email_spec.rb": 2.0418340290016204,8795 "spec/workers/error_tracking_issue_link_worker_spec.rb": 0.9621805450005922,8796 "spec/views/profiles/keys/_form.html.haml_spec.rb": 1.0926209009994636,8797 "spec/lib/gitlab/kas/client_spec.rb": 0.777319171000272,8798 "spec/workers/packages/mark_package_files_for_destruction_worker_spec.rb": 1.145876099999441,8799 "spec/lib/gitlab/graphql/pagination/array_connection_spec.rb": 0.8117978549998952,8800 "spec/lib/gitlab/github_import_spec.rb": 1.5470424330014794,8801 "spec/models/shard_spec.rb": 0.42716411800029164,8802 "spec/graphql/types/admin/analytics/usage_trends/measurement_type_spec.rb": 0.9421047189989622,8803 "spec/lib/gitlab/external_authorization_spec.rb": 0.8540012060002482,8804 "spec/lib/gitlab/web_ide/config/entry/global_spec.rb": 0.8113556850003079,8805 "spec/finders/groups/user_groups_finder_spec.rb": 1.699435884000195,8806 "spec/policies/personal_access_token_policy_spec.rb": 0.8844350099989242,8807 "spec/services/import/prepare_service_spec.rb": 0.7403666980007984,8808 "spec/lib/gitlab/sidekiq_config_spec.rb": 1.3468624420002016,8809 "spec/lib/gitlab/graphql/known_operations_spec.rb": 0.6128440820011747,8810 "spec/graphql/types/commit_type_spec.rb": 0.5048684529992897,8811 "spec/models/preloaders/users_max_access_level_by_project_preloader_spec.rb": 2.183392550999997,8812 "spec/serializers/analytics_summary_serializer_spec.rb": 0.9971728990003612,8813 "spec/models/clusters/agents/group_authorization_spec.rb": 1.2168427070009784,8814 "spec/services/groups/deploy_tokens/revoke_service_spec.rb": 0.6964075769992633,8815 "spec/services/ci/create_pipeline_service/artifacts_spec.rb": 1.719158410000091,8816 "spec/rubocop/cop/migration/schedule_async_spec.rb": 0.8003602169992519,8817 "spec/helpers/lazy_image_tag_helper_spec.rb": 1.1178593459990225,8818 "spec/lib/gitlab/config_checker/external_database_checker_spec.rb": 0.5182804809992376,8819 "spec/lib/gitlab/ci/processable_object_hierarchy_spec.rb": 1.393576321999717,8820 "spec/lib/gitlab/json_logger_spec.rb": 0.41472412099938083,8821 "spec/workers/gitlab/jira_import/stage/import_notes_worker_spec.rb": 0.968463843999416,8822 "spec/services/test_hooks/system_service_spec.rb": 1.7229595990011148,8823 "spec/workers/update_project_statistics_worker_spec.rb": 1.9229769419998775,8824 "spec/initializers/check_forced_decomposition_spec.rb": 0.9839117310002621,8825 "spec/workers/object_pool/join_worker_spec.rb": 2.022620742000072,8826 "spec/services/x509_certificate_revoke_service_spec.rb": 2.0036817350010097,8827 "spec/policies/application_setting_policy_spec.rb": 1.2496838000006392,8828 "spec/services/packages/debian/create_package_file_service_spec.rb": 1.1392899610000313,8829 "spec/services/alert_management/metric_images/upload_service_spec.rb": 1.2104613480005355,8830 "spec/workers/ci/build_finished_worker_spec.rb": 1.0899810010014335,8831 "spec/graphql/mutations/branches/create_spec.rb": 1.5341043660009746,8832 "spec/tooling/lib/tooling/find_tests_spec.rb": 0.8769849719992635,8833 "spec/lib/gitlab/database/schema_validation/database_spec.rb": 0.8360924599983264,8834 "spec/services/user_project_access_changed_service_spec.rb": 0.6727611910009728,8835 "spec/lib/gitlab/quick_actions/timeline_text_and_date_time_separator_spec.rb": 0.6571045040000172,8836 "spec/models/integrations/external_wiki_spec.rb": 0.7542049260009662,8837 "spec/lib/error_tracking/collector/payload_validator_spec.rb": 0.7616280139991431,8838 "spec/helpers/ci/jobs_helper_spec.rb": 1.5580117310000787,8839 "spec/uploaders/object_storage/s3_spec.rb": 0.9974164480008767,8840 "spec/lib/gitlab/dependency_linker/podspec_json_linker_spec.rb": 0.6088372329995764,8841 "spec/serializers/issue_serializer_spec.rb": 0.9845841609985655,8842 "spec/graphql/types/work_items/widget_interface_spec.rb": 0.7070997940008965,8843 "spec/models/diff_viewer/server_side_spec.rb": 1.1693790160006756,8844 "spec/graphql/types/work_item_id_type_spec.rb": 0.8259794309997233,8845 "spec/lib/gitlab/i18n_spec.rb": 0.8131215140001586,8846 "spec/workers/concerns/limited_capacity/job_tracker_spec.rb": 0.5353432380015875,8847 "spec/lib/gitlab/word_diff/segments/chunk_spec.rb": 0.6277026490006392,8848 "spec/views/notify/user_deactivated_email.text.erb_spec.rb": 0.7513621159996546,8849 "spec/services/projects/schedule_bulk_repository_shard_moves_service_spec.rb": 1.134490332000496,8850 "spec/workers/deployments/archive_in_project_worker_spec.rb": 1.3624751789993752,8851 "spec/workers/service_desk_email_receiver_worker_spec.rb": 0.7013428050013317,8852 "spec/lib/container_registry/registry_spec.rb": 0.6577245440003026,8853 "spec/helpers/webpack_helper_spec.rb": 0.42328667800029507,8854 "spec/services/keys/create_service_spec.rb": 0.6528422449991922,8855 "spec/scripts/setup/find_jh_branch_spec.rb": 0.6520814849991439,8856 "spec/views/admin/application_settings/_ci_cd.html.haml_spec.rb": 0.7408473380000942,8857 "spec/lib/sidebars/user_settings/menus/profile_menu_spec.rb": 0.8293536410001252,8858 "spec/lib/gitlab/dependency_linker/podfile_linker_spec.rb": 0.5920449559998815,8859 "spec/services/merge_requests/mergeability/check_ci_status_service_spec.rb": 0.9139969150000979,8860 "spec/rubocop/cop/gitlab/event_store_subscriber_spec.rb": 0.6398421480007528,8861 "spec/helpers/groups/settings_helper_spec.rb": 0.5783287190006376,8862 "spec/support_specs/matchers/event_store_spec.rb": 0.5261137489997054,8863 "spec/lib/gitlab/graphql/calls_gitaly/field_extension_spec.rb": 0.5513542240005336,8864 "spec/lib/gitlab/ci/mask_secret_spec.rb": 0.4484189539998624,8865 "spec/lib/gitlab/memory/upload_and_cleanup_reports_spec.rb": 0.42638738800087594,8866 "spec/models/alerting/project_alerting_setting_spec.rb": 0.7986589570009528,8867 "spec/graphql/types/error_tracking/sentry_error_stack_trace_type_spec.rb": 0.42176144900076906,8868 "spec/lib/gitlab/ci/environment_matcher_spec.rb": 0.530022019000171,8869 "spec/lib/gitlab/ci/config/yaml/result_spec.rb": 0.5386952659991948,8870 "spec/services/pages_domains/delete_service_spec.rb": 0.7594230240010802,8871 "spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/strategies_spec.rb": 0.38317775699943013,8872 "spec/lib/gitlab/ci/config/entry/tags_spec.rb": 0.41074106199994276,8873 "spec/lib/api/api_spec.rb": 0.3775399669993931,8874 "spec/lib/gitlab/template/gitignore_template_spec.rb": 0.420208180001282,8875 "spec/graphql/types/milestone_type_spec.rb": 0.43305302599947026,8876 "spec/lib/gitlab/search/sort_options_spec.rb": 0.5033734839998942,8877 "spec/workers/gitlab/github_import/import_release_attachments_worker_spec.rb": 0.5939108660004422,8878 "spec/lib/gitlab/rugged_instrumentation_spec.rb": 0.44579363400043803,8879 "spec/graphql/types/ci/runner_type_spec.rb": 0.5963522160000139,8880 "spec/lib/gitlab/usage/metrics/instrumentations/snowplow_configured_to_gitlab_collector_metric_spec.rb": 0.33179518599899893,8881 "spec/models/bulk_imports/file_transfer_spec.rb": 0.4606421919997956,8882 "spec/lib/gitlab/utils/batch_loader_spec.rb": 0.30884718999914185,8883 "spec/lib/gitlab/import/errors_spec.rb": 0.7715733820004971,8884 "spec/services/google_cloud/gcp_region_add_or_replace_service_spec.rb": 0.7863393890002044,8885 "spec/graphql/mutations/members/bulk_update_base_spec.rb": 0.5603814629994304,8886 "spec/workers/gitlab/github_import/import_pull_request_merged_by_worker_spec.rb": 0.4188539290007611,8887 "spec/lib/gitlab/database/migrations/observers/batch_details_spec.rb": 0.7076054950011894,8888 "spec/lib/bulk_imports/groups/extractors/subgroups_extractor_spec.rb": 0.6213261399989278,8889 "spec/graphql/types/admin/analytics/usage_trends/measurement_identifier_enum_spec.rb": 0.2956517029997485,8890 "spec/lib/gitlab/git/gitmodules_parser_spec.rb": 0.6097037030012871,8891 "spec/lib/gitlab/database/schema_validation/validators/extra_indexes_spec.rb": 0.5297572079998645,8892 "spec/graphql/types/container_expiration_policy_cadence_enum_spec.rb": 0.39188433500021347,8893 "spec/graphql/types/projects/service_type_spec.rb": 0.40874126100061403,8894 "spec/graphql/types/design_management/design_version_event_enum_spec.rb": 0.716262302999894,8895 "spec/lib/bulk_imports/groups/transformers/subgroup_to_entity_transformer_spec.rb": 0.4661327200010419,8896 "spec/graphql/types/packages/conan/file_metadatum_type_spec.rb": 0.33598839600017527,8897 "spec/lib/gitlab/ci/config/normalizer/factory_spec.rb": 0.4525753130001249,8898 "spec/graphql/types/container_expiration_policy_keep_enum_spec.rb": 0.39683497400073975,8899 "spec/models/concerns/transactions_spec.rb": 0.35804576100053964,8900 "spec/lib/gitlab/email/message/build_ios_app_guide_spec.rb": 0.3250487780005642,8901 "spec/lib/banzai/pipeline/emoji_pipeline_spec.rb": 0.41627191999941715,8902 "spec/graphql/types/users/email_type_spec.rb": 0.4545751330006169,8903 "spec/graphql/types/milestone_stats_type_spec.rb": 0.38145282699952077,8904 "spec/lib/sidebars/projects/super_sidebar_menus/monitor_menu_spec.rb": 0.36996152000028815,8905 "spec/lib/gitlab/metrics/dashboard/validator/custom_formats_spec.rb": 0.2834510760003468,8906 "spec/graphql/types/permission_types/user_spec.rb": 0.42153626899926167,8907 "spec/graphql/mutations/concerns/mutations/resolves_group_spec.rb": 0.42308097900058783,8908 "spec/lib/bitbucket/representation/user_spec.rb": 0.367706258999533,8909 "spec/lib/gitlab/usage/metrics/instrumentations/service_desk_email_encrypted_secrets_enabled_metric_spec.rb": 0.7856525389997842,8910 "spec/graphql/types/ci/variable_type_enum_spec.rb": 0.456562032999499938911}8912Knapsack global time execution for tests: 23m 31s8913Pending: (Failures listed here are expected and do not affect your suite's status)8914 1) Issue modules behaves like AtomicInternalId .has_internal_id Validation when presence validation is not required when creating an object does not raise an error if the internal id is blank8915 # No reason given8916 # ./spec/support/shared_examples/models/atomic_internal_id_shared_examples.rb:498917 2) Issue modules behaves like AtomicInternalId .has_internal_id Validation when presence validation is not required when updating an object does not raise an error if the internal id is blank8918 # No reason given8919 # ./spec/support/shared_examples/models/atomic_internal_id_shared_examples.rb:578920 3) Gitlab::Git::Repository#squash sparse checkout8921 # No reason given8922 # ./spec/lib/gitlab/git/repository_spec.rb:23678923 4) Gitlab::Git::Repository#squash with an ASCII-8BIT diff8924 # No reason given8925 # ./spec/lib/gitlab/git/repository_spec.rb:24238926 5) Gitlab::Git::Repository#squash with trailing whitespace in an invalid patch8927 # No reason given8928 # ./spec/lib/gitlab/git/repository_spec.rb:24358929 6) Database::BatchedBackgroundMigrationWorker behaves like it runs batched background migration jobs #perform when the base model does not exist does nothing8930 # because the base model for main exists8931 # ./spec/support/shared_examples/workers/batched_background_migration_worker_shared_examples.rb:668932 7) Database::BatchedBackgroundMigrationWorker behaves like it runs batched background migration jobs #perform when the base model does not exist logs a message indicating execution is skipped8933 # because the base model for main exists8934 # ./spec/support/shared_examples/workers/batched_background_migration_worker_shared_examples.rb:738935 8) Database::BatchedBackgroundMigrationWorker behaves like it runs batched background migration jobs #perform when the base model does exist when the tracking database is shared does nothing8936 # Skipping because database main exists8937 # ./spec/support/shared_examples/workers/batched_background_migration_worker_shared_examples.rb:968938 9) Gitlab::Database::BackgroundMigration::BatchedMigration.for_configuration doesn not filter by gitlab schemas available for the connection if the column is nor present8939 # Skipping because none of the extra databases [:ci] are setup8940 # ./spec/lib/gitlab/database/background_migration/batched_migration_spec.rb:9108941 10) Gitlab::ConfigChecker::ExternalDatabaseChecker#check with a multiple database when both databases meets minimum supported version 8942 # Skipping because none of the extra databases [:ci] are setup8943 # ./spec/lib/gitlab/config_checker/external_database_checker_spec.rb:558944 11) Gitlab::ConfigChecker::ExternalDatabaseChecker#check with a multiple database when the one of the databases does not meet minimum supported version reports deprecated database notice if the main database is using an old version8945 # Skipping because none of the extra databases [:ci] are setup8946 # ./spec/lib/gitlab/config_checker/external_database_checker_spec.rb:598947 12) Gitlab::ConfigChecker::ExternalDatabaseChecker#check with a multiple database when the one of the databases does not meet minimum supported version reports deprecated database notice if the ci database is using an old version8948 # Skipping because none of the extra databases [:ci] are setup8949 # ./spec/lib/gitlab/config_checker/external_database_checker_spec.rb:658950 13) Gitlab::ConfigChecker::ExternalDatabaseChecker#check with a multiple database when both databases do not meet minimum supported version reports deprecated database notice8951 # Skipping because none of the extra databases [:ci] are setup8952 # ./spec/lib/gitlab/config_checker/external_database_checker_spec.rb:788953Finished in 23 minutes 33 seconds (files took 45.2 seconds to load)89543691 examples, 0 failures, 13 pending8955Randomized with seed 234108956[TEST PROF INFO] Time spent in factories: 12:53.579 (54.51% of total time)8957RSpec exited with 0.8958No examples to retry, congrats!8960Not uploading cache ruby-gems-debian-bullseye-ruby-3.0-16 due to policy8961Not uploading cache gitaly-ruby-gems-debian-bullseye-ruby-3.0-16 due to policy8963Uploading artifacts...8964coverage/: found 5 matching artifact files and directories 8965crystalball/: found 2 matching artifact files and directories 8966deprecations/: found 3 matching artifact files and directories 8967knapsack/: found 3 matching artifact files and directories 8968WARNING: query_recorder/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 8969rspec/: found 14 matching artifact files and directories 8970WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 8971log/*.log: found 20 matching artifact files and directories 8972WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4031138465/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com8973WARNING: Retrying... context=artifacts-uploader error=request redirected8974Uploading artifacts as "archive" to coordinator... 201 Created id=4031138465 responseStatus=201 Created token=64_v9nzs8975Uploading artifacts...8976rspec/junit_rspec.xml: found 1 matching artifact files and directories 8977WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4031138465/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com8978WARNING: Retrying... context=artifacts-uploader error=request redirected8979Uploading artifacts as "junit" to coordinator... 201 Created id=4031138465 responseStatus=201 Created token=64_v9nzs8981Job succeeded