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

🤖 GitLab Bot 🤖
1Running with gitlab-runner 15.9.0~beta.115.g598a7c91 (598a7c91)2 on green-2.shared-gitlab-org.runners-manager.gitlab.com/default 8zCxmpPt, system ID: s_130a96ce9e653 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-8zcxmppt-project-278964-concurrent-0 via runner-8zcxmppt-shared-gitlab-org-1680168695-525c2a1a...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 | 31.56 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_k4vWL45Downloading artifacts for detect-tests (4031138213)...46Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4031138213 responseStatus=200 OK token=64_k4vWL47Downloading artifacts for retrieve-tests-metadata (4031138217)...48Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4031138217 responseStatus=200 OK token=64_k4vWL49Downloading artifacts for setup-test-env (4031138204)...50Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4031138204 responseStatus=200 OK token=64_k4vWL52Using 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.decomposed-postgresql)710Geo DB won't be set up.711$ setup_db_user_only712CREATE ROLE713GRANT714==> 'setup_db_user_only' succeeded in 0 seconds.715$ bundle exec rake db:drop db:create db:schema:load db:migrate gitlab:db:lock_writes716Dropped database 'gitlabhq_test'717Dropped database 'gitlabhq_test_ci'718Created database 'gitlabhq_test'719Created database 'gitlabhq_test_ci'720==> 'bundle exec rake db:drop db:create db:schema:load db:migrate gitlab:db:lock_writes' succeeded in 53 seconds.721$ setup_db_praefect722SELECT pg_catalog.set_config('search_path', '', false);723CREATE DATABASE praefect_test ENCODING 'UTF8';724==> 'setup_db_praefect' succeeded in 0 seconds.725$ source ./scripts/rspec_helpers.sh726$ run_timed_command "gem install knapsack --no-document"727$ gem install knapsack --no-document728Successfully installed knapsack-4.0.07291 gem installed730==> 'gem install knapsack --no-document' succeeded in 1 seconds.731$ echo -e "\e[0Ksection_start:`date +%s`:gitaly-test-spawn[collapsed=true]\r\e[0KStarting Gitaly"835$ rspec_paralellized_job "--tag ~quarantine --tag ~level:background_migration"836SKIP_FLAKY_TESTS_AUTOMATICALLY: false837RETRY_FAILED_TESTS_IN_NEW_PROCESS: true838KNAPSACK_GENERATE_REPORT: true839FLAKY_RSPEC_GENERATE_REPORT: true840KNAPSACK_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.rb841KNAPSACK_LOG_LEVEL: debug842KNAPSACK_REPORT_PATH: knapsack/rspec_unit_pg13_22_28_report.json843FLAKY_RSPEC_SUITE_REPORT_PATH: rspec/flaky/report-suite.json844FLAKY_RSPEC_REPORT_PATH: rspec/flaky/all_rspec_unit_pg13_22_28_report.json845NEW_FLAKY_RSPEC_REPORT_PATH: rspec/flaky/new_rspec_unit_pg13_22_28_report.json846SKIPPED_FLAKY_TESTS_REPORT_PATH: rspec/flaky/skipped_flaky_tests_rspec_unit_pg13_22_28_report.txt847CRYSTALBALL: 848Knapsack node specs:849spec/models/issue_spec.rb850spec/models/note_spec.rb851spec/lib/gitlab/git/repository_spec.rb852spec/services/projects/import_service_spec.rb853spec/services/issues/move_service_spec.rb854spec/policies/environment_policy_spec.rb855spec/models/commit_status_spec.rb856spec/workers/database/batched_background_migration_worker_spec.rb857spec/lib/banzai/filter/references/commit_reference_filter_spec.rb858spec/lib/gitlab/rack_attack/request_spec.rb859spec/models/award_emoji_spec.rb860spec/services/git/wiki_push_service_spec.rb861spec/workers/emails_on_push_worker_spec.rb862spec/lib/banzai/filter/references/user_reference_filter_spec.rb863spec/lib/gitlab/ci/build/rules/rule/clause/exists_spec.rb864spec/lib/gitlab/database/background_migration/batched_migration_spec.rb865spec/helpers/commits_helper_spec.rb866spec/lib/gitlab/background_migration/destroy_invalid_group_members_spec.rb867spec/models/commit_range_spec.rb868spec/finders/ci/pipelines_finder_spec.rb869spec/serializers/pipeline_serializer_spec.rb870spec/models/integrations/discord_spec.rb871spec/services/merge_requests/ff_merge_service_spec.rb872spec/lib/gitlab/import_export/import_failure_service_spec.rb873spec/lib/gitlab/bitbucket_import/importer_spec.rb874spec/lib/gitlab/git/branch_spec.rb875spec/services/snippets/bulk_destroy_service_spec.rb876spec/services/ci/pipeline_creation/cancel_redundant_pipelines_service_spec.rb877spec/lib/banzai/reference_parser/commit_range_parser_spec.rb878spec/services/discussions/update_diff_position_service_spec.rb879spec/services/projects/hashed_storage/migrate_repository_service_spec.rb880spec/lib/gitlab/kubernetes/helm/v2/init_command_spec.rb881spec/lib/gitlab/checks/single_change_access_spec.rb882spec/services/issue_links/create_service_spec.rb883spec/services/security/merge_reports_service_spec.rb884spec/rubocop/cop/rspec/misspelled_aggregate_failures_spec.rb885spec/lib/gitlab/diff/lines_unfolder_spec.rb886spec/models/ci/job_token/scope_spec.rb887spec/lib/gitlab/import_export/after_export_strategies/base_after_export_strategy_spec.rb888spec/workers/remove_expired_group_links_worker_spec.rb889spec/helpers/merge_requests_helper_spec.rb890spec/services/award_emojis/add_service_spec.rb891spec/services/ci/create_pipeline_service/cross_project_pipeline_spec.rb892spec/lib/bulk_imports/clients/http_spec.rb893spec/services/quick_actions/target_service_spec.rb894spec/lib/gitlab/ci/charts_spec.rb895spec/lib/gitlab/ci/config/entry/environment_spec.rb896spec/helpers/version_check_helper_spec.rb897spec/lib/gitlab/ci/build/context/global_spec.rb898spec/lib/gitlab/background_migration/delete_orphaned_packages_dependencies_spec.rb899spec/views/notify/import_work_items_csv_email.html.haml_spec.rb900spec/services/ci/job_artifacts/expire_project_build_artifacts_service_spec.rb901spec/lib/container_registry/migration_spec.rb902spec/lib/gitlab/background_migration/backfill_prepared_at_merge_requests_spec.rb903spec/tasks/gitlab/incoming_email_rake_spec.rb904spec/services/bulk_imports/file_download_service_spec.rb905spec/lib/sbom/package_url/encoder_spec.rb906spec/models/work_items/type_spec.rb907spec/lib/gitlab/etag_caching/middleware_spec.rb908spec/workers/stuck_merge_jobs_worker_spec.rb909spec/lib/gitlab/diff/highlight_cache_spec.rb910spec/graphql/mutations/timelogs/delete_spec.rb911spec/models/board_project_recent_visit_spec.rb912spec/lib/gitlab/jira_import_spec.rb913spec/services/repository_archive_clean_up_service_spec.rb914spec/lib/gitlab/metrics/global_search_slis_spec.rb915spec/lib/banzai/reference_parser/label_parser_spec.rb916spec/policies/namespaces/user_namespace_policy_spec.rb917spec/lib/gitlab/jira_import/issue_serializer_spec.rb918spec/presenters/group_member_presenter_spec.rb919spec/services/jira_connect_installations/proxy_lifecycle_event_service_spec.rb920spec/services/error_tracking/list_projects_service_spec.rb921spec/workers/concerns/limited_capacity/worker_spec.rb922spec/lib/gitlab/checks/push_file_count_check_spec.rb923spec/workers/new_issue_worker_spec.rb924spec/models/packages/npm/metadatum_spec.rb925spec/presenters/gitlab/blame_presenter_spec.rb926spec/lib/gitlab/utils/override_spec.rb927spec/graphql/resolvers/concerns/resolves_pipelines_spec.rb928spec/workers/packages/cleanup_package_registry_worker_spec.rb929spec/helpers/environments_helper_spec.rb930spec/models/metrics/users_starred_dashboard_spec.rb931spec/workers/ci/external_pull_requests/create_pipeline_worker_spec.rb932spec/lib/gitlab/ci/matching/runner_matcher_spec.rb933spec/lib/gitlab/auth/result_spec.rb934spec/models/concerns/sha_attribute_spec.rb935spec/services/alert_management/alerts/todo/create_service_spec.rb936spec/services/packages/rpm/parse_package_service_spec.rb937spec/workers/concerns/worker_context_spec.rb938spec/lib/gitlab/fogbugz_import/importer_spec.rb939spec/lib/atlassian/jira_connect/serializers/build_entity_spec.rb940spec/rubocop/cop/migration/batch_migrations_post_only_spec.rb941spec/lib/gitlab/audit/type/definition_spec.rb942spec/services/issuable/callbacks/milestone_spec.rb943spec/lib/api/entities/wiki_page_spec.rb944spec/lib/banzai/reference_parser/mentioned_user_parser_spec.rb945spec/lib/gitlab/import_export/base/object_builder_spec.rb946spec/graphql/mutations/incident_management/timeline_event/promote_from_note_spec.rb947spec/services/ci/update_pending_build_service_spec.rb948spec/workers/repository_cleanup_worker_spec.rb949spec/lib/gitlab/ci/pipeline/chain/populate_metadata_spec.rb950spec/lib/gitlab/background_migration_spec.rb951spec/lib/gitlab/discussions_diff/highlight_cache_spec.rb952spec/graphql/mutations/alert_management/prometheus_integration/create_spec.rb953spec/lib/gitlab/ci/pipeline/chain/seed_block_spec.rb954spec/workers/bulk_imports/pipeline_worker_spec.rb955spec/workers/merge_requests/execute_approval_hooks_worker_spec.rb956spec/services/projects/create_from_template_service_spec.rb957spec/lib/gitlab/sidekiq_logging/structured_logger_spec.rb958spec/services/metrics/dashboard/panel_preview_service_spec.rb959spec/lib/gitlab/incoming_email_spec.rb960spec/lib/gitlab/x509/tag_spec.rb961spec/services/system_notes/alert_management_service_spec.rb962spec/models/issue/email_spec.rb963spec/models/users/namespace_commit_email_spec.rb964spec/workers/error_tracking_issue_link_worker_spec.rb965spec/views/profiles/keys/_form.html.haml_spec.rb966spec/lib/gitlab/kas/client_spec.rb967spec/workers/packages/mark_package_files_for_destruction_worker_spec.rb968spec/lib/gitlab/graphql/pagination/array_connection_spec.rb969spec/lib/gitlab/github_import_spec.rb970spec/models/shard_spec.rb971spec/graphql/types/admin/analytics/usage_trends/measurement_type_spec.rb972spec/lib/gitlab/external_authorization_spec.rb973spec/lib/gitlab/web_ide/config/entry/global_spec.rb974spec/finders/groups/user_groups_finder_spec.rb975spec/policies/personal_access_token_policy_spec.rb976spec/services/import/prepare_service_spec.rb977spec/lib/gitlab/sidekiq_config_spec.rb978spec/lib/gitlab/graphql/known_operations_spec.rb979spec/graphql/types/commit_type_spec.rb980spec/models/preloaders/users_max_access_level_by_project_preloader_spec.rb981spec/serializers/analytics_summary_serializer_spec.rb982spec/models/clusters/agents/group_authorization_spec.rb983spec/services/groups/deploy_tokens/revoke_service_spec.rb984spec/services/ci/create_pipeline_service/artifacts_spec.rb985spec/rubocop/cop/migration/schedule_async_spec.rb986spec/helpers/lazy_image_tag_helper_spec.rb987spec/lib/gitlab/config_checker/external_database_checker_spec.rb988spec/lib/gitlab/ci/processable_object_hierarchy_spec.rb989spec/lib/gitlab/json_logger_spec.rb990spec/workers/gitlab/jira_import/stage/import_notes_worker_spec.rb991spec/services/test_hooks/system_service_spec.rb992spec/workers/update_project_statistics_worker_spec.rb993spec/initializers/check_forced_decomposition_spec.rb994spec/workers/object_pool/join_worker_spec.rb995spec/services/x509_certificate_revoke_service_spec.rb996spec/policies/application_setting_policy_spec.rb997spec/services/packages/debian/create_package_file_service_spec.rb998spec/services/alert_management/metric_images/upload_service_spec.rb999spec/workers/ci/build_finished_worker_spec.rb1000spec/graphql/mutations/branches/create_spec.rb1001spec/tooling/lib/tooling/find_tests_spec.rb1002spec/lib/gitlab/database/schema_validation/database_spec.rb1003spec/services/user_project_access_changed_service_spec.rb1004spec/lib/gitlab/quick_actions/timeline_text_and_date_time_separator_spec.rb1005spec/models/integrations/external_wiki_spec.rb1006spec/lib/error_tracking/collector/payload_validator_spec.rb1007spec/helpers/ci/jobs_helper_spec.rb1008spec/uploaders/object_storage/s3_spec.rb1009spec/lib/gitlab/dependency_linker/podspec_json_linker_spec.rb1010spec/serializers/issue_serializer_spec.rb1011spec/graphql/types/work_items/widget_interface_spec.rb1012spec/models/diff_viewer/server_side_spec.rb1013spec/graphql/types/work_item_id_type_spec.rb1014spec/lib/gitlab/i18n_spec.rb1015spec/workers/concerns/limited_capacity/job_tracker_spec.rb1016spec/lib/gitlab/word_diff/segments/chunk_spec.rb1017spec/views/notify/user_deactivated_email.text.erb_spec.rb1018spec/services/projects/schedule_bulk_repository_shard_moves_service_spec.rb1019spec/workers/deployments/archive_in_project_worker_spec.rb1020spec/workers/service_desk_email_receiver_worker_spec.rb1021spec/lib/container_registry/registry_spec.rb1022spec/helpers/webpack_helper_spec.rb1023spec/services/keys/create_service_spec.rb1024spec/scripts/setup/find_jh_branch_spec.rb1025spec/views/admin/application_settings/_ci_cd.html.haml_spec.rb1026spec/lib/sidebars/user_settings/menus/profile_menu_spec.rb1027spec/lib/gitlab/dependency_linker/podfile_linker_spec.rb1028spec/services/merge_requests/mergeability/check_ci_status_service_spec.rb1029spec/rubocop/cop/gitlab/event_store_subscriber_spec.rb1030spec/helpers/groups/settings_helper_spec.rb1031spec/support_specs/matchers/event_store_spec.rb1032spec/lib/gitlab/graphql/calls_gitaly/field_extension_spec.rb1033spec/lib/gitlab/ci/mask_secret_spec.rb1034spec/lib/gitlab/memory/upload_and_cleanup_reports_spec.rb1035spec/models/alerting/project_alerting_setting_spec.rb1036spec/graphql/types/error_tracking/sentry_error_stack_trace_type_spec.rb1037spec/lib/gitlab/ci/environment_matcher_spec.rb1038spec/lib/gitlab/ci/config/yaml/result_spec.rb1039spec/services/pages_domains/delete_service_spec.rb1040spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/strategies_spec.rb1041spec/lib/gitlab/ci/config/entry/tags_spec.rb1042spec/lib/api/api_spec.rb1043spec/lib/gitlab/template/gitignore_template_spec.rb1044spec/graphql/types/milestone_type_spec.rb1045spec/lib/gitlab/search/sort_options_spec.rb1046spec/workers/gitlab/github_import/import_release_attachments_worker_spec.rb1047spec/lib/gitlab/rugged_instrumentation_spec.rb1048spec/graphql/types/ci/runner_type_spec.rb1049spec/lib/gitlab/usage/metrics/instrumentations/snowplow_configured_to_gitlab_collector_metric_spec.rb1050spec/models/bulk_imports/file_transfer_spec.rb1051spec/lib/gitlab/utils/batch_loader_spec.rb1052spec/lib/gitlab/import/errors_spec.rb1053spec/services/google_cloud/gcp_region_add_or_replace_service_spec.rb1054spec/graphql/mutations/members/bulk_update_base_spec.rb1055spec/workers/gitlab/github_import/import_pull_request_merged_by_worker_spec.rb1056spec/lib/gitlab/database/migrations/observers/batch_details_spec.rb1057spec/lib/bulk_imports/groups/extractors/subgroups_extractor_spec.rb1058spec/graphql/types/admin/analytics/usage_trends/measurement_identifier_enum_spec.rb1059spec/lib/gitlab/git/gitmodules_parser_spec.rb1060spec/lib/gitlab/database/schema_validation/validators/extra_indexes_spec.rb1061spec/graphql/types/container_expiration_policy_cadence_enum_spec.rb1062spec/graphql/types/projects/service_type_spec.rb1063spec/graphql/types/design_management/design_version_event_enum_spec.rb1064spec/lib/bulk_imports/groups/transformers/subgroup_to_entity_transformer_spec.rb1065spec/graphql/types/packages/conan/file_metadatum_type_spec.rb1066spec/lib/gitlab/ci/config/normalizer/factory_spec.rb1067spec/graphql/types/container_expiration_policy_keep_enum_spec.rb1068spec/models/concerns/transactions_spec.rb1069spec/lib/gitlab/email/message/build_ios_app_guide_spec.rb1070spec/lib/banzai/pipeline/emoji_pipeline_spec.rb1071spec/graphql/types/users/email_type_spec.rb1072spec/graphql/types/milestone_stats_type_spec.rb1073spec/lib/sidebars/projects/super_sidebar_menus/monitor_menu_spec.rb1074spec/lib/gitlab/metrics/dashboard/validator/custom_formats_spec.rb1075spec/graphql/types/permission_types/user_spec.rb1076spec/graphql/mutations/concerns/mutations/resolves_group_spec.rb1077spec/lib/bitbucket/representation/user_spec.rb1078spec/lib/gitlab/usage/metrics/instrumentations/service_desk_email_encrypted_secrets_enabled_metric_spec.rb1079spec/graphql/types/ci/variable_type_enum_spec.rb1080Filter specs:1081Running specs:1082Running all node tests without filter1083spec/models/issue_spec.rb1084spec/models/note_spec.rb1085spec/lib/gitlab/git/repository_spec.rb1086spec/services/projects/import_service_spec.rb1087spec/services/issues/move_service_spec.rb1088spec/policies/environment_policy_spec.rb1089spec/models/commit_status_spec.rb1090spec/workers/database/batched_background_migration_worker_spec.rb1091spec/lib/banzai/filter/references/commit_reference_filter_spec.rb1092spec/lib/gitlab/rack_attack/request_spec.rb1093spec/models/award_emoji_spec.rb1094spec/services/git/wiki_push_service_spec.rb1095spec/workers/emails_on_push_worker_spec.rb1096spec/lib/banzai/filter/references/user_reference_filter_spec.rb1097spec/lib/gitlab/ci/build/rules/rule/clause/exists_spec.rb1098spec/lib/gitlab/database/background_migration/batched_migration_spec.rb1099spec/helpers/commits_helper_spec.rb1100spec/lib/gitlab/background_migration/destroy_invalid_group_members_spec.rb1101spec/models/commit_range_spec.rb1102spec/finders/ci/pipelines_finder_spec.rb1103spec/serializers/pipeline_serializer_spec.rb1104spec/models/integrations/discord_spec.rb1105spec/services/merge_requests/ff_merge_service_spec.rb1106spec/lib/gitlab/import_export/import_failure_service_spec.rb1107spec/lib/gitlab/bitbucket_import/importer_spec.rb1108spec/lib/gitlab/git/branch_spec.rb1109spec/services/snippets/bulk_destroy_service_spec.rb1110spec/services/ci/pipeline_creation/cancel_redundant_pipelines_service_spec.rb1111spec/lib/banzai/reference_parser/commit_range_parser_spec.rb1112spec/services/discussions/update_diff_position_service_spec.rb1113spec/services/projects/hashed_storage/migrate_repository_service_spec.rb1114spec/lib/gitlab/kubernetes/helm/v2/init_command_spec.rb1115spec/lib/gitlab/checks/single_change_access_spec.rb1116spec/services/issue_links/create_service_spec.rb1117spec/services/security/merge_reports_service_spec.rb1118spec/rubocop/cop/rspec/misspelled_aggregate_failures_spec.rb1119spec/lib/gitlab/diff/lines_unfolder_spec.rb1120spec/models/ci/job_token/scope_spec.rb1121spec/lib/gitlab/import_export/after_export_strategies/base_after_export_strategy_spec.rb1122spec/workers/remove_expired_group_links_worker_spec.rb1123spec/helpers/merge_requests_helper_spec.rb1124spec/services/award_emojis/add_service_spec.rb1125spec/services/ci/create_pipeline_service/cross_project_pipeline_spec.rb1126spec/lib/bulk_imports/clients/http_spec.rb1127spec/services/quick_actions/target_service_spec.rb1128spec/lib/gitlab/ci/charts_spec.rb1129spec/lib/gitlab/ci/config/entry/environment_spec.rb1130spec/helpers/version_check_helper_spec.rb1131spec/lib/gitlab/ci/build/context/global_spec.rb1132spec/lib/gitlab/background_migration/delete_orphaned_packages_dependencies_spec.rb1133spec/views/notify/import_work_items_csv_email.html.haml_spec.rb1134spec/services/ci/job_artifacts/expire_project_build_artifacts_service_spec.rb1135spec/lib/container_registry/migration_spec.rb1136spec/lib/gitlab/background_migration/backfill_prepared_at_merge_requests_spec.rb1137spec/tasks/gitlab/incoming_email_rake_spec.rb1138spec/services/bulk_imports/file_download_service_spec.rb1139spec/lib/sbom/package_url/encoder_spec.rb1140spec/models/work_items/type_spec.rb1141spec/lib/gitlab/etag_caching/middleware_spec.rb1142spec/workers/stuck_merge_jobs_worker_spec.rb1143spec/lib/gitlab/diff/highlight_cache_spec.rb1144spec/graphql/mutations/timelogs/delete_spec.rb1145spec/models/board_project_recent_visit_spec.rb1146spec/lib/gitlab/jira_import_spec.rb1147spec/services/repository_archive_clean_up_service_spec.rb1148spec/lib/gitlab/metrics/global_search_slis_spec.rb1149spec/lib/banzai/reference_parser/label_parser_spec.rb1150spec/policies/namespaces/user_namespace_policy_spec.rb1151spec/lib/gitlab/jira_import/issue_serializer_spec.rb1152spec/presenters/group_member_presenter_spec.rb1153spec/services/jira_connect_installations/proxy_lifecycle_event_service_spec.rb1154spec/services/error_tracking/list_projects_service_spec.rb1155spec/workers/concerns/limited_capacity/worker_spec.rb1156spec/lib/gitlab/checks/push_file_count_check_spec.rb1157spec/workers/new_issue_worker_spec.rb1158spec/models/packages/npm/metadatum_spec.rb1159spec/presenters/gitlab/blame_presenter_spec.rb1160spec/lib/gitlab/utils/override_spec.rb1161spec/graphql/resolvers/concerns/resolves_pipelines_spec.rb1162spec/workers/packages/cleanup_package_registry_worker_spec.rb1163spec/helpers/environments_helper_spec.rb1164spec/models/metrics/users_starred_dashboard_spec.rb1165spec/workers/ci/external_pull_requests/create_pipeline_worker_spec.rb1166spec/lib/gitlab/ci/matching/runner_matcher_spec.rb1167spec/lib/gitlab/auth/result_spec.rb1168spec/models/concerns/sha_attribute_spec.rb1169spec/services/alert_management/alerts/todo/create_service_spec.rb1170spec/services/packages/rpm/parse_package_service_spec.rb1171spec/workers/concerns/worker_context_spec.rb1172spec/lib/gitlab/fogbugz_import/importer_spec.rb1173spec/lib/atlassian/jira_connect/serializers/build_entity_spec.rb1174spec/rubocop/cop/migration/batch_migrations_post_only_spec.rb1175spec/lib/gitlab/audit/type/definition_spec.rb1176spec/services/issuable/callbacks/milestone_spec.rb1177spec/lib/api/entities/wiki_page_spec.rb1178spec/lib/banzai/reference_parser/mentioned_user_parser_spec.rb1179spec/lib/gitlab/import_export/base/object_builder_spec.rb1180spec/graphql/mutations/incident_management/timeline_event/promote_from_note_spec.rb1181spec/services/ci/update_pending_build_service_spec.rb1182spec/workers/repository_cleanup_worker_spec.rb1183spec/lib/gitlab/ci/pipeline/chain/populate_metadata_spec.rb1184spec/lib/gitlab/background_migration_spec.rb1185spec/lib/gitlab/discussions_diff/highlight_cache_spec.rb1186spec/graphql/mutations/alert_management/prometheus_integration/create_spec.rb1187spec/lib/gitlab/ci/pipeline/chain/seed_block_spec.rb1188spec/workers/bulk_imports/pipeline_worker_spec.rb1189spec/workers/merge_requests/execute_approval_hooks_worker_spec.rb1190spec/services/projects/create_from_template_service_spec.rb1191spec/lib/gitlab/sidekiq_logging/structured_logger_spec.rb1192spec/services/metrics/dashboard/panel_preview_service_spec.rb1193spec/lib/gitlab/incoming_email_spec.rb1194spec/lib/gitlab/x509/tag_spec.rb1195spec/services/system_notes/alert_management_service_spec.rb1196spec/models/issue/email_spec.rb1197spec/models/users/namespace_commit_email_spec.rb1198spec/workers/error_tracking_issue_link_worker_spec.rb1199spec/views/profiles/keys/_form.html.haml_spec.rb1200spec/lib/gitlab/kas/client_spec.rb1201spec/workers/packages/mark_package_files_for_destruction_worker_spec.rb1202spec/lib/gitlab/graphql/pagination/array_connection_spec.rb1203spec/lib/gitlab/github_import_spec.rb1204spec/models/shard_spec.rb1205spec/graphql/types/admin/analytics/usage_trends/measurement_type_spec.rb1206spec/lib/gitlab/external_authorization_spec.rb1207spec/lib/gitlab/web_ide/config/entry/global_spec.rb1208spec/finders/groups/user_groups_finder_spec.rb1209spec/policies/personal_access_token_policy_spec.rb1210spec/services/import/prepare_service_spec.rb1211spec/lib/gitlab/sidekiq_config_spec.rb1212spec/lib/gitlab/graphql/known_operations_spec.rb1213spec/graphql/types/commit_type_spec.rb1214spec/models/preloaders/users_max_access_level_by_project_preloader_spec.rb1215spec/serializers/analytics_summary_serializer_spec.rb1216spec/models/clusters/agents/group_authorization_spec.rb1217spec/services/groups/deploy_tokens/revoke_service_spec.rb1218spec/services/ci/create_pipeline_service/artifacts_spec.rb1219spec/rubocop/cop/migration/schedule_async_spec.rb1220spec/helpers/lazy_image_tag_helper_spec.rb1221spec/lib/gitlab/config_checker/external_database_checker_spec.rb1222spec/lib/gitlab/ci/processable_object_hierarchy_spec.rb1223spec/lib/gitlab/json_logger_spec.rb1224spec/workers/gitlab/jira_import/stage/import_notes_worker_spec.rb1225spec/services/test_hooks/system_service_spec.rb1226spec/workers/update_project_statistics_worker_spec.rb1227spec/initializers/check_forced_decomposition_spec.rb1228spec/workers/object_pool/join_worker_spec.rb1229spec/services/x509_certificate_revoke_service_spec.rb1230spec/policies/application_setting_policy_spec.rb1231spec/services/packages/debian/create_package_file_service_spec.rb1232spec/services/alert_management/metric_images/upload_service_spec.rb1233spec/workers/ci/build_finished_worker_spec.rb1234spec/graphql/mutations/branches/create_spec.rb1235spec/tooling/lib/tooling/find_tests_spec.rb1236spec/lib/gitlab/database/schema_validation/database_spec.rb1237spec/services/user_project_access_changed_service_spec.rb1238spec/lib/gitlab/quick_actions/timeline_text_and_date_time_separator_spec.rb1239spec/models/integrations/external_wiki_spec.rb1240spec/lib/error_tracking/collector/payload_validator_spec.rb1241spec/helpers/ci/jobs_helper_spec.rb1242spec/uploaders/object_storage/s3_spec.rb1243spec/lib/gitlab/dependency_linker/podspec_json_linker_spec.rb1244spec/serializers/issue_serializer_spec.rb1245spec/graphql/types/work_items/widget_interface_spec.rb1246spec/models/diff_viewer/server_side_spec.rb1247spec/graphql/types/work_item_id_type_spec.rb1248spec/lib/gitlab/i18n_spec.rb1249spec/workers/concerns/limited_capacity/job_tracker_spec.rb1250spec/lib/gitlab/word_diff/segments/chunk_spec.rb1251spec/views/notify/user_deactivated_email.text.erb_spec.rb1252spec/services/projects/schedule_bulk_repository_shard_moves_service_spec.rb1253spec/workers/deployments/archive_in_project_worker_spec.rb1254spec/workers/service_desk_email_receiver_worker_spec.rb1255spec/lib/container_registry/registry_spec.rb1256spec/helpers/webpack_helper_spec.rb1257spec/services/keys/create_service_spec.rb1258spec/scripts/setup/find_jh_branch_spec.rb1259spec/views/admin/application_settings/_ci_cd.html.haml_spec.rb1260spec/lib/sidebars/user_settings/menus/profile_menu_spec.rb1261spec/lib/gitlab/dependency_linker/podfile_linker_spec.rb1262spec/services/merge_requests/mergeability/check_ci_status_service_spec.rb1263spec/rubocop/cop/gitlab/event_store_subscriber_spec.rb1264spec/helpers/groups/settings_helper_spec.rb1265spec/support_specs/matchers/event_store_spec.rb1266spec/lib/gitlab/graphql/calls_gitaly/field_extension_spec.rb1267spec/lib/gitlab/ci/mask_secret_spec.rb1268spec/lib/gitlab/memory/upload_and_cleanup_reports_spec.rb1269spec/models/alerting/project_alerting_setting_spec.rb1270spec/graphql/types/error_tracking/sentry_error_stack_trace_type_spec.rb1271spec/lib/gitlab/ci/environment_matcher_spec.rb1272spec/lib/gitlab/ci/config/yaml/result_spec.rb1273spec/services/pages_domains/delete_service_spec.rb1274spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/strategies_spec.rb1275spec/lib/gitlab/ci/config/entry/tags_spec.rb1276spec/lib/api/api_spec.rb1277spec/lib/gitlab/template/gitignore_template_spec.rb1278spec/graphql/types/milestone_type_spec.rb1279spec/lib/gitlab/search/sort_options_spec.rb1280spec/workers/gitlab/github_import/import_release_attachments_worker_spec.rb1281spec/lib/gitlab/rugged_instrumentation_spec.rb1282spec/graphql/types/ci/runner_type_spec.rb1283spec/lib/gitlab/usage/metrics/instrumentations/snowplow_configured_to_gitlab_collector_metric_spec.rb1284spec/models/bulk_imports/file_transfer_spec.rb1285spec/lib/gitlab/utils/batch_loader_spec.rb1286spec/lib/gitlab/import/errors_spec.rb1287spec/services/google_cloud/gcp_region_add_or_replace_service_spec.rb1288spec/graphql/mutations/members/bulk_update_base_spec.rb1289spec/workers/gitlab/github_import/import_pull_request_merged_by_worker_spec.rb1290spec/lib/gitlab/database/migrations/observers/batch_details_spec.rb1291spec/lib/bulk_imports/groups/extractors/subgroups_extractor_spec.rb1292spec/graphql/types/admin/analytics/usage_trends/measurement_identifier_enum_spec.rb1293spec/lib/gitlab/git/gitmodules_parser_spec.rb1294spec/lib/gitlab/database/schema_validation/validators/extra_indexes_spec.rb1295spec/graphql/types/container_expiration_policy_cadence_enum_spec.rb1296spec/graphql/types/projects/service_type_spec.rb1297spec/graphql/types/design_management/design_version_event_enum_spec.rb1298spec/lib/bulk_imports/groups/transformers/subgroup_to_entity_transformer_spec.rb1299spec/graphql/types/packages/conan/file_metadatum_type_spec.rb1300spec/lib/gitlab/ci/config/normalizer/factory_spec.rb1301spec/graphql/types/container_expiration_policy_keep_enum_spec.rb1302spec/models/concerns/transactions_spec.rb1303spec/lib/gitlab/email/message/build_ios_app_guide_spec.rb1304spec/lib/banzai/pipeline/emoji_pipeline_spec.rb1305spec/graphql/types/users/email_type_spec.rb1306spec/graphql/types/milestone_stats_type_spec.rb1307spec/lib/sidebars/projects/super_sidebar_menus/monitor_menu_spec.rb1308spec/lib/gitlab/metrics/dashboard/validator/custom_formats_spec.rb1309spec/graphql/types/permission_types/user_spec.rb1310spec/graphql/mutations/concerns/mutations/resolves_group_spec.rb1311spec/lib/bitbucket/representation/user_spec.rb1312spec/lib/gitlab/usage/metrics/instrumentations/service_desk_email_encrypted_secrets_enabled_metric_spec.rb1313spec/graphql/types/ci/variable_type_enum_spec.rb1314Running all node tests without filter1315Running all node tests without filter1316Running 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!1317Run options: exclude {:quarantine=>true, :level=>"background_migration"}1318Test environment set up in 0.681881994 seconds1319Issue1320 Associations1321 is expected to belong to milestone required: false1322 is expected to belong to project required: false1323 is expected to belong to work_item_type class_name => WorkItems::Type required: false1324 is expected to belong to moved_to class_name => Issue required: false1325 is expected to have one moved_from class_name => Issue1326 is expected to belong to duplicated_to class_name => Issue required: false1327 is expected to belong to closed_by class_name => User required: false1328 is expected to have many assignees1329 is expected to have many user_mentions class_name => IssueUserMention1330 is expected to have many designs1331 is expected to have many design_versions1332 is expected to have one sentry_issue1333 is expected to have one alert_management_alert1334 is expected to have many alert_management_alerts1335 is expected to have many resource_milestone_events1336 is expected to have many resource_state_events1337 is expected to have and belong to many prometheus_alert_events1338 is expected to have and belong to many self_managed_prometheus_alert_events1339 is expected to have many prometheus_alerts1340 is expected to have many issue_email_participants1341 is expected to have one email1342 is expected to have many timelogs1343 is expected to have one incident_management_issuable_escalation_status1344 is expected to have many issue_customer_relations_contacts1345 is expected to have many customer_relations_contacts1346 is expected to have many incident_management_timeline_events1347 versions.most_recent1348 returns the most recent version1349 modules1350 is expected to includes the Issuable module1351 is expected to includes the Referable module1352 is expected to includes the Sortable module1353 is expected to includes the Taskable module1354 is expected to includes the MilestoneEventable module1355 is expected to includes the StateEventable module1356 behaves like AtomicInternalId1357 .has_internal_id1358 Module inclusion1359 is expected to includes the AtomicInternalId module1360 Validation1361 when presence validation is required1362 when creating an object1363 raises an error if the internal id is blank1364 when updating an object1365 raises an error if the internal id is blank1366 when presence validation is not required1367 when creating an object1368 does not raise an error if the internal id is blank (PENDING: No reason given)1369 when updating an object1370 does not raise an error if the internal id is blank (PENDING: No reason given)1371 Creating an instance1372 saves a new instance properly1373 internal id generation1374 calls InternalId.generate_next and sets internal id attribute1375 does not overwrite an existing internal id1376 when the instance has an internal ID set1377 calls InternalId.update_last_value and sets the `last_value` to that of the instance1378 unsetting the instance internal id on rollback1379 when the internal id has been changed1380 when the internal id is automatically set1381 clears it on the instance1382 when the internal id is manually set1383 does not clear it on the instance1384 when the internal id has not been changed1385 preserves the value on the instance1386 supply of internal ids1387 provides a persistent supply of IID values, sensitive to the current state1388 #reset_scope_internal_id_attribute1389 rewinds the allocated IID1390 allocates the same IID1391 validations1392 is expected not to allow :confidential to be ‹nil›1393 is expected to allow :confidential to be ‹true› or ‹false›1394 custom validations1395 due_date_after_start_date1396 when both values are not present1397 is expected to be truthy1398 when start date is present and due date is not1399 is expected to be truthy1400 when due date is present and start date is not1401 is expected to be truthy1402 when both date values are present1403 when due date is greater than start date1404 is expected to be truthy1405 when due date is equal to start date1406 is expected to be truthy1407 when due date is before start date1408 is expected to be falsey1409 adds an error message1410 issue_type1411 when a valid type1412 is expected to eq true1413 empty type1414 is expected to eq false1415 #allowed_work_item_type_change1416 old_type: :issue, new_type: :incident, is_valid: true1417 is possible to change type only between selected types1418 old_type: :incident, new_type: :issue, is_valid: true1419 is possible to change type only between selected types1420 old_type: :test_case, new_type: :issue, is_valid: true1421 is possible to change type only between selected types1422 old_type: :issue, new_type: :test_case, is_valid: true1423 is possible to change type only between selected types1424 old_type: :issue, new_type: :task, is_valid: false1425 is possible to change type only between selected types1426 old_type: :test_case, new_type: :task, is_valid: false1427 is possible to change type only between selected types1428 old_type: :incident, new_type: :task, is_valid: false1429 is possible to change type only between selected types1430 old_type: :task, new_type: :issue, is_valid: false1431 is possible to change type only between selected types1432 old_type: :task, new_type: :incident, is_valid: false1433 is possible to change type only between selected types1434 old_type: :task, new_type: :test_case, is_valid: false1435 is possible to change type only between selected types1436 confidentiality1437 when parent and child are confidential1438 does not allow to make child not-confidential1439 allows to make parent not-confidential1440 when parent and child are not-confidential1441 does not allow to make parent confidential1442 allows to make child confidential1443 callbacks1444 #ensure_metrics!1445 creates metrics after saving1446 does not create duplicate metrics for an issue1447 records current metrics1448 when metrics record is missing1449 creates the metrics record1450 #ensure_work_item_type1451 when a type was already set1452 does not fetch a work item type from the DB1453 does not fetch a work item type from the DB when updating the type1454 ensures a work item type if updated to nil1455 when no type was set1456 sets a work item type before validation1457 does not fetch type from DB if provided during update1458 #record_create_action1459 records the creation action after saving1460 behaves like issue_edit snowplow tracking1461 behaves like Snowplow event tracking with RedisHLL context1462 behaves like Snowplow event tracking1463 is emitted1464 issue namespace1465 sets the namespace_id1466 when issue is created1467 sets the namespace_id1468 when existing issue is saved1469 sets the namespace id1470 order by upvotes1471 .order_upvotes_desc1472 orders on upvotes1473 .order_upvotes_asc1474 orders on upvotes1475 .with_alert_management_alerts1476 gets only issues with alerts1477 .simple_sorts1478 includes all keys1479 .with_issue_type1480 gives issues with the given issue type1481 gives issues with the given issue type1482 .order_severity1483 sorting ascending1484 is expected to eq [#<Issue id:73 namespace34/project34#1>, #<Issue id:72 namespace33/project33#1>, #<Issue id:71 namespace32/project32#1>]1485 sorting descending1486 is expected to eq [#<Issue id:71 namespace32/project32#1>, #<Issue id:72 namespace33/project33#1>, #<Issue id:73 namespace34/project34#1>]1487 .order_title1488 sorting ascending1489 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>]1490 sorting descending1491 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>]1492 #order_by_relative_position1493 returns ordered list1494 order by escalation status1495 .order_escalation_status_asc1496 is expected to eq [#<Issue id:82 namespace39/project39#1>, #<Issue id:83 namespace40/project40#1>, #<Issue id:84 namespace41/project41#1>]1497 .order_escalation_status_desc1498 is expected to eq [#<Issue id:83 namespace40/project40#1>, #<Issue id:82 namespace39/project39#1>, #<Issue id:84 namespace41/project41#1>]1499 #sort1500 by relative_position1501 sorts asc with nulls at the end1502 #card_attributes1503 includes the author name1504 includes the assignee name1505 #close1506 sets closed_at to Time.current when an issue is closed1507 changes the state to closed1508 when an argument is provided1509 and the argument is a User1510 changes closed_by to the given user1511 and the argument is a not a User1512 does not change closed_by1513 when an argument is not provided1514 does not change closed_by1515 #reopen1516 sets closed_at to nil when an issue is reopened1517 sets closed_by to nil when an issue is reopened1518 clears moved_to_id for moved issues1519 clears duplicated_to_id for duplicated issues1520 changes the state to opened1521 #to_reference1522 when nil argument1523 returns issue id1524 returns complete path to the issue with full: true1525 when argument is a project1526 when same project1527 returns issue id1528 returns full reference with full: true1529 when cross-project in same namespace1530 returns a cross-project reference1531 when cross-project in different namespace1532 returns complete path to the issue1533 when argument is a namespace1534 when same as issue1535 returns path to the issue with the project name1536 returns full reference with full: true1537 when different to issue namespace1538 returns full path to the issue with full: true1539 #to_reference with table syntax1540 issue: project_issue, full: false, from: nil, result: lazy { "##{issue.iid}" }1541 returns correct reference1542 issue: project_issue, full: true, from: nil, result: project_issue_full_reference1543 returns correct reference1544 issue: project_issue, full: false, from: group, result: lazy { "#{project.path}##{issue.iid}" }1545 returns correct reference1546 issue: project_issue, full: true, from: group, result: project_issue_full_reference1547 returns correct reference1548 issue: project_issue, full: false, from: parent, result: project_issue_full_reference1549 returns correct reference1550 issue: project_issue, full: true, from: parent, result: project_issue_full_reference1551 returns correct reference1552 issue: project_issue, full: false, from: project, result: lazy { "##{issue.iid}" }1553 returns correct reference1554 issue: project_issue, full: true, from: project, result: project_issue_full_reference1555 returns correct reference1556 issue: project_issue, full: false, from: project_namespace, result: lazy { "##{issue.iid}" }1557 returns correct reference1558 issue: project_issue, full: true, from: project_namespace, result: project_issue_full_reference1559 returns correct reference1560 issue: project_issue, full: false, from: same_namespace_project, result: lazy { "#{project.path}##{issue.iid}" }1561 returns correct reference1562 issue: project_issue, full: true, from: same_namespace_project, result: project_issue_full_reference1563 returns correct reference1564 issue: project_issue, full: false, from: same_namespace_project_namespace, result: lazy { "#{project.path}##{issue.iid}" }1565 returns correct reference1566 issue: project_issue, full: true, from: same_namespace_project_namespace, result: project_issue_full_reference1567 returns correct reference1568 issue: project_issue, full: false, from: another_group, result: project_issue_full_reference1569 returns correct reference1570 issue: project_issue, full: true, from: another_group, result: project_issue_full_reference1571 returns correct reference1572 issue: project_issue, full: false, from: another_namespace_project, result: project_issue_full_reference1573 returns correct reference1574 issue: project_issue, full: true, from: another_namespace_project, result: project_issue_full_reference1575 returns correct reference1576 issue: project_issue, full: false, from: another_namespace_project_namespace, result: project_issue_full_reference1577 returns correct reference1578 issue: project_issue, full: true, from: another_namespace_project_namespace, result: project_issue_full_reference1579 returns correct reference1580 issue: project_issue, full: false, from: user_namespace, result: project_issue_full_reference1581 returns correct reference1582 issue: project_issue, full: true, from: user_namespace, result: project_issue_full_reference1583 returns correct reference1584 issue: group_issue, full: false, from: nil, result: lazy { "##{issue.iid}" }1585 returns correct reference1586 issue: group_issue, full: true, from: nil, result: group_issue_full_reference1587 returns correct reference1588 issue: group_issue, full: false, from: user_namespace, result: group_issue_full_reference1589 returns correct reference1590 issue: group_issue, full: true, from: user_namespace, result: group_issue_full_reference1591 returns correct reference1592 issue: group_issue, full: false, from: group, result: lazy { "##{issue.iid}" }1593 returns correct reference1594 issue: group_issue, full: true, from: group, result: group_issue_full_reference1595 returns correct reference1596 issue: group_issue, full: false, from: parent, result: lazy { "#{group.path}##{issue.iid}" }1597 returns correct reference1598 issue: group_issue, full: true, from: parent, result: group_issue_full_reference1599 returns correct reference1600 issue: group_issue, full: false, from: project, result: lazy { "#{group.path}##{issue.iid}" }1601 returns correct reference1602 issue: group_issue, full: true, from: project, result: group_issue_full_reference1603 returns correct reference1604 issue: group_issue, full: false, from: project_namespace, result: lazy { "#{group.path}##{issue.iid}" }1605 returns correct reference1606 issue: group_issue, full: true, from: project_namespace, result: group_issue_full_reference1607 returns correct reference1608 issue: group_issue, full: false, from: another_group, result: group_issue_full_reference1609 returns correct reference1610 issue: group_issue, full: true, from: another_group, result: group_issue_full_reference1611 returns correct reference1612 issue: group_issue, full: false, from: another_namespace_project, result: group_issue_full_reference1613 returns correct reference1614 issue: group_issue, full: true, from: another_namespace_project, result: group_issue_full_reference1615 returns correct reference1616 issue: group_issue, full: false, from: another_namespace_project_namespace, result: group_issue_full_reference1617 returns correct reference1618 issue: group_issue, full: true, from: another_namespace_project_namespace, result: group_issue_full_reference1619 returns correct reference1620 issue: user_issue, full: false, from: nil, result: lazy { "##{issue.iid}" }1621 returns correct reference1622 issue: user_issue, full: true, from: nil, result: user_issue_full_reference1623 returns correct reference1624 issue: user_issue, full: false, from: user_namespace, result: lazy { "##{issue.iid}" }1625 returns correct reference1626 issue: user_issue, full: true, from: user_namespace, result: user_issue_full_reference1627 returns correct reference1628 issue: user_issue, full: false, from: group, result: user_issue_full_reference1629 returns correct reference1630 issue: user_issue, full: true, from: group, result: user_issue_full_reference1631 returns correct reference1632 issue: user_issue, full: false, from: parent, result: user_issue_full_reference1633 returns correct reference1634 issue: user_issue, full: true, from: parent, result: user_issue_full_reference1635 returns correct reference1636 issue: user_issue, full: false, from: project, result: user_issue_full_reference1637 returns correct reference1638 issue: user_issue, full: true, from: project, result: user_issue_full_reference1639 returns correct reference1640 issue: user_issue, full: false, from: project_namespace, result: user_issue_full_reference1641 returns correct reference1642 issue: user_issue, full: true, from: project_namespace, result: user_issue_full_reference1643 returns correct reference1644 issue: user_issue, full: false, from: another_group, result: user_issue_full_reference1645 returns correct reference1646 issue: user_issue, full: true, from: another_group, result: user_issue_full_reference1647 returns correct reference1648 issue: user_issue, full: false, from: another_namespace_project, result: user_issue_full_reference1649 returns correct reference1650 issue: user_issue, full: true, from: another_namespace_project, result: user_issue_full_reference1651 returns correct reference1652 issue: user_issue, full: false, from: another_namespace_project_namespace, result: user_issue_full_reference1653 returns correct reference1654 issue: user_issue, full: true, from: another_namespace_project_namespace, result: user_issue_full_reference1655 returns correct reference1656 #assignee_or_author?1657 returns true for a user that is assigned to an issue1658 returns true for a user that is the author of an issue1659 returns false for a user that is not the assignee or author1660 #related_issues to relate incidents and issues1661 returns only authorized related issues for given user1662 returns issues with valid issue_link_type1663 returns issues including the link creation time1664 returns issues including the link update time1665 when a user cannot read cross project1666 only returns issues within the same project1667 #can_move?1668 user is not a member of project issue belongs to1669 is expected to eq false1670 user is reporter in project issue belongs to1671 is expected to eq true1672 issue not persisted1673 is expected to eq false1674 checking destination project also1675 destination project allowed1676 is expected to eq true1677 destination project not allowed1678 is expected to eq false1679 #moved?1680 when issue has not been moved1681 is expected not to be moved1682 when issue has already been moved1683 is expected to be moved1684 #duplicated?1685 issue not duplicated1686 is expected to eq false1687 issue already duplicated1688 is expected to eq true1689 #from_service_desk?1690 when issue author is support bot1691 is expected to be truthy1692 when issue author is not support bot1693 is expected to be falsey1694 #suggested_branch_name1695 #to_branch_name does not exists1696 returns #to_branch_name1697 #to_branch_name exists not ending with -index1698 returns #to_branch_name ending with -21699 #to_branch_name exists ending with -index1700 returns #to_branch_name ending with max index + 11701 when branch name still exists after 5 attempts1702 returns #to_branch_name ending with random characters1703 behaves like an editable mentionable1704 creates new cross-reference notes when the mentionable text is edited1705 behaves like a mentionable1706 generates a descriptive back-reference1707 extracts references from its reference property1708 creates cross-reference notes1709 when there are cached markdown fields1710 sends in cached markdown fields when appropriate1711 when there are cached markdown fields1712 refreshes markdown cache if necessary1713 when the markdown cache is stale1714 persists the refreshed cache so that it does not have to be refreshed every time1715 behaves like a Taskable1716 with multiple tasks1717 returns the correct task status1718 #tasks?1719 returns true when object has tasks1720 returns false when object has no tasks1721 with nested tasks1722 returns the correct task status1723 with an incomplete task1724 returns the correct task status1725 with tasks that are not formatted correctly1726 returns the correct task status1727 with a complete task1728 returns the correct task status1729 with tasks in blockquotes1730 returns the correct task status1731 .to_branch_name1732 parameterizes arguments and joins with dashes1733 preserves the case in the first argument1734 truncates branch name to at most 100 characters1735 truncates dangling parts of the branch name1736 takes issue branch template into account1737 #to_branch_name1738 returns a branch name with the issue title if not confidential1739 returns a generic branch name if confidential1740 #can_be_worked_on?1741 is expected to be can be worked on1742 is closed1743 is expected not to be can be worked on1744 project is forked1745 is expected not to be can be worked on1746 #participants1747 behaves like issuable participants1748 when resource parent is public1749 and users are referenced on notes1750 includes the issue author1751 includes the authors of the notes1752 and note is confidential1753 and mentions users1754 only includes users that can read the note as participants1755 using a private project1756 does not include mentioned users that do not have access to the project1757 cached counts1758 updates when assignees change1759 #visible_to_user?1760 with a project1761 returns false when feature is disabled1762 without a user1763 with issue available as public1764 returns true when the issue is publicly visible1765 returns false when the issue is not publicly visible1766 with issues available only to team members in a public project1767 returns false1768 with a user1769 with an admin user1770 when admin mode is enabled1771 behaves like issue readable by user1772 is expected to eq true1773 behaves like confidential issue readable by user1774 is expected to eq true1775 behaves like hidden issue readable by user1776 is expected to eq true1777 when admin mode is disabled1778 behaves like issue not readable by user1779 is expected to eq false1780 behaves like confidential issue not readable by user1781 is expected to eq false1782 behaves like hidden issue not readable by user1783 is expected to eq false1784 with an owner1785 behaves like issue readable by user1786 is expected to eq true1787 behaves like confidential issue readable by user1788 is expected to eq true1789 behaves like hidden issue not readable by user1790 is expected to eq false1791 with a reporter user1792 behaves like issue readable by user1793 is expected to eq true1794 behaves like confidential issue readable by user1795 is expected to eq true1796 behaves like hidden issue not readable by user1797 is expected to eq false1798 with a guest user1799 behaves like issue readable by user1800 is expected to eq true1801 behaves like confidential issue not readable by user1802 is expected to eq false1803 behaves like hidden issue not readable by user1804 is expected to eq false1805 when user is an assignee1806 behaves like issue readable by user1807 is expected to eq true1808 behaves like confidential issue readable by user1809 is expected to eq true1810 behaves like hidden issue not readable by user1811 is expected to eq false1812 when user is the author1813 behaves like issue readable by user1814 is expected to eq true1815 behaves like confidential issue readable by user1816 is expected to eq true1817 behaves like hidden issue not readable by user1818 is expected to eq false1819 with a user that is not a member1820 using a public project1821 behaves like issue readable by user1822 is expected to eq true1823 behaves like confidential issue not readable by user1824 is expected to eq false1825 behaves like hidden issue not readable by user1826 is expected to eq false1827 using an internal project1828 using an internal user1829 behaves like issue readable by user1830 is expected to eq true1831 behaves like confidential issue not readable by user1832 is expected to eq false1833 behaves like hidden issue not readable by user1834 is expected to eq false1835 using an external user1836 behaves like issue not readable by user1837 is expected to eq false1838 behaves like confidential issue not readable by user1839 is expected to eq false1840 behaves like hidden issue not readable by user1841 is expected to eq false1842 using an external user1843 behaves like issue not readable by user1844 is expected to eq false1845 behaves like confidential issue not readable by user1846 is expected to eq false1847 behaves like hidden issue not readable by user1848 is expected to eq false1849 with an external authentication service1850 is `false` when an external authorization service is enabled1851 checks the external service to determine if an issue is readable by a user1852 does not check the external service if a user does not have access to the project1853 with an admin1854 when admin mode is enabled1855 does not check the external webservice1856 when admin mode is disabled1857 checks the external service to determine if an issue is readable by the admin1858 when issue is moved to a private project1859 when user is the author of the original issue1860 behaves like issue visible if user has guest access1861 when user is not a member1862 behaves like issue not readable by user1863 is expected to eq false1864 behaves like confidential issue not readable by user1865 is expected to eq false1866 when user is a guest1867 behaves like issue readable by user1868 is expected to eq true1869 behaves like confidential issue readable by user1870 is expected to eq true1871 when user is an assignee in the original issue1872 behaves like issue visible if user has guest access1873 when user is not a member1874 behaves like issue not readable by user1875 is expected to eq false1876 behaves like confidential issue not readable by user1877 is expected to eq false1878 when user is a guest1879 behaves like issue readable by user1880 is expected to eq true1881 behaves like confidential issue readable by user1882 is expected to eq true1883 when user is not the author or an assignee in original issue1884 when user is a guest1885 behaves like issue readable by user1886 is expected to eq true1887 behaves like confidential issue not readable by user1888 is expected to eq false1889 when user is a reporter1890 behaves like issue readable by user1891 is expected to eq true1892 behaves like confidential issue readable by user1893 is expected to eq true1894 #publicly_visible?1895 using a public project1896 returns true for a regular issue1897 returns false for a confidential issue1898 using an internal project1899 returns false for a regular issue1900 returns false for a confidential issue1901 using a private project1902 returns false for a regular issue1903 returns false for a confidential issue1904 #check_for_spam?1905 support_bot?: false, visibility_level: 20, confidential: false, new_attributes: {:description=>"new"}, check_for_spam?: true1906 checks for spam when necessary1907 support_bot?: false, visibility_level: 20, confidential: false, new_attributes: {:title=>"new"}, check_for_spam?: true1908 checks for spam when necessary1909 support_bot?: false, visibility_level: 20, confidential: true, new_attributes: {:confidential=>false}, check_for_spam?: true1910 checks for spam when necessary1911 support_bot?: false, visibility_level: 20, confidential: false, new_attributes: {:confidential=>true}, check_for_spam?: false1912 checks for spam when necessary1913 support_bot?: false, visibility_level: 20, confidential: true, new_attributes: {:description=>"new"}, check_for_spam?: false1914 checks for spam when necessary1915 support_bot?: false, visibility_level: 20, confidential: false, new_attributes: {:title=>"new", :confidential=>true}, check_for_spam?: false1916 checks for spam when necessary1917 support_bot?: false, visibility_level: 20, confidential: false, new_attributes: {:description=>"original description"}, check_for_spam?: false1918 checks for spam when necessary1919 support_bot?: false, visibility_level: 20, confidential: false, new_attributes: {:weight=>3}, check_for_spam?: false1920 checks for spam when necessary1921 support_bot?: false, visibility_level: 10, confidential: false, new_attributes: {:description=>"new"}, check_for_spam?: false1922 checks for spam when necessary1923 support_bot?: false, visibility_level: 0, confidential: false, new_attributes: {:description=>"new"}, check_for_spam?: false1924 checks for spam when necessary1925 support_bot?: true, visibility_level: 20, confidential: true, new_attributes: {:confidential=>false}, check_for_spam?: true1926 checks for spam when necessary1927 support_bot?: true, visibility_level: 20, confidential: false, new_attributes: {:confidential=>true}, check_for_spam?: false1928 checks for spam when necessary1929 support_bot?: true, visibility_level: 20, confidential: true, new_attributes: {:description=>"new"}, check_for_spam?: true1930 checks for spam when necessary1931 support_bot?: true, visibility_level: 20, confidential: false, new_attributes: {:title=>"new", :confidential=>true}, check_for_spam?: true1932 checks for spam when necessary1933 support_bot?: true, visibility_level: 10, confidential: false, new_attributes: {:description=>"new"}, check_for_spam?: true1934 checks for spam when necessary1935 support_bot?: true, visibility_level: 0, confidential: false, new_attributes: {:title=>"new"}, check_for_spam?: true1936 checks for spam when necessary1937 support_bot?: true, visibility_level: 20, confidential: false, new_attributes: {:description=>"original description"}, check_for_spam?: false1938 checks for spam when necessary1939 support_bot?: true, visibility_level: 0, confidential: true, new_attributes: {:weight=>3}, check_for_spam?: false1940 checks for spam when necessary1941 removing an issue1942 refreshes the number of open issues of the project1943 .public_only1944 only returns public issues1945 .confidential_only1946 only returns confidential_only issues1947 .without_hidden1948 only returns without_hidden issues1949 .by_project_id_and_iid1950 behaves like a where_composite scope1951 we pass an empty array1952 returns a null relation1953 we pass nil1954 returns a null relation1955 we pass a singleton composite id1956 finds the first result1957 we pass group of ids1958 finds all the results1959 performance1960 is not O(N)1961 .service_desk1962 returns the service desk issue1963 behaves like throttled touch1964 #touch1965 updates the updated_at timestamp1966 updates the object at most once per minute1967 relative positioning1968 is not blocked for repositioning by default1969 behaves like a class that supports relative positioning1970 #scoped_items1971 includes all items with the same scope1972 #relative_siblings1973 includes all items with the same scope, except self1974 .move_nulls_to_end1975 moves items with null relative_position to the end1976 preserves relative position1977 moves the item near the start position when there are no existing positions1978 does not perform any moves if all items have their relative_position set1979 manages to move nulls to the end even if there is a sequence at the end1980 manages to move nulls to the end even if there is not enough space1981 manages to move nulls to the end, stacking if we cannot create enough space1982 manages to move nulls found in the relative scope1983 can move many nulls1984 does not have an N+1 issue1985 .move_nulls_to_start1986 moves items with null relative_position to the start1987 moves the item near the start position when there are no existing positions1988 preserves relative position1989 does not perform any moves if all items have their relative_position set1990 manages to move nulls to the start even if there is not enough space1991 manages to move nulls to the end, stacking if we cannot create enough space1992 #move_before1993 moves item before1994 can move the item before an item at the start1995 can move the item before an item at MIN_POSITION1996 can move the item before an item bunched up at MIN_POSITION1997 when there is no space1998 moves items correctly1999 leap-frogging to the left2000 can leap-frog STEPS times before needing to rebalance2001 there is no space to the left after moving STEPS times2002 rebalances to the right2003 #move_after2004 moves item after2005 can move the item after an item bunched up at MAX_POSITION2006 when there is no space2007 can move the item after an item at MAX_POSITION2008 moves items correctly2009 leap-frogging2010 rebalances after STEPS jumps2011 #move_to_start2012 places items at most IDEAL_DISTANCE from the start when the range is open2013 moves item to the end2014 positions the item at MIN_POSITION when there is only one space left2015 rebalances when there is already an item at the MIN_POSITION2016 deals with a run of elements at the start2017 #move_to_end2018 places items at most IDEAL_DISTANCE from the start when the range is open2019 moves item to the end2020 positions the item at MAX_POSITION when there is only one space left2021 rebalances when there is already an item at the MAX_POSITION2022 deals with a run of elements at the end2023 #move_between2024 positions item between two other2025 positions item between on top2026 positions item between to end2027 positions items even when after and before positions are the same2028 positions item in the middle of other two if distance is big enough2029 positions item closer to the middle if we are at the very top2030 positions item closer to the middle if we are at the very bottom2031 positions item in the middle of other two2032 positions item right if we pass non-sequential parameters2033 avoids N+1 queries when rebalancing other items2034 the two items are next to each other2035 behaves like moves item between2036 moves the middle item to between left and right2037 there is no space2038 behaves like moves item between2039 moves the middle item to between left and right2040 there is a bunch of items2041 handles bunches correctly2042 behaves like moves item between2043 moves the middle item to between left and right2044 when block_issue_repositioning flag is enabled for group2045 is blocked for repositioning2046 does not move issues with null position2047 behaves like versioned description2048 associations2049 is expected to have many description_versions2050 save_description_version2051 when description was changed2052 saves the old and new description for the first update2053 only saves the new description for subsequent updates2054 sets the new description version to `saved_description_version`2055 clears `saved_description_version` after another save that does not change description2056 when description was not changed2057 does not save any description version2058 #previous_updated_at2059 returns updated_at value if updated_at did not change at all2060 returns updated_at value if `previous_changes` has nil value for `updated_at`2061 returns updated_at value if previous updated_at value is not present2062 returns previous updated_at when present2063 #design_collection2064 returns a design collection2065 current designs2066 an issue has no designs2067 is expected to be empty2068 an issue only has current designs2069 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]>2070 an issue only has deleted designs2071 is expected to be empty2072 an issue has a mixture of current and deleted designs2073 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]>2074 banzai_render_context2075 sets the label_url_method in the context2076 scheduling rebalancing2077 when project in user namespace2078 behaves like schedules issues rebalancing2079 schedules rebalancing if there is no space left2080 when project in a group namespace2081 behaves like schedules issues rebalancing2082 schedules rebalancing if there is no space left2083 #allows_reviewers?2084 returns false as we do not support reviewers on issues yet2085 #issue_type_supports?2086 raises error when feature is invalid2087 #supports_time_tracking?2088 issue_type: :issue, supports_time_tracking: true2089 is expected to eq true2090 issue_type: :incident, supports_time_tracking: true2091 is expected to eq true2092 #supports_move_and_clone?2093 issue_type: :issue, supports_move_and_clone: true2094 is expected to eq true2095 issue_type: :incident, supports_move_and_clone: true2096 is expected to eq true2097 #email_participants_emails2098 returns a list of emails2099 #email_participants_downcase2100 returns a list of emails with all uppercase letters replaced with their lowercase counterparts2101 #escalation_status2102 returns the incident_management_issuable_escalation_status association2103 #expire_etag_cache2104 touches the etag cache store2105 #link_reference_pattern2106 with issue url2107 matches with expected attributes2108 with incident url2109 matches with expected attributes2110 order by closed_at2111 .order_closed_at_asc2112 orders on closed at2113 .order_closed_at_desc2114 orders on closed at2115 #full_search2116 when searching non-english terms2117 adds extra where clause to match partial index2118 adds extra where clause to match partial index2119 adds extra where clause to match partial index2120 adds extra where clause to match partial index2121Note2122 associations2123 is expected to belong to project required: false2124 is expected to belong to noteable required: false2125 is expected to belong to author class_name => User required: false2126 is expected to have many todos2127 is expected to belong to review required: false inverse_of => notes2128 modules2129 is expected to includes the Participable module2130 is expected to includes the Mentionable module2131 is expected to includes the Awardable module2132 is expected to includes the Sortable module2133 default values2134 is expected not to be system2135 validation2136 is expected to validate that the length of :note is at most 10000002137 is expected to validate that :note cannot be empty/falsy2138 is expected to validate that :project cannot be empty/falsy2139 when note is on commit2140 is expected to validate that :commit_id cannot be empty/falsy2141 is expected not to validate that :noteable_id cannot be empty/falsy2142 when note is not on commit2143 is expected not to validate that :commit_id cannot be empty/falsy2144 is expected to validate that :noteable_id cannot be empty/falsy2145 when noteable and note project differ2146 is expected to be invalid2147 when noteable and note project are the same2148 is expected to be valid2149 when project is missing for a project related note2150 is expected to be invalid2151 when noteable is a personal snippet2152 is valid without project2153 max notes limit2154 when creating a system note2155 is expected to be valid2156 when creating a user note2157 is expected not to be valid2158 when updating an existing note on a noteable that already exceeds the limit2159 is expected to be valid2160 created_at in the past2161 when creating a note not too much in the past2162 is expected to be valid2163 when creating a note too much in the past2164 is expected not to be valid2165 confidentiality2166 for existing public note2167 is not possible to change the note to confidential2168 is possible to change confidentiality from nil to false2169 for existing confidential note2170 is not possible to change the note to public2171 for a new note2172 allows to create a confidential note for an issue2173 when noteable is not allowed to have confidential notes2174 can not be set confidential2175 when note type is not allowed to be confidential2176 can not be set confidential2177 when the note is a discussion note2178 is expected to be valid2179 when replying to a note2180 when the note is reply to a confidential note2181 is expected to be valid2182 when the note is reply to a public note2183 can not be set confidential2184 when reply note is public but discussion is confidential2185 can not be set confidential2186 callbacks2187 #keep_around_commit2188 calls #keep_around_commit normally2189 skips #keep_around_commit if 'skip_keep_around_commits' is true2190 skips #keep_around_commit if 'importing' is true2191 #notify_after_create2192 calls #after_note_created on the noteable2193 #notify_after_destroy2194 calls #after_note_destroyed on the noteable2195 does not error if noteable is nil2196 sets internal flag2197 when confidential is `true`2198 is expected to equal true2199 when confidential is `false`2200 is expected to equal false2201 when confidential is `nil`2202 is expected to equal false2203 Commit notes2204 is accessible through #noteable2205 saves a valid note2206 is recognized by #for_commit?2207 keeps the commit around2208 does not generate N+1 queries for participants2209 authorization2210 read2211 is expected to be falsey2212 is expected to be truthy2213 is expected to be falsey2214 write2215 is expected to be falsey2216 is expected to be truthy2217 is expected to be falsey2218 admin2219 is expected to be falsey2220 is expected to be truthy2221 is expected to be falsey2222 behaves like an editable mentionable2223 creates new cross-reference notes when the mentionable text is edited2224 behaves like a mentionable2225 generates a descriptive back-reference2226 extracts references from its reference property2227 creates cross-reference notes2228 when there are cached markdown fields2229 sends in cached markdown fields when appropriate2230 when there are cached markdown fields2231 refreshes markdown cache if necessary2232 when the markdown cache is stale2233 persists the refreshed cache so that it does not have to be refreshed every time2234 #all_references2235 reads the rendered note body from the cache2236 editable?2237 returns true2238 returns false2239 noteable_author?2240 when note is on commit2241 if user is the noteable author2242 returns true2243 if user is not the noteable author2244 returns false2245 when note is on issue2246 if user is the noteable author2247 returns true2248 if user is not the noteable author2249 returns false2250 last_edited_at2251 with last_edited_at2252 returns last_edited_at2253 without last_edited_at2254 returns updated_at2255 edited?2256 with updated_by2257 returns true2258 without updated_by2259 returns false2260 #confidential?2261 when note is not confidential2262 is false when a noteable is not confidential2263 is false when noteable can't be confidential2264 when include_noteable is set to true2265 is true when a noteable is confidential2266 when include_noteable is not set to true2267 is false when a noteable is confidential2268 when note is confidential2269 is true even when a noteable is not confidential2270 #system_note_visible_for?2271 when project is public2272 behaves like users with note access2273 returns true2274 when group is private2275 returns visible but not readable for non-member user2276 returns visible but not readable for a nil user2277 behaves like users with note access2278 returns true2279 #system_note_viewable_by?(user)2280 when system_note_metadata is not present2281 returns true2282 system_note_metadata isn't of type 'branch' or 'contact'2283 returns true2284 system_note_metadata is of type 'branch'2285 user doesn't have :download_code ability2286 returns false2287 user has the :download_code ability2288 returns true2289 system_note_metadata is of type 'contact'2290 user doesn't have :read_crm_contact ability2291 returns false2292 user has the :read_crm_contact ability2293 returns true2294 system_note_visible_for?2295 when there is one reference in note2296 behaves like checks references2297 returns false2298 returns true2299 returns true if user visible reference count set2300 returns false if user visible reference count set but does not match total reference count2301 returns false if ref count is 02302 when there is a reference to a label2303 behaves like checks references2304 returns false2305 returns true2306 returns true if user visible reference count set2307 returns false if user visible reference count set but does not match total reference count2308 returns false if ref count is 02309 when there are two references in note2310 behaves like checks references2311 returns false2312 returns true2313 returns true if user visible reference count set2314 returns false if user visible reference count set but does not match total reference count2315 returns false if ref count is 02316 when there is a private issue and user reference2317 behaves like checks references2318 returns false2319 returns true2320 returns true if user visible reference count set2321 returns false if user visible reference count set but does not match total reference count2322 returns false if ref count is 02323 when there is a publicly visible user reference2324 returns true for other users2325 returns true for anonymous users2326 #system_note_with_references?2327 falsey for user-generated notes2328 when the note might contain cross references2329 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 delegates to the cross-reference regex2348 delegates to the cross-reference regex2349 when the note cannot contain cross references2350 scan for a `mentioned in` prefix2351 when system note metadata is not present2352 delegates to the system note service2353 with a system note2354 with :label action2355 is expected to be falsy2356 behaves like system_note_metadata includes note action2357 delegates to the cross-reference regex2358 with cross reference label note2359 is expected to be truthy2360 with :milestone action2361 is expected to be falsy2362 behaves like system_note_metadata includes note action2363 delegates to the cross-reference regex2364 with cross reference milestone note2365 is expected to be truthy2366 clear_blank_line_code!2367 clears a blank line code before validation2368 #participants2369 includes the note author2370 #start_of_discussion?2371 returns true when note is the start of a discussion2372 returns false when note is a reply2373 .find_discussion2374 returns a discussion with multiple notes2375 .grouped_diff_discussions2376 active diff discussions2377 includes active discussions2378 doesn't include outdated discussions2379 groups the discussions by line code2380 with image discussions2381 groups image discussions by file identifier2382 groups text discussions by line code2383 diff discussions for older diff refs2384 for diff refs a discussion was created at2385 includes discussions that were created then2386 groups the discussions by original line code2387 for diff refs a discussion was last active at2388 includes discussions that were last active2389 groups the discussions by line code2390 .simple_sorts2391 does not contain name sorts2392 .cherry_picked_merge_requests2393 returns merge requests that match the given merge commit2394 #for_work_item?2395 returns true for a work item2396 returns false for an issue2397 #for_project_snippet?2398 returns true for a project snippet note2399 returns false for a personal snippet note2400 #for_personal_snippet?2401 returns false for a project snippet note2402 returns true for a personal snippet note2403 #for_design2404 is true when the noteable is a design2405 #to_ability_name2406 returns note2407 #noteable_ability_name2408 returns snippet for a project snippet note2409 returns snippet for a personal snippet note2410 returns merge_request for an MR note2411 returns issue for an issue note2412 returns commit for a commit note2413 returns alert_management_alert for an alert note2414 #cache_markdown_field2415 note for a project snippet2416 skips project check2417 note for a personal snippet2418 does not skip project check2419 #can_be_discussion_note?2420 for a note on a merge request2421 returns true2422 for a note on an issue2423 returns true2424 for a note on a commit2425 returns true2426 for a note on a snippet2427 returns true2428 for a diff note on merge request2429 returns false2430 for a diff note on commit2431 returns false2432 for a discussion note2433 returns false2434 #discussion_class2435 when the note is displayed out of context2436 returns OutOfContextDiscussion2437 when the note is displayed in the original context2438 returns IndividualNoteDiscussion2439 #discussion_id2440 when it is newly created2441 has a discussion id2442 when it didn't store a discussion id before2443 has a discussion id2444 when the note is displayed out of context2445 overrides the discussion id2446 #to_discussion2447 returns a discussion with just this note2448 #discussion2449 when the note is part of a discussion2450 returns the discussion this note is in2451 when the note is not part of a discussion2452 returns a discussion with just this note2453 #part_of_discussion?2454 for a regular note2455 returns false2456 for a diff note2457 returns true2458 for a discussion note2459 returns true2460 #in_reply_to?2461 for a note2462 when part of a discussion2463 checks if the note is in reply to the other discussion2464 when not part of a discussion2465 checks if the note is in reply to the other noteable2466 for a discussion2467 when part of the same discussion2468 returns true2469 when not part of the same discussion2470 returns false2471 for a noteable2472 when a comment on the same noteable2473 returns true2474 when not a comment on the same noteable2475 returns false2476 #references2477 when part of a discussion2478 references all earlier notes in the discussion2479 when not part of a discussion2480 returns the noteable2481 expiring ETag cache2482 expires cache for note's issue when note is saved2483 expires cache for note's issue when note is destroyed2484 when issuable etag caching is disabled2485 does not store cache key2486 for merge requests2487 when adding a note to the MR2488 expires the MR note etag cache2489 when adding a note to a commit on the MR2490 expires the MR note etag cache2491 #with_notes_filter2492 when notes filter is nil2493 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>2494 when notes filter is set to all notes2495 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>2496 when notes filter is set to only comments2497 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>2498 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>2499 #parent2500 returns project for project notes2501 returns nil for personal snippet note2502 scopes2503 .for_note_or_capitalized_note2504 returns the expected matching note2505 returns the expected capitalized note2506 does not support pattern matching2507 .like_note_or_capitalized_note2508 returns the expected matching note2509 returns the expected capitalized note2510 supports pattern matching2511 .with_suggestions2512 returns the correct note2513 .inc_relations_for_view2514 when noteable can not have diffs2515 does not include additional associations2516 when noteable is not set2517 includes additional diff associations2518 when noteable can have diffs2519 includes additional diff associations2520 banzai_render_context2521 when noteable is a merge request2522 sets the label_url_method in the context2523 when noteable is an issue2524 sets the label_url_method in the context2525 when noteable is a personal snippet2526 sets the parent user in the context2527 #parent_user2528 returns the author of a personal snippet2529 returns nil for project snippet2530 returns nil when noteable is not a snippet2531 #skip_notification?2532 when there is no review2533 is expected to be falsey2534 when the review exists2535 is expected to be truthy2536 #attachment2537 is cleaned up correctly when project is destroyed2538 #post_processed_cache_key2539 returns cache key and author cache key by default2540 when note has no author2541 returns cache key only2542 when note has redacted_note_html2543 returns cache key with redacted_note_html sha2544 #commands_changes2545 only returns allowed keys2546 #bump_updated_at2547 sets updated_at to the current timestamp2548 with legacy edited note2549 copies updated_at to last_edited_at before bumping the timestamp2550 #note2551 behaves like note that replaces task for checklist item in body text2552 when note is not a system note2553 is expected to eq "marked the task **task 1** as completed"2554 when note is a system note2555 when note noteable_type is not Issue2556 is expected to eq "marked the task **task 1** as completed"2557 when note noteable_type is Issue2558 is expected to eq "marked the checklist item **task 1** as completed"2559 context when note and cache are null (happens in bulk insert)2560 is expected to be in [nil, ""]2561 behaves like note that replaces task for checklist item in body text2562 when note is not a system note2563 is expected to eq "marked the task **task 1** as incomplete"2564 when note is a system note2565 when note noteable_type is not Issue2566 is expected to eq "marked the task **task 1** as incomplete"2567 when note noteable_type is Issue2568 is expected to eq "marked the checklist item **task 1** as incomplete"2569 context when note and cache are null (happens in bulk insert)2570 is expected to be in [nil, ""]2571 #note_html2572 behaves like note that replaces task for checklist item in body text2573 when note is not a system note2574 is expected to eq "<p data-sourcepos=\"1:1-1:48\" dir=\"auto\">marked the task <strong>task 1</strong> as completed</p>"2575 when note is a system note2576 when note noteable_type is not Issue2577 is expected to eq "<p data-sourcepos=\"1:1-1:48\" dir=\"auto\">marked the task <strong>task 1</strong> as completed</p>"2578 when note noteable_type is Issue2579 is expected to eq "<p data-sourcepos=\"1:1-1:48\" dir=\"auto\">marked the checklist item <strong>task 1</strong> as completed</p>"2580 context when note and cache are null (happens in bulk insert)2581 is expected to be in [nil, ""]2582 behaves like note that replaces task for checklist item in body text2583 when note is not a system note2584 is expected to eq "<p data-sourcepos=\"1:1-1:48\" dir=\"auto\">marked the task <strong>task 1</strong> as incomplete</p>"2585 when note is a system note2586 when note noteable_type is not Issue2587 is expected to eq "<p data-sourcepos=\"1:1-1:48\" dir=\"auto\">marked the task <strong>task 1</strong> as incomplete</p>"2588 when note noteable_type is Issue2589 is expected to eq "<p data-sourcepos=\"1:1-1:48\" dir=\"auto\">marked the checklist item <strong>task 1</strong> as incomplete</p>"2590 context when note and cache are null (happens in bulk insert)2591 is expected to be in [nil, ""]2592 #issuable_ability_name2593 when not confidential note2594 is expected to eq :read_note2595 when confidential note2596 is expected to eq :read_internal_note2597 #exportable_record?2598 when not a system note2599 is expected to be truthy2600 with system note2601 returns `false` when the user cannot read the note2602 when user can read the note2603 is expected to be truthy2604Gitlab::Git::Repository2605 Respond to2606 is expected to respond to #root_ref2607 is expected to respond to #tags2608 #root_ref2609 returns UTF-82610 gets the branch name from GitalyClient2611 behaves like wrapping gRPC errors2612 wraps gRPC not found error2613 wraps gRPC unknown error2614 #create_repository2615 behaves like wrapping gRPC errors2616 wraps gRPC not found error2617 wraps gRPC unknown error2618 #branch_names2619 has TestRepo::BRANCH_SHA.size elements2620 returns UTF-82621 is expected to include "master"2622 is expected not to include "branch-from-space"2623 behaves like wrapping gRPC errors2624 wraps gRPC not found error2625 wraps gRPC unknown error2626 #tag_names2627 is expected to be a kind of Array2628 has some elements2629 returns UTF-82630 is expected to include "v1.0.0"2631 is expected not to include "v5.0.0"2632 #last2633 is expected to eq "v1.1.1"2634 behaves like wrapping gRPC errors2635 wraps gRPC not found error2636 wraps gRPC unknown error2637 #tags2638 behaves like wrapping gRPC errors2639 wraps gRPC not found error2640 wraps gRPC unknown error2641 #archive_metadata2642 sets CommitId to the commit SHA2643 sets ArchivePrefix to the expected prefix2644 sets ArchivePath to the expected globally-unique path2645 path is set2646 appends the path to the prefix2647 append_sha varies archive path and filename2648 append_sha: true, ref: "master", expected_prefix: "gitlab-git-test-master-b83d6e391c22777fca1ed3012fce84f633d7fed0"2649 is expected to eq "gitlab-git-test-master-b83d6e391c22777fca1ed3012fce84f633d7fed0"2650 is expected to eq "/tmp/project-301/b83d6e391c22777fca1ed3012fce84f633d7fed0/@v2/gitlab-git-test-master-b83d6e391c22777fca1ed3012fce84f633d7fed0.tar.gz"2651 append_sha: true, ref: "b83d6e391c22777fca1ed3012fce84f633d7fed0", expected_prefix: "gitlab-git-test-b83d6e391c22777fca1ed3012fce84f633d7fed0-b83d6e391c22777fca1ed3012fce84f633d7fed0"2652 is expected to eq "gitlab-git-test-b83d6e391c22777fca1ed3012fce84f633d7fed0-b83d6e391c22777fca1ed3012fce84f633d7fed0"2653 is expected to eq "/tmp/project-301/b83d6e391c22777fca1ed3012fce84f633d7fed0/@v2/gitlab-git-test-b83d6e391c22777fca1ed3012fce84f633d7fed0-b83d6e391c22777fca1ed3012fce84f633d7fed0.tar.gz"2654 append_sha: false, ref: "master", expected_prefix: "gitlab-git-test-master"2655 is expected to eq "gitlab-git-test-master"2656 is expected to eq "/tmp/project-301/b83d6e391c22777fca1ed3012fce84f633d7fed0/@v2/gitlab-git-test-master.tar.gz"2657 append_sha: false, ref: "b83d6e391c22777fca1ed3012fce84f633d7fed0", expected_prefix: "gitlab-git-test-b83d6e391c22777fca1ed3012fce84f633d7fed0"2658 is expected to eq "gitlab-git-test-b83d6e391c22777fca1ed3012fce84f633d7fed0"2659 is expected to eq "/tmp/project-301/b83d6e391c22777fca1ed3012fce84f633d7fed0/@v2/gitlab-git-test-b83d6e391c22777fca1ed3012fce84f633d7fed0.tar.gz"2660 append_sha: nil, ref: "master", expected_prefix: "gitlab-git-test-master-b83d6e391c22777fca1ed3012fce84f633d7fed0"2661 is expected to eq "gitlab-git-test-master-b83d6e391c22777fca1ed3012fce84f633d7fed0"2662 is expected to eq "/tmp/project-301/b83d6e391c22777fca1ed3012fce84f633d7fed0/@v2/gitlab-git-test-master-b83d6e391c22777fca1ed3012fce84f633d7fed0.tar.gz"2663 append_sha: nil, ref: "b83d6e391c22777fca1ed3012fce84f633d7fed0", expected_prefix: "gitlab-git-test-b83d6e391c22777fca1ed3012fce84f633d7fed0"2664 is expected to eq "gitlab-git-test-b83d6e391c22777fca1ed3012fce84f633d7fed0"2665 is expected to eq "/tmp/project-301/b83d6e391c22777fca1ed3012fce84f633d7fed0/@v2/gitlab-git-test-b83d6e391c22777fca1ed3012fce84f633d7fed0.tar.gz"2666 format varies archive path and filename2667 format: nil, expected_extension: "tar.gz"2668 is expected to eq "gitlab-git-test-master-b83d6e391c22777fca1ed3012fce84f633d7fed0"2669 is expected to eq "/tmp/project-301/b83d6e391c22777fca1ed3012fce84f633d7fed0/@v2/gitlab-git-test-master-b83d6e391c22777fca1ed3012fce84f633d7fed0.tar.gz"2670 format: "madeup", expected_extension: "tar.gz"2671 is expected to eq "gitlab-git-test-master-b83d6e391c22777fca1ed3012fce84f633d7fed0"2672 is expected to eq "/tmp/project-301/b83d6e391c22777fca1ed3012fce84f633d7fed0/@v2/gitlab-git-test-master-b83d6e391c22777fca1ed3012fce84f633d7fed0.tar.gz"2673 format: "tbz2", expected_extension: "tar.bz2"2674 is expected to eq "gitlab-git-test-master-b83d6e391c22777fca1ed3012fce84f633d7fed0"2675 is expected to eq "/tmp/project-301/b83d6e391c22777fca1ed3012fce84f633d7fed0/@v2/gitlab-git-test-master-b83d6e391c22777fca1ed3012fce84f633d7fed0.tar.bz2"2676 format: "zip", expected_extension: "zip"2677 is expected to eq "gitlab-git-test-master-b83d6e391c22777fca1ed3012fce84f633d7fed0"2678 is expected to eq "/tmp/project-301/b83d6e391c22777fca1ed3012fce84f633d7fed0/@v2/gitlab-git-test-master-b83d6e391c22777fca1ed3012fce84f633d7fed0.zip"2679 #size2680 is expected to be > 02681 #to_s2682 is expected to eq "<Gitlab::Git::Repository: namespace395/project397>"2683 #object_directory_size2684 is expected to eq 20482685 #empty?2686 is expected not to be empty2687 #ref_names2688 is expected to be a kind of Array2689 #first2690 is expected to eq "'test'"2691 #last2692 is expected to eq "v1.1.1"2693 #submodule_url_for2694 is expected to eq "git://github.com/randx/six.git"2695 is expected to eq "git://github.com/randx/six.git"2696 is expected to eq nil2697 uncommitted submodule dir2698 is expected to eq nil2699 tags2700 is expected to eq "git://github.com/randx/six.git"2701 no .gitmodules at commit2702 is expected to eq nil2703 no gitlink entry2704 is expected to eq nil2705 #submodule_urls_for2706 returns url mappings for submodules2707 #commit_count2708 is expected to eq 372709 is expected to eq 92710 is expected to eq 02711 behaves like wrapping gRPC errors2712 wraps gRPC not found error2713 wraps gRPC unknown error2714 #diverging_commit_count2715 counts 0 for the same branch2716 max count does not truncate results2717 left: 1, right: 1, expected: [1, 1]2718 returns the correct count bounding at max_count2719 left: 4, right: 4, expected: [4, 4]2720 returns the correct count bounding at max_count2721 left: 2, right: 2, expected: [2, 2]2722 returns the correct count bounding at max_count2723 left: 2, right: 4, expected: [2, 4]2724 returns the correct count bounding at max_count2725 left: 4, right: 2, expected: [4, 2]2726 returns the correct count bounding at max_count2727 left: 10, right: 10, expected: [10, 10]2728 returns the correct count bounding at max_count2729 max count truncates results2730 left: 1, right: 1, max_count: 12731 returns the correct count bounding at max_count2732 left: 4, right: 4, max_count: 42733 returns the correct count bounding at max_count2734 left: 2, right: 2, max_count: 32735 returns the correct count bounding at max_count2736 left: 2, right: 4, max_count: 32737 returns the correct count bounding at max_count2738 left: 4, right: 2, max_count: 52739 returns the correct count bounding at max_count2740 left: 10, right: 10, max_count: 102741 returns the correct count bounding at max_count2742 behaves like wrapping gRPC errors2743 wraps gRPC not found error2744 wraps gRPC unknown error2745 #has_local_branches?2746 check for local branches2747 is expected to eq true2748 #delete_branch2749 deletes a branch2750 deletes a fully qualified branch2751 #delete_refs2752 deletes the ref2753 deletes all refs2754 does not fail when deleting an empty list of refs2755 raises an error if it failed2756 #branch_names_contains_sha2757 displays that branch2758 when limit is provided2759 displays limited number of branches2760 #refs_hash2761 has as many entries as branches and tags2762 has valid commit ids as keys2763 does not error when dereferenced_target is nil2764 #fetch_remote2765 delegates to the gitaly RepositoryService2766 behaves like wrapping gRPC errors2767 wraps gRPC not found error2768 wraps gRPC unknown error2769 #search_files_by_content2770 has 2 items2771 has the correct matching line2772 #search_files_by_regexp2773 when sending a valid regexp2774 returns matched files2775 when sending an ivalid regexp2776 raises error2777 when the ref doesn't exist2778 returns an empty array2779 #search_files_by_name2780 when sending a valid name2781 returns matched files2782 when sending a name with space2783 returns matched files2784 when sending a name with special ASCII characters2785 returns matched files2786 when sending a non-existing name2787 raises error2788 #find_remote_root_ref2789 gets the remote root ref from GitalyClient2790 returns UTF-82791 returns nil when remote name is nil2792 returns nil when remote name is empty2793 behaves like wrapping gRPC errors2794 wraps gRPC not found error2795 wraps gRPC unknown error2796 #log2797 when Gitaly find_commits feature is enabled2798 behaves like repository log2799 where 'follow' == true2800 and 'path' is a directory2801 does not follow renames2802 and 'path' is a file that matches the new filename2803 without offset2804 follows renames2805 with offset=12806 follows renames and skip the latest commit2807 with offset=1 and limit=12808 follows renames, skip the latest commit and return only one commit2809 with offset=1 and limit=22810 follows renames, skip the latest commit and return only two commits2811 with offset=22812 follows renames and skip the latest commit2813 with offset=2 and limit=12814 follows renames, skip the two latest commit and return only one commit2815 with offset=2 and limit=22816 follows renames, skip the two latest commit and return only one commit2817 and 'path' is a file that matches the old filename2818 does not follow renames2819 unknown ref2820 returns an empty array2821 where 'follow' == false2822 and 'path' is a directory2823 does not follow renames2824 and 'path' is a file that matches the new filename2825 does not follow renames2826 and 'path' is a file that matches the old filename2827 does not follow renames2828 where provides 'after' timestamp2829 returns commits on or after that timestamp2830 where provides 'before' timestamp2831 returns commits on or before that timestamp2832 when multiple paths are provided2833 only returns commits matching at least one path2834 limit validation2835 limit: 02836 is expected to raise ArgumentError2837 limit: nil2838 is expected to raise ArgumentError2839 limit: ""2840 is expected to raise ArgumentError2841 limit: "foo"2842 is expected to raise ArgumentError2843 with all2844 returns a list of commits2845 #blobs2846 single revision2847 behaves like a blob enumeration2848 enumerates blobs2849 multiple revisions2850 behaves like a blob enumeration2851 enumerates blobs2852 pseudo revisions2853 behaves like a blob enumeration2854 enumerates blobs2855 blank revisions2856 behaves like a blob enumeration2857 enumerates blobs2858 #new_blobs2859 with a single revision2860 behaves like #new_blobs with revisions2861 enumerates new blobs2862 memoizes results2863 with a single-entry array2864 behaves like #new_blobs with revisions2865 enumerates new blobs2866 memoizes results2867 with multiple revisions2868 behaves like #new_blobs with revisions2869 enumerates new blobs2870 memoizes results2871 with partially blank revisions2872 behaves like #new_blobs with revisions2873 enumerates new blobs2874 memoizes results2875 with repeated revisions2876 behaves like #new_blobs with revisions2877 enumerates new blobs2878 memoizes results2879 with preexisting commits2880 behaves like #new_blobs with revisions2881 enumerates new blobs2882 memoizes results2883 with a single nil newrev2884 behaves like #new_blobs without revisions2885 returns an empty array2886 with a single zero newrev2887 behaves like #new_blobs without revisions2888 returns an empty array2889 with an empty array2890 behaves like #new_blobs without revisions2891 returns an empty array2892 with array containing only empty refs2893 behaves like #new_blobs without revisions2894 returns an empty array2895 #new_commits2896 enumerates commits2897 #count_commits_between2898 is expected to eq 292899 #raw_changes_between2900 initial commit2901 returns the changes2902 with an invalid rev2903 returns an error2904 with valid revs2905 returns the changes2906 #merge_base2907 from: "master", to: "feature", result: "ae73cb07c9eeaf35924a10f713b364d32b2dd34f"2908 is expected to eq "ae73cb07c9eeaf35924a10f713b364d32b2dd34f"2909 from: "feature", to: "master", result: "ae73cb07c9eeaf35924a10f713b364d32b2dd34f"2910 is expected to eq "ae73cb07c9eeaf35924a10f713b364d32b2dd34f"2911 from: "master", to: "foobar", result: nil2912 is expected to eq nil2913 from: "foobar", to: "master", result: nil2914 is expected to eq nil2915 #count_commits2916 extended commit counting2917 with after timestamp2918 returns the number of commits after timestamp2919 with before timestamp2920 returns the number of commits before timestamp2921 with max_count2922 returns the number of commits with path2923 with path2924 returns the number of commits with path2925 with option :from and option :to2926 returns the number of commits ahead for master..feature2927 returns the number of commits ahead for feature..master2928 with option :left_right2929 returns the number of commits for master..feature2930 with max_count2931 returns the number of commits2932 with max_count2933 returns the number of commits up to the passed limit2934 with all2935 returns the number of commits in the whole repository2936 without all or ref being specified2937 raises an ArgumentError2938 #find_branch2939 returns a Branch for master2940 handles non-existent branch2941 when branch is ambiguous2942 returns nil for ambiguous branch2943 #branches2944 with local and remote branches2945 returns the local and remote branches2946 behaves like wrapping gRPC errors2947 wraps gRPC not found error2948 wraps gRPC unknown error2949 #branch_count2950 returns the number of branches2951 with local and remote branches2952 returns the count of local branches2953 #merged_branch_names2954 when branch names are passed2955 only returns the names we are asking2956 does not return unmerged branch names2957 when no root ref is available2958 returns empty list2959 when no branch names are specified2960 returns all merged branch names except for identical one2961 #diff_stats2962 returns a DiffStatsCollection2963 yields Gitaly::DiffStats objects2964 returns no Gitaly::DiffStats when SHAs are invalid2965 returns no Gitaly::DiffStats when there is a nil SHA2966 returns no Gitaly::DiffStats when there is a BLANK_SHA2967 #find_changed_paths2968 returns a list of paths2969 returns no paths when SHAs are invalid2970 returns a list of paths even when containing a blank ref2971 returns no paths when the commits are nil2972 #ls_files2973 read every file paths of master branch2974 reads full file paths of master branch2975 does not read submodule directory and empty directory of master branch2976 does not include 'nil'2977 returns empty array when not existed branch2978 returns valid utf-8 data2979 #copy_gitattributes2980 raises an error with invalid ref2981 when forcing encoding issues2982 doesn't raise with a valid unicode ref2983 #gitattribute2984 with gitattributes2985 returns matching language attribute2986 returns matching language attribute with additional options2987 returns nil if nothing matches2988 without gitattributes2989 returns nil2990 #ref_exists?2991 returns true for an existing tag2992 returns false for a non-existing tag2993 raises an ArgumentError for an empty string2994 raises an ArgumentError for an invalid ref2995 #tag_exists?2996 returns true for an existing tag2997 returns false for a non-existing tag2998 #branch_exists?2999 returns true for an existing branch3000 returns false for a non-existing branch3001 returns false when using an invalid branch name3002 #local_branches3003 returns the local branches3004 returns a Branch with UTF-8 fields3005 gets the branches from GitalyClient3006 behaves like wrapping gRPC errors3007 wraps gRPC not found error3008 wraps gRPC unknown error3009 #find_tag3010 returns a tag3011 when asking for a non-existent tag3012 behaves like a nonexistent tag3013 returns nil3014 when Gitaly returns Internal error3015 behaves like a nonexistent tag3016 returns nil3017 when Gitaly returns tag_not_found error3018 behaves like a nonexistent tag3019 returns nil3020 #languages3021 returns exactly the expected results3022 uses the repository's HEAD when no ref is passed3023 #license3024 when no license file can be found3025 is expected to be nil3026 when an mit license is found3027 is expected to have attributes {:key => "mit"}3028 when license is not recognized3029 is expected to have attributes {:key => "other", :nickname => "LICENSE"}3030 #fetch_source_branch!3031 when the branch exists3032 when the commit does not exist locally3033 writes the ref3034 when the commit exists locally3035 writes the ref3036 when the branch does not exist3037 does not write the ref3038 #rm_branch3039 removes the branch from the repo3040 #write_ref3041 writes the HEAD3042 writes other refs3043 validations3044 ref_path: "foo bar", ref: "123"3045 raises ArgumentError3046 ref_path: "foobar", ref: "12\u00003"3047 raises ArgumentError3048 #list_refs3049 returns a list of branches with their head commit3050 filters by pattern3051 with pointing_at_oids and peel_tags options3052 filters by target OIDs3053 returns peeled_target for annotated tags3054 #refs_by_oid3055 returns a list of refs from a OID3056 returns a single ref from a OID3057 returns empty for unknown ID3058 returns nil for an empty repo3059 #set_full_path3060 writes full_path to gitaly3061 it is given an empty path3062 does not write it to disk3063 repository does not exist3064 raises NoRepository and does not call SetFullPath3065 #full_path3066 returns the full path3067 #merge_to_ref3068 generates a commit in the target_ref3069 does not change the right branch HEAD3070 #merge3071 can perform a merge3072 returns nil if there was a concurrent branch update3073 #ff_merge3074 calls Gitaly's OperationService3075 behaves like #ff_merge3076 performs a ff_merge3077 with a non-existing target branch3078 throws an ArgumentError3079 with a non-existing source commit3080 throws an ArgumentError3081 when the source sha is not a descendant of the branch head3082 doesn't perform the ff_merge3083 #delete_all_refs_except3084 deletes all refs except those with the specified prefixes3085 #bundle_to_disk3086 saves a bundle to disk3087 #create_from_bundle3088 creates a repo from a bundle file3089 raises an error if the bundle is an attempted malicious payload3090 #compare_source_branch3091 compares two branches cross repo3092 source ref does not exist in source repo3093 returns an empty comparison3094 #checksum3095 calculates the checksum for non-empty repo3096 returns a blank sha for an empty repo3097 raises NoRepository for a non-existent repo3098 #replicas3099 gets the replica checksum through praefect3100 #squash3101 sparse checkout (PENDING: No reason given)3102 with an ASCII-8BIT diff (PENDING: No reason given)3103 with trailing whitespace in an invalid patch (PENDING: No reason given)3104 #disconnect_alternates3105 does not raise an error when disconnecting a non-linked repository3106 can still access objects in the object pool3107 #rename3108 moves the repository3109 #remove3110 removes the repository3111 when the repository does not exist3112 is idempotent3113 #import_repository3114 raises an error if a relative path is provided3115 raises an error if an absolute path is provided3116 delegates to Gitaly3117 behaves like wrapping gRPC errors3118 wraps gRPC not found error3119 wraps gRPC unknown error3120 #replicate3121 destination does not exist3122 mirrors the source repository3123 destination exists3124 mirrors the source repository3125 with keep-around refs3126 includes the temporary and keep-around refs3127 #check_objects_exist3128 returns hash specifying which object exists in repo3129Projects::ImportService3130 #async?3131 returns true for an asynchronous importer3132 returns false for a regular importer3133 returns false when the importer does not define #async?3134 returns false when the importer does not exist3135 #execute3136 with unknown url3137 succeeds if repository is created successfully3138 fails if repository creation fails3139 when repository creation succeeds3140 does not download lfs files3141 with known url3142 with a Github repository3143 tracks the start of import3144 succeeds if repository import was scheduled3145 fails if repository import was not scheduled3146 when repository import scheduled3147 does not download lfs objects3148 with a non Github repository3149 when importer supports refmap3150 succeeds if repository fetch as mirror is successful3151 fails if repository fetch as mirror fails3152 when importer does not support refmap3153 succeeds if repository import is successful3154 fails if repository import fails3155 when lfs import fails3156 logs the error3157 when repository import scheduled3158 downloads lfs objects if lfs_enabled is enabled for project3159 does not download lfs objects if lfs_enabled is not enabled for project3160 with valid importer3161 succeeds if importer succeeds3162 fails if importer fails3163 when importer3164 has a custom repository importer it does not download lfs objects3165 does not have a custom repository importer downloads lfs objects3166 when lfs import fails3167 logs the error3168 with blocked import_URL3169 fails with localhost3170 fails with port 253171 fails with file scheme3172 when DNS rebind protection is disabled3173 imports repository with url without additional resolved address3174 when DNS rebind protection is enabled3175 when https url is provided3176 imports repository with url and additional resolved address3177 when host resolves to an IPv6 address3178 imports repository with url and additional resolved bare IPv6 address3179 when http url is provided3180 imports repository with url and additional resolved address3181 when git address is provided3182 imports repository with url and without resolved address3183Issues::MoveService3184 #execute3185 when issue creation fails3186 raises a move error3187 issue movable3188 creates resource state event3189 generic issue3190 creates a new issue in a new project3191 copies issue title3192 copies issue description3193 adds system note to old issue at the end3194 adds system note to new issue at the end3195 closes old issue3196 persists new issue3197 persists all changes3198 preserves author3199 creates a new internal id for issue3200 marks issue as moved3201 marks issue as closed3202 preserves create time3203 issue with award emoji3204 copies the award emoji3205 issue with milestone3206 does not create extra milestone events3207 issue with due date3208 does not create extra system notes3209 issue with assignee3210 preserves assignee with access to the new issue3211 ignores assignee without access to the new issue3212 issue with contacts3213 preserves contacts3214 when moving to another root group3215 does not preserve contacts3216 moving to same project3217 raises error3218 project issue hooks3219 executes project issue hooks for both projects3220 issue with notes3221 copies existing notes in order3222 issue with a design3223 calls CopyDesignCollection::QueueService3224 logs if QueueService returns an error3225 copies the design and its notes3226 issue relative position3227 behaves like copy or reset relative position3228 when moved to a project within same group hierarchy3229 does not reset the relative_position3230 when moved to a project in a different group hierarchy3231 does reset the relative_position3232 issue with escalation status3233 keeps the escalation status3234 move permissions3235 user is reporter in both projects3236 is expected not to raise Exception3237 user is reporter only in new project3238 is expected to raise StandardError with message matching /permissions/3239 user is reporter only in old project3240 is expected to raise StandardError with message matching /permissions/3241 user is reporter in one project and guest in another3242 is expected to raise StandardError with message matching /permissions/3243 issue has already been moved3244 is expected to raise StandardError with message matching /permissions/3245 issue is not persisted3246 is expected to raise StandardError with message matching /permissions/3247 #rewrite_related_issues3248 multiple related issues3249 when admin mode is enabled3250 moves all related issues and retains permissions3251 when admin mode is disabled3252 moves all related issues and retains permissions3253 updating sent notifications3254 when issue is from service desk3255 updates moved issue sent notifications3256 does not update other issues sent notifications3257 when issue is not from service desk3258 does not update sent notifications3259 copying email participants3260 copies moved issue email participants3261EnvironmentPolicy3262 #rules3263 when project is public3264 with stop action3265 access_level: nil, allowed?: false3266 is expected to equal false3267 access_level: :guest, allowed?: false3268 is expected to equal false3269 access_level: :reporter, allowed?: false3270 is expected to equal false3271 access_level: :developer, allowed?: true3272 is expected to equal true3273 access_level: :maintainer, allowed?: true3274 is expected to equal true3275 when an admin user3276 when admin mode is enabled3277 is expected to be allowed :stop_environment3278 when admin mode is disabled3279 is expected to be disallowed :stop_environment3280 with protected branch3281 when an admin user3282 when admin mode is enabled3283 is expected to be allowed :stop_environment3284 when admin mode is disabled3285 is expected to be disallowed :stop_environment3286 without stop action3287 access_level: nil, allowed?: false3288 is expected to equal false3289 access_level: :guest, allowed?: false3290 is expected to equal false3291 access_level: :reporter, allowed?: false3292 is expected to equal false3293 access_level: :developer, allowed?: true3294 is expected to equal true3295 access_level: :maintainer, allowed?: true3296 is expected to equal true3297 when an admin user3298 when admin mode is enabled3299 is expected to be allowed :stop_environment3300 when admin mode is disabled3301 is expected to be disallowed :stop_environment3302 #destroy_environment3303 access_level: nil, allowed?: false3304 is expected to be disallowed :destroy_environment3305 when environment is stopped3306 is expected to equal false3307 access_level: :guest, allowed?: false3308 is expected to be disallowed :destroy_environment3309 when environment is stopped3310 is expected to equal false3311 access_level: :reporter, allowed?: false3312 is expected to be disallowed :destroy_environment3313 when environment is stopped3314 is expected to equal false3315 access_level: :developer, allowed?: true3316 is expected to be disallowed :destroy_environment3317 when environment is stopped3318 is expected to equal true3319 access_level: :maintainer, allowed?: true3320 is expected to be disallowed :destroy_environment3321 when environment is stopped3322 is expected to equal true3323 when an admin user3324 is expected to be disallowed :destroy_environment3325 when environment is stopped3326 when admin mode is enabled3327 is expected to be allowed :destroy_environment3328 when admin mode is disabled3329 is expected to be disallowed :destroy_environment3330 when project is private3331 with stop action3332 access_level: nil, allowed?: false3333 is expected to equal false3334 access_level: :guest, allowed?: false3335 is expected to equal false3336 access_level: :reporter, allowed?: false3337 is expected to equal false3338 access_level: :developer, allowed?: true3339 is expected to equal true3340 access_level: :maintainer, allowed?: true3341 is expected to equal true3342 when an admin user3343 when admin mode is enabled3344 is expected to be allowed :stop_environment3345 when admin mode is disabled3346 is expected to be disallowed :stop_environment3347 with protected branch3348 when an admin user3349 when admin mode is enabled3350 is expected to be allowed :stop_environment3351 when admin mode is disabled3352 is expected to be disallowed :stop_environment3353 without stop action3354 access_level: nil, allowed?: false3355 is expected to equal false3356 access_level: :guest, allowed?: false3357 is expected to equal false3358 access_level: :reporter, allowed?: false3359 is expected to equal false3360 access_level: :developer, allowed?: true3361 is expected to equal true3362 access_level: :maintainer, allowed?: true3363 is expected to equal true3364 when an admin user3365 when admin mode is enabled3366 is expected to be allowed :stop_environment3367 when admin mode is disabled3368 is expected to be disallowed :stop_environment3369 #destroy_environment3370 access_level: nil, allowed?: false3371 is expected to be disallowed :destroy_environment3372 when environment is stopped3373 is expected to equal false3374 access_level: :guest, allowed?: false3375 is expected to be disallowed :destroy_environment3376 when environment is stopped3377 is expected to equal false3378 access_level: :reporter, allowed?: false3379 is expected to be disallowed :destroy_environment3380 when environment is stopped3381 is expected to equal false3382 access_level: :developer, allowed?: true3383 is expected to be disallowed :destroy_environment3384 when environment is stopped3385 is expected to equal true3386 access_level: :maintainer, allowed?: true3387 is expected to be disallowed :destroy_environment3388 when environment is stopped3389 is expected to equal true3390 when an admin user3391 is expected to be disallowed :destroy_environment3392 when environment is stopped3393 when admin mode is enabled3394 is expected to be allowed :destroy_environment3395 when admin mode is disabled3396 is expected to be disallowed :destroy_environment3397CommitStatus3398 is expected to belong to pipeline class_name => Ci::Pipeline required: false inverse_of => statuses3399 is expected to belong to user required: false3400 is expected to belong to project required: false3401 is expected to belong to auto_canceled_by required: false3402 is expected to validate that :name cannot be empty/falsy3403 is expected to validate that :status is either ‹"pending"›, ‹"running"›, ‹"failed"›, ‹"success"›, or ‹"canceled"›3404 is expected to delegate #sha to the #pipeline object3405 is expected to delegate #short_sha to the #pipeline object3406 is expected to respond to #success?3407 is expected to respond to #failed?3408 is expected to respond to #running?3409 is expected to respond to #pending?3410 is expected not to be retried3411 is expected to eq "id"3412 behaves like having unique enum values3413 has unique values in "scheduling_type"3414 has unique values in "failure_reason"3415 #author3416 is expected to eq #<User id: @>3417 status state machine3418 invalidates the cache after a transition3419 transitioning to running3420 records the started at time3421 transitioning to created from skipped or manual3422 does not update user without parameter3423 updates user with user parameter3424 .updated_at_before3425 finds the relevant records3426 .created_at_before3427 finds the relevant records3428 .scheduled_at_before3429 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>3430 #processed3431 processed state is always persisted3432 status is latest3433 is expected to be falsey3434 status is retried3435 is expected to be truthy3436 .cancelable3437 when running commit status3438 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>3439 when pending commit status3440 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>3441 when waiting_for_resource commit status3442 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>3443 when preparing commit status3444 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>3445 when created commit status3446 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>3447 when scheduled commit status3448 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>3449 when failed commit status3450 is expected to be empty3451 when success commit status3452 is expected to be empty3453 when skipped commit status3454 is expected to be empty3455 when canceled commit status3456 is expected to be empty3457 when manual commit status3458 is expected to be empty3459 #started?3460 without started_at3461 is expected to equal false3462 with started_at3463 if commit status is running3464 is expected to eq true3465 if commit status is success3466 is expected to eq true3467 if commit status is failed3468 is expected to eq true3469 if commit status is created3470 is expected to equal false3471 if commit status is waiting_for_resource3472 is expected to equal false3473 if commit status is preparing3474 is expected to equal false3475 if commit status is pending3476 is expected to equal false3477 if commit status is canceled3478 is expected to equal false3479 if commit status is skipped3480 is expected to equal false3481 if commit status is manual3482 is expected to equal false3483 if commit status is scheduled3484 is expected to equal false3485 #active?3486 if commit_status.status is pending3487 is expected to be truthy3488 if commit_status.status is running3489 is expected to be truthy3490 if commit_status.status is success3491 is expected to be falsey3492 if commit_status.status is failed3493 is expected to be falsey3494 if commit_status.status is canceled3495 is expected to be falsey3496 #complete?3497 if commit_status.status is success3498 is expected to be truthy3499 if commit_status.status is failed3500 is expected to be truthy3501 if commit_status.status is canceled3502 is expected to be truthy3503 if commit_status.status is pending3504 is expected to be falsey3505 if commit_status.status is running3506 is expected to be falsey3507 #cancel3508 when status is scheduled3509 updates the status3510 #auto_canceled?3511 when it is canceled3512 when there is auto_canceled_by3513 is auto canceled3514 when there is no auto_canceled_by3515 is not auto canceled3516 #duration3517 is expected to eq 120.03518 if the building process has not started yet3519 is expected to be nil3520 if the building process has started3521 is expected to be a kind of Float3522 is expected to be > 0.03523 #queued_duration3524 when created, then enqueued, then started3525 is expected to eq 5.03526 when created but not yet enqueued3527 is expected to be nil3528 when enqueued, but not started3529 is expected to eq 1 minute3530 .latest3531 returns unique statuses3532 .retried3533 returns unique statuses3534 .retried_ordered3535 returns retried statuses in order3536 .running_or_pending3537 returns statuses that are running or pending3538 .after_stage3539 returns statuses from second and third stage3540 .failed_but_allowed3541 returns statuses without what we want to ignore3542 .for_ref3543 returns statuses with the specified ref3544 .by_name3545 returns statuses with the specified name3546 .for_project_paths3547 with a single path3548 returns statuses for other_project3549 with array of paths3550 returns statuses for project3551 .status3552 when there are multiple statuses present3553 returns a correct compound status3554 when there are only allowed to fail commit statuses present3555 returns status that indicates success3556 when using a scope to select latest statuses3557 returns status according to the scope3558 .match_id_and_lock_version3559 returns statuses that match the given id and lock versions3560 #before_sha3561 when no before_sha is set for pipeline3562 returns blank sha3563 for before_sha set for pipeline3564 returns the set value3565 #commit3566 returns commit pipeline has been created for3567 #group_name3568 name: "rspec1", group_name: "rspec1"3569 rspec1 puts in rspec13570 name: "rspec1 0 1", group_name: "rspec1"3571 rspec1 0 1 puts in rspec13572 name: "rspec1 0/2", group_name: "rspec1"3573 rspec1 0/2 puts in rspec13574 name: "rspec:windows", group_name: "rspec:windows"3575 rspec:windows puts in rspec:windows3576 name: "rspec:windows 0", group_name: "rspec:windows 0"3577 rspec:windows 0 puts in rspec:windows 03578 name: "rspec:windows 0 2/2", group_name: "rspec:windows 0"3579 rspec:windows 0 2/2 puts in rspec:windows 03580 name: "rspec:windows 0 test", group_name: "rspec:windows 0 test"3581 rspec:windows 0 test puts in rspec:windows 0 test3582 name: "rspec:windows 0 test 2/2", group_name: "rspec:windows 0 test"3583 rspec:windows 0 test 2/2 puts in rspec:windows 0 test3584 name: "rspec:windows 0 1 2/2", group_name: "rspec:windows"3585 rspec:windows 0 1 2/2 puts in rspec:windows3586 name: "rspec:windows 0 1 [aws] 2/2", group_name: "rspec:windows"3587 rspec:windows 0 1 [aws] 2/2 puts in rspec:windows3588 name: "rspec:windows 0 1 name [aws] 2/2", group_name: "rspec:windows 0 1 name"3589 rspec:windows 0 1 name [aws] 2/2 puts in rspec:windows 0 1 name3590 name: "rspec:windows 0 1 name", group_name: "rspec:windows 0 1 name"3591 rspec:windows 0 1 name puts in rspec:windows 0 1 name3592 name: "rspec:windows 0 1 name 1/2", group_name: "rspec:windows 0 1 name"3593 rspec:windows 0 1 name 1/2 puts in rspec:windows 0 1 name3594 name: "rspec:windows 0/1", group_name: "rspec:windows"3595 rspec:windows 0/1 puts in rspec:windows3596 name: "rspec:windows 0/1 name", group_name: "rspec:windows 0/1 name"3597 rspec:windows 0/1 name puts in rspec:windows 0/1 name3598 name: "rspec:windows 0/1 name 1/2", group_name: "rspec:windows 0/1 name"3599 rspec:windows 0/1 name 1/2 puts in rspec:windows 0/1 name3600 name: "rspec:windows 0:1", group_name: "rspec:windows"3601 rspec:windows 0:1 puts in rspec:windows3602 name: "rspec:windows 0:1 name", group_name: "rspec:windows 0:1 name"3603 rspec:windows 0:1 name puts in rspec:windows 0:1 name3604 name: "rspec:windows 10000 20000", group_name: "rspec:windows"3605 rspec:windows 10000 20000 puts in rspec:windows3606 name: "rspec:windows 0 : / 1", group_name: "rspec:windows"3607 rspec:windows 0 : / 1 puts in rspec:windows3608 name: "rspec:windows 0 : / 1 name", group_name: "rspec:windows 0 : / 1 name"3609 rspec:windows 0 : / 1 name puts in rspec:windows 0 : / 1 name3610 name: "rspec [inception: [something, other thing], value]", group_name: "rspec"3611 rspec [inception: [something, other thing], value] puts in rspec3612 name: "0 1 name ruby", group_name: "0 1 name ruby"3613 0 1 name ruby puts in 0 1 name ruby3614 name: "0 :/ 1 name ruby", group_name: "0 :/ 1 name ruby"3615 0 :/ 1 name ruby puts in 0 :/ 1 name ruby3616 name: "rspec: [aws]", group_name: "rspec"3617 rspec: [aws] puts in rspec3618 name: "rspec: [aws] 0/1", group_name: "rspec"3619 rspec: [aws] 0/1 puts in rspec3620 name: "rspec: [aws, max memory]", group_name: "rspec"3621 rspec: [aws, max memory] puts in rspec3622 name: "rspec:linux: [aws, max memory, data]", group_name: "rspec:linux"3623 rspec:linux: [aws, max memory, data] puts in rspec:linux3624 name: "rspec: [inception: [something, other thing], value]", group_name: "rspec"3625 rspec: [inception: [something, other thing], value] puts in rspec3626 name: "rspec:windows 0/1: [name, other]", group_name: "rspec:windows"3627 rspec:windows 0/1: [name, other] puts in rspec:windows3628 name: "rspec:windows: [name, other] 0/1", group_name: "rspec:windows"3629 rspec:windows: [name, other] 0/1 puts in rspec:windows3630 name: "rspec:windows: [name, 0/1] 0/1", group_name: "rspec:windows"3631 rspec:windows: [name, 0/1] 0/1 puts in rspec:windows3632 name: "rspec:windows: [0/1, name]", group_name: "rspec:windows"3633 rspec:windows: [0/1, name] puts in rspec:windows3634 name: "rspec:windows: [, ]", group_name: "rspec:windows"3635 rspec:windows: [, ] puts in rspec:windows3636 name: "rspec:windows: [name]", group_name: "rspec:windows"3637 rspec:windows: [name] puts in rspec:windows3638 name: "rspec:windows: [name,other]", group_name: "rspec:windows"3639 rspec:windows: [name,other] puts in rspec:windows3640 #detailed_status3641 returns a detailed status3642 #sortable_name3643 'karma' sorts as '["karma"]'3644 'karma 0 20' sorts as '["karma ", 0, " ", 20]'3645 'karma 10 20' sorts as '["karma ", 10, " ", 20]'3646 'karma 50:100' sorts as '["karma ", 50, ":", 100]'3647 'karma 1.10' sorts as '["karma ", 1, ".", 10]'3648 'karma 1.5.1' sorts as '["karma ", 1, ".", 5, ".", 1]'3649 'karma 1 a' sorts as '["karma ", 1, " a"]'3650 #locking_enabled?3651 when changing status3652 lock3653 raise exception when trying to update3654 when changing description3655 do not lock3656 save correctly3657 #drop3658 when failure_reason is nil3659 is expected to be unknown failure3660 behaves like incrementing failure reason counter3661 increments the counter with the failure_reason3662 when failure_reason is script_failure3663 is expected to be script failure3664 behaves like incrementing failure reason counter3665 increments the counter with the failure_reason3666 when failure_reason is unmet_prerequisites3667 is expected to be unmet prerequisites3668 behaves like incrementing failure reason counter3669 increments the counter with the failure_reason3670 when status is manual3671 is able to be dropped3672 when a failure reason is provided3673 when a failure reason is a symbol3674 correctly sets a failure reason3675 when a failure reason is an object3676 correctly sets a failure reason3677 ensure stage assignment3678 when the feature flag ci_remove_ensure_stage_service is disabled3679 when commit status has a stage_id assigned3680 does not create a new stage3681 when commit status does not have a stage_id assigned3682 creates a new stage3683 when commit status does not have stage but it exists3684 uses existing stage3685 when commit status is being imported3686 does not create a new stage3687 #all_met_to_become_pending?3688 is expected to eq true3689 #enqueue3690 when initial state is :created3691 behaves like commit status enqueued3692 sets queued_at value when enqueued3693 when initial state is :skipped3694 behaves like commit status enqueued3695 sets queued_at value when enqueued3696 when initial state is :manual3697 behaves like commit status enqueued3698 sets queued_at value when enqueued3699 when initial state is :scheduled3700 behaves like commit status enqueued3701 sets queued_at value when enqueued3702 #present3703 is expected to be a kind of CommitStatusPresenter3704 #recoverable?3705 when commit status is failed3706 failure_reason: :script_failure, recoverable: false3707 when failure reason is script_failure3708 is expected to eq false3709 failure_reason: :missing_dependency_failure, recoverable: false3710 when failure reason is missing_dependency_failure3711 is expected to eq false3712 failure_reason: :archived_failure, recoverable: false3713 when failure reason is archived_failure3714 is expected to eq false3715 failure_reason: :scheduler_failure, recoverable: false3716 when failure reason is scheduler_failure3717 is expected to eq false3718 failure_reason: :data_integrity_failure, recoverable: false3719 when failure reason is data_integrity_failure3720 is expected to eq false3721 failure_reason: :unknown_failure, recoverable: true3722 when failure reason is unknown_failure3723 is expected to eq true3724 failure_reason: :api_failure, recoverable: true3725 when failure reason is api_failure3726 is expected to eq true3727 failure_reason: :stuck_or_timeout_failure, recoverable: true3728 when failure reason is stuck_or_timeout_failure3729 is expected to eq true3730 failure_reason: :runner_system_failure, recoverable: true3731 when failure reason is runner_system_failure3732 is expected to eq true3733 when commit status is not failed3734 is expected to eq false3735 #update_older_statuses_retried!3736 updates 'retried' and 'status' columns of the latest status with the same name in the same pipeline3737 #expire_etag_cache!3738 expires the etag cache3739 loose foreign key on ci_builds.project_id3740 behaves like cleanup by a loose foreign key3741 cleans up (delete or nullify) the model3742 loose foreign key on ci_builds.runner_id3743 behaves like cleanup by a loose foreign key3744 cleans up (delete or nullify) the model3745 .stage_name3746 returns the stage name3747 when ci stage is not present3748 is expected to be nil3749 partitioning3750 with pipeline3751 copies the partition_id from pipeline3752 when it is already set3753 does not change the partition_id value3754 without pipeline3755 is expected to validate that :partition_id cannot be empty/falsy3756 does not change the partition_id value3757 #failure_reason3758 behaves like having enum with nil value3759 has enum with nil value3760Database::BatchedBackgroundMigrationWorker3761 behaves like it runs batched background migration jobs3762 defining the job attributes3763 defines the data_consistency as always3764 defines the feature_category as database3765 defines the idempotency as true3766 .tracking_database3767 does not raise an error3768 overrides the method to return the tracking database3769 .lease_key3770 does not raise an error3771 returns the lease key3772 .enabled?3773 returns true when execute_batched_migrations_on_schedule feature flag is enabled3774 returns false when execute_batched_migrations_on_schedule feature flag is disabled3775 #perform3776 when the base model does not exist3777 does nothing (PENDING: because the base model for main exists)3778 logs a message indicating execution is skipped (PENDING: because the base model for main exists)3779 when the base model does exist3780 when the tracking database is shared3781 does nothing (PENDING: Skipping because database main exists)3782 when the tracking database is not shared3783 when the feature flag is disabled3784 does nothing3785 when the feature flag is enabled3786 when database config is shared3787 does nothing3788 when no active migrations exist3789 when parallel execution is disabled3790 does nothing3791 when parallel execution is enabled3792 does nothing3793 when active migrations exist3794 when parallel execution is disabled3795 always cleans up the exclusive lease3796 delegetes the execution to ExecutionWorker3797 when the calculated timeout is less than the minimum allowed3798 sets the lease timeout to the minimum value3799 when parallel execution is enabled3800 delegetes the execution to ExecutionWorker3801 executing an entire migration3802 when parallel execution is disabled3803 assigns proper feature category to the context and the worker3804 behaves like batched background migration execution3805 marks the migration record as finished3806 creates job records for each processed batch3807 marks all job records as succeeded3808 updates matching records in the range3809 does not update non-matching records in the range3810 health status3811 puts migration on hold when there is autovaccum activity on related tables3812 puts migration on hold when the pending WAL count is above the limit3813 when parallel execution is enabled3814 behaves like batched background migration execution3815 marks the migration record as finished3816 creates job records for each processed batch3817 marks all job records as succeeded3818 updates matching records in the range3819 does not update non-matching records in the range3820 health status3821 puts migration on hold when there is autovaccum activity on related tables3822 puts migration on hold when the pending WAL count is above the limit3823Banzai::Filter::References::CommitReferenceFilter3824 requires project context3825 ignores valid references contained inside 'pre' element3826 ignores valid references contained inside 'code' element3827 ignores valid references contained inside 'a' element3828 ignores valid references contained inside 'style' element3829 internal reference3830 links to a valid reference of 7 characters3831 links to a valid reference of 8 characters3832 links to a valid reference of 12 characters3833 links to a valid reference of 18 characters3834 links to a valid reference of 20 characters3835 links to a valid reference of 32 characters3836 links to a valid reference of 40 characters3837 always uses the short ID as the link text3838 links with adjacent text3839 ignores invalid commit IDs3840 includes a title attribute3841 escapes the title attribute3842 includes default classes3843 includes a data-project attribute3844 includes a data-commit attribute3845 supports an :only_path context3846 in merge request context3847 handles merge request contextual commit references3848 a doc with many (29) strings that could be SHAs3849 makes only a single request to Gitaly3850 cross-project / cross-namespace complete reference3851 link has valid text3852 has valid text3853 ignores invalid commit IDs on the referenced project3854 cross-project / same-namespace complete reference3855 link has valid text3856 has valid text3857 ignores invalid commit IDs on the referenced project3858 cross-project shorthand reference3859 link has valid text3860 has valid text3861 ignores invalid commit IDs on the referenced project3862 cross-project URL reference3863 links to a valid reference3864 links with adjacent text3865 ignores invalid commit IDs on the referenced project3866 URL reference for a commit patch3867 links to a valid reference3868 has valid text3869 does not link to patch when extension match is after the path3870 group context3871 ignores internal references3872 links to a valid reference3873 checking N+13874 does not have N+1 per multiple references per project3875Gitlab::RackAttack::Request3876 FILES_PATH_REGEX3877 is expected to match "/api/v4/projects/1/repository/files/README"3878 is expected to match "/api/v4/projects/1/repository/files/README?ref=master"3879 is expected to match "/api/v4/projects/1/repository/files/README/blame"3880 is expected to match "/api/v4/projects/1/repository/files/README/raw"3881 is expected to match "/api/v4/projects/some%2Fnested%2Frepo/repository/files/README"3882 is expected not to match "/api/v4/projects/some/nested/repo/repository/files/README"3883 #api_request?3884 path: "/", expected: false3885 is expected to eq false3886 when the application is mounted at a relative URL3887 is expected to eq false3888 path: "/groups", expected: false3889 is expected to eq false3890 when the application is mounted at a relative URL3891 is expected to eq false3892 path: "/foo/api", expected: false3893 is expected to eq false3894 when the application is mounted at a relative URL3895 is expected to eq false3896 path: "/api", expected: true3897 is expected to eq true3898 when the application is mounted at a relative URL3899 is expected to eq true3900 path: "/api/v4/groups/1", expected: true3901 is expected to eq true3902 when the application is mounted at a relative URL3903 is expected to eq true3904 #api_internal_request?3905 path: "/", expected: false3906 is expected to eq false3907 when the application is mounted at a relative URL3908 is expected to eq false3909 path: "/groups", expected: false3910 is expected to eq false3911 when the application is mounted at a relative URL3912 is expected to eq false3913 path: "/api", expected: false3914 is expected to eq false3915 when the application is mounted at a relative URL3916 is expected to eq false3917 path: "/api/v4/groups/1", expected: false3918 is expected to eq false3919 when the application is mounted at a relative URL3920 is expected to eq false3921 path: "/api/v4/internal", expected: false3922 is expected to eq false3923 when the application is mounted at a relative URL3924 is expected to eq false3925 path: "/foo/api/v4/internal", expected: false3926 is expected to eq false3927 when the application is mounted at a relative URL3928 is expected to eq false3929 path: "/api/v4/internal/", expected: true3930 is expected to eq true3931 when the application is mounted at a relative URL3932 is expected to eq true3933 path: "/api/v4/internal/foo", expected: true3934 is expected to eq true3935 when the application is mounted at a relative URL3936 is expected to eq true3937 path: "/api/v1/internal/foo", expected: true3938 is expected to eq true3939 when the application is mounted at a relative URL3940 is expected to eq true3941 #health_check_request?3942 path: "/", expected: false3943 is expected to eq false3944 when the application is mounted at a relative URL3945 is expected to eq false3946 path: "/groups", expected: false3947 is expected to eq false3948 when the application is mounted at a relative URL3949 is expected to eq false3950 path: "/foo/-/health", expected: false3951 is expected to eq false3952 when the application is mounted at a relative URL3953 is expected to eq false3954 path: "/-/health", expected: true3955 is expected to eq true3956 when the application is mounted at a relative URL3957 is expected to eq true3958 path: "/-/liveness", expected: true3959 is expected to eq true3960 when the application is mounted at a relative URL3961 is expected to eq true3962 path: "/-/readiness", expected: true3963 is expected to eq true3964 when the application is mounted at a relative URL3965 is expected to eq true3966 path: "/-/metrics", expected: true3967 is expected to eq true3968 when the application is mounted at a relative URL3969 is expected to eq true3970 path: "/-/health/foo", expected: true3971 is expected to eq true3972 when the application is mounted at a relative URL3973 is expected to eq true3974 path: "/-/liveness/foo", expected: true3975 is expected to eq true3976 when the application is mounted at a relative URL3977 is expected to eq true3978 path: "/-/readiness/foo", expected: true3979 is expected to eq true3980 when the application is mounted at a relative URL3981 is expected to eq true3982 path: "/-/metrics/foo", expected: true3983 is expected to eq true3984 when the application is mounted at a relative URL3985 is expected to eq true3986 #container_registry_event?3987 path: "/", expected: false3988 is expected to eq false3989 when the application is mounted at a relative URL3990 is expected to eq false3991 path: "/groups", expected: false3992 is expected to eq false3993 when the application is mounted at a relative URL3994 is expected to eq false3995 path: "/api/v4/container_registry_event", expected: false3996 is expected to eq false3997 when the application is mounted at a relative URL3998 is expected to eq false3999 path: "/foo/api/v4/container_registry_event/", expected: false4000 is expected to eq false4001 when the application is mounted at a relative URL4002 is expected to eq false4003 path: "/api/v4/container_registry_event/", expected: true4004 is expected to eq true4005 when the application is mounted at a relative URL4006 is expected to eq true4007 path: "/api/v4/container_registry_event/foo", expected: true4008 is expected to eq true4009 when the application is mounted at a relative URL4010 is expected to eq true4011 path: "/api/v1/container_registry_event/foo", expected: true4012 is expected to eq true4013 when the application is mounted at a relative URL4014 is expected to eq true4015 #product_analytics_collector_request?4016 path: "/", expected: false4017 is expected to eq false4018 when the application is mounted at a relative URL4019 is expected to eq false4020 path: "/groups", expected: false4021 is expected to eq false4022 when the application is mounted at a relative URL4023 is expected to eq false4024 path: "/-/collector", expected: false4025 is expected to eq false4026 when the application is mounted at a relative URL4027 is expected to eq false4028 path: "/-/collector/foo", expected: false4029 is expected to eq false4030 when the application is mounted at a relative URL4031 is expected to eq false4032 path: "/foo/-/collector/i", expected: false4033 is expected to eq false4034 when the application is mounted at a relative URL4035 is expected to eq false4036 path: "/-/collector/i", expected: true4037 is expected to eq true4038 when the application is mounted at a relative URL4039 is expected to eq true4040 path: "/-/collector/ifoo", expected: true4041 is expected to eq true4042 when the application is mounted at a relative URL4043 is expected to eq true4044 path: "/-/collector/i/foo", expected: true4045 is expected to eq true4046 when the application is mounted at a relative URL4047 is expected to eq true4048 #should_be_skipped?4049 api_internal_request: true, health_check_request: true, container_registry_event: true4050 returns true if any condition is true4051 api_internal_request: true, health_check_request: true, container_registry_event: false4052 returns true if any condition is true4053 api_internal_request: true, health_check_request: false, container_registry_event: true4054 returns true if any condition is true4055 api_internal_request: true, health_check_request: false, container_registry_event: false4056 returns true if any condition is true4057 api_internal_request: false, health_check_request: true, container_registry_event: true4058 returns true if any condition is true4059 api_internal_request: false, health_check_request: true, container_registry_event: false4060 returns true if any condition is true4061 api_internal_request: false, health_check_request: false, container_registry_event: true4062 returns true if any condition is true4063 api_internal_request: false, health_check_request: false, container_registry_event: false4064 returns true if any condition is true4065 #web_request?4066 path: "/", expected: true4067 is expected to eq true4068 when the application is mounted at a relative URL4069 is expected to eq true4070 path: "/groups", expected: true4071 is expected to eq true4072 when the application is mounted at a relative URL4073 is expected to eq true4074 path: "/foo/api", expected: true4075 is expected to eq true4076 when the application is mounted at a relative URL4077 is expected to eq true4078 path: "/api", expected: false4079 is expected to eq false4080 when the application is mounted at a relative URL4081 is expected to eq false4082 path: "/api/v4/groups/1", expected: false4083 is expected to eq false4084 when the application is mounted at a relative URL4085 is expected to eq false4086 #protected_path?4087 path: "/", expected: false4088 is expected to eq false4089 when the application is mounted at a relative URL4090 is expected to eq false4091 path: "/groups", expected: false4092 is expected to eq false4093 when the application is mounted at a relative URL4094 is expected to eq false4095 path: "/foo/protected", expected: false4096 is expected to eq false4097 when the application is mounted at a relative URL4098 is expected to eq false4099 path: "/foo/secure", expected: false4100 is expected to eq false4101 when the application is mounted at a relative URL4102 is expected to eq false4103 path: "/protected", expected: true4104 is expected to eq true4105 when the application is mounted at a relative URL4106 is expected to eq true4107 path: "/secure", expected: true4108 is expected to eq true4109 when the application is mounted at a relative URL4110 is expected to eq true4111 path: "/secure/", expected: true4112 is expected to eq true4113 when the application is mounted at a relative URL4114 is expected to eq true4115 path: "/secure/foo", expected: true4116 is expected to eq true4117 when the application is mounted at a relative URL4118 is expected to eq true4119 #frontend_request?4120 session: {}, env: {}, expected: false4121 is expected to eq false4122 session: {}, env: {"HTTP_X_CSRF_TOKEN"=>"uKvXDiRBJWT/9P16i0rhBvZpG7yg3Lhi9EngEDkPTMw="}, expected: false4123 is expected to eq false4124 session: {:_csrf_token=>"uKvXDiRBJWT/9P16i0rhBvZpG7yg3Lhi9EngEDkPTMw="}, env: {"HTTP_X_CSRF_TOKEN"=>"mUtI8jf5bQ+SNDqcR7695ZJqSXP2zJvrq9WV+H8qQ8Q="}, expected: false4125 is expected to eq false4126 session: {:_csrf_token=>"uKvXDiRBJWT/9P16i0rhBvZpG7yg3Lhi9EngEDkPTMw="}, env: {"HTTP_X_CSRF_TOKEN"=>"uKvXDiRBJWT/9P16i0rhBvZpG7yg3Lhi9EngEDkPTMw="}, expected: true4127 is expected to eq true4128 #deprecated_api_request?4129 path: "/", query: "", expected: false4130 is expected to eq false4131 when the application is mounted at a relative URL4132 is expected to eq false4133 path: "/api/v4/groups/1/", query: "", expected: true4134 is expected to eq true4135 when the application is mounted at a relative URL4136 is expected to eq true4137 path: "/api/v4/groups/1", query: "", expected: true4138 is expected to eq true4139 when the application is mounted at a relative URL4140 is expected to eq true4141 path: "/api/v4/groups/foo/", query: "", expected: true4142 is expected to eq true4143 when the application is mounted at a relative URL4144 is expected to eq true4145 path: "/api/v4/groups/foo", query: "", expected: true4146 is expected to eq true4147 when the application is mounted at a relative URL4148 is expected to eq true4149 path: "/api/v4/groups/1", query: "with_projects=", expected: true4150 is expected to eq true4151 when the application is mounted at a relative URL4152 is expected to eq true4153 path: "/api/v4/groups/1", query: "with_projects=1", expected: true4154 is expected to eq true4155 when the application is mounted at a relative URL4156 is expected to eq true4157 path: "/api/v4/groups/1", query: "with_projects=0", expected: false4158 is expected to eq false4159 when the application is mounted at a relative URL4160 is expected to eq false4161 path: "/foo/api/v4/groups/1", query: "", expected: false4162 is expected to eq false4163 when the application is mounted at a relative URL4164 is expected to eq false4165 path: "/api/v4/groups/1/foo", query: "", expected: false4166 is expected to eq false4167 when the application is mounted at a relative URL4168 is expected to eq false4169 path: "/api/v4/groups/nested%2Fgroup", query: "", expected: true4170 is expected to eq true4171 when the application is mounted at a relative URL4172 is expected to eq true4173AwardEmoji4174 Associations4175 is expected to belong to awardable required: false4176 is expected to belong to user required: false4177 modules4178 is expected to includes the Participable module4179 validations4180 is expected to validate that :awardable cannot be empty/falsy4181 is expected to validate that :user cannot be empty/falsy4182 is expected to validate that :name cannot be empty/falsy4183 scoped uniqueness validation4184 rejects duplicate award emoji4185 allows duplicate award emoji for ghost users4186 when importing4187 allows duplicate award emoji4188 custom emoji4189 is accepted on issue4190 is accepted on merge_request4191 is accepted on note_on_issue4192 is accepted on snippet4193 is accepted on subgroup issue4194 is not supported on personal snippet (yet)4195 scopes4196 .upvotes4197 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:26.319616304 +0000", updated_at: "2023-03-30 11:52:26.319616304 +0000">4198 .downvotes4199 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:26.847324761 +0000", updated_at: "2023-03-30 11:52:26.847324761 +0000">4200 .named4201 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:26.319616304 +0000", updated_at: "2023-03-30 11:52:26.319616304 +0000">4202 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:26.319616304 +0000", updated_at: "2023-03-30 11:52:26.319616304 +0000"> and #<AwardEmoji id: 9, name: "thumbsdown", user_id: 782, awardable_id: 858, awardable_type: "Issue", created_at: "2023-03-30 11:52:26.847324761 +0000", updated_at: "2023-03-30 11:52:26.847324761 +0000">4203 .awarded_by4204 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:26.319616304 +0000", updated_at: "2023-03-30 11:52:26.319616304 +0000">4205 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:26.319616304 +0000", updated_at: "2023-03-30 11:52:26.319616304 +0000"> and #<AwardEmoji id: 9, name: "thumbsdown", user_id: 782, awardable_id: 858, awardable_type: "Issue", created_at: "2023-03-30 11:52:26.847324761 +0000", updated_at: "2023-03-30 11:52:26.847324761 +0000">4206 expiring ETag cache4207 on a note4208 calls expire_etag_cache on the note when saved4209 calls expire_etag_cache on the note when destroyed4210 on another awardable4211 does not call expire_etag_cache on the issue when saved4212 does not call expire_etag_cache on the issue when destroyed4213 bumping updated at4214 calls bump_updated_at on the note when saved4215 calls bump_updated_at on the note when destroyed4216 on another awardable4217 does not error out when saved4218 does not error out when destroy4219 .award_counts_for_user4220 returns the awarded emoji in descending order4221 limits the returned number of rows4222 updating upvotes_count4223 on an issue4224 updates upvotes_count on the issue when saved4225 updates upvotes_count on the issue when destroyed4226 on another awardable4227 does not update upvotes_count on the merge_request when saved4228 does not update upvotes_count on the merge_request when destroyed4229 #url4230 is nil for built-in emoji4231 is nil for unrecognized emoji4232 is set for custom emoji4233 feature flag disabled4234 does not query4235 #to_ability_name4236 returns correct ability name4237Git::WikiPushService4238 #execute4239 executes model-specific callbacks4240 #process_changes4241 calls log_error for every event we cannot create4242 the push contains more than the permitted number of changes4243 creates only MAX_CHANGES events4244 default_branch collides with a tag4245 creates only one event4246 successfully creating events4247 creates one event for every wiki action4248 handles all known actions4249 when wiki_page slug is not UTF-84250 does not raise an error4251 two pages have been created4252 creates two events4253 creates two metadata records4254 creates appropriate events4255 a non-page file as been added4256 does not create events, or WikiPage metadata4257 one page, and one non-page have been created4258 creates a wiki page creation event4259 creates one metadata record4260 one page has been added, and then updated4261 creates just a single event4262 creates just one metadata record4263 creates a new wiki page creation event4264 when a page we already know about has been updated4265 does not create a new meta-data record4266 creates a new event4267 adds an update event4268 when a page we do not know about has been updated4269 creates a new meta-data record4270 creates a new event4271 adds an update event4272 when a page we do not know about has been deleted4273 create a new meta-data record4274 creates a new event4275 adds an update event4276 #perform_housekeeping4277 does not perform housekeeping when not needed4278 increments the push counter4279 when housekeeping is needed4280 performs housekeeping4281 does not raise an exception4282EmailsOnPushWorker4283 #perform4284 when push is a new branch4285 sends a mail with the correct subject4286 sends the mail to the correct recipient4287 when push is a deleted branch4288 sends a mail with the correct subject4289 sends the mail to the correct recipient4290 when push is a force push to delete commits4291 sends a mail with the correct subject4292 mentions force pushing in the body4293 sends the mail to the correct recipient4294 when there are no errors in sending4295 sends a mail with the correct subject4296 does not mention force pushing in the body4297 sends the mail to the correct recipient4298 when there is an SMTP error4299 gracefully handles an input SMTP error4300 when there are multiple recipients4301 with mixed-case recipient4302 retains the case4303 when the recipient addresses are a list of email addresses4304 sends the mail to each of the recipients4305 only generates the mail once4306 when SMIME signing is enabled4307 does not sign the email multiple times4308 when recipients are invalid4309 ignores them4310 when the recipient addresses contains angle brackets and are separated by spaces4311 accepts emails separated by whitespace4312 when the recipient addresses contain a mix of emails with and without angle brackets4313 accepts both kind of emails4314 when the recipient addresses contains angle brackets and are separated by newlines4315 accepts emails separated by newlines4316 when the recipient addresses contains duplicates4317 deduplicates recipients while treating the domain part as case-insensitive4318Banzai::Filter::References::UserReferenceFilter4319 requires project context4320 ignores invalid users4321 ignores references with text before the @ sign4322 ignores valid references contained inside 'pre' element4323 ignores valid references contained inside 'code' element4324 ignores valid references contained inside 'a' element4325 ignores valid references contained inside 'style' element4326 links with adjacent text4327 includes default classes4328 behaves like user reference or project reference4329 supports an :only_path context4330 mentioning a resource4331 links to a resource4332 links to a resource with a period4333 links to a resource with an underscore4334 links to a resource with different case-sensitivity4335 behaves like a reference containing an element node4336 does not escape inner html4337 behaves like it contains a data- attribute4338 includes a data- attribute4339 referencing a resource in a link href4340 links to the resource4341 links with adjacent text4342 behaves like it contains a data- attribute4343 includes a data- attribute4344 mentioning @all4345 supports a special @all mention4346 includes a data-author attribute when there is an author4347 does not include a data-author attribute when there is no author4348 ignores reference to all when the user is not a project member4349 behaves like a reference containing an element node4350 does not escape inner html4351 mentioning a group4352 links to the Group4353 includes a data-group attribute4354 behaves like a reference containing an element node4355 does not escape inner html4356 mentioning a nested group4357 links to the nested group4358 has the full group name as a title4359 behaves like a reference containing an element node4360 does not escape inner html4361 when a project is not specified4362 does not link a User4363 when skip_project_check set to true4364 links to a User4365 does not link users using @all reference4366 in group context4367 supports a special @all mention4368 supports mentioning a single user4369 supports mentioning a group4370 #namespaces4371 returns a Hash containing all Namespaces4372 #usernames4373 returns the usernames mentioned in a document4374 checking N+14375 does not have N+1 per multiple user references4376Gitlab::Ci::Build::Rules::Rule::Clause::Exists4377 #satisfied_by?4378 when the rules are being evaluated at job level4379 behaves like a rules:exists with a context4380 behaves like a glob matching rule4381 exact top-level match4382 is expected to eq true4383 exact top-level no match4384 is expected to eq false4385 pattern top-level match4386 is expected to eq true4387 pattern top-level no match4388 is expected to eq false4389 exact nested match4390 is expected to eq true4391 exact nested no match4392 is expected to eq false4393 pattern nested match4394 is expected to eq true4395 pattern nested no match4396 is expected to eq false4397 ext top-level match4398 is expected to eq true4399 ext nested no match4400 is expected to eq false4401 ext slash no match4402 is expected to eq false4403 when the rules:exists has a variable4404 when the context has the specified variables4405 is expected to be truthy4406 when variable expansion does not match4407 is expected to be falsey4408 after pattern comparision limit is reached4409 is expected to be truthy4410 when the rules are being evaluated for an entire pipeline4411 behaves like a rules:exists with a context4412 behaves like a glob matching rule4413 exact top-level match4414 is expected to eq true4415 exact top-level no match4416 is expected to eq false4417 pattern top-level match4418 is expected to eq true4419 pattern top-level no match4420 is expected to eq false4421 exact nested match4422 is expected to eq true4423 exact nested no match4424 is expected to eq false4425 pattern nested match4426 is expected to eq true4427 pattern nested no match4428 is expected to eq false4429 ext top-level match4430 is expected to eq true4431 ext nested no match4432 is expected to eq false4433 ext slash no match4434 is expected to eq false4435 when the rules:exists has a variable4436 when the context has the specified variables4437 is expected to be truthy4438 when variable expansion does not match4439 is expected to be falsey4440 after pattern comparision limit is reached4441 is expected to be truthy4442 when rules are being evaluated with `include`4443 behaves like a rules:exists with a context4444 behaves like a glob matching rule4445 exact top-level match4446 is expected to eq true4447 exact top-level no match4448 is expected to eq false4449 pattern top-level match4450 is expected to eq true4451 pattern top-level no match4452 is expected to eq false4453 exact nested match4454 is expected to eq true4455 exact nested no match4456 is expected to eq false4457 pattern nested match4458 is expected to eq true4459 pattern nested no match4460 is expected to eq false4461 ext top-level match4462 is expected to eq true4463 ext nested no match4464 is expected to eq false4465 ext slash no match4466 is expected to eq false4467 when the rules:exists has a variable4468 when the context has the specified variables4469 is expected to be truthy4470 when variable expansion does not match4471 is expected to be falsey4472 after pattern comparision limit is reached4473 is expected to be truthy4474 when context has no project4475 is expected to eq false4476Gitlab::Database::BackgroundMigration::BatchedMigration4477 is expected to be a kind of Gitlab::Database::SharedModel(abstract)4478 associations4479 is expected to have many batched_jobs4480 #last_job4481 returns the batched job with highest max_value4482 validations4483 is expected to validate that :job_arguments is case-sensitively unique within the scope of :job_class_name, :table_name, and :column_name4484 when there are failed jobs4485 raises an exception4486 when the jobs are completed4487 finishes the migration4488 state machine4489 when a migration is executed4490 updates the started_at4491 #pause!4492 when an invalid transition is applied4493 raises an exception4494 raises an exception4495 raises an exception4496 when a valid transition is applied4497 moves to pause4498 moves to pause4499 #execute!4500 when an invalid transition is applied4501 raises an exception4502 raises an exception4503 when a valid transition is applied4504 moves to active4505 moves to active4506 moves to active4507 #finish!4508 when an invalid transition is applied4509 raises an exception4510 when a valid transition is applied4511 moves to active4512 moves to active4513 moves to active4514 moves to active4515 #failure!4516 when an invalid transition is applied4517 raises an exception4518 raises an exception4519 when a valid transition is applied4520 moves to active4521 moves to active4522 moves to active4523 .valid_status4524 returns valid status4525 .queue_order4526 returns batched migrations ordered by their id4527 .ordered_by_created_at_desc4528 returns batched migrations ordered by created_at (DESC)4529 .active_migration4530 when there are no migrations on hold4531 returns the first active migration according to queue order4532 when there are migrations on hold4533 returns the first active migration that is not on hold according to queue order4534 when there are migrations not available for the current connection4535 returns the first active migration that is available for the current connection4536 when there are no active migrations available4537 returns nil4538 .find_executable4539 when the migration does not exist4540 returns nil4541 when the migration is not active4542 returns nil4543 when the migration is on hold4544 returns nil4545 when the migration is not available for the current connection4546 returns nil4547 when ther migration exists and is executable4548 returns the migration4549 .active_migrations_distinct_on_table4550 returns one pending executable migration per table4551 returns epmty collection when there are no pending executable migrations4552 .created_after4553 only returns migrations created after the specified time4554 .queued4555 returns active and paused migrations4556 .finalizing4557 returns only finalizing migrations4558 .successful_rows_counts4559 returns totals from successful jobs4560 #reset_attempts_of_blocked_jobs!4561 sets the number of attempts to zero for blocked jobs4562 #interval_elapsed?4563 when the migration has no last_job4564 returns true4565 when the migration has a last_job4566 when the last_job is less than an interval old4567 returns false4568 when the last_job is exactly an interval old4569 returns true4570 when the last_job is more than an interval old4571 returns true4572 when an interval variance is given4573 when the last job is less than an interval with variance old4574 returns false4575 when the last job is more than an interval with variance old4576 returns true4577 #create_batched_job!4578 creates a batched_job with the correct batch configuration4579 #next_min_value4580 when a previous job exists4581 returns the next value after the previous maximum4582 when a previous job does not exist4583 returns the migration minimum value4584 #job_class4585 returns the class of the job for the migration4586 #batch_class4587 returns the class of the batch strategy for the migration4588 #retry_failed_jobs!4589 when there are failed migration jobs4590 moves the status of the migration to active4591 changes the number of attempts to 04592 when there are no failed migration jobs4593 moves the status of the migration to active4594 #should_stop?4595 when the started_at is nil4596 is expected to be falsey4597 when the number of jobs is lesser than the MINIMUM_JOBS4598 is expected to be falsey4599 when the calculated value is greater than the threshold4600 is expected to be truthy4601 when the calculated value is lesser than the threshold4602 is expected to be falsey4603 #job_class_name=4604 behaves like an attr_writer that assigns class names4605 when a module name exists4606 keeps the class with module name4607 removes leading namespace resolution operator4608 when a module name does not exist4609 does not change the given class name4610 #batch_class_name=4611 behaves like an attr_writer that assigns class names4612 when a module name exists4613 keeps the class with module name4614 removes leading namespace resolution operator4615 when a module name does not exist4616 does not change the given class name4617 #migrated_tuple_count4618 sums the batch_size of succeeded jobs4619 #prometheus_labels4620 returns a hash with labels for the migration4621 #smoothed_time_efficiency4622 when there are not enough jobs4623 returns nil4624 when there are enough jobs4625 example 1: increasing trend, but only recently crossed threshold4626 returns the smoothed time efficiency4627 example 2: increasing trend, crossed threshold a while ago4628 returns the smoothed time efficiency4629 example 3: decreasing trend, but only recently crossed threshold4630 returns the smoothed time efficiency4631 example 4: latest run spiked4632 returns the smoothed time efficiency4633 with preloaded batched migration4634 avoids N+14635 #optimize!4636 calls the BatchOptimizer4637 #hold!4638 updates on_hold_until property4639 defaults to 10 minutes4640 #on_hold?4641 returns false if no on_hold_until is set4642 returns false if on_hold_until has passed4643 returns true if on_hold_until is in the future4644 #progress4645 when the migration is completed4646 returns 1004647 when the status is finished4648 returns 1004649 when the migration does not have jobs4650 returns zero4651 when the `total_tuple_count` is zero4652 returns nil4653 when migration has completed jobs4654 calculates the progress4655 .for_configuration4656 finds the migration matching the given configuration parameters4657 filters by gitlab schemas available for the connection4658 doesn not filter by gitlab schemas available for the connection if the column is nor present4659 .find_for_configuration4660 returns nill if such migration does not exists4661 returns the migration when it exists4662 .for_gitlab_schema4663 finds the migrations matching the given gitlab schema4664CommitsHelper4665 commit_author_link4666 escapes the author email4667 escapes the author name4668 commit_committer_link4669 escapes the committer email4670 escapes the committer name4671 #view_file_button4672 links to project files4673 #view_on_environment_button4674 returns a link tag linking to the file in the environment4675 #diff_mode_swap_button4676 for rendered4677 renders the correct select-rendered button4678 for raw4679 renders the correct select-raw button4680 #commit_to_html4681 renders HTML representation of a commit4682 commit_path4683 returns a persisted merge request commit path4684 returns a non-persisted merge request commit path which commits still reside in the source project4685 returns a project commit path4686 #conditionally_paginate_diff_files4687 pagination is enabled4688 has been paginated4689 can change the number of items per page4690 page 14691 has 20 diffs4692 page 54693 has the remaining 5 out of 85 diffs4694 pagination is disabled4695 returns the unpaginated collection4696 #cherry_pick_projects_data4697 returns data for cherry picking into a project4698 #commit_options_dropdown_data4699 when user is logged in4700 returns data as expected4701 when can not collaborate on project4702 returns data as expected4703 when commit has already been reverted4704 returns data as expected4705 when user is not logged in4706 returns data as expected4707 #commit_partial_cache_key4708 is expected to eq [#<CommitPresenter(#<Commit id:570e7b2abdd848b95f2f578043fc23bd6f6fd24d namespace828/project847@570e7...path=>"test", :pipeline_status=>"pipelines/64-20230330115450147545", :referenced_by=>0, :xhr=>true}]4709 when the show_tags_on_commits_view flag is disabled4710 is expected to eq [#<CommitPresenter(#<Commit id:570e7b2abdd848b95f2f578043fc23bd6f6fd24d namespace831/project850@570e7...330115452812701", :path=>"test", :pipeline_status=>"pipelines/65-20230330115452044529", :xhr=>true}]4711 final cache key output4712 is expected to include "commit:570e7b2abdd848b95f2f578043fc23bd6f6fd24d"4713 is expected to include "pipelines/67-20230330115456444051"4714 #commit_path_template4715 is expected to eq "/namespace840/project859/-/commit/$COMMIT_SHA"4716CommitRange4717 raises ArgumentError when given an invalid range string4718 modules4719 is expected to includes the Referable module4720 #initialize4721 does not modify strings in-place4722 #to_s4723 is correct for three-dot syntax4724 is correct for two-dot syntax4725 #to_reference4726 returns a String reference to the object4727 returns a String reference to the object4728 supports a cross-project reference4729 #reference_link_text4730 returns a String reference to the object4731 returns a String reference to the object4732 supports a cross-project reference4733 #to_param4734 includes the correct keys4735 includes the correct values for a three-dot range4736 includes the correct values for a two-dot range4737 #exclude_start?4738 is false for three-dot ranges4739 is true for two-dot ranges4740 #valid_commits?4741 with a valid repo4742 is false when `sha_from` is invalid4743 is false when `sha_to` is invalid4744 is true when both `sha_from` and `sha_to` are valid4745 without a valid repo4746 returns false4747Ci::PipelinesFinder4748 #execute4749 when params is empty4750 returns all pipelines4751 when scope is running4752 returns matched pipelines4753 when scope is pending4754 returns matched pipelines4755 when scope is finished4756 returns matched pipelines4757 when scope is branches or tags4758 when scope is branches4759 returns matched pipelines4760 when scope is tags4761 returns matched pipelines4762 when project has child pipelines4763 filters out child pipelines and shows only the parents by default4764 when status is created4765 returns matched pipelines4766 when status is waiting_for_resource4767 returns matched pipelines4768 when status is preparing4769 returns matched pipelines4770 when status is pending4771 returns matched pipelines4772 when status is running4773 returns matched pipelines4774 when status is success4775 returns matched pipelines4776 when status is failed4777 returns matched pipelines4778 when status is canceled4779 returns matched pipelines4780 when status is skipped4781 returns matched pipelines4782 when status is manual4783 returns matched pipelines4784 when status is scheduled4785 returns matched pipelines4786 when ref is specified4787 when ref exists4788 returns matched pipelines4789 when ref does not exist4790 returns empty4791 when username is specified4792 when username exists4793 returns matched pipelines4794 when username does not exist4795 returns empty4796 when yaml_errors is specified4797 when yaml_errors is true4798 returns matched pipelines4799 when yaml_errors is false4800 returns matched pipelines4801 when yaml_errors is invalid4802 returns all pipelines4803 when updated_at filters are specified4804 returns deployments with matched updated_at4805 when iids filter is specified4806 returns matches pipelines4807 does not fitler out child pipelines4808 when sha is specified4809 when sha exists4810 returns matched pipelines4811 when sha does not exist4812 returns empty4813 when the project has limited access to pipelines4814 when the user has access4815 is expected to return pipelines4816 the user is not allowed to read pipelines4817 returns empty4818 when source is specified4819 returns only the matched pipeline4820 when name is specified4821 performs exact compare4822 when name does not exist4823 returns empty4824 when pipeline_name_search feature flag is off4825 ignores name parameter4826 ordering4827 order_by: "id", sort: "asc", ordered_pipelines: [:pipeline_1, :pipeline_2, :pipeline_3]4828 returns the pipelines ordered4829 order_by: "id", sort: "desc", ordered_pipelines: [:pipeline_3, :pipeline_2, :pipeline_1]4830 returns the pipelines ordered4831 order_by: "ref", sort: "asc", ordered_pipelines: [:pipeline_2, :pipeline_1, :pipeline_3]4832 returns the pipelines ordered4833 order_by: "ref", sort: "desc", ordered_pipelines: [:pipeline_3, :pipeline_1, :pipeline_2]4834 returns the pipelines ordered4835 order_by: "status", sort: "asc", ordered_pipelines: [:pipeline_2, :pipeline_1, :pipeline_3]4836 returns the pipelines ordered4837 order_by: "status", sort: "desc", ordered_pipelines: [:pipeline_3, :pipeline_1, :pipeline_2]4838 returns the pipelines ordered4839 order_by: "updated_at", sort: "asc", ordered_pipelines: [:pipeline_2, :pipeline_3, :pipeline_1]4840 returns the pipelines ordered4841 order_by: "updated_at", sort: "desc", ordered_pipelines: [:pipeline_1, :pipeline_3, :pipeline_2]4842 returns the pipelines ordered4843 order_by: "user_id", sort: "asc", ordered_pipelines: [:pipeline_1, :pipeline_2, :pipeline_3]4844 returns the pipelines ordered4845 order_by: "user_id", sort: "desc", ordered_pipelines: [:pipeline_3, :pipeline_2, :pipeline_1]4846 returns the pipelines ordered4847 order_by: "invalid", sort: "asc", ordered_pipelines: [:pipeline_1, :pipeline_2, :pipeline_3]4848 returns the pipelines ordered4849 order_by: "id", sort: "err", ordered_pipelines: [:pipeline_3, :pipeline_2, :pipeline_1]4850 returns the pipelines ordered4851PipelineSerializer4852 # order random4853 #represent_status4854 when represents only status4855 serializes only status4856 #represent4857 when used without pagination4858 created a not paginated serializer4859 when a single object is being serialized4860 serializers the pipeline object4861 when multiple objects are being serialized4862 serializers the array of pipelines4863 when used with pagination4864 created a paginated serializer4865 when resource is not paginatable4866 when a single pipeline object is being serialized4867 raises error4868 when resource is paginatable relation4869 when a single pipeline object is present in relation4870 serializes pipeline relation4871 when a multiple pipeline objects are being serialized4872 serializes appropriate number of objects4873 appends relevant headers4874 when there are pipelines for merge requests4875 includes merge requests information4876 preloads related merge requests4877 number of queries when preloaded4878 with the same ref4879 verifies number of queries4880 with different refs4881 verifies number of queries4882 with triggered pipelines4883 verifies number of queries4884 with build environments4885 executes one query to fetch all related environments4886 with scheduled and manual builds4887 sends at most one metadata query for each type of build4888Integrations::Discord4889 behaves like chat integration4890 Associations4891 is expected to belong to project required: false4892 Validations4893 when integration is active4894 is expected to validate that :webhook cannot be empty/falsy4895 behaves like issue tracker integration URL attribute4896 is expected to allow :webhook to be ‹"https://example.com"›4897 is expected not to allow :webhook to be ‹"example.com"›4898 is expected not to allow :webhook to be ‹"ftp://example.com"›4899 is expected not to allow :webhook to be ‹"herp-and-derp"›4900 when integration is inactive4901 is expected not to validate that :webhook cannot be empty/falsy4902 .supported_events4903 does not support deployment_events4904 #execute4905 with push events4906 behaves like triggered Discord notifications integration4907 calls Discord notifications API4908 with default branch4909 when only default branch are to be notified4910 behaves like triggered Discord notifications integration4911 calls Discord notifications API4912 when only protected branches are to be notified4913 behaves like untriggered Discord notifications integration4914 does not call Discord notifications API4915 when default and protected branches are to be notified4916 behaves like triggered Discord notifications integration4917 calls Discord notifications API4918 when all branches are to be notified4919 behaves like triggered Discord notifications integration4920 calls Discord notifications API4921 with protected branch4922 when only default branch are to be notified4923 behaves like untriggered Discord notifications integration4924 does not call Discord notifications API4925 when only protected branches are to be notified4926 behaves like triggered Discord notifications integration4927 calls Discord notifications API4928 when default and protected branches are to be notified4929 behaves like triggered Discord notifications integration4930 calls Discord notifications API4931 when all branches are to be notified4932 behaves like triggered Discord notifications integration4933 calls Discord notifications API4934 with neither default nor protected branch4935 when only default branch are to be notified4936 behaves like untriggered Discord notifications integration4937 does not call Discord notifications API4938 when only protected branches are to be notified4939 behaves like untriggered Discord notifications integration4940 does not call Discord notifications API4941 when default and protected branches are to be notified4942 behaves like untriggered Discord notifications integration4943 does not call Discord notifications API4944 when all branches are to be notified4945 behaves like triggered Discord notifications integration4946 calls Discord notifications API4947 with issue events4948 behaves like triggered Discord notifications integration4949 calls Discord notifications API4950 with merge events4951 behaves like triggered Discord notifications integration4952 calls Discord notifications API4953 with wiki page events4954 behaves like triggered Discord notifications integration4955 calls Discord notifications API4956 with note events4957 with commit comment4958 behaves like triggered Discord notifications integration4959 calls Discord notifications API4960 with merge request comment4961 behaves like triggered Discord notifications integration4962 calls Discord notifications API4963 with issue comment4964 behaves like triggered Discord notifications integration4965 calls Discord notifications API4966 with snippet comment4967 behaves like triggered Discord notifications integration4968 calls Discord notifications API4969 with pipeline events4970 with failed pipeline4971 behaves like triggered Discord notifications integration4972 calls Discord notifications API4973 with succeeded pipeline4974 with default notify_only_broken_pipelines4975 does not call Discord notifications API4976 when notify_only_broken_pipelines is false4977 behaves like triggered Discord notifications integration4978 calls Discord notifications API4979 with default branch4980 when only default branch are to be notified4981 behaves like triggered Discord notifications integration4982 calls Discord notifications API4983 when only protected branches are to be notified4984 behaves like untriggered Discord notifications integration4985 does not call Discord notifications API4986 when default and protected branches are to be notified4987 behaves like triggered Discord notifications integration4988 calls Discord notifications API4989 when all branches are to be notified4990 behaves like triggered Discord notifications integration4991 calls Discord notifications API4992 with protected branch4993 when only default branch are to be notified4994 behaves like untriggered Discord notifications integration4995 does not call Discord notifications API4996 when only protected branches are to be notified4997 behaves like triggered Discord notifications integration4998 calls Discord notifications API4999 when default and protected branches are to be notified5000 behaves like triggered Discord notifications integration5001 calls Discord notifications API5002 when all branches are to be notified5003 behaves like triggered Discord notifications integration5004 calls Discord notifications API5005 with neither default nor protected branch5006 when only default branch are to be notified5007 behaves like untriggered Discord notifications integration5008 does not call Discord notifications API5009 when only protected branches are to be notified5010 behaves like untriggered Discord notifications integration5011 does not call Discord notifications API5012 when default and protected branches are to be notified5013 behaves like untriggered Discord notifications integration5014 does not call Discord notifications API5015 when all branches are to be notified5016 behaves like triggered Discord notifications integration5017 calls Discord notifications API5018 deployment events5019 behaves like untriggered Discord notifications integration5020 does not call Discord notifications API5021 #execute5022 uses the right embed parameters5023 DNS rebind to local address5024 does not allow DNS rebinding5025 when the Discord request fails5026 logs an error and returns false5027MergeRequests::FfMergeService5028 #execute5029 valid params5030 does not create merge commit5031 keeps the merge request valid5032 updates the merge request to merged5033 sends email to user2 about merge of new merge_request5034 creates resource event about merge_request merge5035 does not update squash_commit_sha if it is not a squash5036 updates squash_commit_sha if it is a squash5037 error handling5038 logs and saves error if there is an exception5039 logs and saves error if there is an PreReceiveError exception5040 does not update squash_commit_sha if squash merge is not successful5041Gitlab::ImportExport::ImportFailureService5042 #log_import_failure5043 when importable is a group5044 behaves like log import failure5045 tracks error5046 saves data to ImportFailure5047 when importable is a project5048 behaves like log import failure5049 tracks error5050 saves data to ImportFailure5051 when ImportFailure does not support importable class5052 raise exception5053 #with_retry5054 when exceptions are retriable5055 exception: GRPC::DeadlineExceeded5056 when retry succeeds5057 retries and logs import failure once with correct params5058 when retry continues to fail with intermittent errors5059 retries the number of times allowed and raise exception5060 logs import failure each time and raise exception5061 exception: ActiveRecord::QueryCanceled5062 when retry succeeds5063 retries and logs import failure once with correct params5064 when retry continues to fail with intermittent errors5065 retries the number of times allowed and raise exception5066 logs import failure each time and raise exception5067 when exception is not retriable5068 raise the exception5069Gitlab::BitbucketImport::Importer5070 #import_pull_requests5071 imports threaded discussions5072 when user exists in GitLab5073 does not add author line to comments5074 when importing a pull request throws an exception5075 logs an error without the backtrace5076 when branches' sha is not found in the repository5077 uses the pull request sha references5078 metrics5079 counts imported pull requests5080 issues statuses5081 maps statuses to open or closed5082 creating labels on project5083 creates labels as expected5084 does not fail if label is already existing5085 does not create new labels5086 does not update existing ones5087 wiki import5088 is skipped when the wiki exists5089 imports to the project disk_path5090 issue import5091 allocates internal ids5092 maps reporters to anonymous if bitbucket reporter is nil5093 sets work item type on new issues5094 with issue comments5095 imports issue comments5096 metrics5097 counts imported issues5098 #execute5099 metrics5100 counts and measures duration of imported projects5101Gitlab::Git::Branch5102 is expected to be a kind of Array5103 .find5104 when finding branch via branch name5105 returns a branch object5106 when the branch is already a branch5107 returns a branch object5108 #cache_key5109 returns a cache key that changes based on changeable values5110 #size5111 is expected to eq 835112 first branch5113 is expected to eq "'test'"5114 is expected to start with "e56497b"5115 master branch5116 is expected to start with "b83d6e391c22777fca1ed3012fce84f633d7fed0"5117 with active, stale and future branches5118 examine if the branch is active or stale5119 #active?5120 is expected to be falsey5121 is expected to be truthy5122 is expected to be truthy5123 #stale?5124 is expected to be truthy5125 is expected to be falsey5126 is expected to be falsey5127 #state5128 is expected to eq :stale5129 is expected to eq :active5130 is expected to eq :active5131Snippets::BulkDestroyService5132 #execute5133 deletes the snippets in bulk5134 when snippets is empty5135 returns a ServiceResponse success response5136 when user does not have access to remove the snippet5137 behaves like error is raised5138 returns error5139 no record is deleted5140 when skip_authorization option is passed5141 returns a ServiceResponse success response5142 deletes all the snippets that belong to the user5143 when an error is raised deleting the repository5144 behaves like error is raised5145 returns error5146 no record is deleted5147 when an error is raised deleting the records5148 behaves like error is raised5149 returns error5150 no record is deleted5151 when snippet does not have a repository attached5152 returns success5153Ci::PipelineCreation::CancelRedundantPipelinesService5154 # order random5155 #execute!5156 when build statuses are set up correctly5157 has builds of all statuses5158 when auto-cancel is enabled5159 cancels only previous interruptible builds5160 logs canceled pipelines5161 cancels the builds with 2 queries to avoid query timeout5162 does not cancel future pipelines5163 when the previous pipeline has a child pipeline5164 with another nested child pipeline5165 cancels all nested child pipeline builds5166 when started after pipeline was finished5167 cancels child pipeline builds5168 when the child pipeline has interruptible running jobs5169 cancels all child pipeline builds5170 when the child pipeline includes completed interruptible jobs5171 cancels all child pipeline builds with a cancelable_status5172 when the child pipeline has started non-interruptible job5173 does not cancel any child pipeline builds5174 when the child pipeline has non-interruptible non-started job5175 when the jobs are cancelable5176 cancels all child pipeline builds when build status waiting_for_resource included5177 cancels all child pipeline builds when build status preparing included5178 cancels all child pipeline builds when build status pending included5179 cancels all child pipeline builds when build status created included5180 cancels all child pipeline builds when build status scheduled included5181 when the jobs are not cancelable5182 does not cancel child pipeline builds when build status canceled included5183 does not cancel child pipeline builds when build status skipped included5184 does not cancel child pipeline builds when build status manual included5185 when the pipeline is a child pipeline5186 does not cancel any builds5187 when the previous pipeline source is webide5188 does not cancel builds of the previous pipeline5189 when auto-cancel is disabled5190 does not cancel any build5191Banzai::ReferenceParser::CommitRangeParser5192 #nodes_visible_to_user5193 when the link has a data-project attribute5194 includes the link if can_read_reference? returns true5195 excludes the link if can_read_reference? returns false5196 behaves like referenced feature visibility5197 when feature is disabled5198 does not create reference5199 when feature is enabled only for team members5200 does not create reference for non member5201 creates reference for member5202 when feature is enabled5203 creates reference5204 when the link does not have a data-project attribute5205 returns the nodes5206 #referenced_by5207 when the link has a data-project attribute5208 when the link as a data-commit-range attribute5209 returns an Array of commit ranges5210 returns an empty Array when the commit range could not be found5211 when the link does not have a data-commit-range attribute5212 returns an empty Array5213 when the link does not have a data-project attribute5214 returns an empty Array5215 #commit_range_ids_per_project5216 returns a Hash containing range IDs per project5217 does not add a project when the data-commit-range attribute is empty5218 #find_ranges5219 returns an Array of range objects5220 skips ranges that could not be found5221 #find_object5222 when the range has valid commits5223 returns the commit range5224 when the range does not have any valid commits5225 returns nil5226 group context5227 returns nil5228 when checking commits ranges on another projects5229 behaves like no project N+1 queries5230 avoids N+1 queries in #nodes_visible_to_user5231Discussions::UpdateDiffPositionService5232 #execute5233 when the diff line is the same5234 updates the position5235 when the resolve_outdated_diff_discussions setting is set5236 does not resolve the discussion5237 when the diff line has changed5238 doesn't update the position5239 sets the change position5240 creates a system discussion5241 when the resolve_outdated_diff_discussions setting is set5242 sets resolves the discussion and sets resolved_by_push5243 doesn't update the position5244 sets the change position5245 creates a system discussion5246Projects::HashedStorage::MigrateRepositoryService5247 #execute5248 works even when project validation fails5249 repository lock5250 tries to lock the repository5251 fails when a git operation is in progress5252 when repository doesnt exist on disk5253 skips the disk change but increase the version5254 when succeeds5255 renames project, wiki and design repositories5256 updates project to be hashed and not read-only5257 move operation is called for all repositories5258 writes project full path to gitaly5259 when exception happens5260 handles OpenSSL::Cipher::CipherError5261 ensures rollback when OpenSSL::Cipher::CipherError5262 handles Gitlab::Git::CommandError5263 ensures rollback when Gitlab::Git::CommandError5264 when one move fails5265 rollsback repositories to original name5266 when rollback fails5267 does not try to move nil repository over existing5268Gitlab::Kubernetes::Helm::V2::InitCommand5269 behaves like helm command generator5270 #generate_script5271 returns appropriate command5272 on a rbac-enabled cluster5273 behaves like helm command generator5274 #generate_script5275 returns appropriate command5276 behaves like helm command5277 HELM_VERSION5278 is expected to match /\d+\.\d+\.\d+/5279 #env5280 is expected to be a kind of Hash5281 #rbac?5282 rbac is enabled5283 is expected to be truthy5284 rbac is not enabled5285 is expected to be falsey5286 #pod_resource5287 rbac is enabled5288 is expected to be an instance of Kubeclient::Resource5289 generates a pod that uses the tiller serviceAccountName5290 rbac is not enabled5291 is expected to be an instance of Kubeclient::Resource5292 generates a pod that uses the default serviceAccountName5293 #config_map_resource5294 returns a KubeClient resource with config map content for the application5295 #service_account_resource5296 rbac is enabled5297 generates a Kubeclient resource for the tiller ServiceAccount5298 rbac is not enabled5299 generates nothing5300 #cluster_role_binding_resource5301 rbac is enabled5302 generates a Kubeclient resource for the ClusterRoleBinding for tiller5303 binds the account in #service_account_resource5304 rbac is not enabled5305 generates nothing5306Gitlab::Checks::SingleChangeAccess5307 #validate!5308 without failed checks5309 doesn't raise an error5310 calls pushes checks5311 calls branches checks5312 calls tags checks5313 calls diff checks5314 when time limit was reached5315 raises a TimeoutError5316 #commits5317 with provided commits5318 behaves like #commits5319 returns expected commits5320 returns expected commits on repeated calls5321 without provided commits5322 behaves like #commits5323 returns expected commits5324 returns expected commits on repeated calls5325IssueLinks::CreateService5326 #execute5327 behaves like issuable link creation5328 #execute5329 when the reference list is empty5330 returns error5331 when Issuable not found5332 returns error5333 no relationship is created5334 when user has no permission to target issuable5335 returns error5336 no relationship is created5337 source and target are the same issuable5338 does not create notes5339 no relationship is created5340 when there is an issuable to relate5341 creates relationships5342 returns success status and created links5343 creates notes5344 when reference of any already related issue is present5345 creates notes only for new relations5346 when there are invalid references5347 creates links only for valid references5348 returns error status5349 when target is an incident5350 behaves like an incident management tracked event5351 .track_event5352 tracks the event using redis5353 behaves like Snowplow event tracking with RedisHLL context5354 behaves like Snowplow event tracking5355 is emitted5356Security::MergeReportsService#execute5357 copies scanners into target report and eliminates duplicates5358 copies identifiers into target report and eliminates duplicates5359 deduplicates (except cwe and wasc) and sorts the vulnerabilities by severity (desc) then by compare key5360 deduplicates scanned resources5361 errors on target report5362 is expected to contain exactly {:message=>"bar", :type=>"foo"} and {:message=>"baz", :type=>"zoo"}5363 warnings on target report5364 is expected to contain exactly {:message=>"bar", :type=>"foo"} and {:message=>"baz", :type=>"zoo"}5365 ordering reports for sast analyzers5366 when reports are gathered in an unprioritized order5367 is expected to eql #<Gitlab::Ci::Reports::Security::Scanner:0x00007fcf3dea2720 @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:0x00007fcf3ac568c0 @external_id="semgrep", @name="Semgrep", ...="1.0.0", @primary_identifiers=nil, @sort_keys=[2, "semgrep", "Semgrep", "Security Scanner Vendor"]>5368 is expected to eq 25369 is expected to eql #<Gitlab::Ci::Reports::Security::Identifier:0x00007fcf1f2666f0 @external_id="B403", @external_type="b...id", @name="bandit_test_id-B403", @url=nil, @fingerprint="9ea39e538d11434f325435e905bf238e7cf1f7a4"> and #<Gitlab::Ci::Reports::Security::Identifier:0x00007fcf23cfccf0 @external_id="CVE-2019-123", @external...="cve", @name="cve-CVE-2019-123", @url=nil, @fingerprint="6d834ff5767ac7544bef36b0e9996a9a3d6da5f1">5370 is expected to contain exactly #<Gitlab::Ci::Reports::Security::Identifier:0x00007fcf20700138 @external_id="rules.bandit.B105", @ext...e="semgrep_id-rules.bandit.B105", @url=nil, @fingerprint="86d65bee153188dc92a8fd17263d8319d9fbe4ee">5371 when a custom analyzer is completed before the known analyzers5372 is expected to eql #<Gitlab::Ci::Reports::Security::Scanner:0x00007fcf00d04f68 @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:0x00007fcf1e7ac638 @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:0x00007fcf1d381f50 @external_id="scanner-2", @name="Scanner ...primary_identifiers=nil, @sort_keys=[Infinity, "scanner-2", "Scanner 2", "Security Scanner Vendor"]>5373 is expected to eq 35374 is expected to contain exactly #<Gitlab::Ci::Reports::Security::Identifier:0x00007fcf568f4990 @external_id="VULN-2", @external_type=...ner-2", @name="scanner-2-VULN-2", @url=nil, @fingerprint="8e683704c05c3d223f7572623a39cdf39ecc5f15"> and #<Gitlab::Ci::Reports::Security::Identifier:0x00007fcf5689d960 @external_id="CVE-2019-456", @external...="cve", @name="cve-CVE-2019-456", @url=nil, @fingerprint="47c8c718e4355e29c0b8e87fd62c2c7da65911dd">5375RuboCop::Cop::RSpec::MisspelledAggregateFailures5376 # order random5377 with legit tags5378 tag: "aggregate"5379 behaves like legit tag5380 does not flag5381 tag: "aggregations"5382 behaves like legit tag5383 does not flag5384 tag: "aggregate_two_underscores"5385 behaves like legit tag5386 does not flag5387 with misspelled tags5388 tag: "aggregate_errors"5389 behaves like misspelled tag5390 flags and auto-corrects misspelled tags in describe5391 flags and auto-corrects misspelled tags in context5392 flags and auto-corrects misspelled tags in examples5393 flags and auto-corrects misspelled tags in any order5394 tag: "aggregate_failure"5395 behaves like misspelled tag5396 flags and auto-corrects misspelled tags in describe5397 flags and auto-corrects misspelled tags in context5398 flags and auto-corrects misspelled tags in examples5399 flags and auto-corrects misspelled tags in any order5400 tag: "aggregated_failures"5401 behaves like misspelled tag5402 flags and auto-corrects misspelled tags in describe5403 flags and auto-corrects misspelled tags in context5404 flags and auto-corrects misspelled tags in examples5405 flags and auto-corrects misspelled tags in any order5406 tag: "aggregate_results"5407 behaves like misspelled tag5408 flags and auto-corrects misspelled tags in describe5409 flags and auto-corrects misspelled tags in context5410 flags and auto-corrects misspelled tags in examples5411 flags and auto-corrects misspelled tags in any order5412 tag: "aggregated_errors"5413 behaves like misspelled tag5414 flags and auto-corrects misspelled tags in describe5415 flags and auto-corrects misspelled tags in context5416 flags and auto-corrects misspelled tags in examples5417 flags and auto-corrects misspelled tags in any order5418 tag: "aggregates_failures"5419 behaves like misspelled tag5420 flags and auto-corrects misspelled tags in describe5421 flags and auto-corrects misspelled tags in context5422 flags and auto-corrects misspelled tags in examples5423 flags and auto-corrects misspelled tags in any order5424 tag: "aggregate_failues"5425 behaves like misspelled tag5426 flags and auto-corrects misspelled tags in describe5427 flags and auto-corrects misspelled tags in context5428 flags and auto-corrects misspelled tags in examples5429 flags and auto-corrects misspelled tags in any order5430 tag: "aggregate_bar"5431 behaves like misspelled tag5432 flags and auto-corrects misspelled tags in describe5433 flags and auto-corrects misspelled tags in context5434 flags and auto-corrects misspelled tags in examples5435 flags and auto-corrects misspelled tags in any order5436 tag: "aggregate_foo"5437 behaves like misspelled tag5438 flags and auto-corrects misspelled tags in describe5439 flags and auto-corrects misspelled tags in context5440 flags and auto-corrects misspelled tags in examples5441 flags and auto-corrects misspelled tags in any order5442Gitlab::Diff::LinesUnfolder5443 position requires a middle expansion and new match lines5444 old_line is an invalid number5445 fails gracefully5446 blob lines5447 returns the extracted blob lines correctly5448 diff lines5449 return merge of blob lines with diff lines correctly5450 merged lines have correct line codes5451 position requires a middle expansion and no top match line5452 blob lines5453 returns the extracted blob lines correctly5454 diff lines5455 return merge of blob lines with diff lines correctly5456 merged lines have correct line codes5457 position requires a middle expansion and no bottom match line5458 blob lines5459 returns the extracted blob lines correctly5460 diff lines5461 return merge of blob lines with diff lines correctly5462 merged lines have correct line codes5463 position requires a short top expansion5464 blob lines5465 returns the extracted blob lines correctly5466 diff lines5467 return merge of blob lines with diff lines correctly5468 merged lines have correct line codes5469 position sits between two match lines (no expasion needed)5470 diff lines5471 returns nil5472 position requires bottom expansion and new match lines5473 blob lines5474 returns the extracted blob lines correctly5475 diff lines5476 return merge of blob lines with diff lines correctly5477 merged lines have correct line codes5478 position requires bottom expansion and no new match line5479 blob lines5480 returns the extracted blob lines correctly5481 diff lines5482 return merge of blob lines with diff lines correctly5483 merged lines have correct line codes5484 positioned on an image5485 diff file is not text5486 returns nil5487 diff file is text5488 returns nil5489Ci::JobToken::Scope5490 #outbound_projects5491 when no projects are added to the scope5492 returns the project defining the scope5493 when projects are added to the scope5494 returns all projects that can be accessed from a given scope5495 #inbound_projects5496 when no projects are added to the scope5497 returns the project defining the scope5498 when projects are added to the scope5499 returns all projects that can be accessed from a given scope5500 add!5501 adds the project5502 adds the project5503 with inbound only enabled5504 provides access5505 accessible?5506 with inbound and outbound scopes enabled5507 when inbound and outbound access setup5508 accessed_project: current_project, result: true5509 allows self and projects allowed from both directions5510 accessed_project: inbound_allowlist_project, result: false5511 allows self and projects allowed from both directions5512 accessed_project: unscoped_project1, result: false5513 allows self and projects allowed from both directions5514 accessed_project: unscoped_project2, result: false5515 allows self and projects allowed from both directions5516 accessed_project: outbound_allowlist_project, result: false5517 allows self and projects allowed from both directions5518 accessed_project: inbound_accessible_project, result: false5519 allows self and projects allowed from both directions5520 accessed_project: fully_accessible_project, result: true5521 allows self and projects allowed from both directions5522 with inbound scope enabled and outbound scope disabled5523 accessed_project: current_project, result: true5524 is expected to eq true5525 accessed_project: inbound_allowlist_project, result: false5526 is expected to eq false5527 accessed_project: unscoped_project1, result: false5528 is expected to eq false5529 accessed_project: unscoped_project2, result: false5530 is expected to eq false5531 accessed_project: outbound_allowlist_project, result: false5532 is expected to eq false5533 accessed_project: inbound_accessible_project, result: true5534 is expected to eq true5535 accessed_project: fully_accessible_project, result: true5536 is expected to eq true5537 with inbound scope disabled and outbound scope enabled5538 accessed_project: current_project, result: true5539 is expected to eq true5540 accessed_project: inbound_allowlist_project, result: false5541 is expected to eq false5542 accessed_project: unscoped_project1, result: false5543 is expected to eq false5544 accessed_project: unscoped_project2, result: false5545 is expected to eq false5546 accessed_project: outbound_allowlist_project, result: true5547 is expected to eq true5548 accessed_project: inbound_accessible_project, result: false5549 is expected to eq false5550 accessed_project: fully_accessible_project, result: true5551 is expected to eq true5552Gitlab::ImportExport::AfterExportStrategies::BaseAfterExportStrategy5553 #execute5554 returns if project exported file is not found5555 creates a lock file in the export dir5556 when the method succeeds5557 removes the lock file5558 removes the archive path5559 when the method fails5560 when validation fails5561 does not create the lock file5562 does not execute main logic5563 logs validation errors in shared context5564 removes the archive path5565 when an exception is raised5566 removes the lock5567 #log_validation_errors5568 add the message to the shared context5569 #to_json5570 adds the current strategy class to the serialized attributes5571RemoveExpiredGroupLinksWorker5572 #perform5573 ProjectGroupLinks5574 removes expired group links5575 leaves group links that expire in the future5576 leaves group links that do not expire at all5577 removes project authorization5578 GroupGroupLinks5579 expired GroupGroupLink exists5580 calls Groups::GroupLinks::DestroyService5581 with skip_group_share_unlink_auth_refresh feature flag disabled5582 removes project authorization5583 with skip_group_share_unlink_auth_refresh feature flag enabled5584 does not remove project authorization5585 expired GroupGroupLink does not exist5586 does not call Groups::GroupLinks::DestroyService5587MergeRequestsHelper5588 #format_mr_branch_names5589 within the same project5590 is expected to eq ["master", "feature"]5591 within different projects5592 is expected to eq ["group53/project1123:master", "namespace1078/project1122:feature"]5593 #merge_path_description5594 forked with arrow5595 is expected to eq "Project:Branches: group54/project1125:master → namespace1079/project1124:feature"5596 forked default5597 is expected to eq "Project:Branches: group55/project1127:master to namespace1080/project1126:feature"5598 with arrow5599 is expected to eq "Branches: master → feature"5600 default5601 is expected to eq "Branches: master to feature"5602 #tab_link_for5603 supports the :force_link option5604 removes the data-toggle attributes5605 #user_merge_requests_counts5606 returns assigned, review requested and total merge request counts5607 #reviewers_label5608 when multiple reviewers exist5609 returns reviewer label with reviewer names5610 returns reviewer label only with include_value: false5611 when the name contains a URL5612 returns sanitized name5613 when one reviewer exists5614 returns reviewer label with no names5615 returns reviewer label only with include_value: false5616 when no reviewers exist5617 returns reviewer label with no names5618 returns reviewer label only with include_value: false5619AwardEmojis::AddService5620 #execute5621 when user is not authorized5622 does not add an emoji5623 returns an error state5624 when user is authorized5625 creates an award emoji5626 returns the award emoji5627 return a success status5628 sets the correct properties on the award emoji5629 marking Todos as done5630 type: :issue, expectation: true5631 is expected to eq true5632 type: :merge_request, expectation: true5633 is expected to eq true5634 type: :project_snippet, expectation: false5635 is expected to eq false5636 for notes5637 regular Notes5638 marks the Todo as done5639 PersonalSnippet Notes5640 does not mark the Todo as done5641 when the awardable cannot have emoji awarded to it5642 does not add an emoji5643 returns an error status5644 when the awardable is invalid5645 does not add an emoji5646 returns an error status5647 returns an error message5648Ci::CreatePipelineService#execute5649 with resource group5650 creates bridge job with resource group5651 when sidekiq processes the job5652 transitions to pending status and triggers a downstream pipeline5653 when the resource is occupied by the other bridge5654 stays waiting for resource5655BulkImports::Clients::HTTP5656 #get5657 performs network request5658 error handling5659 when error occurred5660 raises BulkImports::NetworkError5661 when response is not success5662 raises BulkImports::NetworkError5663 #each_page5664 with a block5665 yields every retrieved page to the supplied block5666 without a block5667 returns an Enumerator5668 when the request is asynchronous5669 sets a timeout that is double the default read timeout5670 #post5671 performs network request5672 error handling5673 when error occurred5674 raises BulkImports::NetworkError5675 when response is not success5676 raises BulkImports::NetworkError5677 #head5678 performs network request5679 error handling5680 when error occurred5681 raises BulkImports::NetworkError5682 when response is not success5683 raises BulkImports::NetworkError5684 #stream5685 performs network request with stream_body option5686 #instance_version5687 returns version as an instance of Gitlab::VersionInfo5688 when /version endpoint is not available5689 requests /metadata endpoint5690 when /metadata endpoint returns a 4015691 raises a BulkImports:Error5692 when /metadata endpoint returns a 4035693 raises a BulkImports:Error5694 when /metadata endpoint returns a 4045695 raises a BulkImports:Error5696 when /metadata endpoint returns any other BulkImports::NetworkError5697 raises a BulkImports:NetworkError5698 #validate_instance_version!5699 when instance version is greater than or equal to the minimum major version5700 is expected to eq true5701 when instance version is less than the minimum major version5702 is expected to raise BulkImports::Error5703 #validate_import_scopes!5704 when the source_version is < 15.55705 skips validation5706 when source version is 15.5 or higher5707 when an HTTP error is raised5708 raises BulkImports::NetworkError5709 when scopes are valid5710 returns true5711 when scopes are invalid5712 raises a BulkImports error5713 #instance_enterprise5714 returns source instance enterprise information5715 when enterprise information is missing5716 defaults to true5717 #compatible_for_project_migration?5718 when instance version is lower the the expected minimum5719 returns false5720 when instance version is at least the expected minimum5721 returns true5722 when url is relative5723 performs network request to a relative gitlab url5724QuickActions::TargetService5725 #execute5726 for issue5727 behaves like find target5728 returns the target5729 behaves like build target5730 builds a new target5731 behaves like build target5732 builds a new target5733 for work item5734 behaves like find target5735 returns the target5736 for merge request5737 behaves like find target5738 returns the target5739 behaves like build target5740 builds a new target5741 behaves like build target5742 builds a new target5743 for commit5744 behaves like find target5745 returns the target5746 behaves like no target5747 returns nil5748 with nil target_iid5749 behaves like find target5750 returns the target5751 for unknown type5752 behaves like no target5753 returns nil5754Gitlab::Ci::Charts5755 yearchart5756 goes until the end of the current month (including the whole last day of the month)5757 starts at the beginning of the current year5758 uses %B %Y as labels format5759 returns count of pipelines run each day in the current year5760 monthchart5761 includes the whole current day5762 starts one month ago5763 uses %d %B as labels format5764 returns count of pipelines run each day in the current month5765 weekchart5766 includes the whole current day5767 starts one week ago5768 uses %d %B as labels format5769 returns count of pipelines run each day in the current week5770 weekchart_utc5771 uses a utc time zone for range times5772 returns count of pipelines run each day in the current week5773 weekchart_non_utc5774 uses a non-utc time zone for range times5775 returns count of pipelines run each day in the current week5776 pipeline_times5777 returns pipeline times in minutes5778 handles nil pipeline times5779Gitlab::Ci::Config::Entry::Environment5780 when configuration is a string5781 #string?5782 is string configuration5783 #hash?5784 is not hash configuration5785 #valid?5786 is valid5787 #value5788 returns valid hash5789 #name5790 returns environment name5791 #url5792 returns environment url5793 when configuration is a hash5794 #string?5795 is not string configuration5796 #hash?5797 is hash configuration5798 #valid?5799 is valid5800 #value5801 returns valid hash5802 #name5803 returns environment name5804 #url5805 returns environment url5806 when valid action is used5807 action: "start"5808 is valid5809 action: "stop"5810 is valid5811 action: "prepare"5812 is valid5813 action: "verify"5814 is valid5815 action: "access"5816 is valid5817 when wrong action type is used5818 #valid?5819 is not valid5820 #errors5821 contains error about wrong action type5822 when invalid action is used5823 #valid?5824 is not valid5825 #errors5826 contains error about invalid action5827 when on_stop is used5828 is valid5829 when invalid on_stop is used5830 #valid?5831 is not valid5832 #errors5833 contains error about invalid action5834 when wrong url type is used5835 #valid?5836 is not valid5837 #errors5838 contains error about wrong url type5839 when variables are used for environment5840 #valid?5841 is valid5842 when auto_stop_in is specified5843 when auto_stop_in is correct format5844 becomes valid5845 when variables are used for auto_stop_in5846 becomes valid5847 when configuration is invalid5848 when configuration is an array5849 #valid?5850 is not valid5851 #errors5852 contains error about invalid type5853 when environment name is not present5854 #valid?5855 is not valid5856 #errors?5857 contains error about missing environment name5858 kubernetes5859 is a string5860 is expected not to be valid5861 is a hash5862 is expected to be valid5863 is nil5864 is expected to be valid5865 deployment_tier5866 is a string5867 is expected to be valid5868 is a hash5869 is expected not to be valid5870 is nil5871 is expected to be valid5872 is unknown value5873 is invalid and adds an error5874VersionCheckHelper5875 #show_version_check?5876 return conditions5877 enabled: false, consent: false, is_admin: false, result: false5878 returns correct results5879 enabled: false, consent: false, is_admin: true, result: false5880 returns correct results5881 enabled: false, consent: true, is_admin: false, result: false5882 returns correct results5883 enabled: false, consent: true, is_admin: true, result: false5884 returns correct results5885 enabled: true, consent: false, is_admin: false, result: false5886 returns correct results5887 enabled: true, consent: false, is_admin: true, result: true5888 returns correct results5889 enabled: true, consent: true, is_admin: false, result: false5890 returns correct results5891 enabled: true, consent: true, is_admin: true, result: false5892 returns correct results5893 #gitlab_version_check5894 returns an instance of the VersionCheck class5895 #show_security_patch_upgrade_alert?5896 return conditions5897 show_version_check: false, gitlab_version_check: nil, result: false5898 returns correct results5899 show_version_check: false, gitlab_version_check: {"severity"=>"success"}, result: false5900 returns correct results5901 show_version_check: false, gitlab_version_check: {"severity"=>"danger"}, result: false5902 returns correct results5903 show_version_check: false, gitlab_version_check: {"severity"=>"danger", "critical_vulnerability"=>"some text"}, 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"=>false}, 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: false, gitlab_version_check: {"severity"=>"danger", "critical_vulnerability"=>true}, result: false5912 returns correct results5913 show_version_check: true, gitlab_version_check: nil, result: false5914 returns correct results5915 show_version_check: true, gitlab_version_check: {"severity"=>"success"}, result: nil5916 returns correct results5917 show_version_check: true, gitlab_version_check: {"severity"=>"danger"}, result: nil5918 returns correct results5919 show_version_check: true, gitlab_version_check: {"severity"=>"danger", "critical_vulnerability"=>"some text"}, result: nil5920 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"=>false}, result: false5924 returns correct results5925 show_version_check: true, gitlab_version_check: {"severity"=>"danger", "critical_vulnerability"=>"true"}, result: true5926 returns correct results5927 show_version_check: true, gitlab_version_check: {"severity"=>"danger", "critical_vulnerability"=>true}, result: true5928 returns correct results5929Gitlab::Ci::Build::Context::Global5930 #variables5931 is expected to be an instance of Gitlab::Ci::Variables::Collection5932 behaves like variables collection5933 is expected to include {"CI_COMMIT_REF_NAME" => "master"}5934 is expected to include {"CI_PIPELINE_IID" => "1"}5935 is expected to include {"CI_PROJECT_PATH" => "namespace1135/project1176"}5936 is expected not to have key "CI_JOB_NAME"5937 is expected not to have key "CI_BUILD_REF_NAME"5938 with passed yaml variables5939 is expected to include {"SUPPORTED" => "parsed"}5940 #variables_hash5941 is expected to be an instance of ActiveSupport::HashWithIndifferentAccess5942 behaves like variables collection5943 is expected to include {"CI_COMMIT_REF_NAME" => "master"}5944 is expected to include {"CI_PIPELINE_IID" => "1"}5945 is expected to include {"CI_PROJECT_PATH" => "namespace1142/project1183"}5946 is expected not to have key "CI_JOB_NAME"5947 is expected not to have key "CI_BUILD_REF_NAME"5948 with passed yaml variables5949 is expected to include {"SUPPORTED" => "parsed"}5950notify/import_work_items_csv_email.html.haml5951 # order random5952 when no errors found while importing5953 renders correctly5954 behaves like contains project link5955 is expected to have visible link "Sidney Jones1796 / project1187" with href "http://test.host/namespace1146/project1187"5956 behaves like work item records created5957 is expected to have text "work items successfully imported."5958 behaves like does not contain parse error5959 is expected not to have text "Error parsing CSV file. Please make sure it has the correct format"5960 when import errors reported5961 renders correctly5962 behaves like contains project link5963 is expected to have visible link "Sidney Jones1796 / project1187" with href "http://test.host/namespace1146/project1187"5964 behaves like work item records created5965 is expected to have text "work items successfully imported."5966 behaves like does not contain parse error5967 is expected not to have text "Error parsing CSV file. Please make sure it has the correct format"5968 when work item type column contains missing entries5969 renders with missing work item message5970 behaves like contains project link5971 is expected to have visible link "Sidney Jones1796 / project1187" with href "http://test.host/namespace1146/project1187"5972 behaves like no records created5973 is expected not to have text "work items successfully imported."5974 behaves like does not contain parse error5975 is expected not to have text "Error parsing CSV file. Please make sure it has the correct format"5976 when work item type column contains blank entries5977 renders with missing work item message5978 behaves like contains project link5979 is expected to have visible link "Sidney Jones1796 / project1187" with href "http://test.host/namespace1146/project1187"5980 behaves like no records created5981 is expected not to have text "work items successfully imported."5982 behaves like does not contain parse error5983 is expected not to have text "Error parsing CSV file. Please make sure it has the correct format"5984 when parse error reported while importing5985 behaves like contains project link5986 is expected to have visible link "Sidney Jones1796 / project1187" with href "http://test.host/namespace1146/project1187"5987 behaves like no records created5988 is expected not to have text "work items successfully imported."5989 behaves like contains parse error5990 is expected to have text "Error parsing CSV file. Please make sure it has the correct format"5991 when work item type column contains disallowed entries5992 renders with missing work item message5993 behaves like contains project link5994 is expected to have visible link "Sidney Jones1796 / project1187" with href "http://test.host/namespace1146/project1187"5995 behaves like no records created5996 is expected not to have text "work items successfully imported."5997 behaves like does not contain parse error5998 is expected not to have text "Error parsing CSV file. Please make sure it has the correct format"5999 when CSV contains multiple kinds of work item type errors6000 renders with missing work item message6001 behaves like contains project link6002 is expected to have visible link "Sidney Jones1796 / project1187" with href "http://test.host/namespace1146/project1187"6003 behaves like no records created6004 is expected not to have text "work items successfully imported."6005 behaves like does not contain parse error6006 is expected not to have text "Error parsing CSV file. Please make sure it has the correct format"6007Ci::JobArtifacts::ExpireProjectBuildArtifactsService6008 #execute6009 with job containing erasable artifacts6010 unlocks erasable job artifacts6011 expires erasable job artifacts6012 with job containing trace artifacts6013 does not unlock trace artifacts6014 does not expire trace artifacts6015 with job from artifact locked pipeline6016 does not unlock locked artifacts6017 does not expire locked artifacts6018 with job containing both erasable and trace artifacts6019 unlocks erasable artifacts6020 expires erasable artifacts6021 does not unlock trace artifacts6022 does not expire trace artifacts6023 with multiple pipelines6024 unlocks artifacts across pipelines6025 expires artifacts across pipelines6026 with artifacts belonging to another project6027 does not unlock erasable artifacts in other projects6028 does not expire erasable artifacts in other projects6029ContainerRegistry::Migration6030 .enabled?6031 is expected to eq true6032 feature flag disabled6033 is expected to eq false6034 .limit_gitlab_org?6035 is expected to eq true6036 feature flag disabled6037 is expected to eq false6038 .enqueue_waiting_time6039 slow_enabled: false, fast_enabled: false, expected_result: 45 minutes6040 is expected to eq 45 minutes6041 slow_enabled: true, fast_enabled: false, expected_result: 165 minutes6042 is expected to eq 165 minutes6043 slow_enabled: false, fast_enabled: true, expected_result: 06044 is expected to eq 06045 slow_enabled: true, fast_enabled: true, expected_result: 06046 is expected to eq 06047 .capacity6048 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: 06049 is expected to eq 06050 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: 16051 is expected to eq 16052 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: 26053 is expected to eq 26054 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: 26055 is expected to eq 26056 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: 56057 is expected to eq 56058 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: 56059 is expected to eq 56060 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: 106061 is expected to eq 106062 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: 106063 is expected to eq 106064 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: 256065 is expected to eq 256066 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: 256067 is expected to eq 256068 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: 406069 is expected to eq 406070 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: 406071 is expected to eq 406072 .max_tags_count6073 returns the matching application_setting6074 .max_retries6075 returns the matching application_setting6076 .start_max_retries6077 returns the matching application_setting6078 .max_step_duration6079 returns the matching application_setting6080 .target_plan_name6081 returns the matching application_setting6082 .created_before6083 returns the matching application_setting6084 .pre_import_timeout6085 returns the matching application_setting6086 .import_timeout6087 returns the matching application_setting6088 .pre_import_tags_rate6089 returns the matching application_setting6090 .target_plans6091 target_plan: "free", result: ["free", "early_adopter", nil]6092 is expected to eq ["free", "early_adopter", nil]6093 target_plan: "premium", result: ["premium", "bronze", "silver", "premium_trial"]6094 is expected to eq ["premium", "bronze", "silver", "premium_trial"]6095 target_plan: "ultimate", result: ["ultimate", "gold", "ultimate_trial"]6096 is expected to eq ["ultimate", "gold", "ultimate_trial"]6097 .all_plans?6098 is expected to eq true6099 feature flag disabled6100 is expected to eq false6101 .delete_container_repository_worker_support?6102 is expected to eq true6103 feature flag disabled6104 is expected to eq false6105 .dynamic_pre_import_timeout_for6106 returns the expected seconds6107gitlab:incoming_email:secret rake tasks6108 # order random6109 edit6110# password: '123'6111# user: 'gitlab-incoming@gmail.com'6112 creates encrypted file6113 displays error when key does not exist6114 displays error when key is changed6115 displays error when write directory does not exist6116somevalue shows a warning when content is invalid6117 displays error when $EDITOR is not set6118 write6119 creates encrypted file from stdin6120 displays error when key does not exist6121 displays error when write directory does not exist6122somevalue shows a warning when content is invalid6123 :show6124 displays error when file does not exist6125 displays error when key does not exist6126 displays error when key is changed6127 outputs the unencrypted content when present6128BulkImports::FileDownloadService6129 #execute6130 downloads file6131 when content-type is application/gzip6132 downloads file6133 when url is not valid6134 raises an error6135 when content-type is not valid6136 raises an error6137 when content-length is not valid6138 when content-length exceeds limit6139 raises an error6140 when content-length is missing6141 raises an error6142 when content-length is equals the file size limit6143 does not raise an error6144 when partially downloaded file exceeds limit6145 raises an error6146 when chunk code is not 2006147 raises an error6148 when chunk code is redirection6149 does not write a redirection chunk6150 when redirection chunk appears at a later stage of the download6151 raises an error6152 remote content validation6153 on redirect chunk6154 does not run content type & length validations6155 when there is one data chunk6156 validates content type & length6157 when there are multiple data chunks6158 validates content type & length only once6159 when file is a symlink6160 raises an error and removes the file6161 when dir is not in tmpdir6162 raises an error6163 when dir path is being traversed6164 raises an error6165 when using the remote filename6166 when no filename is given6167 raises an error when the filename is not provided in the request header6168 with a given filename6169 uses the given filename6170 when the filename is a path6171 raises an error when the filename is not provided in the request header6172 when the filename is longer the the limit6173 raises an error when the filename is not provided in the request header6174Sbom::PackageUrl::Encoder6175 # order random6176 #encode6177 valid maven purl6178 is expected to eq "pkg:maven/org.apache.commons/io@1.3.4"6179 basic valid maven purl without version6180 is expected to eq "pkg:maven/org.apache.commons/io"6181 valid go purl without version and with subpath6182 is expected to eq "pkg:golang/google.golang.org/genproto#googleapis/api/annotations"6183 valid go purl with version and subpath6184 is expected to eq "pkg:golang/google.golang.org/genproto@abcdedf#googleapis/api/annotations"6185 bitbucket namespace and name should be lowercased6186 is expected to eq "pkg:bitbucket/birkenfeld/pygments-main@244fd47e07d1014f0aed9c"6187 github namespace and name should be lowercased6188 is expected to eq "pkg:github/package-url/purl-spec@244fd47e07d1004f0aed9c"6189 debian can use qualifiers6190 is expected to eq "pkg:deb/debian/curl@7.50.3-1?arch=i386&distro=jessie"6191 docker uses qualifiers and hash image id as versions6192 is expected to eq "pkg:docker/customer/dockerimage@sha256%3A244fd47e07d1004f0aed9c?repository_url=gcr.io"6193 Java gem can use a qualifier6194 is expected to eq "pkg:gem/jruby-launcher@1.1.2?platform=java"6195 maven often uses qualifiers6196 is expected to eq "pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?classifier=sources&repository_url=repo.spring.io%2Frelease"6197 maven pom reference6198 is expected to eq "pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?extension=pom&repository_url=repo.spring.io%2Frelease"6199 maven can come with a type qualifier6200 is expected to eq "pkg:maven/net.sf.jacob-project/jacob@1.14.3?classifier=x86&type=dll"6201 npm can be scoped6202 is expected to eq "pkg:npm/%40angular/animation@12.3.1"6203 nuget names are case sensitive6204 is expected to eq "pkg:nuget/EnterpriseLibrary.Common@6.0.1304"6205 pypi names have special rules and not case sensitive6206 is expected to eq "pkg:pypi/django-package@1.11.1.dev1"6207 rpm often use qualifiers6208 is expected to eq "pkg:rpm/fedora/curl@7.50.3-1.fc25?arch=i386&distro=fedora-25"6209 slash / after scheme is not significant6210 is expected to eq "pkg:maven/org.apache.commons/io"6211 double slash // after scheme is not significant6212 is expected to eq "pkg:maven/org.apache.commons/io"6213 slash /// after type is not significant6214 is expected to eq "pkg:maven/org.apache.commons/io"6215 valid maven purl with case sensitive namespace and name6216 is expected to eq "pkg:maven/HTTPClient/HTTPClient@0.3-3"6217 valid maven purl containing a space in the version and qualifier6218 is expected to eq "pkg:maven/mygroup/myartifact@1.0.0+Final?mykey=my+value"6219 valid conan purl6220 is expected to eq "pkg:conan/cctz@2.3"6221 valid conan purl with namespace and qualifier channel6222 is expected to eq "pkg:conan/bincrafters/cctz@2.3?channel=stable"6223 valid conda purl with qualifiers6224 is expected to eq "pkg:conda/absl-py@0.4.1?build=py36h06a4308_0&channel=main&subdir=linux-64&type=tar.bz2"6225 valid cran purl6226 is expected to eq "pkg:cran/A3@0.9.1"6227 valid swift purl6228 is expected to eq "pkg:swift/github.com/Alamofire/Alamofire@5.4.3"6229 valid hackage purl6230 is expected to eq "pkg:hackage/AC-HalfInteger@1.2.1"6231WorkItems::Type6232 modules6233 is expected to includes the CacheMarkdownField module6234 associations6235 is expected to have many work_items6236 is expected to belong to namespace required: false6237 has many `widget_definitions`6238 has many `enabled_widget_definitions`6239 scopes6240 order_by_name_asc6241 is expected to match ["atype", "gtype", "Ztype"]6242 #destroy6243 does not delete type when there are related issues6244 when there are no work items of that type6245 deletes type but not unrelated issues6246 validation6247 is expected not to allow :icon_name to be ‹"ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss"›6248 name uniqueness6249 is expected to validate that :name is case-insensitively unique within the scope of :namespace_id6250 .default_by_type6251 returns default work item type by base type without calling importer6252 when default types are missing6253 creates types and restrictions and returns default work item type by base type6254 #default?6255 when namespace is nil6256 is expected to be truthy6257 when namespace is present6258 is expected to be falsey6259 #name6260 strips name6261 #supports_assignee?6262 is expected to be truthy6263 when the assignees widget is not supported6264 is expected to be falsey6265 #default_issue?6266 when work item type is default Issue6267 returns true6268 when work item type is not Issue6269 returns false6270Gitlab::EtagCaching::Middleware6271 .skip!6272 sets the skip header on the response6273 when ETag caching is not enabled for current route6274 does not add ETag headers6275 passes status code from app6276 does not set feature category attribute6277 when there is no ETag in store for given resource6278 generates ETag6279 when If-None-Match header was specified6280 tracks "etag_caching_key_not_found" event6281 when there is ETag in store for given resource6282 returns the correct headers6283 when the matching route requests that the ETag is skipped6284 returns the correct headers6285 when If-None-Match header matches ETag in store6286 does not call app6287 returns status code 3046288 sets correct headers6289 pushes expected information in to the context6290 returns empty body6291 tracks "etag_caching_cache_hit" event6292 behaves like sends a process_action.action_controller notification6293 sends the expected payload6294 publishes process_action.action_controller event to be picked up by lograge's subscriber6295 when polling is disabled6296 returns status code 4296297 behaves like sends a process_action.action_controller notification6298 sends the expected payload6299 publishes process_action.action_controller event to be picked up by lograge's subscriber6300 when If-None-Match header does not match ETag in store6301 calls app6302 tracks "etag_caching_resource_changed" event6303 when If-None-Match header is not specified6304 tracks "etag_caching_header_missing" event6305 when GitLab instance is using a relative URL6306 uses full path as cache key6307StuckMergeJobsWorker6308 perform6309 merge job identified as completed6310 updates merge request to merged when locked but has merge_commit_sha6311 updates merge request to opened when locked but has not been merged6312 logs updated stuck merge job ids6313 merge job not identified as completed6314 does not change merge request state when job is not completed yet6315Gitlab::Diff::HighlightCache6316 #decorate6317 does not calculate highlighting when reading from cache6318 assigns highlighted diff lines to the DiffFile6319 assigns highlighted diff lines which rich_text are HTML-safe6320 when diff_file is uncached due to default_max_patch_bytes change6321 manually writes highlighted lines to the cache6322 assigns highlighted diff lines to the DiffFile6323 #write_if_empty6324 updates memory usage metrics if Redis version >= 46325 does not update memory usage metrics if Redis version < 46326 behaves like caches missing entries6327 filters the key/value list of entries to be caches for each invocation6328 reads from cache once6329 refreshes TTL of the key on read6330 different diff_collections for the same diffable6331 writes an uncached files in the collection to the same redis hash6332 when cache initialized with MergeRequestDiffBatch6333 behaves like caches missing entries6334 filters the key/value list of entries to be caches for each invocation6335 reads from cache once6336 refreshes TTL of the key on read6337 #write_to_redis_hash6338 creates or updates a Redis hash6339 when diff contains unsupported characters6340 does not update the cache6341 #clear6342 clears cache6343 GZip usage6344 uses ActiveSupport::Gzip when reading from the cache6345 uses ActiveSupport::Gzip to compress data when writing to cache6346 metrics6347 observes :gitlab_redis_diff_caching_memory_usage_bytes6348 records hit ratio metrics6349 #key6350 returns cache key6351 when the `diff_line_syntax_highlighting` feature flag is disabled6352 returns the original version of the cache6353Mutations::Timelogs::Delete6354 #resolve6355 when the timelog id is not valid6356 raises Gitlab::Graphql::Errors::ResourceNotAvailable6357 when the current user is not the timelog's author, not a maintainer and not an admin6358 raises Gitlab::Graphql::Errors::ResourceNotAvailable6359 when the current user is the timelog's author6360 deletes the timelog6361 returns the deleted timelog6362 returns no errors6363 when the current user is not the timelog's author but a maintainer of the project6364 deletes the timelog6365 returns the deleted timelog6366 returns no errors6367 when the current user is not the timelog's author, not a maintainer but an admin6368 deletes the timelog6369 returns the deleted timelog6370 returns no errors6371BoardProjectRecentVisit6372 relationships6373 is expected to belong to user required: false6374 is expected to belong to project required: false6375 is expected to belong to board required: false6376 validations6377 is expected to validate that :user cannot be empty/falsy6378 is expected to validate that :project cannot be empty/falsy6379 is expected to validate that :board cannot be empty/falsy6380 behaves like boards recent visit6381 #visited6382 creates a visit if one does not exists6383 behaves like was visited previously6384 updates the timestamp6385 when we try to create a visit that is not unique6386 behaves like was visited previously6387 updates the timestamp6388 #latest6389 returns the most recent visited6390 returns last 3 visited boards6391Gitlab::JiraImport6392 .validate_project_settings!6393 without user param6394 behaves like jira configuration base checks6395 with configuration_check set to false6396 does not raise Jira integration error6397 when Jira integration was not setup6398 behaves like raise Jira import error6399 returns error6400 when Jira integration exists6401 when Jira connection is not valid6402 behaves like raise Jira import error6403 returns error6404 when jira connection is valid6405 does not return any error6406 with user param provided6407 when user has permission to run import6408 behaves like jira configuration base checks6409 with configuration_check set to false6410 does not raise Jira integration error6411 when Jira integration was not setup6412 behaves like raise Jira import error6413 returns error6414 when Jira integration exists6415 when Jira connection is not valid6416 behaves like raise Jira import error6417 returns error6418 when jira integration is configured6419 when issues feature is disabled6420 behaves like raise Jira import error6421 returns error6422 when everything is ok6423 does not return any error6424 when user does not have permissions to run the import6425 behaves like raise Jira import error6426 returns error6427 .already_imported_cache_key6428 returns cache key for already imported items6429 .jira_issues_next_page_cache_key6430 returns cache key for next issues6431 .get_issues_next_start_at6432 returns zero when not defined6433 returns negative value for next issues to be imported starting point6434 returns cached value for next issues to be imported starting point6435 .cache_users_mapping6436 stores the data correctly6437 .get_user_mapping6438 reads the data correctly6439 returns nil if value not found6440 .store_issues_next_started_at6441 stores nil value6442 stores positive value6443 stores negative value6444RepositoryArchiveCleanUpService6445 #execute (new archive locations)6446 removes outdated archives and directories in a new-style path6447 removes outdated archives and directories in a versioned path6448 does not remove directories when they contain outdated non-archives6449 does not remove in-date archives in a new-style path6450 #execute (legacy archive locations)6451 when the downloads directory does not exist6452 does not remove any archives6453 when the downloads directory exists6454 removes files older than 2 hours that matches valid archive extensions6455 with files older than 2 hours that does not matches valid archive extensions6456 behaves like invalid archive files6457 does not remove files and directory6458 with files older than 2 hours inside invalid directories6459 behaves like invalid archive files6460 does not remove files and directory6461 with files newer than 2 hours that matches valid archive extensions6462 behaves like invalid archive files6463 does not remove files and directory6464 with files newer than 2 hours that does not matches valid archive extensions6465 behaves like invalid archive files6466 does not remove files and directory6467 with files newer than 2 hours inside invalid directories6468 behaves like invalid archive files6469 does not remove files and directory6470Gitlab::Metrics::GlobalSearchSlis6471 # order random6472 #record_error_rate6473 calls increment on the error rate SLI6474 #record_apdex6475 search_type: "basic", code_search: false, duration_target: 8.8126476 increments the global_search SLI as a success if the elapsed time is within the target6477 increments the global_search SLI as a failure if the elapsed time is not within the target6478 search_type: "basic", code_search: true, duration_target: 27.5386479 increments the global_search SLI as a success if the elapsed time is within the target6480 increments the global_search SLI as a failure if the elapsed time is not within the target6481 search_type: "advanced", code_search: false, duration_target: 2.4526482 increments the global_search SLI as a success if the elapsed time is within the target6483 increments the global_search SLI as a failure if the elapsed time is not within the target6484 search_type: "advanced", code_search: true, duration_target: 15.526485 increments the global_search SLI as a success if the elapsed time is within the target6486 increments the global_search SLI as a failure if the elapsed time is not within the target6487 #initialize_slis!6488 initializes Apdex SLIs for global_search6489 initializes ErrorRate SLIs for global_search6490 when initializeing for limited types6491 api: true, web: true6492 only initializes for the relevant endpoints6493 api: true, web: false6494 only initializes for the relevant endpoints6495 api: false, web: true6496 only initializes for the relevant endpoints6497 api: false, web: false6498 only initializes for the relevant endpoints6499Banzai::ReferenceParser::LabelParser6500 #nodes_visible_to_user6501 when the link has a data-issue attribute6502 behaves like referenced feature visibility6503 when feature is disabled6504 does not create reference6505 when feature is enabled only for team members6506 does not create reference for non member6507 creates reference for member6508 when feature is enabled6509 creates reference6510 #referenced_by6511 when the link has a data-label attribute6512 using an existing label ID6513 returns an Array of labels6514 using a non-existing label ID6515 returns an empty Array6516Namespaces::UserNamespacePolicy6517 with no user6518 is expected to be banned6519 regular user6520 is expected to be disallowed :owner_access, :create_projects, :admin_namespace, :read_namespace, :read_statistics, :transfer_projects, :admin_package, :read_billing, and :edit_billing6521 owner6522 is expected to be allowed :owner_access, :create_projects, :admin_namespace, :read_namespace, :read_statistics, :transfer_projects, :admin_package, :read_billing, and :edit_billing6523 user who has exceeded project limit6524 is expected to be disallowed :create_projects6525 is expected to be disallowed :transfer_projects6526 bot user6527 is expected to be disallowed :create_projects6528 is expected to be disallowed :transfer_projects6529 admin6530 when admin mode is enabled6531 is expected to be allowed :owner_access, :create_projects, :admin_namespace, :read_namespace, :read_statistics, :transfer_projects, :admin_package, :read_billing, and :edit_billing6532 when admin mode is disabled6533 is expected to be disallowed :owner_access, :create_projects, :admin_namespace, :read_namespace, :read_statistics, :transfer_projects, :admin_package, :read_billing, and :edit_billing6534 create_jira_connect_subscription6535 admin6536 when admin mode enabled6537 is expected to be allowed :create_jira_connect_subscription6538 when admin mode disabled6539 is expected to be disallowed :create_jira_connect_subscription6540 owner6541 is expected to be allowed :create_jira_connect_subscription6542 other user6543 is expected to be disallowed :create_jira_connect_subscription6544 create projects6545 when user can create projects6546 is expected to be allowed :create_projects6547 when user cannot create projects6548 is expected to be disallowed :create_projects6549Gitlab::JiraImport::IssueSerializer6550 #execute6551 attributes setting6552 sets the basic attributes6553 creates a hash for valid issue6554 labels6555 creates all missing labels (on project level)6556 when there are no new labels6557 assigns the labels to the Issue hash6558 does not create new labels6559 author6560 when reporter maps to a valid GitLab user6561 sets the issue author to the mapped user6562 when reporter does not map to a valid Gitlab user6563 defaults the issue author to project creator6564 when reporter field is empty6565 defaults the issue author to project creator6566 when reporter field is missing accountId6567 defaults the issue author to project creator6568 assignee6569 when assignee maps to a valid GitLab user6570 sets the issue assignees to the mapped user6571 when assignee does not map to a valid GitLab user6572 leaves the assignee empty6573 when assginee field is empty6574 leaves the assignee empty6575 when assginee field is missing accountId6576 leaves the assignee empty6577 with jira server response6578 when assignee maps to a valid GitLab user6579 sets the issue assignees to the mapped user6580 with done status6581 maps the status to closed6582 without the iid6583 does not set the iid6584GroupMemberPresenter6585 #can_resend_invite?6586 when group_member is invited6587 and user can admin_group_member6588 is expected to eq true6589 and user cannot admin_group_member6590 is expected to eq false6591 when group_member is not invited6592 and user can admin_group_member6593 is expected to eq false6594 and user cannot admin_group_member6595 is expected to eq false6596 #last_owner?6597 when member is the last owner of the group6598 is expected to eq true6599 when member is not the last owner of the group6600 is expected to eq false6601 #can_update?6602 when user can update_group_member6603 is expected to eq true6604 when user cannot update_group_member6605 is expected to eq false6606 #can_remove?6607 when user can destroy_group_member6608 is expected to eq true6609 when user cannot destroy_group_member6610 is expected to eq false6611 #can_approve?6612 when group_member has request an invite6613 when user can update_group_member6614 is expected to eq true6615 when user cannot update_group_member6616 is expected to eq false6617 when group_member did not request an invite6618 when user can update_group_member6619 is expected to eq false6620 when user cannot update_group_member6621 is expected to eq false6622 behaves like #valid_level_roles6623 when no parent member is present6624 returns all permissible roles6625 when parent member is present6626 returns higher roles when a parent member is present6627JiraConnectInstallations::ProxyLifecycleEventService6628 # order random6629 #execute6630 when installed event6631 behaves like sends the event hook6632 returns a ServiceResponse6633 sends an installed event to the instance6634 creates the JWT token with the event and installation6635 and the instance responds with an error6636 returns an error ServiceResponse6637 logs the error response6638 and the request raises an error6639 returns an error ServiceResponse6640 when uninstalled event6641 behaves like sends the event hook6642 returns a ServiceResponse6643 sends an installed event to the instance6644 creates the JWT token with the event and installation6645 and the instance responds with an error6646 returns an error ServiceResponse6647 logs the error response6648 and the request raises an error6649 returns an error ServiceResponse6650 .execute6651 creates an instance and calls execute6652 .new6653 creates an internal duplicate of the installation and sets the instance_url6654 with unknown event6655 raises an error6656ErrorTracking::ListProjectsService6657 #execute6658 with authorized user6659 set model attributes to new values6660 uses new api_url and token6661 masked param token6662 with the current api host6663 uses database token6664 with a new api host6665 returns an error6666 resets the token6667 with invalid url6668 returns error6669 when list_sentry_projects returns projects6670 returns the projects6671 with unauthorized user6672 returns error6673 with error tracking disabled6674 ignores enabled flag6675 error_tracking_setting is nil6676 builds a new error_tracking_setting6677LimitedCapacity::Worker6678 required methods6679 is expected to raise NotImplementedError6680 is expected to raise NotImplementedError6681 is expected to raise NotImplementedError6682 Sidekiq options6683 does not retry failed jobs6684 does not deduplicate jobs6685 .perform_with_capacity6686 enqueues jobs6687 #perform6688 with capacity6689 calls perform_work6690 re-enqueues itself6691 reports prometheus metrics6692 updates the running set6693 with capacity and without work6694 does not re-enqueue itself6695 without capacity6696 does not call perform_work6697 does not re-enqueue itself6698 when perform_work fails6699 does not re-enqueue itself6700 removes itself from the running set6701 reports prometheus metrics6702 #remove_failed_jobs6703 removes failed jobs6704 #report_prometheus_metrics6705 reports number of running jobs6706Gitlab::Checks::PushFileCountCheck6707 #validate!6708 initial creation6709 allows creation6710 old: "single-file", new: "edit-file", valid: true, message: nil6711 verifies6712 old: "single-file", new: "multiple-files", valid: false, message: "The repository can contain at most 2 file(s)."6713 verifies6714 old: "single-file", new: "no-files", valid: false, message: "The repository must contain at least 1 file."6715 verifies6716 old: "edit-file", new: "rename-and-edit-file", valid: true, message: nil6717 verifies6718NewIssueWorker6719 #perform6720 when an issue not found6721 does not call Services6722 logs an error6723 when a user not found6724 does not call Services6725 logs an error6726 with a user6727 when the new issue author is blocked6728 behaves like a new issue where the current_user cannot trigger notifications6729 does not create a notification for the mentioned user6730 when the new issue author is a ghost6731 behaves like a new issue where the current_user cannot trigger notifications6732 does not create a notification for the mentioned user6733 when everything is ok6734 creates a new event record6735 creates a notification for the mentioned user6736 calls Issues::AfterCreateService6737 when a class is set6738 creates event with the correct type6739Packages::Npm::Metadatum6740 relationships6741 is expected to belong to package required: false inverse_of => npm_metadatum6742 validations6743 package6744 is expected to validate that :package cannot be empty/falsy6745 ensure npm package type6746 package_json6747 is expected to allow :package_json to be ‹{"name" => "foo", "version" => "v1.0", "dist" => {"tarball"=>"x", "shasum"=>"x"}}›6748 is expected to allow :package_json to be ‹{"name" => "foo", "version" => "v1.0", "dist" => {"tarball"=>"x", "shasum"=>"x"}, extra-field: {:foo=>"bar"}}›6749 is expected to allow :package_json to be ‹{"name" => "foo", "version" => "v1.0", "dist" => {"tarball"=>"x", "shasum"=>"x", :"extra-field"=>"x"}}›6750 is expected not to allow :package_json to be ‹{"version" => "v1.0", "dist" => {"tarball"=>"x", "shasum"=>"x"}}›6751 is expected not to allow :package_json to be ‹{"name" => "foo", "dist" => {"tarball"=>"x", "shasum"=>"x"}}›6752 is expected not to allow :package_json to be ‹{"name" => "foo", "version" => "v1.0"}›6753 is expected not to allow :package_json to be ‹{"name" => "foo", "version" => "v1.0", "dist" => {"shasum"=>"x"}}›6754 is expected not to allow :package_json to be ‹{"name" => "foo", "version" => "v1.0", "dist" => {"tarball"=>"x"}}›6755 is expected not to allow :package_json to be ‹{}›6756 is expected not to allow :package_json to be ‹{test: "testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest"}›6757Gitlab::BlamePresenter6758 precalculates necessary data on init6759 #groups6760 delegates #groups call to the blame6761 #first_line6762 delegates #first_line call to the blame6763 #commit_data6764 has the data necessary to render the view6765 renamed file6766 does not generate link to previous blame on initial commit6767 generates link link to previous blame6768Gitlab::Utils::Override6769 # order random6770 #override6771 when instance is klass.new(0)6772 when STATIC_VERIFICATION is set6773 when subject is a class6774 behaves like checking as intended6775 checks ok for overriding method6776 checks ok for overriding method using negative arity6777 raises NotImplementedError when it is not overriding anything6778 raises NotImplementedError when overriding a method with different arity6779 when subject is a module, and class is prepending it6780 behaves like checking as intended6781 checks ok for overriding method6782 checks ok for overriding method using negative arity6783 raises NotImplementedError when it is not overriding anything6784 raises NotImplementedError when overriding a method with different arity6785 when subject is a module, and class is including it6786 behaves like checking as intended, nothing was overridden6787 raises NotImplementedError because it is not overriding it6788 raises NotImplementedError when it is not overriding anything6789 when ActiveSupport::Concern and class_methods are used6790 when it is defining a overriding method6791 verifies6792 when it is not defining a overriding method6793 raises NotImplementedError6794 when STATIC_VERIFICATION is not set6795 when subject is a class6796 behaves like nothing happened6797 does not complain when it is overriding something6798 does not complain when it is not overriding anything6799 when subject is a module, and class is prepending it6800 behaves like nothing happened6801 does not complain when it is overriding something6802 does not complain when it is not overriding anything6803 when subject is a module, and class is including it6804 does not complain when it is overriding something6805 does not complain when it is not overriding anything6806 when instance is klass6807 when STATIC_VERIFICATION is set6808 when subject is a module, and class is prepending it6809 behaves like checking as intended6810 checks ok for overriding method6811 checks ok for overriding method using negative arity6812 raises NotImplementedError when it is not overriding anything6813 raises NotImplementedError when overriding a method with different arity6814 when subject is a module, and class is extending it6815 behaves like checking as intended, nothing was overridden6816 raises NotImplementedError because it is not overriding it6817 raises NotImplementedError when it is not overriding anything6818ResolvesPipelines6819 is expected to have graphql arguments :status, :scope, :ref, :sha, :source, :updated_after, :updated_before, and :username6820 finds all pipelines6821 allows filtering by status6822 allows filtering by scope6823 allows filtering by ref6824 allows filtering by sha6825 allows filtering by username6826 does not return any pipelines if the user does not have access6827 increases field complexity based on arguments6828 filtering by source6829 does filter by source6830 returns all the pipelines6831 filtering by updated_at6832 filters by updated_after6833 filters by updated_before6834 filters by both updated_after and updated_before with valid date range6835 filters by both updated_after and updated_before with invalid date range6836Packages::CleanupPackageRegistryWorker6837 #perform6838 with package files pending destruction6839 queues the cleanup job6840 behaves like an idempotent worker6841 is labeled as idempotent6842 performs multiple times sequentially without raising an exception6843 with no package files pending destruction6844 does not queue the cleanup job6845 behaves like an idempotent worker6846 is labeled as idempotent6847 performs multiple times sequentially without raising an exception6848 with runnable policies6849 queues the cleanup job6850 behaves like an idempotent worker6851 is labeled as idempotent6852 performs multiple times sequentially without raising an exception6853 with no runnable policies6854 does not queue the cleanup job6855 counts logging6856 logs all the counts6857 with load balancing enabled6858 reads the count from the replica6859EnvironmentsHelper6860 #metrics_data6861 returns data6862 without admin_operations permission6863 is expected to include {"can_access_operations_settings" => "false"}6864 with metrics_setting6865 adds external_dashboard_url6866 when the environment is not available6867 is expected to include {"environment_state" => "stopped"}6868 when request is from project scoped metrics path6869 /:namespace/:project/-/metrics6870 uses correct path for metrics_dashboard_base_path6871 /:namespace/:project/-/metrics/some_custom_dashboard.yml6872 uses correct path for metrics_dashboard_base_path6873 #custom_metrics_available?6874 returns true6875 #environment_logs_data6876 returns logs data6877 #environment_data6878 returns the environment as JSON6879Metrics::UsersStarredDashboard6880 associations6881 is expected to belong to project required: false inverse_of => metrics_users_starred_dashboards6882 is expected to belong to user required: false inverse_of => metrics_users_starred_dashboards6883 validation6884 is expected to validate that :user_id cannot be empty/falsy6885 is expected to validate that :project_id cannot be empty/falsy6886 is expected to validate that :dashboard_path cannot be empty/falsy6887 is expected to validate that the length of :dashboard_path is at most 2556888 is expected to validate that :dashboard_path is case-sensitively unique within the scope of :user_id and :project_id6889 scopes6890 #for_project6891 selects only starred dashboards belonging to project6892 #for_project_dashboard6893 selects only starred dashboards belonging to project with given dashboard path6894Ci::ExternalPullRequests::CreatePipelineWorker6895 #perform6896 creates the pipeline6897 when the project not found6898 behaves like not calling service6899 does not call the service6900 when the user not found6901 behaves like not calling service6902 does not call the service6903 when the pull request not found6904 behaves like not calling service6905 does not call the service6906 when the pull request does not belong to the project6907 behaves like not calling service6908 does not call the service6909Gitlab::Ci::Matching::RunnerMatcher6910 .new6911 when attributes are missing6912 is expected to raise KeyError6913 with attributes6914 is expected to eq [1]6915 is expected to eq "instance_type"6916 is expected to eq 06917 is expected to eq 16918 is expected to eq false6919 is expected to eq "ref_protected"6920 is expected to eq ["tag1", "tag2"]6921 #instance_type?6922 is expected to be truthy6923 context with private runners6924 is expected to be falsey6925 #matches?6926 with an instance of BuildMatcher6927 ref_protected: true, build_protected: true, run_untagged: true, runner_tags: [], build_tags: [], result: true6928 is expected to eq true6929 ref_protected: true, build_protected: false, run_untagged: true, runner_tags: [], build_tags: [], result: false6930 is expected to eq false6931 ref_protected: false, build_protected: true, run_untagged: true, runner_tags: [], build_tags: [], result: true6932 is expected to eq true6933 ref_protected: false, build_protected: false, 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: [], result: true6936 is expected to eq true6937 ref_protected: true, build_protected: true, run_untagged: true, runner_tags: [], build_tags: ["a"], result: false6938 is expected to eq false6939 ref_protected: true, build_protected: true, run_untagged: true, runner_tags: ["a", "b"], build_tags: ["a"], result: true6940 is expected to eq true6941 ref_protected: true, build_protected: true, run_untagged: true, runner_tags: ["a"], build_tags: ["a", "b"], result: false6942 is expected to eq false6943 ref_protected: true, build_protected: true, run_untagged: true, runner_tags: ["a"], build_tags: ["a"], result: true6944 is expected to eq true6945 ref_protected: true, build_protected: true, run_untagged: false, runner_tags: ["a"], build_tags: ["a"], result: true6946 is expected to eq true6947 ref_protected: true, build_protected: true, run_untagged: false, runner_tags: ["b"], build_tags: ["a"], result: false6948 is expected to eq false6949 ref_protected: true, build_protected: true, run_untagged: false, runner_tags: ["a", "b"], build_tags: ["a"], result: true6950 is expected to eq true6951 with an instance of Ci::Build6952 raises ArgumentError6953Gitlab::Auth::Result6954 when actor is User6955 returns auth_user6956 does not return deploy token6957 when actor is Deploy token6958 returns deploy token6959 does not return auth_user6960 #authentication_abilities_include?6961 when authentication abilities are empty6962 returns false6963 when authentication abilities are not empty6964 returns false when ability is not allowed6965 returns true when ability is allowed6966 #can_perform_action_on_project?6967 returns if actor can do perform given action on given project6968 returns if actor cannot do perform given action on given project6969 #can?6970 returns if actor can do perform given action on given project6971 returns if actor cannot do perform given action on given project6972ShaAttribute6973 .sha_attribute6974 defines a SHA attribute with Gitlab::Database::ShaAttribute type6975 .sha256_attribute6976 defines a SHA256 attribute with Gitlab::Database::ShaAttribute type6977 .load_schema!6978 column_name: binary_column, environment: "development", expected_error: :no_error6979 with sha_attribute6980 validates column type6981 with sha256_attribute6982 validates column type6983 column_name: binary_column, environment: "production", expected_error: :no_error6984 with sha_attribute6985 validates column type6986 with sha256_attribute6987 validates column type6988 column_name: text_column, environment: "development", expected_error: :sha_mismatch_error6989 with sha_attribute6990 validates column type6991 with sha256_attribute6992 validates column type6993 column_name: text_column, environment: "production", expected_error: :no_error6994 with sha_attribute6995 validates column type6996 with sha256_attribute6997 validates column type6998 column_name: :__non_existent_column, environment: "development", expected_error: :no_error6999 with sha_attribute7000 validates column type7001 with sha256_attribute7002 validates column type7003 column_name: :__non_existent_column, environment: "production", expected_error: :no_error7004 with sha_attribute7005 validates column type7006 with sha256_attribute7007 validates column type7008AlertManagement::Alerts::Todo::CreateService7009 #execute7010 when the user is anonymous7011 behaves like permissions error7012 returns an error7013 when the user does not have permission7014 behaves like permissions error7015 returns an error7016 when user has permission7017 creates a todo7018 returns the alert and todo in the payload7019 when the user has a marked todo for the alert7020 when todo is pending7021 does not create a todo7022 returns an error7023 when todo is done7024 is expected to equal true7025 is expected to change `Todo.count` by 17026Packages::Rpm::ParsePackageService7027 # order random7028 dynamic private methods7029 define dynamic build attribute method7030 define dynamic build attribute method7031 define dynamic build attribute method7032 #execute7033 when wrong format file received7034 raise error7035 when valid file uploaded7036 when .rpm file uploaded7037 behaves like valid package parsing7038 return hash7039 has all static attribute keys7040 includes epoch attribute7041 has all built attributes with array values7042 when .src.rpm file uploaded7043 behaves like valid package parsing7044 return hash7045 has all static attribute keys7046 includes epoch attribute7047 has all built attributes with array values7048WorkerContext7049 .worker_context7050 allows modifying the context for the entire worker7051 allows fetches the context from a superclass if none was defined7052 .bulk_perform_async_with_contexts7053 calls bulk_perform_async with the arguments7054 behaves like tracking bulk scheduling contexts7055 clears the contexts7056 context contents7057 keeps track of the context per key to schedule7058 does not share contexts across threads7059 .bulk_perform_in_with_contexts7060 calls bulk_perform_in with the arguments and delay7061 behaves like tracking bulk scheduling contexts7062 clears the contexts7063 context contents7064 keeps track of the context per key to schedule7065 does not share contexts across threads7066 #with_context7067 allows modifying context when the job is running7068 yields the arguments to the block7069Gitlab::FogbugzImport::Importer7070 imports bugs7071 imports opened bugs7072 imports closed bugs7073 verify url7074 when host is localhost7075 does not allow localhost requests7076 when host is on local network7077 does not allow localhost requests7078 when host is ftp protocol7079 only accept http and https requests7080Atlassian::JiraConnect::Serializers::BuildEntity7081 when the pipeline does not belong to any Jira issue7082 #issue_keys7083 is empty7084 #to_json7085 can encode the object7086 is invalid, since it has no issue keys7087 when the pipeline does belong to a Jira issue7088 because it belongs to an MR with a jira_branch7089 #issue_keys7090 is not empty7091 #to_json7092 is valid according to the build info schema7093 because it belongs to an MR with a jira_title7094 #issue_keys7095 is not empty7096 #to_json7097 is valid according to the build info schema7098 because it belongs to an MR with a jira_description7099 #issue_keys7100 is not empty7101 #to_json7102 is valid according to the build info schema7103 in the pipeline's commit messsage7104 #issue_keys7105 is expected to contain exactly "PROJ-1234"7106 #to_json7107 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"}7108RuboCop::Cop::Migration::BatchMigrationsPostOnly7109 # order random7110 when methods appear in a regular migration7111 does not allow 'ensure_batched_background_migration_is_finished' to be called7112 does not allow 'queue_batched_background_migration' to be called7113 does not allow 'delete_batched_background_migration' to be called7114 does not allow 'ensure_batched_background_migration_is_finished' to be called7115 allows arbitrary other method to be called7116 when methods appear in a post-deployment migration7117 allows 'ensure_batched_background_migration_is_finished' to be called7118 allows 'queue_batched_background_migration' to be called7119 allows 'delete_batched_background_migration' to be called7120 allows 'ensure_batched_background_migration_is_finished' to be called7121 allows arbitrary other method to be called7122Gitlab::Audit::Type::Definition7123 # order random7124 .definitions7125 loads the definitions for all the audit event types7126 .load_all!7127 when there are no audit event types a list of definitions is empty7128 when there's a single audit event type it properly loads them7129 when the same audit event type is stored multiple times raises exception7130 when one of the YAMLs is invalid it does raise exception7131 .stream_only?7132 returns true for a stream only event7133 returns false for an event that is saved to database7134 validate that all the YAML definitions matches the audit event type schema7135 successfully loads all the YAML definitions7136 #key7137 returns a symbol from name7138 #validate!7139 param: :path, value: "audit_event/types/invalid.yml", result: /Audit event type 'group_deploy_token_destroyed' has an invalid path/7140 is expected to raise /Audit event type 'group_deploy_token_destroyed' has an invalid path/7141 param: :name, value: nil, result: /property '\/name' is not of type: string/7142 is expected to raise /property '\/name' is not of type: string/7143 param: :description, value: nil, result: /property '\/description' is not of type: string/7144 is expected to raise /property '\/description' is not of type: string/7145 param: :introduced_by_issue, value: nil, result: /property '\/introduced_by_issue' is not of type: string/7146 is expected to raise /property '\/introduced_by_issue' is not of type: string/7147 param: :introduced_by_mr, value: nil, result: /property '\/introduced_by_mr' is not of type: string/7148 is expected to raise /property '\/introduced_by_mr' is not of type: string/7149 param: :feature_category, value: nil, result: /property '\/feature_category' is not of type: string/7150 is expected to raise /property '\/feature_category' is not of type: string/7151 param: :milestone, value: nil, result: /property '\/milestone' is not of type: string/7152 is expected to raise /property '\/milestone' is not of type: string/7153 when both saved_to_database and streamed are false7154 raises an exception7155 .event_names7156 returns names of event types as string array7157 .get7158 when audit event type is not defined7159 returns nil7160 when audit event type is defined7161 returns an instance of Gitlab::Audit::Type::Definition7162 returns the properties as defined for that audit event type7163 .defined?7164 returns true if definition for the event name exists7165 returns false if definition for the event name exists7166 .load_from_file7167 properly loads a definition from file7168 for missing file7169 raises exception7170 for invalid definition7171 raises exception7172 .paths7173 returns at least one path7174Issuable::Callbacks::Milestone7175 # order random7176 #after_initialize7177 sets the issuable's milestone7178 when assigning a group milestone7179 sets the issuable's milestone7180 when assigning a group milestone outside the project ancestors7181 does not change the issuable's milestone7182 when user is not allowed to set issuable metadata7183 does not change the issuable's milestone7184 when unsetting a milestone7185 when milestone_id is nil7186 unsets the issuable's milestone7187 when milestone_id is an empty string7188 unsets the issuable's milestone7189 when milestone_id is 07190 unsets the issuable's milestone7191 when milestone_id is not given7192 does not unset the issuable's milestone7193 when new type does not support milestones7194 unsets the issuable's milestone7195API::Entities::WikiPage7196 returns the proper encoding for the wiki page content7197 returns the raw wiki page content7198 when render_html param is passed7199 when it is true7200 returns the wiki page content rendered7201 includes the wiki page version in the render context7202 when page is an Ascii document7203 renders the page without errors7204 when content contains a reference7205 expands the reference in the content7206 when it is false7207 returns the raw wiki page content7208Banzai::ReferenceParser::MentionedUserParser7209 #gather_references7210 when the link has a data-group attribute7211 using an existing group ID7212 returns empty list of users7213 when the link has a data-project attribute7214 using an existing project ID7215 returns empty list of users7216 when the link has a data-user attribute7217 returns an Array of users7218Gitlab::ImportExport::Base::ObjectBuilder7219 #build7220 when object exists7221 when where_clauses are implemented7222 finds existing object instead of creating one7223 when where_clauses are not implemented7224 raises NotImplementedError7225 when object does not exist7226 creates new object7227Mutations::IncidentManagement::TimelineEvent::PromoteFromNote7228 # order random7229 is expected to require graphql authorizations :admin_incident_management_timeline_event7230 #resolve7231 when a user has permissions to create timeline event7232 behaves like creating an incident timeline event7233 creates a timeline event7234 responds with a timeline event7235 when TimelineEvents::CreateService responds with an error7236 behaves like responding with an incident timeline errors7237 returns errors7238 when note does not exist7239 raises an error7240 when note does not belong to an incident7241 raises an error7242 when note belongs to anything else but issuable7243 raises an error7244 behaves like failing to create an incident timeline event7245 when a user has no permissions to create timeline event7246 raises an error7247Ci::UpdatePendingBuildService7248 #execute7249 validations7250 when model is invalid7251 raises an error7252 when params is invalid7253 raises an error7254 when model is a group with pending builds7255 updates all pending builds7256 when model is a project with pending builds7257 updates all pending builds7258RepositoryCleanupWorker7259 #perform7260 executes the cleanup service and sends a success notification7261 raises an error if the project cannot be found7262 raises an error if the user cannot be found7263 #sidekiq_retries_exhausted7264 does not send a failure notification for a RecordNotFound error7265 sends a failure notification7266 cleans up the attempt7267Gitlab::Ci::Pipeline::Chain::PopulateMetadata7268 # order random7269 with pipeline name7270 does not break the chain7271 builds pipeline_metadata7272 with empty name7273 strips whitespace from name7274 with empty name after variable substitution7275 does not save empty name7276 with variables7277 substitutes variables7278 with invalid name7279 returns error and breaks chain7280Gitlab::BackgroundMigration7281 .queue7282 returns background migration worker queue7283 .steal7284 when the queue contains unprocessed jobs7285 uses the coordinator to steal jobs7286 when a custom predicate is given7287 steals jobs that match the predicate7288 does not steal jobs that do not match the predicate7289 when retry_dead_jobs is true7290 steals from the dead and retry queue7291 .perform7292 uses the coordinator to perform a background migration7293 .exists?7294 uses the coordinator to find if a job exists7295 uses the coordinator to find a job does not exist7296 .remaining7297 uses the coordinator to find the number of remaining jobs7298Gitlab::DiscussionsDiff::HighlightCache7299 #write_multiple7300 sets multiple keys serializing content as JSON7301 #read_multiple7302 reads multiple keys and serializes content into Gitlab::Diff::Line objects7303 returns nil when cached key is not found7304 returns lines which rich_text are HTML-safe7305 #clear_multiple7306 removes all named keys7307 only removed named keys7308Mutations::AlertManagement::PrometheusIntegration::Create7309 is expected to require graphql authorizations :admin_project7310 #resolve7311 user has access to project7312 when Prometheus Integration already exists7313 returns errors7314 when UpdateService responds with success7315 returns the integration with no errors7316 creates a corresponding token7317 when UpdateService responds with an error7318 returns errors7319 when resource is not accessible to the user7320 raises an error if the resource is not accessible to the user7321Gitlab::Ci::Pipeline::Chain::SeedBlock7322 #perform!7323 when there is not seeds_block7324 does nothing7325 when there is seeds_block7326 executes the block7327 when the seeds_block tries to save the pipelie7328 raises error7329BulkImports::PipelineWorker7330 behaves like successfully runs the pipeline7331 runs the given pipeline successfully7332 when exclusive lease cannot be obtained7333 does not run the pipeline7334 when the pipeline raises an exception7335 logs the error7336 when enqueued pipeline cannot be found7337 when pipeline is finished7338 logs the error7339 when pipeline is skipped7340 logs the error7341 when tracker is started7342 marks tracker as failed7343 when entity is failed7344 marks tracker as skipped and logs the skip7345 when retry pipeline error is raised7346 reenqueues the worker7347 when file extraction pipeline7348 runs the pipeline successfully7349 when export status is started7350 reenqueues pipeline worker7351 when export status is empty7352 when timeout is not reached7353 reenqueues pipeline worker7354 when empty export timeout is reached7355 marks as failed and logs the error7356 when tracker created_at is nil7357 falls back to entity created_at7358 when job reaches timeout7359 marks as failed and logs the error7360 when export status is failed7361 marks as failed and logs the error7362MergeRequests::ExecuteApprovalHooksWorker7363 calls MergeRequests::ExecuteApprovalHooksService7364 behaves like subscribes to event7365 consumes the published event7366 behaves like an idempotent worker7367 is labeled as idempotent7368 performs multiple times sequentially without raising an exception7369 when the user does not exist7370 behaves like when object does not exist7371 logs and does not call MergeRequests::ExecuteApprovalHooksService7372 when the merge request does not exist7373 behaves like when object does not exist7374 logs and does not call MergeRequests::ExecuteApprovalHooksService7375Projects::CreateFromTemplateService7376 calls the importer service7377 returns the project that is created7378 when template is not present7379 does not set import set import type7380 does not set import set import source7381 is not scheduled7382 repository is empty7383 the result project7384 overrides template description7385 overrides template visibility_level7386Gitlab::SidekiqLogging::StructuredLogger7387 #call7388 with SIDEKIQ_LOG_ARGUMENTS enabled7389 logs start and end of job7390 logs real job wrapped by active job worker7391 logs an exception in job7392 logs the normalized SQL query for statement timeouts7393 logs the root cause of an Sidekiq::JobRetry::Skip exception in the job7394 logs the root cause of an Sidekiq::JobRetry::Handled exception in the job7395 keeps Sidekiq::JobRetry::Handled exception if the cause does not exist7396 does not modify the job7397 does not modify the wrapped job7398 with SIDEKIQ_LOG_ARGUMENTS disabled7399 logs start and end of job without args7400 logs without created_at and enqueued_at fields7401 with latency7402 logs with scheduling latency7403 with enqueue latency7404 logs with scheduling latency7405 with Gitaly, Rugged, and Redis calls7406 logs with Gitaly and Rugged timing data7407 when the job performs database queries7408 when load balancing is enabled7409 logs the database time7410 prevents database time from leaking to the next job7411 when the job uses load balancing capabilities7412 logs the database chosen7413 when there is extra metadata set for the done log7414 logs it in the done log7415 when instrumentation data is not loaded7416 does not raise exception7417 when the job payload is compressed7418 logs it in the done log7419 #add_time_keys!7420 update payload correctly7421Metrics::Dashboard::PanelPreviewService7422 #execute7423 valid panel's yaml7424 returns success service response7425 returns processed panel7426 uses dashboard processor7427 invalid panel's yaml7428 returns error service response7429 returns error message7430 returns error service response7431 returns error message7432 returns error service response7433 returns error message7434 returns error service response7435 returns error message7436Gitlab::IncomingEmail7437 behaves like common email methods7438 behaves like enabled? method for email7439 value: false, address: nil, result: false7440 is expected to eq false7441 value: false, address: "replies+%{key}@example.com", result: false7442 is expected to eq false7443 value: true, address: nil, result: false7444 is expected to eq false7445 value: true, address: "replies+%{key}@example.com", result: true7446 is expected to eq true7447 behaves like supports_wildcard? method for email7448 when address contains the wildcard placeholder7449 confirms that wildcard is supported7450 when address doesn't contain the wildcard placeholder7451 returns that wildcard is not supported7452 when address is nil7453 returns that wildcard is not supported7454 behaves like key_from_fallback_message_id method for email7455 returns reply key7456 behaves like supports_issue_creation? method for email7457 enabled_value: false, supports_wildcard_value: false, result: false7458 is expected to eq false7459 enabled_value: false, supports_wildcard_value: true, result: false7460 is expected to eq false7461 enabled_value: true, supports_wildcard_value: false, result: false7462 is expected to eq false7463 enabled_value: true, supports_wildcard_value: true, result: true7464 is expected to eq true7465 behaves like reply_address method for email7466 returns the address with an interpolated reply key7467 behaves like unsubscribe_address method for email7468 returns the address with interpolated reply key and unsubscribe suffix7469 behaves like scan_fallback_references method for email7470 returns reply key7471 self.key_from_address7472 returns reply key7473 does not match emails with extra bits7474 when a custom wildcard address is used7475 finds key if email matches address pattern7476Gitlab::X509::Tag7477 #signature7478 signed tag7479 is expected not to be nil7480 is expected to eq :unverified7481 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"}7482 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"}7483 unsigned tag7484 is expected to be nil7485SystemNotes::AlertManagementService7486 #create_new_alert7487 has the appropriate message7488 behaves like a system note7489 has the correct attributes7490 #change_alert_status7491 with no specified reason7492 has the appropriate message7493 behaves like a system note7494 has the correct attributes7495 with reason provided7496 has the appropriate message7497 #new_alert_issue7498 has the appropriate message7499 behaves like a system note7500 has the correct attributes7501 #log_resolving_alert7502 has the appropriate message7503 behaves like a system note7504 has the correct attributes7505Issue::Email7506 Associations7507 is expected to belong to issue required: false7508 Validations7509 is expected to validate that :issue cannot be empty/falsy7510 is expected to validate that :issue is case-sensitively unique7511 is expected to validate that :email_message_id is case-sensitively unique7512 is expected to validate that the length of :email_message_id is at most 10007513 is expected to validate that :email_message_id cannot be empty/falsy7514Users::NamespaceCommitEmail7515 # order random7516 is expected to be valid7517 validations7518 is expected to validate that :user cannot be empty/falsy7519 is expected to validate that :namespace cannot be empty/falsy7520 is expected to validate that :email cannot be empty/falsy7521 is expected to validate that :user is case-sensitively unique within the scope of :namespace_id7522 validate_root_group7523 when root group7524 is expected to be valid7525 when subgroup7526 is invalid and reports the relevant error7527 .delete_for_namespace7528 deletes all records for namespace7529 associations7530 is expected to belong to user required: false7531 is expected to belong to namespace required: false7532 is expected to belong to email required: false7533ErrorTrackingIssueLinkWorker7534 #perform7535 creates a link between an issue and a Sentry issue in Sentry7536 when issue is unavailable7537 behaves like makes no external API requests7538 takes no action7539 when project does not have error tracking configured7540 behaves like makes no external API requests7541 takes no action7542 when the issue is not linked to a Sentry issue in GitLab7543 behaves like makes no external API requests7544 takes no action7545 when Sentry disabled the GitLab integration7546 behaves like attempts to create a link via plugin7547 takes no action7548 when Sentry the GitLab integration is for another project7549 behaves like attempts to create a link via plugin7550 takes no action7551 when Sentry repos request errors7552 falls back to creating a link via plugin7553profiles/keys/_form.html.haml7554 when the form partial is used7555 renders the form with the correct action7556 has the key field7557 has the title field7558 has the usage type field7559 has the expires at field7560 has the validation warning7561 has the submit button7562Gitlab::Kas::Client7563 #initialize7564 kas is not enabled7565 raises a configuration error7566 internal url is not set7567 raises a configuration error7568 gRPC calls7569 #get_connected_agents7570 is expected to eq [#<Double (anonymous)>]7571 #list_agent_config_files7572 is expected to eq [#<Double (anonymous)>]7573 with grpcs7574 uses a ChannelCredentials object with the correct certificates7575Packages::MarkPackageFilesForDestructionWorker7576 #perform7577 with a valid package id7578 marks all package files as pending_destruction7579 behaves like an idempotent worker7580 is labeled as idempotent7581 performs multiple times sequentially without raising an exception7582 with an invalid package id7583 marks no packag files7584 behaves like an idempotent worker7585 is labeled as idempotent7586 performs multiple times sequentially without raising an exception7587 with a nil package id7588 marks no packag files7589 behaves like an idempotent worker7590 is labeled as idempotent7591 performs multiple times sequentially without raising an exception7592Gitlab::Graphql::Pagination::ArrayConnection7593 behaves like a connection with collection methods7594 responds to to_a7595 responds to size7596 responds to map7597 responds to include?7598 responds to empty?7599 behaves like a redactable connection7600 no redactor set7601 contains the unwanted item7602 does not redact more than once7603 redactor is set7604 does not contain the unwanted item7605 does not redact more than once7606Gitlab::GithubImport7607 github.com7608 returns a new Client with a custom token7609 returns a new Client with a token stored in the import data7610 returns the ID of the ghost user7611 caches the ghost user ID7612 GitHub Enterprise7613 returns a new Client with a custom token7614 returns a new Client with a token stored in the import data7615 returns the ID of the ghost user7616 caches the ghost user ID7617 formats the import url7618 .per_page7619 when project group is present7620 when github_importer_lower_per_page_limit is enabled7621 returns lower per page value7622 when github_importer_lower_per_page_limit is disabled7623 returns default per page value7624 when project group is missing7625 returns default per page value7626Shard7627 .populate!7628 creates shards based on the config file7629 .by_name7630 returns an existing shard7631 creates a new shard7632 returns existing record if creation races7633Types::Admin::Analytics::UsageTrends::MeasurementType7634 is expected to have graphql field :recorded_at7635 is expected to have graphql field :identifier7636 is expected to have graphql field :count7637 authorization7638 when the user is not admin7639 returns an error7640 does not return usageTrendsMeasurements data7641 when user is an admin7642 returns usageTrendsMeasurements data7643Gitlab::ExternalAuthorization7644 #access_allowed?7645 is always true when the feature is disabled7646 #rejection_reason7647 is always nil when the feature is disabled7648 #access_for_user_to_label7649 only loads the access once per request7650 logs the access request once per request7651Gitlab::WebIde::Config::Entry::Global7652 .nodes7653 returns a hash7654 when filtering all the entry/node names7655 contains the expected node names7656 when configuration is valid7657 when some entries defined7658 #compose!7659 creates nodes hash7660 creates node object for each entry7661 creates node object using valid class7662 sets correct description for nodes7663 #leaf?7664 is not leaf7665 when not composed7666 #terminal_value7667 returns nil7668 #leaf?7669 is leaf7670 when composed7671 #errors7672 has no errors7673 #terminal_value7674 returns correct script7675 when configuration is not valid7676 when job does not have valid before script7677 #errors7678 reports errors about missing script7679 when value is not a hash7680 #valid?7681 is not valid7682 #errors7683 returns error about invalid type7684 #specified?7685 is concrete entry that is defined7686 #[]7687 when entry exists7688 returns correct entry7689 when entry does not exist7690 always return unspecified node7691Groups::UserGroupsFinder7692 #execute7693 returns all groups where the user is a direct member7694 when target_user is nil7695 is expected to be empty7696 when current_user is nil7697 is expected to be empty7698 when permission is :create_projects7699 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>7700 behaves like user group finder searching by name or path7701 is expected to contain exactly #<Group id:3007 @root-group/a-public-maintainer> and #<Group id:3005 @root-group/b-private-maintainer>7702 when searching for a full path (including parent)7703 is expected to contain exactly #<Group id:3005 @root-group/b-private-maintainer>7704 when search keywords include the parent route7705 is expected to match [#<Group id:3007 @root-group/a-public-maintainer>, #<Group id:3006 @root-group/c-public-developer>]7706 when permission is :transfer_projects7707 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>7708 behaves like user group finder searching by name or path7709 is expected to contain exactly #<Group id:3007 @root-group/a-public-maintainer> and #<Group id:3005 @root-group/b-private-maintainer>7710 when searching for a full path (including parent)7711 is expected to contain exactly #<Group id:3005 @root-group/b-private-maintainer>7712 when search keywords include the parent route7713 is expected to match [#<Group id:3007 @root-group/a-public-maintainer>]7714PersonalAccessTokenPolicy7715 current_user is an administrator7716 not the owner of the token7717 is expected to be allowed :read_token7718 is expected to be allowed :revoke_token7719 owner of the token7720 is expected to be allowed :read_token7721 is expected to be allowed :revoke_token7722 current_user is not an administrator7723 not the owner of the token7724 is expected to be disallowed :read_token7725 is expected to be disallowed :revoke_token7726 owner of the token7727 is expected to be allowed :read_token7728 is expected to be allowed :revoke_token7729 subject of the impersonated token7730 is expected to be disallowed :read_token7731 is expected to be disallowed :revoke_token7732 current_user is a blocked administrator7733 owner of the token7734 is expected to be disallowed :read_token7735 is expected to be disallowed :revoke_token7736 not the owner of the token7737 is expected to be disallowed :read_token7738 is expected to be disallowed :revoke_token7739Import::PrepareService7740 when file is uploaded correctly7741 raises NotImplemented error for worker7742 when a job is enqueued7743 raises NotImplemented error for success_message when a job is enqueued7744 returns a success respnse when a success_message is implemented7745 when file upload fails7746 returns an error message7747Gitlab::SidekiqConfig7748 .workers7749 includes all workers7750 .worker_queues7751 includes all queues7752 .workers_for_all_queues_yml7753 returns a tuple with FOSS workers first7754 .all_queues_yml_outdated?7755 returns true if the YAML file does not match the application code7756 returns false if the YAML file matches the application code7757 .queues_for_sidekiq_queues_yml7758 returns queues and weights, aggregating namespaces with the same weight7759 .sidekiq_queues_yml_outdated?7760 returns true if the YAML file does not match the application code7761 returns false if the YAML file matches the application code7762 .worker_queue_mappings7763 returns the worker class => queue mappings based on the current routing configuration7764 .current_worker_queue_mappings7765 returns worker queue mappings that have queues in the current Sidekiq options7766 .routing_queues7767 returns worker queue mappings that have queues in the current Sidekiq options7768Gitlab::Graphql::KnownOperations7769 #from_query7770 query_string: "query { helloWorld }", expected: #<struct Gitlab::Graphql::KnownOperations::Operation name="unknown">7771 returns known operation name from GraphQL Query7772 query_string: "query fuzzyyy { helloWorld }", expected: #<struct Gitlab::Graphql::KnownOperations::Operation name="unknown">7773 returns known operation name from GraphQL Query7774 query_string: "query foo { helloWorld }", expected: #<struct Gitlab::Graphql::KnownOperations::Operation name="foo">7775 returns known operation name from GraphQL Query7776 #operations7777 returns array of known operations7778 Operation#to_caller_id7779 query_string: "query { helloWorld }", expected: "graphql:unknown"7780 formats operation name for caller_id metric property7781 query_string: "query foo { helloWorld }", expected: "graphql:foo"7782 formats operation name for caller_id metric property7783 Opeartion#query_urgency7784 returns the associated query urgency7785 .default7786 returns a memoization of values from webpack7787Types::CommitType7788 is expected to eq "Commit"7789 is expected to require graphql authorizations :read_code7790 is expected to include Types::TodoableInterface7791 contains attributes related to commit7792Preloaders::UsersMaxAccessLevelByProjectPreloader7793 # order random7794 #execute7795 avoids N+1 queries7796 preloads the max access level used by project policies7797AnalyticsSummarySerializer7798 generates payload for single object7799 contains important elements of AnalyticsStage7800 does not include unit7801 when representing with unit7802 contains unit7803Clusters::Agents::GroupAuthorization7804 is expected to belong to agent class_name => Clusters::Agent required: true7805 is expected to belong to group class_name => ::Group required: true7806 is expected to validate jsonb schema "config"7807 #config_project7808 is expected to eq #<Project id:1189 namespace1292/project1309>>7809Groups::DeployTokens::RevokeService7810 #execute7811 revokes a group deploy token7812 invalid token id7813 raises an error7814Ci::CreatePipelineService7815 artifacts:7816 reports:7817 with valid config7818 creates pipeline with builds7819 with invalid config7820 creates pipeline with yaml errors7821RuboCop::Cop::Migration::ScheduleAsync7822 # order random7823 in a migration7824 in an old migration7825 behaves like a disabled cop7826 does not register any offenses7827 that is recent7828 BackgroundMigrationWorker.perform_async7829 adds an offense when calling `BackgroundMigrationWorker.peform_async`7830 CiDatabaseWorker.perform_async7831 adds an offense when calling `CiDatabaseWorker.peform_async`7832 BackgroundMigrationWorker.perform_in7833 adds an offense7834 CiDatabaseWorker.perform_in7835 adds an offense7836 BackgroundMigrationWorker.bulk_perform_async7837 adds an offense7838 CiDatabaseWorker.bulk_perform_async7839 adds an offense7840 BackgroundMigrationWorker.bulk_perform_in7841 adds an offense7842 CiDatabaseWorker.bulk_perform_in7843 adds an offense7844 outside of a migration7845 behaves like a disabled cop7846 does not register any offenses7847LazyImageTagHelper7848 #image_tag7849 when only source passed7850 returns a lazy image tag by default7851 when lazy mode is disabled7852 returns a normal image tag7853 when Dark Mode is enabled7854 when auto dark enabled7855 adds an auto dark mode class from gitlab-ui7856 when auto dark disabled7857 does nothing7858 when dark variant is present7859 uses dark variant as a source7860 when Dark Mode is disabled7861 when auto dark enabled7862 does not add a dark mode class from gitlab-ui7863 when auto dark disabled7864 does nothing7865 when dark variant is present7866 uses original image as a source7867 when auto_dark and dark_variant are both passed7868 does not add a dark mode class from gitlab-ui7869Gitlab::ConfigChecker::ExternalDatabaseChecker7870 #check7871 with a single database7872 when database meets minimum supported version7873 example at ./spec/lib/gitlab/config_checker/external_database_checker_spec.rb:30 (PENDING: Skipping because some of the extra databases [:ci, :main_clusterwide] are setup)7874 when database does not meet minimum supported version7875 reports deprecated database notice (PENDING: Skipping because some of the extra databases [:ci, :main_clusterwide] are setup)7876 with a multiple database7877 when both databases meets minimum supported version7878 is expected to be empty7879 when the one of the databases does not meet minimum supported version7880 reports deprecated database notice if the main database is using an old version7881 reports deprecated database notice if the ci database is using an old version7882 when both databases do not meet minimum supported version7883 reports deprecated database notice7884Gitlab::Ci::ProcessableObjectHierarchy7885 # order random7886 #base_and_ancestors7887 includes the base and its ancestors7888 can find ancestors upto a certain level7889 hierarchy_order option7890 for :asc7891 orders by child to ancestor7892 for :desc7893 orders by ancestor to child7894 #base_and_descendants7895 includes the base and its descendants7896 when with_depth is true7897 includes depth in the results7898Gitlab::JsonLogger7899 #file_name7900 raises error when file_name_noext not implemented7901 returns log file name when file_name_noext is implemented7902 #format_message7903 formats strings7904 formats hashes7905Gitlab::JiraImport::Stage::ImportNotesWorker7906 modules7907 behaves like include import workers modules7908 is expected to includes the ApplicationWorker module7909 is expected to includes the Gitlab::JiraImport::QueueOptions module7910 is expected to includes the Gitlab::JiraImport::ImportWorker module7911 #perform7912 when import did not start7913 behaves like cannot do Jira import7914 does not advance to next stage7915 behaves like does not advance to next stage7916 does not advance to next stage7917 when import started7918 behaves like advance to next stage7919 advances to finish stage7920TestHooks::SystemService7921 #execute7922 hook with not implemented test7923 returns error message7924 push_events7925 executes hook7926 tag_push_events7927 executes hook7928 repository_update_events7929 executes hook7930 merge_requests_events7931 returns error message if the user does not have any repository with a merge request7932 executes hook7933UpdateProjectStatisticsWorker7934 #perform7935 when a lease could be obtained7936 updates the project statistics7937 when a lease could not be obtained7938 does not update the project statistics7939check_forced_decomposition initializer7940 # order random7941 for production env7942 for single database7943 example at ./spec/initializers/check_forced_decomposition_spec.rb:24 (PENDING: Skipping because some of the extra databases [:ci, :main_clusterwide] are setup)7944 for multiple database7945 when ci and main share the same database7946 is expected not to raise Exception7947 when host is not present7948 is expected not to raise Exception7949 when ci and main share the same database but different host7950 is expected to raise /Separate CI database is not ready/7951 when ci and main are different databases7952 is expected to raise /Separate CI database is not ready/7953 for SaaS7954 is expected not to raise Exception7955 when env var GITLAB_ALLOW_SEPARATE_CI_DATABASE is true7956 is expected not to raise Exception7957 when env var GITLAB_ALLOW_SEPARATE_CI_DATABASE is false7958 is expected to raise /Separate CI database is not ready/7959ObjectPool::JoinWorker7960 #perform7961 when the pool is not joinable7962 doesn't raise an error7963 when the pool has been joined before7964 succeeds in joining7965X509CertificateRevokeService7966 #execute7967 for revoked certificates7968 update all commit signatures7969 for good certificates7970 do not update any commit signature7971ApplicationSettingPolicy7972 update_runners_registration_token7973 when anonymous7974 is expected not to be allowed :update_runners_registration_token7975 regular user7976 is expected not to be allowed :update_runners_registration_token7977 when external7978 is expected not to be allowed :update_runners_registration_token7979 admin7980 when admin mode is enabled7981 is expected to be allowed :update_runners_registration_token7982 when admin mode is disabled7983 is expected to be disallowed :update_runners_registration_token7984Packages::Debian::CreatePackageFileService7985 #execute7986 with temp file7987 behaves like a valid deb7988 creates a new package file7989 with a .changes file7990 behaves like a valid changes7991 creates a new package file7992 with distribution7993 behaves like a valid deb7994 creates a new package file7995 when current_user is missing7996 raises an error7997 with remote file7998 behaves like a valid deb7999 creates a new package file8000 when package is missing8001 raises an error8002 when params is empty8003 raises an error8004 when file is missing8005 raises an error8006AlertManagement::MetricImages::UploadService8007 #execute8008 user does not have permissions8009 behaves like no metric saved, an error given8010 returns an error and does not upload8011 user has permissions8012 behaves like uploads the metric8013 uploads the metric and returns a success8014 no url given8015 behaves like uploads the metric8016 uploads the metric and returns a success8017 record invalid8018 behaves like no metric saved, an error given8019 returns an error and does not upload8020 user is guest8021 behaves like no metric saved, an error given8022 returns an error and does not upload8023Ci::BuildFinishedWorker8024 #perform8025 when build exists8026 calculates coverage and calls hooks8027 when build is failed8028 adds a todo8029 when a build can be auto-retried8030 does not add a todo8031 when build has a chat8032 schedules a ChatNotification job8033 when it has a token8034 removes the token8035 when build does not exist8036 does not raise exception8037Mutations::Branches::Create8038 #resolve8039 raises an error if the resource is not accessible to the user8040 when the user can create a branch8041 when service successfully creates a new branch8042 returns a new branch8043 when service fails to create a new branch8044 is expected to be nil8045 is expected to eq ["Branch already exists"]8046Tooling::FindTests8047 # order random8048 #execute8049 does not modify the content of the input file8050 does not overwrite the output file8051 loads the tests.yml file with a pattern matching mapping8052 when the matching_tests_paths file does not exist8053 creates the file8054 when the matching_tests_paths file already exists8055 does not create an empty file8056 when RSPEC_TESTS_MAPPING_ENABLED env variable is set8057 loads the direct matching pattern file8058 when RSPEC_TESTS_MAPPING_ENABLED env variable is not set8059 when RSPEC_TESTS_MAPPING_PATH is set8060 does not load the direct matching pattern file8061 when RSPEC_TESTS_MAPPING_PATH is not set8062 does not load the direct matching pattern file8063 when the same spec is matching multiple times8064 writes uniquely matching specs to the output8065Gitlab::Database::SchemaValidation::Database8066 # order random8067 when having indexes8068 #fetch_index_by_name8069 returns index by name8070 when index does not exist8071 returns nil8072 #index_exists?8073 when index exists8074 returns true8075 when index does not exist8076 returns false8077 #indexes8078 returns indexes8079 when having triggers8080 #fetch_trigger_by_name8081 returns trigger by name8082 when trigger does not exist8083 returns nil8084 #trigger_exists?8085 when trigger exists8086 returns true8087 when trigger does not exist8088 returns false8089 #triggers8090 returns triggers8091UserProjectAccessChangedService8092 #execute8093 permits high-priority operation8094 permits medium-priority operation8095 sets the current caller_id as related_class in the context of all the enqueued jobs8096 for low priority operation8097 does not perform low-priority operation8098 when the feature flag `do_not_run_safety_net_auth_refresh_jobs` is disabled8099 permits low-priority operation8100 with load balancing enabled8101 sticks all the updated users and returns the original result8102 avoids N+1 cached queries8103Gitlab::QuickActions::TimelineTextAndDateTimeSeparator8104 # order random8105 execute8106 with invalid parameters in arg line8107 with empty arg line8108 behaves like arg line with invalid parameters8109 returns nil8110 with invalid date8111 behaves like arg line with invalid parameters8112 returns nil8113 behaves like arg line with invalid parameters8114 returns nil8115 behaves like arg line with invalid parameters8116 returns nil8117 with invalid time8118 behaves like arg line with invalid parameters8119 returns nil8120 when date is invalid in arg line8121 return current date8122 with valid parameters8123 when only timeline text present in arg line8124 behaves like arg line with valid parameters8125 returns text and date time array8126 when only timeline text and time present in arg line8127 behaves like arg line with valid parameters8128 returns text and date time array8129 when timeline text and date is present in arg line8130 behaves like arg line with valid parameters8131 returns text and date time array8132Integrations::ExternalWiki8133 Validations8134 when integration is active8135 is expected to validate that :external_wiki_url cannot be empty/falsy8136 behaves like issue tracker integration URL attribute8137 is expected to allow :external_wiki_url to be ‹"https://example.com"›8138 is expected not to allow :external_wiki_url to be ‹"example.com"›8139 is expected not to allow :external_wiki_url to be ‹"ftp://example.com"›8140 is expected not to allow :external_wiki_url to be ‹"herp-and-derp"›8141 when integration is inactive8142 is expected not to validate that :external_wiki_url cannot be empty/falsy8143 test8144 the URL is not reachable8145 is not successful8146 the URL is reachable8147 is successful8148ErrorTracking::Collector::PayloadValidator8149 #valid?8150 with event fixtures8151 event_fixture: "/builds/gitlab-org/gitlab/spec/fixtures/error_tracking/browser_event.json"8152 behaves like valid payload8153 is expected to be valid8154 event_fixture: "/builds/gitlab-org/gitlab/spec/fixtures/error_tracking/go_parsed_event.json"8155 behaves like valid payload8156 is expected to be valid8157 event_fixture: "/builds/gitlab-org/gitlab/spec/fixtures/error_tracking/go_two_exception_event.json"8158 behaves like valid payload8159 is expected to be valid8160 event_fixture: "/builds/gitlab-org/gitlab/spec/fixtures/error_tracking/parsed_event.json"8161 behaves like valid payload8162 is expected to be valid8163 event_fixture: "/builds/gitlab-org/gitlab/spec/fixtures/error_tracking/parsed_event_nullbytes.json"8164 behaves like valid payload8165 is expected to be valid8166 event_fixture: "/builds/gitlab-org/gitlab/spec/fixtures/error_tracking/python_event.json"8167 behaves like valid payload8168 is expected to be valid8169 event_fixture: "/builds/gitlab-org/gitlab/spec/fixtures/error_tracking/python_event_repl.json"8170 behaves like valid payload8171 is expected to be valid8172 when empty8173 behaves like invalid payload8174 is expected not to be valid8175 when invalid8176 behaves like invalid payload8177 is expected not to be valid8178Ci::JobsHelper8179 jobs data8180 returns bridge data8181ObjectStorage::S38182 # order random8183 .signed_head_url8184 when the provider is AWS8185 generates a signed url8186 delegates to Fog::AWS::Storage::Files#head_url8187Gitlab::DependencyLinker::PodspecJsonLinker8188 .support?8189 supports *.podspec.json8190 does not support other files8191 #link8192 links the gem name8193 links the license8194 links the homepage8195 links the source URL8196 links dependencies8197 does not link subspec names8198IssueSerializer8199 non-sidebar issue serialization8200 matches issue json schema8201 sidebar issue serialization8202 matches issue_sidebar json schema8203 sidebar extras issue serialization8204 matches issue_sidebar_extras json schema8205 board issue serialization8206 matches board issue json schema8207Types::WorkItems::WidgetInterface8208 exposes the expected fields8209 .resolve_type8210 raises an error for an unknown type8211 widget_class: WorkItems::Widgets::Description, widget_type_name: Types::WorkItems::Widgets::DescriptionType8212 knows the correct type for objects8213 widget_class: WorkItems::Widgets::Hierarchy, widget_type_name: Types::WorkItems::Widgets::HierarchyType8214 knows the correct type for objects8215 widget_class: WorkItems::Widgets::Assignees, widget_type_name: Types::WorkItems::Widgets::AssigneesType8216 knows the correct type for objects8217 widget_class: WorkItems::Widgets::Labels, widget_type_name: Types::WorkItems::Widgets::LabelsType8218 knows the correct type for objects8219 widget_class: WorkItems::Widgets::Notes, widget_type_name: Types::WorkItems::Widgets::NotesType8220 knows the correct type for objects8221 widget_class: WorkItems::Widgets::Notifications, widget_type_name: Types::WorkItems::Widgets::NotificationsType8222 knows the correct type for objects8223DiffViewer::ServerSide8224 #render_error8225 when the diff file is stored externally8226 return :server_side_but_stored_externally8227 #render_error_reason8228 when the diff file is stored externally8229 returns error message if stored in LFS8230 returns error message if stored externally8231Types::WorkItemIdType8232 .coerce_input8233 can coerce valid issue input8234 can coerce valid work item input8235 fails for other input types8236 .coerce_result8237 can coerce issue results and return a WorkItem global ID8238 can coerce work item results8239 fails for other input types8240Gitlab::I18n8241 .selectable_locales8242 does not return languages with default translation levels 60%8243 does not return languages with less than 100% translation levels8244 .locale=8245 sets the locale based on current user preferred language8246 .use_default_locale8247 resets the locale to the default language8248 .pluralisation_rule8249 when overridden8250 returns custom definition regardless8251LimitedCapacity::JobTracker8252 #register8253 adds jid to the set8254 returns false if the jid was not added8255 #remove8256 removes jid from the set8257 #clean_up8258 with running jobs8259 does not remove the jid from the set8260 does only one Redis call to get the job ids8261 with completed jobs8262 removes the jid from the set8263 gets the job ids, removes them, and updates the counter with only two Redis calls8264Gitlab::WordDiff::Segments::Chunk8265 #removed?8266 is expected to be falsey8267 when line starts with "-"8268 is expected to be truthy8269 #added?8270 is expected to be falsey8271 when line starts with "+"8272 is expected to be truthy8273 #to_s8274 removes lead string modifier8275 when chunk is empty8276 is expected to eq ""8277 #length8278 is expected to eq 58279notify/user_deactivated_email.text.erb8280 # order random8281 displays the user's name8282 when additional text setting is set8283 when additional text feature flag is enabled8284 displays the additional text8285 when additional text feature flag is disabled8286 does not display the additional text8287 when additional text setting is not set8288 does not display any additional text8289 behaves like renders plain text email correctly8290 renders the email without HTML links8291Projects::ScheduleBulkRepositoryShardMovesService8292 behaves like moves repository shard in bulk8293 #execute8294 schedules container repository storage moves8295 read-only repository8296 does not get scheduled8297 .enqueue8298 defers to the worker8299Deployments::ArchiveInProjectWorker8300 #perform8301 executes Deployments::ArchiveInProjectService8302ServiceDeskEmailReceiverWorker8303 #perform8304 when service_desk_email config is enabled8305 does not ignore the email8306 when service desk receiver raises an exception8307 sends a rejection email8308 when service_desk_email config is disabled8309 ignores the email8310ContainerRegistry::Registry8311 is expected to respond to #client8312 is expected to respond to #uri8313 is expected to respond to #path8314 is expected not to be nil8315 #path8316 path from URL8317 is expected to eq "example.com"8318 custom path8319 is expected to eq "registry.example.com"8320 #gitlab_api_client8321 returns a GitLabApiClient with an import token8322WebpackHelper8323 #prefetch_link_tag8324DEPRECATION WARNING: The asset "foo.js" is not present in the asset pipeline.8325Falling back to an asset that may be in the public folder.8326This behavior is deprecated and will be removed.8327To bypass the asset pipeline and preserve this behavior,8328use the `skip_pipeline: true` option.8329 (called from prefetch_link_tag at /builds/gitlab-org/gitlab/app/helpers/webpack_helper.rb:5)8330 returns prefetch link tag8331 #webpack_preload_asset_tag8332 preloads the resource by default8333 prefetches the resource if explicitly asked8334Keys::CreateService8335 creates a key8336 notification8337 sends a notification8338FindJhBranch8339 # order random8340 #run8341 when it is not a merge request8342 returns JH_DEFAULT_BRANCH8343 when it is a merge request8344 when there is a corresponding JH branch8345 returns the corresponding JH branch name8346 when there is no corresponding JH branch8347 returns the default JH branch8348 when it is targeting a default branch8349 when there is a corresponding JH stable branch8350 returns the corresponding JH stable branch8351 when there is no corresponding JH stable branch8352 raises FindJhBranch::BranchNotFound8353 when it is not targeting the default branch8354 returns the default JH branch8355admin/application_settings/_ci_cd8356 limits8357 has fields for CI/CD limits8358 does not display the plan name when there is only one plan8359 with multiple plans8360 displays the plan name when there is more than one plan8361Sidebars::UserSettings::Menus::ProfileMenu8362 # order random8363 behaves like User settings menu8364 does not contain any sub menu8365 renders the correct link8366 renders the correct title8367 renders the correct icon8368 defines correct active route8369 behaves like User settings menu #render? method8370 #render?8371 when user is logged in8372 renders8373 when user is not logged in8374 does not render8375Gitlab::DependencyLinker::PodfileLinker8376 .support?8377 supports Podfile8378 does not support other files8379 #link8380 links sources8381 links packages8382 links external packages8383 links Git repos8384MergeRequests::Mergeability::CheckCiStatusService8385 #execute8386 when the merge request is in a mergable state8387 returns a check result with status success8388 when the merge request is not in a mergeable state8389 returns a check result with status failed8390 #skip?8391 when skip check is true8392 returns true8393 when skip check is false8394 returns false8395 #cacheable?8396 returns false8397RuboCop::Cop::Gitlab::EventStoreSubscriber8398 # order random8399 when an event store subscriber does not implement #handle_event8400 registers an offense8401 a non worker class8402 does not register an offense8403 when a Sidekiq worker implements #handle_event8404 does not register an offense8405 when an event store subscriber overrides #perform8406 registers an offense8407 when an event store subscriber does not override #perform8408 does not register an offense8409 when a Sidekiq worker overrides #perform8410 does not register an offense8411Groups::SettingsHelper8412 #group_settings_confirm_modal_data8413 prevent_delete_response: true, is_button_disabled: "true", form_value_id: nil8414 returns expected parameters8415 prevent_delete_response: true, is_button_disabled: "true", form_value_id: "fake_form_id"8416 returns expected parameters8417 prevent_delete_response: false, is_button_disabled: "false", form_value_id: nil8418 returns expected parameters8419 prevent_delete_response: false, is_button_disabled: "false", form_value_id: "fake_form_id"8420 returns expected parameters8421event store matchers8422 # order random8423 not_publish_event8424 requires a block matcher8425 does not permit .with8426 validates the event type8427 publish_event8428 requires a block matcher8429 validates the event type8430 validates the event data8431Gitlab::Graphql::CallsGitaly::FieldExtension8432 when the field calls gitaly8433 when the field has a constant complexity8434 allows the call8435 when the field declares that it calls gitaly8436 allows the call8437 when the field does not have these arguments8438 notices, and raises, mentioning the field8439 when it does not call gitaly8440 does not raise8441 when some field calls gitaly while we were waiting8442 is acceptable if all are accounted for8443 is unacceptable if some of the calls are unaccounted for8444Gitlab::Ci::MaskSecret8445 #mask8446 masks exact number of characters8447 masks multiple occurrences8448 does not mask if not found8449 does support null token8450 does not change a bytesize of a value8451Gitlab::Memory::UploadAndCleanupReports8452 # order random8453 #initalize8454 when sleep_time_seconds is passed through the environment8455 initializes with these settings8456 when sleep_time_seconds is passed through the initializer8457 initializes with these settings8458 when `sleep_time_seconds` is not passed8459 initialized with the default8460 #call8461 invokes the uploader and cleans the files8462 when there is an exception8463 logs it and does not crash the loop8464Alerting::ProjectAlertingSetting8465 Associations8466 is expected to belong to project required: false8467 #token8468 when set8469 reads the token8470 when not set8471 generates a token before validation8472Types::ErrorTracking::SentryErrorStackTraceType8473 is expected to eq "SentryErrorStackTrace"8474 is expected to require graphql authorizations :read_sentry_issue8475 exposes the expected fields8476Gitlab::Ci::EnvironmentMatcher8477 # order random8478 #match?8479 when given pattern is a normal string8480 returns true on an exact match8481 returns false if not an exact match8482 when given pattern has a wildcard8483 returns true on wildcard matches8484 returns false when not a wildcard match8485 when given pattern is nil8486 always returns false8487 when given pattern is an empty string8488 always returns false8489Gitlab::Ci::Config::Yaml::Result8490 # order random8491 raises an error when reading a header when there is none8492 stores an error / exception when initialized with it8493 does not have a header when config is a single hash8494 when config is an array of hashes8495 when first document matches the header schema8496 has a header8497 when first document does not match the header schema8498 does not have header8499PagesDomains::DeleteService8500 # order random8501 when the user does not have the required permissions8502 does not delete the pages domain and does not publish a PagesDomainDeletedEvent8503 when the user has the required permissions8504 when it updates the domain successfully8505 deletes the domain and publishes a PagesDomainDeletedEvent8506Gitlab::SidekiqMiddleware::DuplicateJobs::Strategies8507 .for8508 returns the right class for `until_executing`8509 returns the right class for `until_executed`8510 returns the right class for `none`8511 raises an UnknownStrategyError when passing an unknown key8512Gitlab::Ci::Config::Entry::Tags8513 validation8514 when tags config value is correct8515 #value8516 returns tags configuration8517 #valid?8518 is valid8519 when entry value is not correct8520 #errors8521 when tags config is not an array of strings8522 reports error8523 when tags limit is reached8524 reports error8525API::API8526 .prefix8527 has a prefix defined8528 .version8529 uses most recent version of the API8530 .versions8531 returns all available versions8532Gitlab::Template::GitignoreTemplate8533 .all8534 strips the gitignore suffix8535 combines the globals and rest8536 .find8537 returns nil if the file does not exist8538 returns the Gitignore object of a valid file8539 #content8540 loads the full file8541Types::MilestoneType8542 is expected to eq "Milestone"8543 is expected to require graphql authorizations :read_milestone8544 has the expected fields8545 stats field8546 is expected to have graphql type Types::MilestoneStatsType8547Gitlab::Search::SortOptions8548 .sort_and_direction8549 using order_by and sort8550 returns matched options8551 using just sort8552 returns matched options8553 when unknown option8554 returns unknown8555Gitlab::GithubImport::ImportReleaseAttachmentsWorker8556 # order random8557 #import8558 imports an issue event8559Gitlab::RuggedInstrumentation8560 .query_time8561 increments query times8562 .increment_query_count8563 tracks query counts8564Types::Ci::RunnerType8565 is expected to eq "CiRunner"8566 is expected to require graphql authorizations :read_runner8567 contains attributes related to a runner8568Gitlab::Usage::Metrics::Instrumentations::SnowplowConfiguredToGitlabCollectorMetric8569 for collector_hostname option8570 collector_hostname: "snowplow.trx.gitlab.net", expected_value: true8571 behaves like a correct instrumented metric value8572 has correct value8573 collector_hostname: "foo.bar.something.net", expected_value: false8574 behaves like a correct instrumented metric value8575 has correct value8576BulkImports::FileTransfer8577 .config_for8578 when portable is group8579 returns group config8580 when portable is project8581 returns project config8582 when portable is unsupported8583 raises an error8584Gitlab::Utils::BatchLoader8585 # order random8586 .clear_key8587 clears batched items which match the specified batch key8588 clears loaded values which match the specified batch key8589Gitlab::Import::Errors8590 # order random8591 .merge_nested_errors8592 merges nested collection errors8593GoogleCloud::GcpRegionAddOrReplaceService8594 adds and replaces GCP region vars8595Mutations::Members::BulkUpdateBase8596 # order random8597 raises a NotImplementedError error if the source_type method is called on the base class8598Gitlab::GithubImport::ImportPullRequestMergedByWorker8599 is expected to includes the Gitlab::GithubImport::ObjectImporter module8600 #representation_class8601 is expected to eq Gitlab::GithubImport::Representation::PullRequest8602 #importer_class8603 is expected to eq Gitlab::GithubImport::Importer::PullRequestMergedByImporter8604Gitlab::Database::Migrations::Observers::BatchDetails8605 # order random8606 meta: lazy { { job_meta: job_meta } }, expected_keys: ["time_spent", "min_value", "max_value", "batch_size", "sub_batch_size", "pause_ms"]8607 records expected information to file8608 meta: {:job_meta=>nil}, expected_keys: ["time_spent"]8609 records expected information to file8610 meta: nil, expected_keys: ["time_spent"]8611 records expected information to file8612BulkImports::Groups::Extractors::SubgroupsExtractor8613 #extract8614 returns ExtractedData response8615Types::Admin::Analytics::UsageTrends::MeasurementIdentifierEnum8616 is expected to eq "MeasurementIdentifier"8617 exposes all the existing identifier values8618Gitlab::Git::GitmodulesParser8619 parses a .gitmodules file correctly8620Gitlab::Database::SchemaValidation::Validators::ExtraIndexes8621 # order random8622 returns index inconsistencies8623Types::ContainerExpirationPolicyCadenceEnum8624 behaves like exposing container expiration policy option8625 exposes all options8626 uses all possible options from model8627Types::Projects::ServiceType8628 is expected to have graphql fields :type, :service_type, and :active8629 .resolve_type8630 resolves the corresponding type for objects8631Types::DesignManagement::DesignVersionEventEnum8632 is expected to eq "DesignVersionEvent"8633 exposes the correct event states8634BulkImports::Groups::Transformers::SubgroupToEntityTransformer8635 #transform8636 transforms subgroups data in entity params8637Types::Packages::Conan::FileMetadatumType8638 includes conan file metadatum fields8639Gitlab::Ci::Config::Normalizer::Factory8640 #create8641 when no strategy applies8642 is expected to be empty8643Types::ContainerExpirationPolicyKeepEnum8644 behaves like exposing container expiration policy option8645 exposes all options8646 uses all possible options from model8647Transactions8648 is not in a transaction8649 is in a transaction8650Gitlab::Email::Message::BuildIosAppGuide8651 contains the correct message8652Banzai::Pipeline::EmojiPipeline8653 replaces emoji8654 filters out HTML tags8655Types::Users::EmailType8656 # order random8657 is expected to require graphql authorizations :read_user_email_address8658 has the correct fields8659Types::MilestoneStatsType8660 is expected to require graphql authorizations :read_milestone8661 has the expected fields8662Sidebars::Projects::SuperSidebarMenus::MonitorMenu8663 # order random8664 has title and sprite_icon8665 defines list of NilMenuItem placeholders8666Gitlab::Metrics::Dashboard::Validator::CustomFormats8667 #format_handlers8668 add_to_metric_id_cache8669 adds data to metric id cache8670Types::PermissionTypes::User8671 returns user permissions8672Mutations::ResolvesGroup8673 uses the GroupsResolver to resolve groups by path8674Bitbucket::Representation::User8675 #username8676 returns correct value8677Gitlab::Usage::Metrics::Instrumentations::ServiceDeskEmailEncryptedSecretsEnabledMetric8678 # order random8679 behaves like a correct instrumented metric value8680 has correct value8681Types::Ci::VariableTypeEnum8682 matches the keys of Ci::Variable.variable_types8683Knapsack report was generated. Preview:8684{8685 "spec/models/issue_spec.rb": 141.65743055199982,8686 "spec/models/note_spec.rb": 144.70585099100026,8687 "spec/lib/gitlab/git/repository_spec.rb": 86.61934358000053,8688 "spec/services/projects/import_service_spec.rb": 86.71672498899989,8689 "spec/services/issues/move_service_spec.rb": 67.53628213400043,8690 "spec/policies/environment_policy_spec.rb": 62.08049550799842,8691 "spec/models/commit_status_spec.rb": 31.000317902999086,8692 "spec/workers/database/batched_background_migration_worker_spec.rb": 48.45998503299961,8693 "spec/lib/banzai/filter/references/commit_reference_filter_spec.rb": 43.24938255699999,8694 "spec/lib/gitlab/rack_attack/request_spec.rb": 6.463768159999745,8695 "spec/models/award_emoji_spec.rb": 22.727854224998737,8696 "spec/services/git/wiki_push_service_spec.rb": 34.229983318999075,8697 "spec/workers/emails_on_push_worker_spec.rb": 30.375747965999835,8698 "spec/lib/banzai/filter/references/user_reference_filter_spec.rb": 20.53119968699866,8699 "spec/lib/gitlab/ci/build/rules/rule/clause/exists_spec.rb": 24.338540243999887,8700 "spec/lib/gitlab/database/background_migration/batched_migration_spec.rb": 6.737970480999138,8701 "spec/helpers/commits_helper_spec.rb": 19.84043573499912,8702 "spec/models/commit_range_spec.rb": 18.64321488099995,8703 "spec/finders/ci/pipelines_finder_spec.rb": 12.518772088000333,8704 "spec/serializers/pipeline_serializer_spec.rb": 17.985571021001306,8705 "spec/models/integrations/discord_spec.rb": 9.6839883620014,8706 "spec/services/merge_requests/ff_merge_service_spec.rb": 21.383469696000247,8707 "spec/lib/gitlab/import_export/import_failure_service_spec.rb": 13.799249755000346,8708 "spec/lib/gitlab/bitbucket_import/importer_spec.rb": 15.978019044001485,8709 "spec/lib/gitlab/git/branch_spec.rb": 17.313765998000235,8710 "spec/services/snippets/bulk_destroy_service_spec.rb": 16.511396556999898,8711 "spec/services/ci/pipeline_creation/cancel_redundant_pipelines_service_spec.rb": 18.715848289999485,8712 "spec/lib/banzai/reference_parser/commit_range_parser_spec.rb": 13.732854990001215,8713 "spec/services/discussions/update_diff_position_service_spec.rb": 13.373688400999526,8714 "spec/services/projects/hashed_storage/migrate_repository_service_spec.rb": 13.971297482999944,8715 "spec/lib/gitlab/kubernetes/helm/v2/init_command_spec.rb": 10.016934428998866,8716 "spec/lib/gitlab/checks/single_change_access_spec.rb": 12.113328110999646,8717 "spec/services/issue_links/create_service_spec.rb": 10.232852116001595,8718 "spec/services/security/merge_reports_service_spec.rb": 10.874638007999238,8719 "spec/rubocop/cop/rspec/misspelled_aggregate_failures_spec.rb": 2.269142319000821,8720 "spec/lib/gitlab/diff/lines_unfolder_spec.rb": 9.55800501000158,8721 "spec/models/ci/job_token/scope_spec.rb": 8.904746280000836,8722 "spec/lib/gitlab/import_export/after_export_strategies/base_after_export_strategy_spec.rb": 10.35128757199891,8723 "spec/workers/remove_expired_group_links_worker_spec.rb": 10.061039079999318,8724 "spec/helpers/merge_requests_helper_spec.rb": 8.212296787000014,8725 "spec/services/award_emojis/add_service_spec.rb": 6.60863568700006,8726 "spec/services/ci/create_pipeline_service/cross_project_pipeline_spec.rb": 11.524556619000577,8727 "spec/lib/bulk_imports/clients/http_spec.rb": 2.0981302030013467,8728 "spec/services/quick_actions/target_service_spec.rb": 9.362696609001432,8729 "spec/lib/gitlab/ci/charts_spec.rb": 8.82822315500016,8730 "spec/lib/gitlab/ci/config/entry/environment_spec.rb": 2.1703476590009814,8731 "spec/helpers/version_check_helper_spec.rb": 1.9208887479999248,8732 "spec/lib/gitlab/ci/build/context/global_spec.rb": 7.687092791999021,8733 "spec/views/notify/import_work_items_csv_email.html.haml_spec.rb": 3.411345151000205,8734 "spec/services/ci/job_artifacts/expire_project_build_artifacts_service_spec.rb": 2.817730959999608,8735 "spec/lib/container_registry/migration_spec.rb": 2.2699780390012165,8736 "spec/tasks/gitlab/incoming_email_rake_spec.rb": 4.218552341000759,8737 "spec/services/bulk_imports/file_download_service_spec.rb": 1.7778779769996618,8738 "spec/lib/sbom/package_url/encoder_spec.rb": 1.3703155080002034,8739 "spec/models/work_items/type_spec.rb": 3.5908988659994066,8740 "spec/lib/gitlab/etag_caching/middleware_spec.rb": 1.2465892120017088,8741 "spec/workers/stuck_merge_jobs_worker_spec.rb": 7.208586217000629,8742 "spec/lib/gitlab/diff/highlight_cache_spec.rb": 3.3135869310008275,8743 "spec/graphql/mutations/timelogs/delete_spec.rb": 2.4626378299999487,8744 "spec/models/board_project_recent_visit_spec.rb": 3.9774570089994086,8745 "spec/lib/gitlab/jira_import_spec.rb": 3.24499259500044,8746 "spec/services/repository_archive_clean_up_service_spec.rb": 2.4636412799991376,8747 "spec/lib/gitlab/metrics/global_search_slis_spec.rb": 1.146798742000101,8748 "spec/lib/banzai/reference_parser/label_parser_spec.rb": 3.9592579130003287,8749 "spec/policies/namespaces/user_namespace_policy_spec.rb": 1.6081297709988576,8750 "spec/lib/gitlab/jira_import/issue_serializer_spec.rb": 1.9852875150008913,8751 "spec/presenters/group_member_presenter_spec.rb": 2.119406698999228,8752 "spec/services/jira_connect_installations/proxy_lifecycle_event_service_spec.rb": 1.6008293220002088,8753 "spec/services/error_tracking/list_projects_service_spec.rb": 3.2879345870005636,8754 "spec/workers/concerns/limited_capacity/worker_spec.rb": 1.3791075059998548,8755 "spec/lib/gitlab/checks/push_file_count_check_spec.rb": 3.8079132529983326,8756 "spec/workers/new_issue_worker_spec.rb": 4.618273480999051,8757 "spec/models/packages/npm/metadatum_spec.rb": 1.0096734300004755,8758 "spec/presenters/gitlab/blame_presenter_spec.rb": 5.398559817000205,8759 "spec/lib/gitlab/utils/override_spec.rb": 1.4189587870005198,8760 "spec/graphql/resolvers/concerns/resolves_pipelines_spec.rb": 3.8346376179997606,8761 "spec/workers/packages/cleanup_package_registry_worker_spec.rb": 2.8445067739994556,8762 "spec/helpers/environments_helper_spec.rb": 2.0057843809991027,8763 "spec/models/metrics/users_starred_dashboard_spec.rb": 2.1756990079993557,8764 "spec/workers/ci/external_pull_requests/create_pipeline_worker_spec.rb": 4.6324147489995084,8765 "spec/lib/gitlab/ci/matching/runner_matcher_spec.rb": 1.7595097299999907,8766 "spec/lib/gitlab/auth/result_spec.rb": 1.027156615999047,8767 "spec/models/concerns/sha_attribute_spec.rb": 1.221159737000562,8768 "spec/services/alert_management/alerts/todo/create_service_spec.rb": 1.894568662999518,8769 "spec/services/packages/rpm/parse_package_service_spec.rb": 0.7439963520009769,8770 "spec/workers/concerns/worker_context_spec.rb": 0.9573773190004431,8771 "spec/lib/gitlab/fogbugz_import/importer_spec.rb": 4.0751169200011645,8772 "spec/lib/atlassian/jira_connect/serializers/build_entity_spec.rb": 2.2786584770001355,8773 "spec/rubocop/cop/migration/batch_migrations_post_only_spec.rb": 0.9777302549991873,8774 "spec/lib/gitlab/audit/type/definition_spec.rb": 1.5723024569997506,8775 "spec/services/issuable/callbacks/milestone_spec.rb": 2.056156660999477,8776 "spec/lib/api/entities/wiki_page_spec.rb": 2.4749919489986496,8777 "spec/lib/banzai/reference_parser/mentioned_user_parser_spec.rb": 2.390069625000251,8778 "spec/lib/gitlab/import_export/base/object_builder_spec.rb": 2.670247799000208,8779 "spec/graphql/mutations/incident_management/timeline_event/promote_from_note_spec.rb": 2.066689088998828,8780 "spec/services/ci/update_pending_build_service_spec.rb": 1.9064619410000887,8781 "spec/workers/repository_cleanup_worker_spec.rb": 3.455399832999319,8782 "spec/lib/gitlab/ci/pipeline/chain/populate_metadata_spec.rb": 2.1759615169994504,8783 "spec/lib/gitlab/background_migration_spec.rb": 0.8626086189997295,8784 "spec/lib/gitlab/discussions_diff/highlight_cache_spec.rb": 0.5631250770002225,8785 "spec/graphql/mutations/alert_management/prometheus_integration/create_spec.rb": 1.7769738260012673,8786 "spec/lib/gitlab/ci/pipeline/chain/seed_block_spec.rb": 3.956507404000149,8787 "spec/workers/bulk_imports/pipeline_worker_spec.rb": 2.022145577999254,8788 "spec/workers/merge_requests/execute_approval_hooks_worker_spec.rb": 1.90360032100034,8789 "spec/services/projects/create_from_template_service_spec.rb": 2.862524800999381,8790 "spec/lib/gitlab/sidekiq_logging/structured_logger_spec.rb": 1.5686275480002223,8791 "spec/services/metrics/dashboard/panel_preview_service_spec.rb": 1.134004735000417,8792 "spec/lib/gitlab/incoming_email_spec.rb": 1.093064692999178,8793 "spec/lib/gitlab/x509/tag_spec.rb": 1.5165875189995859,8794 "spec/services/system_notes/alert_management_service_spec.rb": 2.6041299720000097,8795 "spec/models/issue/email_spec.rb": 1.369982517999233,8796 "spec/models/users/namespace_commit_email_spec.rb": 1.980640186000528,8797 "spec/workers/error_tracking_issue_link_worker_spec.rb": 1.1743017570006486,8798 "spec/views/profiles/keys/_form.html.haml_spec.rb": 0.6527458699983981,8799 "spec/lib/gitlab/kas/client_spec.rb": 0.9616480189997674,8800 "spec/workers/packages/mark_package_files_for_destruction_worker_spec.rb": 1.0141690390009899,8801 "spec/lib/gitlab/graphql/pagination/array_connection_spec.rb": 0.7892570530002558,8802 "spec/lib/gitlab/github_import_spec.rb": 1.862016708999363,8803 "spec/models/shard_spec.rb": 0.7844231849994685,8804 "spec/graphql/types/admin/analytics/usage_trends/measurement_type_spec.rb": 0.9306727750008577,8805 "spec/lib/gitlab/external_authorization_spec.rb": 0.6331234949993814,8806 "spec/lib/gitlab/web_ide/config/entry/global_spec.rb": 1.0006761510012439,8807 "spec/finders/groups/user_groups_finder_spec.rb": 1.9114973100004136,8808 "spec/policies/personal_access_token_policy_spec.rb": 1.1516633909996017,8809 "spec/services/import/prepare_service_spec.rb": 0.8263587959991128,8810 "spec/lib/gitlab/sidekiq_config_spec.rb": 1.4593077300014556,8811 "spec/lib/gitlab/graphql/known_operations_spec.rb": 0.6391460029990412,8812 "spec/graphql/types/commit_type_spec.rb": 0.5797789340012969,8813 "spec/models/preloaders/users_max_access_level_by_project_preloader_spec.rb": 2.622096998999041,8814 "spec/serializers/analytics_summary_serializer_spec.rb": 1.3635815489997185,8815 "spec/models/clusters/agents/group_authorization_spec.rb": 1.1990678809997917,8816 "spec/services/groups/deploy_tokens/revoke_service_spec.rb": 0.6346867840002233,8817 "spec/services/ci/create_pipeline_service/artifacts_spec.rb": 2.0149062589989626,8818 "spec/rubocop/cop/migration/schedule_async_spec.rb": 0.8869108039998537,8819 "spec/helpers/lazy_image_tag_helper_spec.rb": 1.2705084669996722,8820 "spec/lib/gitlab/config_checker/external_database_checker_spec.rb": 0.5250651960013784,8821 "spec/lib/gitlab/ci/processable_object_hierarchy_spec.rb": 1.6557829310004308,8822 "spec/lib/gitlab/json_logger_spec.rb": 0.5557847100008075,8823 "spec/workers/gitlab/jira_import/stage/import_notes_worker_spec.rb": 1.1547665799989772,8824 "spec/services/test_hooks/system_service_spec.rb": 1.6671316089996253,8825 "spec/workers/update_project_statistics_worker_spec.rb": 2.1170170189998316,8826 "spec/initializers/check_forced_decomposition_spec.rb": 0.8965301619991806,8827 "spec/workers/object_pool/join_worker_spec.rb": 2.04160208400026,8828 "spec/services/x509_certificate_revoke_service_spec.rb": 1.972871457999645,8829 "spec/policies/application_setting_policy_spec.rb": 1.5640797190008016,8830 "spec/services/packages/debian/create_package_file_service_spec.rb": 1.2799057150004955,8831 "spec/services/alert_management/metric_images/upload_service_spec.rb": 1.6489719819983293,8832 "spec/workers/ci/build_finished_worker_spec.rb": 1.186866113999713,8833 "spec/graphql/mutations/branches/create_spec.rb": 1.7640574790002574,8834 "spec/tooling/lib/tooling/find_tests_spec.rb": 0.8086070589997689,8835 "spec/lib/gitlab/database/schema_validation/database_spec.rb": 0.7637427980007487,8836 "spec/services/user_project_access_changed_service_spec.rb": 0.8139751580001757,8837 "spec/lib/gitlab/quick_actions/timeline_text_and_date_time_separator_spec.rb": 0.9936318620002567,8838 "spec/models/integrations/external_wiki_spec.rb": 0.7793507449987374,8839 "spec/lib/error_tracking/collector/payload_validator_spec.rb": 0.6521101210000779,8840 "spec/helpers/ci/jobs_helper_spec.rb": 1.814057869998578,8841 "spec/uploaders/object_storage/s3_spec.rb": 1.0425453030002245,8842 "spec/lib/gitlab/dependency_linker/podspec_json_linker_spec.rb": 0.6898729219992674,8843 "spec/serializers/issue_serializer_spec.rb": 1.1993089219995454,8844 "spec/graphql/types/work_items/widget_interface_spec.rb": 0.7597881090005103,8845 "spec/models/diff_viewer/server_side_spec.rb": 1.383833894999043,8846 "spec/graphql/types/work_item_id_type_spec.rb": 0.8650316479997855,8847 "spec/lib/gitlab/i18n_spec.rb": 0.6691831059997639,8848 "spec/workers/concerns/limited_capacity/job_tracker_spec.rb": 0.5718330469990178,8849 "spec/lib/gitlab/word_diff/segments/chunk_spec.rb": 0.6856620929993369,8850 "spec/views/notify/user_deactivated_email.text.erb_spec.rb": 0.8271466059995873,8851 "spec/services/projects/schedule_bulk_repository_shard_moves_service_spec.rb": 1.199692751000839,8852 "spec/workers/deployments/archive_in_project_worker_spec.rb": 1.877506467000785,8853 "spec/workers/service_desk_email_receiver_worker_spec.rb": 0.6115644089986745,8854 "spec/lib/container_registry/registry_spec.rb": 0.6052231600006053,8855 "spec/helpers/webpack_helper_spec.rb": 0.515443188000063,8856 "spec/services/keys/create_service_spec.rb": 0.7954179119988112,8857 "spec/scripts/setup/find_jh_branch_spec.rb": 0.8411985429993365,8858 "spec/views/admin/application_settings/_ci_cd.html.haml_spec.rb": 0.9132523179996497,8859 "spec/lib/sidebars/user_settings/menus/profile_menu_spec.rb": 0.661215768999682,8860 "spec/lib/gitlab/dependency_linker/podfile_linker_spec.rb": 0.5110123690010369,8861 "spec/services/merge_requests/mergeability/check_ci_status_service_spec.rb": 0.552496610000162,8862 "spec/rubocop/cop/gitlab/event_store_subscriber_spec.rb": 0.600426859999061,8863 "spec/helpers/groups/settings_helper_spec.rb": 0.5356943839997257,8864 "spec/support_specs/matchers/event_store_spec.rb": 0.7620311479986412,8865 "spec/lib/gitlab/graphql/calls_gitaly/field_extension_spec.rb": 0.5816895749994728,8866 "spec/lib/gitlab/ci/mask_secret_spec.rb": 0.5530374489990209,8867 "spec/lib/gitlab/memory/upload_and_cleanup_reports_spec.rb": 0.5754628459999367,8868 "spec/models/alerting/project_alerting_setting_spec.rb": 0.6797526650007057,8869 "spec/graphql/types/error_tracking/sentry_error_stack_trace_type_spec.rb": 0.4208259059996635,8870 "spec/lib/gitlab/ci/environment_matcher_spec.rb": 0.7156707579997601,8871 "spec/lib/gitlab/ci/config/yaml/result_spec.rb": 0.6451776619996963,8872 "spec/services/pages_domains/delete_service_spec.rb": 0.9695355479998398,8873 "spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/strategies_spec.rb": 0.5459025519994611,8874 "spec/lib/gitlab/ci/config/entry/tags_spec.rb": 0.6146253379993141,8875 "spec/lib/api/api_spec.rb": 0.4780448350011284,8876 "spec/lib/gitlab/template/gitignore_template_spec.rb": 0.5863877230003709,8877 "spec/graphql/types/milestone_type_spec.rb": 0.5940423819993157,8878 "spec/lib/gitlab/search/sort_options_spec.rb": 0.7451173919998837,8879 "spec/workers/gitlab/github_import/import_release_attachments_worker_spec.rb": 0.598539761000211,8880 "spec/lib/gitlab/rugged_instrumentation_spec.rb": 0.5548377989998698,8881 "spec/graphql/types/ci/runner_type_spec.rb": 0.5148049780000292,8882 "spec/lib/gitlab/usage/metrics/instrumentations/snowplow_configured_to_gitlab_collector_metric_spec.rb": 0.462620287999016,8883 "spec/models/bulk_imports/file_transfer_spec.rb": 0.5400925619996997,8884 "spec/lib/gitlab/utils/batch_loader_spec.rb": 0.3915334220000659,8885 "spec/lib/gitlab/import/errors_spec.rb": 0.8608495590015082,8886 "spec/services/google_cloud/gcp_region_add_or_replace_service_spec.rb": 0.8660062180006207,8887 "spec/graphql/mutations/members/bulk_update_base_spec.rb": 0.6263561860014306,8888 "spec/workers/gitlab/github_import/import_pull_request_merged_by_worker_spec.rb": 0.4079924990001018,8889 "spec/lib/gitlab/database/migrations/observers/batch_details_spec.rb": 0.4104521579993161,8890 "spec/lib/bulk_imports/groups/extractors/subgroups_extractor_spec.rb": 0.6163282470006379,8891 "spec/graphql/types/admin/analytics/usage_trends/measurement_identifier_enum_spec.rb": 0.45290013999874645,8892 "spec/lib/gitlab/git/gitmodules_parser_spec.rb": 0.5206648460007273,8893 "spec/lib/gitlab/database/schema_validation/validators/extra_indexes_spec.rb": 0.3381531619997986,8894 "spec/graphql/types/container_expiration_policy_cadence_enum_spec.rb": 0.43736483300017426,8895 "spec/graphql/types/projects/service_type_spec.rb": 0.39202187200135086,8896 "spec/graphql/types/design_management/design_version_event_enum_spec.rb": 0.3804091840011097,8897 "spec/lib/bulk_imports/groups/transformers/subgroup_to_entity_transformer_spec.rb": 0.4728517160001502,8898 "spec/graphql/types/packages/conan/file_metadatum_type_spec.rb": 0.32253326600039145,8899 "spec/lib/gitlab/ci/config/normalizer/factory_spec.rb": 0.35496656999930565,8900 "spec/graphql/types/container_expiration_policy_keep_enum_spec.rb": 0.6008557400000427,8901 "spec/models/concerns/transactions_spec.rb": 0.5483440409989271,8902 "spec/lib/gitlab/email/message/build_ios_app_guide_spec.rb": 0.7574314890007372,8903 "spec/lib/banzai/pipeline/emoji_pipeline_spec.rb": 0.3839069539990305,8904 "spec/graphql/types/users/email_type_spec.rb": 0.6770799050009373,8905 "spec/graphql/types/milestone_stats_type_spec.rb": 0.46478353800011973,8906 "spec/lib/sidebars/projects/super_sidebar_menus/monitor_menu_spec.rb": 0.38011859399921377,8907 "spec/lib/gitlab/metrics/dashboard/validator/custom_formats_spec.rb": 0.365373616999932,8908 "spec/graphql/types/permission_types/user_spec.rb": 0.4782434850003483,8909 "spec/graphql/mutations/concerns/mutations/resolves_group_spec.rb": 0.64691761100039,8910 "spec/lib/bitbucket/representation/user_spec.rb": 0.46056381900052656,8911 "spec/lib/gitlab/usage/metrics/instrumentations/service_desk_email_encrypted_secrets_enabled_metric_spec.rb": 0.568827297000098,8912 "spec/graphql/types/ci/variable_type_enum_spec.rb": 0.50846547899891458913}8914Knapsack global time execution for tests: 24m 35s8915Pending: (Failures listed here are expected and do not affect your suite's status)8916 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 blank8917 # No reason given8918 # ./spec/support/shared_examples/models/atomic_internal_id_shared_examples.rb:498919 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 blank8920 # No reason given8921 # ./spec/support/shared_examples/models/atomic_internal_id_shared_examples.rb:578922 3) Gitlab::Git::Repository#squash sparse checkout8923 # No reason given8924 # ./spec/lib/gitlab/git/repository_spec.rb:23678925 4) Gitlab::Git::Repository#squash with an ASCII-8BIT diff8926 # No reason given8927 # ./spec/lib/gitlab/git/repository_spec.rb:24238928 5) Gitlab::Git::Repository#squash with trailing whitespace in an invalid patch8929 # No reason given8930 # ./spec/lib/gitlab/git/repository_spec.rb:24358931 6) Database::BatchedBackgroundMigrationWorker behaves like it runs batched background migration jobs #perform when the base model does not exist does nothing8932 # because the base model for main exists8933 # ./spec/support/shared_examples/workers/batched_background_migration_worker_shared_examples.rb:668934 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 skipped8935 # because the base model for main exists8936 # ./spec/support/shared_examples/workers/batched_background_migration_worker_shared_examples.rb:738937 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 nothing8938 # Skipping because database main exists8939 # ./spec/support/shared_examples/workers/batched_background_migration_worker_shared_examples.rb:968940 9) Gitlab::ConfigChecker::ExternalDatabaseChecker#check with a single database when database meets minimum supported version 8941 # Skipping because some of the extra databases [:ci, :main_clusterwide] are setup8942 # ./spec/lib/gitlab/config_checker/external_database_checker_spec.rb:308943 10) Gitlab::ConfigChecker::ExternalDatabaseChecker#check with a single database when database does not meet minimum supported version reports deprecated database notice8944 # Skipping because some of the extra databases [:ci, :main_clusterwide] are setup8945 # ./spec/lib/gitlab/config_checker/external_database_checker_spec.rb:388946 11) check_forced_decomposition initializer for production env for single database 8947 # Skipping because some of the extra databases [:ci, :main_clusterwide] are setup8948 # ./spec/initializers/check_forced_decomposition_spec.rb:248949Finished in 24 minutes 39 seconds (files took 47.97 seconds to load)89503691 examples, 0 failures, 11 pending8951Randomized with seed 589388952[TEST PROF INFO] Time spent in factories: 13:16.005 (53.57% of total time)8953RSpec exited with 0.8954No examples to retry, congrats!8956Not uploading cache ruby-gems-debian-bullseye-ruby-3.0-16 due to policy8957Not uploading cache gitaly-ruby-gems-debian-bullseye-ruby-3.0-16 due to policy8959Uploading artifacts...8960coverage/: found 5 matching artifact files and directories 8961crystalball/: found 2 matching artifact files and directories 8962deprecations/: found 3 matching artifact files and directories 8963knapsack/: found 3 matching artifact files and directories 8964WARNING: query_recorder/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 8965rspec/: found 14 matching artifact files and directories 8966WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 8967log/*.log: found 20 matching artifact files and directories 8968WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4031138427/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com8969WARNING: Retrying... context=artifacts-uploader error=request redirected8970Uploading artifacts as "archive" to coordinator... 201 Created id=4031138427 responseStatus=201 Created token=64_k4vWL8971Uploading artifacts...8972rspec/junit_rspec.xml: found 1 matching artifact files and directories 8973WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4031138427/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com8974WARNING: Retrying... context=artifacts-uploader error=request redirected8975Uploading artifacts as "junit" to coordinator... 201 Created id=4031138427 responseStatus=201 Created token=64_k4vWL8977Job succeeded