rspec unit pg12 9/28
Passed Started
by
@DylanGriffith

Dylan Griffith
1Running with gitlab-runner 15.6.0~beta.186.ga889181a (a889181a)2 on blue-1.private.runners-manager.gitlab.com/gitlab.com/gitlab-org 1zzGUpzq3 feature flags: 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-2.7.patched-golang-1.18-node-16.14-postgresql-12:rubygems-3.2-git-2.36-lfs-2.9-chrome-103-yarn-1.22-graphicsmagick-1.3.36 ...7Starting service postgres:12 ...8Pulling docker image postgres:12 ...9Using docker image sha256:56e1d6dc77b242b5f4f91e7319f0740f7ab8bdf41023fd5d703f412ac87976f5 for postgres:12 with digest postgres@sha256:93fd73e2322241eec204dac54b316bf429670ff6e5292e16f9e2fd3a3374a713 ...10Starting service redis:6.0-alpine ...11Pulling docker image redis:6.0-alpine ...12Using docker image sha256:83c577984741ab5b2e78640e0524852998d539ea3961e6d56680f336371f5c83 for redis:6.0-alpine with digest redis@sha256:459e91c5fe54134da1601ef85a4d9bc40c953862737fdfbe8f3c2b2a3eb6b20b ...13Waiting for services to be up and running (timeout 30 seconds)...14Authenticating with credentials from job payload (GitLab Registry)15Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.18-node-16.14-postgresql-12:rubygems-3.2-git-2.36-lfs-2.9-chrome-103-yarn-1.22-graphicsmagick-1.3.36 ...16Using docker image sha256:5c5404ecc69273636c3ef49645be715ef30ea99e51ad146a2efbeac2a1875f9c for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.18-node-16.14-postgresql-12:rubygems-3.2-git-2.36-lfs-2.9-chrome-103-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.18-node-16.14-postgresql-12@sha256:b032fe79dc0bf3ebfaeb610c82eacc500fbd0ec6e01889444011cf5a72b4135d ...18Running on runner-1zzgupzq-project-278964-concurrent-0 via runner-1zzgupzq-private-1667779998-69f71e1c...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: 119894, done. 25remote: Counting objects: 100% (119894/119894), done. 26remote: Compressing objects: 100% (78952/78952), done. 27remote: Total 119894 (delta 50153), reused 83076 (delta 36611), pack-reused 0 28Receiving objects: 100% (119894/119894), 110.17 MiB | 31.56 MiB/s, done.29Resolving deltas: 100% (50153/50153), done.31 * [new ref] refs/pipelines/687019226 -> refs/pipelines/68701922632 * [new branch] master -> origin/master33Checking out a134b2ce as master...34Skipping Git submodules setup35$ git remote set-url origin "${CI_REPOSITORY_URL}"37Checking cache for ruby-gems-debian-bullseye-ruby-2.7-16...38cache.zip is up to date 39Successfully extracted cache40Checking cache for gitaly-ruby-gems-debian-bullseye-ruby-2.7-16...41cache.zip is up to date 42Successfully extracted cache44Downloading artifacts for compile-test-assets (3281613120)...45Downloading artifacts from coordinator... ok id=3281613120 responseStatus=200 OK token=coaCUtqx46Downloading artifacts for detect-tests (3281613150)...47Downloading artifacts from coordinator... ok id=3281613150 responseStatus=200 OK token=coaCUtqx48Downloading artifacts for retrieve-tests-metadata (3281613152)...49Downloading artifacts from coordinator... ok id=3281613152 responseStatus=200 OK token=coaCUtqx50Downloading artifacts for setup-test-env (3281613137)...51Downloading artifacts from coordinator... ok id=3281613137 responseStatus=200 OK token=coaCUtqx53Using docker image sha256:5c5404ecc69273636c3ef49645be715ef30ea99e51ad146a2efbeac2a1875f9c for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.18-node-16.14-postgresql-12:rubygems-3.2-git-2.36-lfs-2.9-chrome-103-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.18-node-16.14-postgresql-12@sha256:b032fe79dc0bf3ebfaeb610c82eacc500fbd0ec6e01889444011cf5a72b4135d ...54$ echo $FOSS_ONLY55$ [ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb56$ export GOPATH=$CI_PROJECT_DIR/.go57$ mkdir -p $GOPATH58$ source scripts/utils.sh59$ source scripts/prepare_build.sh676Using decomposed database config (config/database.yml.decomposed-postgresql)677$ setup_db_user_only678CREATE ROLE679GRANT680==> 'setup_db_user_only' succeeded in 0 seconds.681$ bundle exec rake db:drop db:create db:schema:load db:migrate682Dropped database 'gitlabhq_test'683Dropped database 'gitlabhq_test_ci'684Dropped database 'gitlabhq_geo_test'685Created database 'gitlabhq_test'686Created database 'gitlabhq_test_ci'687Created database 'gitlabhq_geo_test'688==> 'bundle exec rake db:drop db:create db:schema:load db:migrate' succeeded in 31 seconds.689$ setup_db_praefect690SELECT pg_catalog.set_config('search_path', '', false);691CREATE DATABASE praefect_test ENCODING 'UTF8';692==> 'setup_db_praefect' succeeded in 0 seconds.693$ source ./scripts/rspec_helpers.sh694$ run_timed_command "gem install knapsack --no-document"695$ gem install knapsack --no-document696Successfully installed knapsack-4.0.06971 gem installed698==> 'gem install knapsack --no-document' succeeded in 0 seconds.699$ echo -e "\e[0Ksection_start:`date +%s`:gitaly-test-spawn[collapsed=true]\r\e[0KStarting Gitaly"813$ rspec_paralellized_job "--tag ~quarantine --tag ~level:migration"814SKIP_FLAKY_TESTS_AUTOMATICALLY: true815RETRY_FAILED_TESTS_IN_NEW_PROCESS: true816KNAPSACK_GENERATE_REPORT: true817FLAKY_RSPEC_GENERATE_REPORT: true818KNAPSACK_TEST_FILE_PATTERN: spec/{bin,channels,config,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.rb819KNAPSACK_LOG_LEVEL: debug820KNAPSACK_REPORT_PATH: knapsack/rspec_unit_pg12_9_28_report.json821FLAKY_RSPEC_SUITE_REPORT_PATH: rspec/flaky/report-suite.json822FLAKY_RSPEC_REPORT_PATH: rspec/flaky/all_rspec_unit_pg12_9_28_report.json823NEW_FLAKY_RSPEC_REPORT_PATH: rspec/flaky/new_rspec_unit_pg12_9_28_report.json824SKIPPED_FLAKY_TESTS_REPORT_PATH: rspec/flaky/skipped_flaky_tests_rspec_unit_pg12_9_28_report.txt825RETRIED_TESTS_REPORT_PATH: rspec/flaky/retried_tests_rspec_unit_pg12_9_28_report.txt826CRYSTALBALL: 827Knapsack node specs:828spec/models/merge_request_spec.rb829spec/lib/gitlab/background_migration/backfill_snippet_repositories_spec.rb830spec/services/users/migrate_to_ghost_user_service_spec.rb831spec/tasks/gitlab/workhorse_rake_spec.rb832spec/services/system_notes/issuables_service_spec.rb833spec/services/projects/update_service_spec.rb834spec/models/ci/build_trace_chunk_spec.rb835spec/services/draft_notes/publish_service_spec.rb836spec/helpers/visibility_level_helper_spec.rb837spec/tooling/danger/project_helper_spec.rb838spec/models/concerns/milestoneish_spec.rb839spec/models/hooks/web_hook_spec.rb840spec/services/design_management/copy_design_collection/copy_service_spec.rb841spec/services/snippets/create_service_spec.rb842spec/services/merge_requests/add_todo_when_build_fails_service_spec.rb843spec/lib/banzai/filter/references/snippet_reference_filter_spec.rb844spec/lib/gitlab/import_export/references_configuration_spec.rb845spec/policies/group_member_policy_spec.rb846spec/services/lfs/file_transformer_spec.rb847spec/services/projects/lfs_pointers/lfs_download_service_spec.rb848spec/lib/gitlab/ci/config/entry/job_spec.rb849spec/services/merge_requests/request_review_service_spec.rb850spec/services/serverless/associate_domain_service_spec.rb851spec/lib/gitlab/error_tracking/error_repository/open_api_strategy_spec.rb852spec/serializers/pipeline_details_entity_spec.rb853spec/services/issue_links/list_service_spec.rb854spec/graphql/resolvers/timelog_resolver_spec.rb855spec/services/security/merge_reports_service_spec.rb856spec/lib/gitlab/background_migration/remove_occurrence_pipelines_and_duplicate_vulnerabilities_findings_spec.rb857spec/services/wiki_pages/update_service_spec.rb858spec/models/concerns/routable_spec.rb859spec/services/projects/in_product_marketing_campaign_emails_service_spec.rb860spec/lib/gitlab/slash_commands/deploy_spec.rb861spec/services/draft_notes/create_service_spec.rb862spec/models/hooks/project_hook_spec.rb863spec/services/deployments/older_deployments_drop_service_spec.rb864spec/lib/gitlab/import_export/after_export_strategies/base_after_export_strategy_spec.rb865spec/models/ci/trigger_spec.rb866spec/lib/gitlab/database/load_balancing/host_spec.rb867spec/views/projects/merge_requests/_commits.html.haml_spec.rb868spec/services/projects/open_issues_count_service_spec.rb869spec/policies/award_emoji_policy_spec.rb870spec/services/incident_management/timeline_events/destroy_service_spec.rb871spec/services/clusters/gcp/provision_service_spec.rb872spec/services/work_items/create_from_task_service_spec.rb873spec/finders/access_requests_finder_spec.rb874spec/models/integrations/base_chat_notification_spec.rb875spec/helpers/clusters_helper_spec.rb876spec/services/ci/pipeline_artifacts/coverage_report_service_spec.rb877spec/models/bulk_imports/entity_spec.rb878spec/finders/packages/conan/package_finder_spec.rb879spec/services/work_items/create_service_spec.rb880spec/lib/gitlab/ci/pipeline/seed/deployment_spec.rb881spec/graphql/mutations/alert_management/alerts/set_assignees_spec.rb882spec/lib/gitlab/web_hooks/recursion_detection_spec.rb883spec/lib/gitlab/diff/highlight_cache_spec.rb884spec/models/projects/topic_spec.rb885spec/models/board_project_recent_visit_spec.rb886spec/serializers/cluster_application_entity_spec.rb887spec/services/deployments/create_for_build_service_spec.rb888spec/models/ci/build_trace_chunks/database_spec.rb889spec/services/notification_recipients/builder/default_spec.rb890spec/finders/ci/jobs_finder_spec.rb891spec/models/oauth_access_token_spec.rb892spec/finders/freeze_periods_finder_spec.rb893spec/lib/gitlab/graphql/deprecation_spec.rb894spec/models/label_link_spec.rb895spec/lib/gitlab/database/migrations/observers/transaction_duration_spec.rb896spec/lib/gitlab/omniauth_initializer_spec.rb897spec/services/admin/set_feature_flag_service_spec.rb898spec/support_specs/helpers/html_escaped_helpers_spec.rb899spec/tooling/lib/tooling/kubernetes_client_spec.rb900spec/services/web_hooks/destroy_service_spec.rb901spec/lib/gitlab/repository_hash_cache_spec.rb902spec/lib/gitlab/ci/matching/runner_matcher_spec.rb903spec/lib/backup/database_spec.rb904spec/lib/gitlab/database/load_balancing/sticking_spec.rb905spec/services/packages/create_dependency_service_spec.rb906spec/lib/gitlab/ci/config/entry/trigger_spec.rb907spec/models/integrations/chat_message/deployment_message_spec.rb908spec/services/projects/record_target_platforms_service_spec.rb909spec/helpers/whats_new_helper_spec.rb910spec/serializers/stage_serializer_spec.rb911spec/graphql/graphql_triggers_spec.rb912spec/lib/gitlab/ci/config/entry/include_spec.rb913spec/graphql/mutations/security/ci_configuration/configure_sast_spec.rb914spec/lib/bulk_imports/clients/http_spec.rb915spec/workers/incident_management/add_severity_system_note_worker_spec.rb916spec/policies/custom_emoji_policy_spec.rb917spec/lib/gitlab/ci/runner_instructions_spec.rb918spec/models/analytics/usage_trends/measurement_spec.rb919spec/views/projects/issues/_service_desk_info_content.html.haml_spec.rb920spec/models/preloaders/merge_request_diff_preloader_spec.rb921spec/lib/gitlab/checks/lfs_check_spec.rb922spec/workers/ci/pipeline_artifacts/coverage_report_worker_spec.rb923spec/lib/gitlab/kubernetes/helm/v3/delete_command_spec.rb924spec/finders/prometheus_metrics_finder_spec.rb925spec/lib/gitlab/sidekiq_queue_spec.rb926spec/lib/gitlab/ci/config/external/file/base_spec.rb927spec/lib/gitlab/jira/dvcs_spec.rb928spec/services/ml/experiment_tracking/experiment_repository_spec.rb929spec/lib/gitlab/hook_data/user_builder_spec.rb930spec/graphql/resolvers/ci/runner_jobs_resolver_spec.rb931spec/lib/gitlab/github_import/importer/events/changed_milestone_spec.rb932spec/lib/gitlab/database/migrations/instrumentation_spec.rb933spec/lib/gitlab/phabricator_import/importer_spec.rb934spec/lib/gitlab/ci/config/entry/prefix_spec.rb935spec/services/ci/job_token_scope/add_project_service_spec.rb936spec/models/concerns/loose_index_scan_spec.rb937spec/experiments/concerns/project_commit_count_spec.rb938spec/lib/gitlab/config/loader/yaml_spec.rb939spec/graphql/resolvers/admin/analytics/usage_trends/measurements_resolver_spec.rb940spec/lib/gitlab/utils/delegator_override/validator_spec.rb941spec/graphql/mutations/alert_management/http_integration/destroy_spec.rb942spec/lib/gitlab/email/smime/signer_spec.rb943spec/services/protected_branches/update_service_spec.rb944spec/services/packages/create_temporary_package_service_spec.rb945spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/strategies/until_executing_spec.rb946spec/lib/gitlab/web_ide/config/entry/terminal_spec.rb947spec/workers/analytics/usage_trends/counter_job_worker_spec.rb948spec/services/alert_management/metric_images/upload_service_spec.rb949spec/services/alert_management/http_integrations/update_service_spec.rb950spec/models/u2f_registration_spec.rb951spec/workers/build_queue_worker_spec.rb952spec/lib/gitlab/search/query_spec.rb953spec/lib/bulk_imports/common/pipelines/labels_pipeline_spec.rb954spec/services/ci/job_artifacts/delete_service_spec.rb955spec/models/serverless/function_spec.rb956spec/lib/bitbucket_server/client_spec.rb957spec/services/alert_management/http_integrations/destroy_service_spec.rb958spec/models/integrations/asana_spec.rb959spec/graphql/resolvers/ci/jobs_resolver_spec.rb960spec/lib/gitlab/ci/config/entry/coverage_spec.rb961spec/lib/gitlab/internal_post_receive/response_spec.rb962spec/models/approval_spec.rb963spec/components/layouts/horizontal_section_component_spec.rb964spec/lib/gitlab/utils/link_header_parser_spec.rb965spec/graphql/mutations/clusters/agent_tokens/revoke_spec.rb966spec/services/clusters/aws/verify_provision_status_service_spec.rb967spec/graphql/mutations/alert_management/prometheus_integration/reset_token_spec.rb968spec/workers/bulk_imports/entity_worker_spec.rb969spec/lib/gitlab/quick_actions/spend_time_and_date_separator_spec.rb970spec/workers/projects/schedule_bulk_repository_shard_moves_worker_spec.rb971spec/lib/gitlab/ci/status/canceled_spec.rb972spec/workers/wait_for_cluster_creation_worker_spec.rb973spec/services/users/dismiss_group_callout_service_spec.rb974spec/lib/gitlab/ci/build/rules/rule/clause/if_spec.rb975spec/helpers/numbers_helper_spec.rb976spec/support_specs/helpers/stub_method_calls_spec.rb977spec/lib/gitlab/database/migrations/reestablished_connection_stack_spec.rb978spec/lib/sidebars/projects/menus/shimo_menu_spec.rb979spec/models/group_custom_attribute_spec.rb980spec/serializers/merge_request_current_user_entity_spec.rb981spec/models/packages/helm/file_metadatum_spec.rb982spec/models/concerns/editable_spec.rb983spec/finders/issuables/crm_organization_filter_spec.rb984spec/lib/json_web_token/rsa_token_spec.rb985spec/lib/gitlab/template/gitignore_template_spec.rb986spec/workers/projects/schedule_refresh_build_artifacts_size_statistics_worker_spec.rb987spec/lib/gitlab/dependency_linker/go_sum_linker_spec.rb988spec/lib/gitlab/graphql/loaders/batch_model_loader_spec.rb989spec/lib/gitlab/analytics/cycle_analytics/average_spec.rb990spec/views/dashboard/projects/index.html.haml_spec.rb991spec/tooling/rspec_flaky/flaky_examples_collection_spec.rb992spec/rubocop/cop/migration/sidekiq_queue_migrate_spec.rb993spec/lib/gitlab/instrumentation/rate_limiting_gates_spec.rb994spec/services/pages_domains/delete_service_spec.rb995spec/lib/gitlab/legacy_github_import/label_formatter_spec.rb996spec/support_specs/capybara_slow_finder_spec.rb997spec/lib/banzai/filter/plantuml_filter_spec.rb998spec/lib/gitlab/repository_archive_rate_limiter_spec.rb999spec/lib/gitlab/data_builder/alert_spec.rb1000spec/helpers/projects/google_cloud/cloudsql_helper_spec.rb1001spec/models/namespaces/sync_event_spec.rb1002spec/lib/gitlab/email/message/in_product_marketing/helper_spec.rb1003spec/lib/gitlab/kroki_spec.rb1004spec/graphql/types/clusters/agent_activity_event_type_spec.rb1005spec/services/ci/process_pipeline_service_spec.rb1006spec/workers/onboarding/progress_worker_spec.rb1007spec/views/admin/application_settings/_repository_storage.html.haml_spec.rb1008spec/lib/gitlab/view/presenter/factory_spec.rb1009spec/lib/gitlab/kubernetes/role_spec.rb1010spec/graphql/types/user_callout_type_spec.rb1011spec/support_specs/graphql/field_selection_spec.rb1012spec/lib/gitlab/utils/delegator_override/error_spec.rb1013spec/models/bulk_imports/export_upload_spec.rb1014spec/lib/gitlab/chat_spec.rb1015spec/models/bulk_imports/file_transfer_spec.rb1016spec/graphql/types/ci/config/group_type_spec.rb1017spec/lib/gitlab/ci/parsers/instrumentation_spec.rb1018spec/lib/sidebars/groups/menus/observability_menu_spec.rb1019spec/lib/bulk_imports/projects/graphql/get_project_query_spec.rb1020spec/lib/gitlab/middleware/webhook_recursion_detection_spec.rb1021spec/graphql/types/namespace_type_spec.rb1022spec/lib/gitlab/ci/reports/test_failure_history_spec.rb1023spec/lib/gitlab/import_export/duration_measuring_spec.rb1024spec/models/project_daily_statistic_spec.rb1025spec/models/ci/trigger_request_spec.rb1026spec/rubocop/cop/gitlab/bulk_insert_spec.rb1027spec/validators/named_ecdsa_key_validator_spec.rb1028spec/rubocop/cop/ban_catch_throw_spec.rb1029spec/lib/gitlab/git/patches/collection_spec.rb1030spec/initializers/rails_asset_host_spec.rb1031spec/lib/gitlab/diff/inline_diff_spec.rb1032spec/lib/gitlab/ci/config/yaml/tags/resolver_spec.rb1033spec/graphql/types/packages/conan/metadatum_type_spec.rb1034spec/graphql/types/project_member_relation_enum_spec.rb1035spec/lib/gitlab/usage/metrics/instrumentations/collected_data_categories_metric_spec.rb1036spec/workers/todos_destroyer/destroyed_designs_worker_spec.rb1037spec/graphql/types/ci/project_variable_connection_type_spec.rb1038spec/lib/gitlab/saas_spec.rb1039spec/tooling/merge_request_spec.rb1040spec/lib/gitlab/slash_commands/application_help_spec.rb1041spec/graphql/types/packages/package_dependency_link_type_spec.rb1042spec/serializers/evidences/project_entity_spec.rb1043spec/graphql/types/container_repository_status_enum_spec.rb1044Filter specs:1045Running specs:1046Running all node tests without filter1047spec/models/merge_request_spec.rb1048spec/lib/gitlab/background_migration/backfill_snippet_repositories_spec.rb1049spec/services/users/migrate_to_ghost_user_service_spec.rb1050spec/tasks/gitlab/workhorse_rake_spec.rb1051spec/services/system_notes/issuables_service_spec.rb1052spec/services/projects/update_service_spec.rb1053spec/models/ci/build_trace_chunk_spec.rb1054spec/services/draft_notes/publish_service_spec.rb1055spec/helpers/visibility_level_helper_spec.rb1056spec/tooling/danger/project_helper_spec.rb1057spec/models/concerns/milestoneish_spec.rb1058spec/models/hooks/web_hook_spec.rb1059spec/services/design_management/copy_design_collection/copy_service_spec.rb1060spec/services/snippets/create_service_spec.rb1061spec/services/merge_requests/add_todo_when_build_fails_service_spec.rb1062spec/lib/banzai/filter/references/snippet_reference_filter_spec.rb1063spec/lib/gitlab/import_export/references_configuration_spec.rb1064spec/policies/group_member_policy_spec.rb1065spec/services/lfs/file_transformer_spec.rb1066spec/services/projects/lfs_pointers/lfs_download_service_spec.rb1067spec/lib/gitlab/ci/config/entry/job_spec.rb1068spec/services/merge_requests/request_review_service_spec.rb1069spec/services/serverless/associate_domain_service_spec.rb1070spec/lib/gitlab/error_tracking/error_repository/open_api_strategy_spec.rb1071spec/serializers/pipeline_details_entity_spec.rb1072spec/services/issue_links/list_service_spec.rb1073spec/graphql/resolvers/timelog_resolver_spec.rb1074spec/services/security/merge_reports_service_spec.rb1075spec/lib/gitlab/background_migration/remove_occurrence_pipelines_and_duplicate_vulnerabilities_findings_spec.rb1076spec/services/wiki_pages/update_service_spec.rb1077spec/models/concerns/routable_spec.rb1078spec/services/projects/in_product_marketing_campaign_emails_service_spec.rb1079spec/lib/gitlab/slash_commands/deploy_spec.rb1080spec/services/draft_notes/create_service_spec.rb1081spec/models/hooks/project_hook_spec.rb1082spec/services/deployments/older_deployments_drop_service_spec.rb1083spec/lib/gitlab/import_export/after_export_strategies/base_after_export_strategy_spec.rb1084spec/models/ci/trigger_spec.rb1085spec/lib/gitlab/database/load_balancing/host_spec.rb1086spec/views/projects/merge_requests/_commits.html.haml_spec.rb1087spec/services/projects/open_issues_count_service_spec.rb1088spec/policies/award_emoji_policy_spec.rb1089spec/services/incident_management/timeline_events/destroy_service_spec.rb1090spec/services/clusters/gcp/provision_service_spec.rb1091spec/services/work_items/create_from_task_service_spec.rb1092spec/finders/access_requests_finder_spec.rb1093spec/models/integrations/base_chat_notification_spec.rb1094spec/helpers/clusters_helper_spec.rb1095spec/services/ci/pipeline_artifacts/coverage_report_service_spec.rb1096spec/models/bulk_imports/entity_spec.rb1097spec/finders/packages/conan/package_finder_spec.rb1098spec/services/work_items/create_service_spec.rb1099spec/lib/gitlab/ci/pipeline/seed/deployment_spec.rb1100spec/graphql/mutations/alert_management/alerts/set_assignees_spec.rb1101spec/lib/gitlab/web_hooks/recursion_detection_spec.rb1102spec/lib/gitlab/diff/highlight_cache_spec.rb1103spec/models/projects/topic_spec.rb1104spec/models/board_project_recent_visit_spec.rb1105spec/serializers/cluster_application_entity_spec.rb1106spec/services/deployments/create_for_build_service_spec.rb1107spec/models/ci/build_trace_chunks/database_spec.rb1108spec/services/notification_recipients/builder/default_spec.rb1109spec/finders/ci/jobs_finder_spec.rb1110spec/models/oauth_access_token_spec.rb1111spec/finders/freeze_periods_finder_spec.rb1112spec/lib/gitlab/graphql/deprecation_spec.rb1113spec/models/label_link_spec.rb1114spec/lib/gitlab/database/migrations/observers/transaction_duration_spec.rb1115spec/lib/gitlab/omniauth_initializer_spec.rb1116spec/services/admin/set_feature_flag_service_spec.rb1117spec/support_specs/helpers/html_escaped_helpers_spec.rb1118spec/tooling/lib/tooling/kubernetes_client_spec.rb1119spec/services/web_hooks/destroy_service_spec.rb1120spec/lib/gitlab/repository_hash_cache_spec.rb1121spec/lib/gitlab/ci/matching/runner_matcher_spec.rb1122spec/lib/backup/database_spec.rb1123spec/lib/gitlab/database/load_balancing/sticking_spec.rb1124spec/services/packages/create_dependency_service_spec.rb1125spec/lib/gitlab/ci/config/entry/trigger_spec.rb1126spec/models/integrations/chat_message/deployment_message_spec.rb1127spec/services/projects/record_target_platforms_service_spec.rb1128spec/helpers/whats_new_helper_spec.rb1129spec/serializers/stage_serializer_spec.rb1130spec/graphql/graphql_triggers_spec.rb1131spec/lib/gitlab/ci/config/entry/include_spec.rb1132spec/graphql/mutations/security/ci_configuration/configure_sast_spec.rb1133spec/lib/bulk_imports/clients/http_spec.rb1134spec/workers/incident_management/add_severity_system_note_worker_spec.rb1135spec/policies/custom_emoji_policy_spec.rb1136spec/lib/gitlab/ci/runner_instructions_spec.rb1137spec/models/analytics/usage_trends/measurement_spec.rb1138spec/views/projects/issues/_service_desk_info_content.html.haml_spec.rbKnapsack report generator started!1139Run options: exclude {:quarantine=>true, :level=>"migration"}1140Test environment set up in 1.018613792 seconds1141MergeRequest1142 associations1143 is expected to belong to target_project class_name => Project required: false1144 is expected to belong to source_project class_name => Project required: false1145 is expected to belong to merge_user class_name => User required: false1146 is expected to have many assignees through merge_request_assignees1147 is expected to have many reviewers through merge_request_reviewers1148 is expected to have many merge_request_diffs1149 is expected to have many user_mentions class_name => MergeRequestUserMention1150 is expected to belong to milestone required: false1151 is expected to belong to iteration required: false1152 is expected to have many resource_milestone_events1153 is expected to have many resource_state_events1154 is expected to have many draft_notes1155 is expected to have many reviews inverse_of => merge_request1156 is expected to have one cleanup_schedule inverse_of => merge_request1157 is expected to have many created_environments class_name => Environment inverse_of => merge_request1158 for forks1159 does not load another project due to inverse relationship1160 finds the associated merge request1161 .from_and_to_forks1162 returns only MRs from and to forks (with no internal MRs)1163 .order_merged_at_asc1164 returns MRs ordered by merged_at ascending1165 .order_merged_at_desc1166 returns MRs ordered by merged_at descending1167 .order_closed_at_asc1168 returns MRs ordered by closed_at ascending1169 .order_closed_at_desc1170 returns MRs ordered by closed_at descending1171 .with_jira_issue_keys1172 is expected to contain exactly #<MergeRequest id:15 namespace1/project1!1> and #<MergeRequest id:16 namespace1/project1!2>1173 is expected not to include #<MergeRequest id:17 namespace1/project1!3>1174 scopes1175 .review_requested1176 returns MRs that have any review requests1177 .no_review_requested1178 returns MRs that have no review requests1179 .review_requested_to1180 returns MRs that the user has been requested to review1181 .no_review_requested_to1182 returns MRs that the user has not been requested to review1183 .drafts1184 returns MRs where draft == true1185 #squash?1186 disabled in database1187 is expected to be falsy1188 enabled in database1189 is expected to be truthy1190 #default_squash_commit_message1191 returns the merge request title1192 uses template from target project1193 modules1194 is expected to includes the Issuable module1195 is expected to includes the Referable module1196 is expected to includes the Sortable module1197 is expected to includes the Taskable module1198 is expected to includes the MilestoneEventable module1199 is expected to includes the StateEventable module1200 behaves like AtomicInternalId1201 .has_internal_id1202 Module inclusion1203 is expected to includes the AtomicInternalId module1204 Validation1205 when presence validation is required1206 when creating an object1207 raises an error if the internal id is blank1208 when updating an object1209 raises an error if the internal id is blank1210 when presence validation is not required1211 when creating an object1212 does not raise an error if the internal id is blank (PENDING: No reason given)1213 when updating an object1214 does not raise an error if the internal id is blank (PENDING: No reason given)1215 Creating an instance1216 saves a new instance properly1217 internal id generation1218 calls InternalId.generate_next and sets internal id attribute1219 does not overwrite an existing internal id1220 when the instance has an internal ID set1221 calls InternalId.update_last_value and sets the `last_value` to that of the instance1222 unsetting the instance internal id on rollback1223 when the internal id has been changed1224 when the internal id is automatically set1225 clears it on the instance1226 when the internal id is manually set1227 does not clear it on the instance1228 when the internal id has not been changed1229 preserves the value on the instance1230 supply of internal ids1231 provides a persistent supply of IID values, sensitive to the current state1232 #reset_scope_internal_id_attribute1233 rewinds the allocated IID1234 allocates the same IID1235 validation1236 is expected to validate that :target_branch cannot be empty/falsy1237 is expected to validate that :source_branch cannot be empty/falsy1238 Validation of merge user with Merge When Pipeline Succeeds1239 allows user to be nil when the feature is disabled1240 is invalid without merge user1241 is valid with merge user1242 for branch1243 branch_name: "foo", valid: true1244 validates source_branch1245 validates target_branch1246 branch_name: "foo:bar", valid: false1247 validates source_branch1248 validates target_branch1249 branch_name: "+foo:bar", valid: false1250 validates source_branch1251 validates target_branch1252 branch_name: "foo bar", valid: false1253 validates source_branch1254 validates target_branch1255 branch_name: "-foo", valid: false1256 validates source_branch1257 validates target_branch1258 branch_name: "HEAD", valid: true1259 validates source_branch1260 validates target_branch1261 branch_name: "refs/heads/master", valid: true1262 validates source_branch1263 validates target_branch1264 for forks1265 allows merge requests for sibling-forks1266 callbacks1267 #ensure_merge_request_diff1268 when async_merge_request_diff_creation is true1269 does not create a merge_request_diff after create1270 when async_merge_request_diff_creation is false1271 creates merge_request_diff after create1272 #ensure_merge_request_metrics1273 creates metrics after saving1274 does not duplicate metrics for a merge request1275 does not create duplicated metrics records when MR is concurrently updated1276 syncs the `target_project_id` to the metrics record1277 #set_draft_status1278 MR is a draft1279 sets draft to true1280 MR is not a draft1281 sets draft to true1282 respond to1283 is expected to respond to #unchecked?1284 is expected to respond to #checking?1285 is expected to respond to #can_be_merged?1286 is expected to respond to #cannot_be_merged?1287 is expected to respond to #merge_params1288 is expected to respond to #merge_when_pipeline_succeeds1289 .by_commit_sha1290 with sha contained in latest merge request diff1291 returns merge requests1292 with sha contained not in latest merge request diff1293 returns empty requests1294 with sha not contained in1295 returns empty result1296 .by_merge_commit_sha1297 returns merge requests that match the given merge commit1298 .by_squash_commit_sha1299 returns merge requests that match the given squash commit1300 .by_merge_or_squash_commit_sha1301 returns merge requests that match the given squash and merge commits1302 .join_metrics1303 when a no target_project_id is available1304 moves target_project_id condition to the merge request metrics1305 when a target_project_id is present in the where conditions1306 moves target_project_id condition to the merge request metrics1307 .by_related_commit_sha1308 when commit is a squash commit1309 is expected to eq [#<MergeRequest id:48 namespace1/project1!1>]1310 when commit is a part of the merge request1311 is expected to eq [#<MergeRequest id:49 namespace1/project1!1>]1312 when commit is a merge commit1313 is expected to eq [#<MergeRequest id:50 namespace1/project1!1>]1314 when commit is not found1315 is expected to be empty1316 when commit is part of the merge request and a squash commit at the same time1317 is expected to eq [#<MergeRequest id:51 namespace1/project1!1>]1318 .in_projects1319 returns the merge requests for a set of projects1320 .set_latest_merge_request_diff_ids!1321 sets IDs for merge requests, whether they are already set or not1322 .recent_target_branches1323 returns target branches sort by updated at desc1324 .sort_by_attribute1325 merged_at1326 sorts asc1327 sorts desc1328 closed_at1329 sorts asc1330 sorts desc1331 sorts asc when its closed_at1332 title1333 sorts asc1334 sorts desc1335 time to merge calculations1336 .total_time_to_merge1337 returns the sum of the time to merge for all merged MRs1338 when merged_at is earlier than created_at1339 returns nil1340 #target_branch_sha1341 returns memoized value1342 when the target branch does not exist1343 returns nil1344 #card_attributes1345 includes the author name1346 includes the assignees name1347 #assignee_or_author?1348 returns true for a user that is assigned to a merge request1349 returns true for a user that is the author of a merge request1350 returns false for a user that is not the assignee or author1351 #visible_closing_issues_for1352 shows only allowed issues to guest1353 shows only allowed issues to developer1354 when external issue tracker is enabled1355 calls non #closes_issues to retrieve data1356 #cache_merge_request_closes_issues!1357 caches closed issues1358 does not cache closed issues when merge request is closed1359 does not cache closed issues when merge request is merged1360 when both internal and external issue trackers are enabled1361 does not cache issues from external trackers1362 caches an internal issue1363 when only external issue tracker enabled1364 does not cache issues from external trackers1365 does not cache an internal issue1366 caches issues from another project with issues enabled1367 #source_branch_sha1368 returns memoized value1369 with diffs1370 returns the sha of the source branch last commit1371 without diffs1372 returns the sha of the source branch last commit1373 when there is a tag name matching the branch name1374 returns the sha of the source branch last commit1375 when the merge request is being created1376 returns nil1377 #to_reference1378 returns a String reference to the object1379 supports a cross-project reference1380 returns a String reference with the full path1381 #raw_diffs1382 when there are MR diffs1383 delegates to the MR diffs1384 when there are no MR diffs1385 delegates to the compare object1386 #diffs1387 when there are MR diffs1388 delegates to the MR diffs1389 when there are no MR diffs1390 delegates to the compare object, setting expanded: true1391 #note_positions_for_paths1392 returns a Gitlab::Diff::PositionCollection1393 within all diff files1394 returns correct positions1395 within specific diff file1396 returns correct positions1397 within no diff files1398 returns no positions1399 when user is given1400 returns notes and draft notes positions1401 when user is not given1402 returns notes positions1403 #discussions_diffs1404 with commit diff note1405 behaves like discussions diffs collection1406 initializes Gitlab::DiscussionsDiff::FileCollection with correct data1407 eager loads relations1408 with merge request diff note1409 behaves like discussions diffs collection1410 initializes Gitlab::DiscussionsDiff::FileCollection with correct data1411 eager loads relations1412 #diff_size1413 when there are MR diffs1414 returns the correct count1415 returns the correct overflow count1416 does not perform highlighting1417 when there are no MR diffs1418 returns the correct count1419 returns the correct overflow count1420 does not perform highlighting1421 #modified_paths1422 when past_merge_request_diff is specified1423 returns affected file paths from specified past_merge_request_diff1424 when compare is present1425 and diff_stats are not present1426 returns affected file paths from compare1427 and diff_stats are present1428 returns affected file paths from compare1429 when no arguments provided1430 returns affected file paths for merge_request_diff1431 #new_paths1432 returns new path of changed files1433 #related_notes1434 includes notes for commits1435 includes notes for commits from target project as well1436 excludes system notes for commits1437 #for_fork?1438 returns true if the merge request is for a fork1439 returns false if is not for a fork1440 #closes_issues1441 accesses the set of issues that will be closed on acceptance1442 only lists issues as to be closed if it targets the default branch1443 ignores referenced issues when auto-close is disabled1444 #issues_mentioned_but_not_closing1445 detects issues mentioned in description but not closed1446 when the project has an external issue tracker1447 detects issues mentioned in description but not closed1448 #draft?1449 detects the 'draft:' prefix1450 detects the 'Draft: ' prefix1451 detects the '[Draft]' prefix1452 detects the '[DRAFT] ' prefix1453 returns false1454 when 'WIP:' prefixes the title1455 when 'WIP: ' prefixes the title1456 when '[WIP]' prefixes the title1457 when '[WIP] ' prefixes the title1458 when ' [WIP] WIP: [WIP] WIP:' prefixes the title1459 when 'WIP ' prefixes the title1460 when '(WIP)' prefixes the title1461 when 'draft' prefixes the title1462 when 'Draft' prefixes the title1463 when 'Draft -' prefixes the title1464 when 'draft - ' prefixes the title1465 when 'Draft ' prefixes the title1466 when 'draft ' prefixes the title1467 when merge request title is simply 'WIP'1468 when WIP is in the middle of the title1469 when WIP is at the end of the title1470 when title contains words starting with WIP1471 when title contains words containing with WIP1472 when merge request title is simply 'Draft'1473 when Draft is in the middle of the title1474 when Draft is at the end of the title1475 when title contains words starting with Draft1476 when title contains words containing with Draft1477 when Draft: in the middle of the title1478 when the title does not contain draft1479 is aliased to #draft?1480 #draftless_title1481 removes a 'draft:' prefix1482 is satisfies the #work_in_progress? method1483 removes a 'Draft: ' prefix1484 is satisfies the #work_in_progress? method1485 removes a '[Draft]' prefix1486 is satisfies the #work_in_progress? method1487 removes a '[DRAFT] ' prefix1488 is satisfies the #work_in_progress? method1489 doesn't remove a 'WIP:' prefix1490 doesn't remove a 'WIP: ' prefix1491 doesn't remove a '[WIP]' prefix1492 doesn't remove a '[WIP] ' prefix1493 doesn't remove a '[WIP] WIP: [WIP] WIP:' prefix1494 removes only draft prefix from the MR title1495 does not remove WIP in the middle of the title1496 does not remove Draft in the middle of the title1497 does not remove WIP at the end of the title1498 does not remove Draft at the end of the title1499 #draft_title1500 adds the Draft: prefix to the title1501 does not add the Draft: prefix multiple times1502 is satisfies the #work_in_progress? method1503 #permits_force_push?1504 when source branch is not protected1505 is expected to be truthy1506 when source branch is protected1507 when force push is not allowed1508 is expected to be falsey1509 when force push is allowed1510 is expected to be truthy1511 #can_remove_source_branch?1512 can't be removed when its a protected branch1513 can't be removed because source project has been deleted1514 can't remove a root ref1515 is unable to remove the source branch for a project the user cannot push to1516 can be removed if the last commit is the head of the source branch1517 cannot be removed if the last commit is not also the head of the source branch1518 #source_branch_exists?1519 when the source project is set1520 returns true when the branch exists1521 when the source project is not set1522 returns false1523 #default_merge_commit_message1524 includes merge information as the title1525 includes its title in the body1526 includes its closed issues in the body1527 includes its reference in the body1528 excludes multiple linebreak runs when description is blank1529 includes its description in the body1530 does not includes its description in the body1531 uses template from target project1532 ignores template when include_description is true1533 #auto_merge_strategy1534 is expected to eq "merge_when_pipeline_succeeds"1535 when auto merge is disabled1536 is expected to be nil1537 #committers1538 returns all the committers of every commit in the merge request1539 returns an empty array if no committer is associated with a user1540 #diverged_commits_count1541 when the target branch does not exist anymore1542 does not crash1543 returns 01544 diverged on same repository1545 counts commits that are on target branch but not on source branch1546 diverged on fork1547 counts commits that are on target branch but not on source branch1548 rebased on fork1549 counts commits that are on target branch but not on source branch1550 caching1551 caches the output1552 invalidates the cache when the source sha changes1553 invalidates the cache when the target sha changes1554 behaves like an editable mentionable1555 creates new cross-reference notes when the mentionable text is edited1556 behaves like a mentionable1557 generates a descriptive back-reference1558 extracts references from its reference property1559 creates cross-reference notes1560 when there are cached markdown fields1561 sends in cached markdown fields when appropriate1562 when there are cached markdown fields1563 refreshes markdown cache if necessary1564 when the markdown cache is stale1565 persists the refreshed cache so that it does not have to be refreshed every time1566 behaves like a Taskable1567 with multiple tasks1568 returns the correct task status1569 #tasks?1570 returns true when object has tasks1571 returns false when object has no tasks1572 with nested tasks1573 returns the correct task status1574 with an incomplete task1575 returns the correct task status1576 with tasks that are not formatted correctly1577 returns the correct task status1578 with a complete task1579 returns the correct task status1580 with tasks in blockquotes1581 returns the correct task status1582 #commit_shas1583 persisted merge request1584 with a limit1585 returns a limited number of commit shas1586 without a limit1587 returns all commit shas of the merge request diff1588 new merge request1589 returns diff_head_sha as an array1590 compare commits1591 without a limit1592 returns all shas of compare commits1593 with a limit1594 returns a limited number of shas1595 head pipeline1596 #head_pipeline1597 returns nil for MR without head_pipeline_id1598 when the source project does not exist1599 returns nil1600 #actual_head_pipeline1601 returns nil for MR with old pipeline1602 returns the pipeline for MR with recent pipeline1603 returns the pipeline for MR with recent merge request pipeline1604 returns nil when source project does not exist1605 #merge_pipeline1606 returns nil when not merged1607 when the MR is merged1608 and there is a merge commit1609 returns the pipeline associated with that merge request1610 and there is no merge commit, but there is a diff head1611 returns the pipeline associated with that merge request1612 and there is no merge commit, but there is a squash commit1613 returns the pipeline associated with that merge request1614 #has_ci?1615 has ci1616 returns true if MR has head_pipeline_id and commits1617 returns true if MR has any pipeline and commits1618 returns true if MR has CI integration and commits1619 has no ci1620 returns false if MR has no CI integration nor pipeline, and no commits1621 #update_head_pipeline1622 when there is a pipeline with the diff head sha1623 updates the head pipeline1624 when merge request has already had head pipeline1625 when failed to find an actual head pipeline1626 does not update the current head pipeline1627 when detached merge request pipeline is run on head ref of the merge request1628 sets the head ref of the merge request to the pipeline ref1629 updates correctly even though the target branch name of the merge request is different from the pipeline ref1630 when sha is not HEAD of the source branch1631 does not update head pipeline1632 when there are no pipelines with the diff head sha1633 does not update the head pipeline1634 #has_test_reports?1635 when head pipeline has test reports1636 is expected to be truthy1637 when head pipeline does not have test reports1638 is expected to be falsey1639 #has_accessibility_reports?1640 when head pipeline has an accessibility reports1641 is expected to be truthy1642 when head pipeline does not have accessibility reports1643 is expected to be falsey1644 #has_coverage_reports?1645 when head pipeline has coverage reports1646 is expected to be truthy1647 when head pipeline does not have coverage reports1648 is expected to be falsey1649 #has_codequality_mr_diff_report?1650 when head pipeline has codequality mr diff report1651 is expected to be truthy1652 when head pipeline does not have codeqquality mr diff report1653 is expected to be falsey1654 #has_codequality_reports?1655 when head pipeline has a codequality report1656 is expected to be truthy1657 when head pipeline does not have a codequality report1658 is expected to be falsey1659 #has_terraform_reports?1660 when head pipeline has terraform reports1661 returns true1662 when head pipeline does not have terraform reports1663 returns false1664 #has_sast_reports?1665 when head pipeline has sast reports1666 is expected to be truthy1667 when head pipeline does not have sast reports1668 is expected to be falsey1669 #has_secret_detection_reports?1670 when head pipeline has secret detection reports1671 is expected to be truthy1672 when head pipeline does not have secrets detection reports1673 is expected to be falsey1674 #calculate_reactive_cache1675 when given an unknown service class name1676 raises a NameError exception1677 when given a known service class name1678 does not raises a NameError exception1679 #find_exposed_artifacts1680 when head pipeline has exposed artifacts1681 when reactive cache worker is parsing results asynchronously1682 returns status1683 when reactive cache worker is inline1684 returns status and data1685 when an error occurrs1686 returns an error message1687 when cached results is not latest1688 raises and InvalidateReactiveCache error1689 #find_coverage_reports1690 when head pipeline has coverage reports1691 when reactive cache worker is parsing results asynchronously1692 returns status1693 when reactive cache worker is inline1694 returns status and data1695 when an error occurrs1696 returns an error message1697 when cached results is not latest1698 raises and InvalidateReactiveCache error1699 #find_codequality_mr_diff_reports1700 when head pipeline has coverage reports1701 when reactive cache worker is parsing results asynchronously1702 returns status1703 when reactive cache worker is inline1704 returns status and data1705 when an error occurrs1706 returns an error message1707 when cached results is not latest1708 raises and InvalidateReactiveCache error1709 #compare_test_reports1710 when head pipeline has test reports1711 when reactive cache worker is parsing asynchronously1712 returns status1713 when reactive cache worker is inline1714 returns status and data1715 when cached results is not latest1716 raises and InvalidateReactiveCache error1717 when head pipeline does not have test reports1718 returns status and error message1719 #compare_accessibility_reports1720 when head pipeline has accessibility reports1721 when reactive cache worker is parsing results asynchronously1722 returns parsing status1723 when reactive cache worker is inline1724 returns parsed status1725 when an error occurrs1726 returns an error status1727 when cached result is not latest1728 raises an InvalidateReactiveCache error1729 #compare_codequality_reports1730 when head pipeline has codequality report1731 when reactive cache worker is parsing results asynchronously1732 returns parsing status1733 when reactive cache worker is inline1734 returns parsed status1735 when an error occurrs1736 returns an error status1737 when cached result is not latest1738 raises an InvalidateReactiveCache error1739 #all_commit_shas1740 when merge request is persisted1741 with a completely different branch1742 behaves like returning all SHA1743 returns all SHAs from all merge_request_diffs1744 with a branch having no difference1745 behaves like returning all SHA1746 returns all SHAs from all merge_request_diffs1747 when merge request is not persisted1748 when compare commits are set in the service1749 returns commits from compare commits temporary data1750 when compare commits are not set in the service1751 returns array with diff head sha element only1752 #short_merge_commit_sha1753 returns short id when there is a merge_commit_sha1754 returns nil when there is no merge_commit_sha1755 #merged_commit_sha1756 returns nil when not merged1757 when the MR is merged1758 returns merge_commit_sha when there is a merge_commit_sha1759 returns squash_commit_sha when there is a squash_commit_sha1760 returns diff_head_sha when there are no merge_commit_sha and squash_commit_sha1761 #short_merged_commit_sha1762 when merged_commit_sha is nil1763 returns nil1764 when merged_commit_sha is present1765 returns shortened merged_commit_sha1766 #can_be_reverted?1767 when there is no merge_commit for the MR1768 returns false1769 when the MR has been merged1770 when there is no revert commit1771 returns true1772 when there is no merged_at for the MR1773 returns true1774 when there is a revert commit1775 but merged at timestamp cannot be found1776 returns false1777 when the revert commit is mentioned in a note after the MR was merged1778 returns false1779 when there is no merged_at for the MR1780 returns false1781 when the revert commit is mentioned in a note just before the MR was merged1782 returns false1783 when the revert commit is mentioned in a note long before the MR was merged1784 returns true1785 #merged_at1786 when MR is not merged1787 returns nil1788 when metrics has merged_at data1789 returns metrics merged_at1790 when merged event is persisted, but no metrics merged_at is persisted1791 returns merged event creation date1792 when no metrics or merge event exists1793 when resource event for the merge exists1794 returns the resource event creation date1795 when system note for the merge exists1796 returns the merging note creation date1797 #participants1798 includes the merge request author1799 includes the authors of the notes1800 cached counts1801 updates when assignees change1802 #merge_async1803 enqueues MergeWorker job and updates merge_jid1804 #rebase_async1805 atomically enqueues a RebaseWorker job and updates rebase_jid1806 refuses to enqueue a job if a rebase is in progress1807 refuses to enqueue a job if the MR is not open1808 raises ActiveRecord::LockWaitTimeout after 6 tries1809 #mergeable?1810 returns false if #mergeable_state? is false1811 return true if #mergeable_state? is true and the MR #can_be_merged? is true1812 return true if #mergeable_state? is true and the MR #can_be_merged? is false1813 with skip_ci_check option1814 mergeable_ci_state: false, skip_ci_check: false, expected_mergeable: false1815 overrides mergeable_ci_state?1816 mergeable_ci_state: false, skip_ci_check: true, expected_mergeable: true1817 overrides mergeable_ci_state?1818 mergeable_ci_state: true, skip_ci_check: false, expected_mergeable: true1819 overrides mergeable_ci_state?1820 mergeable_ci_state: true, skip_ci_check: true, expected_mergeable: true1821 overrides mergeable_ci_state?1822 with skip_discussions_check option1823 mergeable_discussions_state: false, skip_discussions_check: false, expected_mergeable: false1824 overrides mergeable_discussions_state?1825 mergeable_discussions_state: false, skip_discussions_check: true, expected_mergeable: true1826 overrides mergeable_discussions_state?1827 mergeable_discussions_state: true, skip_discussions_check: false, expected_mergeable: true1828 overrides mergeable_discussions_state?1829 mergeable_discussions_state: true, skip_discussions_check: true, expected_mergeable: true1830 overrides mergeable_discussions_state?1831 #check_mergeability1832 if the merge status is unchecked1833 behaves like method that executes MergeabilityCheckService1834 executes MergeabilityCheckService1835 when async is true1836 executes MergeabilityCheckService asynchronously1837 if the merge status is checking1838 behaves like method that executes MergeabilityCheckService1839 executes MergeabilityCheckService1840 when async is true1841 executes MergeabilityCheckService asynchronously1842 if the merge status is checked1843 does not call MergeabilityCheckService1844 #mergeable_state?1845 behaves like for mergeable_state1846 checks if merge request can be merged1847 when not open1848 returns false1849 when working in progress1850 returns false1851 when broken1852 returns false1853 when failed1854 when #mergeable_ci_state? is false1855 returns false1856 returns true when skipping ci check1857 when #mergeable_discussions_state? is false1858 returns false1859 returns true when skipping discussions check1860 when merge state caching is off1861 behaves like for mergeable_state1862 checks if merge request can be merged1863 when not open1864 returns false1865 when working in progress1866 returns false1867 when broken1868 returns false1869 when failed1870 when #mergeable_ci_state? is false1871 returns false1872 returns true when skipping ci check1873 when #mergeable_discussions_state? is false1874 returns false1875 returns true when skipping discussions check1876 #public_merge_status1877 status: "cannot_be_merged_rechecking", public_status: "checking"1878 is expected to eq "checking"1879 status: "preparing", public_status: "checking"1880 is expected to eq "checking"1881 status: "checking", public_status: "checking"1882 is expected to eq "checking"1883 status: "cannot_be_merged", public_status: "cannot_be_merged"1884 is expected to eq "cannot_be_merged"1885 #head_pipeline_active?1886 when project lacks a head_pipeline relation1887 returns false1888 when project has a head_pipeline relation1889 accesses the value from the head_pipeline1890 #actual_head_pipeline_success?1891 when project lacks an actual_head_pipeline relation1892 returns false1893 when project has a actual_head_pipeline relation1894 accesses the value from the actual_head_pipeline1895 #actual_head_pipeline_active?1896 when project lacks an actual_head_pipeline relation1897 returns false1898 when project has a actual_head_pipeline relation1899 accesses the value from the actual_head_pipeline1900 #mergeable_ci_state?1901 when it is only allowed to merge when build is green1902 and a failed pipeline is associated1903 is expected to be falsey1904 and a successful pipeline is associated1905 is expected to be truthy1906 and a skipped pipeline is associated1907 is expected to be falsey1908 when no pipeline is associated1909 is expected to be falsey1910 when it is only allowed to merge when build is green or skipped1911 and a failed pipeline is associated1912 is expected to be falsey1913 and a successful pipeline is associated1914 is expected to be truthy1915 and a skipped pipeline is associated1916 is expected to be truthy1917 when no pipeline is associated1918 is expected to be falsey1919 when merges are not restricted to green builds1920 and a failed pipeline is associated1921 is expected to be truthy1922 when no pipeline is associated1923 is expected to be truthy1924 and a skipped pipeline is associated1925 is expected to be truthy1926 when no pipeline is associated1927 is expected to be truthy1928 #mergeable_discussions_state?1929 when project.only_allow_merge_if_all_discussions_are_resolved == true1930 with all discussions resolved1931 returns true1932 with unresolved discussions1933 returns false1934 with no discussions1935 returns true1936 when project.only_allow_merge_if_all_discussions_are_resolved == false1937 with unresolved discussions1938 returns true1939 #reload_diff1940 calls MergeRequests::ReloadDiffsService#execute with correct params1941 when using the after_update hook to update1942 when the branches are updated1943 uses the new heads to generate the diff1944 #update_diff_discussion_positions1945 updates diff discussion positions1946 does not call the resolve method1947 when resolve_outdated_diff_discussions is set1948 when the active discussion is resolved in the update1949 calls MergeRequests::ResolvedDiscussionNotificationService1950 when the active discussion does not have resolved in the update1951 does not call the resolve method1952 when the active discussion was already resolved1953 does not call the resolve method1954 #branch_merge_base_commit1955 source and target branch exist1956 is expected to eq "ae73cb07c9eeaf35924a10f713b364d32b2dd34f"1957 is expected to be a kind of Commit1958 when the target branch does not exist1959 returns nil1960 #diff_refs1961 with diffs1962 does not touch the repository1963 returns expected diff_refs1964 when importing1965 returns MR diff_refs1966 #source_project_missing?1967 when the fork exists1968 is expected to be falsey1969 when the source project is the same as the target project1970 is expected to be falsey1971 when the fork does not exist1972 returns true1973 #merge_ongoing?1974 returns true when the merge request is locked1975 returns true when merge_id, MR is not merged and it has no running job1976 returns false when merge_jid is nil1977 returns false if MR is merged1978 returns false if there is no merge job running1979 #closed_or_merged_without_fork?1980 when the merge request is closed1981 returns false if the fork exist1982 returns true if the fork does not exist1983 when the merge request was merged1984 returns false if the fork exist1985 returns true if the fork does not exist1986 when the merge request is open1987 returns false1988 #reopenable?1989 when the merge request is closed1990 returns true1991 forked project1992 returns false if unforked1993 returns false if the source project is deleted1994 returns false if the merge request is merged1995 when the merge request is opened1996 returns false1997 #pipeline_coverage_delta1998 when both source and target branches have coverage information1999 returns the appropriate coverage delta2000 when target branch does not have coverage information2001 returns nil2002 when source branch does not have coverage information2003 returns nil for coverage_delta2004 neither source nor target branch has coverage information2005 returns nil for coverage_delta2006 #use_merge_base_pipeline_for_comparison?2007 when service class is Ci::CompareMetricsReportsService2008 is expected to be truthy2009 when service class is Ci::CompareCodequalityReportsService2010 is expected to be truthy2011 when service class is different2012 is expected to be falsey2013 #comparison_base_pipeline2014 when service class is Ci::CompareCodequalityReportsService2015 when merge request has a merge request pipeline2016 returns the merge_base_pipeline2017 when merge does not have a merge request pipeline2018 returns the base_pipeline2019 when service_class is different2020 returns the base_pipeline2021 #base_pipeline2022 returns latest pipeline for the target branch2023 #merge_base_pipeline2024 returns a pipeline pointing to a commit on the target ref2025 #has_commits?2026 returns true when merge request diff has commits2027 when commits_count is nil2028 returns false2029 #has_no_commits?2030 returns true when merge request diff has 0 commits2031 #merge_request_diff_for2032 runs a single query on the initial call, and none afterwards2033 with diff refs2034 returns the diffs2035 with a commit SHA2036 returns the diffs2037 #version_params_for2038 when the diff refs are for an older merge request version2039 returns the diff ID for the version to show2040 when the diff refs are for a comparison between merge request versions2041 returns the diff ID and start sha of the versions to compare2042 when the diff refs are not for a merge request version2043 returns nil2044 #fetch_ref!2045 fetches the ref correctly2046 #eager_fetch_ref!2047 fetches the ref correctly2048 only fetches the ref once after saved2049 removing a merge request2050 refreshes the number of open merge requests of the target project2051 behaves like throttled touch2052 #touch2053 updates the updated_at timestamp2054 updates the object at most once per minute2055 state machine transitions2056 #unlock_mr2057 updates merge request head pipeline and sets merge_jid to nil2058 #mark_as_preparing2059 when the status is unchecked2060 is a valid state transition2061 behaves like transition not triggering mergeRequestMergeStatusUpdated GraphQL subscription2062 is expected not to receive merge_request_merge_status_updated(*(any args)) 0 times2063 when the status is checking2064 is not a valid state transition2065 when the status is can_be_merged2066 is not a valid state transition2067 when the status is cannot_be_merged_recheck2068 is not a valid state transition2069 when the status is cannot_be_merged2070 is not a valid state transition2071 when the status is cannot_be_merged_rechecking2072 is not a valid state transition2073 #mark_as_unchecked2074 when the status is unchecked2075 is not a valid state transition2076 when the status is checking2077 is a valid state transition2078 behaves like transition triggering mergeRequestMergeStatusUpdated GraphQL subscription2079 is expected to receive merge_request_merge_status_updated(#<MergeRequest id:347 namespace1/project151!1>) 1 time2080 when trigger_mr_subscription_on_merge_status_change is disabled2081 behaves like transition not triggering mergeRequestMergeStatusUpdated GraphQL subscription2082 is expected not to receive merge_request_merge_status_updated(*(any args)) 0 times2083 when the status is can_be_merged2084 is a valid state transition2085 behaves like transition triggering mergeRequestMergeStatusUpdated GraphQL subscription2086 is expected to receive merge_request_merge_status_updated(#<MergeRequest id:350 namespace1/project154!1>) 1 time2087 when trigger_mr_subscription_on_merge_status_change is disabled2088 behaves like transition not triggering mergeRequestMergeStatusUpdated GraphQL subscription2089 is expected not to receive merge_request_merge_status_updated(*(any args)) 0 times2090 when the status is cannot_be_merged_recheck2091 is not a valid state transition2092 when the status is cannot_be_merged2093 is a valid state transition2094 behaves like transition triggering mergeRequestMergeStatusUpdated GraphQL subscription2095 is expected to receive merge_request_merge_status_updated(#<MergeRequest id:354 namespace1/project158!1>) 1 time2096 when trigger_mr_subscription_on_merge_status_change is disabled2097 behaves like transition not triggering mergeRequestMergeStatusUpdated GraphQL subscription2098 is expected not to receive merge_request_merge_status_updated(*(any args)) 0 times2099 when the status is cannot_be_merged_rechecking2100 is a valid state transition2101 behaves like transition triggering mergeRequestMergeStatusUpdated GraphQL subscription2102 is expected to receive merge_request_merge_status_updated(#<MergeRequest id:357 namespace1/project161!1>) 1 time2103 when trigger_mr_subscription_on_merge_status_change is disabled2104 behaves like transition not triggering mergeRequestMergeStatusUpdated GraphQL subscription2105 is expected not to receive merge_request_merge_status_updated(*(any args)) 0 times2106 #mark_as_checking2107 when the status is unchecked2108 is a valid state transition2109 behaves like transition triggering mergeRequestMergeStatusUpdated GraphQL subscription2110 is expected to receive merge_request_merge_status_updated(#<MergeRequest id:360 namespace1/project164!1>) 1 time2111 when trigger_mr_subscription_on_merge_status_change is disabled2112 behaves like transition not triggering mergeRequestMergeStatusUpdated GraphQL subscription2113 is expected not to receive merge_request_merge_status_updated(*(any args)) 0 times2114 when the status is checking2115 is not a valid state transition2116 when the status is can_be_merged2117 is not a valid state transition2118 when the status is cannot_be_merged_recheck2119 is a valid state transition2120 behaves like transition triggering mergeRequestMergeStatusUpdated GraphQL subscription2121 is expected to receive merge_request_merge_status_updated(#<MergeRequest id:365 namespace1/project169!1>) 1 time2122 when trigger_mr_subscription_on_merge_status_change is disabled2123 behaves like transition not triggering mergeRequestMergeStatusUpdated GraphQL subscription2124 is expected not to receive merge_request_merge_status_updated(*(any args)) 0 times2125 when the status is cannot_be_merged2126 is not a valid state transition2127 when the status is cannot_be_merged_rechecking2128 is not a valid state transition2129 #mark_as_mergeable2130 when the status is unchecked2131 is a valid state transition2132 behaves like transition triggering mergeRequestMergeStatusUpdated GraphQL subscription2133 is expected to receive merge_request_merge_status_updated(#<MergeRequest id:370 namespace1/project174!1>) 1 time2134 when trigger_mr_subscription_on_merge_status_change is disabled2135 behaves like transition not triggering mergeRequestMergeStatusUpdated GraphQL subscription2136 is expected not to receive merge_request_merge_status_updated(*(any args)) 0 times2137 when the status is checking2138 is a valid state transition2139 behaves like transition triggering mergeRequestMergeStatusUpdated GraphQL subscription2140 is expected to receive merge_request_merge_status_updated(#<MergeRequest id:373 namespace1/project177!1>) 1 time2141 when trigger_mr_subscription_on_merge_status_change is disabled2142 behaves like transition not triggering mergeRequestMergeStatusUpdated GraphQL subscription2143 is expected not to receive merge_request_merge_status_updated(*(any args)) 0 times2144 when the status is can_be_merged2145 is not a valid state transition2146 when the status is cannot_be_merged_recheck2147 is a valid state transition2148 behaves like transition triggering mergeRequestMergeStatusUpdated GraphQL subscription2149 is expected to receive merge_request_merge_status_updated(#<MergeRequest id:377 namespace1/project181!1>) 1 time2150 when trigger_mr_subscription_on_merge_status_change is disabled2151 behaves like transition not triggering mergeRequestMergeStatusUpdated GraphQL subscription2152 is expected not to receive merge_request_merge_status_updated(*(any args)) 0 times2153 when the status is cannot_be_merged2154 is not a valid state transition2155 when the status is cannot_be_merged_rechecking2156 is a valid state transition2157 behaves like transition triggering mergeRequestMergeStatusUpdated GraphQL subscription2158 is expected to receive merge_request_merge_status_updated(#<MergeRequest id:381 namespace1/project185!1>) 1 time2159 when trigger_mr_subscription_on_merge_status_change is disabled2160 behaves like transition not triggering mergeRequestMergeStatusUpdated GraphQL subscription2161 is expected not to receive merge_request_merge_status_updated(*(any args)) 0 times2162 #mark_as_unmergeable2163 when the status is unchecked2164 is a valid state transition2165 behaves like transition triggering mergeRequestMergeStatusUpdated GraphQL subscription2166 is expected to receive merge_request_merge_status_updated(#<MergeRequest id:384 namespace1/project188!1>) 1 time2167 when trigger_mr_subscription_on_merge_status_change is disabled2168 behaves like transition not triggering mergeRequestMergeStatusUpdated GraphQL subscription2169 is expected not to receive merge_request_merge_status_updated(*(any args)) 0 times2170 when the status is checking2171 is a valid state transition2172 behaves like transition triggering mergeRequestMergeStatusUpdated GraphQL subscription2173 is expected to receive merge_request_merge_status_updated(#<MergeRequest id:387 namespace1/project191!1>) 1 time2174 when trigger_mr_subscription_on_merge_status_change is disabled2175 behaves like transition not triggering mergeRequestMergeStatusUpdated GraphQL subscription2176 is expected not to receive merge_request_merge_status_updated(*(any args)) 0 times2177 when the status is can_be_merged2178 is not a valid state transition2179 when the status is cannot_be_merged_recheck2180 is a valid state transition2181 behaves like transition triggering mergeRequestMergeStatusUpdated GraphQL subscription2182 is expected to receive merge_request_merge_status_updated(#<MergeRequest id:391 namespace1/project195!1>) 1 time2183 when trigger_mr_subscription_on_merge_status_change is disabled2184 behaves like transition not triggering mergeRequestMergeStatusUpdated GraphQL subscription2185 is expected not to receive merge_request_merge_status_updated(*(any args)) 0 times2186 when the status is cannot_be_merged2187 is not a valid state transition2188 when the status is cannot_be_merged_rechecking2189 is a valid state transition2190 behaves like transition triggering mergeRequestMergeStatusUpdated GraphQL subscription2191 is expected to receive merge_request_merge_status_updated(#<MergeRequest id:395 namespace1/project199!1>) 1 time2192 when trigger_mr_subscription_on_merge_status_change is disabled2193 behaves like transition not triggering mergeRequestMergeStatusUpdated GraphQL subscription2194 is expected not to receive merge_request_merge_status_updated(*(any args)) 0 times2195 transition to closed2196 with merge error2197 clears merge error2198 transition to cannot_be_merged2199 opened2200 notifies conflict, but does not notify again if rechecking still results in cannot_be_merged2201 notifies conflict, but does not notify again if rechecking still results in cannot_be_merged with async mergeability check2202 notifies conflict, whenever newly unmergeable2203 notifies conflict, whenever newly unmergeable with async mergeability check2204 does not notify whenever merge request is newly unmergeable due to other reasons2205 locked2206 notifies conflict, but does not notify again if rechecking still results in cannot_be_merged2207 notifies conflict, but does not notify again if rechecking still results in cannot_be_merged with async mergeability check2208 notifies conflict, whenever newly unmergeable2209 notifies conflict, whenever newly unmergeable with async mergeability check2210 does not notify whenever merge request is newly unmergeable due to other reasons2211 closed2212 does not notify2213 merged2214 does not notify2215 source branch is missing2216 does not raise error2217 check_state?2218 indicates whether MR is still checking for mergeability2219 #should_be_rebased?2220 returns false for the same source and target branches2221 #rebase_in_progress?2222 rebase_jid: "foo", jid_valid: true, result: true2223 is expected to eq true2224 rebase_jid: "foo", jid_valid: false, result: false2225 is expected to eq false2226 rebase_jid: "", jid_valid: true, result: false2227 is expected to eq false2228 rebase_jid: nil, jid_valid: true, result: false2229 is expected to eq false2230 #allow_collaboration2231 is false when pushing by a maintainer is not possible2232 is true when pushing by a maintainer is possible2233 #collaborative_push_possible?2234 does not allow maintainer to push if the source project is the same as the target2235 allows maintainer to push when both source and target are public2236 is not available for protected branches2237 #can_allow_collaboration?2238 is false if the user does not have push access to the source project2239 is true when the user has push access to the source project2240 #merge_participants2241 contains author2242 when merge_when_pipeline_succeeds? is true2243 when merge user is author2244 author is not a project member2245 is empty2246 author is a project member2247 contains author only2248 when merge user and author are different users2249 merge user is not a member2250 contains author only2251 both author and merge users are project members2252 contains author and merge user2253 .merge_request_ref?2254 when ref is ref name of a branch2255 is expected to be falsey2256 when ref is HEAD ref path of a branch2257 is expected to be falsey2258 when ref is HEAD ref path of a merge request2259 is expected to be truthy2260 when ref is merge ref path of a merge request2261 is expected to be truthy2262 .merge_train_ref?2263 when ref is ref name of a branch2264 is expected to be falsey2265 when ref is HEAD ref path of a branch2266 is expected to be falsey2267 when ref is HEAD ref path of a merge request2268 is expected to be falsey2269 when ref is merge ref path of a merge request2270 is expected to be falsey2271 when ref is train ref path of a merge request2272 is expected to be truthy2273 #in_locked_state2274 when the merge request does not change state2275 returns to previous state and has no errors on the object2276 when the merge request is merged while locked2277 becomes merged and has no errors on the object2278 #cleanup_refs2279 when removing all refs2280 deletes all refs from the target project2281 when removing only train ref2282 deletes train ref from the target project2283 .with_auto_merge_enabled2284 is expected to contain exactly #<MergeRequest id:420 namespace1/project225!1>2285 behaves like versioned description2286 associations2287 is expected to have many description_versions2288 save_description_version2289 when description was changed2290 saves the old and new description for the first update2291 only saves the new description for subsequent updates2292 sets the new description version to `saved_description_version`2293 clears `saved_description_version` after another save that does not change description2294 when description was not changed2295 does not save any description version2296 #commits2297 persisted merge request2298 with a limit2299 returns a limited number of commits2300 without a limit2301 returns all commits of the merge request diff2302 new merge request2303 compare commits2304 without a limit2305 returns all the compare commits2306 with a limit2307 returns a limited number of commits2308 #recent_commits2309 returns the safe number of commits2310 #recent_visible_deployments2311 returns visible deployments2312 only returns a limited number of deployments2313 #diffable_merge_ref?2314 merge request can be merged2315 merge_head diff is not created2316 returns true2317 merge_head diff is created2318 returns true2319 merge request is merged2320 returns false2321 merge request cannot be merged2322 returns false2323 #predefined_variables2324 caches all SQL-sourced data on the first call2325 banzai_render_context2326 sets the label_url_method in the context2327 #head_pipeline_builds_with_coverage2328 delegates to head_pipeline2329 #merge_ref_head2330 when merge_ref_sha is not present2331 returns the commit based on merge ref path2332 when merge_ref_sha is present2333 returns the commit based on cached merge_ref_sha2334 #allows_reviewers?2335 returns true2336 #update_and_mark_in_progress_merge_commit_sha2337 updates commit ID2338 #enabled_reports2339 report_type: :sast, with_reports: :with_sast_reports, feature: :sast2340 when head pipeline has reports2341 is expected to be truthy2342 when head pipeline does not have reports2343 is expected to be falsy2344 report_type: :secret_detection, with_reports: :with_secret_detection_reports, feature: :secret_detection2345 when head pipeline has reports2346 is expected to be truthy2347 when head pipeline does not have reports2348 is expected to be falsy2349 #includes_ci_config?2350 when diff_stats is nil2351 is expected to eq false2352 when diff_stats does not include the ci config path of the project2353 is expected to eq false2354 when diff_stats includes the ci config path of the project2355 is expected to eq true2356 .from_fork2357 returns merge requests from forks only2358 behaves like it has loose foreign keys2359 has at least one loose foreign key definition2360 has the deletion trigger present2361 records record deletions2362 cleans up record deletions2363 loose foreign key on merge_requests.head_pipeline_id2364 behaves like cleanup by a loose foreign key2365 cleans up (delete or nullify) the model2366 #merge_blocked_by_other_mrs?2367 returns false when there is no blocking merge requests2368 #merge_request_reviewers_with2369 returns reviewers2370 #merge_request_assignees_with2371 returns assignees2372 #recent_diff_head_shas2373 when the association is not loaded2374 has up to MAX_RECENT_DIFF_HEAD_SHAS, ordered most recent first2375 supports limits2376 when the association is loaded2377 has up to MAX_RECENT_DIFF_HEAD_SHAS, ordered most recent first2378 supports limits2379 does not issue any queries2380 #target_default_branch?2381 returns false2382 with target_branch equal project default branch2383 returns false2384 #can_suggest_reviewers?2385 returns false2386 #suggested_reviewer_users2387 is expected to be empty2388Users::MigrateToGhostUserService2389 migrating a user's associated records to the ghost user2390 issues2391 deleted user is present as both author and edited_user2392 for a issue the user has created2393 does not delete the issue2394 blocks the user before migrating issues to the 'Ghost User'2395 migrates all associated fields to the "Ghost user"2396 will only migrate specific records during a hard_delete2397 race conditions2398 blocks the user before issue migration begins2399 when issue migration fails and is rolled back2400 rolls back the user block2401 doesn't unblock a previously-blocked user2402 deleted user is present only as edited_user2403 for a issue the user has created2404 does not delete the issue2405 blocks the user before migrating issues to the 'Ghost User'2406 migrates all associated fields to the "Ghost user"2407 will only migrate specific records during a hard_delete2408 race conditions2409 blocks the user before issue migration begins2410 when issue migration fails and is rolled back2411 rolls back the user block2412 doesn't unblock a previously-blocked user2413 merge requests2414 deleted user is present as both author and merge_user2415 for a merge request the user has created2416 does not delete the merge request2417 blocks the user before migrating merge requests to the 'Ghost User'2418 migrates all associated fields to the "Ghost user"2419 will only migrate specific records during a hard_delete2420 race conditions2421 blocks the user before merge request migration begins2422 when merge request migration fails and is rolled back2423 rolls back the user block2424 doesn't unblock a previously-blocked user2425 deleted user is present only as both merge_user2426 for a merge request the user has created2427 does not delete the merge request2428 blocks the user before migrating merge requests to the 'Ghost User'2429 migrates all associated fields to the "Ghost user"2430 will only migrate specific records during a hard_delete2431 race conditions2432 blocks the user before merge request migration begins2433 when merge request migration fails and is rolled back2434 rolls back the user block2435 doesn't unblock a previously-blocked user2436 notes2437 for a note the user has created2438 does not delete the note2439 blocks the user before migrating notes to the 'Ghost User'2440 migrates all associated fields to the "Ghost user"2441 will only migrate specific records during a hard_delete2442 race conditions2443 blocks the user before note migration begins2444 when note migration fails and is rolled back2445 rolls back the user block2446 doesn't unblock a previously-blocked user2447 abuse reports2448 for a abuse report the user has created2449 does not delete the abuse report2450 blocks the user before migrating abuse reports to the 'Ghost User'2451 migrates all associated fields to the "Ghost user"2452 will only migrate specific records during a hard_delete2453 race conditions2454 blocks the user before abuse report migration begins2455 when abuse report migration fails and is rolled back2456 rolls back the user block2457 doesn't unblock a previously-blocked user2458 award emoji2459 for a award emoji the user has created2460 does not delete the award emoji2461 blocks the user before migrating award emojis to the 'Ghost User'2462 migrates all associated fields to the "Ghost user"2463 will only migrate specific records during a hard_delete2464 race conditions2465 blocks the user before award emoji migration begins2466 when award emoji migration fails and is rolled back2467 rolls back the user block2468 doesn't unblock a previously-blocked user2469 when the awardable already has an award emoji of the same name assigned to the ghost user2470 migrates the award emoji regardless2471 does not leave the migrated award emoji in an invalid state2472 snippets2473 for a snippet the user has created2474 does not delete the snippet2475 blocks the user before migrating snippets to the 'Ghost User'2476 migrates all associated fields to the "Ghost user"2477 will only migrate specific records during a hard_delete2478 race conditions2479 blocks the user before snippet migration begins2480 when snippet migration fails and is rolled back2481 rolls back the user block2482 doesn't unblock a previously-blocked user2483 reviews2484 for a review the user has created2485 does not delete the review2486 blocks the user before migrating reviews to the 'Ghost User'2487 migrates all associated fields to the "Ghost user"2488 will only migrate specific records during a hard_delete2489 race conditions2490 blocks the user before review migration begins2491 when review migration fails and is rolled back2492 rolls back the user block2493 doesn't unblock a previously-blocked user2494gitlab:workhorse namespace rake task2495 install2496 clones the origin and creates a gitlab-workhorse binary2497 no dir given2498 aborts and display a help message2499 when an underlying Git command fails2500 aborts and display a help message2501SystemNotes::IssuablesService2502 #relate_issuable2503 behaves like a system note2504 has the correct attributes2505 when issue marks another as related2506 sets the note text2507 #unrelate_issuable2508 behaves like a system note2509 has the correct attributes2510 when issue relation is removed2511 sets the note text2512 #change_assignee2513 behaves like a system note2514 has the correct attributes2515 when assignee added2516 sets the note text2517 behaves like a note with overridable created_at2518 the note has the correct time2519 when assignee removed2520 sets the note text2521 behaves like a note with overridable created_at2522 the note has the correct time2523 #change_issuable_assignees2524 builds a correct phrase when an assignee is added to a non-assigned issue2525 builds a correct phrase when assignee removed2526 builds a correct phrase when assignees changed2527 builds a correct phrase when three assignees removed and one added2528 builds a correct phrase when one assignee changed from a set2529 builds a correct phrase when one assignee removed from a set2530 builds a correct phrase when the locale is different2531 behaves like a system note2532 has the correct attributes2533 behaves like a note with overridable created_at2534 the note has the correct time2535 #change_issuable_reviewers2536 builds a correct phrase when a reviewer is added to a non-assigned merge request2537 builds a correct phrase when reviewer is removed2538 builds a correct phrase when reviewers changed2539 builds a correct phrase when three reviewers removed and one added2540 builds a correct phrase when one reviewer is changed from a set2541 builds a correct phrase when one reviewer removed from a set2542 builds a correct phrase when the locale is different2543 behaves like a system note2544 has the correct attributes2545 #change_issuable_contacts2546 builds a correct phrase when one contact is added2547 builds a correct phrase when one contact is removed2548 builds a correct phrase when one contact is added and one contact is removed2549 builds a correct phrase when three contacts are added and one removed2550 builds a correct phrase when three contacts are removed and one added2551 builds a correct phrase when the locale is different2552 behaves like a system note2553 has the correct attributes2554 #change_status2555 creates a resource state event2556 #change_title2557 when noteable responds to `title`2558 sets the note text2559 behaves like a system note2560 has the correct attributes2561 behaves like a note with overridable created_at2562 the note has the correct time2563 #change_description2564 when noteable responds to `description`2565 sets the note text2566 associates the related description version2567 behaves like a system note2568 has the correct attributes2569 behaves like a note with overridable created_at2570 the note has the correct time2571 #change_issue_confidentiality2572 issue has been made confidential2573 sets the note text2574 behaves like a system note2575 has the correct attributes2576 issue has been made visible2577 sets the note text2578 behaves like a system note2579 has the correct attributes2580 #cross_reference2581 behaves like a system note2582 has the correct attributes2583 when cross-reference disallowed2584 returns nil2585 does not create a system note metadata record2586 when cross-reference allowed2587 behaves like a system note2588 has the correct attributes2589 behaves like a note with overridable created_at2590 the note has the correct time2591 note_body2592 cross-project2593 from Commit2594 references the mentioning commit2595 from non-Commit2596 references the mentioning object2597 within the same project2598 from Commit2599 references the mentioning commit2600 from non-Commit2601 references the mentioning object2602 with external issue2603 queues a background worker2604 #cross_reference_exists?2605 issue from commit2606 is truthy when already mentioned2607 is falsey when not already mentioned2608 legacy capitalized cross reference2609 is truthy when already mentioned2610 commit from commit2611 is truthy when already mentioned2612 is falsey when not already mentioned2613 legacy capitalized cross reference2614 is truthy when already mentioned2615 commit with cross-reference from fork2616 is true when a fork mentions an external issue2617 legacy capitalized cross reference2618 is true when a fork mentions an external issue2619 #change_task_status2620 posts the 'marked the checklist item as complete' system note2621 behaves like a system note2622 has the correct attributes2623 #noteable_moved2624 moved to2625 notifies about noteable being moved to2626 behaves like cross project mentionable2627 contains cross reference to new noteable2628 mentions referenced noteable2629 mentions referenced project2630 behaves like a system note2631 has the correct attributes2632 moved from2633 notifies about noteable being moved from2634 behaves like cross project mentionable2635 contains cross reference to new noteable2636 mentions referenced noteable2637 mentions referenced project2638 behaves like a system note2639 has the correct attributes2640 invalid direction2641 raises error2642 #noteable_cloned2643 cloned to2644 notifies about noteable being cloned to2645 behaves like cross project mentionable2646 contains cross reference to new noteable2647 mentions referenced noteable2648 mentions referenced project2649 behaves like a system note2650 has the correct attributes2651 cloned from2652 notifies about noteable being cloned from2653 behaves like cross project mentionable2654 contains cross reference to new noteable2655 mentions referenced noteable2656 mentions referenced project2657 behaves like a system note2658 has the correct attributes2659 invalid direction2660 raises error2661 custom created timestamp2662 allows setting of custom created_at value2663 defaults to current time when created_at is not given2664 metrics2665 cloned from2666 does not tracks usage2667 cloned to2668 tracks usage2669 behaves like issue_edit snowplow tracking2670 behaves like Snowplow event tracking2671 is not emitted if FF is disabled2672 is emitted2673 #mark_duplicate_issue2674 within the same project2675 is expected to eq "marked this issue as a duplicate of #2"2676 behaves like a system note2677 has the correct attributes2678 across different projects2679 is expected to eq "marked this issue as a duplicate of namespace111/project345#1"2680 behaves like a system note2681 has the correct attributes2682 #mark_canonical_issue_of_duplicate2683 within the same project2684 is expected to eq "marked #2 as a duplicate of this issue"2685 behaves like a system note2686 has the correct attributes2687 across different projects2688 is expected to eq "marked namespace113/project347#1 as a duplicate of this issue"2689 behaves like a system note2690 has the correct attributes2691 #discussion_lock2692 discussion unlocked2693 creates the note text correctly2694 behaves like a system note2695 has the correct attributes2696 discussion locked2697 creates the note text correctly2698 behaves like a system note2699 has the correct attributes2700 #cross_reference_disallowed?2701 when mentioned_in is not a MergeRequest2702 is falsey2703 when mentioned_in is a MergeRequest2704 is truthy when noteable is in commits2705 is falsey when noteable is not in commits2706 when notable is an ExternalIssue2707 is false with issue tracker supporting referencing2708 is true with issue tracker not supporting referencing2709 is true without issue tracker2710 #close_after_error_tracking_resolve2711 creates the expected state event2712 #auto_resolve_prometheus_alert2713 creates the expected state event2714 #change_issue_type2715 is expected to eq "changed issue type to incident"2716 behaves like a system note2717 has the correct attributes2718 #hierarchy_changed2719 when task is added as a child2720 sets the correct note text2721 behaves like a system note2722 has the correct attributes2723 when child task is removed2724 sets the correct note text2725 behaves like a system note2726 has the correct attributes2727Projects::UpdateService2728 #execute2729 when changing visibility level2730 behaves like publishing Projects::ProjectAttributesChangedEvent2731 publishes Projects::ProjectAttributesChangedEvent2732 when visibility_level changes to INTERNAL2733 updates the project to internal2734 when visibility_level changes to PUBLIC2735 updates the project to public2736 and project is PRIVATE2737 does not unlink project from fork network2738 when visibility_level changes to PRIVATE2739 updates the project to private2740 when visibility levels are restricted to PUBLIC only2741 when visibility_level is INTERNAL2742 updates the project to internal2743 when visibility_level is PUBLIC2744 does not update the project to public2745 when updated by an admin2746 when admin mode is enabled2747 updates the project to public2748 when admin mode is disabled2749 does not update the project to public2750 when project visibility is higher than parent group2751 does not update project visibility level even if admin2752 when user is not project owner2753 when project is private2754 does not update the project to public2755 does not update the project to public with tricky value2756 when project is public2757 does not update the project to private2758 does not update the project to private with invalid string value2759 does not update the project to private with valid string value2760 does not update the project to private because of Active Record typecasting2761 when updating shared runners2762 can enable shared runners2763 enables shared runners2764 cannot enable shared runners2765 does not enable shared runners2766 when updating project that has forks2767 and unlink forks feature flag is off2768 updates forks visibility level when parent set to more restrictive2769 does not update forks visibility level when parent set to less restrictive2770 and unlink forks feature flag is on2771 does not change visibility of forks2772 when updating a default branch2773 changes default branch, tracking the previous branch2774 does not change a default branch2775 when we update project but not enabling a wiki2776 does not try to create an empty wiki2777 handles empty project feature attributes2778 when enabling a wiki2779 creates a wiki2780 logs an error and creates a metric when wiki can not be created2781 when changing feature visibility to private2782 updates the visibility correctly2783 when changes project features2784 publishes Projects::ProjectFeaturesChangedEvent2785 publishes Projects::ProjectFeaturesChangedEvent2786 publishes Projects::ProjectFeaturesChangedEvent2787 when archiving a project2788 publishes a ProjectTransferedEvent2789 behaves like publishing Projects::ProjectAttributesChangedEvent2790 publishes Projects::ProjectAttributesChangedEvent2791 when changing operations feature visibility2792 does not sync the changes to the related fields2793 when split_operations_visibility_permissions feature is disabled2794 syncs the changes to the related fields2795 when updating a project that contains container images2796 does not allow to rename the project2797 allows to update other settings2798 when renaming a project2799 with legacy storage2800 does not allow renaming when new path matches existing repository on disk2801 when hashed storage is enabled2802 migrates project to a hashed storage instead of renaming the repo to another legacy name2803 with hashed storage2804 does not check if new path matches existing repository on disk2805 when passing invalid parameters2806 returns an error result when record cannot be updated2807 when updating #emails_disabled2808 updates the attribute for the project owner2809 does not update when not project owner2810 when updating runners settings2811 when project has shared runners enabled2812 updates builds queue when shared runners get disabled2813 when project has shared runners disabled2814 updates builds queue when shared runners get enabled2815 when project has group runners enabled2816 updates builds queue when group runners get disabled2817 when project has group runners disabled2818 updates builds queue when group runners get enabled2819 with external authorization enabled2820 does not save the project with an error if the service denies access2821 saves the new label if the service allows access2822 checks the default label when the classification label was cleared2823 does not check the label when it does not change2824 when updating nested attributes for prometheus integration2825 prometheus integration exists2826 updates existing record2827 prometheus integration does not exist2828 valid parameters2829 creates new record2830 invalid parameters2831 does not create new record2832 when changing repository_storage2833 authenticated as admin2834 when admin mode is enabled2835 schedules the transfer of the repository to the new storage and locks the project2836 when admin mode is disabled2837 behaves like the transfer was not scheduled2838 does not schedule the transfer2839 the repository is read-only2840 behaves like the transfer was not scheduled2841 does not schedule the transfer2842 the storage has not changed2843 behaves like the transfer was not scheduled2844 does not schedule the transfer2845 the storage does not exist2846 behaves like the transfer was not scheduled2847 does not schedule the transfer2848 authenticated as user2849 behaves like the transfer was not scheduled2850 does not schedule the transfer2851 when updating topics2852 update using topics2853 update using topic_list2854 update using tag_list (deprecated)2855 #run_auto_devops_pipeline?2856 when master contains a .gitlab-ci.yml file2857 is expected to eq false2858 when auto devops is nil2859 is expected to eq false2860 when auto devops is explicitly enabled2861 is expected to eq true2862 when auto devops is explicitly disabled2863 is expected to eq false2864 when auto devops is set to instance setting2865 when auto devops is enabled system-wide2866 is expected to eq true2867 when auto devops is disabled system-wide2868 is expected to eq false2869Ci::BuildTraceChunk2870 behaves like having unique enum values2871 has unique values in "data_store"2872 default attributes2873 is expected to eq "redis_trace_chunks"2874 is expected to eq "fog"2875 chunk creation2876 increments trace operation chunked metric2877 FastDestroyAll2878 Forbid #destroy and #destroy_all2879 does not delete database rows and associted external data2880 .fast_destroy_all2881 deletes database rows and associted external data2882 .use_fast_destroy2883 performs cascading delete with fast_destroy_all2884 CHUNK_SIZE2885 chunk size can not be changed without special care2886 .all_stores2887 returns a correctly ordered array2888 #data2889 data_store: :redis2890 is expected to eq "Sample data in redis"2891 data_store: :redis_trace_chunks2892 is expected to eq "Sample data in redis"2893 when data_store is database2894 is expected to eq "Sample data in database"2895 when data_store is fog2896 is expected to eq "Sample data in fog"2897 returns a new Fog store2898 #data_store2899 default value2900 is expected to eq "redis_trace_chunks"2901 #get_store_class2902 raises an error2903 data_store: :redis, expected_store: Ci::BuildTraceChunks::Redis2904 with store2905 returns an instance of the right class2906 data_store: :database, expected_store: Ci::BuildTraceChunks::Database2907 with store2908 returns an instance of the right class2909 data_store: :fog, expected_store: Ci::BuildTraceChunks::Fog2910 with store2911 returns an instance of the right class2912 data_store: :redis_trace_chunks, expected_store: Ci::BuildTraceChunks::RedisTraceChunks2913 with store2914 returns an instance of the right class2915 #append2916 data_store: :redis2917 when there are no data2918 has no data2919 does not read data when appending2920 behaves like Appending correctly2921 when offset is negative2922 is expected to raise Exception with "Offset is out of range"2923 when offset is bigger than data size2924 is expected to raise Exception with "Offset is out of range"2925 when new data overflows chunk size2926 is expected to raise Exception with "Chunk size overflow"2927 when offset is EOF2928 appends2929 when the other process is appending2930 raise an error2931 when new_data is nil2932 raises an error2933 when new_data is empty2934 does not append2935 does not execute UPDATE2936 when offset is middle of datasize2937 appends2938 behaves like Scheduling sidekiq worker to flush data to persist store2939 when new data fulfilled chunk size2940 schedules trace chunk flush worker2941 migrates data to object storage2942 when there are some data2943 has data2944 behaves like Appending correctly2945 when offset is negative2946 is expected to raise Exception with "Offset is out of range"2947 when offset is bigger than data size2948 is expected to raise Exception with "Offset is out of range"2949 when new data overflows chunk size2950 is expected to raise Exception with "Chunk size overflow"2951 when offset is EOF2952 appends2953 when the other process is appending2954 raise an error2955 when new_data is nil2956 raises an error2957 when new_data is empty2958 does not append2959 does not execute UPDATE2960 when offset is middle of datasize2961 appends2962 behaves like Scheduling sidekiq worker to flush data to persist store2963 when new data fulfilled chunk size2964 schedules trace chunk flush worker2965 migrates data to object storage2966 data_store: :redis_trace_chunks2967 when there are no data2968 has no data2969 does not read data when appending2970 behaves like Appending correctly2971 when offset is negative2972 is expected to raise Exception with "Offset is out of range"2973 when offset is bigger than data size2974 is expected to raise Exception with "Offset is out of range"2975 when new data overflows chunk size2976 is expected to raise Exception with "Chunk size overflow"2977 when offset is EOF2978 appends2979 when the other process is appending2980 raise an error2981 when new_data is nil2982 raises an error2983 when new_data is empty2984 does not append2985 does not execute UPDATE2986 when offset is middle of datasize2987 appends2988 behaves like Scheduling sidekiq worker to flush data to persist store2989 when new data fulfilled chunk size2990 schedules trace chunk flush worker2991 migrates data to object storage2992 when there are some data2993 has data2994 behaves like Appending correctly2995 when offset is negative2996 is expected to raise Exception with "Offset is out of range"2997 when offset is bigger than data size2998 is expected to raise Exception with "Offset is out of range"2999 when new data overflows chunk size3000 is expected to raise Exception with "Chunk size overflow"3001 when offset is EOF3002 appends3003 when the other process is appending3004 raise an error3005 when new_data is nil3006 raises an error3007 when new_data is empty3008 does not append3009 does not execute UPDATE3010 when offset is middle of datasize3011 appends3012 behaves like Scheduling sidekiq worker to flush data to persist store3013 when new data fulfilled chunk size3014 schedules trace chunk flush worker3015 migrates data to object storage3016 when data_store is database3017 when there are no data3018 has no data3019 behaves like Appending correctly3020 when offset is negative3021 is expected to raise Exception with "Offset is out of range"3022 when offset is bigger than data size3023 is expected to raise Exception with "Offset is out of range"3024 when new data overflows chunk size3025 is expected to raise Exception with "Chunk size overflow"3026 when offset is EOF3027 appends3028 when the other process is appending3029 raise an error3030 when new_data is nil3031 raises an error3032 when new_data is empty3033 does not append3034 does not execute UPDATE3035 when offset is middle of datasize3036 appends3037 behaves like Scheduling no sidekiq worker3038 when new data fulfilled chunk size3039 does not schedule trace chunk flush worker3040 does not migrate data to object storage3041 when there are some data3042 has data3043 behaves like Appending correctly3044 when offset is negative3045 is expected to raise Exception with "Offset is out of range"3046 when offset is bigger than data size3047 is expected to raise Exception with "Offset is out of range"3048 when new data overflows chunk size3049 is expected to raise Exception with "Chunk size overflow"3050 when offset is EOF3051 appends3052 when the other process is appending3053 raise an error3054 when new_data is nil3055 raises an error3056 when new_data is empty3057 does not append3058 does not execute UPDATE3059 when offset is middle of datasize3060 appends3061 behaves like Scheduling no sidekiq worker3062 when new data fulfilled chunk size3063 does not schedule trace chunk flush worker3064 does not migrate data to object storage3065 when data_store is fog3066 when there are no data3067 has no data3068 behaves like Appending correctly3069 when offset is negative3070 is expected to raise Exception with "Offset is out of range"3071 when offset is bigger than data size3072 is expected to raise Exception with "Offset is out of range"3073 when new data overflows chunk size3074 is expected to raise Exception with "Chunk size overflow"3075 when offset is EOF3076 appends3077 when the other process is appending3078 raise an error3079 when new_data is nil3080 raises an error3081 when new_data is empty3082 does not append3083 does not execute UPDATE3084 when offset is middle of datasize3085 appends3086 behaves like Scheduling no sidekiq worker3087 when new data fulfilled chunk size3088 does not schedule trace chunk flush worker3089 does not migrate data to object storage3090 when there are some data3091 has data3092 behaves like Appending correctly3093 when offset is negative3094 is expected to raise Exception with "Offset is out of range"3095 when offset is bigger than data size3096 is expected to raise Exception with "Offset is out of range"3097 when new data overflows chunk size3098 is expected to raise Exception with "Chunk size overflow"3099 when offset is EOF3100 appends3101 when the other process is appending3102 raise an error3103 when new_data is nil3104 raises an error3105 when new_data is empty3106 does not append3107 does not execute UPDATE3108 when offset is middle of datasize3109 appends3110 behaves like Scheduling no sidekiq worker3111 when new data fulfilled chunk size3112 does not schedule trace chunk flush worker3113 does not migrate data to object storage3114 append metrics3115 increments trace operation appended metric3116 #truncate3117 data_store: :redis3118 behaves like truncates3119 when offset is negative3120 is expected to raise Exception with "Offset is out of range"3121 when offset is bigger than data size3122 is expected to raise Exception with "Offset is out of range"3123 when offset is 103124 truncates3125 data_store: :redis_trace_chunks3126 behaves like truncates3127 when offset is negative3128 is expected to raise Exception with "Offset is out of range"3129 when offset is bigger than data size3130 is expected to raise Exception with "Offset is out of range"3131 when offset is 103132 truncates3133 when data_store is database3134 behaves like truncates3135 when offset is negative3136 is expected to raise Exception with "Offset is out of range"3137 when offset is bigger than data size3138 is expected to raise Exception with "Offset is out of range"3139 when offset is 103140 truncates3141 when data_store is fog3142 behaves like truncates3143 when offset is negative3144 is expected to raise Exception with "Offset is out of range"3145 when offset is bigger than data size3146 is expected to raise Exception with "Offset is out of range"3147 when offset is 103148 truncates3149 #size3150 data_store: :redis3151 when data exists3152 is expected to eq 203153 when data exists3154 is expected to eq 03155 data_store: :redis_trace_chunks3156 when data exists3157 is expected to eq 203158 when data exists3159 is expected to eq 03160 when data_store is database3161 when data exists3162 is expected to eq 233163 when data does not exist3164 is expected to eq 03165 when data_store is fog3166 when data exists3167 is expected to eq 183168 when data does not exist3169 is expected to eq 03170 #persist_data!3171 data_store: :redis, redis_class: Ci::BuildTraceChunks::Redis3172 when data exists3173 when data size reached CHUNK_SIZE3174 persists the data3175 calculates CRC32 checksum3176 when data size has not reached CHUNK_SIZE3177 does not persist the data and the orignal data is intact3178 when chunk is a final one3179 persists the data3180 when the chunk has been modifed by a different worker3181 reloads the chunk before migration3182 verifies the operation using optimistic locking3183 does not allow flushing unpersisted chunk3184 when the chunk is being locked by a different worker3185 increments stalled chunk trace metric3186 when data does not exist3187 does not persist3188 data_store: :redis_trace_chunks, redis_class: Ci::BuildTraceChunks::RedisTraceChunks3189 when data exists3190 when data size reached CHUNK_SIZE3191 persists the data3192 calculates CRC32 checksum3193 when data size has not reached CHUNK_SIZE3194 does not persist the data and the orignal data is intact3195 when chunk is a final one3196 persists the data3197 when the chunk has been modifed by a different worker3198 reloads the chunk before migration3199 verifies the operation using optimistic locking3200 does not allow flushing unpersisted chunk3201 when the chunk is being locked by a different worker3202 increments stalled chunk trace metric3203 when data does not exist3204 does not persist3205 when data_store is database3206 when data exists3207 when data size reached CHUNK_SIZE3208 persists the data3209 when data size has not reached CHUNK_SIZE3210 does not persist the data and the orignal data is intact3211 when chunk is a final one3212 persists the data3213 when data does not exist3214 does not persist3215 when data_store is fog3216 when data exists3217 when data size reached CHUNK_SIZE3218 does not change data store3219 when data size has not reached CHUNK_SIZE3220 does not raise error3221 final?3222 when build pending state exists3223 when chunks is not the last one3224 is not a final chunk3225 when chunks is the last one3226 is a final chunk3227 when build pending state does not exist3228 when chunks is not the last one3229 is not a final chunk3230 when chunks is the last one3231 is not a final chunk3232 deletes data in redis after a parent record destroyed3233 when traces are archived3234 behaves like deletes all build_trace_chunk and data in redis3235 deletes all build_trace_chunk and data in redis3236 when project is destroyed3237 behaves like deletes all build_trace_chunk and data in redis3238 deletes all build_trace_chunk and data in redis3239 comparable build trace chunks3240 #<=>3241 when chunks are associated with different builds3242 returns nil3243 when there are two chunks with different indexes3244 indicates the the first one is greater than then second3245 when there are two chunks with the same index within the same build3246 indicates the these are equal3247 #==3248 when chunks have the same index3249 indicates that the chunks are equal3250 when chunks have different indexes3251 indicates that the chunks are not equal3252 when chunks are associated with different builds3253 indicates that the chunks are not equal3254 #live?3255 data_store: :redis, value: true3256 is expected to eq true3257 data_store: :redis_trace_chunks, value: true3258 is expected to eq true3259 data_store: :database, value: false3260 is expected to eq false3261 data_store: :fog, value: false3262 is expected to eq false3263 #flushed?3264 data_store: :redis, value: false3265 is expected to eq false3266 data_store: :redis_trace_chunks, value: false3267 is expected to eq false3268 data_store: :database, value: true3269 is expected to eq true3270 data_store: :fog, value: true3271 is expected to eq true3272DraftNotes::PublishService3273 only publishes the draft notes belonging to the current user3274 single draft note3275 publishes3276 does not skip notification3277 does not track the publish event3278 commit_id is set3279 creates note from draft with commit_id3280 multiple draft notes3281 returns success3282 publishes all draft notes for a user in a merge request3283 sends batch notification3284 tracks the publish event3285 when review fails to create3286 does not publish any draft note3287 does not track the publish event3288 returns an error3289 capturing diff notes positions and keeping around commits3290 creates diff_note_positions for diff notes3291 keeps around the commits of each published note3292 does not requests a lot from Gitaly3293 commit_id is set3294 creates note from draft with commit_id3295 draft notes with suggestions3296 creates a suggestion with correct content3297 when the diff is changed3298 creates a suggestion based on the latest diff content and positions3299 with quick actions3300 performs quick actions3301 does not create a note if it only contains quick actions3302 with drafts that resolve threads3303 resolves the thread3304 sends notifications if all threads are resolved3305 user cannot create notes3306 returns an error3307VisibilityLevelHelper3308 visibility_icon_description3309 used with a Project3310 delegates projects to #project_visibility_icon_description3311 used with a ProjectPresenter3312 delegates projects to #project_visibility_icon_description3313 used with a Group3314 delegates groups to #group_visibility_icon_description3315 visibility_level_label3316 level_value: 0, level_name: "Private"3317 returns the name of the visibility level3318 level_value: 10, level_name: "Internal"3319 returns the name of the visibility level3320 level_value: 20, level_name: "Public"3321 returns the name of the visibility level3322 visibility_level_description3323 used with a Project3324 returns different project related descriptions depending on visibility level3325 used with a Group3326 returns different group related descriptions depending on visibility level3327 disallowed_visibility_level?3328 forks3329 disallows levels3330 non-forked project3331 disallows levels3332 group3333 disallows levels3334 sub-group3335 disallows levels3336 snippet3337 disallows levels3338 selected_visibility_level3339 requested_level: 20, max_allowed: 20, global_default_level: 20, restricted_levels: [], expected: 203340 provides correct visibility level for forked project3341 provides correct visibility level for project in group3342 requested_level: 20, max_allowed: 20, global_default_level: 20, restricted_levels: [20], expected: 103343 provides correct visibility level for forked project3344 provides correct visibility level for project in group3345 requested_level: 10, max_allowed: 20, global_default_level: 20, restricted_levels: [], expected: 103346 provides correct visibility level for forked project3347 provides correct visibility level for project in group3348 requested_level: 10, max_allowed: 0, global_default_level: 0, restricted_levels: [], expected: 03349 provides correct visibility level for forked project3350 provides correct visibility level for project in group3351 requested_level: 0, max_allowed: 20, global_default_level: 20, restricted_levels: [], expected: 03352 provides correct visibility level for forked project3353 provides correct visibility level for project in group3354 requested_level: 20, max_allowed: 0, global_default_level: 10, restricted_levels: [], expected: 03355 provides correct visibility level for forked project3356 provides correct visibility level for project in group3357 requested_level: 20, max_allowed: 10, global_default_level: 20, restricted_levels: [], expected: 103358 provides correct visibility level for forked project3359 provides correct visibility level for project in group3360 requested_level: 20, max_allowed: 0, global_default_level: 20, restricted_levels: [], expected: 03361 provides correct visibility level for forked project3362 provides correct visibility level for project in group3363 requested_level: 20, max_allowed: 10, global_default_level: 10, restricted_levels: [], expected: 103364 provides correct visibility level for forked project3365 provides correct visibility level for project in group3366 requested_level: 20, max_allowed: 20, global_default_level: 10, restricted_levels: [], expected: 203367 provides correct visibility level for forked project3368 provides correct visibility level for project in group3369 #available_visibility_levels3370 behaves like available visibility level3371 excludes disallowed visibility levels3372 restricted_visibility_levels: [], expected: [0, 10, 20]3373 is expected to eq [0, 10, 20]3374 restricted_visibility_levels: [0], expected: [10, 20]3375 is expected to eq [10, 20]3376 restricted_visibility_levels: [0, 10], expected: [20]3377 is expected to eq [20]3378 restricted_visibility_levels: [0, 20], expected: [10]3379 is expected to eq [10]3380 restricted_visibility_levels: [10], expected: [0, 20]3381 is expected to eq [0, 20]3382 restricted_visibility_levels: [10, 0], expected: [20]3383 is expected to eq [20]3384 restricted_visibility_levels: [10, 20], expected: [0]3385 is expected to eq [0]3386 restricted_visibility_levels: [20], expected: [0, 10]3387 is expected to eq [0, 10]3388 restricted_visibility_levels: [20, 0], expected: [10]3389 is expected to eq [10]3390 restricted_visibility_levels: [20, 10], expected: [0]3391 is expected to eq [0]3392 behaves like available visibility level3393 excludes disallowed visibility levels3394 restricted_visibility_levels: [], expected: [0, 10, 20]3395 is expected to eq [0, 10, 20]3396 restricted_visibility_levels: [0], expected: [10, 20]3397 is expected to eq [10, 20]3398 restricted_visibility_levels: [0, 10], expected: [20]3399 is expected to eq [20]3400 restricted_visibility_levels: [0, 20], expected: [10]3401 is expected to eq [10]3402 restricted_visibility_levels: [10], expected: [0, 20]3403 is expected to eq [0, 20]3404 restricted_visibility_levels: [10, 0], expected: [20]3405 is expected to eq [20]3406 restricted_visibility_levels: [10, 20], expected: [0]3407 is expected to eq [0]3408 restricted_visibility_levels: [20], expected: [0, 10]3409 is expected to eq [0, 10]3410 restricted_visibility_levels: [20, 0], expected: [10]3411 is expected to eq [10]3412 restricted_visibility_levels: [20, 10], expected: [0]3413 is expected to eq [0]3414 behaves like available visibility level3415 excludes disallowed visibility levels3416 restricted_visibility_levels: [], expected: [0, 10, 20]3417 is expected to eq [0, 10, 20]3418 restricted_visibility_levels: [0], expected: [10, 20]3419 is expected to eq [10, 20]3420 restricted_visibility_levels: [0, 10], expected: [20]3421 is expected to eq [20]3422 restricted_visibility_levels: [0, 20], expected: [10]3423 is expected to eq [10]3424 restricted_visibility_levels: [10], expected: [0, 20]3425 is expected to eq [0, 20]3426 restricted_visibility_levels: [10, 0], expected: [20]3427 is expected to eq [20]3428 restricted_visibility_levels: [10, 20], expected: [0]3429 is expected to eq [0]3430 restricted_visibility_levels: [20], expected: [0, 10]3431 is expected to eq [0, 10]3432 restricted_visibility_levels: [20, 0], expected: [10]3433 is expected to eq [10]3434 restricted_visibility_levels: [20, 10], expected: [0]3435 is expected to eq [0]3436 behaves like available visibility level3437 excludes disallowed visibility levels3438 restricted_visibility_levels: [], expected: [0, 10, 20]3439 is expected to eq [0, 10, 20]3440 restricted_visibility_levels: [0], expected: [10, 20]3441 is expected to eq [10, 20]3442 restricted_visibility_levels: [0, 10], expected: [20]3443 is expected to eq [20]3444 restricted_visibility_levels: [0, 20], expected: [10]3445 is expected to eq [10]3446 restricted_visibility_levels: [10], expected: [0, 20]3447 is expected to eq [0, 20]3448 restricted_visibility_levels: [10, 0], expected: [20]3449 is expected to eq [20]3450 restricted_visibility_levels: [10, 20], expected: [0]3451 is expected to eq [0]3452 restricted_visibility_levels: [20], expected: [0, 10]3453 is expected to eq [0, 10]3454 restricted_visibility_levels: [20, 0], expected: [10]3455 is expected to eq [10]3456 restricted_visibility_levels: [20, 10], expected: [0]3457 is expected to eq [0]3458 #snippets_selected_visibility_level3459 returns the selected visibility level3460 fallbacks using the lowest available visibility level when selected level isn't available3461 multiple_visibility_levels_restricted?3462 restricted_visibility_levels: [20], expected: false3463 is expected to eq false3464 restricted_visibility_levels: [20, 10], expected: true3465 is expected to eq true3466 restricted_visibility_levels: [20, 10, 0], expected: true3467 is expected to eq true3468 all_visibility_levels_restricted?3469 restricted_visibility_levels: [20], expected: false3470 is expected to eq false3471 restricted_visibility_levels: [20, 10], expected: false3472 is expected to eq false3473 restricted_visibility_levels: [0, 10, 20], expected: true3474 is expected to eq true3475 #visibility_level_options3476 returns the desired mapping3477Tooling::Danger::ProjectHelper3478 #categories_for_file3479 path: "glfm_specification/example_snapshots/prosemirror_json.yml", expected_categories: [:frontend]3480 is expected to eq [:frontend]3481 path: "glfm_specification/input/glfm_anything.yml", expected_categories: [:frontend, :backend]3482 is expected to eq [:frontend, :backend]3483 path: "usage_data.rb", expected_categories: [:database, :backend, :product_intelligence]3484 is expected to eq [:database, :backend, :product_intelligence]3485 path: "doc/foo.md", expected_categories: [:docs]3486 is expected to eq [:docs]3487 path: "CONTRIBUTING.md", expected_categories: [:docs]3488 is expected to eq [:docs]3489 path: "LICENSE", expected_categories: [:docs]3490 is expected to eq [:docs]3491 path: "MAINTENANCE.md", expected_categories: [:docs]3492 is expected to eq [:docs]3493 path: "PHILOSOPHY.md", expected_categories: [:docs]3494 is expected to eq [:docs]3495 path: "PROCESS.md", expected_categories: [:docs]3496 is expected to eq [:docs]3497 path: "README.md", expected_categories: [:docs]3498 is expected to eq [:docs]3499 path: "ee/doc/foo", expected_categories: [:unknown]3500 is expected to eq [:unknown]3501 path: "ee/README", expected_categories: [:unknown]3502 is expected to eq [:unknown]3503 path: "app/assets/foo", expected_categories: [:frontend]3504 is expected to eq [:frontend]3505 path: "app/views/foo", expected_categories: [:frontend, :backend]3506 is expected to eq [:frontend, :backend]3507 path: "public/foo", expected_categories: [:frontend]3508 is expected to eq [:frontend]3509 path: "scripts/frontend/foo", expected_categories: [:frontend]3510 is expected to eq [:frontend]3511 path: "spec/frontend/bar", expected_categories: [:frontend]3512 is expected to eq [:frontend]3513 path: "spec/frontend_integration/bar", expected_categories: [:frontend]3514 is expected to eq [:frontend]3515 path: "vendor/assets/foo", expected_categories: [:frontend]3516 is expected to eq [:frontend]3517 path: "babel.config.js", expected_categories: [:frontend]3518 is expected to eq [:frontend]3519 path: "jest.config.js", expected_categories: [:frontend]3520 is expected to eq [:frontend]3521 path: "package.json", expected_categories: [:frontend]3522 is expected to eq [:frontend]3523 path: "yarn.lock", expected_categories: [:frontend]3524 is expected to eq [:frontend]3525 path: "config/foo.js", expected_categories: [:frontend]3526 is expected to eq [:frontend]3527 path: "config/deep/foo.js", expected_categories: [:frontend]3528 is expected to eq [:frontend]3529 path: "ee/app/assets/foo", expected_categories: [:frontend]3530 is expected to eq [:frontend]3531 path: "ee/app/views/foo", expected_categories: [:frontend, :backend]3532 is expected to eq [:frontend, :backend]3533 path: "ee/spec/frontend/bar", expected_categories: [:frontend]3534 is expected to eq [:frontend]3535 path: "ee/spec/frontend_integration/bar", expected_categories: [:frontend]3536 is expected to eq [:frontend]3537 path: ".gitlab/ci/frontend.gitlab-ci.yml", expected_categories: [:frontend, :tooling]3538 is expected to eq [:frontend, :tooling]3539 path: "app/models/foo", expected_categories: [:backend]3540 is expected to eq [:backend]3541 path: "bin/foo", expected_categories: [:backend]3542 is expected to eq [:backend]3543 path: "config/foo", expected_categories: [:backend]3544 is expected to eq [:backend]3545 path: "lib/foo", expected_categories: [:backend]3546 is expected to eq [:backend]3547 path: "rubocop/foo", expected_categories: [:backend]3548 is expected to eq [:backend]3549 path: ".rubocop.yml", expected_categories: [:backend]3550 is expected to eq [:backend]3551 path: ".rubocop_todo.yml", expected_categories: [:backend]3552 is expected to eq [:backend]3553 path: ".rubocop_todo/cop/name.yml", expected_categories: [:backend]3554 is expected to eq [:backend]3555 path: "spec/foo", expected_categories: [:backend]3556 is expected to eq [:backend]3557 path: "spec/foo/bar", expected_categories: [:backend]3558 is expected to eq [:backend]3559 path: "ee/app/foo", expected_categories: [:backend]3560 is expected to eq [:backend]3561 path: "ee/bin/foo", expected_categories: [:backend]3562 is expected to eq [:backend]3563 path: "ee/spec/foo", expected_categories: [:backend]3564 is expected to eq [:backend]3565 path: "ee/spec/foo/bar", expected_categories: [:backend]3566 is expected to eq [:backend]3567 path: "spec/migrations/foo", expected_categories: [:database]3568 is expected to eq [:database]3569 path: "ee/spec/migrations/foo", expected_categories: [:database]3570 is expected to eq [:database]3571 path: "spec/features/foo", expected_categories: [:test]3572 is expected to eq [:test]3573 path: "ee/spec/features/foo", expected_categories: [:test]3574 is expected to eq [:test]3575 path: "spec/support/shared_examples/features/foo", expected_categories: [:test]3576 is expected to eq [:test]3577 path: "ee/spec/support/shared_examples/features/foo", expected_categories: [:test]3578 is expected to eq [:test]3579 path: "spec/support/shared_contexts/features/foo", expected_categories: [:test]3580 is expected to eq [:test]3581 path: "ee/spec/support/shared_contexts/features/foo", expected_categories: [:test]3582 is expected to eq [:test]3583 path: "spec/support/helpers/features/foo", expected_categories: [:test]3584 is expected to eq [:test]3585 path: "ee/spec/support/helpers/features/foo", expected_categories: [:test]3586 is expected to eq [:test]3587 path: "generator_templates/foo", expected_categories: [:backend]3588 is expected to eq [:backend]3589 path: "vendor/languages.yml", expected_categories: [:backend]3590 is expected to eq [:backend]3591 path: "file_hooks/examples/", expected_categories: [:backend]3592 is expected to eq [:backend]3593 path: "Gemfile", expected_categories: [:backend]3594 is expected to eq [:backend]3595 path: "Gemfile.lock", expected_categories: [:backend]3596 is expected to eq [:backend]3597 path: "Gemfile.checksum", expected_categories: [:backend]3598 is expected to eq [:backend]3599 path: "Rakefile", expected_categories: [:backend]3600 is expected to eq [:backend]3601 path: "FOO_VERSION", expected_categories: [:backend]3602 is expected to eq [:backend]3603 path: "scripts/glfm/bar.rb", expected_categories: [:backend]3604 is expected to eq [:backend]3605 path: "scripts/glfm/bar.js", expected_categories: [:frontend]3606 is expected to eq [:frontend]3607 path: "scripts/lib/glfm/bar.rb", expected_categories: [:backend]3608 is expected to eq [:backend]3609 path: "scripts/lib/glfm/bar.js", expected_categories: [:frontend]3610 is expected to eq [:frontend]3611 path: "scripts/bar.rb", expected_categories: [:backend, :tooling]3612 is expected to eq [:backend, :tooling]3613 path: "scripts/bar.js", expected_categories: [:frontend, :tooling]3614 is expected to eq [:frontend, :tooling]3615 path: "scripts/subdir/bar.rb", expected_categories: [:backend, :tooling]3616 is expected to eq [:backend, :tooling]3617 path: "scripts/subdir/bar.js", expected_categories: [:frontend, :tooling]3618 is expected to eq [:frontend, :tooling]3619 path: "scripts/foo", expected_categories: [:tooling]3620 is expected to eq [:tooling]3621 path: "Dangerfile", expected_categories: [:tooling]3622 is expected to eq [:tooling]3623 path: "danger/bundle_size/Dangerfile", expected_categories: [:tooling]3624 is expected to eq [:tooling]3625 path: "ee/danger/bundle_size/Dangerfile", expected_categories: [:tooling]3626 is expected to eq [:tooling]3627 path: "danger/bundle_size/", expected_categories: [:tooling]3628 is expected to eq [:tooling]3629 path: "ee/danger/bundle_size/", expected_categories: [:tooling]3630 is expected to eq [:tooling]3631 path: ".gitlab-ci.yml", expected_categories: [:tooling]3632 is expected to eq [:tooling]3633 path: ".gitlab/ci/cng.gitlab-ci.yml", expected_categories: [:tooling]3634 is expected to eq [:tooling]3635 path: ".gitlab/ci/ee-specific-checks.gitlab-ci.yml", expected_categories: [:tooling]3636 is expected to eq [:tooling]3637 path: "tooling/danger/foo", expected_categories: [:tooling]3638 is expected to eq [:tooling]3639 path: "ee/tooling/danger/foo", expected_categories: [:tooling]3640 is expected to eq [:tooling]3641 path: "lefthook.yml", expected_categories: [:tooling]3642 is expected to eq [:tooling]3643 path: ".editorconfig", expected_categories: [:tooling]3644 is expected to eq [:tooling]3645 path: "tooling/bin/find_foss_tests", expected_categories: [:tooling]3646 is expected to eq [:tooling]3647 path: ".codeclimate.yml", expected_categories: [:tooling]3648 is expected to eq [:tooling]3649 path: ".gitlab/CODEOWNERS", expected_categories: [:tooling]3650 is expected to eq [:tooling]3651 path: "lib/gitlab/ci/templates/Security/SAST.gitlab-ci.yml", expected_categories: [:ci_template]3652 is expected to eq [:ci_template]3653 path: "lib/gitlab/ci/templates/dotNET-Core.yml", expected_categories: [:ci_template]3654 is expected to eq [:ci_template]3655 path: "ee/FOO_VERSION", expected_categories: [:unknown]3656 is expected to eq [:unknown]3657 path: "db/schema.rb", expected_categories: [:database]3658 is expected to eq [:database]3659 path: "db/structure.sql", expected_categories: [:database]3660 is expected to eq [:database]3661 path: "db/migrate/foo", expected_categories: [:database, :migration]3662 is expected to eq [:database, :migration]3663 path: "db/post_migrate/foo", expected_categories: [:database, :migration]3664 is expected to eq [:database, :migration]3665 path: "ee/db/geo/migrate/foo", expected_categories: [:database, :migration]3666 is expected to eq [:database, :migration]3667 path: "ee/db/geo/post_migrate/foo", expected_categories: [:database, :migration]3668 is expected to eq [:database, :migration]3669 path: "app/models/project_authorization.rb", expected_categories: [:database, :backend]3670 is expected to eq [:database, :backend]3671 path: "app/services/users/refresh_authorized_projects_service.rb", expected_categories: [:database, :backend]3672 is expected to eq [:database, :backend]3673 path: "app/services/authorized_project_update/find_records_due_for_refresh_service.rb", expected_categories: [:database, :backend]3674 is expected to eq [:database, :backend]3675 path: "lib/gitlab/background_migration.rb", expected_categories: [:database, :backend]3676 is expected to eq [:database, :backend]3677 path: "lib/gitlab/background_migration/foo", expected_categories: [:database, :backend]3678 is expected to eq [:database, :backend]3679 path: "ee/lib/gitlab/background_migration/foo", expected_categories: [:database, :backend]3680 is expected to eq [:database, :backend]3681 path: "lib/gitlab/database.rb", expected_categories: [:database, :backend]3682 is expected to eq [:database, :backend]3683 path: "lib/gitlab/database/foo", expected_categories: [:database, :backend]3684 is expected to eq [:database, :backend]3685 path: "ee/lib/gitlab/database/foo", expected_categories: [:database, :backend]3686 is expected to eq [:database, :backend]3687 path: "lib/gitlab/github_import.rb", expected_categories: [:database, :backend]3688 is expected to eq [:database, :backend]3689 path: "lib/gitlab/github_import/foo", expected_categories: [:database, :backend]3690 is expected to eq [:database, :backend]3691 path: "lib/gitlab/sql/foo", expected_categories: [:database, :backend]3692 is expected to eq [:database, :backend]3693 path: "rubocop/cop/migration/foo", expected_categories: [:database]3694 is expected to eq [:database]3695 path: "db/fixtures/foo.rb", expected_categories: [:backend]3696 is expected to eq [:backend]3697 path: "ee/db/fixtures/foo.rb", expected_categories: [:backend]3698 is expected to eq [:backend]3699 path: "qa/foo", expected_categories: [:qa]3700 is expected to eq [:qa]3701 path: "ee/qa/foo", expected_categories: [:qa]3702 is expected to eq [:qa]3703 path: "workhorse/main.go", expected_categories: [:workhorse]3704 is expected to eq [:workhorse]3705 path: "workhorse/internal/upload/upload.go", expected_categories: [:workhorse]3706 is expected to eq [:workhorse]3707 path: "locale/gitlab.pot", expected_categories: [:none]3708 is expected to eq [:none]3709 path: "FOO", expected_categories: [:unknown]3710 is expected to eq [:unknown]3711 path: "foo", expected_categories: [:unknown]3712 is expected to eq [:unknown]3713 path: "foo/bar.rb", expected_categories: [:backend]3714 is expected to eq [:backend]3715 path: "foo/bar.js", expected_categories: [:frontend]3716 is expected to eq [:frontend]3717 path: "foo/bar.txt", expected_categories: [:none]3718 is expected to eq [:none]3719 path: "foo/bar.md", expected_categories: [:none]3720 is expected to eq [:none]3721 path: "ee/config/metrics/counts_7d/20210216174919_g_analytics_issues_weekly.yml", expected_categories: [:product_intelligence]3722 is expected to eq [:product_intelligence]3723 path: "lib/gitlab/usage_data_counters/aggregated_metrics/common.yml", expected_categories: [:product_intelligence]3724 is expected to eq [:product_intelligence]3725 path: "lib/gitlab/usage_data_counters/hll_redis_counter.rb", expected_categories: [:backend, :product_intelligence]3726 is expected to eq [:backend, :product_intelligence]3727 path: "lib/gitlab/tracking.rb", expected_categories: [:backend, :product_intelligence]3728 is expected to eq [:backend, :product_intelligence]3729 path: "lib/gitlab/usage/service_ping_report.rb", expected_categories: [:backend, :product_intelligence]3730 is expected to eq [:backend, :product_intelligence]3731 path: "lib/gitlab/usage/metrics/key_path_processor.rb", expected_categories: [:backend, :product_intelligence]3732 is expected to eq [:backend, :product_intelligence]3733 path: "spec/lib/gitlab/tracking_spec.rb", expected_categories: [:backend, :product_intelligence]3734 is expected to eq [:backend, :product_intelligence]3735 path: "app/helpers/tracking_helper.rb", expected_categories: [:backend, :product_intelligence]3736 is expected to eq [:backend, :product_intelligence]3737 path: "spec/helpers/tracking_helper_spec.rb", expected_categories: [:backend, :product_intelligence]3738 is expected to eq [:backend, :product_intelligence]3739 path: "lib/generators/rails/usage_metric_definition_generator.rb", expected_categories: [:backend, :product_intelligence]3740 is expected to eq [:backend, :product_intelligence]3741 path: "spec/lib/generators/usage_metric_definition_generator_spec.rb", expected_categories: [:backend, :product_intelligence]3742 is expected to eq [:backend, :product_intelligence]3743 path: "config/metrics/schema.json", expected_categories: [:product_intelligence]3744 is expected to eq [:product_intelligence]3745 path: "app/assets/javascripts/tracking/foo.js", expected_categories: [:frontend, :product_intelligence]3746 is expected to eq [:frontend, :product_intelligence]3747 path: "spec/frontend/tracking/foo.js", expected_categories: [:frontend, :product_intelligence]3748 is expected to eq [:frontend, :product_intelligence]3749 path: "spec/frontend/tracking_spec.js", expected_categories: [:frontend, :product_intelligence]3750 is expected to eq [:frontend, :product_intelligence]3751 path: "lib/gitlab/usage_database/foo.rb", expected_categories: [:backend]3752 is expected to eq [:backend]3753 path: "config/metrics/counts_7d/test_metric.yml", expected_categories: [:product_intelligence]3754 is expected to eq [:product_intelligence]3755 path: "config/events/snowplow_event.yml", expected_categories: [:product_intelligence]3756 is expected to eq [:product_intelligence]3757 path: "config/metrics/schema.json", expected_categories: [:product_intelligence]3758 is expected to eq [:product_intelligence]3759 path: "doc/api/usage_data.md", expected_categories: [:product_intelligence]3760 is expected to eq [:product_intelligence]3761 path: "spec/lib/gitlab/usage_data_spec.rb", expected_categories: [:product_intelligence]3762 is expected to eq [:product_intelligence]3763 path: "spec/lib/gitlab/usage/service_ping_report.rb", expected_categories: [:backend, :product_intelligence]3764 is expected to eq [:backend, :product_intelligence]3765 path: "spec/lib/gitlab/usage/metrics/key_path_processor.rb", expected_categories: [:backend, :product_intelligence]3766 is expected to eq [:backend, :product_intelligence]3767 path: "app/models/integration.rb", expected_categories: [:integrations_be, :backend]3768 is expected to eq [:integrations_be, :backend]3769 path: "ee/app/models/integrations/github.rb", expected_categories: [:integrations_be, :backend]3770 is expected to eq [:integrations_be, :backend]3771 path: "ee/app/models/ee/integrations/jira.rb", expected_categories: [:integrations_be, :backend]3772 is expected to eq [:integrations_be, :backend]3773 path: "app/models/integrations/chat_message/pipeline_message.rb", expected_categories: [:integrations_be, :backend]3774 is expected to eq [:integrations_be, :backend]3775 path: "app/models/jira_connect_subscription.rb", expected_categories: [:integrations_be, :backend]3776 is expected to eq [:integrations_be, :backend]3777 path: "app/models/hooks/service_hook.rb", expected_categories: [:integrations_be, :backend]3778 is expected to eq [:integrations_be, :backend]3779 path: "ee/app/models/ee/hooks/system_hook.rb", expected_categories: [:integrations_be, :backend]3780 is expected to eq [:integrations_be, :backend]3781 path: "app/services/concerns/integrations/project_test_data.rb", expected_categories: [:integrations_be, :backend]3782 is expected to eq [:integrations_be, :backend]3783 path: "ee/app/services/ee/integrations/test/project_service.rb", expected_categories: [:integrations_be, :backend]3784 is expected to eq [:integrations_be, :backend]3785 path: "app/controllers/concerns/integrations/actions.rb", expected_categories: [:integrations_be, :backend]3786 is expected to eq [:integrations_be, :backend]3787 path: "ee/app/controllers/concerns/ee/integrations/params.rb", expected_categories: [:integrations_be, :backend]3788 is expected to eq [:integrations_be, :backend]3789 path: "ee/app/controllers/projects/integrations/jira/issues_controller.rb", expected_categories: [:integrations_be, :backend]3790 is expected to eq [:integrations_be, :backend]3791 path: "app/controllers/projects/hooks_controller.rb", expected_categories: [:integrations_be, :backend]3792 is expected to eq [:integrations_be, :backend]3793 path: "app/controllers/admin/hook_logs_controller.rb", expected_categories: [:integrations_be, :backend]3794 is expected to eq [:integrations_be, :backend]3795 path: "app/controllers/groups/settings/integrations_controller.rb", expected_categories: [:integrations_be, :backend]3796 is expected to eq [:integrations_be, :backend]3797 path: "app/controllers/jira_connect/branches_controller.rb", expected_categories: [:integrations_be, :backend]3798 is expected to eq [:integrations_be, :backend]3799 path: "app/controllers/oauth/jira/authorizations_controller.rb", expected_categories: [:integrations_be, :backend]3800 is expected to eq [:integrations_be, :backend]3801 path: "ee/app/finders/projects/integrations/jira/by_ids_finder.rb", expected_categories: [:integrations_be, :database, :backend]3802 is expected to eq [:integrations_be, :database, :backend]3803 path: "app/workers/jira_connect/sync_merge_request_worker.rb", expected_categories: [:integrations_be, :backend]3804 is expected to eq [:integrations_be, :backend]3805 path: "app/workers/propagate_integration_inherit_worker.rb", expected_categories: [:integrations_be, :backend]3806 is expected to eq [:integrations_be, :backend]3807 path: "app/workers/web_hooks/log_execution_worker.rb", expected_categories: [:integrations_be, :backend]3808 is expected to eq [:integrations_be, :backend]3809 path: "app/workers/web_hook_worker.rb", expected_categories: [:integrations_be, :backend]3810 is expected to eq [:integrations_be, :backend]3811 path: "app/workers/project_service_worker.rb", expected_categories: [:integrations_be, :backend]3812 is expected to eq [:integrations_be, :backend]3813 path: "lib/atlassian/jira_connect/serializers/commit_entity.rb", expected_categories: [:integrations_be, :backend]3814 is expected to eq [:integrations_be, :backend]3815 path: "lib/api/entities/project_integration.rb", expected_categories: [:integrations_be, :backend]3816 is expected to eq [:integrations_be, :backend]3817 path: "lib/gitlab/hook_data/note_builder.rb", expected_categories: [:integrations_be, :backend]3818 is expected to eq [:integrations_be, :backend]3819 path: "lib/gitlab/data_builder/note.rb", expected_categories: [:integrations_be, :backend]3820 is expected to eq [:integrations_be, :backend]3821 path: "lib/gitlab/web_hooks/recursion_detection.rb", expected_categories: [:integrations_be, :backend]3822 is expected to eq [:integrations_be, :backend]3823 path: "ee/lib/ee/gitlab/integrations/sti_type.rb", expected_categories: [:integrations_be, :backend]3824 is expected to eq [:integrations_be, :backend]3825 path: "ee/lib/ee/api/helpers/integrations_helpers.rb", expected_categories: [:integrations_be, :backend]3826 is expected to eq [:integrations_be, :backend]3827 path: "ee/app/serializers/integrations/jira_serializers/issue_entity.rb", expected_categories: [:integrations_be, :backend]3828 is expected to eq [:integrations_be, :backend]3829 path: "app/serializers/jira_connect/app_data_serializer.rb", expected_categories: [:integrations_be, :backend]3830 is expected to eq [:integrations_be, :backend]3831 path: "lib/api/github/entities.rb", expected_categories: [:integrations_be, :backend]3832 is expected to eq [:integrations_be, :backend]3833 path: "lib/api/v3/github.rb", expected_categories: [:integrations_be, :backend]3834 is expected to eq [:integrations_be, :backend]3835 path: "app/controllers/clusters/integrations_controller.rb", expected_categories: [:backend]3836 is expected to eq [:backend]3837 path: "app/services/clusters/integrations/prometheus_health_check_service.rb", expected_categories: [:backend]3838 is expected to eq [:backend]3839 path: "app/graphql/types/alert_management/integration_type.rb", expected_categories: [:backend]3840 is expected to eq [:backend]3841 path: "app/views/jira_connect/branches/new.html.haml", expected_categories: [:integrations_fe, :frontend]3842 is expected to eq [:integrations_fe, :frontend]3843 path: "app/views/layouts/jira_connect.html.haml", expected_categories: [:integrations_fe, :frontend]3844 is expected to eq [:integrations_fe, :frontend]3845 path: "app/assets/javascripts/jira_connect/branches/pages/index.vue", expected_categories: [:integrations_fe, :frontend]3846 is expected to eq [:integrations_fe, :frontend]3847 path: "ee/app/views/projects/integrations/jira/issues/show.html.haml", expected_categories: [:integrations_fe, :frontend]3848 is expected to eq [:integrations_fe, :frontend]3849 path: "ee/app/assets/javascripts/integrations/zentao/issues_list/graphql/queries/get_zentao_issues.query.graphql", expected_categories: [:integrations_fe, :frontend]3850 is expected to eq [:integrations_fe, :frontend]3851 path: "app/assets/javascripts/pages/projects/settings/integrations/show/index.js", expected_categories: [:integrations_fe, :frontend]3852 is expected to eq [:integrations_fe, :frontend]3853 path: "ee/app/assets/javascripts/pages/groups/hooks/index.js", expected_categories: [:integrations_fe, :frontend]3854 is expected to eq [:integrations_fe, :frontend]3855 path: "app/views/clusters/clusters/_integrations_tab.html.haml", expected_categories: [:frontend, :backend]3856 is expected to eq [:frontend, :backend]3857 path: "app/assets/javascripts/alerts_settings/graphql/fragments/integration_item.fragment.graphql", expected_categories: [:frontend]3858 is expected to eq [:frontend]3859 path: "app/assets/javascripts/filtered_search/droplab/hook_input.js", expected_categories: [:frontend]3860 is expected to eq [:frontend]3861 path: "app/views/layouts/header/_default.html.haml", expected_categories: [:frontend, :backend]3862 is expected to eq [:frontend, :backend]3863 path: "app/views/layouts/header/_default.html.erb", expected_categories: [:frontend, :backend]3864 is expected to eq [:frontend, :backend]3865 path: "doc/api/graphql/reference/index.md", expected_categories: [:docs]3866 is expected to eq [:docs]3867 path: "doc/api/graphql/reference/some_other_file.txt", expected_categories: [:backend]3868 is expected to eq [:backend]3869 path: "doc/api/openapi/openapi.yaml", expected_categories: [:backend]3870 is expected to eq [:backend]3871 path: "doc/api/openapi/any_other_file.yaml", expected_categories: [:backend]3872 is expected to eq [:backend]3873 having specific changes3874 expected_categories: [:product_intelligence], patch: "+data-track-action", changed_files: ["components/welcome.vue"]3875 has the correct categories3876 expected_categories: [:product_intelligence], patch: "+ data: { track_label:", changed_files: ["admin/groups/_form.html.haml"]3877 has the correct categories3878 expected_categories: [:product_intelligence], patch: "+ Gitlab::Tracking.event", changed_files: ["dashboard/todos_controller.rb", "admin/groups/_form.html.haml"]3879 has the correct categories3880 expected_categories: [:database, :backend, :product_intelligence], patch: "+ count(User.active)", changed_files: ["usage_data.rb", "lib/gitlab/usage_data.rb", "ee/lib/ee/gitlab/usage_data.rb"]3881 has the correct categories3882 expected_categories: [:database, :backend, :product_intelligence], patch: "+ estimate_batch_distinct_count(User.active)", changed_files: ["usage_data.rb"]3883 has the correct categories3884 expected_categories: [:backend, :product_intelligence], patch: "+ alt_usage_data(User.active)", changed_files: ["lib/gitlab/usage_data.rb"]3885 has the correct categories3886 expected_categories: [:backend, :product_intelligence], patch: "+ count(User.active)", changed_files: ["lib/gitlab/usage_data/topology.rb"]3887 has the correct categories3888 expected_categories: [:backend, :product_intelligence], patch: "+ foo_count(User.active)", changed_files: ["lib/gitlab/usage_data.rb"]3889 has the correct categories3890 expected_categories: [:backend], patch: "+ count(User.active)", changed_files: ["user.rb"]3891 has the correct categories3892 expected_categories: [:integrations_be, :database, :migration], patch: "+ add_column :integrations, :foo, :text", changed_files: ["db/migrate/foo.rb"]3893 has the correct categories3894 expected_categories: [:integrations_be, :database, :migration], patch: "+ create_table :zentao_tracker_data do |t|", changed_files: ["ee/db/post_migrate/foo.rb"]3895 has the correct categories3896 expected_categories: [:integrations_be, :backend], patch: "+ Integrations::Foo", changed_files: ["app/foo/bar.rb"]3897 has the correct categories3898 expected_categories: [:integrations_be, :backend], patch: "+ project.execute_hooks(foo, :bar)", changed_files: ["ee/lib/ee/foo.rb"]3899 has the correct categories3900 expected_categories: [:integrations_be, :backend], patch: "+ project.execute_integrations(foo, :bar)", changed_files: ["app/foo.rb"]3901 has the correct categories3902 expected_categories: [:frontend, :product_intelligence], patch: "+ api.trackRedisCounterEvent(\"foo\")", changed_files: ["app/assets/javascripts/telemetry.js", "ee/app/assets/javascripts/mr_widget.vue"]3903 has the correct categories3904 expected_categories: [:frontend, :product_intelligence], patch: "+ api.trackRedisHllUserEvent(\"bar\")", changed_files: ["app/assets/javascripts/telemetry.js", "ee/app/assets/javascripts/mr_widget.vue"]3905 has the correct categories3906 #file_lines3907 returns the chomped file lines3908Milestone Milestoneish3909 #sorted_issues3910 sorts issues by label priority3911 limits issue count and keeps the ordering3912 with attributes visibility3913 #issue_participants_visible_by_user3914 visibility: :public, user_role: nil, result: [:member]3915 returns the proper participants3916 visibility: :public, user_role: :non_member, result: [:member]3917 returns the proper participants3918 visibility: :public, user_role: :guest, result: [:member]3919 returns the proper participants3920 visibility: :public, user_role: :member, result: [:member, :assignee]3921 returns the proper participants3922 visibility: :internal, user_role: nil, result: []3923 returns the proper participants3924 visibility: :internal, user_role: :non_member, result: [:member]3925 returns the proper participants3926 visibility: :internal, user_role: :guest, result: [:member]3927 returns the proper participants3928 visibility: :internal, user_role: :member, result: [:member, :assignee]3929 returns the proper participants3930 visibility: :private, user_role: nil, result: []3931 returns the proper participants3932 visibility: :private, user_role: :non_member, result: []3933 returns the proper participants3934 visibility: :private, user_role: :guest, result: [:member]3935 returns the proper participants3936 visibility: :private, user_role: :member, result: [:member, :assignee]3937 returns the proper participants3938 #issue_labels_visible_by_user3939 visibility: :public, user_role: nil, result: [:label1]3940 returns the proper participants3941 visibility: :public, user_role: :non_member, result: [:label1]3942 returns the proper participants3943 visibility: :public, user_role: :guest, result: [:label1]3944 returns the proper participants3945 visibility: :public, user_role: :member, result: [:label1, :label2]3946 returns the proper participants3947 visibility: :internal, user_role: nil, result: []3948 returns the proper participants3949 visibility: :internal, user_role: :non_member, result: [:label1]3950 returns the proper participants3951 visibility: :internal, user_role: :guest, result: [:label1]3952 returns the proper participants3953 visibility: :internal, user_role: :member, result: [:label1, :label2]3954 returns the proper participants3955 visibility: :private, user_role: nil, result: []3956 returns the proper participants3957 visibility: :private, user_role: :non_member, result: []3958 returns the proper participants3959 visibility: :private, user_role: :guest, result: [:label1]3960 returns the proper participants3961 visibility: :private, user_role: :member, result: [:label1, :label2]3962 returns the proper participants3963 #sorted_merge_requests3964 sorts merge requests by label priority3965 #merge_requests_visible_to_user3966 when project is private3967 does not return any merge request for a non member3968 returns milestone merge requests for a member3969 when project is public3970 when merge requests are available to anyone3971 returns milestone merge requests for a non member3972 when merge requests are available to project members3973 does not return any merge request for a non member3974 returns milestone merge requests for a member3975 when milestone is at parent level group3976 does not return any merge request for a non member3977 returns milestone merge requests for a member3978 #complete?3979 returns false when has items opened3980 returns true when all items are closed3981 #percent_complete3982 with division by zero3983 is expected to eq 03984 #closed_issues_count3985 counts all closed issues including confidential3986 #total_issues_count3987 counts all issues including confidential3988 #total_merge_requests_count3989 counts merge requests3990 #remaining_days3991 shows 0 if no due date3992 shows 0 if expired3993 shows correct remaining days3994 #elapsed_days3995 shows 0 if no start_date set3996 shows 0 if start_date is a future3997 shows correct amount of days3998 #total_time_spent3999 calculates total time spent4000 includes merge request time spent4001 #human_total_time_spent4002 returns nil if no time has been spent4003 #total_time_estimate4004 calculates total estimate4005 includes merge request time estimate4006 #human_total_time_estimate4007 returns nil if no time has been spent4008WebHook4009 associations4010 is expected to have many web_hook_logs4011 validations4012 is expected to validate that :url cannot be empty/falsy4013 only consider these branch filter strategies are valid4014 url_variables4015 is expected to allow :url_variables to be ‹{}›4016 is expected to allow :url_variables to be ‹{"foo" => "bar"}›4017 is expected to allow :url_variables to be ‹{"FOO" => "bar"}›4018 is expected to allow :url_variables to be ‹{"MY_TOKEN" => "bar"}›4019 is expected to allow :url_variables to be ‹{"foo2" => "bar"}›4020 is expected to allow :url_variables to be ‹{"x" => "y"}›4021 is expected to allow :url_variables to be ‹{"x" => "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}›4022 is expected to allow :url_variables to be ‹{"foo" => "bar", "bar" => "baz"}›4023 is expected to allow :url_variables to be ‹{"k1" => "value", "k2" => "value", "k3" => "value", "k4" => "value", "k5" => "value", "k6" => "value", "k7" => "value", "k8" => "value", "k9" => "value", "k10" => "value", "k11" => "value", "k12" => "value", "k13" => "value", "k14" => "value", "k15" => "value", "k16" => "value", "k17" => "value", "k18" => "value", "k19" => "value", "k20" => "value"}›4024 is expected not to allow :url_variables to be ‹[]›4025 is expected not to allow :url_variables to be ‹{"foo" => 1}›4026 is expected not to allow :url_variables to be ‹{"bar" => :baz}›4027 is expected not to allow :url_variables to be ‹{"bar" => nil}›4028 is expected not to allow :url_variables to be ‹{"foo" => ""}›4029 is expected not to allow :url_variables to be ‹{"foo" => "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}›4030 is expected not to allow :url_variables to be ‹{"has spaces" => "foo"}›4031 is expected not to allow :url_variables to be ‹{"" => "foo"}›4032 is expected not to allow :url_variables to be ‹{"1foo" => "foo"}›4033 is expected not to allow :url_variables to be ‹{"k1" => "value", "k2" => "value", "k3" => "value", "k4" => "value", "k5" => "value", "k6" => "value", "k7" => "value", "k8" => "value", "k9" => "value", "k10" => "value", "k11" => "value", "k12" => "value", "k13" => "value", "k14" => "value", "k15" => "value", "k16" => "value", "k17" => "value", "k18" => "value", "k19" => "value", "k20" => "value", "k21" => "value"}›4034 url4035 is expected to allow :url to be ‹"http://example.com"›4036 is expected to allow :url to be ‹"https://example.com"›4037 is expected to allow :url to be ‹" https://example.com "›4038 is expected to allow :url to be ‹"http://test.com/api"›4039 is expected to allow :url to be ‹"http://test.com/api?key=abc"›4040 is expected to allow :url to be ‹"http://test.com/api?key=abc&type=def"›4041 is expected not to allow :url to be ‹"example.com"›4042 is expected not to allow :url to be ‹"ftp://example.com"›4043 is expected not to allow :url to be ‹"herp-and-derp"›4044 strips :url before saving it4045 when url is local4046 is expected not to allow :url to be ‹"http://localhost:9000"›4047 is valid if application settings allow local requests from web hooks4048 when there are URL variables4049 is expected to allow :url to be ‹"http://example.com"›4050 is expected to allow :url to be ‹"http://example.com/{one}/{two}"›4051 is expected to allow :url to be ‹"http://example.com/{one}"›4052 is expected to allow :url to be ‹"http://example.com/{two}"›4053 is expected to allow :url to be ‹"http://user:s3cret@example.com/{two}"›4054 is expected to allow :url to be ‹"http://{one}:{two}@example.com"›4055 is expected not to allow :url to be ‹"http://example.com/{one}/{two}/{three}"›4056 is expected not to allow :url to be ‹"http://example.com/{foo}"›4057 is expected not to allow :url to be ‹"http:{user}:{pwd}//example.com/{foo}"›4058 mentions all missing variable names4059 token4060 is expected to allow :token to be ‹"foobar"›4061 is expected not to allow :token to be ‹"foo\nbar"› or ‹"foo\r\nbar"›4062 push_events_branch_filter4063 with "all branches" strategy4064 is expected to allow :push_events_branch_filter to be ‹"good_branch_name"›, ‹"another/good-branch_name"›, ‹"good branch name"›, ‹"good~branchname"›, ‹"good_branchname("›, ‹"good_branchname["›, or ‹""›4065 with "wildcard" strategy4066 is expected to allow :push_events_branch_filter to be ‹"good_branch_name"›, ‹"another/good-branch_name"›, ‹"good_branch_name("›, or ‹""›4067 is expected not to allow :push_events_branch_filter to be ‹"bad branch name"›, ‹"bad~branchname"›, or ‹"bad_branch_name["›4068 gets rid of whitespace4069 stores whitespace only as empty4070 with "regex" strategy4071 is expected to allow :push_events_branch_filter to be ‹"good_branch_name"›, ‹"another/good-branch_name"›, ‹"good branch name"›, ‹"good~branch~name"›, or ‹""›4072 is expected not to allow :push_events_branch_filter to be ‹"bad_branch_name("› or ‹"bad_branch_name["›4073 encrypted attributes4074 is expected to contain exactly :token, :url, and :url_variables4075 .web_hooks_disable_failed?4076 returns true when feature is enabled for parent4077 execute4078 #execute4079 passes force: false to the web hook service by default4080 passes force: true to the web hook service if required4081 #async_execute4082 does not async execute non-executable hooks4083 #destroy4084 does not cascade to web_hook_logs4085 .executable/.disabled4086 finds the correct set of project hooks4087 when the feature flag is not enabled4088 enabled is the same as all4089 #executable?4090 recent_failures: 0, not_until: :not_set, executable: true4091 has the correct state4092 when the feature flag is enabled for a project4093 has the expected value4094 when the feature flag is not enabled4095 is executable4096 recent_failures: 0, not_until: :past, executable: true4097 has the correct state4098 when the feature flag is enabled for a project4099 has the expected value4100 when the feature flag is not enabled4101 is executable4102 recent_failures: 0, not_until: :future, executable: true4103 has the correct state4104 when the feature flag is enabled for a project4105 has the expected value4106 when the feature flag is not enabled4107 is executable4108 recent_failures: 0, not_until: :now, executable: true4109 has the correct state4110 when the feature flag is enabled for a project4111 has the expected value4112 when the feature flag is not enabled4113 is executable4114 recent_failures: 1, not_until: :not_set, executable: true4115 has the correct state4116 when the feature flag is enabled for a project4117 has the expected value4118 when the feature flag is not enabled4119 is executable4120 recent_failures: 1, not_until: :past, executable: true4121 has the correct state4122 when the feature flag is enabled for a project4123 has the expected value4124 when the feature flag is not enabled4125 is executable4126 recent_failures: 1, not_until: :future, executable: true4127 has the correct state4128 when the feature flag is enabled for a project4129 has the expected value4130 when the feature flag is not enabled4131 is executable4132 recent_failures: 3, not_until: :not_set, executable: true4133 has the correct state4134 when the feature flag is enabled for a project4135 has the expected value4136 when the feature flag is not enabled4137 is executable4138 recent_failures: 3, not_until: :past, executable: true4139 has the correct state4140 when the feature flag is enabled for a project4141 has the expected value4142 when the feature flag is not enabled4143 is executable4144 recent_failures: 3, not_until: :future, executable: true4145 has the correct state4146 when the feature flag is enabled for a project4147 has the expected value4148 when the feature flag is not enabled4149 is executable4150 recent_failures: 4, not_until: :not_set, executable: false4151 has the correct state4152 when the feature flag is enabled for a project4153 has the expected value4154 when the feature flag is not enabled4155 is executable4156 recent_failures: 4, not_until: :past, executable: true4157 has the correct state4158 when the feature flag is enabled for a project4159 has the expected value4160 when the feature flag is not enabled4161 is executable4162 recent_failures: 4, not_until: :now, executable: false4163 has the correct state4164 when the feature flag is enabled for a project4165 has the expected value4166 when the feature flag is not enabled4167 is executable4168 recent_failures: 4, not_until: :future, executable: false4169 has the correct state4170 when the feature flag is enabled for a project4171 has the expected value4172 when the feature flag is not enabled4173 is executable4174 #next_backoff4175 when there was no last backoff4176 is 10 minutes4177 when we have backed off once4178 is twice the initial value4179 when we have backed off 3 times4180 grows exponentially4181 when the previous backoff was large4182 does not exceed the max backoff value4183 #enable!4184 makes a hook executable if it was marked as failed4185 makes a hook executable if it is currently backed off4186 does not update hooks unless necessary4187 is expected to change `ProjectHook#executable?` from false to true4188 #backoff!4189 when we have not backed off before4190 does not disable the hook4191 increments the recent_failures count4192 when the recent failure value is the max value of a smallint4193 reduces to MAX_FAILURES4194 when the recent failure value is MAX_FAILURES4195 does not change recent_failures4196 when we have exhausted the grace period4197 sets disabled_until to the next backoff4198 increments the backoff count4199 is expected to change `ProjectHook#backoff_count` by 14200 when the hook is permanently disabled4201 does not set disabled_until4202 does not increment the backoff count4203 when we have backed off MAX_FAILURES times4204 does not let the backoff count exceed the maximum failure count4205 does not change disabled_until4206 changes disabled_until when it has elapsed4207 #failed!4208 increments the failure count4209 does not update the hook if the the failure count exceeds the maximum value4210 is expected to change `ProjectHook#recent_failures` by 14211 when the recent failure value is the max value of a smallint4212 does not change recent_failures4213 #disable!4214 disables a hook4215 is expected to change `ProjectHook#executable?` from true to false4216 #temporarily_disabled?4217 is false when not temporarily disabled4218 allows FAILURE_THRESHOLD initial failures before we back-off4219 when hook has been told to back off4220 is true4221 is false when `web_hooks_disable_failed` flag is disabled4222 #permanently_disabled?4223 is false when not disabled4224 when hook has been disabled4225 is true4226 is false when `web_hooks_disable_failed` flag is disabled4227 #rate_limited?4228 is false when hook has not been rate limited4229 is true when hook has been rate limited4230 #rate_limit4231 returns the hook rate limit4232 #alert_status4233 is expected to eq :executable4234 when hook has been disabled4235 is expected to eq :disabled4236 when hook has been backed off4237 is expected to eq :temporarily_disabled4238 #to_json4239 does not error4240 does not error, when serializing unsafe attributes4241 does not contain binary attributes4242 does not contain binary attributes, even when serializing unsafe attributes4243 #interpolated_url4244 is not vulnerable to malicious input4245 when the hook URL does not contain variables4246 is expected to have attributes {:interpolated_url => "http://example.com"}4247 when the hook URL contains variables4248 is expected to have attributes {:interpolated_url => "http://example.com/abc/resource?token=xyz"}4249 when a variable is missing4250 raises an error4251 when the URL appears to include percent formatting4252 succeeds, interpolates correctly4253 #update_last_failure4254 is a method of this class4255 #masked_token4256 is expected to be nil4257 with a token4258 is expected to eq "************"4259DesignManagement::CopyDesignCollection::CopyService4260 returns an error response4261 when user has permission to read the design collection4262 returns an error response4263 when the user also has permission to admin the target issue4264 returns an error response4265 when the target design collection has been queued4266 returns an error response4267 when design collection has designs4268 returns a success response4269 creates a design repository for the target project4270 copies the designs correctly4271 copies the design versions correctly4272 copies the design actions correctly4273 copies design notes correctly4274 links the LfsObjects4275 copies the Git repository data4276 creates a default branch if none previously existed4277 does not create default branch when one exists4278 leaves the design collection in the correct copy state4279 when target issue already has designs4280 returns an error response4281 when target project already has designs4282 sets IIDs for new designs above existing ones4283 does not allow for IID collisions4284 when the target project already has a design repository4285 returns a success response4286 rollback4287 returns an error response4288 rollsback all PostgreSQL data created4289 does not alter master branch4290 sets the design collection copy state4291 Alert if schema changes4292 is expected to contain exactly "id", "project_id", "issue_id", "filename", "relative_position", and "iid"4293 is expected to contain exactly "id", "design_id", "version_id", "event", and "image_v432x230"4294 is expected to contain exactly "id", "sha", "issue_id", "created_at", and "author_id"4295Snippets::CreateService4296 #execute4297 when ProjectSnippet4298 behaves like a service that creates a snippet4299 creates a snippet with the provided attributes4300 behaves like public visibility level restrictions apply4301 when user is not an admin4302 responds with an error4303 does not create a public snippet4304 when user is an admin4305 responds with success4306 creates a public snippet4307 when visibility level is passed as a string4308 assigns the correct visibility level4309 behaves like checking spam4310 executes SpamActionService4311 behaves like snippet create data is tracked4312 increments count when create succeeds4313 when create fails4314 does not increment count4315 behaves like an error service response when save fails4316 responds with an error4317 does not create the snippet4318 behaves like creates repository and files4319 creates repository4320 commits the files to the repository4321 when repository creation action fails4322 does not create the snippet4323 returns a generic creation error4324 does not return a snippet with an id4325 when repository creation fails with invalid file name4326 returns an appropriate error4327 when the commit action fails4328 does not create the snippet4329 destroys the created repository4330 destroys the snippet_repository4331 logs the error4332 returns a generic error4333 when snippet creation fails4334 does not create repository4335 behaves like after_save callback to store_mentions4336 when mentionable attributes change4337 saves mentions4338 when mentionable attributes do not change4339 does not call store_mentions4340 when save fails4341 does not call store_mentions4342 behaves like when snippet_actions param is present4343 creates a snippet with the provided attributes4344 commit the files to the repository4345 when content or file_name params are present4346 a validation error is raised4347 when snippet_actions param is invalid4348 a validation error is raised4349 when snippet_actions contain an action different from "create"4350 a validation error is raised4351 when "create" operation does not have file_path or is empty4352 generates the file path for the files4353 behaves like invalid params error response4354 responds to errors appropriately4355 when uploaded files are passed to the service4356 does not move uploaded files to the snippet4357 when PersonalSnippet4358 behaves like a service that creates a snippet4359 creates a snippet with the provided attributes4360 behaves like public visibility level restrictions apply4361 when user is not an admin4362 responds with an error4363 does not create a public snippet4364 when user is an admin4365 responds with success4366 creates a public snippet4367 when visibility level is passed as a string4368 assigns the correct visibility level4369 behaves like checking spam4370 executes SpamActionService4371 behaves like snippet create data is tracked4372 increments count when create succeeds4373 when create fails4374 does not increment count4375 behaves like an error service response when save fails4376 responds with an error4377 does not create the snippet4378 behaves like creates repository and files4379 creates repository4380 commits the files to the repository4381 when repository creation action fails4382 does not create the snippet4383 returns a generic creation error4384 does not return a snippet with an id4385 when repository creation fails with invalid file name4386 returns an appropriate error4387 when the commit action fails4388 does not create the snippet4389 destroys the created repository4390 destroys the snippet_repository4391 logs the error4392 returns a generic error4393 when snippet creation fails4394 does not create repository4395 behaves like after_save callback to store_mentions4396 when mentionable attributes change4397 saves mentions4398 when mentionable attributes do not change4399 does not call store_mentions4400 when save fails4401 does not call store_mentions4402 behaves like when snippet_actions param is present4403 creates a snippet with the provided attributes4404 commit the files to the repository4405 when content or file_name params are present4406 a validation error is raised4407 when snippet_actions param is invalid4408 a validation error is raised4409 when snippet_actions contain an action different from "create"4410 a validation error is raised4411 when "create" operation does not have file_path or is empty4412 generates the file path for the files4413 behaves like invalid params error response4414 responds to errors appropriately4415 when the snippet description contains files4416 stores the snippet description correctly4417 when there is a validation error4418 does not move uploaded files to the snippet4419MergeRequests::AddTodoWhenBuildFailsService4420 #execute4421 commit status with ref4422 notifies the todo service4423 commit status with non-HEAD ref4424 does not notify the todo service4425 commit status without ref4426 does not notify the todo service4427 when commit status is a build allowed to fail4428 does not create todo4429 when build belongs to a merge request pipeline4430 notifies the todo service4431 #close4432 commit status with ref4433 notifies the todo service4434 commit status with non-HEAD ref4435 does not notify the todo service4436 commit status without ref4437 does not notify the todo service4438 when build belongs to a merge request pipeline4439 notifies the todo service4440 #close_all4441 when using pipeline that belongs to merge request4442 resolves todos about failed builds for pipeline4443 when pipeline is not related to merge request4444 does not resolve any todos about failed builds4445Banzai::Filter::References::SnippetReferenceFilter4446 requires project context4447 ignores valid references contained inside 'pre' element4448 ignores valid references contained inside 'code' element4449 ignores valid references contained inside 'a' element4450 ignores valid references contained inside 'style' element4451 internal reference4452 links to a valid reference4453 links with adjacent text4454 ignores invalid snippet IDs4455 includes a title attribute4456 escapes the title attribute4457 includes default classes4458 includes a data-project attribute4459 includes a data-snippet attribute4460 supports an :only_path context4461 cross-project / cross-namespace complete reference4462 links to a valid reference4463 link has valid text4464 has valid text4465 ignores invalid snippet IDs on the referenced project4466 cross-project / same-namespace complete reference4467 links to a valid reference4468 link has valid text4469 has valid text4470 ignores invalid snippet IDs on the referenced project4471 cross-project shorthand reference4472 links to a valid reference4473 link has valid text4474 has valid text4475 ignores invalid snippet IDs on the referenced project4476 cross-project URL reference4477 links to a valid reference4478 links with adjacent text4479 ignores invalid snippet IDs on the referenced project4480 group context4481 links to a valid reference4482 ignores internal references4483 checking N+14484 does not have N+1 per multiple references per project4485Import/Export Project configuration4486 relation_path: "project", relation_name: :project4487 where relation project4488 does not have prohibited keys4489 relation_path: "project.labels", relation_name: :labels4490 where relation project.labels4491 does not have prohibited keys4492 relation_path: "project.labels.priorities", relation_name: :priorities4493 where relation project.labels.priorities4494 does not have prohibited keys4495 relation_path: "project.milestones", relation_name: :milestones4496 where relation project.milestones4497 does not have prohibited keys4498 relation_path: "project.milestones.events", relation_name: :events4499 where relation project.milestones.events4500 does not have prohibited keys4501 relation_path: "project.milestones.events.push_event_payload", relation_name: :push_event_payload4502 where relation project.milestones.events.push_event_payload4503 does not have prohibited keys4504 relation_path: "project.issues", relation_name: :issues4505 where relation project.issues4506 does not have prohibited keys4507 relation_path: "project.issues.events", relation_name: :events4508 where relation project.issues.events4509 does not have prohibited keys4510 relation_path: "project.issues.events.push_event_payload", relation_name: :push_event_payload4511 where relation project.issues.events.push_event_payload4512 does not have prohibited keys4513 relation_path: "project.issues.timelogs", relation_name: :timelogs4514 where relation project.issues.timelogs4515 does not have prohibited keys4516 relation_path: "project.issues.notes", relation_name: :notes4517 where relation project.issues.notes4518 does not have prohibited keys4519 relation_path: "project.issues.notes.award_emoji", relation_name: :award_emoji4520 where relation project.issues.notes.award_emoji4521 does not have prohibited keys4522 relation_path: "project.issues.notes.system_note_metadata", relation_name: :system_note_metadata4523 where relation project.issues.notes.system_note_metadata4524 does not have prohibited keys4525 relation_path: "project.issues.notes.events", relation_name: :events4526 where relation project.issues.notes.events4527 does not have prohibited keys4528 relation_path: "project.issues.notes.events.push_event_payload", relation_name: :push_event_payload4529 where relation project.issues.notes.events.push_event_payload4530 does not have prohibited keys4531 relation_path: "project.issues.label_links", relation_name: :label_links4532 where relation project.issues.label_links4533 does not have prohibited keys4534 relation_path: "project.issues.label_links.label", relation_name: :label4535 where relation project.issues.label_links.label4536 does not have prohibited keys4537 relation_path: "project.issues.label_links.label.priorities", relation_name: :priorities4538 where relation project.issues.label_links.label.priorities4539 does not have prohibited keys4540 relation_path: "project.issues.milestone", relation_name: :milestone4541 where relation project.issues.milestone4542 does not have prohibited keys4543 relation_path: "project.issues.milestone.events", relation_name: :events4544 where relation project.issues.milestone.events4545 does not have prohibited keys4546 relation_path: "project.issues.milestone.events.push_event_payload", relation_name: :push_event_payload4547 where relation project.issues.milestone.events.push_event_payload4548 does not have prohibited keys4549 relation_path: "project.issues.resource_label_events", relation_name: :resource_label_events4550 where relation project.issues.resource_label_events4551 does not have prohibited keys4552 relation_path: "project.issues.resource_label_events.label", relation_name: :label4553 where relation project.issues.resource_label_events.label4554 does not have prohibited keys4555 relation_path: "project.issues.resource_label_events.label.priorities", relation_name: :priorities4556 where relation project.issues.resource_label_events.label.priorities4557 does not have prohibited keys4558 relation_path: "project.issues.resource_milestone_events", relation_name: :resource_milestone_events4559 where relation project.issues.resource_milestone_events4560 does not have prohibited keys4561 relation_path: "project.issues.resource_milestone_events.milestone", relation_name: :milestone4562 where relation project.issues.resource_milestone_events.milestone4563 does not have prohibited keys4564 relation_path: "project.issues.resource_state_events", relation_name: :resource_state_events4565 where relation project.issues.resource_state_events4566 does not have prohibited keys4567 relation_path: "project.issues.designs", relation_name: :designs4568 where relation project.issues.designs4569 does not have prohibited keys4570 relation_path: "project.issues.designs.notes", relation_name: :notes4571 where relation project.issues.designs.notes4572 does not have prohibited keys4573 relation_path: "project.issues.designs.notes.events", relation_name: :events4574 where relation project.issues.designs.notes.events4575 does not have prohibited keys4576 relation_path: "project.issues.designs.notes.events.push_event_payload", relation_name: :push_event_payload4577 where relation project.issues.designs.notes.events.push_event_payload4578 does not have prohibited keys4579 relation_path: "project.issues.design_versions", relation_name: :design_versions4580 where relation project.issues.design_versions4581 does not have prohibited keys4582 relation_path: "project.issues.design_versions.actions", relation_name: :actions4583 where relation project.issues.design_versions.actions4584 does not have prohibited keys4585 relation_path: "project.issues.design_versions.actions.design", relation_name: :design4586 where relation project.issues.design_versions.actions.design4587 does not have prohibited keys4588 relation_path: "project.issues.issue_assignees", relation_name: :issue_assignees4589 where relation project.issues.issue_assignees4590 does not have prohibited keys4591 relation_path: "project.issues.zoom_meetings", relation_name: :zoom_meetings4592 where relation project.issues.zoom_meetings4593 does not have prohibited keys4594 relation_path: "project.issues.sentry_issue", relation_name: :sentry_issue4595 where relation project.issues.sentry_issue4596 does not have prohibited keys4597 relation_path: "project.issues.award_emoji", relation_name: :award_emoji4598 where relation project.issues.award_emoji4599 does not have prohibited keys4600 relation_path: "project.issues.epic_issue", relation_name: :epic_issue4601 where relation project.issues.epic_issue4602 does not have prohibited keys4603 relation_path: "project.issues.epic_issue.epic", relation_name: :epic4604 where relation project.issues.epic_issue.epic4605 does not have prohibited keys4606 relation_path: "project.issues.issuable_sla", relation_name: :issuable_sla4607 where relation project.issues.issuable_sla4608 does not have prohibited keys4609 relation_path: "project.issues.iteration", relation_name: :iteration4610 where relation project.issues.iteration4611 does not have prohibited keys4612 relation_path: "project.issues.iteration.iterations_cadence", relation_name: :iterations_cadence4613 where relation project.issues.iteration.iterations_cadence4614 does not have prohibited keys4615 relation_path: "project.issues.resource_iteration_events", relation_name: :resource_iteration_events4616 where relation project.issues.resource_iteration_events4617 does not have prohibited keys4618 relation_path: "project.issues.resource_iteration_events.iteration", relation_name: :iteration4619 where relation project.issues.resource_iteration_events.iteration4620 does not have prohibited keys4621 relation_path: "project.issues.resource_iteration_events.iteration.iterations_cadence", relation_name: :iterations_cadence4622 where relation project.issues.resource_iteration_events.iteration.iterations_cadence4623 does not have prohibited keys4624 relation_path: "project.snippets", relation_name: :snippets4625 where relation project.snippets4626 does not have prohibited keys4627 relation_path: "project.snippets.award_emoji", relation_name: :award_emoji4628 where relation project.snippets.award_emoji4629 does not have prohibited keys4630 relation_path: "project.snippets.notes", relation_name: :notes4631 where relation project.snippets.notes4632 does not have prohibited keys4633 relation_path: "project.snippets.notes.award_emoji", relation_name: :award_emoji4634 where relation project.snippets.notes.award_emoji4635 does not have prohibited keys4636 relation_path: "project.releases", relation_name: :releases4637 where relation project.releases4638 does not have prohibited keys4639 relation_path: "project.releases.links", relation_name: :links4640 where relation project.releases.links4641 does not have prohibited keys4642 relation_path: "project.releases.milestone_releases", relation_name: :milestone_releases4643 where relation project.releases.milestone_releases4644 does not have prohibited keys4645 relation_path: "project.releases.milestone_releases.milestone", relation_name: :milestone4646 where relation project.releases.milestone_releases.milestone4647 does not have prohibited keys4648 relation_path: "project.project_members", relation_name: :project_members4649 where relation project.project_members4650 does not have prohibited keys4651 relation_path: "project.project_members.user", relation_name: :user4652 where relation project.project_members.user4653 does not have prohibited keys4654 relation_path: "project.merge_requests", relation_name: :merge_requests4655 where relation project.merge_requests4656 does not have prohibited keys4657 relation_path: "project.merge_requests.approvals", relation_name: :approvals4658 where relation project.merge_requests.approvals4659 does not have prohibited keys4660 relation_path: "project.merge_requests.metrics", relation_name: :metrics4661 where relation project.merge_requests.metrics4662 does not have prohibited keys4663 relation_path: "project.merge_requests.award_emoji", relation_name: :award_emoji4664 where relation project.merge_requests.award_emoji4665 does not have prohibited keys4666 relation_path: "project.merge_requests.merge_request_assignees", relation_name: :merge_request_assignees4667 where relation project.merge_requests.merge_request_assignees4668 does not have prohibited keys4669 relation_path: "project.merge_requests.merge_request_reviewers", relation_name: :merge_request_reviewers4670 where relation project.merge_requests.merge_request_reviewers4671 does not have prohibited keys4672 relation_path: "project.merge_requests.notes", relation_name: :notes4673 where relation project.merge_requests.notes4674 does not have prohibited keys4675 relation_path: "project.merge_requests.notes.award_emoji", relation_name: :award_emoji4676 where relation project.merge_requests.notes.award_emoji4677 does not have prohibited keys4678 relation_path: "project.merge_requests.notes.system_note_metadata", relation_name: :system_note_metadata4679 where relation project.merge_requests.notes.system_note_metadata4680 does not have prohibited keys4681 relation_path: "project.merge_requests.notes.events", relation_name: :events4682 where relation project.merge_requests.notes.events4683 does not have prohibited keys4684 relation_path: "project.merge_requests.notes.events.push_event_payload", relation_name: :push_event_payload4685 where relation project.merge_requests.notes.events.push_event_payload4686 does not have prohibited keys4687 relation_path: "project.merge_requests.notes.suggestions", relation_name: :suggestions4688 where relation project.merge_requests.notes.suggestions4689 does not have prohibited keys4690 relation_path: "project.merge_requests.merge_request_diff", relation_name: :merge_request_diff4691 where relation project.merge_requests.merge_request_diff4692 does not have prohibited keys4693 relation_path: "project.merge_requests.merge_request_diff.merge_request_diff_commits", relation_name: :merge_request_diff_commits4694 where relation project.merge_requests.merge_request_diff.merge_request_diff_commits4695 does not have prohibited keys4696 relation_path: "project.merge_requests.merge_request_diff.merge_request_diff_commits.commit_author", relation_name: :commit_author4697 where relation project.merge_requests.merge_request_diff.merge_request_diff_commits.commit_author4698 does not have prohibited keys4699 relation_path: "project.merge_requests.merge_request_diff.merge_request_diff_commits.committer", relation_name: :committer4700 where relation project.merge_requests.merge_request_diff.merge_request_diff_commits.committer4701 does not have prohibited keys4702 relation_path: "project.merge_requests.merge_request_diff.merge_request_diff_files", relation_name: :merge_request_diff_files4703 where relation project.merge_requests.merge_request_diff.merge_request_diff_files4704 does not have prohibited keys4705 relation_path: "project.merge_requests.events", relation_name: :events4706 where relation project.merge_requests.events4707 does not have prohibited keys4708 relation_path: "project.merge_requests.events.push_event_payload", relation_name: :push_event_payload4709 where relation project.merge_requests.events.push_event_payload4710 does not have prohibited keys4711 relation_path: "project.merge_requests.timelogs", relation_name: :timelogs4712 where relation project.merge_requests.timelogs4713 does not have prohibited keys4714 relation_path: "project.merge_requests.label_links", relation_name: :label_links4715 where relation project.merge_requests.label_links4716 does not have prohibited keys4717 relation_path: "project.merge_requests.label_links.label", relation_name: :label4718 where relation project.merge_requests.label_links.label4719 does not have prohibited keys4720 relation_path: "project.merge_requests.label_links.label.priorities", relation_name: :priorities4721 where relation project.merge_requests.label_links.label.priorities4722 does not have prohibited keys4723 relation_path: "project.merge_requests.milestone", relation_name: :milestone4724 where relation project.merge_requests.milestone4725 does not have prohibited keys4726 relation_path: "project.merge_requests.milestone.events", relation_name: :events4727 where relation project.merge_requests.milestone.events4728 does not have prohibited keys4729 relation_path: "project.merge_requests.milestone.events.push_event_payload", relation_name: :push_event_payload4730 where relation project.merge_requests.milestone.events.push_event_payload4731 does not have prohibited keys4732 relation_path: "project.merge_requests.resource_label_events", relation_name: :resource_label_events4733 where relation project.merge_requests.resource_label_events4734 does not have prohibited keys4735 relation_path: "project.merge_requests.resource_label_events.label", relation_name: :label4736 where relation project.merge_requests.resource_label_events.label4737 does not have prohibited keys4738 relation_path: "project.merge_requests.resource_label_events.label.priorities", relation_name: :priorities4739 where relation project.merge_requests.resource_label_events.label.priorities4740 does not have prohibited keys4741 relation_path: "project.merge_requests.resource_milestone_events", relation_name: :resource_milestone_events4742 where relation project.merge_requests.resource_milestone_events4743 does not have prohibited keys4744 relation_path: "project.merge_requests.resource_milestone_events.milestone", relation_name: :milestone4745 where relation project.merge_requests.resource_milestone_events.milestone4746 does not have prohibited keys4747 relation_path: "project.merge_requests.resource_state_events", relation_name: :resource_state_events4748 where relation project.merge_requests.resource_state_events4749 does not have prohibited keys4750 relation_path: "project.external_pull_requests", relation_name: :external_pull_requests4751 where relation project.external_pull_requests4752 does not have prohibited keys4753 relation_path: "project.ci_pipelines", relation_name: :ci_pipelines4754 where relation project.ci_pipelines4755 does not have prohibited keys4756 relation_path: "project.ci_pipelines.notes", relation_name: :notes4757 where relation project.ci_pipelines.notes4758 does not have prohibited keys4759 relation_path: "project.ci_pipelines.notes.events", relation_name: :events4760 where relation project.ci_pipelines.notes.events4761 does not have prohibited keys4762 relation_path: "project.ci_pipelines.notes.events.push_event_payload", relation_name: :push_event_payload4763 where relation project.ci_pipelines.notes.events.push_event_payload4764 does not have prohibited keys4765 relation_path: "project.ci_pipelines.stages", relation_name: :stages4766 where relation project.ci_pipelines.stages4767 does not have prohibited keys4768 relation_path: "project.ci_pipelines.stages.statuses", relation_name: :statuses4769 where relation project.ci_pipelines.stages.statuses4770 does not have prohibited keys4771 relation_path: "project.ci_pipelines.external_pull_request", relation_name: :external_pull_request4772 where relation project.ci_pipelines.external_pull_request4773 does not have prohibited keys4774 relation_path: "project.ci_pipelines.merge_request", relation_name: :merge_request4775 where relation project.ci_pipelines.merge_request4776 does not have prohibited keys4777 relation_path: "project.ci_pipelines.pipeline_metadata", relation_name: :pipeline_metadata4778 where relation project.ci_pipelines.pipeline_metadata4779 does not have prohibited keys4780 relation_path: "project.auto_devops", relation_name: :auto_devops4781 where relation project.auto_devops4782 does not have prohibited keys4783 relation_path: "project.pipeline_schedules", relation_name: :pipeline_schedules4784 where relation project.pipeline_schedules4785 does not have prohibited keys4786 relation_path: "project.container_expiration_policy", relation_name: :container_expiration_policy4787 where relation project.container_expiration_policy4788 does not have prohibited keys4789 relation_path: "project.protected_branches", relation_name: :protected_branches4790 where relation project.protected_branches4791 does not have prohibited keys4792 relation_path: "project.protected_branches.merge_access_levels", relation_name: :merge_access_levels4793 where relation project.protected_branches.merge_access_levels4794 does not have prohibited keys4795 relation_path: "project.protected_branches.push_access_levels", relation_name: :push_access_levels4796 where relation project.protected_branches.push_access_levels4797 does not have prohibited keys4798 relation_path: "project.protected_branches.unprotect_access_levels", relation_name: :unprotect_access_levels4799 where relation project.protected_branches.unprotect_access_levels4800 does not have prohibited keys4801 relation_path: "project.protected_tags", relation_name: :protected_tags4802 where relation project.protected_tags4803 does not have prohibited keys4804 relation_path: "project.protected_tags.create_access_levels", relation_name: :create_access_levels4805 where relation project.protected_tags.create_access_levels4806 does not have prohibited keys4807 relation_path: "project.project_feature", relation_name: :project_feature4808 where relation project.project_feature4809 does not have prohibited keys4810 relation_path: "project.custom_attributes", relation_name: :custom_attributes4811 where relation project.custom_attributes4812 does not have prohibited keys4813 relation_path: "project.prometheus_metrics", relation_name: :prometheus_metrics4814 where relation project.prometheus_metrics4815 does not have prohibited keys4816 relation_path: "project.project_badges", relation_name: :project_badges4817 where relation project.project_badges4818 does not have prohibited keys4819 relation_path: "project.ci_cd_settings", relation_name: :ci_cd_settings4820 where relation project.ci_cd_settings4821 does not have prohibited keys4822 relation_path: "project.error_tracking_setting", relation_name: :error_tracking_setting4823 where relation project.error_tracking_setting4824 does not have prohibited keys4825 relation_path: "project.metrics_setting", relation_name: :metrics_setting4826 where relation project.metrics_setting4827 does not have prohibited keys4828 relation_path: "project.boards", relation_name: :boards4829 where relation project.boards4830 does not have prohibited keys4831 relation_path: "project.boards.lists", relation_name: :lists4832 where relation project.boards.lists4833 does not have prohibited keys4834 relation_path: "project.boards.lists.label", relation_name: :label4835 where relation project.boards.lists.label4836 does not have prohibited keys4837 relation_path: "project.boards.lists.label.priorities", relation_name: :priorities4838 where relation project.boards.lists.label.priorities4839 does not have prohibited keys4840 relation_path: "project.boards.lists.milestone", relation_name: :milestone4841 where relation project.boards.lists.milestone4842 does not have prohibited keys4843 relation_path: "project.boards.milestone", relation_name: :milestone4844 where relation project.boards.milestone4845 does not have prohibited keys4846 relation_path: "project.service_desk_setting", relation_name: :service_desk_setting4847 where relation project.service_desk_setting4848 does not have prohibited keys4849 relation_path: "project.protected_environments", relation_name: :protected_environments4850 where relation project.protected_environments4851 does not have prohibited keys4852 relation_path: "project.protected_environments.deploy_access_levels", relation_name: :deploy_access_levels4853 where relation project.protected_environments.deploy_access_levels4854 does not have prohibited keys4855 relation_path: "project.security_setting", relation_name: :security_setting4856 where relation project.security_setting4857 does not have prohibited keys4858 relation_path: "project.push_rule", relation_name: :push_rule4859 where relation project.push_rule4860 does not have prohibited keys4861GroupMemberPolicy4862 with anonymous user4863 is expected to be allowed :read_group4864 design management is enabled4865 is expected to be allowed :read_design_activity4866 for a private group4867 is expected not to be allowed :destroy_group_member4868 for an internal group4869 is expected not to be allowed :destroy_group_member4870 with guest user, for own membership4871 is expected not to be allowed :update_group_member4872 is expected to be allowed :destroy_group_member4873 with guest user, for other membership4874 is expected not to be allowed :update_group_member4875 is expected to be allowed :read_group4876 for access requests4877 for own access request4878 is expected to be allowed :withdraw_member_access_request4879 for another user's access request4880 is expected not to be allowed :withdraw_member_access_request4881 for own, valid membership4882 is expected not to be allowed :withdraw_member_access_request4883 with bot user4884 is expected to be allowed :destroy_project_bot_member4885 with anonymous bot user4886 is expected not to be allowed :destroy_project_bot_member4887 with one owner4888 is expected not to be allowed :destroy_group_member4889 is expected to be allowed :read_group4890 with one blocked owner4891 is expected not to be allowed :destroy_group_member4892 is expected not to be allowed :read_group4893 with more than one owner4894 is expected to be allowed :destroy_group_member4895 is expected not to be allowed :destroy_project_bot_member4896 with the group parent4897 is expected to be allowed :update_group_member4898 without group parent4899 is expected not to be allowed :update_group_member4900 without group parent with two owners4901 is expected to be allowed :update_group_member4902Lfs::FileTransformer4903 #new_file4904 with lfs disabled4905 skips gitattributes check4906 returns untransformed content4907 returns untransformed encoding4908 with lfs enabled4909 reuses cached gitattributes4910 creates an LfsObject with the file's content4911 returns an LFS pointer4912 returns LFS pointer encoding as text4913 links LfsObjects to project4914 saves the repository_type to LfsObjectsProject4915 when an actual file is passed4916 creates an LfsObject with the file's content4917 when repository is a design repository4918 creates an LfsObject with the file's content4919 saves the correct repository_type to LfsObjectsProject4920 when doesn't use LFS4921 doesn't create LFS pointers4922 when LfsObject already exists4923 links LfsObjects to project4924 when the LfsObject is already linked to project4925 and the service is called again with the same repository type4926 is expected not to change `project.lfs_objects.count`4927 does not create a new LfsObjectsProject record4928 and the service is called again with a different repository type4929 is expected not to change `project.lfs_objects.count`4930 creates a new LfsObjectsProject record4931 sets the correct repository_type on the new LfsObjectsProject record4932Projects::LfsPointers::LfsDownloadService4933 #execute4934 when file download succeeds4935 has the same oid4936 has the same size4937 stores the content4938 streams the download4939 skips read_total_timeout4940 behaves like lfs object is created4941 creates and associate the LFS object to project4942 returns success result4943 behaves like lfs temporal file is removed4944 is expected to equal false4945 when file download fails4946 raise StandardError exception4947 behaves like no lfs object is created4948 is expected not to change `LfsObject.count`4949 returns error result4950 an error is logged4951 behaves like lfs temporal file is removed4952 is expected to equal false4953 when file download returns a redirect4954 correctly stores lfs object4955 behaves like lfs object is created4956 creates and associate the LFS object to project4957 returns success result4958 behaves like lfs temporal file is removed4959 is expected to equal false4960 when downloaded lfs file has a different size4961 raise SizeError exception4962 behaves like no lfs object is created4963 is expected not to change `LfsObject.count`4964 returns error result4965 an error is logged4966 behaves like lfs temporal file is removed4967 is expected to equal false4968 when downloaded lfs file has a different oid4969 raise OidError exception4970 behaves like no lfs object is created4971 is expected not to change `LfsObject.count`4972 returns error result4973 an error is logged4974 behaves like lfs temporal file is removed4975 is expected to equal false4976 when an lfs object with the same oid already exists4977 does not update the file attached to the existing LfsObject4978 behaves like no lfs object is created4979 is expected not to change `LfsObject.count`4980 returns error result4981 an error is logged4982 behaves like lfs temporal file is removed4983 is expected to equal false4984 when credentials present4985 the request adds authorization headers4986 when Authorization header is present4987 request uses the header auth4988 when localhost requests are allowed4989 behaves like lfs object is created4990 creates and associate the LFS object to project4991 returns success result4992 behaves like lfs temporal file is removed4993 is expected to equal false4994 when a bad URL is used4995 download_link: "/etc/passwd"4996 does not download the file4997 download_link: "ftp://example.com"4998 does not download the file4999 download_link: "http://127.0.0.2"5000 does not download the file5001 download_link: "http://192.168.2.120"5002 does not download the file5003 when the URL points to a redirected URL5004 that is blocked5005 redirect_link: "ftp://example.com"5006 behaves like no lfs object is created5007 is expected not to change `LfsObject.count`5008 returns error result5009 an error is logged5010 behaves like lfs temporal file is removed5011 is expected to equal false5012 redirect_link: "http://127.0.0.2"5013 behaves like no lfs object is created5014 is expected not to change `LfsObject.count`5015 returns error result5016 an error is logged5017 behaves like lfs temporal file is removed5018 is expected to equal false5019 redirect_link: "http://192.168.2.120"5020 behaves like no lfs object is created5021 is expected not to change `LfsObject.count`5022 returns error result5023 an error is logged5024 behaves like lfs temporal file is removed5025 is expected to equal false5026 that is not blocked5027 behaves like lfs object is created5028 creates and associate the LFS object to project5029 returns success result5030 behaves like lfs temporal file is removed5031 is expected to equal false5032 when the lfs object attributes are invalid5033 does not download the file5034 behaves like no lfs object is created5035 is expected not to change `LfsObject.count`5036 returns error result5037 an error is logged5038 behaves like lfs temporal file is removed5039 is expected to equal false5040 when a large lfs object with the same oid already exists5041 and first fragments are the same5042 returns success5043 links existing lfs object to the project5044 when lfs_link_existing_object feature flag disabled5045 does not call link_existing_lfs_object!5046 and first fragments diverges5047 raises oid mismatch error5048 does not change lfs objects5049Gitlab::Ci::Config::Entry::Job5050 behaves like with inheritable CI config5051 does prepend an Inheritable mixin5052 all inheritable entries are covered5053 all entries do have inherit flag5054 for non-inheritable entries5055 entry_key: :stage5056 inheritable_class does not define entry5057 entry_key: :only5058 inheritable_class does not define entry5059 entry_key: :except5060 inheritable_class does not define entry5061 entry_key: :rules5062 inheritable_class does not define entry5063 entry_key: :variables5064 inheritable_class does not define entry5065 entry_key: :inherit5066 inheritable_class does not define entry5067 entry_key: :script5068 inheritable_class does not define entry5069 entry_key: :needs5070 inheritable_class does not define entry5071 entry_key: :environment5072 inheritable_class does not define entry5073 entry_key: :coverage5074 inheritable_class does not define entry5075 entry_key: :release5076 inheritable_class does not define entry5077 entry_key: :parallel5078 inheritable_class does not define entry5079 entry_key: :allow_failure5080 inheritable_class does not define entry5081 entry_key: :dast_configuration5082 inheritable_class does not define entry5083 entry_key: :secrets5084 inheritable_class does not define entry5085 for inheritable entries5086 entry_key: :before_script, entry_class: Gitlab::Ci::Config::Entry::Commands5087 inheritable_class does define entry5088 when is specified5089 does inherit value5090 when entry is specified5091 does not inherit value5092 when inheritable does not specify5093 does not inherit value5094 entry_key: :after_script, entry_class: Gitlab::Ci::Config::Entry::Commands5095 inheritable_class does define entry5096 when is specified5097 does inherit value5098 when entry is specified5099 does not inherit value5100 when inheritable does not specify5101 does not inherit value5102 entry_key: :cache, entry_class: Gitlab::Ci::Config::Entry::Caches5103 inheritable_class does define entry5104 when is specified5105 does inherit value5106 when entry is specified5107 does not inherit value5108 when inheritable does not specify5109 does not inherit value5110 entry_key: :image, entry_class: Gitlab::Ci::Config::Entry::Image5111 inheritable_class does define entry5112 when is specified5113 does inherit value5114 when entry is specified5115 does not inherit value5116 when inheritable does not specify5117 does not inherit value5118 entry_key: :services, entry_class: Gitlab::Ci::Config::Entry::Services5119 inheritable_class does define entry5120 when is specified5121 does inherit value5122 when entry is specified5123 does not inherit value5124 when inheritable does not specify5125 does not inherit value5126 entry_key: :interruptible, entry_class: Gitlab::Config::Entry::Boolean5127 inheritable_class does define entry5128 when is specified5129 does inherit value5130 when entry is specified5131 does not inherit value5132 when inheritable does not specify5133 does not inherit value5134 entry_key: :timeout, entry_class: Gitlab::Ci::Config::Entry::Timeout5135 inheritable_class does define entry5136 when is specified5137 does inherit value5138 when entry is specified5139 does not inherit value5140 when inheritable does not specify5141 does not inherit value5142 entry_key: :retry, entry_class: Gitlab::Ci::Config::Entry::Retry5143 inheritable_class does define entry5144 when is specified5145 does inherit value5146 when entry is specified5147 does not inherit value5148 when inheritable does not specify5149 does not inherit value5150 entry_key: :tags, entry_class: Gitlab::Ci::Config::Entry::Tags5151 inheritable_class does define entry5152 when is specified5153 does inherit value5154 when entry is specified5155 does not inherit value5156 when inheritable does not specify5157 does not inherit value5158 entry_key: :artifacts, entry_class: Gitlab::Ci::Config::Entry::Artifacts5159 inheritable_class does define entry5160 when is specified5161 does inherit value5162 when entry is specified5163 does not inherit value5164 when inheritable does not specify5165 does not inherit value5166 .nodes5167 when filtering all the entry/node names5168 is expected to include :before_script, :script, :stage, :after_script, :cache, :image, :services, :only, :except, :rules, :needs, :variables, :artifacts, :environment, :coverage, :retry, :interruptible, :timeout, :release, :tags, :inherit, and :parallel5169 .matching?5170 when config is not a hash5171 is expected to be falsey5172 when config is a regular job5173 is expected to be truthy5174 when config is a bridge job5175 is expected to be falsey5176 when config is a hidden job5177 is expected to be falsey5178 when using the default job without script5179 is expected to be falsey5180 when using the default job with script5181 is expected to be truthy5182 validations5183 when entry config value is correct5184 #valid?5185 is valid5186 when job name is empty5187 reports error5188 when config uses both "when:" and "rules:"5189 is valid5190 when delayed job5191 when start_in is specified5192 is expected to be valid5193 when has needs5194 is expected to be valid5195 returns scheduling_type as :dag5196 when has dependencies5197 is expected to be valid5198 when it is a release5199 is expected to be valid5200 when rules are used5201 is expected to be valid5202 when entry value is not correct5203 incorrect config value type5204 #errors5205 reports error about a config type5206 when config is empty5207 #valid5208 is invalid5209 when unknown keys detected5210 #valid5211 is not valid5212 when script is not provided5213 returns error about missing script entry5214 when extends key is not a string5215 returns error about wrong value type5216 when parallel value is not correct5217 when it is not a numeric value5218 returns error about invalid type5219 when it is lower than two5220 returns error about value too low5221 when it is an empty hash5222 returns error about missing matrix5223 when delayed job5224 when start_in is specified5225 is expected to be valid5226 when start_in is empty5227 returns error about invalid type5228 when start_in is not formatted as a duration5229 returns error about invalid type5230 when start_in is longer than one week5231 returns error about exceeding the limit5232 when the `when` keyword is not a string5233 when it is an array5234 returns error5235 when it is a boolean5236 returns error5237 when only: is used with rules:5238 returns error about mixing only: with rules:5239 and only: is blank5240 returns error about mixing only: with rules:5241 and rules: is blank5242 returns error about mixing only: with rules:5243 when except: is used with rules:5244 returns error about mixing except: with rules:5245 and except: is blank5246 returns error about mixing except: with rules:5247 and rules: is blank5248 returns error about mixing except: with rules:5249 when only: and except: are both used with rules:5250 returns errors about mixing both only: and except: with rules:5251 when only: and except: as both blank5252 returns errors about mixing both only: and except: with rules:5253 when rules: is blank5254 returns errors about mixing both only: and except: with rules:5255 when start_in specified without delayed specification5256 returns error about invalid type5257 when it has dependencies5258 that are not a array of strings5259 returns error about invalid type5260 when the job has needs5261 and there are dependencies that are not included in needs5262 returns error about invalid data5263 and they are only cross pipeline needs5264 adds an error for dependency keyword usage5265 when timeout value is not correct5266 when it is higher than instance wide timeout5267 returns error about value too high5268 when it is not a duration5269 returns error about wrong value5270 when timeout value is correct5271 returns correct timeout5272 when it is a release5273 when `release:description` is missing5274 returns error5275 when invalid rules are used5276 with rules nested more than max allowed levels5277 is expected not to be valid5278 with rules with invalid keys5279 is expected not to be valid5280 #relevant?5281 is a relevant entry5282 #compose!5283 when job config overrides default config5284 overrides default config5285 when job config does not override default config5286 uses config from default entry5287 with workflow rules5288 name: "uses default only", has_workflow_rules?: false, only: nil, rules: nil, result: {:refs=>["branches", "tags"]}5289 RSpec::ExampleGroups::GitlabCiConfigEntryJob::Compose::WithWorkflowRules::NameUsesDefaultOnlyHasWorkflowRulesFalseOnlyNilRulesNilResultRefsBranchesTags5290 name: "uses user only", has_workflow_rules?: false, only: ["branches"], rules: nil, result: {:refs=>["branches"]}5291 RSpec::ExampleGroups::GitlabCiConfigEntryJob::Compose::WithWorkflowRules::NameUsesUserOnlyHasWorkflowRulesFalseOnlyBranchesRulesNilResultRefsBranches5292 name: "does not define only", has_workflow_rules?: false, only: nil, rules: [], result: nil5293 RSpec::ExampleGroups::GitlabCiConfigEntryJob::Compose::WithWorkflowRules::NameDoesNotDefineOnlyHasWorkflowRulesFalseOnlyNilRulesResultNil5294 name: "does not define only", has_workflow_rules?: true, only: nil, rules: nil, result: nil5295 RSpec::ExampleGroups::GitlabCiConfigEntryJob::Compose::WithWorkflowRules::NameDoesNotDefineOnlyHasWorkflowRulesTrueOnlyNilRulesNilResultNil5296 name: "uses user only", has_workflow_rules?: true, only: ["branches"], rules: nil, result: {:refs=>["branches"]}5297 RSpec::ExampleGroups::GitlabCiConfigEntryJob::Compose::WithWorkflowRules::NameUsesUserOnlyHasWorkflowRulesTrueOnlyBranchesRulesNilResultRefsBranches5298 name: "does not define only", has_workflow_rules?: true, only: nil, rules: [], result: nil5299 RSpec::ExampleGroups::GitlabCiConfigEntryJob::Compose::WithWorkflowRules::NameDoesNotDefineOnlyHasWorkflowRulesTrueOnlyNilRulesResultNil5300 when workflow rules is used5301 when rules are used5302 does not define only5303 when rules are not used5304 does not define only5305 when composed5306 #value5307 when entry is correct5308 returns correct value5309 when job is using tags5310 when limit is reached5311 returns error5312 when limit is not reached5313 returns a valid entry5314 #manual_action?5315 when job is a manual action5316 is a manual action5317 when job is not a manual action5318 is not a manual action5319 #delayed?5320 when job is a delayed5321 is a delayed5322 when job is not a delayed5323 is not a delayed5324 #ignored?5325 when job is a manual action5326 when it is not specified if job is allowed to fail5327 is an ignored job5328 when job is allowed to fail5329 is an ignored job5330 when job is not allowed to fail5331 is not an ignored job5332 when job is dynamically allowed to fail5333 is not an ignored job5334 when job is not a manual action5335 when it is not specified if job is allowed to fail5336 is not an ignored job5337 does not return allow_failure5338 when job is allowed to fail5339 is an ignored job5340 does not return allow_failure_criteria5341 when job is not allowed to fail5342 is not an ignored job5343 does not return allow_failure_criteria5344 when job is dynamically allowed to fail5345 is not an ignored job5346 returns allow_failure_criteria5347MergeRequests::RequestReviewService5348 #execute5349 invalid permissions5350 behaves like failed service execution5351 returns an error5352 behaves like does not trigger GraphQL subscription mergeRequestReviewersUpdated5353 is expected not to receive merge_request_reviewers_updated(*(any args)) 0 times5354 reviewer does not exist5355 behaves like failed service execution5356 returns an error5357 behaves like does not trigger GraphQL subscription mergeRequestReviewersUpdated5358 is expected not to receive merge_request_reviewers_updated(*(any args)) 0 times5359 reviewer exists5360 returns success5361 updates reviewers state5362 sends email to reviewer5363 creates a new todo for the reviewer5364 behaves like triggers GraphQL subscription mergeRequestReviewersUpdated5365 is expected to receive merge_request_reviewers_updated(#<MergeRequest id:527 namespace380/project702!1>) 1 time5366Serverless::AssociateDomainService5367 when the domain is unchanged5368 does not update creator5369 when domain is changed to nil5370 removes the association between knative and the domain5371 does not attempt to update creator5372 when a new domain is associated5373 creates an association with the domain5374 updates creator5375 when knative is not authorized to use the pages domain5376 sets pages_domain_id to nil5377 when knative hostname is nil5378 sets hostname to a placeholder value5379 when knative hostname exists5380 does not change hostname5381Gitlab::ErrorTracking::ErrorRepository::OpenApiStrategy5382 #report_error5383 is not implemented5384 #find_error5385 when request succeeds5386 without events returned5387 does not log anything5388 returns detailed error5389 returns no first and last release version5390 with events returned5391 does not log anything5392 returns first and last release version5393 when request fails5394 logs error5395 is expected to be nil5396 #list_errors5397 with errors5398 does not log anything5399 maps errors to models5400 when n errors are returned5401 does not log anything5402 returns the amount of errors5403 cursor links are preserved5404 when less errors than requested are returned5405 does not log anything5406 returns the amount of errors5407 cursor link for next is removed5408 with params5409 does not log anything5410 passes provided params to client5411 without explicit params5412 does not log anything5413 passes default params to client5414 when request fails5415 logs error5416 is expected to have attributes {:next => nil, :prev => nil}5417 #last_event_for5418 when both event and error is returned5419 does not log anything5420 returns mapped error event5421 when event is not returned5422 does not log anything5423 is expected to be nil5424 when list_events request fails5425 logs error5426 is expected to be nil5427 when error is not returned5428 does not log anything5429 is expected to be nil5430 when get_error request fails5431 logs error5432 is expected to be nil5433 #update_error5434 when update succeeds5435 does not log anything5436 is expected to eq true5437 when update fails5438 logs error5439 is expected to eq false5440 #dsn_url5441 is expected to eq "http://abc@localhost:8080/errortracking/api/v1/projects/1209"5442PipelineDetailsEntity5443 inherits from PipelineEntity5444 #as_json5445 when pipeline is empty5446 contains details5447 contains flags5448 when pipeline is retryable5449 user has ability to retry pipeline5450 retryable flag is true5451 user does not have ability to retry pipeline5452 retryable flag is false5453 when pipeline is cancelable5454 user has ability to cancel pipeline5455 cancelable flag is true5456 user does not have ability to cancel pipeline5457 cancelable flag is false5458 when pipeline has commit statuses5459 contains stages5460 when pipeline has YAML errors5461 contains information about error5462 contains flag that indicates there are errors5463 when pipeline does not have YAML errors5464 does not contain field that normally holds an error5465 contains flag that indicates there are no errors5466 when pipeline is triggered by other pipeline5467 contains an information about depedent pipeline5468 when pipeline triggered other pipeline5469 contains an information about dependent pipeline5470IssueLinks::ListService5471 #execute5472 user can see all issues5473 ensures no N+1 queries are made5474 returns related issues JSON5475 referencing a public project issue5476 presents issue5477 referencing issue with removed relationships5478 when referenced a deleted issue5479 ignores issue5480 when referenced an issue with deleted project5481 ignores issue5482 when referenced an issue with deleted namespace5483 ignores issue5484 user cannot see relations5485 when user cannot see the referenced issue5486 returns an empty list5487 when user cannot see the issue that referenced5488 returns an empty list5489 remove relations5490 user can admin related issues just on target project5491 returns no destroy relation path5492 user can admin related issues just on source project5493 returns no destroy relation path5494 when user can admin related issues on both projects5495 returns related issue destroy relation path5496Resolvers::TimelogResolver5497 is expected to have non-null GraphQL type TimelogConnection5498 on a project5499 behaves like with a project5500 finds all timelogs within given dates5501 return nothing when user has insufficient permissions5502 when no dates specified5503 finds all timelogs5504 when only start_time present5505 finds timelogs after the start_time5506 when only end_time present5507 finds timelogs before the end_time5508 when start_time and end_date are present5509 finds timelogs until the end of day of end_date5510 when start_date and end_time are present5511 finds all timelogs within start_date and end_time5512 when arguments are invalid5513 when start_time and start_date are present5514 generates an error5515 when end_time and end_date are present5516 generates an error5517 when start argument is after end argument5518 generates an error5519 with a project filter5520 behaves like with a project5521 finds all timelogs within given dates5522 return nothing when user has insufficient permissions5523 when no dates specified5524 finds all timelogs5525 when only start_time present5526 finds timelogs after the start_time5527 when only end_time present5528 finds timelogs before the end_time5529 when start_time and end_date are present5530 finds timelogs until the end of day of end_date5531 when start_date and end_time are present5532 finds all timelogs within start_date and end_time5533 when arguments are invalid5534 when start_time and start_date are present5535 generates an error5536 when end_time and end_date are present5537 generates an error5538 when start argument is after end argument5539 generates an error5540 on a group5541 behaves like with a group5542 finds all timelogs5543 finds all timelogs within given dates5544 when only start_date is present5545 finds timelogs until the end of day of end_date5546 when only end_date is present5547 finds timelogs until the end of day of end_date5548 when start_time and end_date are present5549 finds timelogs until the end of day of end_date5550 when start_date and end_time are present5551 finds all timelogs within start_date and end_time5552 when arguments are invalid5553 when start_time and start_date are present5554 generates an error5555 when end_time and end_date are present5556 generates an error5557 when start argument is after end argument5558 generates an error5559 with a group filter5560 behaves like with a group5561 finds all timelogs5562 finds all timelogs within given dates5563 when only start_date is present5564 finds timelogs until the end of day of end_date5565 when only end_date is present5566 finds timelogs until the end of day of end_date5567 when start_time and end_date are present5568 finds timelogs until the end of day of end_date5569 when start_date and end_time are present5570 finds all timelogs within start_date and end_time5571 when arguments are invalid5572 when start_time and start_date are present5573 generates an error5574 when end_time and end_date are present5575 generates an error5576 when start argument is after end argument5577 generates an error5578 on a user5579 behaves like with a user5580 blah5581 with a user filter5582 behaves like with a user5583 blah5584 when > `default_max_page_size` records5585 pagination returns `default_max_page_size` and sets `has_next_page` true5586 when no object or arguments provided5587 generates an error5588Security::MergeReportsService#execute5589 copies scanners into target report and eliminates duplicates5590 copies identifiers into target report and eliminates duplicates5591 deduplicates (except cwe and wasc) and sorts the vulnerabilities by severity (desc) then by compare key5592 deduplicates scanned resources5593 errors on target report5594 is expected to contain exactly {:message=>"bar", :type=>"foo"} and {:message=>"baz", :type=>"zoo"}5595 warnings on target report5596 is expected to contain exactly {:message=>"bar", :type=>"foo"} and {:message=>"baz", :type=>"zoo"}5597 ordering reports for sast analyzers5598 when reports are gathered in an unprioritized order5599 is expected to eql #<Gitlab::Ci::Reports::Security::Scanner:0x00007f42aa3ee948 @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:0x00007f42a995ccf0 @external_id="semgrep", @name="Semgrep", ...="1.0.0", @primary_identifiers=nil, @sort_keys=[2, "semgrep", "Semgrep", "Security Scanner Vendor"]>5600 is expected to eq 25601 is expected to eql #<Gitlab::Ci::Reports::Security::Identifier:0x00007f42c2ab3f68 @external_id="B403", @external_type="b...id", @name="bandit_test_id-B403", @url=nil, @fingerprint="9ea39e538d11434f325435e905bf238e7cf1f7a4"> and #<Gitlab::Ci::Reports::Security::Identifier:0x00007f42c24f8600 @external_id="CVE-2019-123", @external...="cve", @name="cve-CVE-2019-123", @url=nil, @fingerprint="6d834ff5767ac7544bef36b0e9996a9a3d6da5f1">5602 is expected to contain exactly #<Gitlab::Ci::Reports::Security::Identifier:0x00007f42d3811fb0 @external_id="rules.bandit.B105", @ext...e="semgrep_id-rules.bandit.B105", @url=nil, @fingerprint="86d65bee153188dc92a8fd17263d8319d9fbe4ee">5603 when a custom analyzer is completed before the known analyzers5604 is expected to eql #<Gitlab::Ci::Reports::Security::Scanner:0x00007f42e9cf9850 @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:0x00007f42e078fc88 @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:0x00007f42d0277af8 @external_id="scanner-2", @name="Scanner ...primary_identifiers=nil, @sort_keys=[Infinity, "scanner-2", "Scanner 2", "Security Scanner Vendor"]>5605 is expected to eq 35606 is expected to contain exactly #<Gitlab::Ci::Reports::Security::Identifier:0x00007f42ae847db0 @external_id="VULN-2", @external_type=...ner-2", @name="scanner-2-VULN-2", @url=nil, @fingerprint="8e683704c05c3d223f7572623a39cdf39ecc5f15"> and #<Gitlab::Ci::Reports::Security::Identifier:0x00007f42ae83bbc8 @external_id="CVE-2019-456", @external...="cve", @name="cve-CVE-2019-456", @url=nil, @fingerprint="47c8c718e4355e29c0b8e87fd62c2c7da65911dd">5607WikiPages::UpdateService5608 behaves like WikiPages::UpdateService#execute5609 updates the wiki page5610 executes webhooks5611 counts edit events5612 the page is at the top level5613 adds a new wiki page activity event5614 the page is in a subsection5615 adds a new wiki page activity event5616 when the options are bad5617 does not count an edit event5618 does not record the activity5619 reports the error5620 #execute5621 when wiki create fails due to git error5622 catches the thrown error and returns a ServiceResponse error5623Group Routable5624 creates route with namespace referencing group5625 behaves like routable resource5626 .find_by_full_path5627 finds records by their full path5628 returns nil for unknown paths5629 includes route information when loading a record5630 when path is a negative number5631 returns nil5632 with redirect routes5633 without follow_redirects option5634 does not find records by their redirected path5635 with follow_redirects option set to true5636 finds records by their canonical path5637 finds records by their redirected path5638 returns nil for unknown paths5639 behaves like routable resource with parent5640 behaves like routable resource5641 .find_by_full_path5642 finds records by their full path5643 returns nil for unknown paths5644 includes route information when loading a record5645 when path is a negative number5646 returns nil5647 with redirect routes5648 without follow_redirects option5649 does not find records by their redirected path5650 with follow_redirects option set to true5651 finds records by their canonical path5652 finds records by their redirected path5653 returns nil for unknown paths5654 #full_path5655 is expected to eq "foo/group125"5656 hits the cache when not preloaded5657 #full_name5658 is expected to eq "foo / group125"5659 hits the cache when not preloaded5660 Validations5661 is expected to validate that :route cannot be empty/falsy5662 Associations5663 is expected to have one route dependent => destroy5664 is expected to have many redirect_routes dependent => destroy5665 Callbacks5666 for a group5667 creates route record on create5668 updates route record on path change5669 ensure route path uniqueness across different objects5670 for a user5671 creates the route for a record on create5672 updates routes and nested routes on name change5673 .where_full_path_in5674 without any paths5675 returns an empty relation5676 without any valid paths5677 returns an empty relation5678 with valid paths5679 returns the projects matching the paths5680 returns projects regardless of the casing of paths5681 #parent_loaded?5682 is false when the parent is not loaded5683 is true when the parent is loaded5684 #route_loaded?5685 is false when the route is not loaded5686 is true when the route is loaded5687Project Routable5688 creates route with namespace referencing project namespace5689 behaves like routable resource with parent5690 behaves like routable resource5691 .find_by_full_path5692 finds records by their full path5693 returns nil for unknown paths5694 includes route information when loading a record5695 when path is a negative number5696 returns nil5697 with redirect routes5698 without follow_redirects option5699 does not find records by their redirected path5700 with follow_redirects option set to true5701 finds records by their canonical path5702 finds records by their redirected path5703 returns nil for unknown paths5704 #full_path5705 is expected to eq "namespace501/project824"5706 hits the cache when not preloaded5707 #full_name5708 is expected to eq "Sidney Jones1103 / project824"5709 hits the cache when not preloaded5710Namespaces::ProjectNamespace Routable5711 skips route creation for the resource5712Projects::InProductMarketingCampaignEmailsService5713 #execute5714 users can receive marketing emails5715 sends the email to all project members with access_level >= Developer5716 records sent emails5717 tracks experiment :email_sent event5718 when user can't receive marketing emails5719 when user.can?(:receive_notifications) is false5720 does not send the email5721 when user is not opted in to receive marketing emails5722 behaves like does nothing5723 does not send the email5724 does not create a record of the sent email5725 when campaign email has already been sent to the user5726 behaves like does nothing5727 does not send the email5728 does not create a record of the sent email5729 when user is a reporter5730 behaves like does nothing5731 does not send the email5732 does not create a record of the sent email5733 when user is a guest5734 behaves like does nothing5735 does not send the email5736 does not create a record of the sent email5737Gitlab::SlashCommands::Deploy5738 #execute5739 if no environment is defined5740 does not execute an action5741 with environment5742 without actions5743 does not execute an action5744 when single action has been matched5745 returns success result5746 when more than one action has been matched5747 when there is no specific actions with a environment name5748 returns error about too many actions defined5749 when one of the actions is environement specific action5750 deploys to production5751 when one of the actions is a teardown action5752 deploys to production5753 with extra spaces in the deploy command5754 deploys to production5755 self.match5756 matches the environment5757 matches the environment with spaces in it5758 matches the environment name with surrounding spaces5759 returns nil for text that is not a deploy command5760 returns nil for a partial command5761 with ReDoS attempts5762 has smaller than linear execution time growth with a malformed "to"5763DraftNotes::CreateService5764 creates a simple draft note5765 tracks the start event when the draft is persisted5766 does not track the start event when the draft is not persisted5767 cannot resolve when there is nothing to resolve5768 creates a draft note with a position in a diff5769 in a thread5770 creates a draft note with discussion_id5771 creates a draft that resolves the thread5772 diff highlight cache clearing5773 when diff file is unfolded and it is not a reply5774 clears diff highlighting cache5775 when diff file is not unfolded and it is not a reply5776 clears diff highlighting cache5777ProjectHook5778 associations5779 is expected to belong to project required: false5780 validations5781 is expected to validate that :project cannot be empty/falsy5782 behaves like includes Limitable concern5783 #exceeds_limits?5784 without plan limits configured5785 is expected to eq false5786 without plan limits configured5787 is expected to eq false5788 with an existing model5789 is expected to eq true5790 validations5791 is expected to be a kind of Limitable5792 without plan limits configured5793 can create new models5794 with plan limits configured5795 can create new models5796 with an existing model5797 cannot create new models exceeding the plan limits5798 .for_projects5799 finds related project hooks5800 .push_hooks5801 returns hooks for push events only5802 .tag_push_hooks5803 returns hooks for tag push events only5804 #parent5805 returns the associated project5806 #application_context5807 includes the type and project5808 #update_last_failure5809 is a method of this class5810 when the hook is executable5811 does not update the state5812 when the hook is failed5813 there is no prior value5814 updates the state5815 there is a prior value, from before now5816 updates the state5817 there is a prior value, from after now5818 does not update the state5819Deployments::OlderDeploymentsDropService5820 #execute5821 when deployment is nil5822 behaves like it does not drop any build5823 is expected to not change `Ci::Build::ActiveRecord_Relation#count`5824 when a deployment is passed in5825 and there is no active deployment for the related environment5826 behaves like it does not drop any build5827 is expected to not change `Ci::Build::ActiveRecord_Relation#count`5828 and there are active deployment for the related environment5829 and there is no older deployment than "deployment"5830 behaves like it does not drop any build5831 is expected to not change `Ci::Build::ActiveRecord_Relation#count`5832 and there is an older deployment than "deployment"5833 drops that older deployment5834 when older deployable is a manual job5835 does not drop any builds nor track the exception5836 when deployable.drop raises RuntimeError5837 does not drop an older deployment and tracks the exception5838 when ActiveRecord::StaleObjectError is raised5839 resets the object via Gitlab::OptimisticLocking5840 and there is no deployable for that older deployment5841 behaves like it does not drop any build5842 is expected to not change `Ci::Build::ActiveRecord_Relation#count`5843Gitlab::ImportExport::AfterExportStrategies::BaseAfterExportStrategy5844 #execute5845 returns if project exported file is not found5846 creates a lock file in the export dir5847 when the method succeeds5848/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil5849 removes the lock file5850/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil5851 removes the archive path5852 when the method fails5853 when validation fails5854/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil5855 does not create the lock file5856/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil5857 does not execute main logic5858/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil5859 logs validation errors in shared context5860/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil5861 removes the archive path5862 when an exception is raised5863/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil5864 removes the lock5865 #log_validation_errors5866/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil5867 add the message to the shared context5868 #to_json5869 adds the current strategy class to the serialized attributes5870Ci::Trigger5871 associations5872 is expected to belong to project required: false5873 is expected to belong to owner required: false5874 is expected to have many trigger_requests5875 validations5876 is expected to validate that :owner cannot be empty/falsy5877 before_validation5878 sets an random token if none provided5879 does not set a random token if one provided5880 #short_token5881 returns shortened token without prefix5882 token does not have a prefix5883 returns shortened token5884 #can_access_project?5885 and is member of the project5886 is expected to eq true5887 and is not member of the project5888 is expected to eq false5889 behaves like includes Limitable concern5890 #exceeds_limits?5891 without plan limits configured5892 is expected to eq false5893 without plan limits configured5894 is expected to eq false5895 with an existing model5896 is expected to eq true5897 validations5898 is expected to be a kind of Limitable5899 without plan limits configured5900 can create new models5901 with plan limits configured5902 can create new models5903 with an existing model5904 cannot create new models exceeding the plan limits5905 loose foreign key on ci_triggers.owner_id5906 behaves like cleanup by a loose foreign key5907 cleans up (delete or nullify) the model5908 loose foreign key on ci_triggers.project_id5909 behaves like cleanup by a loose foreign key5910 cleans up (delete or nullify) the model5911Gitlab::Database::LoadBalancing::Host5912 #connection5913 returns a connection from the pool5914 #disconnect!5915 disconnects the pool5916 disconnects the pool when waiting for connections takes too long5917 #release_connection5918 releases the current connection from the pool5919 #offline!5920 marks the host as offline5921 #online?5922 when the replica status is recent enough5923 returns the latest status5924 returns an offline status5925 when the replica status is outdated5926 refreshes the status5927 and replica is not up to date5928 marks the host offline5929 when the replica is not online5930 returns false when ActionView::Template::Error is raised5931 returns false when ActiveRecord::StatementInvalid is raised5932 returns false when PG::Error is raised5933 returns false when ActiveRecord::ConnectionNotEstablished is raised5934 #refresh_status5935 refreshes the status5936 #check_replica_status?5937 returns true when we need to check the replica status5938 returns false when we do not need to check the replica status5939 #replica_is_up_to_date?5940 when the lag time is below the threshold5941 returns true5942 when the lag time exceeds the threshold5943 returns true if the data is recent enough5944 returns false when the data is not recent enough5945 #replication_lag_below_threshold5946 returns true when the lag time is below the threshold5947 returns false when the lag time exceeds the threshold5948 returns false when no lag time could be calculated5949 #data_is_recent_enough?5950 returns true when the data is recent enough5951 returns false when the data is not recent enough5952 returns false when no lag size could be calculated5953 #replication_lag_time5954 returns the lag time as a Float5955 returns nil when the database query returned no rows5956 #replication_lag_size5957 returns the lag size as an Integer5958 returns nil when the database query returned no rows5959 returns nil when the database connection fails5960 #primary_write_location5961 returns the write location of the primary5962 #caught_up?5963 returns true when a host has caught up5964 returns true when a host has caught up5965 returns false when a host has not caught up5966 returns false when a host has not caught up5967 returns false when the connection fails5968 #database_replica_location5969 returns the write ahead location of the replica5970 returns nil when the database query returned no rows5971 returns nil when the database connection fails5972 #query_and_release5973 executes a SQL query5974 releases the connection after running the query5975 returns an empty Hash in the event of an error5976 #host5977 returns the hostname5978projects/merge_requests/_commits.html.haml5979 shows commits from source project5980 shows signature verification badge5981 when there are hidden commits5982 shows notice about omitted commits5983Projects::OpenIssuesCountService5984 behaves like a counter caching service5985 #count5986 caches the count5987 #refresh_cache5988 refreshes the cache5989 #delete_cache5990 removes the cache5991 #uncached_count5992 does not cache the count5993 #count5994 when user is nil5995 does not include confidential issues in the issue count5996 when user is provided5997 when user can read confidential issues5998 returns the right count with confidential issues5999 uses total_open_issues_count cache key6000 when user cannot read confidential issues6001 does not include confidential issues6002 uses public_open_issues_count cache key6003 #refresh_cache6004 when cache is empty6005 refreshes cache keys correctly6006 when cache is outdated6007 refreshes cache keys correctly6008AwardEmojiPolicy6009 when the awardable is an issue6011 is expected to be allowed :read_emoji6013 is expected not to be allowed :read_emoji6014 when the awardable is a merge request6016 is expected to be allowed :read_emoji6018 is expected not to be allowed :read_emoji6019 when the awardable is a note6021 is expected to be allowed :read_emoji6023 is expected not to be allowed :read_emoji6024 when the awardable is a snippet6026 is expected to be allowed :read_emoji6028 is expected not to be allowed :read_emoji6029IncidentManagement::TimelineEvents::DestroyService6030 #execute6031 when current user is anonymous6032 behaves like error response6033 has an informative message6034 behaves like does not track incident management event6035 does not track the event6036 when user does not have permissions to remove timeline events6037 behaves like error response6038 has an informative message6039 behaves like does not track incident management event6040 does not track the event6041 when an error occurs during removal6042 behaves like error response6043 has an informative message6044 behaves like does not track incident management event6045 does not track the event6046 with success response6047 successfully returns the timeline event6048 creates a system note6049 behaves like an incident management tracked event6050 .track_event6051 tracks the event using redis6052Clusters::Gcp::ProvisionService6053 #execute6054 when succeeded to request provision6055 behaves like success6056 schedules a worker for status minitoring6057 when operation status is unexpected6058 behaves like error6059 sets an error to provider object6060 when selfLink is unexpected6061 behaves like error6062 sets an error to provider object6063 when Internal Server Error happened6064 behaves like error6065 sets an error to provider object6066WorkItems::CreateFromTaskService6067 #execute6068 when work item params are valid6069 is expected to be success6070 creates a work item and creates parent link to the original work item6071 replaces the original issue markdown description with new work item reference6072 behaves like title with extra spaces6073 when title has extra spaces6074 removes extra leading and trailing whitespaces from title6075 when last operation fails6076 rollbacks all operations6077 is expected to be error6078 returns an error message6079 when work item params are invalid6080 returns work item errors6081 behaves like CreateFromTask service with invalid params6082 is expected to be error6083 does not create a work item or links6084AccessRequestsFinder6085 #execute6086 when current user cannot see project access requests6087 behaves like a finder returning no results6088 raises Gitlab::Access::AccessDeniedError6089 behaves like a finder returning no results6090 raises Gitlab::Access::AccessDeniedError6091 when current user can see access requests6092 behaves like a finder returning access requesters6093 returns access requesters6094 behaves like a finder returning access requesters6095 returns access requesters6096 #execute!6097 when current user cannot see access requests6098 behaves like a finder raising Gitlab::Access::AccessDeniedError6099 raises Gitlab::Access::AccessDeniedError6100 behaves like a finder raising Gitlab::Access::AccessDeniedError6101 raises Gitlab::Access::AccessDeniedError6102 when current user can see access requests6103 behaves like a finder returning access requesters6104 returns access requesters6105 behaves like a finder returning access requesters6106 returns access requesters6107Integrations::BaseChatNotification6108 validations6109 is expected to validate that :webhook cannot be empty/falsy6110 is expected to validate that :labels_to_be_notified_behavior is either ‹"match_any"› or ‹"match_all"›6111 #execute6112 with a repository6113 returns true6114 with an empty repository6115 returns true6116 with a project with name containing spaces6117 does not remove spaces6118 when the data object has a label6119 behaves like notifies the chat integration6120 is expected to receive notify(*(any args)) 1 time6121 with label filter6122 behaves like notifies the chat integration6123 is expected to receive notify(*(any args)) 1 time6124 MergeRequest events6125 behaves like notifies the chat integration6126 is expected to receive notify(*(any args)) 1 time6127 Issue events6128 behaves like notifies the chat integration6129 is expected to receive notify(*(any args)) 1 time6130 when labels_to_be_notified_behavior is not defined6131 no matching labels6132 behaves like does not notify the chat integration6133 is expected not to receive notify(*(any args)) 0 times6134 only one label matches6135 behaves like notifies the chat integration6136 is expected to receive notify(*(any args)) 1 time6137 when labels_to_be_notified_behavior is blank6138 no matching labels6139 behaves like does not notify the chat integration6140 is expected not to receive notify(*(any args)) 0 times6141 only one label matches6142 behaves like notifies the chat integration6143 is expected to receive notify(*(any args)) 1 time6144 when labels_to_be_notified_behavior is match_any6145 no label filter6146 behaves like notifies the chat integration6147 is expected to receive notify(*(any args)) 1 time6148 no matching labels6149 behaves like does not notify the chat integration6150 is expected not to receive notify(*(any args)) 0 times6151 only one label matches6152 behaves like notifies the chat integration6153 is expected to receive notify(*(any args)) 1 time6154 when labels_to_be_notified_behavior is match_all6155 no label filter6156 behaves like notifies the chat integration6157 is expected to receive notify(*(any args)) 1 time6158 no matching labels6159 behaves like does not notify the chat integration6160 is expected not to receive notify(*(any args)) 0 times6161 only one label matches6162 behaves like does not notify the chat integration6163 is expected not to receive notify(*(any args)) 0 times6164 labels matches exactly6165 behaves like notifies the chat integration6166 is expected to receive notify(*(any args)) 1 time6167 labels matches but object has more6168 behaves like notifies the chat integration6169 is expected to receive notify(*(any args)) 1 time6170 labels are distributed on multiple objects6171 behaves like does not notify the chat integration6172 is expected not to receive notify(*(any args)) 0 times6173 with "channel" property6174 empty string6175 does not include the channel6176 empty spaces6177 does not include the channel6178 with single channel specified6179 behaves like with channel specified6180 notifies all channels6181 with multiple channel names specified6182 behaves like with channel specified6183 notifies all channels6184 with multiple channel names with spaces specified6185 behaves like with channel specified6186 notifies all channels6187 #default_channel_placeholder6188 raises an error6189 #webhook_placeholder6190 raises an error6191 #event_channel_name6192 returns the channel field name for the given event6193 #event_channel_value6194 returns the channel field value for the given event6195 raises an error for unsupported events6196ClustersHelper6197 #has_rbac_enabled?6198 when kubernetes platform has been created6199 returns kubernetes platform value6200 when kubernetes platform has not been created yet6201 delegates to cluster provider6202 when ABAC cluster is created6203 delegates to cluster provider6204 #js_clusters_list_data6205 displays endpoint path6206 generates svg image data6207 displays and ancestor_help_path6208 displays empty image path6209 displays add cluster using certificate path6210 displays create cluster path6211 displays project default branch6212 displays project path6213 displays kas address6214 displays GitLab version6215 displays KAS version6216 user has no permissions to create a cluster6217 displays that user can't add cluster6218 user is a maintainer6219 displays that the user can add cluster6220 project cluster6221 doesn't display empty state help text6222 displays display_cluster_agents as true6223 group cluster6224 displays empty state help text6225 displays display_cluster_agents as false6226 does not include a default branch6227 does not include a project path6228 certificate based clusters enabled6229 feature flag is enabled6230 is expected to eq "true"6231 feature flag is disabled6232 is expected to eq "false"6233 #cluster_type_label6234 project cluster6235 is expected to eq "Project cluster"6236 group cluster6237 is expected to eq "Group cluster"6238 instance cluster6239 is expected to eq "Instance cluster"6240 other values6241 diplays generic cluster and reports error6242 #display_cluster_agents?6243 when clusterable is a project6244 allows agents to display6245 when clusterable is a group6246 does not allow agents to display6247 #default_branch_name6248 when clusterable is a project without a repository6249 allows default branch name to display default name from settings6250 when clusterable is a project with a repository6251 allows default branch name to display repository root branch6252 when clusterable is a group6253 does not allow default branch name to display6254Ci::PipelineArtifacts::CoverageReportService6255 #execute6256 when pipeline has coverage report6257 artifact has pipeline's locked status6258 behaves like creating or updating a pipeline coverage report6259 when pipeline is finished6260 creates or updates a pipeline artifact6261 persists the default file name6262 sets expire_at to 1 week from now6263 logs relevant information6264 when pipeline has coverage report from child pipeline6265 behaves like creating or updating a pipeline coverage report6266 when pipeline is finished6267 creates or updates a pipeline artifact6268 persists the default file name6269 sets expire_at to 1 week from now6270 logs relevant information6271 when pipeline has existing pipeline artifact for coverage report6272 behaves like creating or updating a pipeline coverage report6273 when pipeline is finished6274 creates or updates a pipeline artifact6275 persists the default file name6276 sets expire_at to 1 week from now6277 logs relevant information6278 when pipeline is running and coverage report does not exist6279 does not persist data6280BulkImports::Entity6281 associations6282 is expected to belong to bulk_import required: true6283 is expected to belong to parent required: false6284 is expected to belong to group required: false6285 is expected to belong to project required: false6286 validations6287 is expected to validate that :source_type cannot be empty/falsy6288 is expected to validate that :source_full_path cannot be empty/falsy6289 is expected to validate that :destination_name cannot be empty/falsy6290 is expected to define :source_type as an enum backed by an integer with values ‹[:group_entity, :project_entity]›6291 when associated with a group and project6292 is invalid6293 when not associated with a group or project6294 is valid6295 when associated with a group and no project6296 is valid as a group_entity6297 is valid when destination_namespace is empty6298 is invalid as a project_entity6299 when associated with a project and no group6300 is valid6301 is invalid when destination_namespace is nil6302 is invalid as a project_entity6303 when the parent is a group import6304 is valid6305 when the parent is a project import6306 is invalid6307 validate destination namespace of a group_entity6308 is invalid if destination namespace is the source namespace6309 is invalid if destination namespace is a descendant of the source6310 when bulk_import_projects feature flag is disabled and source_type is a project_entity6311 is invalid6312 when bulk_import_projects feature flag is enabled and source_type is a project_entity6313 is valid6314 when bulk_import_projects feature flag is enabled on root ancestor level and source_type is a project_entity6315 is valid6316 #encoded_source_full_path6317 encodes entity source full path6318 scopes6319 .by_user_id6320 returns entities associated with specified user6321 .all_human_statuses6322 returns all human readable entity statuses6323 #pipelines6324 when entity is group6325 returns group pipelines6326 when entity is project6327 returns project pipelines6328 #pipeline_exists?6329 returns true when the given pipeline name exists in the pipelines list6330 returns false when the given pipeline name exists in the pipelines list6331 #pluralized_name6332 when entity is group6333 returns groups6334 when entity is project6335 returns projects6336 #export_relations_url_path6337 when entity is group6338 returns group export relations url6339 when entity is project6340 returns project export relations url6341 #relation_download_url_path6342 returns export relations url with download query string6343 #entity_type6344 returns entity type6345 #project?6346 returns true if project entity6347 #group?6348 returns true if group entity6349 #base_resource_url_path6350 returns base entity url path6351 #wiki_url_path6352 returns entity wiki url path6353 #update_service6354 returns correct update service class6355Packages::Conan::PackageFinder6356 #execute6357 visibility: :private, role: :maintainer, packages_visible: true6358 is expected to eq [#<Packages::Package id: 2, project_id: 880, created_at: "2022-11-07 01:26:29.632563031 +0000", updat...sion: "1.0.0", package_type: "conan", creator_id: 1299, status: "default", last_downloaded_at: nil>]6359 visibility: :private, role: :developer, packages_visible: true6360 is expected to eq [#<Packages::Package id: 2, project_id: 880, created_at: "2022-11-07 01:26:29.632563031 +0000", updat...sion: "1.0.0", package_type: "conan", creator_id: 1299, status: "default", last_downloaded_at: nil>]6361 visibility: :private, role: :reporter, packages_visible: true6362 is expected to eq [#<Packages::Package id: 2, project_id: 880, created_at: "2022-11-07 01:26:29.632563031 +0000", updat...sion: "1.0.0", package_type: "conan", creator_id: 1299, status: "default", last_downloaded_at: nil>]6363 visibility: :private, role: :guest, packages_visible: false6364 is expected to eq []6365 visibility: :private, role: :anonymous, packages_visible: false6366 is expected to eq []6367 visibility: :internal, role: :maintainer, packages_visible: true6368 is expected to eq [#<Packages::Package id: 2, project_id: 880, created_at: "2022-11-07 01:26:29.632563031 +0000", updat...sion: "1.0.0", package_type: "conan", creator_id: 1299, status: "default", last_downloaded_at: nil>]6369 visibility: :internal, role: :developer, packages_visible: true6370 is expected to eq [#<Packages::Package id: 2, project_id: 880, created_at: "2022-11-07 01:26:29.632563031 +0000", updat...sion: "1.0.0", package_type: "conan", creator_id: 1299, status: "default", last_downloaded_at: nil>]6371 visibility: :internal, role: :reporter, packages_visible: true6372 is expected to eq [#<Packages::Package id: 2, project_id: 880, created_at: "2022-11-07 01:26:29.632563031 +0000", updat...sion: "1.0.0", package_type: "conan", creator_id: 1299, status: "default", last_downloaded_at: nil>]6373 visibility: :internal, role: :guest, packages_visible: true6374 is expected to eq [#<Packages::Package id: 2, project_id: 880, created_at: "2022-11-07 01:26:29.632563031 +0000", updat...sion: "1.0.0", package_type: "conan", creator_id: 1299, status: "default", last_downloaded_at: nil>]6375 visibility: :internal, role: :anonymous, packages_visible: false6376 is expected to eq []6377 visibility: :public, role: :maintainer, packages_visible: true6378 is expected to eq [#<Packages::Package id: 2, project_id: 880, created_at: "2022-11-07 01:26:29.632563031 +0000", updat...sion: "1.0.0", package_type: "conan", creator_id: 1299, status: "default", last_downloaded_at: nil>]6379 visibility: :public, role: :developer, packages_visible: true6380 is expected to eq [#<Packages::Package id: 2, project_id: 880, created_at: "2022-11-07 01:26:29.632563031 +0000", updat...sion: "1.0.0", package_type: "conan", creator_id: 1299, status: "default", last_downloaded_at: nil>]6381 visibility: :public, role: :reporter, packages_visible: true6382 is expected to eq [#<Packages::Package id: 2, project_id: 880, created_at: "2022-11-07 01:26:29.632563031 +0000", updat...sion: "1.0.0", package_type: "conan", creator_id: 1299, status: "default", last_downloaded_at: nil>]6383 visibility: :public, role: :guest, packages_visible: true6384 is expected to eq [#<Packages::Package id: 2, project_id: 880, created_at: "2022-11-07 01:26:29.632563031 +0000", updat...sion: "1.0.0", package_type: "conan", creator_id: 1299, status: "default", last_downloaded_at: nil>]6385 visibility: :public, role: :anonymous, packages_visible: true6386 is expected to eq [#<Packages::Package id: 2, project_id: 880, created_at: "2022-11-07 01:26:29.632563031 +0000", updat...sion: "1.0.0", package_type: "conan", creator_id: 1299, status: "default", last_downloaded_at: nil>]6387WorkItems::CreateService6388 #execute6389 when user is not allowed to create a work item in the project6390 is expected to be error6391 returns an access error6392 when params are valid6393 created instance is a WorkItem6394 calls NewIssueWorker with correct arguments6395 when params are invalid6396 is expected to be error6397 returns validation errors6398 does not execute after-create transaction widgets6399 checking spam6400 executes SpamActionService6401 behaves like work item widgetable service6402 executes callbacks for expected widgets6403 hierarchy widget6404 when user can admin parent link6405 when parent is valid work item6406 creates new work item and sets parent reference6407 when parent type is invalid6408 behaves like fails creating work item and returns errors6409 does not create new work item if parent can not be set6410 when user cannot admin parent link6411 behaves like fails creating work item and returns errors6412 does not create new work item if parent can not be set6413Gitlab::Ci::Pipeline::Seed::Deployment6414 #to_resource6415 when job has environment attribute6416 returns a deployment object with environment6417 when environment has deployment platform6418 sets the cluster and deployment_cluster6419 when a custom namespace is given6420 when cluster is managed6421 does not set the custom namespace6422 when cluster is not managed6423 sets the custom namespace6424 when environment has an invalid URL6425 returns nothing6426 when job has already deployment6427 returns the persisted deployment6428 when job does not start environment6429 action: "stop"6430 returns nothing6431 action: "prepare"6432 returns nothing6433 action: "verify"6434 returns nothing6435 action: "access"6436 returns nothing6437 when job does not have environment attribute6438 returns nothing6439Mutations::AlertManagement::Alerts::SetAssignees6440 is expected to require graphql authorizations :update_alert_management_alert6441 #resolve6442 when operation mode is not specified6443 behaves like successful resolution6444 successfully resolves6445 behaves like an incident management tracked event6446 .track_event6447 tracks the event using redis6448 when user does not have permission to update alerts6449 raises an error if the resource is not accessible to the user6450 for APPEND operation6451 when a different user is already assigned6452 behaves like noop6453 makes no changes6454 when no users are specified6455 behaves like noop6456 makes no changes6457 when a user is specified and no user is assigned6458 behaves like successful resolution6459 successfully resolves6460 when the specified user is already assigned to the alert6461 behaves like noop6462 makes no changes6463 for REPLACE operation6464 when a different user is already assigned6465 behaves like successful resolution6466 successfully resolves6467 when no users are specified6468 behaves like successful resolution6469 successfully resolves6470 when a user is specified and no user is assigned6471 behaves like successful resolution6472 successfully resolves6473 when the specified user is already assigned to the alert6474 behaves like noop6475 makes no changes6476 when multiple users are specified6477 behaves like successful resolution6478 successfully resolves6479 for REMOVE operation6480 when a different user is already assigned6481 behaves like noop6482 makes no changes6483 when no users are specified6484 behaves like noop6485 makes no changes6486 when a user is specified and no user is assigned6487 behaves like noop6488 makes no changes6489 when the specified user is already assigned to the alert6490 behaves like successful resolution6491 successfully resolves6492Gitlab::WebHooks::RecursionDetection6493 .set_from_headers6494 when the detection header is present6495 sets the request UUID value from the headers6496 when detection header is not present6497 does not set the request UUID6498 .set_request_uuid6499 sets the request UUID value6500 .register!6501 stores IDs in the same cache when a request UUID is set, until the request UUID changes6502 stores IDs in unique caches when no request UUID is present6503 touches the storage ttl each time it is called6504 block?6505 returns false if webhook should not be blocked6506 when the webhook has previously fired6507 returns true6508 when the request UUID changes again6509 returns false6510 when the count limit has been reached6511 returns true6512 when the request UUID changes again6513 returns false6514 .header6515 returns a header with the UUID value6516 .to_log6517 returns the UUID value and all registered webhook IDs in a Hash6518Gitlab::Diff::HighlightCache6519 #decorate6520 does not calculate highlighting when reading from cache6521 assigns highlighted diff lines to the DiffFile6522 assigns highlighted diff lines which rich_text are HTML-safe6523 when diff_file is uncached due to default_max_patch_bytes change6524 manually writes highlighted lines to the cache6525 assigns highlighted diff lines to the DiffFile6526 #write_if_empty6527 updates memory usage metrics if Redis version >= 46528 does not update memory usage metrics if Redis version < 46529 behaves like caches missing entries6530 filters the key/value list of entries to be caches for each invocation6531 reads from cache once6532 refreshes TTL of the key on read6533 different diff_collections for the same diffable6534 writes an uncached files in the collection to the same redis hash6535 when cache initialized with MergeRequestDiffBatch6536 behaves like caches missing entries6537 filters the key/value list of entries to be caches for each invocation6538 reads from cache once6539 refreshes TTL of the key on read6540 #write_to_redis_hash6541 creates or updates a Redis hash6542 when diff contains unsupported characters6543 does not update the cache6544 #clear6545 clears cache6546 GZip usage6547 uses ActiveSupport::Gzip when reading from the cache6548 uses ActiveSupport::Gzip to compress data when writing to cache6549 metrics6550 observes :gitlab_redis_diff_caching_memory_usage_bytes6551 records hit ratio metrics6552 #key6553 returns cache key6554 when the `use_marker_ranges` feature flag is disabled6555 returns the original version of the cache6556 when the `diff_line_syntax_highlighting` feature flag is disabled6557 returns the original version of the cache6558Projects::Topic6559 is expected to be valid6560 modules6561 is expected to includes the Avatarable module6562 associations6563 is expected to have many project_topics6564 is expected to have many projects6565 validations6566 is expected to validate that :name cannot be empty/falsy6567 is expected to validate that :name is case-insensitively unique6568 is expected to validate that the length of :name is at most 2556569 is expected to validate that the length of :description is at most 10246570 is expected to validate that :title cannot be empty/falsy6571 is expected to validate that the length of :title is at most 2556572 scopes6573 without_assigned_projects6574 returns topics without assigned projects6575 order_by_non_private_projects_count6576 sorts topics by non_private_projects_count6577 reorder_by_similarity6578 sorts topics by similarity6579 #find_by_name_case_insensitive6580 returns topic with case insensitive name6581 #search6582 returns topics with a matching name6583 returns topics with a partially matching name6584 returns topics with a matching name regardless of the casing6585 #avatar_type6586 is true if avatar is image6587 is false if avatar is html page6588 #avatar_url6589 when avatar file is uploaded6590 shows correct avatar url6591 #title_or_name6592 returns title if set6593 returns name if title not set6594BoardProjectRecentVisit6595 relationships6596 is expected to belong to user required: false6597 is expected to belong to project required: false6598 is expected to belong to board required: false6599 validations6600 is expected to validate that :user cannot be empty/falsy6601 is expected to validate that :project cannot be empty/falsy6602 is expected to validate that :board cannot be empty/falsy6603 behaves like boards recent visit6604 #visited6605 creates a visit if one does not exists6606 behaves like was visited previously6607 updates the timestamp6608 when we try to create a visit that is not unique6609 behaves like was visited previously6610 updates the timestamp6611 #latest6612 returns the most recent visited6613 returns last 3 visited boards6614ClusterApplicationEntity6615 #as_json6616 has name6617 has status6618 has version6619 has no status_reason6620 has can_uninstall6621 non-helm application6622 has update_available6623 when application is errored6624 has corresponded data6625 for ingress application6626 includes external_ip6627 for knative application6628 includes available domains6629 includes pages_domain6630Deployments::CreateForBuildService6631 #execute6632 with a deployment job6633 creates a deployment record6634 when creation failure occures6635 trackes the exception6636 when the corresponding environment does not exist6637 does not create a deployment record6638 with a teardown job6639 does not create a deployment record6640 with a normal job6641 does not create a deployment record6642 with a bridge6643 does not create a deployment record6644Ci::BuildTraceChunks::Database6645 #data6646 when data exists6647 returns the data6648 when data does not exist6649 returns nil6650 #set_data6651 when data exists6652 overwrites data6653 when data does not exist6654 sets new data6655 #delete_data6656 when data exists6657 deletes data6658 when data does not exist6659 does nothing6660 #size6661 when data exists6662 returns data bytesize correctly6663 when data does not exist6664 returns zero6665 #keys6666 returns empty array6667NotificationRecipients::Builder::Default6668 #build!6669 participants and project watchers6670 adds all participants and watchers6671 subscribers6672 adds all subscribers6673 custom notifications6674 behaves like custom notification recipients6675 with project custom notification setting6676 adds the user to the recipients6677 with the project custom notification setting in another project6678 does not add the user to the recipients6679 with group custom notification setting6680 adds the user to the recipients6681 with the group custom notification setting in another group6682 does not add the user to the recipients6683 with project global custom notification setting6684 with global custom notification setting6685 adds the user to the recipients6686 without global custom notification setting6687 does not add the user to the recipients6688 with group global custom notification setting6689 with global custom notification setting6690 adds the user to the recipients6691 without global custom notification setting6692 does not add the user to the recipients6693 with group custom notification setting in deeply nested parent group6694 adds the user to the recipients6695 without a project or group6696 does not add the user to the recipients6697Ci::JobsFinder#execute6698 no project6699 returns all jobs6700 non admin user6701 returns no jobs6702 without user6703 returns no jobs6704 scope is present6705 scope: "pending", index: 06706 is expected to contain exactly #<Ci::Build status: "pending", finished_at: nil, created_at: "2022-11-07 08:50:29.000000000 +0000", u...rocessed: false, scheduling_type: "stage", id: 199, stage_id: 177, partition_id: 100, tag_list: nil>6707 scope: "running", index: 16708 is expected to contain exactly #<Ci::Build status: "running", finished_at: nil, created_at: "2022-11-07 08:50:29.000000000 +0000", u...rocessed: false, scheduling_type: "stage", id: 200, stage_id: 178, partition_id: 100, tag_list: nil>6709 scope: "finished", index: 26710 is expected to contain exactly #<Ci::Build status: "success", finished_at: "2022-11-07 08:53:29.000000000 +0000", created_at: "2022-...rocessed: false, scheduling_type: "stage", id: 201, stage_id: 179, partition_id: 100, tag_list: nil>6711 scope is an array6712 filters by the job statuses in the scope6713 a project is present6714 user has access to the project6715 returns jobs for the specified project6716 user has no access to project builds6717 returns no jobs6718 without user6719 returns no jobs6720 when pipeline is present6721 does not return retried jobs by default6722 when include_retried is false6723 does not return retried jobs6724 when include_retried is true6725 returns retried jobs6726 a runner is present6727 user has access to the runner6728 returns jobs for the specified project6729 user has no access to project builds6730 returns no jobs6731 without user6732 returns no jobs6733OauthAccessToken6734 scopes6735 .latest_per_application6736 returns only the latest token for each application6737 Doorkeeper secret storing6738 stores the token in hashed format6739 does not allow falling back to plaintext token comparison6740 finds a token by plaintext token6741 when the token is stored in plaintext6742 falls back to plaintext token comparison6743 .matching_token_for6744 does not find existing tokens6745FreezePeriodsFinder6746 when user is a maintainer6747 behaves like returns freeze_periods ordered by created_at asc6748 returns freeze_periods ordered by created_at6749 when user is a guest6750 behaves like returns nothing6751 is expected to be empty6752 when user is a developer6753 behaves like returns nothing6754 is expected to be empty6755 when user is not a project member6756 behaves like returns nothing6757 is expected to be empty6758 when project is public6759 behaves like returns nothing6760 is expected to be empty6761Gitlab::Graphql::Deprecation6762 .parse6763 with no arguments6764 returns nil6765 with an incomplete `deprecated` argument6766 parses as an invalid deprecation6767 with a `deprecated` argument6768 parses as a deprecation6769 with an `alpha` argument6770 parses as an alpha6771 with both `deprecated` and `alpha` arguments6772 raises an error6773 validations6774 is expected to be valid6775 when the milestone is absent6776 is expected not to be valid6777 when the milestone is not milestone-ish6778 is expected not to be valid6779 when the milestone is not a string6780 is expected not to be valid6781 when the reason is absent6782 is expected not to be valid6783 when the reason is not a known reason6784 is expected not to be valid6785 when the reason is a string6786 is expected to be valid6787 when the reason is a string ending with a period6788 is expected not to be valid6789 #deprecation_reason6790 when there is a replacement6791 renders as reason-replacement-milestone6792 when there is no replacement6793 renders as reason-milestone6794 processing of reason6795 when the reason is a known reason such as :renamed6796 renders the reason_text correctly6797 when the reason is a known reason such as :alpha6798 renders the reason_text correctly6799 when the reason is any other string6800 appends a period6801 #edit_description6802 appends milestone:reason with a leading space if there is a description6803 returns nil if there is no description6804 #original_description6805 records the description passed to it6806 #markdown6807 when there is a replacement6808 when the context is :inline6809 renders on one line6810 when the context is :block6811 renders a warning note6812 when there is no replacement6813 when the context is :inline6814 renders on one line6815 when the context is :block6816 renders a warning note6817 #alpha?6818 when `reason` is `:alpha`6819 is expected to be alpha6820 when `reason` is not `:alpha`6821 is expected not to be alpha6822LabelLink6823 is expected to be valid6824 is expected to belong to label required: false6825 is expected to belong to target required: false6826 behaves like a BulkInsertSafe model6827 when calling class methods directly6828 raises an error when method is not bulk-insert safe6829 does not raise an error when method is bulk-insert safe6830 .bulk_insert!6831 when all items are valid6832 inserts them all6833 returns an empty array6834 when some items are invalid6835 does not insert any of them and raises an error6836 inserts them anyway when bypassing validations6837 .for_target6838 returns the label links for a given target6839Gitlab::Database::Migrations::Observers::TransactionDuration6840 records real and sub transactions duration6841 when there are sub-transactions6842 records transaction duration6843 when there are real-transactions6844 records transaction duration6845Gitlab::OmniauthInitializer6846 .arguments_for6847 when there are no args at all6848 returns an empty array6849 when there is an app_id and an app_secret6850 includes both of them, in positional order6851 when there is an app_id and an app_secret, and an array of args6852 concatenates the args on the end6853 when there is an app_id and an app_secret, and an array of args, and default values6854 concatenates the args on the end6855 when there is an app_id and an app_secret, and a hash of args6856 concatenates the args on the end6857 when there is an app_id and an app_secret, and a hash of args, and default arguments6858 concatenates the args on the end6859 when there is an app_id and an app_secret, no args, and default values6860 concatenates the args on the end6861 when there are args, of an unsupported type6862 when there are default arguments6863 tracks a configuration error6864 when there are no default arguments6865 tracks a configuration error6866 #execute6867 configures providers from array6868 allows "args" array for app_id and app_secret6869 passes app_id and app_secret as additional arguments6870 passes "args" hash as symbolized hash argument6871 normalizes a String strategy_class6872 allows a class to be specified in strategy_class6873 throws an error for an invalid strategy_class6874 configures fail_with_empty_uid for shibboleth6875 configures remote_sign_out_handler proc for authentiq6876 configures on_single_sign_out proc for cas36877 configures defaults for google_oauth26878 configures defaults for gitlab6879 configures defaults for gitlab, when arguments are not provided6880 configures defaults for gitlab, when array arguments are provided6881 tracks a configuration error if the arguments are neither a hash nor an array6882 .full_host6883 is expected to eq "http://localhost/test"6884Admin::SetFeatureFlagService6885 # order random6886 #execute6887 when enabling the feature flag6888 enables the feature flag6889 logs the event6890 when enabling for a user actor6891 enables the feature flag6892 when user does not exist6893 does nothing6894 when enabling for a feature group6895 enables the feature flag6896 when enabling for a project6897 enables the feature flag6898 when enabling for a group6899 enables the feature flag6900 when group does not exist6901 returns an error6902 when enabling for a user namespace6903 enables the feature flag6904 when namespace does not exist6905 returns an error6906 when enabling for a group namespace6907 enables the feature flag6908 when enabling for a user actor and a feature group6909 enables the feature flag6910 when enabling given a percentage of time6911 enables the feature flag6912 when value is a float6913 enables the feature flag6914 when enabling given a percentage of actors6915 enables the feature flag6916 when value is a float6917 enables the feature flag6918 when disabling the feature flag6919 disables the feature flag6920 logs the event6921 when disabling for a user actor6922 disables the feature flag6923 when user does not exist6924 returns an error6925 when disabling for a feature group6926 disables the feature flag6927 when disabling for a project6928 disables the feature flag6929 when disabling for a group6930 disables the feature flag6931 when group does not exist6932 returns an error6933 when disabling for a user namespace6934 disables the feature flag6935 when namespace does not exist6936 returns an error6937 when disabling for a group namespace6938 disables the feature flag6939 when disabling for a user actor and a feature group6940 disables the feature flag6941HtmlEscapedHelpers6942 # order random6943 #match_html_escaped_tags6944 content: nil, expected_match: nil6945 is expected to eq nil6946 content: "", expected_match: nil6947 is expected to eq nil6948 content: "<a href", expected_match: nil6949 is expected to eq nil6950 content: "<span href", expected_match: nil6951 is expected to eq nil6952 content: "</a>", expected_match: nil6953 is expected to eq nil6954 content: "<a href", expected_match: "<a"6955 is expected to eq "<a"6956 content: "<span href", expected_match: "<span"6957 is expected to eq "<span"6958 content: "< span", expected_match: "< span"6959 is expected to eq "< span"6960 content: "some text <a href", expected_match: "<a"6961 is expected to eq "<a"6962 content: "some text \"<a href", expected_match: "<a"6963 is expected to eq "<a"6964 content: "</a&glt;", expected_match: "</a"6965 is expected to eq "</a"6966 content: "</span>", expected_match: "</span"6967 is expected to eq "</span"6968 content: "< / span>", expected_match: "< / span"6969 is expected to eq "< / span"6970 content: "title=\"<a href", expected_match: nil6971 is expected to eq nil6972 content: "title= \"<a href", expected_match: nil6973 is expected to eq nil6974 content: "title= '<a href", expected_match: nil6975 is expected to eq nil6976 content: "title= '</a", expected_match: nil6977 is expected to eq nil6978 content: "title= '</span", expected_match: nil6979 is expected to eq nil6980 content: "title=\"foo\"><a", expected_match: "<a"6981 is expected to eq "<a"6982 content: "title='foo'>\n<a", expected_match: "<a"6983 is expected to eq "<a"6984 #ensure_no_html_escaped_tags!6985 when content contains HTML escaped chars6986 raises an exception6987 when content does not contain HTML escaped tags6988 does not raise anything6989Tooling::KubernetesClient6990 RESOURCE_LIST6991 returns the correct list of resources separated by commas6992 #cleanup_by_release6993Running command: `kubectl delete ingress,svc,pdb,hpa,deploy,statefulset,job,pod,secret,configmap,pvc,secret,clusterrole,clusterrolebinding,role,rolebinding,sa,crd --namespace "review-apps" --now --ignore-not-found --wait=true -l release="my-release"`6994 raises an error if the Kubernetes command fails6995 behaves like a kubectl command to delete resources6996 is expected to output to stdout6997 with multiple releases6998 behaves like a kubectl command to delete resources6999 is expected to output to stdout7000 with `wait: false`7001 behaves like a kubectl command to delete resources7002 is expected to output to stdout7003 #cleanup_by_created_at7004Running command: `kubectl delete pvc --namespace "review-apps" --now --ignore-not-found --wait=true pod-my-release-abcd`7005 raises an error if the Kubernetes command fails7006 behaves like a kubectl command to delete resources by older than given creation time7007 is expected to output to stdout7008 with multiple resource names7009 behaves like a kubectl command to delete resources by older than given creation time7010 is expected to output to stdout7011 with `wait: false`7012 behaves like a kubectl command to delete resources by older than given creation time7013 is expected to output to stdout7014 with no resource_type given7015 behaves like a kubectl command to delete resources by older than given creation time7016 is expected to output to stdout7017 with multiple resource_type given7018 behaves like a kubectl command to delete resources by older than given creation time7019 is expected to output to stdout7020 with no resources found7021 does not call #delete_by_exact_names7022 #cleanup_review_app_namespaces7023Running command: `kubectl delete namespace --now --ignore-not-found --wait=true review-abc-123 review-xyz-789`7024 raises an error if the Kubernetes command fails7025 behaves like a kubectl command to delete namespaces older than given creation time7026 is expected to output to stdout7027 with no namespaces found7028 does not call #delete_namespaces_by_exact_names7029 #raw_resource_names7030Running command: `kubectl get ingress,svc,pdb,hpa,deploy,statefulset,job,pod,secret,configmap,pvc,secret,clusterrole,clusterrolebinding,role,rolebinding,sa,crd --namespace "review-apps" -o name`7031 calls kubectl to retrieve the resource names7032 #resource_names_created_before7033 behaves like a kubectl command to retrieve resource names sorted by creationTimestamp7034Running command: `kubectl get pvc --namespace "review-apps" --sort-by='{.metadata.creationTimestamp}' -o json`7035 is expected to contain exactly "pvc-created-three-days-ago"7036 with no resource_type given7037 behaves like a kubectl command to retrieve resource names sorted by creationTimestamp7038Running command: `kubectl get --namespace "review-apps" --sort-by='{.metadata.creationTimestamp}' -o json`7039 is expected to contain exactly "pvc-created-three-days-ago"7040 with multiple resource_type given7041 behaves like a kubectl command to retrieve resource names sorted by creationTimestamp7042Running command: `kubectl get pvc,service --namespace "review-apps" --sort-by='{.metadata.creationTimestamp}' -o json`7043 is expected to contain exactly "pvc-created-three-days-ago"7044 #review_app_namespaces_created_before7045Running command: `kubectl get namespace -l tls=review-apps-tls --sort-by='{.metadata.creationTimestamp}' -o json`7046 is expected to contain exactly "namespace-created-three-days-ago"7047WebHooks::DestroyService7048 #execute7049 when the user does not have permission7050 is an error7051 when the user does have permission7052 is successful7053 destroys the hook7054 does not destroy logs7055 schedules the destruction of logs7056 when the hook fails to destroy7057 is not a success7058Gitlab::RepositoryHashCache7059 #cache_key7060 includes the namespace7061 with a given namespace7062 includes the full namespace7063 #delete7064 key exists7065 is expected to eq 17066 deletes the given key from the cache7067 key doesn't exist7068 is expected to eq 07069 multiple keys7070 deletes multiple keys7071 returns deleted key count7072 #key?7073 key exists7074 is expected to equal true7075 key doesn't exist7076 is expected to equal false7077 #read_members7078 all data is cached7079 is expected to eq {"missing"=>"false", "test"=>"value"}7080 partial data is cached7081 is expected to eq {"missing"=>nil, "test"=>"value"}7082 no data is cached7083 is expected to eq {"missing"=>nil, "test"=>nil}7084 empty keys are passed for some reason7085 raises an error7086 #write7087 is expected to equal true7088 actually writes stuff to Redis7089 #fetch_and_add_missing7090 records metrics7091 fully cached7092 returns a hash7093 doesn't write to the cache7094 partially cached7095 returns a hash7096 writes to the cache7097 uncached7098 returns a hash7099 writes to the cache7100Gitlab::Ci::Matching::RunnerMatcher7101 .new7102 when attributes are missing7103 is expected to raise KeyError7104 with attributes7105 is expected to eq [1]7106 is expected to eq "instance_type"7107 is expected to eq 07108 is expected to eq 17109 is expected to eq false7110 is expected to eq "ref_protected"7111 is expected to eq ["tag1", "tag2"]7112 #instance_type?7113 is expected to be truthy7114 context with private runners7115 is expected to be falsey7116 #matches?7117 with an instance of BuildMatcher7118 ref_protected: true, build_protected: true, run_untagged: true, runner_tags: [], build_tags: [], result: true7119 is expected to eq true7120 ref_protected: true, build_protected: false, run_untagged: true, runner_tags: [], build_tags: [], result: false7121 is expected to eq false7122 ref_protected: false, build_protected: true, run_untagged: true, runner_tags: [], build_tags: [], result: true7123 is expected to eq true7124 ref_protected: false, build_protected: false, run_untagged: true, runner_tags: [], build_tags: [], result: true7125 is expected to eq true7126 ref_protected: true, build_protected: true, run_untagged: true, runner_tags: [], build_tags: [], result: true7127 is expected to eq true7128 ref_protected: true, build_protected: true, run_untagged: true, runner_tags: [], build_tags: ["a"], result: false7129 is expected to eq false7130 ref_protected: true, build_protected: true, run_untagged: true, runner_tags: ["a", "b"], build_tags: ["a"], result: true7131 is expected to eq true7132 ref_protected: true, build_protected: true, run_untagged: true, runner_tags: ["a"], build_tags: ["a", "b"], result: false7133 is expected to eq false7134 ref_protected: true, build_protected: true, run_untagged: true, runner_tags: ["a"], build_tags: ["a"], result: true7135 is expected to eq true7136 ref_protected: true, build_protected: true, run_untagged: false, runner_tags: ["a"], build_tags: ["a"], result: true7137 is expected to eq true7138 ref_protected: true, build_protected: true, run_untagged: false, runner_tags: ["b"], build_tags: ["a"], result: false7139 is expected to eq false7140 ref_protected: true, build_protected: true, run_untagged: false, runner_tags: ["a", "b"], build_tags: ["a"], result: true7141 is expected to eq true7142 with an instance of Ci::Build7143 raises ArgumentError7144Backup::Database7145 #restore7146 when not forced714717148 warns the user and waits7149 has a pre restore warning7150 with an empty .gz file715117152 returns successfully7153 with a corrupted .gz file7154gzip: stdin: not in gzip format715517156 raises a backup error7157 when the restore command prints errors7158must be owner of extension pg_trgm7159WARNING: no privileges could be revoked for public7160This is a test error7161 filters out noise from errors and has a post restore warning7162 with PostgreSQL settings defined in the environment7163{"PG_VERSION"=>"12", "PGUSER"=>"postgres", "PGHOST"=>"test.example.com", "PGPASSWORD"=>"donotchange"}7164 overrides default config values7165 when the source file is missing7166 main database raises an error about missing source file7167 ci database tolerates missing source file7168Gitlab::Database::LoadBalancing::Sticking7169 #stick_or_unstick_request7170 sticks or unsticks a single object and updates the Rack environment7171 sticks or unsticks multiple objects and updates the Rack environment7172 #stick_if_necessary7173 does not stick if no write was performed7174 sticks to the primary if a write was performed7175 #all_caught_up?7176 when no write location could be found7177 returns true7178 when all secondaries have caught up7179 returns true, and unsticks7180 notifies with the proper event payload7181 when the secondaries have not yet caught up7182 returns false7183 notifies with the proper event payload7184 #unstick_or_continue_sticking7185 simply returns if no write location could be found7186 unsticks if all secondaries have caught up7187 continues using the primary if the secondaries have not yet caught up7188 #stick7189 behaves like sticking7190 sticks an entity to the primary7191 does not update the write location when no replicas are used7192 #bulk_stick7193 behaves like sticking7194 sticks an entity to the primary7195 does not update the write location when no replicas are used7196 #mark_primary_write_location7197 updates the write location with the load balancer7198 does nothing when no replicas are used7199 #unstick7200 removes the sticking data from Redis7201 #last_write_location_for7202 returns the last WAL write location for a user7203 #redis_key_for7204 returns a String7205 #select_caught_up_replicas7206 with no write location7207 returns false and does not try to find caught up hosts7208 with write location7209 returns true, selects hosts, and unsticks if any secondary has caught up7210Packages::CreateDependencyService7211 #execute7212 when packages are published7213 creates dependencies and links7214 with repeated packages7215 creates dependencies and links7216 with dependencies bulk insert conflicts7217 creates dependences and links7218 with existing dependencies7219 reuses them7220 with a dependency not described with a hash7221 creates dependencies and links7222Gitlab::Ci::Config::Entry::Trigger7223 when trigger config is a non-empty string7224 #valid?7225 is expected to be valid7226 #value7227 returns a trigger configuration hash7228 when trigger config an empty string7229 #valid?7230 is expected not to be valid7231 #errors7232 returns an error about an empty config7233 when trigger is a hash - cross-project7234 when branch is provided7235 #valid?7236 is expected to be valid7237 #value7238 returns a trigger configuration hash7239 when strategy is provided7240 when strategy is depend7241 #valid?7242 is expected to be valid7243 #value7244 returns a trigger configuration hash7245 when strategy is invalid7246 #valid?7247 is expected not to be valid7248 #errors7249 returns an error about unknown config key7250 when config contains unknown keys7251 #valid?7252 is expected not to be valid7253 #errors7254 returns an error about unknown config key7255 with forward7256 is expected to be valid7257 returns a trigger configuration hash7258 when trigger is a hash - parent-child7259 with simple include7260 is expected to be valid7261 returns a trigger configuration hash7262 with project7263 is expected not to be valid7264 returns an error7265 with branch7266 is expected not to be valid7267 returns an error7268 with forward7269 is expected to be valid7270 returns a trigger configuration hash7271 when trigger configuration is not valid7272 when branch is not provided7273 #valid?7274 is expected not to be valid7275 #errors7276 returns an error message7277Integrations::ChatMessage::DeploymentMessage7278 behaves like Integrations::ChatMessage7279 when input contains link markup7280 strips all link markup characters7281 #pretext7282 returns a message with the data returned by the deployment data builder7283 returns a message for a successful deployment7284 returns a message for a failed deployment7285 returns a message for a canceled deployment7286 returns a message for a deployment to another environment7287 returns a message for a deployment with any other status7288 returns a message for a running deployment7289 #attachments7290 returns attachments with the data returned by the deployment data builder7291 returns attachments for a failed deployment7292 returns attachments for a canceled deployment7293 uses a neutral color for a deployment with any other status7294Projects::RecordTargetPlatformsService#execute7295 when detector returns target platform values7296 behaves like saves and returns detected target platforms7297 creates a new setting record for the project7298 returns the array of stored target platforms7299 when detector returns a non-array value7300 behaves like saves and returns detected target platforms7301 creates a new setting record for the project7302 returns the array of stored target platforms7303 when a project has an existing setting record7304 when target platforms changed7305 updates7306 is expected to contain exactly "ios" and "osx"7307 when target platforms are the same7308 does not update7309 Build iOS guide email experiment7310 experiment candidate7311 executes a Projects::InProductMarketingCampaignEmailsService7312 behaves like tracks experiment assignment event7313 tracks the assignment event7314 experiment control7315 behaves like does not send email7316 does not execute a Projects::InProductMarketingCampaignEmailsService7317 behaves like tracks experiment assignment event7318 tracks the assignment event7319 when project is not an iOS project7320 does not track experiment assignment event7321 behaves like does not send email7322 does not execute a Projects::InProductMarketingCampaignEmailsService7323 when detector does not return any target platform values7324 does nothing7325 is expected to be nil7326WhatsNewHelper7327 #whats_new_version_digest7328 calls ReleaseHighlight.most_recent_version_digest7329 #whats_new_most_recent_release_items_count7330 when recent release items exist7331 returns the count from the most recent file7332 when recent release items do NOT exist7333 returns nil7334 #display_whats_new?7335 returns true when gitlab.com7336 when self-managed7337 returns true if user is signed in7338 returns false if user isn't signed in7339 depending on whats_new_variant7340 variant: :all_tiers, result: true7341 returns correct result depending on variant7342 variant: :current_tier, result: true7343 returns correct result depending on variant7344 variant: :disabled, result: false7345 returns correct result depending on variant7346 #whats_new_variants7347 returns ApplicationSetting.whats_new_variants7348 #whats_new_variants_label7349 returns different labels depending on variant7350 #whats_new_variants_description7351 returns different descriptions depending on variant7352StageSerializer7353 #represent7354 with a single entity7355 serializes the stage object7356 with an array of entities7357 serializes the array of pipelines7358GraphqlTriggers7359 .issuable_assignees_updated7360 triggers the issuableAssigneesUpdated subscription7361 .issuable_title_updated7362 triggers the issuableTitleUpdated subscription7363 .issuable_description_updated7364 triggers the issuableDescriptionUpdated subscription7365 .issuable_labels_updated7366 triggers the issuableLabelsUpdated subscription7367 .issuable_dates_updated7368 triggers the issuableDatesUpdated subscription7369 .issuable_milestone_updated7370 triggers the issuableMilestoneUpdated subscription7371 .merge_request_reviewers_updated7372 triggers the mergeRequestReviewersUpdated subscription7373 .merge_request_merge_status_updated7374 triggers the mergeRequestMergeStatusUpdated subscription7375Gitlab::Ci::Config::Entry::Include7376 validations7377 when value is a string7378 is expected to be valid7379 when value is hash7380 when using not allowed keys7381 is expected not to be valid7382 when using "local"7383 is expected to be valid7384 when using "file"7385 is expected to be valid7386 when using "template"7387 is expected to be valid7388 when using "artifact"7389 and specifying "job"7390 is expected to be valid7391 without "job"7392 is expected not to be valid7393 has specific error7394 when using "project"7395 and specifying "ref" and "file"7396 is expected to be valid7397 without "ref"7398 is expected to be valid7399 without "file"7400 is expected not to be valid7401 has specific error7402 when using with "rules"7403 is expected to be valid7404 when rules is not an array of hashes7405 is expected not to be valid7406 has specific error7407 when value is something else7408 is expected not to be valid7409 #value7410 when config is a string7411 is expected to eq "test.yml"7412 when config is a hash7413 is expected to eq {:local=>"test.yml"}7414 when config has "rules"7415 is expected to eq {:local=>"test.yml", :rules=>[{:if=>"$VARIABLE"}]}7416Mutations::Security::CiConfiguration::ConfigureSast7417 is expected to require graphql authorizations :push_code7418 #resolve7419 generates an error if the resource is not accessible to the user7420 when user does not have enough permissions7421 generates an error7422 when user is a maintainer of a different project7423 generates an error7424 when the user does not have permission to create a new branch7425 returns an array of errors7426 when the user can create a merge request7427 when service successfully generates a path to create a new merge request7428 returns a success path7429 when service can not generate any path to create a new merge request7430 returns an array of errors7431BulkImports::Clients::HTTP7432 #get7433 performs network request7434 error handling7435 when error occurred7436 raises BulkImports::Error7437 when response is not success7438 raises BulkImports::Error7439 #each_page7440 with a block7441 yields every retrieved page to the supplied block7442 without a block7443 returns an Enumerator7444 #post7445 performs network request7446 error handling7447 when error occurred7448 raises BulkImports::Error7449 when response is not success7450 raises BulkImports::Error7451 #head7452 performs network request7453 error handling7454 when error occurred7455 raises BulkImports::Error7456 when response is not success7457 raises BulkImports::Error7458 #stream7459 performs network request with stream_body option7460 #instance_version7461 returns version as an instance of Gitlab::VersionInfo7462 #compatible_for_project_migration?7463 when instance version is lower the the expected minimum7464 returns false7465 when instance version is at least the expected minimum7466 returns true7467 when source instance is incompatible7468 raises an error7469 when url is relative7470 performs network request to a relative gitlab url7471IncidentManagement::AddSeveritySystemNoteWorker7472 #perform7473 when incident and user exist7474 creates a system note7475 creates a timeline event7476 when incident does not exist7477 behaves like does not add anything7478 does not change incident notes count7479 does not create a timeline event7480 when incident_id is nil7481 behaves like does not add anything7482 does not change incident notes count7483 does not create a timeline event7484 when issue is not an incident7485 behaves like does not add anything7486 does not change incident notes count7487 does not create a timeline event7488 when user does not exist7489 behaves like does not add anything7490 does not change incident notes count7491 does not create a timeline event7492 when user_id is nil7493 behaves like does not add anything7494 does not change incident notes count7495 does not create a timeline event7496CustomEmojiPolicy7497 custom emoji permissions7498 when user is7499 a developer7500 is expected to be allowed :create_custom_emoji7501 is maintainer7502 is expected to be allowed :delete_custom_emoji7503 is owner7504 is expected to be allowed :delete_custom_emoji7505 is developer and emoji creator7506 is expected to be allowed :delete_custom_emoji7507 is emoji creator but not a member of the group7508 is expected not to be allowed :delete_custom_emoji7509Gitlab::Ci::RunnerInstructions7510 OS7511 linux7512 has the required fields7513 has a valid script7514 osx7515 has the required fields7516 has a valid script7517 windows7518 has the required fields7519 has a valid script7520 OTHER_ENVIRONMENTS7521 docker7522 has the required fields7523 kubernetes7524 has the required fields7525 #install_script7526 invalid params7527 current_params: {:os=>nil, :arch=>nil}, expected_error_message: "Missing OS"7528 raises argument error7529 current_params: {:os=>"linux", :arch=>nil}, expected_error_message: "Missing arch"7530 raises argument error7531 current_params: {:os=>nil, :arch=>"amd64"}, expected_error_message: "Missing OS"7532 raises argument error7533 current_params: {:os=>"non_existing_os", :arch=>"amd64"}, expected_error_message: "Invalid OS"7534 raises argument error7535 current_params: {:os=>"linux", :arch=>"non_existing_arch"}, expected_error_message: "Architecture not found for OS"7536 raises argument error7537 current_params: {:os=>"windows", :arch=>"non_existing_arch"}, expected_error_message: "Architecture not found for OS"7538 raises argument error7539 with valid params7540 os: "linux", arch: "amd64"7541 returns string containing correct params7542 os: "linux", arch: "386"7543 returns string containing correct params7544 os: "linux", arch: "arm"7545 returns string containing correct params7546 os: "linux", arch: "arm64"7547 returns string containing correct params7548 os: "windows", arch: "amd64"7549 returns string containing correct params7550 os: "windows", arch: "386"7551 returns string containing correct params7552 os: "osx", arch: "amd64"7553 returns string containing correct params7554Analytics::UsageTrends::Measurement7555 validation7556 is expected to validate that :recorded_at cannot be empty/falsy7557 is expected to validate that :identifier cannot be empty/falsy7558 is expected to validate that :count cannot be empty/falsy7559 is expected to validate that :recorded_at is case-sensitively unique within the scope of :identifier7560 identifiers enum7561 maps to the correct values7562 scopes7563 .order_by_latest7564 is expected to eq [#<Analytics::UsageTrends::Measurement id: 6, count: 1000, recorded_at: "2022-11-05 01:28:19.11264352...ent id: 5, count: 1000, recorded_at: "2022-10-28 01:28:19.105472848 +0000", identifier: "projects">]7565 .with_identifier7566 is expected to contain exactly #<Analytics::UsageTrends::Measurement id: 5, count: 1000, recorded_at: "2022-10-28 01:28:19.105472848 +0000", identifier: "projects"> and #<Analytics::UsageTrends::Measurement id: 6, count: 1000, recorded_at: "2022-11-05 01:28:19.112643528 +0000", identifier: "projects">7567 .recorded_after7568 is expected to contain exactly #<Analytics::UsageTrends::Measurement id: 6, count: 1000, recorded_at: "2022-11-05 01:28:19.112643528 +0000", identifier: "projects"> and #<Analytics::UsageTrends::Measurement id: 7, count: 1000, recorded_at: "2022-11-02 01:28:19.119366577 +0000", identifier: "groups">7569 when nil is given7570 does not apply filtering7571 .recorded_before7572 is expected to contain exactly #<Analytics::UsageTrends::Measurement id: 5, count: 1000, recorded_at: "2022-10-28 01:28:19.105472848 +0000", identifier: "projects"> and #<Analytics::UsageTrends::Measurement id: 7, count: 1000, recorded_at: "2022-11-02 01:28:19.119366577 +0000", identifier: "groups">7573 when nil is given7574 does not apply filtering7575 .identifier_query_mapping7576 is expected to be a kind of Hash7577 .identifier_min_max_queries7578 is expected to be a kind of Hash7579 .measurement_identifier_values7580 is expected to eq 117581 .find_latest_or_fallback7582 with usage statistics7583 returns the latest stored measurement7584 without usage statistics7585 returns the realtime query of the measurement7586projects/issues/service_desk/_service_desk_info_content7587 when service desk is disabled7588 when the logged user is at least maintainer7589 shows the info including the project settings link7590 when the logged user is at only a developer7591 shows the info without the project settings link7592 when service desk is enabled7593 when the logged user is at least reporter7594 shows the info including the email address7595 when the logged user is at only a guest7596 shows the info without the email address7597 when user is not logged in7598 shows the info without the email address7599Preloaders::MergeRequestDiffPreloader7600 does not trigger N+1 queries7601Gitlab::Checks::LfsCheck7602 #validate!7603 with LFS not enabled7604 skips integrity check7605 with LFS enabled7606 fails if any LFS blobs are missing7607 succeeds if LFS objects have already been uploaded7608 with lfs_check feature disabled7609 skips integrity check7610 with deletion7611 with missing newrev7612 behaves like a skipped integrity check7613 skips integrity check7614 with blank newrev7615 behaves like a skipped integrity check7616 skips integrity check7617Ci::PipelineArtifacts::CoverageReportWorker7618 #perform7619 when pipeline exists7620 calls the pipeline coverage report service7621 when the pipeline is part of a hierarchy7622 when all pipelines is complete7623 calls the pipeline coverage report service on the root ancestor pipeline7624 when the pipeline hierarchy has incomplete pipeline7625 does not call pipeline coverage report service7626 when pipeline does not exist7627 does not call pipeline create artifact service7628Gitlab::Kubernetes::Helm::V3::DeleteCommand7629 behaves like helm command generator7630 #generate_script7631 returns appropriate command7632 #pod_name7633 is expected to eq "uninstall-app-name"7634 behaves like helm command7635 HELM_VERSION7636 is expected to match /\d+\.\d+\.\d+/7637 #env7638 is expected to be a kind of Hash7639 #rbac?7640 rbac is enabled7641 is expected to be truthy7642 rbac is not enabled7643 is expected to be falsey7644 #pod_resource7645 rbac is enabled7646 is expected to be an instance of Kubeclient::Resource7647 generates a pod that uses the tiller serviceAccountName7648 rbac is not enabled7649 is expected to be an instance of Kubeclient::Resource7650 generates a pod that uses the default serviceAccountName7651 #config_map_resource7652 returns a KubeClient resource with config map content for the application7653 #service_account_resource7654 rbac is enabled7655 generates a Kubeclient resource for the tiller ServiceAccount7656 rbac is not enabled7657 generates nothing7658 #cluster_role_binding_resource7659 rbac is enabled7660 generates a Kubeclient resource for the ClusterRoleBinding for tiller7661 binds the account in #service_account_resource7662 rbac is not enabled7663 generates nothing7664 #delete_command7665 deletes the release7666PrometheusMetricsFinder7667 #execute7668 with params7669 with appropriate indexes7670 with project7671 is expected to eq [#<PrometheusMetric id: 1, project_id: 981, title: [FILTERED], query: "avg(metric)", y_label: "y_labe...21 +0000", common: false, identifier: nil, dashboard_path: ".gitlab/dashboards/dashboard_path.yml">]7672 with group7673 is expected to contain exactly #<PrometheusMetric id: 2, project_id: nil, title: [FILTERED], query: "avg(metric)", y_label: "y_label...3779 +0000", common: true, identifier: nil, dashboard_path: ".gitlab/dashboards/dashboard_path.yml"> and #<PrometheusMetric id: 1, project_id: 981, title: [FILTERED], query: "avg(metric)", y_label: "y_label...821 +0000", common: false, identifier: nil, dashboard_path: ".gitlab/dashboards/dashboard_path.yml">7674 with title7675 is expected to contain exactly #<PrometheusMetric id: 1, project_id: 981, title: [FILTERED], query: "avg(metric)", y_label: "y_label...821 +0000", common: false, identifier: nil, dashboard_path: ".gitlab/dashboards/dashboard_path.yml"> and #<PrometheusMetric id: 2, project_id: nil, title: [FILTERED], query: "avg(metric)", y_label: "y_label...3779 +0000", common: true, identifier: nil, dashboard_path: ".gitlab/dashboards/dashboard_path.yml">7676 with y_label7677 is expected to contain exactly #<PrometheusMetric id: 1, project_id: 981, title: [FILTERED], query: "avg(metric)", y_label: "y_label...821 +0000", common: false, identifier: nil, dashboard_path: ".gitlab/dashboards/dashboard_path.yml"> and #<PrometheusMetric id: 2, project_id: nil, title: [FILTERED], query: "avg(metric)", y_label: "y_label...3779 +0000", common: true, identifier: nil, dashboard_path: ".gitlab/dashboards/dashboard_path.yml">7678 with common7679 is expected to contain exactly #<PrometheusMetric id: 2, project_id: nil, title: [FILTERED], query: "avg(metric)", y_label: "y_label...3779 +0000", common: true, identifier: nil, dashboard_path: ".gitlab/dashboards/dashboard_path.yml"> and #<PrometheusMetric id: 3, project_id: nil, title: [FILTERED], query: "avg(metric)", y_label: "Unique ...0", common: true, identifier: "identifier", dashboard_path: ".gitlab/dashboards/dashboard_path.yml">7680 with ordered7681 is expected to eq [#<PrometheusMetric id: 3, project_id: nil, title: [FILTERED], query: "avg(metric)", y_label: "Unique...779 +0000", common: true, identifier: nil, dashboard_path: ".gitlab/dashboards/dashboard_path.yml">]7682 with indentifier7683 raises an error7684 with common7685 is expected to contain exactly #<PrometheusMetric id: 3, project_id: nil, title: [FILTERED], query: "avg(metric)", y_label: "Unique ...0", common: true, identifier: "identifier", dashboard_path: ".gitlab/dashboards/dashboard_path.yml">7686 with id7687 raises an error7688 with id7689 is expected to contain exactly #<PrometheusMetric id: 2, project_id: nil, title: [FILTERED], query: "avg(metric)", y_label: "y_label...3779 +0000", common: true, identifier: nil, dashboard_path: ".gitlab/dashboards/dashboard_path.yml">7690 with multiple params7691 is expected to contain exactly #<PrometheusMetric id: 2, project_id: nil, title: [FILTERED], query: "avg(metric)", y_label: "y_label...3779 +0000", common: true, identifier: nil, dashboard_path: ".gitlab/dashboards/dashboard_path.yml">7692 without an appropriate index7693 raises an error7694 without params7695 raises an error7696Gitlab::SidekiqQueue7697 #drop_jobs!7698 when there are no matching jobs7699 when the queue is not processed in time7700 returns a non-completion flag, the number of jobs deleted, and the remaining queue size7701 when the queue is processed in time7702 returns a completion flag, the number of jobs deleted, and the remaining queue size7703 when there are matching jobs7704 when the queue is not processed in time7705 returns a non-completion flag, the number of jobs deleted, and the remaining queue size7706 when the queue is processed in time7707 returns a completion flag, the number of jobs deleted, and the remaining queue size7708 when there are jobs matching the class name7709 when the queue is not processed in time7710 returns a non-completion flag, the number of jobs deleted, and the remaining queue size7711 when the queue is processed in time7712 returns a completion flag, the number of jobs deleted, and the remaining queue size7713 when there are no valid metadata keys passed7714 raises NoMetadataError7715 when the queue does not exist7716 raises InvalidQueueError7717Gitlab::Ci::Config::External::File::Base7718 #matching?7719 when a location is present7720 returns true7721 with a location is missing7722 returns false7723 #valid?7724 when location is not a string7725 is expected to be falsy7726 when location is not a YAML file7727 is expected to be falsy7728 when location has not a valid naming scheme7729 is expected to be falsy7730 when location is a valid .yml extension7731 is expected to be truthy7732 when location is a valid .yaml extension7733 is expected to be truthy7734 when there are YAML syntax errors7735 is not a valid file7736 #to_hash7737 with includes7738 does expand hash to include the template7739 #metadata7740 is expected to eq {:context_project=>nil, :context_sha=>"HEAD"}7741 #eql?7742 when the other file has the same params7743 is expected to eq true7744 when the other file has not the same params7745 is expected to eq false7746 #hash7747 with a project7748 is expected to eq -24029463669744444217749 without a project7750 is expected to eq 67227486768193337751Gitlab::Jira::Dvcs7752 .encode_slash7753 replaces slash character7754 ignores path without slash7755 .decode_slash7756 replaces slash character7757 ignores path without slash7758 .encode_project_name7759 root group7760 returns project path7761 nested group7762 returns encoded project full path7763 .restore_full_path7764 project name is an encoded full path7765 returns decoded project path7766 project name is not an encoded full path7767 assumes project belongs to root namespace and returns full project path based on passed in namespace7768Ml::ExperimentTracking::ExperimentRepository7769 # order random7770 #create!7771 creates the candidate7772 when name exists7773 throws error7774 when name is missing7775 throws error7776 #by_iid_or_name7777 when iid passed7778 fetches the experiment7779 and name passed7780 ignores the name7781 and does not exist7782 is expected to eq nil7783 when iid is not passed and name is passed7784 when name exists7785 fetches the experiment7786 when name does not exist7787 is expected to eq nil7788 #all7789 fetches experiments for project7790Gitlab::HookData::UserBuilder7791 #build7792 data7793 on create7794 is expected to eq "user_create"7795 behaves like includes the required attributes7796 includes the required attributes7797 behaves like does not include old username attributes7798 does not include old username attributes7799 behaves like does not include state attributes7800 does not include state attributes7801 on destroy7802 is expected to eq "user_destroy"7803 behaves like includes the required attributes7804 includes the required attributes7805 behaves like does not include old username attributes7806 does not include old username attributes7807 behaves like does not include state attributes7808 does not include state attributes7809 on rename7810 is expected to eq "user_rename"7811 includes old username details7812 behaves like includes the required attributes7813 includes the required attributes7814 behaves like does not include state attributes7815 does not include state attributes7816 on failed_login7817 is expected to eq "user_failed_login"7818 includes state details7819 behaves like includes the required attributes7820 includes the required attributes7821 behaves like does not include old username attributes7822 does not include old username attributes7823Resolvers::Ci::RunnerJobsResolver7824 #resolve7825 with authorized user7826 with statuses argument7827 is expected to contain exactly #<Ci::Build status: "success", finished_at: "2022-11-07 08:53:29.000000000 +0000", created_at: "2022-...rocessed: false, scheduling_type: "stage", id: 207, stage_id: 186, partition_id: 100, tag_list: nil> and #<Ci::Build status: "success", finished_at: "2022-11-07 08:53:29.000000000 +0000", created_at: "2022-...rocessed: false, scheduling_type: "stage", id: 208, stage_id: 186, partition_id: 100, tag_list: nil>7828 without statuses argument7829 is expected to contain exactly #<Ci::Build status: "success", finished_at: "2022-11-07 08:53:29.000000000 +0000", created_at: "2022-...rocessed: false, scheduling_type: "stage", id: 211, stage_id: 188, partition_id: 100, tag_list: nil>, #<Ci::Build status: "success", finished_at: "2022-11-07 08:53:29.000000000 +0000", created_at: "2022-...rocessed: false, scheduling_type: "stage", id: 212, stage_id: 188, partition_id: 100, tag_list: nil>, and #<Ci::Build status: "failed", finished_at: "2022-11-07 08:53:29.000000000 +0000", created_at: "2022-1...rocessed: false, scheduling_type: "stage", id: 213, stage_id: 188, partition_id: 100, tag_list: nil>7830 with unauthorized user7831 is expected to be nil7832Gitlab::GithubImport::Importer::Events::ChangedMilestone7833 #execute7834 with Issue7835 when importing a milestoned event7836 behaves like new event7837 creates a new milestone event7838 when importing demilestoned event7839 behaves like new event7840 creates a new milestone event7841 with MergeRequest7842 when importing a milestoned event7843 behaves like new event7844 creates a new milestone event7845 when importing demilestoned event7846 behaves like new event7847 creates a new milestone event7848Gitlab::Database::Migrations::Instrumentation7849 #observe7850 executes the given block7851 behavior with observers7852 instantiates observer with observation7853 calls #before, #after, #record on given observers7854 ignores errors coming from observers #before7855 ignores errors coming from observers #after7856 ignores errors coming from observers #record7857 on successful execution7858 records a valid observation7859 upon failure7860 exception: "something went wrong"7861 raises the exception7862 retrieving observations7863 records a valid observation7864 exception: SystemStackError7865 raises the exception7866 retrieving observations7867 records a valid observation7868 exception: Interrupt7869 raises the exception7870 retrieving observations7871 records a valid observation7872 sequence of migrations with failures7873 records observations for all migrations7874Gitlab::PhabricatorImport::Importer7875 is expected to be async7876 acts like it's importing repositories7877 #execute7878 sets a custom jid that will be kept up to date7879 starts importing tasks7880 marks the import as failed when something goes wrong7881Gitlab::Ci::Config::Entry::Prefix7882 validations7883 behaves like key entry validations7884 when entry value contains slash7885 behaves like key with slash7886 is invalid7887 reports errors with config value7888 when entry value contains URI encoded slash (%2F)7889 behaves like key with slash7890 is invalid7891 reports errors with config value7892 when entry value is a dot7893 behaves like key with only dots7894 is invalid7895 reports errors with config value7896 when entry value is two dots7897 behaves like key with only dots7898 is invalid7899 reports errors with config value7900 when entry value is a URI encoded dot (%2E)7901 behaves like key with only dots7902 is invalid7903 reports errors with config value7904 when entry value is two URI encoded dots (%2E)7905 behaves like key with only dots7906 is invalid7907 reports errors with config value7908 when entry value is one dot and one URI encoded dot7909 behaves like key with only dots7910 is invalid7911 reports errors with config value7912 when key is a string7913 #value7914 returns key value7915 #valid?7916 is valid7917 when entry value is not correct7918 #errors7919 saves errors7920 .default7921 returns default key7922Ci::JobTokenScope::AddProjectService7923 #execute7924 behaves like editable job token scope7925 when user does not have permissions to edit the job token scope7926 behaves like returns error7927 returns an error response7928 when user has permissions to edit the job token scope7929 when target project is not provided7930 behaves like returns error7931 returns an error response7932 when target project is provided7933 when user does not have permissions to read the target project7934 behaves like returns error7935 returns an error response7936 when user has permissions on source and target projects7937 behaves like adds project7938 adds the project to the scope7939 when token scope is disabled7940 behaves like adds project7941 adds the project to the scope7942 when target project is same as the source project7943 behaves like returns error7944 returns an error response7945LooseIndexScan7946 loading distinct author_ids7947 when using ascending order7948 behaves like assert distinct values example7949 loads the distinct values in the correct order7950 when null values are present7951 behaves like assert distinct values example7952 loads the distinct values in the correct order7953 when using descending order7954 behaves like assert distinct values example7955 loads the distinct values in the correct order7956ProjectCommitCount7957 #commit_count_for7958 handles exceptions by logging them with exception_details and returns the default_count7959 when a root_ref exists7960 returns commit count from GitlayClient7961 when a root_ref does not exist7962 returns the default_count7963Gitlab::Config::Loader::Yaml7964 when max yaml size and depth are set in ApplicationSetting7965 uses ApplicationSetting values rather than the defaults7966 when yaml syntax is correct7967 #valid?7968 returns true7969 #load!7970 returns a valid hash7971 when yaml syntax is incorrect7972 #valid?7973 returns false7974 #load!7975 raises error7976 when there is an unknown alias7977 #initialize7978 raises FormatError7979 when yaml config is empty7980 #valid?7981 returns false7982 #load_raw!7983 raises error7984 when yaml size is too large7985 #valid?7986 returns false7987 #load!7988 raises FormatError7989 when yaml has cyclic data structure7990 #valid?7991 returns false7992 #load!7993 raises FormatError7994 #load_raw!7995 loads keys as strings7996 #load!7997 symbolizes keys7998Resolvers::Admin::Analytics::UsageTrends::MeasurementsResolver7999 #resolve8000 when requesting project count measurements8001 as an admin user8002 returns the records, latest first8003 as a non-admin user8004 generates a ResourceNotAvailable error8005 as an unauthenticated user8006 generates a ResourceNotAvailable error8007 when filtering by recorded_after and recorded_before8008 is expected to contain exactly #<Analytics::UsageTrends::Measurement id: 9, count: 1000, recorded_at: "2022-11-05 01:28:51.760133763 +0000", identifier: "projects">8009 when "incorrect" values are passed8010 is expected to be empty8011 when requesting pipeline counts by pipeline status8012 filter for pipelines_succeeded8013 is expected to eq [#<Analytics::UsageTrends::Measurement id: 11, count: 1000, recorded_at: "2022-11-05 01:28:51.899554681 +0000", identifier: "pipelines_succeeded">]8014 filter for pipelines_skipped8015 is expected to eq [#<Analytics::UsageTrends::Measurement id: 12, count: 1000, recorded_at: "2022-11-05 01:28:51.905708540 +0000", identifier: "pipelines_skipped">]8016 filter for pipelines_failed8017 is expected to be empty8018 filter for pipelines_canceled8019 is expected to be empty8020Gitlab::Utils::DelegatorOverride::Validator8021 # order random8022 #validate_overrides!8023 does not raise an error when the overrides are allowed8024 raises an error when there is an override8025 #add_allowlist8026 adds a method name to the allowlist8027 #add_target8028 adds the target class8029 adds all descendants of the target8030 #expand_on_ancestors8031 adds the allowlist in the ancestors8032Mutations::AlertManagement::HttpIntegration::Destroy8033 is expected to require graphql authorizations :admin_operations8034 #resolve8035 user has access to project8036 when HttpIntegrations::DestroyService responds with success8037 returns the integration with no errors8038 when HttpIntegrations::DestroyService responds with an error8039 returns errors8040 when resource is not accessible to the user8041 raises an error if the resource is not accessible to the user8042Gitlab::Email::Smime::Signer8043 when using an intermediate CA8044 signs data appropriately with SMIME8045 when not using an intermediate CA8046 signs data appropriately with SMIME8047ProtectedBranches::UpdateService8048 #execute8049 updates a protected branch8050 refreshes the cache8051 when updating name of a protected branch to one that contains HTML tags8052 updates a protected branch8053 without admin_project permissions8054 raises error8055 when a policy restricts rule update8056 prevents update of the protected branch rule8057Packages::CreateTemporaryPackageService8058 #execute8059 creates the package8060 can create two packages in a row8061 behaves like assigns the package creator8062 assigns the package creator8063 behaves like assigns build to package8064 with build info8065 assigns the pipeline to the package8066Gitlab::SidekiqMiddleware::DuplicateJobs::Strategies::UntilExecuting8067 behaves like deduplicating jobs when scheduling8068 #schedule8069 checks for duplicates before yielding8070 checks worker options for scheduled jobs8071 job marking8072 adds the jid of the existing job to the job hash8073 scheduled jobs8074 scheduled in the past8075 adds the jid of the existing job to the job hash8076 scheduled in the future8077 adds the jid of the existing job to the job hash8078 when the job is not duplicate8079 does not return false nor drop the job8080 when the job is droppable8081 updates latest wal location8082 returns false to drop the job8083 logs that the job was dropped8084 logs the deduplication options of the worker8085 #perform8086 updates job hash with dedup_wal_locations8087 when latest_wal_location is empty8088 does not update job hash with dedup_wal_locations8089 #perform8090 deletes the lock before executing8091Gitlab::WebIde::Config::Entry::Terminal8092 .nodes8093 when filtering all the entry/node names8094 is expected to contain exactly :before_script, :script, :image, :services, and :variables8095 validations8096 when entry config value is correct8097 #valid?8098 is valid8099 when the same port is not duplicated8100 #valid?8101 is valid8102 when unknown port keys detected8103 is not valid8104 when entry value is not correct8105 incorrect config value type8106 #errors8107 reports error about a config type8108 when config is empty8109 #valid8110 is valid8111 when unknown keys detected8112 #valid8113 is not valid8114 when the same port is duplicated8115 #valid?8116 is invalid8117 #relevant?8118 is a relevant entry8119 when composed8120 #value8121 when entry is correct8122 returns correct value8123Analytics::UsageTrends::CounterJobWorker8124 is labeled as idempotent8125 performs multiple times sequentially without raising an exception8126 counts a scope and stores the result8127 does not raise error when inserting duplicated measurement8128 does not insert anything when BatchCount returns error8129 when no records are in the database8130 sets 0 as the count8131 when the timeout elapses8132 continues counting later when the timeout elapses8133 when pipelines_succeeded identifier is passed8134 counts successful pipelines8135AlertManagement::MetricImages::UploadService8136 #execute8137 user does not have permissions8138 behaves like no metric saved, an error given8139 returns an error and does not upload8140 user has permissions8141 behaves like uploads the metric8142 uploads the metric and returns a success8143 no url given8144 behaves like uploads the metric8145 uploads the metric and returns a success8146 record invalid8147 behaves like no metric saved, an error given8148 returns an error and does not upload8149 user is guest8150 behaves like no metric saved, an error given8151 returns an error and does not upload8152AlertManagement::HttpIntegrations::UpdateService8153 #execute8154 when the current_user is anonymous8155 behaves like error response8156 has an informative message8157 when current_user does not have permission to create integrations8158 behaves like error response8159 has an informative message8160 when an error occurs during update8161 behaves like error response8162 has an informative message8163 with name param8164 successfully updates the integration8165 with active param8166 successfully updates the integration8167 with regenerate_token flag8168 successfully updates the integration8169U2fRegistration8170 .authenticate8171 when registration is found8172 returns true8173 when registration not found8174 returns nil8175 when args passed in are invalid8176 returns false8177 callbacks8178 after create8179 logs error8180 behaves like creates webauthn registration8181 creates webauthn registration8182 when the u2f_registration has a blank name8183 behaves like creates webauthn registration8184 creates webauthn registration8185 when the u2f_registration has the name as `nil`8186 behaves like creates webauthn registration8187 creates webauthn registration8188 after update8189 when counter is updated8190 updates the webauthn registration counter to be the same value8191 when sign count of registration is not updated8192 does not update the counter8193BuildQueueWorker8194 #perform8195 when build exists8196 ticks runner queue value8197 when build does not exist8198 does not raise exception8199 behaves like worker with data consistency8200 .get_data_consistency_feature_flag_enabled?8201 returns true8202 .get_data_consistency8203 returns correct data consistency8204Gitlab::Search::Query8205 is expected to be < SimpleDelegator8206 leaves undefined filters in the main query8207 parses filters8208 with an empty filter8209 ignores empty filters8210 with a pipe8211 does not escape the pipe8212 with an exclusive filter8213 negates the filter8214 with filter value in quotes8215 does not break the filter value in quotes8216 with extra white spaces between the query words8217 removes the extra whitespace between tokens8218 with mutliple filename filters8219 creates a filter for each filename in query8220 when multiple extension filters are added8221 creates a filter for each filename and extension in query8222BulkImports::Common::Pipelines::LabelsPipeline8223 #run8224 imports group labels into destination group and removes tmpdir8225 #load8226 when label is not persisted8227 saves the label8228 when label is missing8229 returns8230Ci::JobArtifacts::DeleteService8231 # order random8232 #execute8233 is successful8234 deletes erasable artifacts8235 does not delete trace8236 when project is undergoing stats refresh8237 logs a warning8238 returns an error response with the correct message and reason8239 when an error response is received from DestroyBatchService8240 returns an error response with the correct message8241Serverless::Function8242 has a proper id8243 can decode an identifier8244BitbucketServer::Client8245 #pull_requests8246 requests a collection8247 requests a collection with offset and limit8248 #activities8249 requests a collection8250 #repo8251 requests a specific repository8252 #repos8253 requests a collection8254 requests a collection with an offset and limit8255 when filter param is passed8256 requests a collection with filter applied8257 #create_branch8258 requests Bitbucket to create a branch8259 #delete_branch8260 requests Bitbucket to create a branch8261AlertManagement::HttpIntegrations::DestroyService8262 #execute8263 successfully returns the integration8264 when the current_user is anonymous8265 behaves like error response8266 has an informative message8267 when current_user does not have permission to create integrations8268 behaves like error response8269 has an informative message8270 when an error occurs during removal8271 behaves like error response8272 has an informative message8273Integrations::Asana8274 Validations8275 active8276 is expected to validate that :api_key cannot be empty/falsy8277 Execute8278 with restrict_to_branch8279 when ref is in scope of restriced branches8280 calls the Asana integration8281 when ref is not in scope of restricted branches8282 does not call the Asana integration8283 when creating a story8284 calls Asana integration to create a story8285 when creating a story and closing a task8286 calls Asana integration to create a story and close a task8287 when closing via url8288 calls Asana integration to close via url8289 with multiple matches per line8290 allows multiple matches per line8291Resolvers::Ci::JobsResolver8292 #resolve8293 when security_report_types is empty8294 returns all of the pipeline's jobs8295 when security_report_types is present8296 returns the pipeline's jobs with the given security report types8297 when a job has tags8298 returns jobs with tags when applicable8299Gitlab::Ci::Config::Entry::Coverage8300 validations8301 when entry config value doesn't have the surrounding '/'8302 #errors8303 is expected to include /coverage config must be a regular expression/8304 #valid?8305 is expected not to be valid8306 when entry config value has the surrounding '/'8307 #value8308 is expected to eq "Code coverage: \\d+\\.\\d+"8309 #errors8310 is expected to be empty8311 #valid?8312 is expected to be valid8313 when entry value is not valid8314 #errors8315 is expected to include /coverage config must be a regular expression/8316 #valid?8317 is expected not to be valid8318Gitlab::InternalPostReceive::Response8319 #add_merge_request_urls8320 when there are urls_data8321 adds a message for each merge request URL8322 #add_merge_request_url8323 when :new_merge_request is false8324 adds a basic message to view the existing merge request8325 when :new_merge_request is true8326 adds a basic message to create a new merge request8327 #add_basic_message8328 when text is present8329 adds a basic message8330 when text is blank8331 does not add a message8332 #add_alert_message8333 when text is present8334 adds a alert message8335 when text is blank8336 does not add a message8337 #reference_counter_decreased8338 initially8339 reference_counter_decreased is set to false8340 #reference_counter_decreased=8341 when the argument is truthy8342 reference_counter_decreased is truthy8343 when the argument is falsey8344 reference_counter_decreased is falsey8345Approval8346 presence validation8347 is expected to validate that :merge_request_id cannot be empty/falsy8348 is expected to validate that :user_id cannot be empty/falsy8349 uniqueness validation8350 is expected to validate that :user_id is case-sensitively unique within the scope of :merge_request_id8351Layouts::HorizontalSectionComponent8352 slots8353 renders title8354 renders body slot8355 when description slot is provided8356 renders description8357 when description slot is not provided8358 does not render description8359 arguments8360 border8361 defaults to true and adds gl-border-b CSS class8362 does not add gl-border-b CSS class when set to false8363 options8364 adds options to wrapping element8365Gitlab::Utils::LinkHeaderParser8366 # order random8367 #parse8368 with a valid header8369 is expected to eq {:next=>{:uri=>#<URI::HTTP http://sandbox.org/next>}}8370 with multiple links8371 is expected to eq {:next=>{:uri=>#<URI::HTTP http://sandbox.org/next>}, :previous=>{:uri=>#<URI::HTTP http://sandbox.org/previous>}}8372 with an incomplete uri8373 is expected to eq {}8374 with no rel8375 is expected to eq {}8376 with multiple rel elements8377 is expected to eq {:next=>{:uri=>#<URI::HTTP http://sandbox.org/next>}}8378 when the url is too long8379 is expected to eq {}8380 with nil header8381 is expected to eq {}8382 with empty header8383 is expected to eq {}8384Mutations::Clusters::AgentTokens::Revoke8385 is expected to eq "ClusterAgentTokenRevoke"8386 is expected to require graphql authorizations :admin_cluster8387 #resolve8388 user does not have permission8389 does not revoke the token8390 user has permission8391 revokes the token8392Clusters::Aws::VerifyProvisionStatusService8393 #execute8394 stack creation is still in progress8395 schedules a worker to check again later8396 stack creation is taking too long8397 sets the status to :errored with an appropriate error message8398 stack creation is complete8399 finalizes creation8400 stack creation failed8401 sets the status to :errored with an appropriate error message8402 error communicating with CloudFormation API8403 sets the status to :errored with an appropriate error message8404Mutations::AlertManagement::PrometheusIntegration::ResetToken8405 is expected to require graphql authorizations :admin_project8406 #resolve8407 user has sufficient access to project8408 when ::Projects::Operations::UpdateService responds with success8409 returns the integration with no errors8410 when ::Projects::Operations::UpdateService responds with an error8411 returns errors8412 when resource is not accessible to the user8413 raises an error if the resource is not accessible to the user8414BulkImports::EntityWorker8415 updates pipeline trackers to enqueued state when selected8416 is labeled as idempotent8417 performs multiple times sequentially without raising an exception8418 enqueues the first stage pipelines work8419 logs and tracks the raised exceptions8420 in first stage8421 do not enqueue a new pipeline job if the current stage still running8422 enqueues the next stage pipelines when the current stage is finished8423Gitlab::QuickActions::SpendTimeAndDateSeparator8424 #execute8425 invalid paramenter in arg line8426 empty arg line8427 behaves like arg line with invalid parameters8428 return nil8429 future date in arg line8430 behaves like arg line with invalid parameters8431 return nil8432 unparseable date(invalid mixes of delimiters)8433 behaves like arg line with invalid parameters8434 return nil8435 trash in arg line8436 return nil as time value8437 only time present in arg line8438 behaves like arg line with valid parameters8439 return time and date array8440 simple time with date in arg line8441 behaves like arg line with valid parameters8442 return time and date array8443 composite time with date in arg line8444 behaves like arg line with valid parameters8445 return time and date array8446Projects::ScheduleBulkRepositoryShardMovesWorker8447 behaves like schedules bulk repository shard moves8448 #perform8449 is labeled as idempotent8450 performs multiple times sequentially without raising an exception8451 schedules container repository storage moves8452Gitlab::Ci::Status::Canceled8453 #text8454 is expected to eq "canceled"8455 #label8456 is expected to eq "canceled"8457 #icon8458 is expected to eq "status_canceled"8459 #favicon8460 is expected to eq "favicon_status_canceled"8461 #group8462 is expected to eq "canceled"8463 #details_path8464 is expected to be nil8465WaitForClusterCreationWorker8466 #perform8467 when provider type is gcp8468 provisions a cluster8469 when provider type is aws8470 provisions a cluster8471 when provider type is user8472 does not provision a cluster8473 when cluster does not exist8474 does not provision a cluster8475Users::DismissGroupCalloutService8476 #execute8477 sets the group_id8478 behaves like dismissing user callout8479 creates a new user callout8480 returns a user callout8481 sets the dismissed_at attribute to current time8482 updates an existing callout dismissed_at time8483 does not update an invalid record with dismissed_at time8484Gitlab::Ci::Build::Rules::Rule::Clause::If8485 #satisfied_by?8486 when expression is a basic string comparison8487 when comparison is true8488 is expected to eq true8489 when comparison is false8490 is expected to eq false8491 when expression is a regexp8492 when comparison is true8493 is expected to eq true8494 when comparison is false8495 is expected to eq false8496 when both side of the expression are variables8497 when comparison is true8498 is expected to eq true8499 when comparison is false8500 is expected to eq false8501NumbersHelper8502 #limited_counter_with_delimiter8503 count: 9, options: {:limit=>10}, expected_result: "9"8504 is expected to eq "9"8505 count: 10, options: {:limit=>10}, expected_result: "10"8506 is expected to eq "10"8507 count: 11, options: {:limit=>10}, expected_result: "10+"8508 is expected to eq "10+"8509 count: 12, options: {:limit=>10}, expected_result: "10+"8510 is expected to eq "10+"8511 count: 999, options: {}, expected_result: "999"8512 is expected to eq "999"8513 count: 1000, options: {}, expected_result: "1,000"8514 is expected to eq "1,000"8515 count: 1001, options: {}, expected_result: "1,000+"8516 is expected to eq "1,000+"8517 count: 1002, options: {}, expected_result: "1,000+"8518 is expected to eq "1,000+"8519StubMethodCalls8520 #stub_method8521 stubs the method response8522 when calling it on an already stubbed method8523 stubs correctly8524 methods that accept arguments8525 stubs correctly8526 methods that use named arguments8527 stubs correctly8528 stubbing non-existent method8529 stubs correctly8530 #restore_original_method8531 restores original behaviour8532 method is not stubbed8533 is expected to raise NotImplementedError with "some_other_method has not been stubbed on #<Class:0x00007f42af08e0f0>"8534 #restore_original_methods8535 restores original behaviour8536Gitlab::Database::Migrations::ReestablishedConnectionStack8537 #with_restored_connection_stack8538 main8539 behaves like reconfigures connection stack8540 does restore connection hierarchy8541 does keep original connection handler8542 ci8543 behaves like reconfigures connection stack8544 does restore connection hierarchy8545 does reconfigure connection handler8546Sidebars::Projects::Menus::ShimoMenu8547 #render?8548 without a valid Shimo integration8549 doesn't render the menu8550 with a valid Shimo integration8551 when integration is active8552 renders the menu8553 renders menu link8554 when integration is inactive8555 doesn't render the menu8556GroupCustomAttribute8557 assocations8558 is expected to belong to group required: false8559 validations8560 is expected to validate that :group cannot be empty/falsy8561 is expected to validate that :key cannot be empty/falsy8562 is expected to validate that :value cannot be empty/falsy8563 is expected to validate that :key is case-sensitively unique within the scope of :group_id8564MergeRequestCurrentUserEntity8565 as json8566 exposes needed attributes8567Packages::Helm::FileMetadatum8568 relationships8569 is expected to belong to package_file required: false8570 validations8571 #package_file8572 is expected to validate that :package_file cannot be empty/falsy8573 #valid_helm_package_type8574 validates package of type helm8575 #channel8576 validates #channel8577 #metadata8578 validates #metadata8579Editable8580 #edited?8581 is expected to eq false8582 is expected to eq true8583Issuables::CrmOrganizationFilter8584 when an organization has issues8585 returns all organization1 issues8586 returns all organization2 issues8587 when an organization has no issues8588 returns no issues8589JSONWebToken::RSAToken8590 token8591 for valid key to be validated8592 is expected not to raise Exception8593 is expected to include {"key" => "value"}8594 is expected to eq {"alg"=>"RS256", "kid"=>"OGXY:4TR7:FAVO:WEM2:XXEW:E4FP:TKL7:7ACK:TZAF:D54P:SUIA:P3B2", "typ"=>"JWT"}8595 for invalid key to raise an exception8596 is expected to raise JWT::DecodeError8597Gitlab::Template::GitignoreTemplate8598 .all8599 strips the gitignore suffix8600 combines the globals and rest8601 .find8602 returns nil if the file does not exist8603 returns the Gitignore object of a valid file8604 #content8605 loads the full file8606Projects::ScheduleRefreshBuildArtifactsSizeStatisticsWorker8607 #perform8608 is labeled as idempotent8609 performs multiple times sequentially without raising an exception8610 schedules Projects::RefreshBuildArtifactsSizeStatisticsWorker to be performed with capacity8611Gitlab::DependencyLinker::GoSumLinker8612 .support?8613 supports go.sum8614 does not support other files8615 #link8616 links modules8617 links checksums8618Gitlab::Graphql::Loaders::BatchModelLoader8619 #find8620 finds a model by id8621 only queries once per model8622 does not force values unnecessarily8623Gitlab::Analytics::CycleAnalytics::Average8624 #seconds8625 when no results8626 is expected to eq nil8627 returns the average duration in seconds8628 is expected to be within 0.5 of 648000.08629 #days8630 when no results8631 is expected to eq nil8632 returns the average duration in days8633 is expected to be within 0.01 of 7.58634dashboard/projects/index.html.haml8635 shows the project the user is a member of in the list8636 shows the "New project" button8637RspecFlaky::FlakyExamplesCollection8638 #initialize8639 accepts no argument8640 accepts a hash8641 does not accept anything else8642 #to_h8643 calls #to_h on the values8644 #-8645 returns only examples that are not present in the given collection8646 fails if the given collection does not respond to `#key?`8647RuboCop::Cop::Migration::SidekiqQueueMigrate8648 # order random8649 when in a regular migration8650 registers an offense when sidekiq_queue_migrate is used in #up8651 registers an offense when sidekiq_queue_migrate is used in #down8652 registers an offense when sidekiq_queue_migrate is used in #change8653 registers an offense when sidekiq_queue_migrate is used in #any_other_method8654 when outside of a migration8655 registers no offense8656 when in a post-deployment migration8657 registers no offense8658Gitlab::Instrumentation::RateLimitingGates8659 .gates8660 returns an empty array when no gates are tracked8661 returns all gates used in the request8662 deduplicates its results8663 .payload8664 returns the gates in a hash8665PagesDomains::DeleteService8666 # order random8667 when the user does not have the required permissions8668 does not delete the pages domain and does not publish a PagesDomainDeletedEvent8669 when the user has the required permissions8670 when it updates the domain successfully8671 deletes the domain and publishes a PagesDomainDeletedEvent8672Gitlab::LegacyGithubImport::LabelFormatter8673 #attributes8674 returns formatted attributes8675 #create!8676 when label does not exist8677 creates a new label8678 when label exists8679 does not create a new label8680Capybara::Node::Base::SlowFinder8681 # order random8682 without timeout8683 when element is found8684 does not raise error8685 when element is not found8686 raises Capybara::ElementNotFound error8687 with timeout8688 with default timeout8689 raises a timeout error8690 when passed as paramater8691 raises a timeout error8692Banzai::Filter::PlantumlFilter8693 replaces plantuml pre tag with img tag8694 allows the lang attribute on the code tag to support RST files processed by gitlab-markup gem8695 does not replace plantuml pre tag with img tag if disabled8696 does not replace plantuml pre tag with img tag if url is invalid8697Gitlab::RepositoryArchiveRateLimiter8698 #check_archive_rate_limit!8699 when archive_rate_limit feature flag is disabled8700 does not check rate limit8701 when archive_rate_limit feature flag is enabled8702 when current user exists8703 checks for project_repositories_archive rate limiting with default threshold8704 when current user does not exist8705 checks for project_repositories_archive rate limiting with threshold 1008706Gitlab::DataBuilder::Alert8707 .build8708 is expected to be a kind of Hash8709 is expected to eq "alert"8710 contains the correct object attributes8711Projects::GoogleCloud::CloudsqlHelper8712 # order random8713 #VERSIONS8714 returns versions for :postgres8715 returns versions for :mysql8716 returns versions for :sqlserver8717 #TIERS8718 is an array8719Namespaces::SyncEvent8720 # order random8721 .enqueue_worker8722 schedules Namespaces::ProcessSyncEventsWorker job8723 .upper_bound_count8724 returns 0 when there are no records in the table8725 returns an estimated number of the records in the database8726Gitlab::Email::Message::InProductMarketing::Helper8727 unsubscribe_message8728 gitlab.com8729 format is HTML8730 returns the correct HTML8731 format is text8732 returns the correct string8733 self-managed8734 format is HTML8735 returns the correct HTML8736 format is text8737 returns the correct string8738Gitlab::Kroki8739 .formats8740 enabled_formats: "", expected_formats: ["bytefield", "c4plantuml", "ditaa", "erd", "graphviz", "nomnoml", "pikchr", "plantuml", "structurizr", "svgbob", "umlet", "vega", "vegalite", "wavedrom"]8741 returns the expected formats8742 enabled_formats: "blockdiag", expected_formats: ["bytefield", "c4plantuml", "ditaa", "erd", "graphviz", "nomnoml", "pikchr", "plantuml", "structurizr", "svgbob", "umlet", "vega", "vegalite", "wavedrom", "actdiag", "blockdiag", "nwdiag", "packetdiag", "rackdiag", "seqdiag"]8743 returns the expected formats8744 enabled_formats: "bpmn", expected_formats: ["bytefield", "c4plantuml", "ditaa", "erd", "graphviz", "nomnoml", "pikchr", "plantuml", "structurizr", "svgbob", "umlet", "vega", "vegalite", "wavedrom", "bpmn"]8745 returns the expected formats8746 enabled_formats: "excalidraw", expected_formats: ["bytefield", "c4plantuml", "ditaa", "erd", "graphviz", "nomnoml", "pikchr", "plantuml", "structurizr", "svgbob", "umlet", "vega", "vegalite", "wavedrom", "excalidraw"]8747 returns the expected formats8748Types::Clusters::AgentActivityEventType8749 is expected to eq "ClusterAgentActivityEvent"8750 is expected to require graphql authorizations :read_cluster8751 is expected to have graphql fields :recorded_at, :kind, :level, :user, and :agent_token8752Ci::ProcessPipelineService8753 processing events counter8754 increments processing events counter8755Onboarding::ProgressWorker#perform8756 # order random8757 behaves like does not record an onboarding progress action8758 is expected not to receive new(*(any args)) 0 times8759 behaves like does not record an onboarding progress action8760 is expected not to receive new(*(any args)) 0 times8761 behaves like records an onboarding progress action8762 is expected to receive execute({:action=>:git_pull}) 1 time8763 is labeled as idempotent8764 performs multiple times sequentially without raising an exception8765admin/application_settings/_repository_storage.html.haml8766 with storage weights configured8767 lists storages with weight8768 lists storages without weight8769 lists only configured storages8770Gitlab::View::Presenter::Factory8771 #initialize8772 without optional parameters8773 takes a subject and optional params8774 with optional parameters8775 takes a subject and optional params8776 #fabricate!8777 detects the presenter based on the given subject8778 uses the presenter_class if given on #initialize8779Gitlab::Kubernetes::Role8780 #generate8781 is expected to eq #<Kubeclient::Resource metadata={:name=>"example-name", :namespace=>"example-namespace"}, rules=[{:ap...>["hello.world"], :resources=>["oil", "diamonds", "coffee"], :verbs=>["say", "do", "walk", "run"]}]>8782Types::UserCalloutType8783 is expected to eq "UserCallout"8784 has expected fields8785Graphql::FieldSelection8786 can report on the paths that are selected8787 can serialize a field selection nicely8788Gitlab::Utils::DelegatorOverride::Error8789 # order random8790 #to_s8791 is expected to eq "Delegator#foo is overriding Target#foo. delegator_location: /path/to/delegator target_location: /path/to/target"8792BulkImports::ExportUpload8793 stores export file8794 associations8795 is expected to belong to export required: false8796Gitlab::Chat8797 .available?8798 returns true when the chatops feature is available8799 returns false when the chatops feature is not available8800BulkImports::FileTransfer8801 .config_for8802 when portable is group8803 returns group config8804 when portable is project8805 returns project config8806 when portable is unsupported8807 raises an error8808Types::Ci::Config::GroupType8809 is expected to eq "CiConfigGroup"8810 exposes the expected fields8811Gitlab::Ci::Parsers::Instrumentation8812 #parse!8813 sets metrics for duration of parsing8814Sidebars::Groups::Menus::ObservabilityMenu8815 # order random8816 #render?8817 when user can :read_observability8818 returns true8819 when user cannot :read_observability8820 returns false8821BulkImports::Projects::Graphql::GetProjectQuery8822 has a valid query8823 queries project based on source_full_path8824Gitlab::Middleware::WebhookRecursionDetection8825 #call8826 when the recursion detection header is present8827 sets the request UUID from the header8828 when recursion headers are not present8829 works without errors8830Types::NamespaceType8831 is expected to eq "Namespace"8832 has the expected fields8833 is expected to require graphql authorizations :read_namespace8834Gitlab::Ci::Reports::TestFailureHistory8835 #load!8836 sets the recent failures for each matching failed test case in all test suites8837Gitlab::ImportExport::DurationMeasuring8838 measures method execution duration8839 #with_duration_measuring8840 yields control8841 returns result of the yielded block8842ProjectDailyStatistic8843 is expected to belong to project required: false8844Ci::TriggerRequest8845 validation8846 be invalid if saving a variable8847 be valid if not saving a variable8848RuboCop::Cop::Gitlab::BulkInsert8849 # order random8850 flags the use of ::ApplicationRecord.legacy_bulk_insert8851 flags the use of ApplicationRecord.legacy_bulk_insert8852NamedEcdsaKeyValidator8853 with empty value8854 does not add any error if value is empty8855 when key is not EC8856 does not add any error8857 with ECDSA certificate with named curve8858 does not add any error8859 with ECDSA certificate with explicit curve params8860 adds errors8861RuboCop::Cop::BanCatchThrow8862 # order random8863 does not register an offense for a method called catch or throw8864 registers an offense when `catch` or `throw` are used8865Gitlab::Git::Patches::Collection8866 #size8867 combines the size of the patches8868 #valid_size?8869 is not valid if the total size is bigger than 2MB8870Rails asset host initializer8871 uses no asset host by default8872 with cdn_host defined in gitlab.yml8873 returns https://gitlab.example.com8874Gitlab::Diff::InlineDiff8875 #inline_diffs8876 finds the inline diff8877 when lines have multiple changes8878 finds all inline diffs8879Gitlab::Ci::Config::Yaml::Tags::Resolver8880 #to_hash8881 when referencing deeply nested arrays8882 when templates are defined before the job8883 behaves like expands references8884 expands the references8885 when templates are defined after the job8886 behaves like expands references8887 expands the references8888Types::Packages::Conan::MetadatumType8889 includes conan metadatum fields8890Types::ProjectMemberRelationEnum8891 is expected to eq "ProjectMemberRelation"8892 exposes all the existing project member relation type values8893Gitlab::Usage::Metrics::Instrumentations::CollectedDataCategoriesMetric8894 behaves like a correct instrumented metric value8895 has correct value8896TodosDestroyer::DestroyedDesignsWorker8897 calls the Todos::Destroy::DesignService with design_ids parameter8898#<Class:0x00007f42edae06c8>8899 # order random8900 has the expected fields8901Gitlab::Saas8902 .canary_toggle_com_url8903 is expected to eq "https://next.gitlab.com"8904Tooling::MergeRequest8905 .for8906 fetches merge request for local branch in the given GitLab project path8907Gitlab::SlashCommands::ApplicationHelp8908 #execute8909 displays the help section8910Types::Packages::PackageDependencyLinkType8911 includes package file fields8912Evidences::ProjectEntity8913 exposes the expected fields8914Types::ContainerRepositoryStatusEnum8915 exposes all statuses8916Knapsack report was generated. Preview:8917{8918 "spec/models/merge_request_spec.rb": 317.65634966000016,8919 "spec/services/users/migrate_to_ghost_user_service_spec.rb": 81.84891542000014,8920 "spec/tasks/gitlab/workhorse_rake_spec.rb": 77.71960408299992,8921 "spec/services/system_notes/issuables_service_spec.rb": 42.08407668899963,8922 "spec/services/projects/update_service_spec.rb": 45.79877220200024,8923 "spec/models/ci/build_trace_chunk_spec.rb": 27.54010973200002,8924 "spec/services/draft_notes/publish_service_spec.rb": 41.988265747999776,8925 "spec/helpers/visibility_level_helper_spec.rb": 36.18381223200004,8926 "spec/tooling/danger/project_helper_spec.rb": 6.037837354999738,8927 "spec/models/concerns/milestoneish_spec.rb": 23.02651146199969,8928 "spec/models/hooks/web_hook_spec.rb": 16.109026521000033,8929 "spec/services/design_management/copy_design_collection/copy_service_spec.rb": 22.310150096999678,8930 "spec/services/snippets/create_service_spec.rb": 12.289513072999853,8931 "spec/services/merge_requests/add_todo_when_build_fails_service_spec.rb": 24.72142194099979,8932 "spec/lib/banzai/filter/references/snippet_reference_filter_spec.rb": 21.815966976000254,8933 "spec/lib/gitlab/import_export/references_configuration_spec.rb": 5.310072649999711,8934 "spec/policies/group_member_policy_spec.rb": 18.943860475000292,8935 "spec/services/lfs/file_transformer_spec.rb": 17.375947661999817,8936 "spec/services/projects/lfs_pointers/lfs_download_service_spec.rb": 9.918140085000232,8937 "spec/lib/gitlab/ci/config/entry/job_spec.rb": 4.812839199999871,8938 "spec/services/merge_requests/request_review_service_spec.rb": 15.016035200999795,8939 "spec/services/serverless/associate_domain_service_spec.rb": 10.13801949000026,8940 "spec/lib/gitlab/error_tracking/error_repository/open_api_strategy_spec.rb": 11.684674514999642,8941 "spec/serializers/pipeline_details_entity_spec.rb": 13.974688104000052,8942 "spec/services/issue_links/list_service_spec.rb": 14.494025302999944,8943 "spec/graphql/resolvers/timelog_resolver_spec.rb": 7.870952486999158,8944 "spec/services/security/merge_reports_service_spec.rb": 10.345481625000502,8945 "spec/services/wiki_pages/update_service_spec.rb": 9.914310925999416,8946 "spec/models/concerns/routable_spec.rb": 5.577522619000774,8947 "spec/services/projects/in_product_marketing_campaign_emails_service_spec.rb": 8.563801774999774,8948 "spec/lib/gitlab/slash_commands/deploy_spec.rb": 10.17371714500041,8949 "spec/services/draft_notes/create_service_spec.rb": 10.267174073000206,8950 "spec/models/hooks/project_hook_spec.rb": 7.494362581999667,8951 "spec/services/deployments/older_deployments_drop_service_spec.rb": 8.740441715000088,8952 "spec/lib/gitlab/import_export/after_export_strategies/base_after_export_strategy_spec.rb": 10.3051336489998,8953 "spec/models/ci/trigger_spec.rb": 8.838955633000296,8954 "spec/lib/gitlab/database/load_balancing/host_spec.rb": 3.704602001999774,8955 "spec/views/projects/merge_requests/_commits.html.haml_spec.rb": 8.022883809000632,8956 "spec/services/projects/open_issues_count_service_spec.rb": 6.408491449999929,8957 "spec/policies/award_emoji_policy_spec.rb": 8.09786160099975,8958 "spec/services/incident_management/timeline_events/destroy_service_spec.rb": 6.320547180999711,8959 "spec/services/clusters/gcp/provision_service_spec.rb": 7.774820576999446,8960 "spec/services/work_items/create_from_task_service_spec.rb": 4.48580838900034,8961 "spec/finders/access_requests_finder_spec.rb": 6.811708492999969,8962 "spec/models/integrations/base_chat_notification_spec.rb": 3.0140655020004488,8963 "spec/helpers/clusters_helper_spec.rb": 3.107252462999895,8964 "spec/services/ci/pipeline_artifacts/coverage_report_service_spec.rb": 4.756852337000055,8965 "spec/models/bulk_imports/entity_spec.rb": 3.4639495390001684,8966 "spec/finders/packages/conan/package_finder_spec.rb": 4.122188011999242,8967 "spec/services/work_items/create_service_spec.rb": 5.924274598000011,8968 "spec/lib/gitlab/ci/pipeline/seed/deployment_spec.rb": 4.759536546000163,8969 "spec/graphql/mutations/alert_management/alerts/set_assignees_spec.rb": 3.495590534999792,8970 "spec/lib/gitlab/web_hooks/recursion_detection_spec.rb": 4.052706039000441,8971 "spec/lib/gitlab/diff/highlight_cache_spec.rb": 3.2093360500002746,8972 "spec/models/projects/topic_spec.rb": 2.0811429929999576,8973 "spec/models/board_project_recent_visit_spec.rb": 4.01953178399981,8974 "spec/serializers/cluster_application_entity_spec.rb": 3.6575936259996524,8975 "spec/services/deployments/create_for_build_service_spec.rb": 5.4030661900005725,8976 "spec/models/ci/build_trace_chunks/database_spec.rb": 5.251950597000359,8977 "spec/services/notification_recipients/builder/default_spec.rb": 3.6287262799996824,8978 "spec/finders/ci/jobs_finder_spec.rb": 2.9383299620003527,8979 "spec/models/oauth_access_token_spec.rb": 4.132046700000501,8980 "spec/finders/freeze_periods_finder_spec.rb": 3.437234862999503,8981 "spec/lib/gitlab/graphql/deprecation_spec.rb": 0.9865056130001904,8982 "spec/models/label_link_spec.rb": 3.6433047789996635,8983 "spec/lib/gitlab/database/migrations/observers/transaction_duration_spec.rb": 4.769864185000188,8984 "spec/lib/gitlab/omniauth_initializer_spec.rb": 0.9274657200003276,8985 "spec/services/admin/set_feature_flag_service_spec.rb": 1.5163747300002797,8986 "spec/support_specs/helpers/html_escaped_helpers_spec.rb": 0.8685077469999669,8987 "spec/tooling/lib/tooling/kubernetes_client_spec.rb": 0.7224862040002336,8988 "spec/services/web_hooks/destroy_service_spec.rb": 3.570995337000568,8989 "spec/lib/gitlab/repository_hash_cache_spec.rb": 1.0564652349994503,8990 "spec/lib/gitlab/ci/matching/runner_matcher_spec.rb": 1.433616350000193,8991 "spec/lib/backup/database_spec.rb": 4.831505427000593,8992 "spec/lib/gitlab/database/load_balancing/sticking_spec.rb": 1.4841318449998653,8993 "spec/services/packages/create_dependency_service_spec.rb": 3.142169443000057,8994 "spec/lib/gitlab/ci/config/entry/trigger_spec.rb": 1.252074148000247,8995 "spec/models/integrations/chat_message/deployment_message_spec.rb": 2.0206823099997564,8996 "spec/services/projects/record_target_platforms_service_spec.rb": 1.4927726460000486,8997 "spec/helpers/whats_new_helper_spec.rb": 1.5906101079999644,8998 "spec/serializers/stage_serializer_spec.rb": 3.0025949720002245,8999 "spec/graphql/graphql_triggers_spec.rb": 2.191649583999606,9000 "spec/lib/gitlab/ci/config/entry/include_spec.rb": 0.886497640000016,9001 "spec/graphql/mutations/security/ci_configuration/configure_sast_spec.rb": 2.7397664159998385,9002 "spec/lib/bulk_imports/clients/http_spec.rb": 0.6082089059991631,9003 "spec/workers/incident_management/add_severity_system_note_worker_spec.rb": 1.2553388180003822,9004 "spec/policies/custom_emoji_policy_spec.rb": 2.958158676000494,9005 "spec/lib/gitlab/ci/runner_instructions_spec.rb": 0.8295931259999634,9006 "spec/models/analytics/usage_trends/measurement_spec.rb": 1.1778770850005458,9007 "spec/views/projects/issues/_service_desk_info_content.html.haml_spec.rb": 1.3117163529996105,9008 "spec/models/preloaders/merge_request_diff_preloader_spec.rb": 2.9033879409998917,9009 "spec/lib/gitlab/checks/lfs_check_spec.rb": 2.281941096999617,9010 "spec/workers/ci/pipeline_artifacts/coverage_report_worker_spec.rb": 1.9507289360008144,9011 "spec/lib/gitlab/kubernetes/helm/v3/delete_command_spec.rb": 0.6652805600006104,9012 "spec/finders/prometheus_metrics_finder_spec.rb": 0.8543509739993169,9013 "spec/lib/gitlab/sidekiq_queue_spec.rb": 1.5675539899993964,9014 "spec/lib/gitlab/ci/config/external/file/base_spec.rb": 1.1404113280004822,9015 "spec/lib/gitlab/jira/dvcs_spec.rb": 1.3844785260007484,9016 "spec/services/ml/experiment_tracking/experiment_repository_spec.rb": 1.0397095369999079,9017 "spec/lib/gitlab/hook_data/user_builder_spec.rb": 0.7869239000001471,9018 "spec/graphql/resolvers/ci/runner_jobs_resolver_spec.rb": 2.2435083600003054,9019 "spec/lib/gitlab/github_import/importer/events/changed_milestone_spec.rb": 2.145597478000127,9020 "spec/lib/gitlab/database/migrations/instrumentation_spec.rb": 1.1230984899993928,9021 "spec/lib/gitlab/phabricator_import/importer_spec.rb": 1.6304888040003789,9022 "spec/lib/gitlab/ci/config/entry/prefix_spec.rb": 1.2896893040006034,9023 "spec/services/ci/job_token_scope/add_project_service_spec.rb": 1.74276206399918,9024 "spec/models/concerns/loose_index_scan_spec.rb": 1.8455594549996022,9025 "spec/experiments/concerns/project_commit_count_spec.rb": 2.5216920140001093,9026 "spec/lib/gitlab/config/loader/yaml_spec.rb": 1.1422327880000012,9027 "spec/graphql/resolvers/admin/analytics/usage_trends/measurements_resolver_spec.rb": 0.6944911279997541,9028 "spec/lib/gitlab/utils/delegator_override/validator_spec.rb": 1.4524042409993854,9029 "spec/graphql/mutations/alert_management/http_integration/destroy_spec.rb": 1.0445291360001647,9030 "spec/lib/gitlab/email/smime/signer_spec.rb": 3.500473248000162,9031 "spec/services/protected_branches/update_service_spec.rb": 1.0181264689999807,9032 "spec/services/packages/create_temporary_package_service_spec.rb": 1.4463753010004439,9033 "spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/strategies/until_executing_spec.rb": 0.5320422719996714,9034 "spec/lib/gitlab/web_ide/config/entry/terminal_spec.rb": 0.5474513910003225,9035 "spec/workers/analytics/usage_trends/counter_job_worker_spec.rb": 1.2400158590007777,9036 "spec/services/alert_management/metric_images/upload_service_spec.rb": 1.252657347999957,9037 "spec/services/alert_management/http_integrations/update_service_spec.rb": 0.7922913089996655,9038 "spec/models/u2f_registration_spec.rb": 1.1262565090000862,9039 "spec/workers/build_queue_worker_spec.rb": 0.9747580629991717,9040 "spec/lib/gitlab/search/query_spec.rb": 0.4995164060001116,9041 "spec/lib/bulk_imports/common/pipelines/labels_pipeline_spec.rb": 1.041487987000437,9042 "spec/services/ci/job_artifacts/delete_service_spec.rb": 0.9705101429999559,9043 "spec/models/serverless/function_spec.rb": 0.9573804539995763,9044 "spec/lib/bitbucket_server/client_spec.rb": 0.6339270329999636,9045 "spec/services/alert_management/http_integrations/destroy_service_spec.rb": 1.3432702199997948,9046 "spec/models/integrations/asana_spec.rb": 0.8428313650001655,9047 "spec/graphql/resolvers/ci/jobs_resolver_spec.rb": 1.3258710210002391,9048 "spec/lib/gitlab/ci/config/entry/coverage_spec.rb": 0.8658493330003694,9049 "spec/lib/gitlab/internal_post_receive/response_spec.rb": 0.5431390809999357,9050 "spec/models/approval_spec.rb": 1.4547931110000718,9051 "spec/components/layouts/horizontal_section_component_spec.rb": 0.36199431699969864,9052 "spec/lib/gitlab/utils/link_header_parser_spec.rb": 0.5174245139996856,9053 "spec/graphql/mutations/clusters/agent_tokens/revoke_spec.rb": 1.2174730910001017,9054 "spec/services/clusters/aws/verify_provision_status_service_spec.rb": 1.199704632999783,9055 "spec/graphql/mutations/alert_management/prometheus_integration/reset_token_spec.rb": 1.1133139809999193,9056 "spec/workers/bulk_imports/entity_worker_spec.rb": 0.8302100359996984,9057 "spec/lib/gitlab/quick_actions/spend_time_and_date_separator_spec.rb": 0.4985951449998538,9058 "spec/workers/projects/schedule_bulk_repository_shard_moves_worker_spec.rb": 1.3083567029998449,9059 "spec/lib/gitlab/ci/status/canceled_spec.rb": 0.44627760000003036,9060 "spec/workers/wait_for_cluster_creation_worker_spec.rb": 0.812075957000161,9061 "spec/services/users/dismiss_group_callout_service_spec.rb": 0.632742134000182,9062 "spec/lib/gitlab/ci/build/rules/rule/clause/if_spec.rb": 0.32577437100007955,9063 "spec/helpers/numbers_helper_spec.rb": 0.4779260670002259,9064 "spec/support_specs/helpers/stub_method_calls_spec.rb": 0.5679152299999259,9065 "spec/lib/gitlab/database/migrations/reestablished_connection_stack_spec.rb": 0.9370884370000567,9066 "spec/lib/sidebars/projects/menus/shimo_menu_spec.rb": 0.8303214450006635,9067 "spec/models/group_custom_attribute_spec.rb": 0.5275436540005103,9068 "spec/serializers/merge_request_current_user_entity_spec.rb": 1.295584995000354,9069 "spec/models/packages/helm/file_metadatum_spec.rb": 1.3736281470000904,9070 "spec/models/concerns/editable_spec.rb": 1.2338704300000245,9071 "spec/finders/issuables/crm_organization_filter_spec.rb": 1.0509923460003847,9072 "spec/lib/json_web_token/rsa_token_spec.rb": 0.5427764910000406,9073 "spec/lib/gitlab/template/gitignore_template_spec.rb": 0.5699974500003009,9074 "spec/workers/projects/schedule_refresh_build_artifacts_size_statistics_worker_spec.rb": 0.8417475140004171,9075 "spec/lib/gitlab/dependency_linker/go_sum_linker_spec.rb": 0.3197586619999129,9076 "spec/lib/gitlab/graphql/loaders/batch_model_loader_spec.rb": 0.9296004669995455,9077 "spec/lib/gitlab/analytics/cycle_analytics/average_spec.rb": 1.173254535000524,9078 "spec/views/dashboard/projects/index.html.haml_spec.rb": 1.0757963040005052,9079 "spec/tooling/rspec_flaky/flaky_examples_collection_spec.rb": 0.3334011900005862,9080 "spec/rubocop/cop/migration/sidekiq_queue_migrate_spec.rb": 0.6477056820003781,9081 "spec/lib/gitlab/instrumentation/rate_limiting_gates_spec.rb": 0.288796884000476,9082 "spec/services/pages_domains/delete_service_spec.rb": 0.6946936280000955,9083 "spec/lib/gitlab/legacy_github_import/label_formatter_spec.rb": 0.7617993330004538,9084 "spec/support_specs/capybara_slow_finder_spec.rb": 0.6294931740003449,9085 "spec/lib/banzai/filter/plantuml_filter_spec.rb": 0.6134637149998525,9086 "spec/lib/gitlab/repository_archive_rate_limiter_spec.rb": 0.2842676049995134,9087 "spec/lib/gitlab/data_builder/alert_spec.rb": 0.5473701410001013,9088 "spec/helpers/projects/google_cloud/cloudsql_helper_spec.rb": 0.4774051869999312,9089 "spec/models/namespaces/sync_event_spec.rb": 0.6798398800001451,9090 "spec/lib/gitlab/email/message/in_product_marketing/helper_spec.rb": 0.3119476530000611,9091 "spec/lib/gitlab/kroki_spec.rb": 0.5355413120005323,9092 "spec/graphql/types/clusters/agent_activity_event_type_spec.rb": 0.3363745500000732,9093 "spec/services/ci/process_pipeline_service_spec.rb": 0.7890104389998669,9094 "spec/workers/onboarding/progress_worker_spec.rb": 0.695471307999469,9095 "spec/views/admin/application_settings/_repository_storage.html.haml_spec.rb": 0.6849369689998639,9096 "spec/lib/gitlab/view/presenter/factory_spec.rb": 0.47633678700003657,9097 "spec/lib/gitlab/kubernetes/role_spec.rb": 0.32014801199966314,9098 "spec/graphql/types/user_callout_type_spec.rb": 0.2644193260002794,9099 "spec/support_specs/graphql/field_selection_spec.rb": 0.8931240600004458,9100 "spec/lib/gitlab/utils/delegator_override/error_spec.rb": 0.3250290910000331,9101 "spec/models/bulk_imports/export_upload_spec.rb": 0.9110080290001861,9102 "spec/lib/gitlab/chat_spec.rb": 0.307539442000234,9103 "spec/models/bulk_imports/file_transfer_spec.rb": 0.2829901049999535,9104 "spec/graphql/types/ci/config/group_type_spec.rb": 0.27918462500019814,9105 "spec/lib/gitlab/ci/parsers/instrumentation_spec.rb": 0.3851607159995183,9106 "spec/lib/sidebars/groups/menus/observability_menu_spec.rb": 0.6483253930000501,9107 "spec/lib/bulk_imports/projects/graphql/get_project_query_spec.rb": 0.6551187810000556,9108 "spec/lib/gitlab/middleware/webhook_recursion_detection_spec.rb": 0.3946365350002452,9109 "spec/graphql/types/namespace_type_spec.rb": 0.3291601910004829,9110 "spec/lib/gitlab/ci/reports/test_failure_history_spec.rb": 0.634475853999902,9111 "spec/lib/gitlab/import_export/duration_measuring_spec.rb": 0.2529304370000318,9112 "spec/models/project_daily_statistic_spec.rb": 0.5474689709999438,9113 "spec/models/ci/trigger_request_spec.rb": 0.5911359379997521,9114 "spec/rubocop/cop/gitlab/bulk_insert_spec.rb": 0.2668405660006101,9115 "spec/validators/named_ecdsa_key_validator_spec.rb": 0.6838129679999838,9116 "spec/rubocop/cop/ban_catch_throw_spec.rb": 0.541556792000847,9117 "spec/lib/gitlab/git/patches/collection_spec.rb": 0.37971020599979965,9118 "spec/initializers/rails_asset_host_spec.rb": 0.2892808739998145,9119 "spec/lib/gitlab/diff/inline_diff_spec.rb": 0.48976750600013474,9120 "spec/lib/gitlab/ci/config/yaml/tags/resolver_spec.rb": 0.30997279200073535,9121 "spec/graphql/types/packages/conan/metadatum_type_spec.rb": 0.4925139560000389,9122 "spec/graphql/types/project_member_relation_enum_spec.rb": 0.5049575349994484,9123 "spec/lib/gitlab/usage/metrics/instrumentations/collected_data_categories_metric_spec.rb": 0.39728771500085713,9124 "spec/workers/todos_destroyer/destroyed_designs_worker_spec.rb": 0.2805257949994484,9125 "spec/graphql/types/ci/project_variable_connection_type_spec.rb": 0.27755035599966504,9126 "spec/lib/gitlab/saas_spec.rb": 0.2445432089998576,9127 "spec/tooling/merge_request_spec.rb": 0.41360886199981906,9128 "spec/lib/gitlab/slash_commands/application_help_spec.rb": 0.32371028200032015,9129 "spec/graphql/types/packages/package_dependency_link_type_spec.rb": 0.38837980500011327,9130 "spec/serializers/evidences/project_entity_spec.rb": 0.5667160090006291,9131 "spec/graphql/types/container_repository_status_enum_spec.rb": 0.179997473999719669132}9133Knapsack global time execution for tests: 21m 39s9134Pending: (Failures listed here are expected and do not affect your suite's status)9135 1) MergeRequest 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 blank9136 # No reason given9137 # ./spec/support/shared_examples/models/atomic_internal_id_shared_examples.rb:499138 2) MergeRequest 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 blank9139 # No reason given9140 # ./spec/support/shared_examples/models/atomic_internal_id_shared_examples.rb:579141Finished in 21 minutes 43 seconds (files took 37.61 seconds to load)91423781 examples, 0 failures, 2 pending9143Randomized with seed 9189144[TEST PROF INFO] Time spent in factories: 12:32.585 (57.51% of total time)9145RSpec exited with 0.9146No examples to retry, congrats!9148Not uploading cache ruby-gems-debian-bullseye-ruby-2.7-16 due to policy9149Not uploading cache gitaly-ruby-gems-debian-bullseye-ruby-2.7-16 due to policy9151Uploading artifacts...9152coverage/: found 5 matching files and directories 9153crystalball/: found 2 matching files and directories 9154WARNING: deprecations/: no matching files. Ensure that the artifact path is relative to the working directory 9155knapsack/: found 3 matching files and directories 9156rspec/: found 9 matching files and directories 9157WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory 9158log/*.log: found 20 matching files and directories 9159WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/3281613380/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com9160WARNING: Retrying... context=artifacts-uploader error=request redirected9161Uploading artifacts as "archive" to coordinator... 201 Created id=3281613380 responseStatus=201 Created token=coaCUtqx9162Uploading artifacts...9163rspec/junit_rspec.xml: found 1 matching files and directories 9164WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/3281613380/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com9165WARNING: Retrying... context=artifacts-uploader error=request redirected9166Uploading artifacts as "junit" to coordinator... 201 Created id=3281613380 responseStatus=201 Created token=coaCUtqx9168Job succeeded